diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000000..bb68b14a6e2 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,31 @@ +# Use the latest 2.1 version of CircleCI pipeline process engine. +# See: https://circleci.com/docs/reference/configuration-reference +version: 2.1 + +# Define a job to be invoked later in a workflow. +# See: https://circleci.com/docs/guides/orchestrate/jobs-steps/#jobs-overview & https://circleci.com/docs/reference/configuration-reference/#jobs +jobs: + say-hello: + # Specify the execution environment. You can specify an image from Docker Hub or use one of our convenience images from CircleCI's Developer Hub. + # See: https://circleci.com/docs/guides/execution-managed/executor-intro/ & https://circleci.com/docs/reference/configuration-reference/#executor-job + docker: + # Specify the version you desire here + # See: https://circleci.com/developer/images/image/cimg/base + - image: cimg/base:current + + # Add steps to the job + # See: https://circleci.com/docs/guides/orchestrate/jobs-steps/#steps-overview & https://circleci.com/docs/reference/configuration-reference/#steps + steps: + # Checkout the code as the first step. + - checkout + - run: + name: "Say hello" + command: "echo Hello, World!" + +# Orchestrate jobs using workflows +# See: https://circleci.com/docs/guides/orchestrate/workflows/ & https://circleci.com/docs/reference/configuration-reference/#workflows +workflows: + say-hello-workflow: # This is the name of the workflow, feel free to change it to better match your workflow. + # Inside the workflow, you define the jobs you want to run. + jobs: + - say-hello \ No newline at end of file diff --git a/.github/workflows/Codeql.yml b/.github/workflows/Codeql.yml new file mode 100644 index 00000000000..8888ce47d41 --- /dev/null +++ b/.github/workflows/Codeql.yml @@ -0,0 +1,42 @@ +name: "CodeQL Python Security and Quality Scan" + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +permissions: + contents: read + actions: read + security-events: write + +jobs: + codeql-analysis: + name: "CodeQL Analysis (Python)" + runs-on: ubuntu-latest + + steps: + # 1. 检出代码 + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + # 2. 初始化 CodeQL + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: python + # 不指定 queries,Action 会默认跑安全 + 质量查询 + + # 3. 自动构建 + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + # 4. 执行分析 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + # 不指定 queries,Action 会自动跑安全 + 质量规则 + upload: true \ No newline at end of file diff --git a/.github/workflows/lint_python.yml b/.github/workflows/lint_python.yml deleted file mode 100644 index 4fbba44f38d..00000000000 --- a/.github/workflows/lint_python.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: lint_python -on: [pull_request, push] -jobs: - lint_python: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - - run: pip install --upgrade pip wheel - - run: pip install bandit black codespell flake8 flake8-2020 flake8-bugbear - flake8-comprehensions isort mypy pytest pyupgrade safety - - run: bandit --recursive --skip B101 . || true # B101 is assert statements - - run: black --check . || true - - run: codespell || true # --ignore-words-list="" --skip="*.css,*.js,*.lock" - - run: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - - run: flake8 . --count --exit-zero --max-complexity=10 --max-line-length=88 - --show-source --statistics - - run: isort --check-only --profile black . || true - - run: pip install -r requirements.txt || pip install --editable . || true - - run: mkdir --parents --verbose .mypy_cache - - run: mypy --ignore-missing-imports --install-types --non-interactive . || true - - run: pytest . || pytest --doctest-modules . - - run: shopt -s globstar && pyupgrade --py36-plus **/*.py || true - - run: safety check diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml new file mode 100644 index 00000000000..20b0f50af6b --- /dev/null +++ b/.github/workflows/python.yml @@ -0,0 +1,44 @@ +name: Python Checks + +on: + pull_request: + types: [opened, synchronize, reopened] + push: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + Test: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.14.0' + + - name: Install all dependencies and tools + run: | + python -m pip install --upgrade pip + pip install ruff bandit mypy pytest codespell requests-mock colorama + + - name: Run Codespell check + run: codespell --skip "*.json,*.txt,*.pdf" || true + + - name: Run Bandit security scan + run: bandit -r . --skip B101,B105 || true + + - name: Run Pytest tests + run: pytest || true + + - name: Run Ruff checks with ignored rules + run: ruff check . --ignore B904,B905,EM101,EXE001,G004,ISC001,PLC0415,PLC1901,PLW060,PLW1641,PLW2901,PT011,PT018,PT028,S101,S311,SIM905,SLF001,F405 + + - name: Run Mypy type checks + run: mypy . --ignore-missing-imports || true \ No newline at end of file diff --git a/.gitignore b/.gitignore index e2cee02848f..5d5134469d2 100644 --- a/.gitignore +++ b/.gitignore @@ -16,10 +16,10 @@ for i in string: odd+=i print(lower+upper+odd+even) -# operating system-related files +.vscode +__pycache__/ +.venv -# file properties cache/storage on macOS *.DS_Store - -# thumbnail cache on Windows Thumbs.db +bankmanaging.db \ No newline at end of file diff --git a/1 File handle/File handle binary/.env b/1 File handle/File handle binary/.env new file mode 100644 index 00000000000..ab3d7291cb4 --- /dev/null +++ b/1 File handle/File handle binary/.env @@ -0,0 +1 @@ +STUDENTS_RECORD_FILE= "student_records.pkl" \ No newline at end of file diff --git a/1 File handle/File handle binary/Deleting record in a binary file.py b/1 File handle/File handle binary/Deleting record in a binary file.py deleted file mode 100644 index 41a5007b86c..00000000000 --- a/1 File handle/File handle binary/Deleting record in a binary file.py +++ /dev/null @@ -1,17 +0,0 @@ -import pickle - - -def bdelete(): - # Opening a file & loading it - with open("studrec.dat") as F: - stud = pickle.load(F) - print(stud) - - # Deleting the Roll no. entered by user - rno = int(input("Enter the Roll no. to be deleted: ")) - with open("studrec.dat") as F: - rec = [i for i in stud if i[0] != rno] - pickle.dump(rec, F) - - -bdelete() diff --git a/1 File handle/File handle binary/Update a binary file2.py b/1 File handle/File handle binary/Update a binary file2.py index 88adeef443f..8eb900845c3 100644 --- a/1 File handle/File handle binary/Update a binary file2.py +++ b/1 File handle/File handle binary/Update a binary file2.py @@ -4,12 +4,11 @@ def update(): - with open("studrec.dat", "rb+") as File: value = pickle.load(File) found = False roll = int(input("Enter the roll number of the record")) - + for i in value: if roll == i[0]: print(f"current name {i[1]}") @@ -28,3 +27,7 @@ def update(): update() + +# ! Instead of AB use WB? +# ! It may have memory limits while updating large files but it would be good +# ! Few lakhs records would be fine and wouldn't create any much of a significant issues diff --git a/1 File handle/File handle binary/class.dat b/1 File handle/File handle binary/class.dat deleted file mode 100644 index c4fd0c7b8ea..00000000000 Binary files a/1 File handle/File handle binary/class.dat and /dev/null differ diff --git a/1 File handle/File handle binary/delete.py b/1 File handle/File handle binary/delete.py new file mode 100644 index 00000000000..c2175469522 --- /dev/null +++ b/1 File handle/File handle binary/delete.py @@ -0,0 +1,44 @@ +import logging +import os +import pickle + +from dotenv import load_dotenv + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) + +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") +student_record = os.getenv("STUDENTS_RECORD_FILE") + + +def b_read(): + # Opening a file & loading it + if not os.path.exists(student_record): + logging.warning("File not found") + return + + with open(student_record, "rb") as F: + student = pickle.load(F) + logging.info("File opened successfully") + logging.info("Records in the file are:") + for i in student: + logging.info(i) + + +def b_modify(): + # Deleting the Roll no. entered by user + if not os.path.exists(student_record): + logging.warning("File not found") + return + roll_no = int(input("Enter the Roll No. to be deleted: ")) + student = 0 + with open(student_record, "rb") as F: + student = pickle.load(F) + + with open(student_record, "wb") as F: + rec = [i for i in student if i[0] != roll_no] + pickle.dump(rec, F) + + +b_read() +b_modify() diff --git a/1 File handle/File handle binary/question 1 (elegible for remedial, top marks).py b/1 File handle/File handle binary/question 1 (elegible for remedial, top marks).py index bf84e9824ec..8b6d120cbf7 100644 --- a/1 File handle/File handle binary/question 1 (elegible for remedial, top marks).py +++ b/1 File handle/File handle binary/question 1 (elegible for remedial, top marks).py @@ -1,50 +1,53 @@ """Amit is a monitor of class XII-A and he stored the record of all -the students of his class in a file named “class.dat”. +the students of his class in a file named “student_records.pkl”. Structure of record is [roll number, name, percentage]. His computer teacher has assigned the following duty to Amit Write a function remcount( ) to count the number of students who need remedial class (student who scored less than 40 percent) +and find the top students of the class. - - """ -# also find no. of children who got top marks +We have to find weak students and bright students. +""" + +## Find bright students and weak students + +from dotenv import load_dotenv +import os + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) +student_record = os.getenv("STUDENTS_RECORD_FILE") import pickle +import logging -list = [ - [1, "Ramya", 30], - [2, "vaishnavi", 60], - [3, "anuya", 40], - [4, "kamala", 30], - [5, "anuraag", 10], - [6, "Reshi", 77], - [7, "Biancaa.R", 100], - [8, "sandhya", 65], -] +# Define logger with info +# import polar -with open("class.dat", "ab") as F: - pickle.dump(list, F) - F.close() + +## ! Unoptimised rehne de abhi ke liye def remcount(): - with open("class.dat", "rb") as F: + with open(student_record, "rb") as F: val = pickle.load(F) count = 0 + weak_students = [] - for i in val: - if i[2] <= 40: - print(f"{i} eligible for remedial") + for student in val: + if student[2] <= 40: + print(f"{student} eligible for remedial") + weak_students.append(student) count += 1 - print(f"the total number of students are {count}") + print(f"the total number of weak students are {count}") + print(f"The weak students are {weak_students}") - -remcount() + # ! highest marks is the key here first marks def firstmark(): - with open("class.dat", "rb") as F: + with open(student_record, "rb") as F: val = pickle.load(F) count = 0 main = [i[2] for i in val] @@ -52,17 +55,12 @@ def firstmark(): top = max(main) print(top, "is the first mark") - F.seek(0) for i in val: if top == i[2]: print(f"{i}\ncongrats") count += 1 - - print("the total number of students who secured top marks are", count) + print("The total number of students who secured top marks are", count) +remcount() firstmark() - -with open("class.dat", "rb") as F: - val = pickle.load(F) - print(val) diff --git a/1 File handle/File handle binary/File handle binary read (record in non list form).py b/1 File handle/File handle binary/read.py similarity index 88% rename from 1 File handle/File handle binary/File handle binary read (record in non list form).py rename to 1 File handle/File handle binary/read.py index f37d97f0bff..9c69281b4bf 100644 --- a/1 File handle/File handle binary/File handle binary read (record in non list form).py +++ b/1 File handle/File handle binary/read.py @@ -1,23 +1,22 @@ -import pickle - - -def binary_read(): - with open("studrec.dat") as b: - stud = pickle.load(b) - print(stud) - - # prints the whole record in nested list format - print("contents of binary file") - - for ch in stud: - - print(ch) # prints one of the chosen rec in list - - rno = ch[0] - rname = ch[1] # due to unpacking the val not printed in list format - rmark = ch[2] - - print(rno, rname, rmark, end="\t") - - -binary_read() +import pickle + + +def binary_read(): + with open("studrec.dat", "rb") as b: + stud = pickle.load(b) + print(stud) + + # prints the whole record in nested list format + print("contents of binary file") + + for ch in stud: + print(ch) # prints one of the chosen rec in list + + rno = ch[0] + rname = ch[1] # due to unpacking the val not printed in list format + rmark = ch[2] + + print(rno, rname, rmark, end="\t") + + +binary_read() diff --git a/1 File handle/File handle binary/search record in binary file.py b/1 File handle/File handle binary/search record in binary file.py index 80d2071134e..a6529e15240 100644 --- a/1 File handle/File handle binary/search record in binary file.py +++ b/1 File handle/File handle binary/search record in binary file.py @@ -1,20 +1,21 @@ # binary file to search a given record import pickle +from dotenv import load_dotenv -def binary_search(): - with open("studrec.dat", "rb") as F: +def search(): + with open("student_records.pkl", "rb") as F: # your file path will be different - search = 0 + search = True rno = int(input("Enter the roll number of the student")) for i in pickle.load(F): if i[0] == rno: print(f"Record found successfully\n{i}") - search = 1 + search = False - if search == 0: + if search: print("Sorry! record not found") diff --git a/1 File handle/File handle binary/studrec.dat b/1 File handle/File handle binary/studrec.dat deleted file mode 100644 index 11571b1102c..00000000000 Binary files a/1 File handle/File handle binary/studrec.dat and /dev/null differ diff --git a/1 File handle/File handle binary/update2.py b/1 File handle/File handle binary/update2.py new file mode 100644 index 00000000000..02511145d7e --- /dev/null +++ b/1 File handle/File handle binary/update2.py @@ -0,0 +1,32 @@ +# Updating records in a binary file +# ! Have a .env file please +import pickle +import os +from dotenv import load_dotenv + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) +student_record = os.getenv("STUDENTS_RECORD_FILE") + + +def update(): + with open(student_record, "rb") as F: + S = pickle.load(F) + found = False + rno = int(input("enter the roll number you want to update")) + + for i in S: + if rno == i[0]: + print(f"the current name is {i[1]}") + i[1] = input("enter the new name") + found = True + break + + if found: + print("Record not found") + + with open(student_record, "wb") as F: + pickle.dump(S, F) + + +update() diff --git a/1 File handle/File handle text/counter.py b/1 File handle/File handle text/counter.py index 1019eeacae8..476371a3951 100644 --- a/1 File handle/File handle text/counter.py +++ b/1 File handle/File handle text/counter.py @@ -1,13 +1,13 @@ """ - Class resposible for counting words for different files: - - Reduce redundant code - - Easier code management/debugging - - Code readability +Class resposible for counting words for different files: +- Reduce redundant code +- Easier code management/debugging +- Code readability """ -class Counter: - def __init__(self, text:str) -> None: +class Counter: + def __init__(self, text: str) -> None: self.text = text # Define the initial count of the lower and upper case. @@ -16,7 +16,6 @@ def __init__(self, text:str) -> None: self.count() def count(self) -> None: - for char in self.text: if char.lower(): self.count_lower += 1 @@ -24,7 +23,7 @@ def count(self) -> None: self.count_upper += 1 return (self.count_lower, self.count_upper) - + def get_total_lower(self) -> int: return self.count_lower @@ -32,4 +31,4 @@ def get_total_upper(self) -> int: return self.count_upper def get_total(self) -> int: - return self.count_lower + self.count_upper \ No newline at end of file + return self.count_lower + self.count_upper diff --git a/1 File handle/File handle text/file handle 12 length of line in text file.py b/1 File handle/File handle text/file handle 12 length of line in text file.py index d14ef16a4ea..608f1bf94e3 100644 --- a/1 File handle/File handle text/file handle 12 length of line in text file.py +++ b/1 File handle/File handle text/file handle 12 length of line in text file.py @@ -1,30 +1,29 @@ - import os import time -file_name= input("Enter the file name to create:- ") + +file_name = input("Enter the file name to create:- ") print(file_name) -def write_to_file(file_name): +def write_to_file(file_name): if os.path.exists(file_name): print(f"Error: {file_name} already exists.") return with open(file_name, "a") as F: - while True: text = input("enter any text to add in the file:- ") - F.write( f"{text}\n" ) + F.write(f"{text}\n") choice = input("Do you want to enter more, y/n").lower() if choice == "n": break - -def longlines(): - with open(file_name, encoding='utf-8') as F: + +def longlines(): + with open(file_name, encoding="utf-8") as F: lines = F.readlines() - lines_less_than_50 = list( filter(lambda line: len(line) < 50, lines ) ) + lines_less_than_50 = list(filter(lambda line: len(line) < 50, lines)) if not lines_less_than_50: print("There is no line which is less than 50") @@ -32,7 +31,8 @@ def longlines(): for i in lines_less_than_50: print(i, end="\t") + if __name__ == "__main__": write_to_file(file_name) time.sleep(1) - longlines() \ No newline at end of file + longlines() diff --git a/1 File handle/File handle text/input,output and error streams.py b/1 File handle/File handle text/input,output and error streams.py index cecd268979b..65c7b4462bc 100644 --- a/1 File handle/File handle text/input,output and error streams.py +++ b/1 File handle/File handle text/input,output and error streams.py @@ -4,13 +4,13 @@ sys.stdout.write("Enter the name of the file") file = sys.stdin.readline() -with open(file.strip(), ) as F: - +with open( + file.strip(), +) as F: while True: ch = F.readlines() - for (i) in ch: # ch is the whole file,for i in ch gives lines, for j in i gives letters,for j in i.split gives words + for i in ch: # ch is the whole file,for i in ch gives lines, for j in i gives letters,for j in i.split gives words print(i, end="") else: sys.stderr.write("End of file reached") break - diff --git a/1 File handle/File handle text/question 2.py b/1 File handle/File handle text/question 2.py index cbb84fcd13f..b369b564373 100644 --- a/1 File handle/File handle text/question 2.py +++ b/1 File handle/File handle text/question 2.py @@ -1,35 +1,32 @@ -""" Write a method/function DISPLAYWORDS() in python to read lines +"""Write a method/function DISPLAYWORDS() in python to read lines from a text file STORY.TXT, using read function -and display those words, which are less than 4 characters. """ +and display those words, which are less than 4 characters.""" +print("Hey!! You can print the word which are less then 4 characters") -print("Hey!! You can print the word which are less then 4 characters") def display_words(file_path): - try: with open(file_path) as F: words = F.read().split() - words_less_than_40 = list( filter(lambda word: len(word) < 4, words) ) + words_less_than_40 = list(filter(lambda word: len(word) < 4, words)) for word in words_less_than_40: print(word) - - return "The total number of the word's count which has less than 4 characters", (len(words_less_than_40)) - + + return ( + "The total number of the word's count which has less than 4 characters", + (len(words_less_than_40)), + ) + except FileNotFoundError: print("File not found") + print("Just need to pass the path of your file..") file_path = input("Please, Enter file path: ") if __name__ == "__main__": - print(display_words(file_path)) - - - - - diff --git a/1 File handle/File handle text/question 5.py b/1 File handle/File handle text/question 5.py index 864520df4cd..de03fbb81fd 100644 --- a/1 File handle/File handle text/question 5.py +++ b/1 File handle/File handle text/question 5.py @@ -1,27 +1,33 @@ """Write a function in python to count the number of lowercase alphabets present in a text file “happy.txt""" -import time, os +import time +import os from counter import Counter -print("You will see the count of lowercase, uppercase and total count of alphabets in provided file..") +print( + "You will see the count of lowercase, uppercase and total count of alphabets in provided file.." +) file_path = input("Please, Enter file path: ") if os.path.exists(file_path): - print('The file exists and this is the path:\n',file_path) + print("The file exists and this is the path:\n", file_path) def lowercase(file_path): try: - with open(file_path) as F: word_counter = Counter(F.read()) - - print(f"The total number of lower case letters are {word_counter.get_total_lower()}") + + print( + f"The total number of lower case letters are {word_counter.get_total_lower()}" + ) time.sleep(0.5) - print(f"The total number of upper case letters are {word_counter.get_total_upper()}") + print( + f"The total number of upper case letters are {word_counter.get_total_upper()}" + ) time.sleep(0.5) print(f"The total number of letters are {word_counter.get_total()}") time.sleep(0.5) @@ -30,8 +36,5 @@ def lowercase(file_path): print("File is not exist.. Please check AGAIN") - - if __name__ == "__main__": - lowercase(file_path) diff --git a/1 File handle/File handle text/question 6.py b/1 File handle/File handle text/question 6.py index a98fe3a7cfb..a942d9db5c6 100644 --- a/1 File handle/File handle text/question 6.py +++ b/1 File handle/File handle text/question 6.py @@ -1,16 +1,21 @@ """Write a function in python to count the number of lowercase -alphabets present in a text file “happy.txt""" +alphabets present in a text file “happy.txt”""" from counter import Counter -def lowercase(): +def lowercase(): with open("happy.txt") as F: word_counter = Counter(F.read()) - - print(f"The total number of lower case letters are {word_counter.get_total_lower()}") - print(f"The total number of upper case letters are {word_counter.get_total_upper()}") + + print( + f"The total number of lower case letters are {word_counter.get_total_lower()}" + ) + print( + f"The total number of upper case letters are {word_counter.get_total_upper()}" + ) print(f"The total number of letters are {word_counter.get_total()}") + if __name__ == "__main__": lowercase() diff --git a/1 File handle/File handle text/question3.py b/1 File handle/File handle text/question3.py index bc05c22561d..924a178638b 100644 --- a/1 File handle/File handle text/question3.py +++ b/1 File handle/File handle text/question3.py @@ -4,28 +4,27 @@ import os import time -file_name= input("Enter the file name to create:- ") + +file_name = input("Enter the file name to create:- ") # step1: print(file_name) - def write_to_file(file_name): - if os.path.exists(file_name): print(f"Error: {file_name} already exists.") else: with open(file_name, "a") as F: - while True: text = input("enter any text") - F.write(f"{text}\n") + F.write(f"{text}\n") if input("do you want to enter more, y/n").lower() == "n": break - + + # step2: def check_first_letter(): with open(file_name) as F: @@ -37,10 +36,12 @@ def check_first_letter(): count_i = first_letters.count("i") count_m = first_letters.count("m") - print(f"The total number of sentences starting with I or M are {count_i + count_m}") + print( + f"The total number of sentences starting with I or M are {count_i + count_m}" + ) + if __name__ == "__main__": - write_to_file(file_name) time.sleep(1) check_first_letter() diff --git a/8_puzzle.py b/8_puzzle.py new file mode 100644 index 00000000000..850f6b768d5 --- /dev/null +++ b/8_puzzle.py @@ -0,0 +1,100 @@ +from queue import PriorityQueue +from typing import List, Tuple, Optional, Set + + +class PuzzleState: + """Represents a state in 8-puzzle solving with A* algorithm.""" + + def __init__( + self, + board: List[List[int]], + goal: List[List[int]], + moves: int = 0, + previous: Optional["PuzzleState"] = None, + ) -> None: + self.board = board # Current 3x3 board configuration + self.goal = goal # Target 3x3 configuration + self.moves = moves # Number of moves taken to reach here + self.previous = previous # Previous state in solution path + + def __lt__(self, other: "PuzzleState") -> bool: + """For PriorityQueue ordering: compare priorities.""" + return self.priority() < other.priority() + + def priority(self) -> int: + """A* priority: moves + Manhattan distance.""" + return self.moves + self.manhattan() + + def manhattan(self) -> int: + """Calculate Manhattan distance from current to goal state.""" + distance = 0 + for i in range(3): + for j in range(3): + if self.board[i][j] != 0: + x, y = divmod(self.board[i][j] - 1, 3) + distance += abs(x - i) + abs(y - j) + return distance + + def is_goal(self) -> bool: + """Check if current state matches goal.""" + return self.board == self.goal + + def neighbors(self) -> List["PuzzleState"]: + """Generate all valid neighboring states by moving empty tile (0).""" + neighbors = [] + x, y = next((i, j) for i in range(3) for j in range(3) if self.board[i][j] == 0) + for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: + nx, ny = x + dx, y + dy + if 0 <= nx < 3 and 0 <= ny < 3: + new_board = [row[:] for row in self.board] + new_board[x][y], new_board[nx][ny] = new_board[nx][ny], new_board[x][y] + neighbors.append( + PuzzleState(new_board, self.goal, self.moves + 1, self) + ) + return neighbors + + +def solve_puzzle( + initial_board: List[List[int]], goal_board: List[List[int]] +) -> Optional[PuzzleState]: + """ + Solve 8-puzzle using A* algorithm. + + >>> solve_puzzle([[1,2,3],[4,0,5],[7,8,6]], [[1,2,3],[4,5,6],[7,8,0]]) is not None + True + """ + initial = PuzzleState(initial_board, goal_board) + frontier = PriorityQueue() + frontier.put(initial) + explored: Set[Tuple[Tuple[int, ...], ...]] = set() + + while not frontier.empty(): + current = frontier.get() + if current.is_goal(): + return current + explored.add(tuple(map(tuple, current.board))) + for neighbor in current.neighbors(): + if tuple(map(tuple, neighbor.board)) not in explored: + frontier.put(neighbor) + return None + + +def print_solution(solution: Optional[PuzzleState]) -> None: + """Print step-by-step solution from initial to goal state.""" + if not solution: + print("No solution found.") + return + steps = [] + while solution: + steps.append(solution.board) + solution = solution.previous + for step in reversed(steps): + for row in step: + print(" ".join(map(str, row))) + print() + + +if __name__ == "__main__": + import doctest + + doctest.testmod(verbose=True) diff --git a/AI Game/Tic-Tac-Toe-AI/tictactoe.py b/AI Game/Tic-Tac-Toe-AI/tictactoe.py deleted file mode 100644 index 6157ff6efb0..00000000000 --- a/AI Game/Tic-Tac-Toe-AI/tictactoe.py +++ /dev/null @@ -1,104 +0,0 @@ -import tkinter as tk #provides a library of basic elements of GUI widgets -from tkinter import messagebox #provides a different set of dialogues that are used to display message boxes -import random - -def check_winner(board, player): - # Check rows, columns, and diagonals for a win - for i in range(3): - if all(board[i][j] == player for j in range(3)) or all(board[j][i] == player for j in range(3)): - return True - if all(board[i][i] == player for i in range(3)) or all(board[i][2 - i] == player for i in range(3)): - return True - return False - -def is_board_full(board): - return all(all(cell != ' ' for cell in row) for row in board) - -def minimax(board, depth, is_maximizing): - if check_winner(board, 'X'): - return -1 - if check_winner(board, 'O'): - return 1 - if is_board_full(board): #if game is full, terminate - return 0 - - if is_maximizing: #recursive approach that fills board with Os - max_eval = float('-inf') - for i in range(3): - for j in range(3): - if board[i][j] == ' ': - board[i][j] = 'O' - eval = minimax(board, depth + 1, False) #recursion - board[i][j] = ' ' - max_eval = max(max_eval, eval) - return max_eval - else: #recursive approach that fills board with Xs - min_eval = float('inf') - for i in range(3): - for j in range(3): - if board[i][j] == ' ': - board[i][j] = 'X' - eval = minimax(board, depth + 1, True) #recursion - board[i][j] = ' ' - min_eval = min(min_eval, eval) - return min_eval - -#determines the best move for the current player and returns a tuple representing the position -def best_move(board): - best_val = float('-inf') - best_move = None - - for i in range(3): - for j in range(3): - if board[i][j] == ' ': - board[i][j] = 'O' - move_val = minimax(board, 0, False) - board[i][j] = ' ' - if move_val > best_val: - best_val = move_val - best_move = (i, j) - - return best_move - -def make_move(row, col): - if board[row][col] == ' ': - board[row][col] = 'X' - buttons[row][col].config(text='X') - if check_winner(board, 'X'): - messagebox.showinfo("Tic-Tac-Toe", "You win!") - root.quit() - elif is_board_full(board): - messagebox.showinfo("Tic-Tac-Toe", "It's a draw!") - root.quit() - else: - ai_move() - else: - messagebox.showerror("Error", "Invalid move") - -#AI's turn to play -def ai_move(): - row, col = best_move(board) - board[row][col] = 'O' - buttons[row][col].config(text='O') - if check_winner(board, 'O'): - messagebox.showinfo("Tic-Tac-Toe", "AI wins!") - root.quit() - elif is_board_full(board): - messagebox.showinfo("Tic-Tac-Toe", "It's a draw!") - root.quit() - -root = tk.Tk() -root.title("Tic-Tac-Toe") - -board = [[' ' for _ in range(3)] for _ in range(3)] -buttons = [] - -for i in range(3): - row_buttons = [] - for j in range(3): - button = tk.Button(root, text=' ', font=('normal', 30), width=5, height=2, command=lambda row=i, col=j: make_move(row, col)) - button.grid(row=i, column=j) - row_buttons.append(button) - buttons.append(row_buttons) - -root.mainloop() diff --git a/Anonymous_TextApp.py b/Anonymous_TextApp.py new file mode 100644 index 00000000000..9a47ccfc666 --- /dev/null +++ b/Anonymous_TextApp.py @@ -0,0 +1,106 @@ +import tkinter as tk +from PIL import Image, ImageTk +from twilio.rest import Client + +window = tk.Tk() +window.title("Anonymous_Text_App") +window.geometry("800x750") + +# Define global variables +body = "" +to = "" + + +def message(): + global body, to + account_sid = "Your_account_sid" # Your account sid + auth_token = "Your_auth_token" # Your auth token + client = Client(account_sid, auth_token) + msg = client.messages.create( + from_="Twilio_number", # Twilio number + body=body, + to=to, + ) + print(msg.sid) + confirmation_label.config(text="Message Sent!") + + +try: + # Load the background image + bg_img = Image.open(r"D:\Downloads\img2.png") + + # Canvas widget + canvas = tk.Canvas(window, width=800, height=750) + canvas.pack(fill="both", expand=True) + + # background image to the Canvas + bg_photo = ImageTk.PhotoImage(bg_img) + bg_image_id = canvas.create_image(0, 0, image=bg_photo, anchor="nw") + bg_image_id = canvas.create_image(550, 250, image=bg_photo, anchor="center") + bg_image_id = canvas.create_image(1100, 250, image=bg_photo, anchor="center") + bg_image_id = canvas.create_image(1250, 250, image=bg_photo, anchor="center") + bg_image_id = canvas.create_image(250, 750, image=bg_photo, anchor="center") + bg_image_id = canvas.create_image(850, 750, image=bg_photo, anchor="center") + bg_image_id = canvas.create_image(1300, 750, image=bg_photo, anchor="center") + + # Foreground Image + img = Image.open(r"D:\Downloads\output-onlinepngtools.png") + photo = ImageTk.PhotoImage(img) + img_label = tk.Label(window, image=photo, anchor="w") + img_label.image = photo + img_label.place(x=10, y=20) + + # Text for number input + canvas.create_text( + 1050, + 300, + text="Enter the number starting with +[country code]", + font=("Poppins", 18, "bold"), + fill="black", + anchor="n", + ) + text_field_number = tk.Entry( + canvas, + width=17, + font=("Poppins", 25, "bold"), + bg="#404040", + fg="white", + show="*", + ) + canvas.create_window(1100, 350, window=text_field_number, anchor="n") + + # Text for message input + canvas.create_text( + 1050, + 450, + text="Enter the Message", + font=("Poppins", 18, "bold"), + fill="black", + anchor="n", + ) + text_field_text = tk.Entry( + canvas, width=17, font=("Poppins", 25, "bold"), bg="#404040", fg="white" + ) + canvas.create_window(1100, 500, window=text_field_text, anchor="n") + + # label for confirmation message + confirmation_label = tk.Label(window, text="", font=("Poppins", 16), fg="green") + canvas.create_window(1100, 600, window=confirmation_label, anchor="n") + +except Exception as e: + print(f"Error loading image: {e}") + + +# Function to save input and send message +def save_and_send(): + global body, to + to = str(text_field_number.get()) + body = str(text_field_text.get()) + message() + + +# Button to save input and send message +save_button = tk.Button(window, text="Save and Send", command=save_and_send) +canvas.create_window(1200, 550, window=save_button, anchor="n") + +window.mainloop() diff --git a/Armstrong_number.py b/Armstrong_number.py index 59732994f81..9c73522992c 100644 --- a/Armstrong_number.py +++ b/Armstrong_number.py @@ -1,24 +1,30 @@ """ -In number theory, a narcissistic number (also known as a pluperfect digital invariant (PPDI), an Armstrong number (after Michael F. Armstrong) or a plus perfect number), +In number theory, a narcissistic number (also known as a pluperfect digital invariant (PPDI), an Armstrong number (after Michael F. Armstrong) or a plus perfect number), in a given number base b, is a number that is the total of its own digits each raised to the power of the number of digits. Source: https://en.wikipedia.org/wiki/Narcissistic_number NOTE: this scripts only works for number in base 10 """ -def is_armstrong_number(number:str): - total:int = 0 - exp:int = len(number) #get the number of digits, this will determinate the exponent - digits:list[int] = [] - for digit in number: digits.append(int(digit)) #get the single digits - for x in digits: total += x ** exp #get the power of each digit and sum it to the total - +def is_armstrong_number(number: str): + total: int = 0 + exp: int = len( + number + ) # get the number of digits, this will determinate the exponent + + digits: list[int] = [] + for digit in number: + digits.append(int(digit)) # get the single digits + for x in digits: + total += x**exp # get the power of each digit and sum it to the total + # display the result if int(number) == total: - print(number,"is an Armstrong number") + print(number, "is an Armstrong number") else: - print(number,"is not an Armstrong number") + print(number, "is not an Armstrong number") + number = input("Enter the number : ") is_armstrong_number(number) diff --git a/Assembler/GUIDE.txt b/Assembler/GUIDE.txt index ccb59b84cf7..fbf1b3822be 100644 --- a/Assembler/GUIDE.txt +++ b/Assembler/GUIDE.txt @@ -27,10 +27,10 @@ int 0x80 ``` -* The first line move the number 56 into register ecx. -* The second line subtract 10 from the ecx register. +* The first line move the number 56 into register ecx. +* The second line subtracts 10 from the ecx register. * The third line move the number 4 into the eax register. This is for the print-function. -* The fourt line call interrupt 0x80, thus the result will print onto console. +* The fourth line call interrupt 0x80, thus the result will print onto console. * The fifth line is a new line. This is important. **Important: close each line with a newline!** @@ -67,7 +67,7 @@ int 0x80 ``` -**Important: The arithmetic commands (add, sub) works only with registers or constans. +**Important: The arithmetic commands (add, sub) work only with registers or constants. Therefore we must use the register ebx as a placeholder, above.** @@ -79,12 +79,12 @@ Result of code, above. ### Comments available -Comments begin with ; and ends with a newline. -We noticed a comment, above. +Comments begin with ; and end with a newline. +We noticed a comment above. ### Push and Pop -Sometimes we must save the content of a register, against losing of data. +Sometimes we must save the content of a register, against losing data. Therefor we use the push and pop command. ``` @@ -92,7 +92,7 @@ push eax ``` -This line will push the content of register eax onto the stack. +This line will push the contents of register eax onto the stack. ``` pop ecx @@ -109,7 +109,7 @@ pop [register] ### Jumps -With the command **cmp** we can compare two register. +With the command **cmp** we can compare two registers. ``` cmp r0, r1 @@ -119,7 +119,7 @@ jmp l2 ``` Are the two register equal? The the command **je** is actively and jumps to label **l1** -Otherwise the command **jmp** is actively and jumps to label **l2** +Otherwise, the command **jmp** is actively and jumps to label **l2** #### Labels diff --git a/Assembler/README.md b/Assembler/README.md index 25cbcafff5d..bb3f26d0f8f 100644 --- a/Assembler/README.md +++ b/Assembler/README.md @@ -1,3 +1,4 @@ +# hy your name # Python-Assembler # WE need A FREE T-SHIRT This program is a simple assembler-like (intel-syntax) interpreter language. The program is written in python 3. diff --git a/Assembler/assembler.py b/Assembler/assembler.py index 24a6840c1d4..8c14e78eb0b 100644 --- a/Assembler/assembler.py +++ b/Assembler/assembler.py @@ -69,866 +69,675 @@ def scanner(string): state = 0 # init state for ch in string: - match state: - case 0: - match ch: - case "m": # catch mov-command - state = 1 token += "m" case "e": # catch register - state = 4 token += "e" case "1": # catch a number - if ch <= "9" or ch == "-": state = 6 token += ch case "0": # catch a number or hex-code - state = 17 token += ch case "a": # catch add-command - state = 7 token += ch case "s": # catch sub command - state = 10 token += ch case "i": # capture int command - state = 14 token += ch case "p": # capture push or pop command - state = 19 token += ch case "l": # capture label - state = 25 token += ch case "j": # capture jmp command - state = 26 token += ch case "c": # catch cmp-command - state = 29 token += ch case ";": # capture comment - state = 33 case '"': # catch a string - state = 34 # without " case ch.isupper(): # capture identifier - state = 35 token += ch case "d": # capture db keyword - state = 36 token += ch case "$": # catch variable with prefix $ - state = 38 # not catching $ case "_": # catch label for subprogram - state = 40 # not catches the character _ case "r": # catch ret-command - state = 44 token += ch case _: # other characters like space-characters etc - state = 0 token = "" case 1: # state 1 - match ch: - case "o": - state = 2 token += ch case "u": - state = 47 token += ch - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() - - case 2: # state 2 + case 2: # state 2 match ch: - case "v": - state = 3 token += "v" - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 3: # state 3 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 4: # state 4 - if ch >= "a" and ch <= "d": - state = 5 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 5: # state 5 - match ch: - case "x": - state = 13 token += ch case _: - state = 0 token = "" raise InvalidSyntax() case 6: # state 6 - if ch.isdigit(): - state = 6 token += ch elif ch.isspace(): - state = 0 tokens.append(Token(token, "value")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 7: # state 7 - match ch: - case "d": - state = 8 token += ch - case _: # error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 8: # state 8 - match ch: case "d": - state = 9 token += ch - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 9: # state 9 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 10: # state 10 - match ch: case "u": - state = 11 token += ch - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 11: # state 11 - match ch: case "b": - state = 12 token += ch - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 12: # state 12 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 13: # state 13 - if ch == "," or ch.isspace(): - state = 0 tokens.append(Token(token, "register")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 14: # state 14 - if ch == "n": - state = 15 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 15: # state 15 - if ch == "t": - state = 16 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 16: # state 16 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 17: # state 17 - if ch == "x": - state = 18 token += ch elif ch.isspace(): - state = 0 tokens.append(Token(token, "value")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 18: # state 18 - if ch.isdigit() or (ch >= "a" and ch <= "f"): - state = 18 token += ch elif ch.isspace(): - state = 0 tokens.append(Token(token, "value")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 19: # state 19 - if ch == "u": - state = 20 token += ch elif ch == "o": - state = 23 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 20: # state 20 - if ch == "s": - state = 21 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 21: # state 21 - if ch == "h": - state = 22 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 22: # state 22 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 23: # state 23 - if ch == "p": - state = 24 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 24: # state 24 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 25: # state 25 - if ch.isdigit(): - state = 25 token += ch elif ch == ":" or ch.isspace(): - state = 0 tokens.append(Token(token, "label")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 26: # state 26 - if ch == "m": - state = 27 token += ch elif ch == "e": # catch je command - state = 32 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 27: # state 27 - if ch == "p": - state = 28 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 28: # state 28 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 29: # state 29 - match ch: case "m": - state = 30 token += ch case "a": # catch call-command - state = 41 token += ch case _: # error case - state = 0 token = "" raise InvalidSyntax() case 30: # state 30 - if ch == "p": - state = 31 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 31: # state 31 - token = "" if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) else: # error case - state = 0 raise InvalidSyntax() case 32: # state 32 - token = "" if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) else: # error case - state = 0 raise InvalidSyntax() case 33: # state 33 - if ( ch.isdigit() or ch.isalpha() or (ch.isspace() and ch != "\n") or ch == '"' ): - state = 33 elif ch == "\n": - state = 0 else: # error case - state = 0 token = "" raise InvalidSyntax() case 34: # state 34 - if ch.isdigit() or ch.isalpha() or ch.isspace(): - state = 34 token += ch elif ch == '"': - state = 0 tokens.append(Token(token, "string")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 35: # state 35 - if ch.isdigit() or ch.isupper(): - state = 35 token += ch elif ch == " " or ch == "\n": - state = 0 tokens.append(Token(token, "identifier")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 36: # state 36 - if ch == "b": - state = 37 token += ch elif ch == "i": - state = 49 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 37: # state 37 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 38: # state 38 - if ch.isalpha(): - state = 39 token += ch else: # error case - state = 0 token = "" raise InvalidSyntax() case 39: # state 39 - if ch.isalpha() or ch.isdigit(): - state = 39 token += ch elif ch.isspace(): - state = 0 tokens.append(Token(token, "identifier")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 40: # state 40 - if ( (ch >= "a" and ch <= "z") or (ch >= "A" and ch <= "Z") or (ch >= "0" and ch <= "9") ): - state = 40 token += ch elif ch == ":" or ch.isspace(): - state = 0 tokens.append(Token(token, "subprogram")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 41: # state 41 - match ch: case "l": - state = 42 token += ch - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 42: # state 42 - match ch: case "l": - state = 43 token += ch - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 43: # state 43 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 44: # state 44 - match ch: case "e": - state = 45 token += ch - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 45: # state 45 - match ch: case "t": - state = 46 token += ch - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 46: # state 46 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 47: # state 47 - match ch: case "l": - state = 48 token += ch - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 48: # state 48 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() case 49: # state 49 - match ch: case "v": - state = 50 token += ch - case _:# error case - + case _: # error case state = 0 token = "" raise InvalidSyntax() case 50: # state 50 - if ch.isspace(): - state = 0 tokens.append(Token(token, "command")) token = "" else: # error case - state = 0 token = "" raise InvalidSyntax() @@ -936,7 +745,7 @@ def scanner(string): def scan(): """ - scan: applys function scanner() to each line of the source code. + scan: applies function scanner() to each line of the source code. """ global lines assert len(lines) > 0, "no lines" @@ -962,11 +771,9 @@ def parser(): tmpToken = Token("", "") while pointer < len(tokens): - token = tokens[pointer] if token.token == "mov": # mov commando - # it must follow a register if pointer + 1 < len(tokens): pointer += 1 @@ -977,7 +784,6 @@ def parser(): # TODO use token.t for this stuff if token.t == "register": - tmpToken = token # it must follow a value / string / register / variable @@ -991,15 +797,16 @@ def parser(): # converts the token into float, if token contains only digits. # TODO response of float if token.t == "identifier": # for variables - # check of exists of variable if token.token in variables: token.token = variables[token.token] else: - print("Error: undefine variable! --> " + token.token) + print(f"Error: Undefined variable {token.token}") return + elif token.t == "string": - pass + token.token = str(token.token) + elif isinstance(token.token, float): pass elif token.token.isdigit(): @@ -1029,17 +836,14 @@ def parser(): edx = token.token else: - print("Error: No found register!") return elif token.token == "add": # add commando - pointer += 1 token = tokens[pointer] if token.t == "register": - tmpToken = token if pointer + 1 < len(tokens): @@ -1051,7 +855,6 @@ def parser(): # converts the token into float, if token contains only digits. if token.t == "register": - # for the case that token is register match token.token: case "eax": @@ -1073,7 +876,6 @@ def parser(): return match tmpToken.token: - case "eax": eax += token.token @@ -1081,7 +883,7 @@ def parser(): zeroFlag = False if eax == 0: zeroFlag = True - + case "ebx": ebx += token.token @@ -1089,7 +891,7 @@ def parser(): zeroFlag = False if ebx == 0: zeroFlag = True - + case "ecx": ecx += token.token @@ -1097,7 +899,7 @@ def parser(): zeroFlag = False if ecx == 0: zeroFlag = True - + case "edx": edx += token.token @@ -1107,17 +909,14 @@ def parser(): zeroFlag = True else: - print("Error: Not found register!") return elif token.token == "sub": # sub commando - pointer += 1 token = tokens[pointer] if token.t == "register": - tmpToken = token if pointer + 1 < len(tokens): @@ -1129,7 +928,6 @@ def parser(): # converts the token into float, if token contains only digits. if token.t == "register": - # for the case that token is register if token.token == "eax": token.token = eax @@ -1185,12 +983,10 @@ def parser(): zeroFlag = False else: - print("Error: No found register!") return elif token.token == "int": # int commando - tmpToken = token if pointer + 1 < len(tokens): @@ -1201,9 +997,7 @@ def parser(): return if token.token == "0x80": # system interrupt 0x80 - if eax == 1: # exit program - if ebx == 0: print("END PROGRAM") return @@ -1212,15 +1006,12 @@ def parser(): return elif eax == 3: - ecx = float(input(">> ")) - elif eax == 4: # output informations - + elif eax == 4: # output information print(ecx) elif token.token == "push": # push commando - tmpToken = token # it must follow a register @@ -1235,7 +1026,6 @@ def parser(): stack.append(token.token) elif token.token == "pop": # pop commando - tmpToken = token # it must follow a register @@ -1249,6 +1039,9 @@ def parser(): # pop register from stack match token.token: case "eax": + if len(stack) == 0: + print("Error: Stack Underflow") + return eax = stack.pop() case "ebx": ebx = stack.pop() @@ -1258,11 +1051,9 @@ def parser(): edx = stack.pop() elif token.t == "label": # capture label - jumps[token.token] = pointer elif token.token == "jmp": # capture jmp command - # it must follow a label if pointer + 1 < len(tokens): pointer += 1 @@ -1272,7 +1063,6 @@ def parser(): return if token.t == "label": - pointer = jumps[token.token] else: @@ -1290,7 +1080,6 @@ def parser(): return if token.t == "register": - # it must follow a register if pointer + 1 < len(tokens): pointer += 1 @@ -1301,10 +1090,8 @@ def parser(): # actual comparing zeroFlag = setZeroFlag(token.token, tmpToken.token) - elif token.token == "je": - # it must follow a label if pointer + 1 < len(tokens): pointer += 1 @@ -1315,21 +1102,17 @@ def parser(): # check of label if token.t == "label": - # actual jump if zeroFlag: pointer = jumps[token.token] else: - print("Error: Not found label") return elif token.t == "identifier": - # check whether identifier is in variables-table if token.token not in variables: - # it must follow a command if pointer + 1 < len(tokens): pointer += 1 @@ -1339,7 +1122,6 @@ def parser(): return if tmpToken.t == "command" and tmpToken.token == "db": - # it must follow a value (string) if pointer + 1 < len(tokens): pointer += 1 @@ -1349,19 +1131,16 @@ def parser(): return if tmpToken.t == "value" or tmpToken.t == "string": - if tmpToken.t == "value": variables[token.token] = float(tmpToken.token) elif tmpToken.t == "string": variables[token.token] = tmpToken.token else: - print("Error: Not found db-keyword") return elif token.token == "call": # catch the call-command - # it must follow a subprogram label if pointer + 1 < len(tokens): pointer += 1 @@ -1371,41 +1150,32 @@ def parser(): return if token.t == "subprogram": - if token.token in jumps: - # save the current pointer returnStack.append(pointer) # eventuell pointer + 1 # jump to the subprogram pointer = jumps[token.token] else: # error case - - print("Error: Unknow subprogram!") + print("Error: Unknown subprogram!") return else: # error case - print("Error: Not found subprogram") return elif token.token == "ret": # catch the ret-command - if len(returnStack) >= 1: - pointer = returnStack.pop() else: # error case - - print("Error: No return adress on stack") + print("Error: No return address on stack") return elif token.t == "subprogram": - pass elif token.token == "mul": # catch mul-command - # it must follow a register if pointer + 1 < len(tokens): pointer += 1 @@ -1415,30 +1185,23 @@ def parser(): return if token.t == "register": - if token.token == "eax": - eax *= eax elif token.token == "ebx": - eax *= ebx elif token.token == "ecx": - eax *= ecx elif token.token == "edx": - eax *= edx else: - print("Error: Not found register") return elif token.token == "div": - # it must follow a register if pointer + 1 < len(tokens): pointer += 1 @@ -1448,12 +1211,14 @@ def parser(): return if token.t == "register": - match token.token: case "eax": eax /= eax case "ebx": + if ebx == 0: + print("Error: Division by Zero") + return eax /= ebx case "ecx": @@ -1463,15 +1228,15 @@ def parser(): eax /= edx else: - print("Error: Not found register") return # increment pointer for fetching next token. pointer += 1 + def setZeroFlag(token, tmpToken): - """ return bool for zero flag based on the regToken """ + """return bool for zero flag based on the regToken""" global eax, ebx, ecx, edx # Register in string @@ -1507,6 +1272,7 @@ def setZeroFlag(token, tmpToken): return zeroFlag + def registerLabels(): """ This function search for labels / subprogram-labels and registers this in the 'jumps' list. @@ -1551,18 +1317,15 @@ def main(): # [1:] because the first argument is the program itself. for arg in sys.argv[1:]: - resetInterpreter() # resets interpreter mind try: - loadFile(arg) scan() registerLabels() parser() except Exception as e: - print(f"Error: {e}") diff --git a/Assembler/examples/klmn b/Assembler/examples/klmn new file mode 100644 index 00000000000..9c16fab3022 --- /dev/null +++ b/Assembler/examples/klmn @@ -0,0 +1,2 @@ +Assembler/examples/code2.txt +hello world diff --git a/Audio_Summarizer.py b/Audio_Summarizer.py new file mode 100644 index 00000000000..7388fcbd123 --- /dev/null +++ b/Audio_Summarizer.py @@ -0,0 +1,55 @@ +import whisper +import re +import openai +import os + + +def transcript_generator(): + # Load Whisper model + model = whisper.load_model("base") + + # Transcribe audio file + result = model.transcribe("audio.mp4") + + # Send the transcript to the summarizer + provide_summarizer(result) + + +def provide_summarizer(Text): + # Set up Groq OpenAI-compatible API credentials + openai.api_key = os.getenv( + "OPENAI_API_KEY", "your-api-key-here" + ) # Replace or set in environment + openai.api_base = "https://api.groq.com/openai/v1" + + # Extract text from the Whisper result + text_to_summarize = Text["text"] + + # Send the transcription to Groq for summarization + response = openai.ChatCompletion.create( + model="llama3-8b-8192", + messages=[ + { + "role": "system", + "content": "You are a helpful assistant who summarizes long text into bullet points.", + }, + { + "role": "user", + "content": f"Summarize the following:\n\n{text_to_summarize}", + }, + ], + ) + + # Split the response into sentences + summary = re.split(r"(?<=[.!?]) +", response["choices"][0]["message"]["content"]) + + # Save summary to file + with open("summary.txt", "w+", encoding="utf-8") as file: + for sentence in summary: + cleaned = sentence.strip() + if cleaned: + file.write("- " + cleaned + "\n") + + +if __name__ == "__main__": + transcript_generator() diff --git a/AutoComplete_App/backend.py b/AutoComplete_App/backend.py index 47e1c7906d6..a86e6797742 100644 --- a/AutoComplete_App/backend.py +++ b/AutoComplete_App/backend.py @@ -1,12 +1,13 @@ import sqlite3 import json + class AutoComplete: """ It works by building a `WordMap` that stores words to word-follower-count ---------------------------- e.g. To train the following statement: - + It is not enough to just know how tools work and what they worth, we have got to learn how to use them and to use them well. And with all these new weapons in your arsenal, we would better @@ -46,9 +47,21 @@ def __init__(self): if not tables_exist: self.conn.execute("CREATE TABLE WordMap(name TEXT, value TEXT)") - self.conn.execute('CREATE TABLE WordPrediction (name TEXT, value TEXT)') - cur.execute("INSERT INTO WordMap VALUES (?, ?)", ("wordsmap", "{}",)) - cur.execute("INSERT INTO WordPrediction VALUES (?, ?)", ("predictions", "{}",)) + self.conn.execute("CREATE TABLE WordPrediction (name TEXT, value TEXT)") + cur.execute( + "INSERT INTO WordMap VALUES (?, ?)", + ( + "wordsmap", + "{}", + ), + ) + cur.execute( + "INSERT INTO WordPrediction VALUES (?, ?)", + ( + "predictions", + "{}", + ), + ) def train(self, sentence): """ @@ -66,14 +79,18 @@ def train(self, sentence): cur = self.conn.cursor() words_list = sentence.split(" ") - words_map = cur.execute("SELECT value FROM WordMap WHERE name='wordsmap'").fetchone()[0] + words_map = cur.execute( + "SELECT value FROM WordMap WHERE name='wordsmap'" + ).fetchone()[0] words_map = json.loads(words_map) - predictions = cur.execute("SELECT value FROM WordPrediction WHERE name='predictions'").fetchone()[0] + predictions = cur.execute( + "SELECT value FROM WordPrediction WHERE name='predictions'" + ).fetchone()[0] predictions = json.loads(predictions) - for idx in range(len(words_list)-1): - curr_word, next_word = words_list[idx], words_list[idx+1] + for idx in range(len(words_list) - 1): + curr_word, next_word = words_list[idx], words_list[idx + 1] if curr_word not in words_map: words_map[curr_word] = {} if next_word not in words_map[curr_word]: @@ -84,20 +101,30 @@ def train(self, sentence): # checking the completion word against the next word if curr_word not in predictions: predictions[curr_word] = { - 'completion_word': next_word, - 'completion_count': 1 + "completion_word": next_word, + "completion_count": 1, } else: - if words_map[curr_word][next_word] > predictions[curr_word]['completion_count']: - predictions[curr_word]['completion_word'] = next_word - predictions[curr_word]['completion_count'] = words_map[curr_word][next_word] + if ( + words_map[curr_word][next_word] + > predictions[curr_word]["completion_count"] + ): + predictions[curr_word]["completion_word"] = next_word + predictions[curr_word]["completion_count"] = words_map[curr_word][ + next_word + ] words_map = json.dumps(words_map) predictions = json.dumps(predictions) - cur.execute("UPDATE WordMap SET value = (?) WHERE name='wordsmap'", (words_map,)) - cur.execute("UPDATE WordPrediction SET value = (?) WHERE name='predictions'", (predictions,)) - return("training complete") + cur.execute( + "UPDATE WordMap SET value = (?) WHERE name='wordsmap'", (words_map,) + ) + cur.execute( + "UPDATE WordPrediction SET value = (?) WHERE name='predictions'", + (predictions,), + ) + return "training complete" def predict(self, word): """ @@ -110,17 +137,18 @@ def predict(self, word): - returns the completion word of the input word """ cur = self.conn.cursor() - predictions = cur.execute("SELECT value FROM WordPrediction WHERE name='predictions'").fetchone()[0] + predictions = cur.execute( + "SELECT value FROM WordPrediction WHERE name='predictions'" + ).fetchone()[0] predictions = json.loads(predictions) - completion_word = predictions[word.lower()]['completion_word'] + completion_word = predictions[word.lower()]["completion_word"] return completion_word - if __name__ == "__main__": input_ = "It is not enough to just know how tools work and what they worth,\ we have got to learn how to use them and to use them well. And with\ all these new weapons in your arsenal, we would better get those profits fired up" ac = AutoComplete() ac.train(input_) - print(ac.predict("to")) \ No newline at end of file + print(ac.predict("to")) diff --git a/AutoComplete_App/frontend.py b/AutoComplete_App/frontend.py index 90e576e849e..137cfaf1442 100644 --- a/AutoComplete_App/frontend.py +++ b/AutoComplete_App/frontend.py @@ -1,5 +1,4 @@ from tkinter import * -from tkinter import messagebox import backend @@ -8,15 +7,17 @@ def train(): ac = backend.AutoComplete() ac.train(sentence) + def predict_word(): word = predict_word_entry.get() ac = backend.AutoComplete() print(ac.predict(word)) + if __name__ == "__main__": root = Tk() root.title("Input note") - root.geometry('300x300') + root.geometry("300x300") train_label = Label(root, text="Train") train_label.pack() @@ -34,4 +35,4 @@ def predict_word(): predict_button = Button(root, text="predict", command=predict_word) predict_button.pack() - root.mainloop() \ No newline at end of file + root.mainloop() diff --git a/Automated Scheduled Call Reminders/caller.py b/Automated Scheduled Call Reminders/caller.py index 3082dbb7193..1349762ade0 100644 --- a/Automated Scheduled Call Reminders/caller.py +++ b/Automated Scheduled Call Reminders/caller.py @@ -1,12 +1,9 @@ # The project automates calls for people from the firebase cloud database and the schedular keeps it running and checks for entries # every 1 hour using aps scedular # The project can be used to set 5 min before reminder calls to a set of people for doing a particular job -import os from firebase_admin import credentials, firestore, initialize_app from datetime import datetime, timedelta -import time from time import gmtime, strftime -import twilio from twilio.rest import Client # twilio credentials @@ -23,16 +20,15 @@ # Here the collection name is on_call which has documents with fields phone , from (%H:%M:%S time to call the person),date -# gets data from cloud database and calls 5 min prior the time (from time) alloted in the database -def search(): +# gets data from cloud database and calls 5 min prior the time (from time) allotted in the database +def search(): calling_time = datetime.now() one_hours_from_now = (calling_time + timedelta(hours=1)).strftime("%H:%M:%S") current_date = str(strftime("%d-%m-%Y", gmtime())) - docs = db.collection(u"on_call").where(u"date", u"==", current_date).stream() + docs = db.collection("on_call").where("date", "==", current_date).stream() list_of_docs = [] for doc in docs: - c = doc.to_dict() if (calling_time).strftime("%H:%M:%S") <= c["from"] <= one_hours_from_now: list_of_docs.append(c) diff --git a/Automated Scheduled Call Reminders/requirements.txt b/Automated Scheduled Call Reminders/requirements.txt index ccfbb3924fa..f5635170c24 100644 --- a/Automated Scheduled Call Reminders/requirements.txt +++ b/Automated Scheduled Call Reminders/requirements.txt @@ -1,4 +1,4 @@ -BlockingScheduler +APScheduler search os time @@ -11,3 +11,4 @@ timedelta credentials firestore initialize_app +Twilio \ No newline at end of file diff --git a/Bank Application .ipynb b/Bank Application .ipynb index f92a6040923..a780b0b0a7e 100644 --- a/Bank Application .ipynb +++ b/Bank Application .ipynb @@ -6,7 +6,7 @@ "metadata": {}, "outputs": [], "source": [ - "##open project " + "##open project" ] }, { @@ -23,12 +23,12 @@ "outputs": [], "source": [ "data = {\n", - " \"accno\" : [1001, 1002, 1003, 1004, 1005],\n", - " \"name\" : ['vaibhav', 'abhinav', 'aman', 'ashish', 'pramod'],\n", - " \"balance\" : [10000, 12000, 7000, 9000, 10000],\n", - " \"password\" : ['admin', 'adminadmin', 'passwd', '1234567', 'amigo'],\n", - " \"security_check\" : ['2211', '1112', '1009', '1307', '1103']\n", - "}\n" + " \"accno\": [1001, 1002, 1003, 1004, 1005],\n", + " \"name\": [\"vaibhav\", \"abhinav\", \"aman\", \"ashish\", \"pramod\"],\n", + " \"balance\": [10000, 12000, 7000, 9000, 10000],\n", + " \"password\": [\"admin\", \"adminadmin\", \"passwd\", \"1234567\", \"amigo\"],\n", + " \"security_check\": [\"2211\", \"1112\", \"1009\", \"1307\", \"1103\"],\n", + "}" ] }, { @@ -114,122 +114,136 @@ "# import getpass\n", "print(\"-------------------\".center(100))\n", "print(\"| Bank Application |\".center(100))\n", - "print(\"-\"*100)\n", - "while True :\n", + "print(\"-\" * 100)\n", + "while True:\n", " print(\"\\n 1. Login \\n 2. Signup \\n 3. Exit\")\n", " i1 = int(input(\"enter what you want login, signup, exit :\".center(50)))\n", - " #login part\n", + " # login part\n", " if i1 == 1:\n", " print(\"login\".center(90))\n", - " print(\"_\"*100)\n", + " print(\"_\" * 100)\n", " i2 = int(input(\"enter account number : \".center(50)))\n", " if i2 in (data[\"accno\"]):\n", " check = (data[\"accno\"]).index(i2)\n", " i3 = input(\"enter password : \".center(50))\n", - " check2= data[\"password\"].index(i3)\n", - " if check == check2:\n", + " check2 = data[\"password\"].index(i3)\n", + " if check == check2:\n", " while True:\n", - " print(\"\\n 1.check ditails \\n 2. debit \\n 3. credit \\n 4. change password \\n 5. main Manu \")\n", + " print(\n", + " \"\\n 1.check ditails \\n 2. debit \\n 3. credit \\n 4. change password \\n 5. main Manu \"\n", + " )\n", " i4 = int(input(\"enter what you want :\".center(50)))\n", - " #check ditails part\n", + " # check ditails part\n", " if i4 == 1:\n", " print(\"cheak ditails\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " print(f\"your account number --> {data['accno'][check]}\")\n", " print(f\"your name --> {data['name'][check]}\")\n", " print(f\"your balance --> {data['balance'][check]}\")\n", " continue\n", - " #debit part\n", - " elif i4 == 2 :\n", + " # debit part\n", + " elif i4 == 2:\n", " print(\"debit\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " print(f\"your balance --> {data['balance'][check]}\")\n", " i5 = int(input(\"enter debit amount : \"))\n", - " if 0 < i5 <= data['balance'][check]:\n", - " debit = data['balance'][check]-i5\n", - " data['balance'][check] = debit\n", - " print(f\"your remaining balance --> {data['balance'][check]}\")\n", + " if 0 < i5 <= data[\"balance\"][check]:\n", + " debit = data[\"balance\"][check] - i5\n", + " data[\"balance\"][check] = debit\n", + " print(\n", + " f\"your remaining balance --> {data['balance'][check]}\"\n", + " )\n", " else:\n", " print(\"your debit amount is more than balance \")\n", " continue\n", - " #credit part\n", - " elif i4 == 3 :\n", + " # credit part\n", + " elif i4 == 3:\n", " print(\"credit\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " print(f\"your balance --> {data['balance'][check]}\")\n", " i6 = int(input(\"enter credit amount : \"))\n", " if 0 < i6:\n", - " credit = data['balance'][check]+i6\n", - " data['balance'][check] = credit\n", + " credit = data[\"balance\"][check] + i6\n", + " data[\"balance\"][check] = credit\n", " print(f\"your new balance --> {data['balance'][check]}\")\n", " else:\n", " print(\"your credit amount is low \")\n", " continue\n", - " #password part\n", - " elif i4 == 4 :\n", + " # password part\n", + " elif i4 == 4:\n", " print(\"change password\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " old = input(\"enter your old password : \")\n", - " print(\"your password must have at list one lower case, one uppercase, one digital, one special case and length of password is 8\")\n", - " new = getpass.getpass(prompt = \"Enter your new password\" )\n", + " print(\n", + " \"your password must have at list one lower case, one uppercase, one digital, one special case and length of password is 8\"\n", + " )\n", + " new = getpass.getpass(prompt=\"Enter your new password\")\n", " if old == data[\"password\"][check]:\n", - " low, up ,sp ,di = 0, 0, 0, 0\n", - " if (len(new))> 8 :\n", + " low, up, sp, di = 0, 0, 0, 0\n", + " if (len(new)) > 8:\n", " for i in new:\n", - " if (i.islower()):\n", + " if i.islower():\n", " low += 1\n", - " if (i.isupper()):\n", - " up +=1 \n", - " if (i.isdigit()):\n", + " if i.isupper():\n", + " up += 1\n", + " if i.isdigit():\n", " di += 1\n", - " if (i in ['@','$','%','^','&','*']):\n", + " if i in [\"@\", \"$\", \"%\", \"^\", \"&\", \"*\"]:\n", " sp += 1\n", - " if (low>=1 and up>=1 and sp>=1 and di>=1 and low+up+sp+di==len(new)):\n", - " data['password'][check] = new\n", - " print(f\"your new password --> {data['password'][check]}\")\n", + " if (\n", + " low >= 1\n", + " and up >= 1\n", + " and sp >= 1\n", + " and di >= 1\n", + " and low + up + sp + di == len(new)\n", + " ):\n", + " data[\"password\"][check] = new\n", + " print(\n", + " f\"your new password --> {data['password'][check]}\"\n", + " )\n", " else:\n", " print(\"Invalid Password\")\n", " else:\n", " print(\"old password wrong please enter valid password\")\n", " continue\n", - " elif i4 == 5 :\n", + " elif i4 == 5:\n", " print(\"main menu\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " break\n", " else:\n", - " print(\"please enter valid number\") \n", + " print(\"please enter valid number\")\n", " else:\n", " print(\"please check your password number\".center(50))\n", " else:\n", - " print(\"please check your account number\".center(50)) \n", - " #signup part \n", - " elif i1 == 2 :\n", + " print(\"please check your account number\".center(50))\n", + " # signup part\n", + " elif i1 == 2:\n", " print(\"signup\".center(90))\n", - " print(\"_\"*100)\n", - " acc = 1001 + len(data['accno'])\n", - " data['accno'].append(acc)\n", - " ind = (data['accno']).index(acc)\n", + " print(\"_\" * 100)\n", + " acc = 1001 + len(data[\"accno\"])\n", + " data[\"accno\"].append(acc)\n", + " ind = (data[\"accno\"]).index(acc)\n", " name = input(\"enter your name : \")\n", - " data['name'].append(name)\n", + " data[\"name\"].append(name)\n", " balance = int(input(\"enter your initial balance : \"))\n", - " data['balance'].append(balance)\n", + " data[\"balance\"].append(balance)\n", " password = input(\"enter your password : \")\n", - " data['password'].append(password)\n", + " data[\"password\"].append(password)\n", " security_check = (int(input(\"enter your security pin (DDMM) : \"))).split()\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " print(f\"your account number --> {data['accno'][ind]}\".center(50))\n", " print(f\"your name --> {data['name'][ind]}\".center(50))\n", " print(f\"your balance --> {data['balance'][ind]}\".center(50))\n", " print(f\"your password --> {data['password'][ind]}\".center(50))\n", " continue\n", - " #exit part\n", - " elif i1== 3 :\n", + " # exit part\n", + " elif i1 == 3:\n", " print(\"exit\".center(90))\n", " print(\"thank you for visiting\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " break\n", " else:\n", - " print(f\"wrong enter : {i1}\".center(50))\n" + " print(f\"wrong enter : {i1}\".center(50))" ] }, { @@ -247,7 +261,7 @@ "source": [ "def cheak_ditails(check):\n", " print(\"cheak ditails\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " print(f\"your account number --> {data['accno'][check]}\")\n", " print(f\"your name --> {data['name'][check]}\")\n", " print(f\"your balance --> {data['balance'][check]}\")" @@ -261,12 +275,12 @@ "source": [ "def credit(check):\n", " print(\"credit\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " print(f\"your balance --> {data['balance'][check]}\")\n", " i6 = int(input(\"enter credit amount : \"))\n", " if 0 < i6:\n", - " credit = data['balance'][check]+i6\n", - " data['balance'][check] = credit\n", + " credit = data[\"balance\"][check] + i6\n", + " data[\"balance\"][check] = credit\n", " print(f\"your new balance --> {data['balance'][check]}\")\n", " else:\n", " print(\"your credit amount is low \")" @@ -280,12 +294,12 @@ "source": [ "def debit(check):\n", " print(\"debit\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " print(f\"your balance --> {data['balance'][check]}\")\n", " i5 = int(input(\"enter debit amount : \"))\n", - " if 0 < i5 <= data['balance'][check]:\n", - " debit = data['balance'][check]-i5\n", - " data['balance'][check] = debit\n", + " if 0 < i5 <= data[\"balance\"][check]:\n", + " debit = data[\"balance\"][check] - i5\n", + " data[\"balance\"][check] = debit\n", " print(f\"your remaining balance --> {data['balance'][check]}\")\n", " else:\n", " print(\"your debit amount is more than balance \")" @@ -299,24 +313,32 @@ "source": [ "def change_password(check):\n", " print(\"change password\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " old = input(\"enter your old password : \")\n", - " print(\"your password must have at list one lower case, one uppercase, one digital, one special case and length of password is 8\")\n", - " new = getpass.getpass(prompt = \"Enter your new password\" )\n", + " print(\n", + " \"your password must have at list one lower case, one uppercase, one digital, one special case and length of password is 8\"\n", + " )\n", + " new = getpass.getpass(prompt=\"Enter your new password\")\n", " if old == data[\"password\"][check]:\n", - " low, up ,sp ,di = 0, 0, 0, 0\n", - " if (len(new))> 8 :\n", + " low, up, sp, di = 0, 0, 0, 0\n", + " if (len(new)) > 8:\n", " for i in new:\n", - " if (i.islower()):\n", + " if i.islower():\n", " low += 1\n", - " if (i.isupper()):\n", - " up +=1 \n", - " if (i.isdigit()):\n", + " if i.isupper():\n", + " up += 1\n", + " if i.isdigit():\n", " di += 1\n", - " if (i in ['@','$','%','^','&','*']):\n", + " if i in [\"@\", \"$\", \"%\", \"^\", \"&\", \"*\"]:\n", " sp += 1\n", - " if (low>=1 and up>=1 and sp>=1 and di>=1 and low+up+sp+di==len(new)):\n", - " data['password'][check] = new\n", + " if (\n", + " low >= 1\n", + " and up >= 1\n", + " and sp >= 1\n", + " and di >= 1\n", + " and low + up + sp + di == len(new)\n", + " ):\n", + " data[\"password\"][check] = new\n", " print(f\"your new password --> {data['password'][check]}\")\n", " else:\n", " print(\"Invalid Password\")\n", @@ -332,42 +354,44 @@ "source": [ "def login():\n", " print(\"login\".center(90))\n", - " print(\"_\"*100)\n", + " print(\"_\" * 100)\n", " i2 = int(input(\"enter account number : \".center(50)))\n", " if i2 in (data[\"accno\"]):\n", " check = (data[\"accno\"]).index(i2)\n", " i3 = input(\"enter password : \".center(50))\n", - " check2= data[\"password\"].index(i3)\n", - " if check == check2:\n", + " check2 = data[\"password\"].index(i3)\n", + " if check == check2:\n", " while True:\n", - " print(\"\\n 1.check ditails \\n 2. debit \\n 3. credit \\n 4. change password \\n 5. main Manu \")\n", + " print(\n", + " \"\\n 1.check ditails \\n 2. debit \\n 3. credit \\n 4. change password \\n 5. main Manu \"\n", + " )\n", " i4 = int(input(\"enter what you want :\".center(50)))\n", - " #check ditails part\n", + " # check ditails part\n", " if i4 == 1:\n", " cheak_ditails(check)\n", " continue\n", - " #debit part\n", - " elif i4 == 2 :\n", + " # debit part\n", + " elif i4 == 2:\n", " debit(check)\n", " continue\n", - " #credit part\n", - " elif i4 == 3 :\n", + " # credit part\n", + " elif i4 == 3:\n", " credit(check)\n", " continue\n", - " #password part\n", - " elif i4 == 4 :\n", + " # password part\n", + " elif i4 == 4:\n", " change_password(check)\n", " continue\n", - " elif i4 == 5 :\n", + " elif i4 == 5:\n", " print(\"main menu\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " break\n", " else:\n", - " print(\"please enter valid number\") \n", + " print(\"please enter valid number\")\n", " else:\n", " print(\"please check your password number\".center(50))\n", " else:\n", - " print(\"please check your account number\".center(50)) " + " print(\"please check your account number\".center(50))" ] }, { @@ -377,13 +401,13 @@ "outputs": [], "source": [ "def security_check(ss):\n", - " data = {(1, 3, 5, 7, 8, 10, 12) : 31, (2, ) : 29, (4, 6, 9) : 30}\n", + " data = {(1, 3, 5, 7, 8, 10, 12): 31, (2,): 29, (4, 6, 9): 30}\n", " month = ss[2:]\n", " date = ss[:2]\n", " for key, value in data.items():\n", " print(key, value)\n", " if int(month) in key:\n", - " if 1<=int(date)<=value:\n", + " if 1 <= int(date) <= value:\n", " return True\n", " return False\n", " return False" @@ -397,22 +421,22 @@ "source": [ "def signup():\n", " print(\"signup\".center(90))\n", - " print(\"_\"*100)\n", - " acc = 1001 + len(data['accno'])\n", - " data['accno'].append(acc)\n", - " ind = (data['accno']).index(acc)\n", + " print(\"_\" * 100)\n", + " acc = 1001 + len(data[\"accno\"])\n", + " data[\"accno\"].append(acc)\n", + " ind = (data[\"accno\"]).index(acc)\n", " name = input(\"enter your name : \")\n", - " data['name'].append(name)\n", + " data[\"name\"].append(name)\n", " balance = int(input(\"enter your initial balance : \"))\n", - " data['balance'].append(balance)\n", + " data[\"balance\"].append(balance)\n", " password = input(\"enter your password : \")\n", - " data['password'].append(password)\n", - " ss=input(\"enter a secuirty quetion in form dd//mm\")\n", + " data[\"password\"].append(password)\n", + " ss = input(\"enter a secuirty quetion in form dd//mm\")\n", " security_check(ss)\n", - " data['security_check'].append(ss)\n", - " print(\".\"*100)\n", + " data[\"security_check\"].append(ss)\n", + " print(\".\" * 100)\n", " print(f\"your account number --> {data['accno'][ind]}\".center(50))\n", - " print(f\"your name --> {data['name'][ind]}\".center(50))\n" + " print(f\"your name --> {data['name'][ind]}\".center(50))" ] }, { @@ -451,27 +475,26 @@ ], "source": [ "def main():\n", - " import getpass\n", " print(\"-------------------\".center(100))\n", " print(\"| Bank Application |\".center(100))\n", - " print(\"-\"*100)\n", - " while True :\n", + " print(\"-\" * 100)\n", + " while True:\n", " print(\"\\n 1. Login \\n 2. Signup \\n 3. Exit\")\n", " i1 = int(input(\"enter what you want login, signup, exit :\".center(50)))\n", - " #login part\n", + " # login part\n", " if i1 == 1:\n", " login()\n", - " #signup part \n", - " elif i1 == 2 :\n", + " # signup part\n", + " elif i1 == 2:\n", " signup()\n", - " #exit part\n", - " elif i1== 3 :\n", + " # exit part\n", + " elif i1 == 3:\n", " print(\"exit\".center(90))\n", " print(\"thank you for visiting\".center(90))\n", - " print(\".\"*100)\n", + " print(\".\" * 100)\n", " break\n", " else:\n", - " print(f\"wrong enter : {i1}\".center(50))\n" + " print(f\"wrong enter : {i1}\".center(50))" ] }, { diff --git a/Base Converter Number system.py b/Base Converter Number system.py index 5c1d92e1485..23961a1372d 100644 --- a/Base Converter Number system.py +++ b/Base Converter Number system.py @@ -7,7 +7,6 @@ def base_check(xnumber, xbase): def convert_from_10(xnumber, xbase, arr, ybase): if int(xbase) == 2 or int(xbase) == 4 or int(xbase) == 6 or int(xbase) == 8: - if xnumber == 0: return arr else: diff --git a/Battery_notifier.py b/Battery_notifier.py index d871e43d928..2f45301bc1e 100644 --- a/Battery_notifier.py +++ b/Battery_notifier.py @@ -6,9 +6,7 @@ # battery percent will return the current battery prcentage percent = battery.percent -charging = ( - battery.power_plugged -) +charging = battery.power_plugged # Notification(title, description, duration)--to send # notification to desktop diff --git a/Binary_search.py b/Binary_search.py index 0b2211d6a48..3961529fcc8 100644 --- a/Binary_search.py +++ b/Binary_search.py @@ -24,7 +24,10 @@ def binary_search(arr, l, r, x): # Main Function if __name__ == "__main__": # User input array - arr = [int(x) for x in input("Enter the array with elements separated by commas: ").split(",")] + arr = [ + int(x) + for x in input("Enter the array with elements separated by commas: ").split(",") + ] # User input element to search for x = int(input("Enter the element you want to search for: ")) diff --git a/BlackJack_game/blackjack.py b/BlackJack_game/blackjack.py index c1bc919e01c..03e5fb05d39 100644 --- a/BlackJack_game/blackjack.py +++ b/BlackJack_game/blackjack.py @@ -1,7 +1,7 @@ # master # master # BLACK JACK - CASINO A GAME OF FORTUNE!!! -from time import * +from time import sleep # BLACK JACK - CASINO # PYTHON CODE BASE @@ -14,7 +14,7 @@ random.shuffle(deck) -print(f'{"*"*58} \n Welcome to the game Casino - BLACK JACK ! \n{"*"*58}') +print(f"{'*' * 58} \n Welcome to the game Casino - BLACK JACK ! \n{'*' * 58}") sleep(2) print("So Finally You Are Here To Accept Your Fate") sleep(2) @@ -49,19 +49,19 @@ print("The cards Player has are ", p_cards) if sum(p_cards) > 21: - print(f"You are BUSTED !\n {'*'*14}Dealer Wins !!{'*'*14}\n") + print(f"You are BUSTED !\n {'*' * 14}Dealer Wins !!{'*' * 14}\n") exit() if sum(d_cards) > 21: - print(f"Dealer is BUSTED !\n {'*'*14} You are the Winner !!{'*'*18}\n") + print(f"Dealer is BUSTED !\n {'*' * 14} You are the Winner !!{'*' * 18}\n") exit() if sum(d_cards) == 21: - print(f"{'*'*24}Dealer is the Winner !!{'*'*14}") + print(f"{'*' * 24}Dealer is the Winner !!{'*' * 14}") exit() if sum(d_cards) == 21 and sum(p_cards) == 21: - print(f"{'*'*17}The match is tie !!{'*'*25}") + print(f"{'*' * 17}The match is tie !!{'*' * 25}") exit() @@ -75,46 +75,45 @@ def dealer_choice(): print("Dealer has total " + str(sum(d_cards)) + "with the cards ", d_cards) if sum(p_cards) == sum(d_cards): - print(f"{'*'*15}The match is tie !!{'*'*15}") + print(f"{'*' * 15}The match is tie !!{'*' * 15}") exit() if sum(d_cards) == 21: if sum(p_cards) < 21: - print(f"{'*'*23}Dealer is the Winner !!{'*'*18}") + print(f"{'*' * 23}Dealer is the Winner !!{'*' * 18}") elif sum(p_cards) == 21: - print(f"{'*'*20}There is tie !!{'*'*26}") + print(f"{'*' * 20}There is tie !!{'*' * 26}") else: - print(f"{'*'*23}Dealer is the Winner !!{'*'*18}") + print(f"{'*' * 23}Dealer is the Winner !!{'*' * 18}") elif sum(d_cards) < 21: if sum(p_cards) < 21 and sum(p_cards) < sum(d_cards): - print(f"{'*'*23}Dealer is the Winner !!{'*'*18}") + print(f"{'*' * 23}Dealer is the Winner !!{'*' * 18}") if sum(p_cards) == 21: - print(f"{'*'*22}Player is winner !!{'*'*22}") + print(f"{'*' * 22}Player is winner !!{'*' * 22}") if 21 > sum(p_cards) > sum(d_cards): - print(f"{'*'*22}Player is winner !!{'*'*22}") + print(f"{'*' * 22}Player is winner !!{'*' * 22}") else: if sum(p_cards) < 21: - print(f"{'*'*22}Player is winner !!{'*'*22}") + print(f"{'*' * 22}Player is winner !!{'*' * 22}") elif sum(p_cards) == 21: - print(f"{'*'*22}Player is winner !!{'*'*22}") + print(f"{'*' * 22}Player is winner !!{'*' * 22}") else: - print(f"{'*'*23}Dealer is the Winner !!{'*'*18}") + print(f"{'*' * 23}Dealer is the Winner !!{'*' * 18}") while sum(p_cards) < 21: - # to continue the game again and again !! k = input("Want to hit or stay?\n Press 1 for hit and 0 for stay ") - if k == "1": #Ammended 1 to a string + if k == "1": # Amended 1 to a string random.shuffle(deck) p_cards.append(deck.pop()) print("You have a total of " + str(sum(p_cards)) + " with the cards ", p_cards) if sum(p_cards) > 21: - print(f'{"*"*13}You are BUSTED !{"*"*13}\n Dealer Wins !!') + print(f"{'*' * 13}You are BUSTED !{'*' * 13}\n Dealer Wins !!") if sum(p_cards) == 21: - print(f'{"*"*19}You are the Winner !!{"*"*29}') + print(f"{'*' * 19}You are the Winner !!{'*' * 29}") else: dealer_choice() diff --git a/BlackJack_game/blackjack_rr.py b/BlackJack_game/blackjack_rr.py index d7c46b83cf6..a70c2d4acc1 100644 --- a/BlackJack_game/blackjack_rr.py +++ b/BlackJack_game/blackjack_rr.py @@ -189,7 +189,6 @@ def push(player, dealer): player_chips = Chips() while True: - print("\t **********************************************************") print( "\t Welcome to the game Casino - BLACK JACK ! " @@ -227,7 +226,6 @@ def push(player, dealer): show_some(player_hand, dealer_hand) while playing: - hit_or_stand(deck, player_hand) show_some(player_hand, dealer_hand) @@ -236,7 +234,6 @@ def push(player, dealer): break if player_hand.value <= 21: - while dealer_hand.value < 17: hit(deck, dealer_hand) diff --git a/BlackJack_game/blackjack_simulate.py b/BlackJack_game/blackjack_simulate.py index ae1706f6888..078da247c79 100644 --- a/BlackJack_game/blackjack_simulate.py +++ b/BlackJack_game/blackjack_simulate.py @@ -46,7 +46,7 @@ class Card: def __init__(self, suit, rank, face=True): """ - :param suit: patter in the card + :param suit: pattern in the card :param rank: point in the card :param face: show or cover the face(point & pattern on it) """ diff --git a/BoardGame-CLI/python.py b/BoardGame-CLI/python.py index 40183159ec1..5a28f5adf6f 100644 --- a/BoardGame-CLI/python.py +++ b/BoardGame-CLI/python.py @@ -2,16 +2,35 @@ # Define the game board with snakes and ladders snakes_and_ladders = { - 2: 38, 7: 14, 8: 31, 15: 26, 16: 6, 21: 42, - 28: 84, 36: 44, 46: 25, 49: 11, 51: 67, 62: 19, - 64: 60, 71: 91, 74: 53, 78: 98, 87: 94, 89: 68, - 92: 88, 95: 75, 99: 80 + 2: 38, + 7: 14, + 8: 31, + 15: 26, + 16: 6, + 21: 42, + 28: 84, + 36: 44, + 46: 25, + 49: 11, + 51: 67, + 62: 19, + 64: 60, + 71: 91, + 74: 53, + 78: 98, + 87: 94, + 89: 68, + 92: 88, + 95: 75, + 99: 80, } + # Function to roll a six-sided die def roll_die(): return random.randint(1, 6) + # Function to simulate a single turn def take_turn(current_position, player_name): # Roll the die @@ -36,6 +55,7 @@ def take_turn(current_position, player_name): return new_position + # Main game loop def play_snakes_and_ladders(): player1_position = 1 @@ -65,5 +85,7 @@ def play_snakes_and_ladders(): elif player2_position == 100: print(f"{player2_name} won!") + # Start the game -play_snakes_and_ladders() +if __name__ == "__main__": + play_snakes_and_ladders() diff --git a/BoardGame-CLI/snakeLadder.py b/BoardGame-CLI/snakeLadder.py index d8892ed4339..7b434cca5d7 100644 --- a/BoardGame-CLI/snakeLadder.py +++ b/BoardGame-CLI/snakeLadder.py @@ -3,7 +3,7 @@ # Taking players data players = {} # stores players name their locations isReady = {} -current_loc = 1 # vaiable for iterating location +current_loc = 1 # variable for iterating location imp = True @@ -19,11 +19,11 @@ def player_input(): player_num = int(input("Enter the number of players: ")) if player_num > 0: for i in range(player_num): - name = input(f"Enter player {i+1} name: ") + name = input(f"Enter player {i + 1} name: ") players[name] = current_loc isReady[name] = False x = False - play() # play funtion call + play() # play function call else: print("Number of player cannot be zero") @@ -43,11 +43,11 @@ def play(): global imp while imp: - print("/"*20) + print("/" * 20) print("1 -> roll the dice (or enter)") print("2 -> start new game") print("3 -> exit the game") - print("/"*20) + print("/" * 20) for i in players: n = input("{}'s turn: ".format(i)) or 1 @@ -70,7 +70,7 @@ def play(): looproll = roll() temp1 += looproll print(f"you got {looproll} ") - if counter_6 == 3 : + if counter_6 == 3: temp1 -= 18 print("Three consectutives 6 got cancelled") print("") @@ -88,9 +88,9 @@ def play(): print(f"you are at position {players[i]}") elif n == 2: - players = {} # stores player ans their locations + players = {} # stores player and their locations isReady = {} - current_loc = 0 # vaiable for iterating location + current_loc = 1 # reset starting location to 1 player_input() elif n == 3: @@ -116,19 +116,19 @@ def move(a, i): # snake bite code def snake(c, i): - if (c == 32): + if c == 32: players[i] = 10 - elif (c == 36): + elif c == 36: players[i] = 6 - elif (c == 48): + elif c == 48: players[i] = 26 - elif (c == 63): + elif c == 63: players[i] = 18 - elif (c == 88): + elif c == 88: players[i] = 24 - elif (c == 95): + elif c == 95: players[i] = 56 - elif (c == 97): + elif c == 97: players[i] = 78 else: return players[i] @@ -141,21 +141,21 @@ def snake(c, i): def ladder(a, i): global players - if (a == 4): + if a == 4: players[i] = 14 - elif (a == 8): + elif a == 8: players[i] = 30 - elif (a == 20): + elif a == 20: players[i] = 38 - elif (a == 40): + elif a == 40: players[i] = 42 - elif (a == 28): + elif a == 28: players[i] = 76 - elif (a == 50): + elif a == 50: players[i] = 67 - elif (a == 71): + elif a == 71: players[i] = 92 - elif (a == 88): + elif a == 88: players[i] = 99 else: return players[i] @@ -165,9 +165,10 @@ def ladder(a, i): # while run: -print("/"*40) +print("/" * 40) print("Welcome to the snake ladder game !!!!!!!") -print("/"*40) +print("/" * 40) -player_input() +if __name__ == "__main__": + player_input() diff --git a/BoardGame-CLI/uno.py b/BoardGame-CLI/uno.py index 4f36372a5f8..dca5f1e10c1 100644 --- a/BoardGame-CLI/uno.py +++ b/BoardGame-CLI/uno.py @@ -1,15 +1,25 @@ # uno game # import random +from typing import List + """ Generate the UNO deck of 108 cards. -Parameters: None -Return values: deck=>list + +Doctest examples: + +>>> deck = buildDeck() +>>> len(deck) +108 +>>> sum(1 for c in deck if 'Wild' in c) +8 + +Return: list of card strings (e.g. 'Red 7', 'Wild Draw Four') """ -def buildDeck(): - deck = [] +def buildDeck() -> List[str]: + deck: List[str] = [] # example card:Red 7,Green 8, Blue skip colours = ["Red", "Green", "Yellow", "Blue"] values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "Draw Two", "Skip", "Reverse"] @@ -23,7 +33,6 @@ def buildDeck(): for i in range(4): deck.append(wilds[0]) deck.append(wilds[1]) - print(deck) return deck @@ -34,10 +43,9 @@ def buildDeck(): """ -def shuffleDeck(deck): - for cardPos in range(len(deck)): - randPos = random.randint(0, 107) - deck[cardPos], deck[randPos] = deck[randPos], deck[cardPos] +def shuffleDeck(deck: List[str]) -> List[str]: + # use Python's built-in shuffle which is efficient and correct + random.shuffle(deck) return deck @@ -47,10 +55,18 @@ def shuffleDeck(deck): """ -def drawCards(numCards): - cardsDrawn = [] +def drawCards(numCards: int) -> List[str]: + """ + Draw a number of cards from the top of the global `unoDeck`. + + Raises ValueError if the deck runs out of cards. + """ + cardsDrawn: List[str] = [] for x in range(numCards): - cardsDrawn.append(unoDeck.pop(0)) + try: + cardsDrawn.append(unoDeck.pop(0)) + except IndexError: + raise ValueError("The deck is empty; cannot draw more cards") return cardsDrawn @@ -61,7 +77,7 @@ def drawCards(numCards): """ -def showHand(player, playerHand): +def showHand(player: int, playerHand: List[str]) -> None: print("Player {}'s Turn".format(players_name[player])) print("Your Hand") print("------------------") @@ -79,7 +95,15 @@ def showHand(player, playerHand): """ -def canPlay(colour, value, playerHand): +def canPlay(colour: str, value: str, playerHand: List[str]) -> bool: + """ + Return True if any card in playerHand is playable on a discard with given colour and value. + + >>> canPlay('Red','5',['Red 3','Green 5']) + True + >>> canPlay('Blue','7',['Green 1']) + False + """ for card in playerHand: if "Wild" in card: return True @@ -88,99 +112,118 @@ def canPlay(colour, value, playerHand): return False +# --- Global deck and initial setup --- unoDeck = buildDeck() unoDeck = shuffleDeck(unoDeck) unoDeck = shuffleDeck(unoDeck) -discards = [] +discards: List[str] = [] -players_name = [] -players = [] +players_name: List[str] = [] +players: List[List[str]] = [] colours = ["Red", "Green", "Yellow", "Blue"] -numPlayers = int(input("How many players?")) -while numPlayers < 2 or numPlayers > 4: - numPlayers = int( - input("Invalid. Please enter a number between 2-4.\nHow many players?")) -for player in range(numPlayers): - players_name.append(input("Enter player {} name: ".format(player+1))) - players.append(drawCards(5)) - - -playerTurn = 0 -playDirection = 1 -playing = True -discards.append(unoDeck.pop(0)) -splitCard = discards[0].split(" ", 1) -currentColour = splitCard[0] -if currentColour != "Wild": - cardVal = splitCard[1] -else: - cardVal = "Any" - -while playing: - showHand(playerTurn, players[playerTurn]) - print("Card on top of discard pile: {}".format(discards[-1])) - if canPlay(currentColour, cardVal, players[playerTurn]): - cardChosen = int(input("Which card do you want to play?")) - while not canPlay(currentColour, cardVal, [players[playerTurn][cardChosen-1]]): - cardChosen = int( - input("Not a valid card. Which card do you want to play?")) - print("You played {}".format(players[playerTurn][cardChosen-1])) - discards.append(players[playerTurn].pop(cardChosen-1)) - - # cheak if player won - if len(players[playerTurn]) == 0: - playing = False - # winner = "Player {}".format(playerTurn+1) - winner = players_name[playerTurn] - else: - # cheak for special cards - splitCard = discards[-1].split(" ", 1) - currentColour = splitCard[0] - if len(splitCard) == 1: - cardVal = "Any" - else: - cardVal = splitCard[1] - if currentColour == "Wild": - for x in range(len(colours)): - print("{}) {}".format(x+1, colours[x])) - newColour = int( - input("What colour would you like to choose? ")) - while newColour < 1 or newColour > 4: - newColour = int( - input("Invalid option. What colour would you like to choose")) - currentColour = colours[newColour-1] - if cardVal == "Reverse": - playDirection = playDirection * -1 - elif cardVal == "Skip": - playerTurn += playDirection - if playerTurn >= numPlayers: - playerTurn = 0 - elif playerTurn < 0: - playerTurn = numPlayers-1 - elif cardVal == "Draw Two": - playerDraw = playerTurn+playDirection - if playerDraw == numPlayers: - playerDraw = 0 - elif playerDraw < 0: - playerDraw = numPlayers-1 - players[playerDraw].extend(drawCards(2)) - elif cardVal == "Draw Four": - playerDraw = playerTurn+playDirection - if playerDraw == numPlayers: - playerDraw = 0 - elif playerDraw < 0: - playerDraw = numPlayers-1 - players[playerDraw].extend(drawCards(4)) - print("") + + +def main() -> None: + """Run interactive UNO game (keeps original behavior). + + Note: main() is interactive and not exercised by doctest. + """ + global players_name, players, discards + + numPlayers = int(input("How many players?")) + while numPlayers < 2 or numPlayers > 4: + numPlayers = int( + input("Invalid. Please enter a number between 2-4.\nHow many players?") + ) + for player in range(numPlayers): + players_name.append(input("Enter player {} name: ".format(player + 1))) + players.append(drawCards(5)) + + playerTurn = 0 + playDirection = 1 + playing = True + discards.append(unoDeck.pop(0)) + splitCard = discards[0].split(" ", 1) + currentColour = splitCard[0] + if currentColour != "Wild": + cardVal = splitCard[1] else: - print("You can't play. You have to draw a card.") - players[playerTurn].extend(drawCards(1)) + cardVal = "Any" + + while playing: + showHand(playerTurn, players[playerTurn]) + print("Card on top of discard pile: {}".format(discards[-1])) + if canPlay(currentColour, cardVal, players[playerTurn]): + cardChosen = int(input("Which card do you want to play?")) + while not canPlay( + currentColour, cardVal, [players[playerTurn][cardChosen - 1]] + ): + cardChosen = int( + input("Not a valid card. Which card do you want to play?") + ) + print("You played {}".format(players[playerTurn][cardChosen - 1])) + discards.append(players[playerTurn].pop(cardChosen - 1)) + + # cheak if player won + if len(players[playerTurn]) == 0: + playing = False + # winner = "Player {}".format(playerTurn+1) + winner = players_name[playerTurn] + else: + # cheak for special cards + splitCard = discards[-1].split(" ", 1) + currentColour = splitCard[0] + if len(splitCard) == 1: + cardVal = "Any" + else: + cardVal = splitCard[1] + if currentColour == "Wild": + for x in range(len(colours)): + print("{}) {}".format(x + 1, colours[x])) + newColour = int(input("What colour would you like to choose? ")) + while newColour < 1 or newColour > 4: + newColour = int( + input( + "Invalid option. What colour would you like to choose" + ) + ) + currentColour = colours[newColour - 1] + if cardVal == "Reverse": + playDirection = playDirection * -1 + elif cardVal == "Skip": + playerTurn += playDirection + if playerTurn >= numPlayers: + playerTurn = 0 + elif playerTurn < 0: + playerTurn = numPlayers - 1 + elif cardVal == "Draw Two": + playerDraw = playerTurn + playDirection + if playerDraw == numPlayers: + playerDraw = 0 + elif playerDraw < 0: + playerDraw = numPlayers - 1 + players[playerDraw].extend(drawCards(2)) + elif cardVal == "Draw Four": + playerDraw = playerTurn + playDirection + if playerDraw == numPlayers: + playerDraw = 0 + elif playerDraw < 0: + playerDraw = numPlayers - 1 + players[playerDraw].extend(drawCards(4)) + print("") + else: + print("You can't play. You have to draw a card.") + players[playerTurn].extend(drawCards(1)) + + playerTurn += playDirection + if playerTurn >= numPlayers: + playerTurn = 0 + elif playerTurn < 0: + playerTurn = numPlayers - 1 + + print("Game Over") + print("{} is the Winner!".format(winner)) - playerTurn += playDirection - if playerTurn >= numPlayers: - playerTurn = 0 - elif playerTurn < 0: - playerTurn = numPlayers-1 -print("Game Over") -print("{} is the Winner!".format(winner)) +if __name__ == "__main__": + main() diff --git a/BrowserHistory/backend.py b/BrowserHistory/backend.py new file mode 100644 index 00000000000..2b39a255934 --- /dev/null +++ b/BrowserHistory/backend.py @@ -0,0 +1,103 @@ +class DLL: + """ + a doubly linked list that holds the current page, + next page, and previous page. + Used to enforce order in operations. + """ + + def __init__(self, val: str = None): + self.val = val + self.nxt = None + self.prev = None + + +class BrowserHistory: + """ + This class designs the operations of a browser history + + It works by using a doubly linked list to hold the urls with optimized + navigation using step counters and memory management + """ + + def __init__(self, homepage: str): + """ + Returns - None + Input - str + ---------- + - Initialize doubly linked list which will serve as the + browser history and sets the current page + - Initialize navigation counters + """ + self._head = DLL(homepage) + self._curr = self._head + self._back_count = 0 + self._forward_count = 0 + + def visit(self, url: str) -> None: + """ + Returns - None + Input - str + ---------- + - Adds the current url to the DLL + - Sets both the next and previous values + - Cleans up forward history to prevent memory leaks + - Resets forward count and increments back count + """ + # Clear forward history to prevent memory leaks + self._curr.nxt = None + self._forward_count = 0 + + # Create and link new node + url_node = DLL(url) + self._curr.nxt = url_node + url_node.prev = self._curr + + # Update current node and counts + self._curr = url_node + self._back_count += 1 + + def back(self, steps: int) -> str: + """ + Returns - str + Input - int + ---------- + - Moves backwards through history up to available steps + - Updates navigation counters + - Returns current page URL + """ + # Only traverse available nodes + steps = min(steps, self._back_count) + while steps > 0: + self._curr = self._curr.prev + steps -= 1 + self._back_count -= 1 + self._forward_count += 1 + return self._curr.val + + def forward(self, steps: int) -> str: + """ + Returns - str + Input - int + ---------- + - Moves forward through history up to available steps + - Updates navigation counters + - Returns current page URL + """ + # Only traverse available nodes + steps = min(steps, self._forward_count) + while steps > 0: + self._curr = self._curr.nxt + steps -= 1 + self._forward_count -= 1 + self._back_count += 1 + return self._curr.val + + +if __name__ == "__main__": + obj = BrowserHistory("google.com") + obj.visit("twitter.com") + param_2 = obj.back(1) + param_3 = obj.forward(1) + + print(param_2) + print(param_3) diff --git a/BrowserHistory/rock_paper_scissors.py b/BrowserHistory/rock_paper_scissors.py new file mode 100644 index 00000000000..c6fb00102d6 --- /dev/null +++ b/BrowserHistory/rock_paper_scissors.py @@ -0,0 +1,48 @@ +""" +Rock, Paper, Scissors Game (CLI Version) +Author: Your Name +""" + +import random + + +def get_user_choice(): + """Prompt the user to enter their choice.""" + choice = input("Enter your choice (rock, paper, scissors): ").lower() + if choice in ["rock", "paper", "scissors"]: + return choice + else: + print("Invalid choice! Please enter rock, paper, or scissors.") + return get_user_choice() + + +def get_computer_choice(): + """Randomly select computer's choice.""" + options = ["rock", "paper", "scissors"] + return random.choice(options) + + +def decide_winner(player, computer): + """Decide the winner based on the choices.""" + if player == computer: + return "It's a draw!" + elif ( + (player == "rock" and computer == "scissors") + or (player == "paper" and computer == "rock") + or (player == "scissors" and computer == "paper") + ): + return "You win!" + else: + return "Computer wins!" + + +def main(): + """Main function to play the game.""" + user_choice = get_user_choice() + computer_choice = get_computer_choice() + print(f"Computer chose: {computer_choice}") + print(decide_winner(user_choice, computer_choice)) + + +if __name__ == "__main__": + main() diff --git a/BrowserHistory/tests/test_browser_history.py b/BrowserHistory/tests/test_browser_history.py new file mode 100644 index 00000000000..b1e0af744f7 --- /dev/null +++ b/BrowserHistory/tests/test_browser_history.py @@ -0,0 +1,93 @@ +import unittest +import sys +import os + +# Add parent directory to path to import backend +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +from backend import BrowserHistory + + +class TestBrowserHistory(unittest.TestCase): + def setUp(self): + """Set up test cases""" + self.browser = BrowserHistory("homepage.com") + + def test_initialization(self): + """Test proper initialization of BrowserHistory""" + self.assertEqual(self.browser._curr.val, "homepage.com") + self.assertEqual(self.browser._back_count, 0) + self.assertEqual(self.browser._forward_count, 0) + self.assertIsNone(self.browser._curr.nxt) + self.assertIsNone(self.browser._curr.prev) + + def test_visit(self): + """Test visit functionality and forward history cleanup""" + self.browser.visit("page1.com") + self.assertEqual(self.browser._curr.val, "page1.com") + self.assertEqual(self.browser._back_count, 1) + self.assertEqual(self.browser._forward_count, 0) + + # Test forward history cleanup + self.browser.visit("page2.com") + self.browser.back(1) + self.browser.visit("page3.com") # Should clear forward history + self.assertIsNone(self.browser._curr.nxt) + self.assertEqual(self.browser._forward_count, 0) + + def test_back_navigation(self): + """Test back navigation with counter validation""" + # Setup history + self.browser.visit("page1.com") + self.browser.visit("page2.com") + + # Test normal back navigation + result = self.browser.back(1) + self.assertEqual(result, "page1.com") + self.assertEqual(self.browser._back_count, 1) + self.assertEqual(self.browser._forward_count, 1) + + # Test back with more steps than available + result = self.browser.back(5) # Should only go back 1 step + self.assertEqual(result, "homepage.com") + self.assertEqual(self.browser._back_count, 0) + self.assertEqual(self.browser._forward_count, 2) + + def test_forward_navigation(self): + """Test forward navigation with counter validation""" + # Setup history and position + self.browser.visit("page1.com") + self.browser.visit("page2.com") + self.browser.back(2) # Go back to homepage + + # Test normal forward navigation + result = self.browser.forward(1) + self.assertEqual(result, "page1.com") + self.assertEqual(self.browser._forward_count, 1) + self.assertEqual(self.browser._back_count, 1) + + # Test forward with more steps than available + result = self.browser.forward(5) # Should only go forward remaining 1 step + self.assertEqual(result, "page2.com") + self.assertEqual(self.browser._forward_count, 0) + self.assertEqual(self.browser._back_count, 2) + + def test_complex_navigation(self): + """Test complex navigation patterns""" + self.browser.visit("page1.com") + self.browser.visit("page2.com") + self.browser.visit("page3.com") + + # Back navigation + self.assertEqual(self.browser.back(2), "page1.com") + + # New visit should clear forward history + self.browser.visit("page4.com") + self.assertEqual(self.browser._forward_count, 0) + self.assertIsNone(self.browser._curr.nxt) + + # Verify we can't go forward to cleared history + self.assertEqual(self.browser.forward(1), "page4.com") + + +if __name__ == "__main__": + unittest.main() diff --git a/BruteForce.py b/BruteForce.py index 46b17844e26..eee2b7b7465 100644 --- a/BruteForce.py +++ b/BruteForce.py @@ -2,17 +2,14 @@ def findPassword(chars, function, show=50, format_="%s"): - password = None attempts = 0 size = 1 stop = False while not stop: - # Obtém todas as combinações possíveis com os dígitos do parâmetro "chars". for pw in product(chars, repeat=size): - password = "".join(pw) # Imprime a senha que será tentada. @@ -56,7 +53,6 @@ def getChars(): # Para realizar o teste, o usuário deverá inserir uma senha para ser encontrada. if __name__ == "__main__": - import datetime import time diff --git a/CSV_file.py b/CSV_file.py new file mode 100644 index 00000000000..ba7e4154b93 --- /dev/null +++ b/CSV_file.py @@ -0,0 +1,16 @@ +import pandas as pd + +# loading the dataset + +df = pd.read_csv( + r"c:\PROJECT\Drug_Recommendation_System\drug_recommendation_system\Drugs_Review_Datasets.csv" +) + +print(df) # prints Dataset +# funtions +print(df.tail()) +print(df.head()) +print(df.info()) +print(df.describe()) +print(df.column) +print(df.shape()) diff --git a/Caesar Cipher Encoder & Decoder.py b/Caesar Cipher Encoder & Decoder.py index 63097b39e17..0db15ae6911 100644 --- a/Caesar Cipher Encoder & Decoder.py +++ b/Caesar Cipher Encoder & Decoder.py @@ -6,6 +6,7 @@ # Improved by: OfficialAhmed (https://github.com/OfficialAhmed) + def get_int() -> int: """ Get integer, otherwise redo @@ -19,13 +20,12 @@ def get_int() -> int: return key -def main(): +def main(): print("[>] CAESAR CIPHER DECODER!!! \n") print("[1] Encrypt\n[2] Decrypt") match input("Choose one of the above(example for encode enter 1): "): - case "1": encode() @@ -38,13 +38,11 @@ def main(): def encode(): - encoded_cipher = "" text = input("Enter text to encode: ") key = get_int() - + for char in text: - ascii = ord(char) + key encoded_cipher += chr(ascii) @@ -52,7 +50,6 @@ def encode(): def decode(): - decoded_cipher = "" cipher = input("\n[>] Enter your cipher text: ") key = get_int() @@ -64,5 +61,5 @@ def decode(): print(decoded_cipher) -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/Calculate resistance.py b/Calculate resistance.py index 10c7a5ad3e2..06dff0b5723 100644 --- a/Calculate resistance.py +++ b/Calculate resistance.py @@ -1,12 +1,18 @@ def res(R1, R2): - sum = R1 + R2 - if (option =="series"): - return sum - else: - return (R1 * R2)/(R1 + R2) + sum = R1 + R2 + if option == "series": + return sum + elif option == "parallel": + return (R1 * R2) / sum + return 0 + + Resistance1 = int(input("Enter R1 : ")) Resistance2 = int(input("Enter R2 : ")) -option = str(input("Enter series or parallel :")) +option = input("Enter series or parallel :") print("\n") -R = res(Resistance1,Resistance2 ) -print("The total resistance is", R) +R = res(Resistance1, Resistance2) +if R == 0: + print("Wrong Input!!") +else: + print("The total resistance is", R) diff --git a/Calendar (GUI).py b/Calendar (GUI).py index 1649a78785d..648f60bff9f 100644 --- a/Calendar (GUI).py +++ b/Calendar (GUI).py @@ -7,6 +7,7 @@ # Function + def text(): month_int = int(month.get()) year_int = int(year.get()) diff --git a/Cat/cat.py b/Cat/cat.py index 552ed6c1e7a..0c9ba120255 100644 --- a/Cat/cat.py +++ b/Cat/cat.py @@ -20,8 +20,10 @@ David Costell (DontEatThemCookies on GitHub) v2 - 03/12/2022 """ + import sys + def with_files(files): """Executes when file(s) is/are specified.""" try: @@ -35,6 +37,7 @@ def with_files(files): for contents in file_contents: sys.stdout.write(contents) + def no_files(): """Executes when no file(s) is/are specified.""" try: @@ -47,6 +50,7 @@ def no_files(): except EOFError: exit() + def main(): """Entry point of the cat program.""" # Read the arguments passed to the program @@ -55,5 +59,6 @@ def main(): else: with_files(sys.argv[1:]) + if __name__ == "__main__": main() diff --git a/Checker_game_by_dz/first.py b/Checker_game_by_dz/first.py index 55c572e3629..c39d5acef8b 100644 --- a/Checker_game_by_dz/first.py +++ b/Checker_game_by_dz/first.py @@ -10,12 +10,13 @@ from modules.checker_board import * from modules.checker import * -# static variables for this perticular file +# static variables for this particular file fps = 60 WIN = pg.display.set_mode((st.width, st.height)) pg.display.set_caption("Checkers") + # get row and col for mouse def get_row_col_mouse(pos): x, y = pos @@ -26,7 +27,6 @@ def get_row_col_mouse(pos): # main function if __name__ == "__main__": - # represents the game run = True diff --git a/Checker_game_by_dz/modules/__init__.py b/Checker_game_by_dz/modules/__init__.py index 78dc4841952..e9ab55df80d 100644 --- a/Checker_game_by_dz/modules/__init__.py +++ b/Checker_game_by_dz/modules/__init__.py @@ -1,4 +1,4 @@ """ -Auhtor : Dhruv B Kakadiya +Author : Dhruv B Kakadiya """ diff --git a/Checker_game_by_dz/modules/checker_board.py b/Checker_game_by_dz/modules/checker_board.py index b14df11b360..0e8615ee292 100644 --- a/Checker_game_by_dz/modules/checker_board.py +++ b/Checker_game_by_dz/modules/checker_board.py @@ -7,6 +7,7 @@ from .statics import * from .pieces import * + # checker board creation class checker_board: def __init__(self): diff --git a/Checker_game_by_dz/modules/pieces.py b/Checker_game_by_dz/modules/pieces.py index 2a0b2de413f..3298836e1a6 100644 --- a/Checker_game_by_dz/modules/pieces.py +++ b/Checker_game_by_dz/modules/pieces.py @@ -8,7 +8,6 @@ class pieces: - padding = 17 outline = 2 diff --git a/Chrome Dino Automater.py b/Chrome Dino Automater.py index eca256a1202..60cb1e409be 100644 --- a/Chrome Dino Automater.py +++ b/Chrome Dino Automater.py @@ -1,5 +1,5 @@ import pyautogui # pip install pyautogui -from PIL import Image, ImageGrab # pip install pillow +from PIL import ImageGrab # pip install pillow # from numpy import asarray import time @@ -11,7 +11,6 @@ def hit(key): def isCollide(data): - # for cactus for i in range(329, 425): for j in range(550, 650): diff --git a/CliYoutubeDownloader.py b/CliYoutubeDownloader.py index 7b9d3d4bf1d..a177b65b891 100644 --- a/CliYoutubeDownloader.py +++ b/CliYoutubeDownloader.py @@ -67,7 +67,7 @@ def download(self): def onProgress(stream=None, chunk=None, remaining=None): file_downloaded = file_size - (remaining / 1000000) print( - f"downloading ... {file_downloaded/file_size*100:0.2f} % [{file_downloaded:.1f}MB of {file_size:.1f}MB]", + f"downloading ... {file_downloaded / file_size * 100:0.2f} % [{file_downloaded:.1f}MB of {file_size:.1f}MB]", end="\r", ) diff --git a/CliYoutubeDownloader/CliYoutubeDownloader.py b/CliYoutubeDownloader/CliYoutubeDownloader.py index 81c35a81ad8..63a7d5fb84b 100644 --- a/CliYoutubeDownloader/CliYoutubeDownloader.py +++ b/CliYoutubeDownloader/CliYoutubeDownloader.py @@ -1,12 +1,12 @@ # libraraies -import pytube import sys +import pytube class YouTubeDownloder: def __init__(self): - self.url = str(input("Enter the url of video : ")) + self.url = str(input("Enter the URL of video : ")) self.youtube = pytube.YouTube( self.url, on_progress_callback=YouTubeDownloder.onProgress ) @@ -28,14 +28,14 @@ def showStreams(self): self.chooseStream() def chooseStream(self): - self.choose = int(input("please select one : ")) + self.choose = int(input("Please select one : ")) self.validateChooseValue() def validateChooseValue(self): if self.choose in range(1, self.streamNo): self.getStream() else: - print("please enter a correct option on the list.") + print("Please enter a correct option on the list.") self.chooseStream() def getStream(self): @@ -49,7 +49,7 @@ def getFileSize(self): def getPermisionToContinue(self): print( - "\n title : {0} \n author : {1} \n size : {2:.2f}MB \n resolution : {3} \n fps : {4} \n ".format( + "\n Title : {0} \n Author : {1} \n Size : {2:.2f}MB \n Resolution : {3} \n FPS : {4} \n ".format( self.youtube.title, self.youtube.author, file_size, @@ -57,7 +57,7 @@ def getPermisionToContinue(self): self.stream.fps, ) ) - if input("do you want it ?(defualt = (y)es) or (n)o ") == "n": + if input("Do you want it ?(default = (y)es) or (n)o ") == "n": self.showStreams() else: self.main() @@ -69,7 +69,7 @@ def download(self): def onProgress(stream=None, chunk=None, remaining=None): file_downloaded = file_size - (remaining / 1000000) print( - f"downloading ... {file_downloaded/file_size*100:0.2f} % [{file_downloaded:.1f}MB of {file_size:.1f}MB]", + f"Downloading ... {file_downloaded / file_size * 100:0.2f} % [{file_downloaded:.1f}MB of {file_size:.1f}MB]", end="\r", ) diff --git a/CliYoutubeDownloader/requirements.txt b/CliYoutubeDownloader/requirements.txt index cd5e770101f..30257302458 100644 --- a/CliYoutubeDownloader/requirements.txt +++ b/CliYoutubeDownloader/requirements.txt @@ -1 +1 @@ -pytube +pytube \ No newline at end of file diff --git a/Collatz Sequence/Collatz Sequence.py b/Collatz Sequence/Collatz Sequence.py new file mode 100644 index 00000000000..ef59796263e --- /dev/null +++ b/Collatz Sequence/Collatz Sequence.py @@ -0,0 +1,24 @@ +def collatz_sequence(n): + """Generate and print the Collatz sequence for n.""" + steps = [n] + while n != 1: + if n % 2 == 0: + n = n // 2 + else: + n = 3 * n + 1 + steps.append(n) + return steps + + +# --- Main Program --- +try: + num = int(input("Enter a positive integer: ")) + if num <= 0: + print("Please enter a positive number greater than 0.") + else: + sequence = collatz_sequence(num) + print("\nCollatz sequence:") + for i, value in enumerate(sequence, start=1): + print(f"Step {i}: {value}") +except ValueError: + print("Invalid input! Please enter an integer.") diff --git a/Colors/multicoloredline.py b/Colors/multicoloredline.py index 09f5361e990..e0d0d062cd7 100644 --- a/Colors/multicoloredline.py +++ b/Colors/multicoloredline.py @@ -1,8 +1,52 @@ -## This script prints a multicolored line -# quo can be installed using pip - -from quo.console import Console +from rich.console import Console +from rich.syntax import Syntax +from rich.progress import Progress, SpinnerColumn, BarColumn, TextColumn +from rich.table import Table +import time +import json console = Console() -console.rule(multiclored=True) +# Fancy separator +console.rule("[bold]Welcome to Rich Terminal[/bold]", style="rainbow") + +# Define some JSON data +json_data = {"message": "Hello, World!", "status": "success", "code": 200} + +# Print JSON with syntax highlighting +syntax = Syntax( + json.dumps(json_data, indent=4), "json", theme="monokai", line_numbers=True +) +console.print(syntax) + +# Simulating a progress bar +console.print("\n[bold cyan]Processing data...[/bold cyan]\n") + +with Progress( + SpinnerColumn(), + TextColumn("[progress.description]{task.description}"), + BarColumn(), + TextColumn("{task.percentage:>3.0f}%"), + console=console, +) as progress: + task = progress.add_task("[cyan]Loading...", total=100) + for _ in range(100): + time.sleep(0.02) + progress.update(task, advance=1) + +# Create a rich table +console.print("\n[bold magenta]Results Summary:[/bold magenta]\n") + +table = Table(title="System Report", show_header=True, header_style="bold cyan") +table.add_column("Metric", style="bold yellow") +table.add_column("Value", justify="right", style="bold green") + +table.add_row("CPU Usage", "12.5%") +table.add_row("Memory Usage", "68.3%") +table.add_row("Disk Space", "45.7% free") + +console.print(table) + +# Success message +console.print("\n[bold green]🎉 Process completed successfully![/bold green]\n") +console.rule(style="rainbow") diff --git a/Colors/pixel_sort.py b/Colors/pixel_sort.py index 3c3c06ea616..f6fa4d56507 100644 --- a/Colors/pixel_sort.py +++ b/Colors/pixel_sort.py @@ -30,6 +30,7 @@ total = 0 dict, final, img_list = {}, [], [] + # Create dataframe and save it as an excel file def createDataSet(val=0, data=[]): global dict @@ -43,7 +44,7 @@ def createDataSet(val=0, data=[]): # Generating colors for each row of the frame def generateColors(c_sorted, frame, row): global df, img_list - height = 25 + height = 15 img = np.zeros((height, len(c_sorted), 3), np.uint8) for x in range(0, len(c_sorted)): r, g, b = c_sorted[x][0] * 255, c_sorted[x][1] * 255, c_sorted[x][2] * 255 diff --git a/Colors/primary_colors.py b/Colors/primary_colors.py index 107056fbd7d..e86c0154d52 100644 --- a/Colors/primary_colors.py +++ b/Colors/primary_colors.py @@ -14,7 +14,6 @@ def simpleColor(r, g, b): try: # ROJO -------------------------------------------------- if r > g and r > b: - rg = diff(r, g) # distancia rojo a verde rb = diff(r, b) # distancia rojo a azul @@ -84,7 +83,6 @@ def simpleColor(r, g, b): if r > b: # ROJO > AZUL if gr < gb: # Verde con Rojo - if rb >= 150 and gr <= 20: return "AMARILLO" else: @@ -94,7 +92,6 @@ def simpleColor(r, g, b): elif r < b: # AZUL > ROJO if gb < gr: # Verde con Azul - if gb <= 20: return "TURQUESA" else: @@ -167,7 +164,6 @@ def simpleColor(r, g, b): return "GRIS" except: - return "Not Color" diff --git a/Colors/print_colors.py b/Colors/print_colors.py index edf78440a22..dedd96c028c 100644 --- a/Colors/print_colors.py +++ b/Colors/print_colors.py @@ -14,7 +14,6 @@ def printc(color, message): print(color + message + colors.ENDC) -# color which we print or import printc(colors.CYAN, sys.argv[1]) printc(colors.GREEN, sys.argv[1]) printc(colors.YELLOW, sys.argv[1]) diff --git a/Compression_Analysis/PSNR.py b/Compression_Analysis/PSNR.py index b3148c64c77..08b5b853d4d 100644 --- a/Compression_Analysis/PSNR.py +++ b/Compression_Analysis/PSNR.py @@ -16,7 +16,7 @@ def calculate(img): def main(): - # Loading images (orignal image and compressed image) + # Loading images (original image and compressed image) orignal_image = cv2.imread("orignal_image.png", 1) compressed_image = cv2.imread("compressed_image.png", 1) diff --git a/CountMillionCharacter.py b/CountMillionCharacter.py index c1aa7825a19..a5c7bac77e2 100644 --- a/CountMillionCharacter.py +++ b/CountMillionCharacter.py @@ -6,9 +6,10 @@ Credit to William J. Turkel and Adam Crymble for the word frequency code used below. I just merged the two ideas. """ + import re -pattern = re.compile("\W") # re is used to compile the expression more than once +pattern = re.compile(r"\W") # re is used to compile the expression more than once # wordstring consisting of a million characters wordstring = """SCENE I. Yorkshire. Gaultree Forest. Enter the ARCHBISHOP OF YORK, MOWBRAY, LORD HASTINGS, and others diff --git a/Crack_password.py b/Crack_password.py index b32af07afd6..986ced1b1bb 100644 --- a/Crack_password.py +++ b/Crack_password.py @@ -1,11 +1,65 @@ from random import * + user_pass = input("Enter your password: ") -password = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't','u','v','w', 'x', 'y', 'z',] +password = [ + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", +] guess = "" -while (guess != user_pass): +while guess != user_pass: guess = "" for letter in range(len(user_pass)): - guess_letter = password[randint(0, 25)] + guess_letter = password[randint(0, 51)] guess = str(guess_letter) + str(guess) print(guess) -print("Your password is",guess) +print("Your password is", guess) diff --git a/Day_of_week.py b/Day_of_week.py index f0f9fd6f3b5..c9c36bfada2 100644 --- a/Day_of_week.py +++ b/Day_of_week.py @@ -12,9 +12,9 @@ def process_date(user_input): def find_day(date): - born = datetime.datetime.strptime( - date, "%d %m %Y" - ).weekday() # this statement returns an integer corresponding to the day of the week + born = ( + datetime.datetime.strptime(date, "%d %m %Y").weekday() + ) # this statement returns an integer corresponding to the day of the week return calendar.day_name[ born ] # this statement returns the corresponding day name to the integer generated in the previous statement diff --git a/Decimal_To_Binary.py b/Decimal_To_Binary.py index a8e85097a14..a2a6fff5ec6 100644 --- a/Decimal_To_Binary.py +++ b/Decimal_To_Binary.py @@ -3,7 +3,6 @@ def dtbconverter(num): - whole = [] fractional = ["."] @@ -47,10 +46,10 @@ def dtbconverter(num): THis program accepts fractional values, the accuracy can be set below: """ + # Function to convert decimal number # to binary using recursion def DecimalToBinary(num): - if num > 1: DecimalToBinary(num // 2) print(num % 2, end="") @@ -58,7 +57,6 @@ def DecimalToBinary(num): # Driver Code if __name__ == "__main__": - # decimal value dec_val = 24 diff --git a/Differentiate_List.py b/Differentiate_List.py deleted file mode 100644 index 1c6dc3b629b..00000000000 --- a/Differentiate_List.py +++ /dev/null @@ -1,15 +0,0 @@ -# this code gives the numbers of integers, floats, and strings present in the list - - -a = ["Hello", 35, "b", 45.5, "world", 60] -i = f = s = 0 -for j in a: - if isinstance(j, int): - i = i + 1 - elif isinstance(j, float): - f = f + 1 - else: - s = s + 1 -print(f"Number of integers are: {i}") -print(f"Number of Floats are: {f}") -print(f"numbers of strings are: {s}") diff --git a/Divide Operator.py b/Divide Operator.py index 3e6468f6daf..7a2c8a2ed65 100644 --- a/Divide Operator.py +++ b/Divide Operator.py @@ -1,5 +1,5 @@ class DivisionOperation: - INT_MAX = float('inf') + INT_MAX = float("inf") def __init__(self, num1, num2): self.num1 = num1 diff --git a/Downloaded Files Organizer/obs.py b/Downloaded Files Organizer/obs.py index c084dfa15ec..1489f257041 100644 --- a/Downloaded Files Organizer/obs.py +++ b/Downloaded Files Organizer/obs.py @@ -1,6 +1,5 @@ def watcher(path): # python script to observe changes in a folder - import sys import time import os from watchdog.observers import Observer diff --git a/Droplistmenu/GamesCalender.py b/Droplistmenu/GamesCalender.py index 990a164bd93..48ff7c9d5a6 100644 --- a/Droplistmenu/GamesCalender.py +++ b/Droplistmenu/GamesCalender.py @@ -1,4 +1,3 @@ - from tkinter import * from tkcalendar import Calendar import tkinter as tk @@ -9,26 +8,21 @@ # Adjust size window.geometry("600x500") -gameList =["Game List:"] +gameList = ["Game List:"] + + # Change the label text def show(): - game = selected1.get() + " vs " + selected2.get()+" on "+cal.get_date() + game = selected1.get() + " vs " + selected2.get() + " on " + cal.get_date() gameList.append(game) - #print(gameList) + # print(gameList) gameListshow = "\n".join(gameList) - #print(gameList) + # print(gameList) label.config(text=gameListshow) # Dropdown menu options -options = [ - "Team 1", - "Team 2", - "Team 3", - "Team 4", - "Team 5", - "Team 6" -] +options = ["Team 1", "Team 2", "Team 3", "Team 4", "Team 5", "Team 6"] # datatype of menu text selected1 = StringVar() @@ -53,19 +47,16 @@ def show(): drop2.place(x=100, y=110) # Add Calendar -cal = Calendar(window, selectmode='day', - year=2022, month=12, - day=1) +cal = Calendar(window, selectmode="day", year=2022, month=12, day=1) cal.place(x=300, y=20) - # Create button, it will change label text -button = Button( window, text="Add to calender", command=show).place(x=100,y=200) +button = Button(window, text="Add to calendar", command=show).place(x=100, y=200) # Create Label label = Label(window, text=" ") label.place(x=150, y=250) -window.mainloop() \ No newline at end of file +window.mainloop() diff --git a/Eight_Puzzle_Solver/eight_puzzle.py b/Eight_Puzzle_Solver/eight_puzzle.py deleted file mode 100644 index 703df00b3e6..00000000000 --- a/Eight_Puzzle_Solver/eight_puzzle.py +++ /dev/null @@ -1,457 +0,0 @@ -# import sys -from collections import deque -from copy import deepcopy -from queue import PriorityQueue - -# import time -# from collections import Counter - - -class Node: - def __init__(self, state, depth=0, moves=None, optimizer=0): - """ - Parameters: - state: State of Puzzle - depth: Depth of State in Space Search Tree - moves: Moves List to reach this state from initial state - optimizer: Used for UCS Only - 0 - Manhattan Distance - 1 - Hamming Distance - 2 - Combination of 0 and 1 - - Returns: Node Object - """ - self.state = state - self.size = len(state) - self.depth = depth - self.optimizer = optimizer - if moves is None: - self.moves = list() - else: - self.moves = moves - - def getAvailableActions(self): - """ - Parameters: Current State - Returns: Available Actions for Current State - 0 - Left 1 - Right 2 - Top 3 - Bottom - Restrictions: state is self.size x self.size Array - """ - action = list() - for i in range(self.size): - for j in range(self.size): - if self.state[i][j] == 0: - if i > 0: - action.append(2) - if j > 0: - action.append(0) - if i < self.size - 1: - action.append(3) - if j < self.size - 1: - action.append(1) - return action - return action - - def getResultFromAction(self, action): - """ - Parameters: Current State , Action - Returns: Node with New State - Restrictions: Action will always be valid and state is self.size x self.size Array - """ - newstate = deepcopy(self.state) - newMoves = deepcopy(self.moves) - for i in range(self.size): - for j in range(self.size): - if newstate[i][j] == 0: - if action == 2: - newstate[i][j], newstate[i - 1][j] = ( - newstate[i - 1][j], - newstate[i][j], - ) - newMoves.append(2) - return Node( - newstate, - depth=self.depth + 1, - moves=newMoves, - optimizer=self.optimizer, - ) - if action == 3: - newstate[i][j], newstate[i + 1][j] = ( - newstate[i + 1][j], - newstate[i][j], - ) - newMoves.append(3) - return Node( - newstate, - depth=self.depth + 1, - moves=newMoves, - optimizer=self.optimizer, - ) - if action == 0: - newstate[i][j], newstate[i][j - 1] = ( - newstate[i][j - 1], - newstate[i][j], - ) - newMoves.append(0) - return Node( - newstate, - depth=self.depth + 1, - moves=newMoves, - optimizer=self.optimizer, - ) - if action == 1: - newstate[i][j], newstate[i][j + 1] = ( - newstate[i][j + 1], - newstate[i][j], - ) - newMoves.append(1) - return Node( - newstate, - depth=self.depth + 1, - moves=newMoves, - optimizer=self.optimizer, - ) - return None - - def isGoalState(self): - """ - Parameters: State - Returns: True if Goal State, otherwise False - Restrictions: State is self.size x self.size Array - """ - for i in range(self.size): - for j in range(self.size): - if i == j and j == self.size - 1: - continue - if self.state[i][j] != (i) * self.size + (j + 1): - return False - return True - - def getManhattanDistance(self): - """ - Parameters: State - Returns: Manhattan Distance between Current State and Goal State - Restrictions: State must be a self.size x self.size Array - """ - ans = 0 - for i in range(self.size): - for j in range(self.size): - if self.state[i][j] != 0: - ans = ( - ans - + abs((self.state[i][j] - 1) % self.size - j) - + abs((self.state[i][j] - 1) // self.size - i) - ) - - return ans - - def getHammingDistance(self): - ans = 0 - for i in range(self.size): - for j in range(self.size): - if self.state[i][j] != 0 and self.state[i][j] != i * 3 + (j + 1): - ans = ans + 1 - return ans - - def __hash__(self): - flatState = [j for sub in self.state for j in sub] - flatState = tuple(flatState) - return hash(flatState) - - def __gt__(self, other): - if self.optimizer == 0: - if self.getManhattanDistance() > other.getManhattanDistance(): - return True - else: - return False - elif self.optimizer == 1: - if self.getHammingDistance() > other.getHammingDistance(): - return True - else: - return False - elif self.optimizer == 2: - if ( - self.getHammingDistance() + self.getManhattanDistance() - > other.getHammingDistance() + self.getManhattanDistance() - ): - return True - else: - return False - return True - - def __ge__(self, other): - if self.optimizer == 0: - if self.getManhattanDistance() >= other.getManhattanDistance(): - return True - else: - return False - elif self.optimizer == 1: - if self.getHammingDistance() >= other.getHammingDistance(): - return True - else: - return False - elif self.optimizer == 2: - if ( - self.getHammingDistance() + self.getManhattanDistance() - >= other.getHammingDistance() + self.getManhattanDistance() - ): - return True - else: - return False - return True - - def __lt__(self, other): - if self.optimizer == 0: - if self.getManhattanDistance() < other.getManhattanDistance(): - return True - else: - return False - elif self.optimizer == 1: - if self.getHammingDistance() < other.getHammingDistance(): - return True - else: - return False - elif self.optimizer == 2: - if ( - self.getHammingDistance() + self.getManhattanDistance() - < other.getHammingDistance() + self.getManhattanDistance() - ): - return True - else: - return False - return True - - def __le__(self, other): - if self.optimizer == 0: - if self.getManhattanDistance() <= other.getManhattanDistance(): - return True - else: - return False - elif self.optimizer == 1: - if self.getHammingDistance() <= other.getHammingDistance(): - return True - else: - return False - elif self.optimizer == 2: - if ( - self.getHammingDistance() + self.getManhattanDistance() - <= other.getHammingDistance() + self.getManhattanDistance() - ): - return True - else: - return False - return True - - def __eq__(self, other): - if self.optimizer == 0: - if self.getManhattanDistance() == other.getManhattanDistance(): - return True - else: - return False - elif self.optimizer == 1: - if self.getHammingDistance() == other.getHammingDistance(): - return True - else: - return False - elif self.optimizer == 2: - if ( - self.getHammingDistance() + self.getManhattanDistance() - == other.getHammingDistance() + self.getManhattanDistance() - ): - return True - else: - return False - return True - - -class Solver: - def __init__(self, state): - self.state = state - - def isSolvable(self): - """ - Parameters: State - Returns: True if state is solvable, otherwise False - """ - flatState = [j for sub in self.state for j in sub] - inversions = 0 - for i in range(len(flatState) - 1): - for j in range(i + 1, len(flatState)): - if ( - flatState[i] != 0 - and flatState[j] != 0 - and flatState[i] > flatState[j] - ): - inversions = inversions + 1 - return inversions % 2 == 0 - - def breadth_first_search(self): - """ - Parameters: State - Returns: List of Moves to solve the state, otherwise None if unsolvable - """ - if self.isSolvable() == False: - return (None, None) - - closed = list() - q = deque() - q.append(Node(state=self.state, depth=0)) - while q: - node = q.popleft() - - if node.isGoalState(): - return (node.moves, len(closed)) - if node.state not in closed: - closed.append(node.state) - for action in node.getAvailableActions(): - q.append(node.getResultFromAction(action)) - - return (None, None) - - def depth_first_search(self): - """ - Parameters: State - Returns: List of Moves to solve the state, otherwise None if unsolvable - """ - if self.isSolvable() == False: - return (None, None) - closed = list() - q = list() - q.append(Node(state=self.state, depth=0)) - while q: - node = q.pop() - if node.isGoalState(): - return (node.moves, len(closed)) - if node.state not in closed: - closed.append(node.state) - for action in node.getAvailableActions(): - q.append(node.getResultFromAction(action)) - - return (None, None) - - def uniform_cost_search(self, optimizer=0): - """ - Parameters: State, Optimizer - Returns: List of Moves to solve the state, otherwise None if unsolvable - """ - if self.isSolvable() == False: - return (None, None) - closed = list() - q = PriorityQueue() - q.put(Node(state=self.state, depth=0, optimizer=optimizer)) - while q: - node = q.get() - if node.isGoalState(): - return (node.moves, len(closed)) - if node.state not in closed: - closed.append(node.state) - for action in node.getAvailableActions(): - q.put(node.getResultFromAction(action)) - - return (None, None) - - def a_star(self): - """ - Parameters: State, Optimizer - Returns: List of Moves to solve the state, otherwise None if unsolvable - """ - if self.isSolvable() == False: - return (None, None) - closed = dict() - q = PriorityQueue() - node = Node(state=self.state, depth=0) - q.put((node.getManhattanDistance(), node)) - while q: - dist, node = q.get() - closed[node] = dist - if node.isGoalState(): - return (node.moves, len(closed)) - for action in node.getAvailableActions(): - nextNode = node.getResultFromAction(action) - nextDist = nextNode.getManhattanDistance() - if ( - nextNode not in closed - or nextNode.depth + nextDist < closed[nextNode] - ): - q.put((nextNode.depth + nextDist, nextNode)) - return (None, None) - - -def toWord(action): - """ - Parameters: List of moves - Returns: Returns List of moves in Word - """ - if action == 0: - return "Left" - if action == 1: - return "Right" - if action == 2: - return "Top" - if action == 3: - return "Bottom" - - -# initialState = [[1,8,4],[3,6,0],[2,7,5]] -# # [[1,2,3],[4,5,6],[0,7,8]] -# # [[6,8,5],[2,3,4],[1,0,7]] -# # [[13,11,10,7],[6,0,15,2],[14,1,8,12],[5,3,4,9]] -# # [[8,2,3],[4,6,5],[7,8,0]] -# solver = Solver(initialState) -# print("Initial State:- {}".format(initialState)) -# n = Node(state=initialState,depth=0) - -# print('-------------------------A Star--------------------------------') -# startTime = time.time() -# moves,nodesGenerated = solver.a_star() -# endTime = time.time() -# if moves is None: -# print("Given State is Unsolvable!") -# else: -# wordMoves = list(map(toWord,moves)) -# print("Nodes Generated:- {}".format(nodesGenerated)) -# print("No. of moves:- {}".format(len(moves))) -# print("Required Moves:- {}".format(wordMoves)) -# print("Execution Time:- {:.2f} ms".format((endTime-startTime)*1000)) - - -# print('-------------------------UCS--------------------------------') -# startTime = time.time() -# moves,nodesGenerated = solver.uniform_cost_search() -# endTime = time.time() -# if moves is None: -# print("Given State is Unsolvable!") -# else: -# wordMoves = list(map(toWord,moves)) -# print("Nodes Generated:- {}".format(nodesGenerated)) -# print("No. of moves:- {}".format(len(moves))) -# print("Required Moves:- {}".format(wordMoves)) -# print("Execution Time:- {:.2f} ms".format((endTime-startTime)*1000)) - - -# print('-------------------------BFS--------------------------------') -# startTime = time.time() -# moves,nodesGenerated = (solver.breadth_first_search()) -# endTime = time.time() -# if moves is None: -# print("Given State is Unsolvable!") -# else: -# wordMoves = list(map(toWord,moves)) -# print("Nodes Generated:- {}".format(nodesGenerated)) -# print("No. of moves:- {}".format(len(moves))) -# print("Required Moves:- {}".format(wordMoves)) -# print("Execution Time:- {:.2f} ms".format((endTime-startTime)*1000)) - - -# print('-------------------------DFS--------------------------------') -# startTime = time.time() -# moves,nodesGenerated = (solver.depth_first_search()) -# endTime = time.time() -# if moves is None: -# print("Given State is Unsolvable!") -# else: -# wordMoves = list(map(toWord,moves)) -# print("Nodes Generated:- {}".format(nodesGenerated)) -# print("No. of moves:- {}".format(len(moves))) -# print("Required Moves:- {}".format(wordMoves)) -# print("Execution Time:- {:.2f} ms".format((endTime-startTime)*1000)) diff --git a/Electronics_Algorithms/resistance.py b/Electronics_Algorithms/resistance.py index c088732d90c..6af000278a5 100644 --- a/Electronics_Algorithms/resistance.py +++ b/Electronics_Algorithms/resistance.py @@ -1,69 +1,40 @@ -def resistance_calculator(material:str, lenght:float, section:float, temperature:float): - """ - material is a string indicating the material of the wire - - lenght is a floating value indicating the lenght of the wire in meters - - diameter is a floating value indicating the diameter of the wire in millimeters - - temperature is a floating value indicating the temperature at which the wire is operating in °C - - Available materials: - - silver - - copper - - aluminium - - tungsten - - iron - - steel - - zinc - - solder""" - - materials = { - "silver": { - "rho": 0.0163, - "coefficient": 0.0038 - }, - - "copper": { - "rho": 0.0178, - "coefficient": 0.00381 - }, - - "aluminium": { - "rho": 0.0284, - "coefficient": 0.004 - }, - - "tungsten": { - "rho": 0.055, - "coefficient": 0.0045 - }, - - "iron": { - "rho": 0.098, - "coefficient": 0.006 - }, - - "steel": { - "rho": 0.15, - "coefficient": 0.0047 - }, - - "zinc": { - "rho": 0.06, - "coefficient": 0.0037 - }, - - "solder": { - "rho": 0.12, - "coefficient": 0.0043 - } - } - - rho_20deg = materials[material]["rho"] - temp_coefficient = materials[material]["coefficient"] - - rho = rho_20deg * (1 + temp_coefficient * (temperature - 20)) - resistance = rho * lenght / section - - return f"{resistance}Ω" +def resistance_calculator( + material: str, length: float, section: float, temperature: float +): + """ + material is a string indicating the material of the wire + + length is a floating value indicating the length of the wire in meters + + diameter is a floating value indicating the diameter of the wire in millimeters + + temperature is a floating value indicating the temperature at which the wire is operating in °C + + Available materials: + - silver + - copper + - aluminium + - tungsten + - iron + - steel + - zinc + - solder""" + + materials = { + "silver": {"rho": 0.0163, "coefficient": 0.0038}, + "copper": {"rho": 0.0178, "coefficient": 0.00381}, + "aluminium": {"rho": 0.0284, "coefficient": 0.004}, + "tungsten": {"rho": 0.055, "coefficient": 0.0045}, + "iron": {"rho": 0.098, "coefficient": 0.006}, + "steel": {"rho": 0.15, "coefficient": 0.0047}, + "zinc": {"rho": 0.06, "coefficient": 0.0037}, + "solder": {"rho": 0.12, "coefficient": 0.0043}, + } + + rho_20deg = materials[material]["rho"] + temp_coefficient = materials[material]["coefficient"] + + rho = rho_20deg * (1 + temp_coefficient * (temperature - 20)) + resistance = rho * length / section + + return f"{resistance}Ω" diff --git a/Emoji Dictionary/QT_GUI.py b/Emoji Dictionary/QT_GUI.py new file mode 100644 index 00000000000..ef3f6f0cf40 --- /dev/null +++ b/Emoji Dictionary/QT_GUI.py @@ -0,0 +1,153 @@ +# -*- coding: utf-8 -*- + +import sys +from PyQt5.QtCore import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * +from PyQt5 import uic +from emoji import demojize +import os + + +class MainWindow(QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + + # Load the UI file + uic.loadUi(os.path.join(os.path.dirname(__file__), "QT_GUI.ui"), self) + self.pushButton_4.clicked.connect(self.close) + self.pushButton_2.clicked.connect(lambda: search_emoji()) + self.pushButton_3.clicked.connect(lambda: clear_text()) + cells = [ + [ + "🐒", + "🐕", + "🐎", + "🐪", + "🐁", + "🐘", + "🦘", + "🦈", + "🐓", + "🐝", + "👀", + "🦴", + "👩🏿", + "‍🤝", + "🧑", + "🏾", + "👱🏽", + "‍♀", + "🎞", + "🎨", + "⚽", + ], + [ + "🍕", + "🍗", + "🍜", + "☕", + "🍴", + "🍉", + "🍓", + "🌴", + "🌵", + "🛺", + "🚲", + "🛴", + "🚉", + "🚀", + "✈", + "🛰", + "🚦", + "🏳", + "‍🌈", + "🌎", + "🧭", + ], + [ + "🔥", + "❄", + "🌟", + "🌞", + "🌛", + "🌝", + "🌧", + "🧺", + "🧷", + "🪒", + "⛲", + "🗼", + "🕌", + "👁", + "‍🗨", + "💬", + "™", + "💯", + "🔕", + "💥", + "❤", + ], + ["😀", "🥰", "😴", "🤓", "🤮", "🤬", "😨", "🤑", "😫", "😎"], + ] + + def emoji_wight_btn(): + if self.emoji_widget.isVisible(): + self.emoji_widget.hide() + else: + self.emoji_widget.show() + + def search_emoji(): + word = self.lineEdit.text() + print(f"Field Text: {word}") + if word == "": + self.textEdit.setText("You have entered no emoji.") + else: + means = demojize(word) + self.textEdit.setText( + "Meaning of Emoji : " + + str(word) + + "\n\n" + + means.replace("::", ":\n: ") + ) + + def add_input_emoji(emoji): + self.lineEdit.setText(self.lineEdit.text() + emoji) + + def clear_text(): + self.lineEdit.setText("") + self.textEdit.setText("") + + self.emoji_buttons = [] + self.emoji_layout = QGridLayout() + self.emoji_widget = QWidget() + self.emoji_widget.setLayout(self.emoji_layout) + self.frame_2.layout().addWidget(self.emoji_widget) + self.emoji_widget.hide() + self.pushButton.clicked.connect(lambda: emoji_wight_btn()) + + for row_idx, row in enumerate(cells): + for col_idx, emoji in enumerate(row): + button = QPushButton(emoji) + button.setFixedSize(40, 40) + button.setFont(QFont("Arial", 20)) + button.setStyleSheet(""" + QPushButton { + background-color: #ffffff; + border: 1px solid #e0e0e0; + border-radius: 5px; + } + QPushButton:hover { + background-color: #f0f0f0; + } + """) + button.clicked.connect(lambda checked, e=emoji: add_input_emoji(e)) + self.emoji_layout.addWidget(button, row_idx, col_idx) + self.emoji_buttons.append(button) + + +if __name__ == "__main__": + app = QApplication(sys.argv) + window = MainWindow() + window.show() + sys.exit(app.exec_()) diff --git a/Emoji Dictionary/QT_GUI.ui b/Emoji Dictionary/QT_GUI.ui new file mode 100644 index 00000000000..49267698e80 --- /dev/null +++ b/Emoji Dictionary/QT_GUI.ui @@ -0,0 +1,411 @@ + + + MainWindow + + + + 0 + 0 + 944 + 638 + + + + MainWindow + + + background-color: #f0f2f5; + + + + background-color: transparent; + + + + 8 + + + 10 + + + 10 + + + 10 + + + 10 + + + + + background-color: #ffffff; + border-radius: 10px; + padding: 15px; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 30 + + + + color: #1a73e8; + padding: 10px; + + + EMOJI DICTIONARY + + + Qt::AlignCenter + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + background-color: transparent; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 20 + + + + color: #333333; + padding: 10px; + + + Enter any Emoji you want to search... + + + + + + + background-color: #ffffff; + border-radius: 8px; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 14 + 50 + false + + + + QLineEdit { + border: 1px solid #dcdcdc; + border-radius: 5px; + padding: 8px; + font-size: 14px; + background-color: #fafafa; + } + QLineEdit:focus { + border-color: #1a73e8; + background-color: #ffffff; + } + + + + + + + + + + true + + + + 14 + 62 + true + + + + QPushButton { + background-color: #1a73e8; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #1557b0; + } + QPushButton:pressed { + background-color: #104080; + } + + + Emoji Board + + + + + + + + + + background-color: transparent; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 14 + 62 + true + + + + QPushButton { + background-color: #34c759; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #2ea44f; + } + QPushButton:pressed { + background-color: #26833b; + } + + + 🔍 Search + + + + + + + + 14 + 62 + true + + + + QPushButton { + background-color: #ff3b30; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #cc2f27; + } + QPushButton:pressed { + background-color: #99231f; + } + + + 🧹 Clear + + + + + + + + + + + + + + 0 + 0 + + + + background-color: #ffffff; + border-radius: 10px; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 16 + 50 + false + + + + color: #333333; + padding-bottom: 10px; + + + Meaning... + + + + + + + + 14 + + + + + +QTextEdit { + border: 1px solid #dcdcdc; + border-radius: 5px; + padding: 10px; + font-size: 14px; + background-color: #fafafa; + } + QTextEdit:focus { + border-color: #1a73e8; + background-color: #ffffff; + } + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:14px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:7.8pt;"><br /></p></body></html> + + + + + + + + 140 + 40 + + + + + 14 + 62 + true + + + + QPushButton { + background-color: #ff9500; + color: white; + border-radius: 5px; + padding: 10px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #cc7700; + } + QPushButton:pressed { + background-color: #995900; + } + + + EXIT + + + + + + + + + + + + diff --git a/Emoji Dictionary/README.md b/Emoji Dictionary/README.md index bfeee397ad6..ef821174fce 100644 --- a/Emoji Dictionary/README.md +++ b/Emoji Dictionary/README.md @@ -10,6 +10,8 @@ - tkinter module - from tkinter messagebox module - emoji +- opencv + ### How this Script works : - User just need to download the file and run the emoji_dictionary.py on their local system. diff --git a/Emoji Dictionary/emoji_dictionary.py b/Emoji Dictionary/emoji_dictionary.py index 04949946c9c..043160a8a75 100644 --- a/Emoji Dictionary/emoji_dictionary.py +++ b/Emoji Dictionary/emoji_dictionary.py @@ -1,7 +1,6 @@ # Emoji Dictionary # ----------------------------------------------------------------------------------------------------- -import io # used for dealing with input and output from tkinter import * # importing the necessary libraries import tkinter.messagebox as mbox import tkinter as tk # imported tkinter as tk @@ -11,7 +10,6 @@ class Keypad(tk.Frame): - cells = [ ["😀", "🥰", "😴", "🤓", "🤮", "🤬", "😨", "🤑", "😫", "😎"], [ @@ -314,6 +312,7 @@ def on_inputentry_click(event): ) outputtxt.place(x=120, y=400) + # function for exiting def exit_win(): if mbox.askokcancel("Exit", "Do you want to exit?"): diff --git a/Emoji Dictionary/untitled.ui b/Emoji Dictionary/untitled.ui new file mode 100644 index 00000000000..a6753b7dd19 --- /dev/null +++ b/Emoji Dictionary/untitled.ui @@ -0,0 +1,406 @@ + + + MainWindow + + + + 0 + 0 + 948 + 527 + + + + MainWindow + + + background-color: #f0f2f5; + + + + background-color: transparent; + + + + 8 + + + 10 + + + 10 + + + 10 + + + 10 + + + + + background-color: #ffffff; + border-radius: 10px; + padding: 15px; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 30 + + + + color: #1a73e8; + padding: 10px; + + + EMOJI DICTIONARY + + + Qt::AlignCenter + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + background-color: transparent; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 20 + + + + color: #333333; + padding: 10px; + + + Enter any Emoji you want to search... + + + + + + + background-color: #ffffff; +border-radius: 8px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + -1 + + + + QLineEdit { + border: 1px solid #dcdcdc; + border-radius: 5px; + padding: 8px; + font-size: 14px; + background-color: #fafafa; + } + QLineEdit:focus { + border-color: #1a73e8; + background-color: #ffffff; + } + + + + + + + true + + + + -1 + 62 + true + + + + QPushButton { + background-color: #1a73e8; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #1557b0; + } + QPushButton:pressed { + background-color: #104080; + } + + + Emoji Board + + + + + + + + + + background-color: transparent; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + -1 + 62 + true + + + + QPushButton { + background-color: #34c759; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #2ea44f; + } + QPushButton:pressed { + background-color: #26833b; + } + + + 🔍 Search + + + + + + + + -1 + 62 + true + + + + QPushButton { + background-color: #ff3b30; + color: white; + border-radius: 5px; + padding: 8px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #cc2f27; + } + QPushButton:pressed { + background-color: #99231f; + } + + + 🧹 Clear + + + + + + + + + + + + + + 0 + 0 + + + + background-color: #ffffff; + border-radius: 10px; + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 16 + 50 + false + + + + color: #333333; +padding-bottom: 10px; + + + Meaning... + + + + + + + + -1 + + + + QTextEdit { + border: 1px solid #dcdcdc; + border-radius: 5px; + padding: 10px; + font-size: 14px; + background-color: #fafafa; + } + QTextEdit:focus { + border-color: #1a73e8; + background-color: #ffffff; + } + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:14px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:20pt;"><br /></p></body></html> + + + + + + + + 140 + 40 + + + + + -1 + 62 + true + + + + QPushButton { + background-color: #ff9500; + color: white; + border-radius: 5px; + padding: 10px; + font-size: 14px; + font-weight: 500; + } + QPushButton:hover { + background-color: #cc7700; + } + QPushButton:pressed { + background-color: #995900; + } + + + EXIT + + + + + + + + + + + + diff --git a/Encryption using base64.py b/Encryption using base64.py index a5d874e00e2..6e2bc924f1f 100644 --- a/Encryption using base64.py +++ b/Encryption using base64.py @@ -1,14 +1,15 @@ import base64 -#Encryption + +# Encryption message = input() -message_bytes = message.encode('ascii') +message_bytes = message.encode("ascii") base64_bytes = base64.b64encode(message_bytes) -base64_message = base64_bytes.decode('ascii') +base64_message = base64_bytes.decode("ascii") print(base64_message) -#Decryption -base64_bytes = base64_message.encode('ascii') +# Decryption +base64_bytes = base64_message.encode("ascii") message_bytes = base64.b64decode(base64_bytes) -message = message_bytes.decode('ascii') +message = message_bytes.decode("ascii") print(message) diff --git a/ExtractThumbnailFromVideo/extract_thumbnail_from_video.py b/ExtractThumbnailFromVideo/extract_thumbnail_from_video.py index 76ca3b43eb7..c7ecd32ef75 100644 --- a/ExtractThumbnailFromVideo/extract_thumbnail_from_video.py +++ b/ExtractThumbnailFromVideo/extract_thumbnail_from_video.py @@ -1,6 +1,7 @@ import cv2 import os + def extract_thumbnail(video_path, frame_size): """ Extracts a thumbnail frame from a video and saves it as an image file. @@ -18,22 +19,30 @@ def extract_thumbnail(video_path, frame_size): Example: extract_thumbnail('my_video.mp4', (320, 240)) - + Required Packages: cv2 (pip install cv2) - + This function is useful for generating thumbnail images from videos. """ video_capture = cv2.VideoCapture(video_path) # Open the video file for reading - total_frames = int(video_capture.get(cv2.CAP_PROP_FRAME_COUNT)) # Get the total number of frames in the video + total_frames = int( + video_capture.get(cv2.CAP_PROP_FRAME_COUNT) + ) # Get the total number of frames in the video middle_frame_index = total_frames // 2 # Calculate the index of the middle frame - video_capture.set(cv2.CAP_PROP_POS_FRAMES, middle_frame_index) # Seek to the middle frame + video_capture.set( + cv2.CAP_PROP_POS_FRAMES, middle_frame_index + ) # Seek to the middle frame success, frame = video_capture.read() # Read the middle frame video_capture.release() # Release the video capture object if success: - frame = cv2.resize(frame, frame_size) # Resize the frame to the specified dimensions + frame = cv2.resize( + frame, frame_size + ) # Resize the frame to the specified dimensions thumbnail_filename = f"{os.path.basename(video_path)}_thumbnail.jpg" # Create a filename for the thumbnail cv2.imwrite(thumbnail_filename, frame) # Save the thumbnail frame as an image else: - raise Exception("Could not extract frame") # Raise an exception if frame extraction fails + raise Exception( + "Could not extract frame" + ) # Raise an exception if frame extraction fails diff --git a/FIND FACTORIAL OF A NUMBER.py b/FIND FACTORIAL OF A NUMBER.py index 37bc7cd8c01..2ad83891877 100644 --- a/FIND FACTORIAL OF A NUMBER.py +++ b/FIND FACTORIAL OF A NUMBER.py @@ -1,13 +1,18 @@ # Python program to find the factorial of a number provided by the user. + def factorial(n): - if n < 0: # factorial of number less than 0 is not possible - return "Oops!Factorial Not Possible" - elif n == 0: # 0! = 1; when n=0 it returns 1 to the function which is calling it previously. - return 1 - else: - return n*factorial(n-1) -#Recursive function. At every iteration "n" is getting reduced by 1 until the "n" is equal to 0. - -n = int(input("Enter a number: ")) # asks the user for input -print(factorial(n)) # function call + if n < 0: # factorial of number less than 0 is not possible + return "Oops!Factorial Not Possible" + elif ( + n == 0 + ): # 0! = 1; when n=0 it returns 1 to the function which is calling it previously. + return 1 + else: + return n * factorial(n - 1) + + +# Recursive function. At every iteration "n" is getting reduced by 1 until the "n" is equal to 0. + +n = int(input("Enter a number: ")) # asks the user for input +print(factorial(n)) # function call diff --git a/FTP in python b/FTP in python deleted file mode 100644 index 60cf2c2458f..00000000000 --- a/FTP in python +++ /dev/null @@ -1,182 +0,0 @@ - How to use FTP in Python -Overview -This article will show how you can use FTP in Python with the help of the -ftplib module. -Ftplib -The ftplib module in Python allows you to write Python programs that perform a -variety of automated FTP jobs. You can easily connect to a FTP server to retrieve -files and process them locally. - -To use the ftplib module in Python, you first have to import it into your script. -Open a Connection -To "open" a connection to the FTP Server, you have to create the object. - -Once the connection is made (opened), you can use the methods in the ftplib -module. - -Several methods are available in two flavors: one for handling text files and -another for binary files. - -You can easily navigate the directory structure, manage and download files. -How do I use it? -This program will first connect to a FTP server (ftp.cwi.nl) and then list the -files and directories in the FTP server root directory using the LIST() method. -from ftplib import FTP - -ftp = FTP('ftp.cwi.nl') # connect to host, default port - -ftp.login() # user anonymous, passwd anonymous@ - -ftp.retrlines('LIST') # list directory contents -Our second program opens a connection to 'ftp.sunet.se' as the user 'anonymous' -with an email address of 'anonymous@sunet.se' - -It then lists the files and directories on the FTP server by using the dir() -method. - -The output is saved to the 'files' variable. - -I then use print to see the files on screen. - -If I want I to change directory I would just use ftp.cwd(path) to do so. - -To close the FTP connection, use the quit() method. -import ftplib - -ftp = ftplib.FTP('ftp.sunet.se', 'anonymous', 'anonymous@sunet.se') - -print "File List: " - -files = ftp.dir() - -print files - -ftp.cwd("/pub/unix") #changing to /pub/unix -Common FTP Methods -FTP.connect(host[, port[, timeout]]) - -Connect to the given host and port. - -The default port number is 21, as specified by the FTP protocol specification. - -It is rarely needed to specify a different port number. - -This function should be called only once for each instance - -It should not be called at all if a host was given when the instance was created. - -All other methods can only be used after a connection -has been made. - -The optional timeout parameter specifies a timeout in seconds for the connection -attempt. - -If no timeout is passed, the global default timeout setting will be used. -FTP.getwelcome() - -Return the welcome message sent by the server in reply to the initial connection. - -This message sometimes contains disclaimers or help information that may be -relevant to the user -FTP.login([user[, passwd[, acct]]]) - -Log in as the given user. - -The passwd and acct parameters are optional and default to the empty string. - -If no user is specified, it defaults to 'anonymous'. - -If user is 'anonymous', the default passwd is 'anonymous@'. - -This function should be called only once for each instance, after a connection -has been established. - -It should not be called at all if a host and user were given when the instance -was created. - -Most FTP commands are only allowed after the client has logged in. - -The acct parameter supplies “accounting information”; few systems implement this. -FTP.retrbinary(command, callback[, maxblocksize[, rest]]) - - - -Retrieve a file in binary transfer mode. - -Command should be an appropriate RETR command: 'RETR filename'. - -The callback function is called for each block of data received, with a single -string argument giving the data block. - -The optional maxblocksize argument specifies the maximum chunk size to read on -the low-level socket object created to do the actual transfer. - -A reasonable default is chosen. rest means the same thing as in the transfercmd() -method. -FTP.retrlines(command[, callback]) - -Retrieve a file or directory listing in ASCII transfer mode. - -Command should be an appropriate RETR command or a command such as LIST, NLST or -MLSD. - -LIST retrieves a list of files and information about those files. - -NLST retrieves a list of file names. - -On some servers, MLSD retrieves a machine readable list of files and information -about those files. - -The callback function is called for each line with a string argument containing -the line with the trailing CRLF stripped. - -The default callback prints the line to sys.stdout. -FTP.dir(argument[, ...]) - -Produce a directory listing as returned by the LIST command, printing it to -standard output. - -The optional argument is a directory to list (default is the current server -directory). - -Multiple arguments can be used to pass non-standard options to the LIST command. - -If the last argument is a function, it is used as a callback function as for -retrlines(); the default prints to sys.stdout. - -This method returns None. -FTP.delete(filename) - -Remove the file named filename from the server. - -If successful, returns the text of the response, otherwise raises error_perm on -permission errors or error_reply on other errors. -FTP.cwd(pathname) - -Set the current directory on the server. -FTP.mkd(pathname) - -Create a new directory on the server. -FTP.pwd() - -Return the pathname of the current directory on the server. -FTP.quit() - -Send a QUIT command to the server and close the connection. - -This is the “polite” way to close a connection, but it may raise an exception if -the server responds with an error to the QUIT command. - -This implies a call to the close() method which renders the FTP instance useless -for subsequent calls. -FTP.close() - -Close the connection unilaterally. - -This should not be applied to an already closed connection such as after a -successful call to quit(). - -After this call the FTP instance should not be used any more. - -After a call to close() or quit() you cannot reopen the connection by issuing -another login() method). diff --git a/Face and eye Recognition/face_recofnation_first.py b/Face and eye Recognition/face_recofnation_first.py index c60faba84db..e50e6fa24f3 100644 --- a/Face and eye Recognition/face_recofnation_first.py +++ b/Face and eye Recognition/face_recofnation_first.py @@ -49,4 +49,4 @@ def detect_faces_and_eyes(): if __name__ == "__main__": # Call the main function - detect_faces_and_eyes() \ No newline at end of file + detect_faces_and_eyes() diff --git a/Face_Mask_detection (haarcascade)/mask_detection.py b/Face_Mask_detection (haarcascade)/mask_detection.py index 9ba4c34734b..99396d5576f 100644 --- a/Face_Mask_detection (haarcascade)/mask_detection.py +++ b/Face_Mask_detection (haarcascade)/mask_detection.py @@ -1,5 +1,4 @@ import tensorflow.keras -from PIL import Image, ImageOps import numpy as np import cv2 @@ -22,7 +21,7 @@ cv2.imshow("webcam", img) faces = faceCascade.detectMultiScale(img, 1.1, 4) - for (x, y, w, h) in faces: + for x, y, w, h in faces: crop_img = img[y : y + h, x : x + w] crop_img = cv2.resize(crop_img, (224, 224)) normalized_image_array = (crop_img.astype(np.float32) / 127.0) - 1 diff --git a/FibonacciNumbersWithGenerators.py b/FibonacciNumbersWithGenerators.py index 5d090a0a7ea..15771630222 100644 --- a/FibonacciNumbersWithGenerators.py +++ b/FibonacciNumbersWithGenerators.py @@ -1,10 +1,10 @@ -def fibonacci_generator(n = None): +def fibonacci_generator(n=None): """ - Generating function up to n fibonacci numbers iteratively - Params: - n: int - Return: - int + Generating function up to n fibonacci numbers iteratively + Params: + n: int + Return: + int """ f0, f1 = 0, 1 yield f1 @@ -14,5 +14,6 @@ def fibonacci_generator(n = None): f0, f1 = f1, fn n -= 1 + for n_fibo in fibonacci_generator(7): print(n_fibo) diff --git a/Find current weather of any city using openweathermap API.py b/Find current weather of any city using openweathermap API.py index cb2659c122f..c5848559880 100644 --- a/Find current weather of any city using openweathermap API.py +++ b/Find current weather of any city using openweathermap API.py @@ -1,72 +1,73 @@ -# Python program to find current -# weather details of any city -# using openweathermap api +# Python program to find current +# weather details of any city +# using openweathermap api -# import required modules -import requests, json +# import required modules +import requests -# Enter your API key here +# Enter your API key here api_key = "Your_API_Key" -# base_url variable to store url +# base_url variable to store url base_url = "http://api.openweathermap.org/data/2.5/weather?" -# Give city name -city_name = input("Enter city name : ") - -# complete_url variable to store -# complete url address -complete_url = base_url + "appid=" + api_key + "&q=" + city_name - -# get method of requests module -# return response object -response = requests.get(complete_url) - -# json method of response object -# convert json format data into -# python format data -x = response.json() - -# Now x contains list of nested dictionaries -# Check the value of "cod" key is equal to -# "404", means city is found otherwise, -# city is not found -if x["cod"] != "404": - - # store the value of "main" - # key in variable y - y = x["main"] - - # store the value corresponding - # to the "temp" key of y - current_temperature = y["temp"] - - # store the value corresponding - # to the "pressure" key of y - current_pressure = y["pressure"] - - # store the value corresponding - # to the "humidity" key of y - current_humidiy = y["humidity"] - - # store the value of "weather" - # key in variable z - z = x["weather"] - - # store the value corresponding - # to the "description" key at - # the 0th index of z - weather_description = z[0]["description"] - - # print following values - print(" Temperature (in kelvin unit) = " + - str(current_temperature) + - "\n atmospheric pressure (in hPa unit) = " + - str(current_pressure) + - "\n humidity (in percentage) = " + - str(current_humidiy) + - "\n description = " + - str(weather_description)) - -else: - print(" City Not Found ") +# Give city name +city_name = input("Enter city name : ") + +# complete_url variable to store +# complete url address +complete_url = base_url + "appid=" + api_key + "&q=" + city_name + +# get method of requests module +# return response object +response = requests.get(complete_url) + +# json method of response object +# convert json format data into +# python format data +x = response.json() + +# Now x contains list of nested dictionaries +# Check the value of "cod" key is equal to +# "404", means city is found otherwise, +# city is not found +if x["cod"] != "404": + # store the value of "main" + # key in variable y + y = x["main"] + + # store the value corresponding + # to the "temp" key of y + current_temperature = y["temp"] + + # store the value corresponding + # to the "pressure" key of y + current_pressure = y["pressure"] + + # store the value corresponding + # to the "humidity" key of y + current_humidiy = y["humidity"] + + # store the value of "weather" + # key in variable z + z = x["weather"] + + # store the value corresponding + # to the "description" key at + # the 0th index of z + weather_description = z[0]["description"] + + # print following values + print( + " Temperature (in kelvin unit) = " + + str(current_temperature) + + "\n atmospheric pressure (in hPa unit) = " + + str(current_pressure) + + "\n humidity (in percentage) = " + + str(current_humidiy) + + "\n description = " + + str(weather_description) + ) + +else: + print(" City Not Found ") diff --git a/FindingResolutionOfAnImage.py b/FindingResolutionOfAnImage.py index 9c6336d8d1d..6bc312b245d 100644 --- a/FindingResolutionOfAnImage.py +++ b/FindingResolutionOfAnImage.py @@ -1,24 +1,24 @@ def jpeg_res(filename): - """"This function prints the resolution of the jpeg image file passed into it""" + """ "This function prints the resolution of the jpeg image file passed into it""" - # open image for reading in binary mode - with open(filename,'rb') as img_file: + # open image for reading in binary mode + with open(filename, "rb") as img_file: + # height of image (in 2 bytes) is at 164th position + img_file.seek(163) - # height of image (in 2 bytes) is at 164th position - img_file.seek(163) + # read the 2 bytes + a = img_file.read(2) - # read the 2 bytes - a = img_file.read(2) + # calculate height + height = (a[0] << 8) + a[1] - # calculate height - height = (a[0] << 8) + a[1] + # next 2 bytes is width + a = img_file.read(2) - # next 2 bytes is width - a = img_file.read(2) + # calculate width + width = (a[0] << 8) + a[1] - # calculate width - width = (a[0] << 8) + a[1] + print("The resolution of the image is", width, "x", height) - print("The resolution of the image is",width,"x",height) jpeg_res("img1.jpg") diff --git a/FizzBuzz.py b/FizzBuzz.py index 59c78fad2a9..cf8caba4c4e 100644 --- a/FizzBuzz.py +++ b/FizzBuzz.py @@ -18,5 +18,4 @@ def FizzBuzz(num): print(i) - FizzBuzz(20) # prints FizzBuzz up to 20 diff --git a/Flappy Bird - created with tkinter/Background.py b/Flappy Bird - created with tkinter/Background.py index 78dc415a9f4..582f2287491 100644 --- a/Flappy Bird - created with tkinter/Background.py +++ b/Flappy Bird - created with tkinter/Background.py @@ -13,7 +13,6 @@ class Background(Canvas): __stop = False def __init__(self, tk_instance, *geometry, fp="background.png", animation_speed=50): - # Verifica se o parâmetro tk_instance é uma instância de Tk if not isinstance(tk_instance, Tk): raise TypeError("The tk_instance argument must be an instance of Tk.") @@ -151,7 +150,6 @@ def run(self): # Enquanto o atributo "stop" for False, a animação continuará em um loop infinito if not self.__stop: - # Move as imagens de background na posição X self.move(self.__background[0], -10, 0) self.move(self.__background[1], -10, 0) diff --git a/Flappy Bird - created with tkinter/Bird.py b/Flappy Bird - created with tkinter/Bird.py index 56fdcd1d31c..69f532db65e 100644 --- a/Flappy Bird - created with tkinter/Bird.py +++ b/Flappy Bird - created with tkinter/Bird.py @@ -27,9 +27,8 @@ def __init__( *screen_geometry, fp="bird.png", event="", - descend_speed=5 + descend_speed=5, ): - # Verifica se "background" é uma instância de Background e se o "gamerover_method" é chamável if not isinstance(background, Background): @@ -203,7 +202,6 @@ def jumps(self, event=None): # Move o pássaro enquanto o limite de subida por animação não tiver excedido if self.__times_skipped < self.climbsUp: - # Move o pássaro para cima self.__canvas.move(self.__tag, 0, -1) self.__times_skipped += 1 @@ -212,7 +210,6 @@ def jumps(self, event=None): self.__canvas.after(3, self.jumps) else: - # Declara que o pássaro não está mais subindo self.__going_up = False self.__times_skipped = 0 @@ -240,7 +237,6 @@ def run(self): # Executa a animação de descida somente se o pássaro estiver vivo if self.__isAlive: - # Executa a animação de descida somente se o pássaro não estiver subindo if not self.__going_up: # Move o pássaro para baixo diff --git a/Flappy Bird - created with tkinter/Flappy Bird.py b/Flappy Bird - created with tkinter/Flappy Bird.py index 308a7c6ea70..a082e3ec1cb 100644 --- a/Flappy Bird - created with tkinter/Flappy Bird.py +++ b/Flappy Bird - created with tkinter/Flappy Bird.py @@ -1,419 +1,92 @@ -__author__ = "Jean Loui Bernard Silva de Jesus" -__version__ = "1.0" +import pygame +import random -import os.path -from datetime import timedelta -from time import time -from tkinter import Tk, Button +# Initialize Pygame +pygame.init() -from Background import Background -from Bird import Bird -from Settings import Settings -from Tubes import Tubes +# Set up display +screen_width = 500 +screen_height = 700 +screen = pygame.display.set_mode((screen_width, screen_height)) +pygame.display.set_caption("Flappy Bird") +# Load images +bird_image = pygame.image.load("bird.png").convert_alpha() +pipe_image = pygame.image.load("pipe.png").convert_alpha() +background_image = pygame.image.load("background.png").convert_alpha() -class App(Tk, Settings): - """ - Classe principal do jogo onde tudo será executado - """ - - # Variáveis privadas e ajustes internos - __background_animation_speed = 720 - __bestScore = 0 - __bird_descend_speed = 38.4 - __buttons = [] - __playing = False - __score = 0 - __time = "%H:%M:%S" +# Bird class +class Bird: def __init__(self): + self.image = bird_image + self.x = 50 + self.y = screen_height // 2 + self.vel = 0 + self.gravity = 1 - Tk.__init__(self) - self.setOptions() - - # Se o tamanho da largura e altura da janela forem definidos, eles serão usados no jogo. - # Caso eles tenham o valor None, o tamanho da janela será o tamanho do monitor do usuário. - - if all([self.window_width, self.window_height]): - self.__width = self.window_width - self.__height = self.window_height - else: - self.__width = self.winfo_screenwidth() - self.__height = self.winfo_screenheight() - - # Configura a janela do programa - self.title(self.window_name) - self.geometry("{}x{}".format(self.__width, self.__height)) - self.resizable(*self.window_rz) - self.attributes("-fullscreen", self.window_fullscreen) - self["bg"] = "black" - - # Verifica se existem as imagens do jogo - for file in self.images_fp: - if not os.path.exists(file): - raise FileNotFoundError( - "The following file was not found:\n{}".format(file) - ) - - # Carrega a imagem do botão para começar o jogo - self.__startButton_image = Background.getPhotoImage( - image_path=self.startButton_fp, - width=(self.__width // 100) * self.button_width, - height=(self.__height // 100) * self.button_height, - closeAfter=True, - )[0] - - # Carrega a imagem do botão para sair do jogo - self.__exitButton_image = Background.getPhotoImage( - image_path=self.exitButton_fp, - width=(self.__width // 100) * self.button_width, - height=(self.__height // 100) * self.button_height, - closeAfter=True, - )[0] - - # Carrega a imagem do título do jogo - self.__title_image = Background.getPhotoImage( - image_path=self.title_fp, - width=(self.__width // 100) * self.title_width, - height=(self.__height // 100) * self.title_height, - closeAfter=True, - )[0] - - # Carrega a imagem do placar do jogo - self.__scoreboard_image = Background.getPhotoImage( - image_path=self.scoreboard_fp, - width=(self.__width // 100) * self.scoreboard_width, - height=(self.__height // 100) * self.scoreboard_height, - closeAfter=True, - )[0] - - # Define a velocidade da animação do background com base na largura da janela - self.__background_animation_speed //= self.__width / 100 - self.__background_animation_speed = int(self.__background_animation_speed) - - # Define a velocidade de descida do pássaro com base na altura da janela - self.__bird_descend_speed //= self.__height / 100 - self.__bird_descend_speed = int(self.__bird_descend_speed) - - def changeFullscreenOption(self, event=None): - """ - Método para colocar o jogo no modo "fullscreen" ou "window" - """ - - self.window_fullscreen = not self.window_fullscreen - self.attributes("-fullscreen", self.window_fullscreen) - - def close(self, event=None): - """ - Método para fechar o jogo - """ - - # Salva a melhor pontuação do jogador antes de sair do jogo - self.saveScore() - - # Tenta interromper os processos - try: - self.__background.stop() - self.__bird.kill() - self.__tubes.stop() - finally: - quit() - - def createMenuButtons(self): - """ - Método para criar os botões de menu - """ - - # Define o tamanho do botão em porcentagem com base no tamanho da janela - width = (self.__width // 100) * self.button_width - height = (self.__height // 100) * self.button_height - - # Cria um botão para começar o jogo - startButton = Button( - self, - image=self.__startButton_image, - bd=0, - command=self.start, - cursor=self.button_cursor, - bg=self.button_bg, - activebackground=self.button_activebackground, - ) - # Coloca o botão dentro do background ( Canvas ) - self.__buttons.append( - self.__background.create_window( - (self.__width // 2) - width // 1.5, - int(self.__height / 100 * self.button_position_y), - window=startButton, - ) - ) - - # Cria um botão para sair do jogo - exitButton = Button( - self, - image=self.__exitButton_image, - bd=0, - command=self.close, - cursor=self.button_cursor, - bg=self.button_bg, - activebackground=self.button_activebackground, - ) - - # Coloca o botão dentro do background ( Canvas ) - self.__buttons.append( - self.__background.create_window( - (self.__width // 2) + width // 1.5, - int(self.__height / 100 * self.button_position_y), - window=exitButton, - ) - ) - - def createScoreBoard(self): - """ - Método para criar a imagem do placar do jogo no background - junto com as informações do jogador. - """ - - # Define a posição X e Y - x = self.__width // 2 - y = (self.__height // 100) * self.scoreboard_position_y - - # Calcula o tamanho da imagem do placar - scoreboard_w = (self.__width // 100) * self.scoreboard_width - scoreboard_h = (self.__width // 100) * self.scoreboard_height - - # Calcula a posição X e Y do texto da pontuação do último jogo - score_x = x - scoreboard_w / 100 * 60 / 2 - score_y = y + scoreboard_h / 100 * 10 / 2 - - # Calcula a posição X e Y do texto da melhor pontuação do jogador - bestScore_x = x + scoreboard_w / 100 * 35 / 2 - bestScore_y = y + scoreboard_h / 100 * 10 / 2 - - # Calcula a posição X e Y do texto do tempo de jogo - time_x = x - time_y = y + scoreboard_h / 100 * 35 / 2 - - # Define a fonte dos textos - font = (self.text_font, int(0.02196 * self.__width + 0.5)) - - # Cria a imagem do placar no background - self.__background.create_image(x, y, image=self.__scoreboard_image) - - # Cria texto para mostrar o score do último jogo - self.__background.create_text( - score_x, - score_y, - text="Score: %s" % self.__score, - fill=self.text_fill, - font=font, - ) - - # Cria texto para mostrar a melhor pontuação do jogador - self.__background.create_text( - bestScore_x, - bestScore_y, - text="Best Score: %s" % self.__bestScore, - fill=self.text_fill, - font=font, - ) - - # Cria texto para mostrar o tempo de jogo - self.__background.create_text( - time_x, - time_y, - text="Time: %s" % self.__time, - fill=self.text_fill, - font=font, - ) - - def createTitleImage(self): - """ - Método para criar a imagem do título do jogo no background - """ - - self.__background.create_image( - self.__width // 2, - (self.__height // 100) * self.title_position_y, - image=self.__title_image, - ) - - def deleteMenuButtons(self): - """ - Método para deletar os botões de menu - """ - - # Deleta cada botão criado dentro do background - for item in self.__buttons: - self.__background.delete(item) - - # Limpa a lista de botões - self.__buttons.clear() - - def gameOver(self): - """ - Método de fim de jogo - """ - - # Calcula o tempo jogado em segundos e depois o formata - self.__time = int(time() - self.__time) - self.__time = str(timedelta(seconds=self.__time)) - - # Interrompe a animação do plano de fundo e a animação dos tubos - self.__background.stop() - self.__tubes.stop() - - # Declara que o jogo não está mais em execução - self.__playing = False - - # Cria os botões inciais - self.createMenuButtons() - - # Cria image do título do jogo - self.createTitleImage() - - # Cria imagem do placar e mostra as informações do jogo passado - self.createScoreBoard() - - def increaseScore(self): - """ - Método para aumentar a pontuação do jogo atual do jogador - """ - - self.__score += 1 - if self.__score > self.__bestScore: - self.__bestScore = self.__score + def update(self): + self.vel += self.gravity + self.y += self.vel - def init(self): - """ - Método para iniciar o programa em si, criando toda a parte gráfica inicial do jogo - """ + def flap(self): + self.vel = -10 - # self.createMenuButtons() - self.loadScore() + def draw(self, screen): + screen.blit(self.image, (self.x, self.y)) - # Cria o plano de fundo do jogo - self.__background = Background( - self, - self.__width, - self.__height, - fp=self.background_fp, - animation_speed=self.__background_animation_speed, - ) - - # Foca o plano de fundo para que seja possível definir os eventos - self.__background.focus_force() - # Define evento para trocar o modo de janela para "fullscreen" ou "window" - self.__background.bind( - self.window_fullscreen_event, self.changeFullscreenOption - ) - # Define evento para começar o jogo - self.__background.bind(self.window_start_event, self.start) - # Define evento para sair do jogo - self.__background.bind(self.window_exit_event, self.close) - - # Define um método caso o usuário feche a janela do jogo - self.protocol("WM_DELETE_WINDOW", self.close) - - # Empacota o objeto background - self.__background.pack() - # Cria os botões do menu do jogo - self.createMenuButtons() - - # Cria imagem do título do jogo - self.createTitleImage() - - # Cria um pássaro inicial no jogo - self.__bird = Bird( - self.__background, - self.gameOver, - self.__width, - self.__height, - fp=self.bird_fp, - event=self.bird_event, - descend_speed=self.__bird_descend_speed, +# Pipe class +class Pipe: + def __init__(self): + self.image = pipe_image + self.x = screen_width + self.y = random.randint(150, screen_height - 150) + self.vel = 5 + + def update(self): + self.x -= self.vel + + def draw(self, screen): + screen.blit(self.image, (self.x, self.y)) + screen.blit( + pygame.transform.flip(self.image, False, True), + (self.x, self.y - screen_height), ) - def loadScore(self): - """ - Método para carregar a pontuação do jogador - """ - - # Tenta carregar o placar do usuário - try: - file = open(self.score_fp) - self.__bestScore = int(file.read(), 2) - file.close() - # Se não for possível, será criado um arquivo para guardar o placar - except BaseException: - file = open(self.score_fp, "w") - file.write(bin(self.__bestScore)) - file.close() +def main(): + clock = pygame.time.Clock() + bird = Bird() + pipes = [Pipe()] + score = 0 - def saveScore(self): - """ - Método para salvar a pontuação do jogador - """ + running = True + while running: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE: + bird.flap() - with open(self.score_fp, "w") as file: - file.write(bin(self.__bestScore)) + bird.update() + for pipe in pipes: + pipe.update() + if pipe.x + pipe.image.get_width() < 0: + pipes.remove(pipe) + pipes.append(Pipe()) + score += 1 - def start(self, event=None): - """ - Método para inicializar o jogo - """ + screen.blit(background_image, (0, 0)) + bird.draw(screen) + for pipe in pipes: + pipe.draw(screen) - # Este método é executado somente se o jogador não estiver já jogando - if self.__playing: - return + pygame.display.update() + clock.tick(30) - # Reinicia o placar - self.__score = 0 - self.__time = time() - - # Remove os botões de menu - self.deleteMenuButtons() - - # Reinicia o background - self.__background.reset() - - # Inicializa a animação do background se True - if self.background_animation: - self.__background.run() - - # Cria um pássaro no jogo - self.__bird = Bird( - self.__background, - self.gameOver, - self.__width, - self.__height, - fp=self.bird_fp, - event=self.bird_event, - descend_speed=self.__bird_descend_speed, - ) - - # Cria tubos no jogo - self.__tubes = Tubes( - self.__background, - self.__bird, - self.increaseScore, - self.__width, - self.__height, - fp=self.tube_fp, - animation_speed=self.__background_animation_speed, - ) - - # Inicializa a animação do pássaro e dos tubos - self.__bird.start() - self.__tubes.start() + pygame.quit() if __name__ == "__main__": - try: - app = App() - app.init() - app.mainloop() - - except FileNotFoundError as error: - print(error) + main() diff --git a/Flappy Bird - created with tkinter/Settings.py b/Flappy Bird - created with tkinter/Settings.py index 33eb2c1da6f..7b7b72d9ad3 100644 --- a/Flappy Bird - created with tkinter/Settings.py +++ b/Flappy Bird - created with tkinter/Settings.py @@ -94,7 +94,6 @@ def setOptions(self): # Caso não exista um arquivo para obter as configurações, ele será criado except BaseException: - # Caso não exista o diretório, o mesmo será criado. if not os.path.exists(os.path.split(self.settings_fp)[0]): os.mkdir(os.path.split(self.settings_fp)[0]) diff --git a/Flappy Bird - created with tkinter/Tubes.py b/Flappy Bird - created with tkinter/Tubes.py index a6021f69ef5..fa69fd0326f 100644 --- a/Flappy Bird - created with tkinter/Tubes.py +++ b/Flappy Bird - created with tkinter/Tubes.py @@ -23,9 +23,8 @@ def __init__( score_function=None, *screen_geometry, fp=("tube.png", "tube_mourth"), - animation_speed=50 + animation_speed=50, ): - # Verifica os parâmetros passados e lança um erro caso algo esteja incorreto if not isinstance(background, Background): raise TypeError( @@ -257,10 +256,8 @@ def move(self): # Move os tubos gerados no background for tubes in self.__tubes: for tube in tubes: - # Verifica se o pássaro passou do tubo. Caso sim, o método para pontuar será executado if not scored: - # Recebe a posição do cano x2 = self.__background.bbox(tube[0])[2] @@ -269,9 +266,8 @@ def move(self): if (self.__width / 2) - (self.__bird_w / 2) - self.__move < x2: if x2 <= (self.__width / 2) - (self.__bird_w / 2): - # Verifica se o tubo está na lista de tubos passados - if not tube[0] in self.__pastTubes: + if tube[0] not in self.__pastTubes: # Chama o método para pontuar e adiciona o tubo pontuado à lista de tubos passados self.__score_method() self.__pastTubes.append(tube[0]) @@ -297,7 +293,6 @@ def run(self): len(self.__tubes) >= 1 and self.__background.bbox(self.__tubes[0][0][0])[2] <= 0 ): - # Apaga todo o corpo do tubo dentro do background for tube in self.__tubes[0]: for body in tube: diff --git a/Generate a random number between 0 to 9.py b/Generate a random number between 0 to 9.py index a035d9f8502..c304fa85b1d 100644 --- a/Generate a random number between 0 to 9.py +++ b/Generate a random number between 0 to 9.py @@ -3,4 +3,4 @@ # importing the random module import random -print(random.randint(0,9)) +print(random.randint(0, 9)) diff --git a/Google_Image_Downloader/image_grapper.py b/Google_Image_Downloader/image_grapper.py index a922894a8d0..d42f4a3ac86 100644 --- a/Google_Image_Downloader/image_grapper.py +++ b/Google_Image_Downloader/image_grapper.py @@ -113,7 +113,7 @@ def download_wallpapers_1080p(): ################### def view_images_directory(): - for (folders, subfolder, files) in walk(curdir): + for folders, subfolder, files in walk(curdir): for folder in subfolder: print(folder) return True diff --git a/Grocery calculator.py b/Grocery calculator.py index eedb5c7ea15..42adbb7cd74 100644 --- a/Grocery calculator.py +++ b/Grocery calculator.py @@ -1,45 +1,45 @@ -'''This will be a Python script that functions as a grocery calculator. It will take in key-value pairs for items +"""This will be a Python script that functions as a grocery calculator. It will take in key-value pairs for items and their prices, and return the subtotal and total, and can print out the list for you for when you're ready to -take it to the store!''' +take it to the store!""" -'''Algorithm: +"""Algorithm: 1. User enters key-value pairs that are added into a dict. -2. Users tells script to return total, subtotal, and key-value pairs in a nicely formatted list.''' +2. Users tells script to return total, subtotal, and key-value pairs in a nicely formatted list.""" -#Object = GroceryList -#Methods = addToList, Total, Subtotal, returnList + +# Object = GroceryList +# Methods = addToList, Total, Subtotal, returnList class GroceryList(dict): + def __init__(self): + self = {} - def __init__(self): - self = {} + def addToList(self, item, price): + self.update({item: price}) - def addToList(self, item, price): - - self.update({item:price}) + def Total(self): + total = 0 + for items in self: + total += (self[items]) * 0.07 + (self[items]) + return total - def Total(self): - total = 0 - for items in self: - total += (self[items])*.07 + (self[items]) - return total + def Subtotal(self): + subtotal = 0 + for items in self: + subtotal += self[items] + return subtotal - def Subtotal(self): - subtotal = 0 - for items in self: - subtotal += self[items] - return subtotal + def returnList(self): + return self - def returnList(self): - return self -'''Test list should return: +"""Test list should return: Total = 10.70 Subtotal = 10 returnList = {"milk":4, "eggs":3, "kombucha":3} -''' +""" List1 = GroceryList() -List1.addToList("milk",4) +List1.addToList("milk", 4) List1.addToList("eggs", 3) List1.addToList("kombucha", 3) @@ -48,16 +48,16 @@ def returnList(self): print(List1.Subtotal()) print(List1.returnList()) -#***************************************************** +# ***************************************************** print() -#***************************************************** +# ***************************************************** List2 = GroceryList() -List2.addToList('cheese', 7.49) -List2.addToList('wine', 25.36) -List2.addToList('steak', 17.64) +List2.addToList("cheese", 7.49) +List2.addToList("wine", 25.36) +List2.addToList("steak", 17.64) print(List2.Total()) print(List2.Subtotal()) diff --git a/HTML_to_PDF/index.html b/HTML_to_PDF/index.html new file mode 100644 index 00000000000..6b39d63cb2d --- /dev/null +++ b/HTML_to_PDF/index.html @@ -0,0 +1,221 @@ + + + + + + HTML to PDF Test Page + + + + + +
+ 📄 This page is created for testing HTML to PDF conversion! +
+ +
+
+

HTML to PDF Test

+ +
+
+ +
+
+

Welcome!

+

This is a test page designed to check HTML to PDF conversion.

+
+ ⚡ This section highlights that we are testing the ability to convert HTML pages into PDF format. +
+
+ +
+

About This Test

+

This page includes various HTML elements to check how they appear in the converted PDF.

+
+ +
+

Elements to Test

+
    +
  • Headings & Paragraphs
  • +
  • Navigation & Links
  • +
  • Lists & Bullet Points
  • +
  • Background Colors & Styling
  • +
  • Margins & Spacing
  • +
+
+ +
+

Need Help?

+

For any issues with the HTML to PDF conversion, contact us at: info@example.com

+
+
+ + + + + diff --git a/HTML_to_PDF/main.py b/HTML_to_PDF/main.py new file mode 100644 index 00000000000..5211ee325b3 --- /dev/null +++ b/HTML_to_PDF/main.py @@ -0,0 +1,37 @@ +import pdfkit +import os + +# Download wkhtmltopdf from https://wkhtmltopdf.org/downloads.html +# Set the path to the wkhtmltopdf executable + +wkhtmltopdf_path = r"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" + +# Configure pdfkit to use wkhtmltopdf +config = pdfkit.configuration(wkhtmltopdf=wkhtmltopdf_path) + +# Path of HTML and PDF files +path = os.getcwd() +htmlFile = f"{path}\\index.html" +pdfFile = f"{path}\\output.pdf" + +# Adding PDF Options for customized view +options = { + "page-size": "A4", + "margin-top": "0.75in", + "margin-right": "0.75in", + "margin-bottom": "0.75in", + "margin-left": "0.75in", + "encoding": "UTF-8", + "no-outline": None, +} + +# Check if the HTML file exists before proceeding +if not os.path.exists(htmlFile): + print(f"HTML file does not exist at: {htmlFile}") +else: + try: + # Convert HTML to PDF + pdfkit.from_file(htmlFile, pdfFile, configuration=config, options=options) + print(f"Successfully converted HTML to PDF: {pdfFile}") + except Exception as e: + print(f"An error occurred: {e}") diff --git a/HTML_to_PDF/output.pdf b/HTML_to_PDF/output.pdf new file mode 100644 index 00000000000..8d8f56439f2 Binary files /dev/null and b/HTML_to_PDF/output.pdf differ diff --git a/Hand-Motion-Detection/hand_motion_recognizer.py b/Hand-Motion-Detection/hand_motion_recognizer.py index 59efb53c8ef..4b4fd588dba 100644 --- a/Hand-Motion-Detection/hand_motion_recognizer.py +++ b/Hand-Motion-Detection/hand_motion_recognizer.py @@ -6,43 +6,49 @@ cap = cv2.VideoCapture(0) -with mp_hands.Hands(min_detection_confidence=0.8, min_tracking_confidence=0.5) as hands: +with mp_hands.Hands(min_detection_confidence=0.8, min_tracking_confidence=0.5) as hands: while cap.isOpened(): ret, frame = cap.read() - + # BGR 2 RGB image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) - + # Flip on horizontal image = cv2.flip(image, 1) - + # Set flag image.flags.writeable = False - + # Detections results = hands.process(image) - + # Set flag to true image.flags.writeable = True - + # RGB 2 BGR image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) - + # Detections print(results) - + # Rendering results if results.multi_hand_landmarks: for num, hand in enumerate(results.multi_hand_landmarks): - mp_drawing.draw_landmarks(image, hand, mp_hands.HAND_CONNECTIONS, - mp_drawing.DrawingSpec(color=(121, 22, 76), thickness=2, circle_radius=4), - mp_drawing.DrawingSpec(color=(250, 44, 250), thickness=2, circle_radius=2), - ) - - - cv2.imshow('Hand Tracking', image) - - if cv2.waitKey(10) & 0xFF == ord('q'): + mp_drawing.draw_landmarks( + image, + hand, + mp_hands.HAND_CONNECTIONS, + mp_drawing.DrawingSpec( + color=(121, 22, 76), thickness=2, circle_radius=4 + ), + mp_drawing.DrawingSpec( + color=(250, 44, 250), thickness=2, circle_radius=2 + ), + ) + + cv2.imshow("Hand Tracking", image) + + if cv2.waitKey(10) & 0xFF == ord("q"): break cap.release() diff --git a/Hand-Motion-Detection/requirements.txt b/Hand-Motion-Detection/requirements.txt index bab2de0ecea..0c854442df6 100644 --- a/Hand-Motion-Detection/requirements.txt +++ b/Hand-Motion-Detection/requirements.txt @@ -1,3 +1,3 @@ -numpy==1.26.4 -opencv_python==4.10.0.82 -mediapipe==0.10.9 +numpy==2.3.4 +opencv_python==4.12.0.88 +mediapipe==0.10.21 diff --git a/HangMan Game b/HangMan Game deleted file mode 100644 index 56d106f8c88..00000000000 --- a/HangMan Game +++ /dev/null @@ -1,70 +0,0 @@ -# Program for HangMan Game. -import random, HangMan_Includes as incl - -while True: - chances=6 - inp_lst=[] - result_lst=[] - name=random.choice(incl.names).upper() - # print(name) - [result_lst.append('__ ') for i in range(len(name))] - result_str=str().join(result_lst) - - print(f'\nYou have to Guess a Human Name of {len(name)} Alphabets:\t{result_str}') - print(incl.draw[0]) - - while True: - if result_str.replace(' ','')==name: - print(f'\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Correct Answer: {name} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') - print(incl.won+'\a') - break - inp=input('\nGuess an Alphabet or a Sequence of Alphabets: ').upper() - - if inp in inp_lst: - print('......................................................................Already Tried') - continue - else: - inp_lst.append(inp) - - t=0 - indx=[] - if inp in name: - temp=name - while temp!='': - if inp in temp: - indx.append(t+temp.index(inp)) - t=temp.index(inp)+1 - temp=temp[t:] - else: - break - - for j in range(len(indx)): - for i in range(len(inp)): - result_lst[indx[j]]=inp[i]+' ' - indx[j]+=1 - i+=1 - - result_str=str().join(result_lst) - print('\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Excellent~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') - print(f'\nYou have to Guess a Human Name of {len(name)} Alphabets:\t{result_str}\n') - print('Tried Inputs:',tuple(sorted(set(inp_lst)))) - - else: - print('\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Try Again!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') - print(f'\nYou have to Guess a Human Name of {len(name)} Alphabets:\t{result_str}\n') - print(incl.draw[chances]) - chances=chances-1 - - if chances!=0: - print('Tried Inputs:',tuple(sorted(set(inp_lst)))) - print(f'\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~You were left with {chances} Chances~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') - else: - print(f'\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Correct Answer: {name} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') - print(incl.lose+'\a') - break - - try: - if int(input('To play the Game Again Press "1" & "0" to Quit: '))!=1: - exit('\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Thank You~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') - except: - exit('\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Thank You~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') diff --git a/HangMan Game.py b/HangMan Game.py new file mode 100644 index 00000000000..7811963553a --- /dev/null +++ b/HangMan Game.py @@ -0,0 +1,91 @@ +# Program for HangMan Game. +import random +import HangMan_Includes as incl + +while True: + chances = 6 + inp_lst = [] + result_lst = [] + name = random.choice(incl.names).upper() + # print(name) + [result_lst.append("__ ") for i in range(len(name))] + result_str = str().join(result_lst) + + print(f"\nYou have to Guess a Human Name of {len(name)} Alphabets:\t{result_str}") + print(incl.draw[0]) + + while True: + if result_str.replace(" ", "") == name: + print( + f"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Correct Answer: {name} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + print(incl.won + "\a") + break + inp = input("\nGuess an Alphabet or a Sequence of Alphabets: ").upper() + + if inp in inp_lst: + print( + "......................................................................Already Tried" + ) + continue + else: + inp_lst.append(inp) + + t = 0 + indx = [] + if inp in name: + temp = name + while temp != "": + if inp in temp: + indx.append(t + temp.index(inp)) + t = temp.index(inp) + 1 + temp = temp[t:] + else: + break + + for j in range(len(indx)): + for i in range(len(inp)): + result_lst[indx[j]] = inp[i] + " " + indx[j] += 1 + i += 1 + + result_str = str().join(result_lst) + print( + "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Excellent~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + print( + f"\nYou have to Guess a Human Name of {len(name)} Alphabets:\t{result_str}\n" + ) + print("Tried Inputs:", tuple(sorted(set(inp_lst)))) + + else: + print( + "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Try Again!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + print( + f"\nYou have to Guess a Human Name of {len(name)} Alphabets:\t{result_str}\n" + ) + print(incl.draw[chances]) + chances = chances - 1 + + if chances != 0: + print("Tried Inputs:", tuple(sorted(set(inp_lst)))) + print( + f"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~You were left with {chances} Chances~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + else: + print( + f"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Correct Answer: {name} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + print(incl.lose + "\a") + break + + try: + if int(input('To play the Game Again Press "1" & "0" to Quit: ')) != 1: + exit( + "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Thank You~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) + except: + exit( + "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Thank You~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + ) diff --git a/Hangman.py b/Hangman.py index 27b82db2c4a..c49a64cc714 100644 --- a/Hangman.py +++ b/Hangman.py @@ -33,21 +33,17 @@ # check if the turns are more than zero while turns > 0: - # make a counter that starts with zero failed = 0 # for every character in secret_word for char in word: - # see if the character is in the players guess if char in guesses: - # print then out the character print(char, end=" ") else: - # if not found, print a dash print("_", end=" ") @@ -84,7 +80,6 @@ # if the guess is not found in the secret word if guess not in word: - # turns counter decreases with 1 (now 9) turns -= 1 @@ -96,6 +91,5 @@ # if the turns are equal to zero if turns == 0: - # print "You Loose" print("\nYou Loose") diff --git a/Hotel-Management.py b/Hotel-Management.py index edfdec0934a..d3a17178f02 100644 --- a/Hotel-Management.py +++ b/Hotel-Management.py @@ -1,49 +1,26 @@ - def menu(): - options = { - 1 : { - "title" : "Add new customer details", - "method": lambda : add() - }, - - 2 : { - "title" : "Modify already existing customer details", - "method": lambda : modify() - }, - - 3 : { - "title" : "Search customer details", - "method": lambda : search() - }, - - 4 : { - "title" : "View all customer details", - "method": lambda : view() - }, - - 5 : { - "title" : "Delete customer details", - "method": lambda : remove() - }, - - 6 : { - "title" : "Exit the program", - "method": lambda : exit() - } + 1: {"title": "Add new customer details", "method": lambda: add()}, + 2: { + "title": "Modify already existing customer details", + "method": lambda: modify(), + }, + 3: {"title": "Search customer details", "method": lambda: search()}, + 4: {"title": "View all customer details", "method": lambda: view()}, + 5: {"title": "Delete customer details", "method": lambda: remove()}, + 6: {"title": "Exit the program", "method": lambda: exit()}, } - print(f"\n\n{' '*25}Welcome to Hotel Database Management Software\n\n") + print(f"\n\n{' ' * 25}Welcome to Hotel Database Management Software\n\n") for num, option in options.items(): print(f"{num}: {option.get('title')}") print() - options.get( int(input("Enter your choice(1-6): ")) ).get("method")() + options.get(int(input("Enter your choice(1-6): "))).get("method")() def add(): - Name1 = input("\nEnter your first name: \n") Name2 = input("\nEnter your last name: \n") Phone_Num = input("\nEnter your phone number(without +91): \n") @@ -142,7 +119,6 @@ def add(): def modify(): - with open("Management.txt", "r") as File: string = File.read() string = string.replace("'", '"') @@ -167,7 +143,6 @@ def modify(): print() with open("Management.txt", "w", encoding="utf-8") as File: - match choice: case 1: category = "First_Name" @@ -189,7 +164,6 @@ def modify(): def search(): - with open("Management.txt") as File: dictionary = json.loads(File.read().replace("'", '"')) @@ -284,7 +258,6 @@ def remove(): def view(): - with open("Management.txt") as File: dictionary = json.loads(File.read().replace("'", '"')) @@ -345,7 +318,7 @@ def exit_menu(): try: menu() -except KeyboardInterrupt as exit: +except KeyboardInterrupt: print("\nexiting...!") # menu() diff --git a/Image-watermarker/README.md b/Image-watermarker/README.md new file mode 100644 index 00000000000..55755407495 --- /dev/null +++ b/Image-watermarker/README.md @@ -0,0 +1,98 @@ +# Watermarking Application + +A Python-based watermarking application built using `CustomTkinter` and `PIL` that allows users to add text and logo watermarks to images. The application supports the customization of text, font, size, color, and the ability to drag and position the watermark on the image. + +## Features + +- **Text Watermark**: Add customizable text to your images. + - Select font style, size, and color. + - Drag and position the text watermark on the image. +- **Logo Watermark**: Add a logo or image as a watermark. + - Resize and position the logo watermark. + - Supports various image formats (JPG, PNG, BMP). +- **Mutual Exclusivity**: The application ensures that users can either add text or a logo as a watermark, not both simultaneously. +- **Image Saving**: Save the watermarked image in PNG format with an option to choose the file name and location. + +## Installation + +### Prerequisites + +- Python 3.6 or higher +- `PIL` (Pillow) +- `CustomTkinter` + +### Installation Steps + +1. **Clone the repository:** + + ```bash + git clone https://github.com/jinku-06/Image-Watermarking-Desktop-app.git + cd watermarking-app + ``` + +2. **Install the required packages:** + + ```bash + pip install -r requirements.txt + ``` + +3. **Run the application:** + + ```bash + python app.py + ``` + +## Usage + +1. **Load an Image**: Start by loading an image onto the canvas. +2. **Add Text Watermark**: + - Input your desired text. + - Customize the font style, size, and color. + - Drag and position the text on the image. + - Note: Adding a text watermark disables the option to add a logo. +3. **Add Logo Watermark**: + - Select and upload a logo or image to use as a watermark. + - Resize and position the logo on the image. + - Note: Adding a logo watermark disables the option to add text. +4. **Save the Image**: Once satisfied with the watermark, save the image to your desired location. + +## Project Structure + +```bash +watermarking-app/ +│ +├── fonts/ # Custom fonts directory +├── app.py # Main application file +├── watermark.py # Watermark functionality class +├── requirements.txt # Required Python packages +└── README.md # Project documentation +``` + +## Sample and look + +Below are some sample images showcasing the application work: + +UI: + +Userinterface image + +Text Watermark : + +text watermark demo image + +Logo Watermark: + +logo watermark demo image + + + + + + + + + + + + + diff --git a/Image-watermarker/app.py b/Image-watermarker/app.py new file mode 100644 index 00000000000..6d0d2bce3c1 --- /dev/null +++ b/Image-watermarker/app.py @@ -0,0 +1,332 @@ +import customtkinter as ctk +from customtkinter import filedialog +from CTkMessagebox import CTkMessagebox +from PIL import Image, ImageTk +from watermark import Watermark +import pyglet +from tkinter import colorchooser + + +# ------------------- Create Window ----------------- +pyglet.font.add_directory("fonts") + + +window = ctk.CTk() +window.geometry("810x525") +window.title("Grenze") + +text_label = None +loaded_image = False +logo = None +img = None +user_text = None +logo_path = None +color_code = "white" +font_values = ["Decorative", "MartianMono", "DancingScript", "AkayaKanadaka"] + + +# -------------------------- LOAD IMAGE AND CHECK FILE TYPE ON IMAGE CANVAS (use Frame) -------------- +def load_image(): + global img, loaded_image, image_canvas + + file_path = filedialog.askopenfilename( + filetypes=[("Image files", "*.jpg *.jpeg *.png *.bmp")] + ) + if not file_path: + return + + img = Image.open(file_path) + max_width, max_height = 800, 600 + if img.width > max_width or img.height > max_height: + ratio = min(max_width / img.width, max_height / img.height) + resize_img = img.resize( + (int(img.width * ratio), int(img.height * ratio)), Image.Resampling.LANCZOS + ) + loaded_image = ImageTk.PhotoImage(resize_img) + + window.geometry(f"{resize_img.width + 300 + 30}x{resize_img.height + 50}") + image_canvas.config(width=resize_img.width, height=resize_img.height) + image_canvas.grid(row=0, column=1, padx=20, pady=20, columnspan=2) + image_canvas.create_image(0, 0, anchor="nw", image=loaded_image) + else: + loaded_image = ImageTk.PhotoImage(img) + window.geometry(f"{img.width + 300}x{img.height + 50}") + image_canvas.config(width=img.width, height=img.height) + image_canvas.grid(row=0, column=1, padx=20, pady=20, columnspan=2) + image_canvas.create_image(0, 0, anchor="nw", image=loaded_image) + + +# ------------------------------------- DRAG AND DROP FEATURE -------- + +start_x = 0 +start_y = 0 + +new_x = 0 +new_y = 0 + + +def move_logo(e): + global logo, new_x, new_y + canvas_width = image_canvas.winfo_width() + canvas_height = image_canvas.winfo_height() + label_width = image_canvas.bbox(logo)[2] - image_canvas.bbox(logo)[0] + label_height = image_canvas.bbox(logo)[3] - image_canvas.bbox(logo)[1] + + new_x = e.x + new_y = e.y + + if new_x < 0: + new_x = 0 + elif new_x + label_width > canvas_width: + new_x = canvas_width - label_width + + if new_y < 0: + new_y = 0 + elif new_y + label_height > canvas_height: + new_y = canvas_height - label_height + image_canvas.coords(logo, new_x, new_y) + + +def move_text(e): + global text_label, new_x, new_y + canvas_width = image_canvas.winfo_width() + canvas_height = image_canvas.winfo_height() + label_width = image_canvas.bbox(text_label)[2] - image_canvas.bbox(text_label)[0] + label_height = image_canvas.bbox(text_label)[3] - image_canvas.bbox(text_label)[1] + + new_x = e.x + new_y = e.y + + if new_x < 0: + new_x = 0 + elif new_x + label_width > canvas_width: + new_x = canvas_width - label_width + + if new_y < 0: + new_y = 0 + elif new_y + label_height > canvas_height: + new_y = canvas_height - label_height + image_canvas.coords(text_label, new_x, new_y) + + +def choose_color(): + global color_code + choose_color = colorchooser.askcolor(title="Choose Color") + color_code = choose_color[1] + + +# ----------------- ADD TEXT ON CANVAS----------------- + + +def add_text_on_canvas(): + global text_label, loaded_image, user_text, img, font_values + user_text = text.get() + font_key = font_style.get() + if font_key not in font_values: + CTkMessagebox( + title="Font Not Available", + message=f"{font_key} FileNotFoundError.", + ) + return + + if logo is not None: + CTkMessagebox(title="Logo Use", message="Logo is in use.") + return + + if text_label is not None: + image_canvas.delete(text_label) # Delete previous text_label + + if loaded_image: + if user_text: + selected_size = int(font_size.get()) + pyglet.font.add_file(f"fonts/{font_key}.ttf") + text_label = image_canvas.create_text( + 10, + 10, + text=user_text, + font=(font_key, selected_size), + fill=color_code, + anchor="nw", + ) + + image_canvas.tag_bind(text_label, "", move_text) + else: + CTkMessagebox(title="Error", message="Text Filed Empty.", icon="cancel") + else: + CTkMessagebox(title="Error", message="Image Not Found. Upload Image.") + + +# ----------------------TODO UPLOAD LOGO ----------- + + +def upload_logo(): + global loaded_image, logo, logo_path, text_label + + if text_label is not None: + CTkMessagebox( + title="Text In Use", message="You are using text. Can't use logo." + ) + return + + if logo is not None: + image_canvas.delete(logo) + if loaded_image: + logo_path = filedialog.askopenfilename( + filetypes=[("Image files", "*.jpg *.jpeg *.png *.bmp")], + ) + if logo_path: + logo_image = Image.open(logo_path).convert("RGBA") + resize = logo_image.resize((160, 150)) + logo_photo = ImageTk.PhotoImage(resize) + logo = image_canvas.create_image(0, 0, anchor="nw", image=logo_photo) + image_canvas.tag_bind(logo, "", move_logo) + + image_canvas.logo_photo = logo_photo + + else: + CTkMessagebox( + title="Image Field Empty", + message="Image field empty. Click on the open image button to add the image to the canvas.", + icon="cancel", + ) + + +# ---------------------------- TODO SAVE FUNCTION --------------- +watermark = Watermark() + + +def save_image(): + global text_label, loaded_image, file_path, user_text, img, new_x, new_y, logo + if loaded_image and text_label: + width, height = img.size + canvas_width = image_canvas.winfo_width() + canvas_height = image_canvas.winfo_height() + + scale_x = width / canvas_width + scale_y = height / canvas_height + + image_x = int(new_x * scale_x) - 10 + image_y = int(new_y * scale_y) - 10 + + adjusted_font_size = int(int(font_size.get()) * min(scale_x, scale_y)) + 6 + watermarked_image = watermark.add_text_watermark( + image=img, + text=user_text, + position=(image_x, image_y), + text_color=color_code, + font_style=f"fonts/{font_style.get()}.ttf", + font_size=adjusted_font_size, + ) + + watermark.save_image(watermarked_image) + + elif loaded_image and logo_path is not None: + original_image = img.convert("RGBA") + canvas_width = image_canvas.winfo_width() + canvas_height = image_canvas.winfo_height() + + logo_image = Image.open(logo_path) + logo_resized = logo_image.resize( + ( + int(original_image.width * 0.2) + 50, + int(original_image.height * 0.2), + ) + ) + + image_width, image_height = original_image.size + logo_position = ( + int(new_x * image_width / canvas_width), + int(new_y * image_height / canvas_height), + ) + + watermark.add_logo( + image=original_image, logo=logo_resized, position=logo_position + ) + + watermark.save_image(original_image) + + +# -------------------Tab View AND OPEN IMAGE----------- + +tabview = ctk.CTkTabview(window, corner_radius=10, height=400) +tabview.grid(row=0, column=0, padx=10) + + +tab_1 = tabview.add("Text Watermark") +tab_2 = tabview.add("Logo Watermark") + + +# --------------- TEXT WATERMARK TAB_1 VIEW ---------- +tab_1.grid_columnconfigure(0, weight=1) +tab_1.grid_columnconfigure(1, weight=1) + +text = ctk.CTkEntry(master=tab_1, placeholder_text="Entry Text", width=200) +text.grid(row=2, column=0, padx=20, pady=10) + + +font_style = ctk.CTkComboBox( + master=tab_1, + values=font_values, + width=200, +) +font_style.grid(row=3, column=0, pady=10) + + +font_size = ctk.CTkComboBox( + master=tab_1, + values=[ + "10", + "12", + "14", + "20", + ], + width=200, +) +font_size.grid(row=4, column=0, pady=10) +font_size.set("10") + +add_text = ctk.CTkButton( + master=tab_1, text="Add Text", width=200, command=add_text_on_canvas +) +add_text.grid(row=5, column=0, pady=10) + + +open_image = ctk.CTkButton( + master=tab_1, text="Open Image", width=200, corner_radius=10, command=load_image +) +open_image.grid(row=7, column=0, pady=10) + +open_image2 = ctk.CTkButton( + master=tab_2, text="Open Image", width=200, corner_radius=10, command=load_image +) +open_image2.grid(row=2, column=0, padx=20, pady=10) + +pick_color = ctk.CTkButton( + master=tab_1, text="Pick Color", width=200, corner_radius=10, command=choose_color +) +pick_color.grid(row=6, column=0, padx=10, pady=10) + + +# ------------- LOGO WATERMARK SESSION TAB_2 --------------- + +logo_upload = ctk.CTkButton( + master=tab_2, text="Upload Logo", width=200, corner_radius=10, command=upload_logo +) +logo_upload.grid(row=3, column=0, pady=10) + + +# ----------------- ImageFrame --------------------- +image_canvas = ctk.CTkCanvas( + width=500, + height=360, +) +image_canvas.config(bg="gray24", highlightthickness=0, borderwidth=0) +image_canvas.grid(row=0, column=1, columnspan=2) + + +# -------- SAVE BUTTON -------- + +save_image_button = ctk.CTkButton(window, text="Save Image", command=save_image) +save_image_button.grid(pady=10) + +window.mainloop() diff --git a/Image-watermarker/fonts/AkayaKanadaka.ttf b/Image-watermarker/fonts/AkayaKanadaka.ttf new file mode 100644 index 00000000000..01eefcc02fb Binary files /dev/null and b/Image-watermarker/fonts/AkayaKanadaka.ttf differ diff --git a/Image-watermarker/fonts/DancingScript.ttf b/Image-watermarker/fonts/DancingScript.ttf new file mode 100644 index 00000000000..af175f99b06 Binary files /dev/null and b/Image-watermarker/fonts/DancingScript.ttf differ diff --git a/Image-watermarker/fonts/Decorative.ttf b/Image-watermarker/fonts/Decorative.ttf new file mode 100644 index 00000000000..ad6bd2c59fc Binary files /dev/null and b/Image-watermarker/fonts/Decorative.ttf differ diff --git a/Image-watermarker/fonts/MartianMono.ttf b/Image-watermarker/fonts/MartianMono.ttf new file mode 100644 index 00000000000..843b2903d7b Binary files /dev/null and b/Image-watermarker/fonts/MartianMono.ttf differ diff --git a/Image-watermarker/requirements.txt b/Image-watermarker/requirements.txt new file mode 100644 index 00000000000..f6fcb76c983 Binary files /dev/null and b/Image-watermarker/requirements.txt differ diff --git a/Image-watermarker/watermark.py b/Image-watermarker/watermark.py new file mode 100644 index 00000000000..dd3a11c79fc --- /dev/null +++ b/Image-watermarker/watermark.py @@ -0,0 +1,45 @@ +from PIL import ImageDraw, ImageFont +from customtkinter import filedialog +from CTkMessagebox import CTkMessagebox + + +class Watermark: + def __init__(self): + pass + + def add_text_watermark( + self, image, text, text_color, font_style, font_size, position=(0, 0) + ): + font = ImageFont.truetype(font_style, font_size) + draw = ImageDraw.Draw(image) + draw.text(position, text, fill=text_color, font=font) + return image + + def add_logo(self, image, logo, position=(0, 0)): + if logo.mode != "RGBA": + logo = logo.convert("RGBA") + if image.mode != "RGBA": + image = image.convert("RGBA") + + if (position[0] + logo.width > image.width) or ( + position[1] + logo.height > image.height + ): + CTkMessagebox(title="Logo position", message="Logo position out of bounds.") + + image.paste(logo, position, mask=logo) + return image + + def save_image(self, image): + save_path = filedialog.asksaveasfilename( + defaultextension="*.png", + title="Save as", + filetypes=[ + ("PNG files", "*.png"), + ("All files", "*.*"), + ], + ) + if save_path: + try: + image.save(save_path) + except Exception: + print("Failed to save image: {e}") diff --git a/ImageDownloader/img_downloader.py b/ImageDownloader/img_downloader.py index 9844635cdaf..7ee1bc34c09 100644 --- a/ImageDownloader/img_downloader.py +++ b/ImageDownloader/img_downloader.py @@ -2,7 +2,9 @@ def ImageDownloader(url): - import os, re, requests + import os + import re + import requests response = requests.get(url) text = response.text @@ -18,7 +20,7 @@ def ImageDownloader(url): # USAGE print("Hey!! Welcome to the Image downloader...") -link=input("Please enter the url from where you want to download the image..") +link = input("Please enter the url from where you want to download the image..") # now you can give the input at run time and get download the images. # https://www.123rf.com/stock-photo/spring_color.html?oriSearch=spring&ch=spring&sti=oazo8ueuz074cdpc48 ImageDownloader(link) diff --git a/ImageDownloader/requirements.txt b/ImageDownloader/requirements.txt index d80d9fc2a3a..727711cf16b 100644 --- a/ImageDownloader/requirements.txt +++ b/ImageDownloader/requirements.txt @@ -1 +1 @@ -requests==2.32.3 +requests==2.32.5 diff --git a/Image_resize.py b/Image_resize.py index 9c6336d8d1d..6bc312b245d 100644 --- a/Image_resize.py +++ b/Image_resize.py @@ -1,24 +1,24 @@ def jpeg_res(filename): - """"This function prints the resolution of the jpeg image file passed into it""" + """ "This function prints the resolution of the jpeg image file passed into it""" - # open image for reading in binary mode - with open(filename,'rb') as img_file: + # open image for reading in binary mode + with open(filename, "rb") as img_file: + # height of image (in 2 bytes) is at 164th position + img_file.seek(163) - # height of image (in 2 bytes) is at 164th position - img_file.seek(163) + # read the 2 bytes + a = img_file.read(2) - # read the 2 bytes - a = img_file.read(2) + # calculate height + height = (a[0] << 8) + a[1] - # calculate height - height = (a[0] << 8) + a[1] + # next 2 bytes is width + a = img_file.read(2) - # next 2 bytes is width - a = img_file.read(2) + # calculate width + width = (a[0] << 8) + a[1] - # calculate width - width = (a[0] << 8) + a[1] + print("The resolution of the image is", width, "x", height) - print("The resolution of the image is",width,"x",height) jpeg_res("img1.jpg") diff --git a/Industrial_developed_hangman/src/hangman/main.py b/Industrial_developed_hangman/src/hangman/main.py index b2a7e780ac3..3839d9222f1 100644 --- a/Industrial_developed_hangman/src/hangman/main.py +++ b/Industrial_developed_hangman/src/hangman/main.py @@ -11,7 +11,7 @@ DEBUG = False success_code = 200 request_timeout = 1000 -data_path = Path(__file__).parent.parent.parent / 'Data' +data_path = Path(__file__).parent.parent.parent / "Data" year = 4800566455 @@ -43,7 +43,9 @@ def print_right(text: str, print_function: Callable[[str], None]) -> None: print_function(Style.RESET_ALL + Fore.GREEN + text) -def parse_word_from_local(choice_function: Callable[[List[str]], str] = random.choice) -> str: +def parse_word_from_local( + choice_function: Callable[[List[str]], str] = random.choice, +) -> str: # noqa: DAR201 """ Parse word from local file. @@ -53,13 +55,15 @@ def parse_word_from_local(choice_function: Callable[[List[str]], str] = random.c :raises FileNotFoundError: file to read words not found. """ try: - with open(data_path / 'local_words.txt', encoding='utf8') as words_file: - return choice_function(words_file.read().split('\n')) + with open(data_path / "local_words.txt", encoding="utf8") as words_file: + return choice_function(words_file.read().split("\n")) except FileNotFoundError: - raise FileNotFoundError('File local_words.txt was not found') + raise FileNotFoundError("File local_words.txt was not found") -def parse_word_from_site(url: str = 'https://random-word-api.herokuapp.com/word') -> str: +def parse_word_from_site( + url: str = "https://random-word-api.herokuapp.com/word", +) -> str: # noqa: DAR201 """ Parse word from website. @@ -72,16 +76,18 @@ def parse_word_from_site(url: str = 'https://random-word-api.herokuapp.com/word' try: response: requests.Response = requests.get(url, timeout=request_timeout) except ConnectionError: - raise ConnectionError('There is no connection to the internet') + raise ConnectionError("There is no connection to the internet") if response.status_code == success_code: return json.loads(response.content.decode())[0] - raise RuntimeError('Something go wrong with getting the word from site') + raise RuntimeError("Something go wrong with getting the word from site") class MainProcess(object): """Manages game process.""" - def __init__(self, source: Enum, pr_func: Callable, in_func: Callable, ch_func: Callable) -> None: + def __init__( + self, source: Enum, pr_func: Callable, in_func: Callable, ch_func: Callable + ) -> None: """ Init MainProcess object. @@ -91,8 +97,8 @@ def __init__(self, source: Enum, pr_func: Callable, in_func: Callable, ch_func: :parameter ch_func: Function that will be used to choice word. """ self._source = source - self._answer_word = '' - self._word_string_to_show = '' + self._answer_word = "" + self._word_string_to_show = "" self._guess_attempts_coefficient = 2 self._print_function = pr_func self._input_function = in_func @@ -110,15 +116,17 @@ def get_word(self) -> str: return parse_word_from_site() elif self._source == Source.FROM_FILE: return parse_word_from_local(self._choice_function) - raise AttributeError('Non existing enum') + raise AttributeError("Non existing enum") def user_lose(self) -> None: """Print text for end of game and exits.""" - print_wrong(f"YOU LOST(the word was '{self._answer_word}')", self._print_function) # noqa:WPS305 + print_wrong( + f"YOU LOST(the word was '{self._answer_word}')", self._print_function + ) # noqa:WPS305 def user_win(self) -> None: """Print text for end of game and exits.""" - print_wrong(f'{self._word_string_to_show} YOU WON', self._print_function) # noqa:WPS305 + print_wrong(f"{self._word_string_to_show} YOU WON", self._print_function) # noqa:WPS305 def game_process(self, user_character: str) -> bool: # noqa: DAR201 @@ -133,9 +141,9 @@ def game_process(self, user_character: str) -> bool: for index, character in enumerate(self._answer_word): if character == user_character: word_list_to_show[index] = user_character - self._word_string_to_show = ''.join(word_list_to_show) + self._word_string_to_show = "".join(word_list_to_show) else: - print_wrong('There is no such character in word', self._print_function) + print_wrong("There is no such character in word", self._print_function) if self._answer_word == self._word_string_to_show: self.user_win() return True @@ -144,26 +152,32 @@ def game_process(self, user_character: str) -> bool: def start_game(self) -> None: """Start main process of the game.""" if time.time() > year: - print_right('this program is more then 100years age', self._print_function) - with open(data_path / 'text_images.txt', encoding='utf8') as text_images_file: + print_right("this program is more then 100years age", self._print_function) + with open(data_path / "text_images.txt", encoding="utf8") as text_images_file: print_wrong(text_images_file.read(), self._print_function) - print_wrong('Start guessing...', self._print_function) + print_wrong("Start guessing...", self._print_function) self._answer_word = self.get_word() - self._word_string_to_show = '_' * len(self._answer_word) + self._word_string_to_show = "_" * len(self._answer_word) attempts_amount = int(self._guess_attempts_coefficient * len(self._answer_word)) if DEBUG: print_right(self._answer_word, self._print_function) for attempts in range(attempts_amount): user_remaining_attempts = attempts_amount - attempts - print_right(f'You have {user_remaining_attempts} more attempts', self._print_function) # noqa:WPS305 - print_right(f'{self._word_string_to_show} enter character to guess: ', self._print_function) # noqa:WPS305 + print_right( + f"You have {user_remaining_attempts} more attempts", + self._print_function, + ) # noqa:WPS305 + print_right( + f"{self._word_string_to_show} enter character to guess: ", + self._print_function, + ) # noqa:WPS305 user_character = self._input_function().lower() if self.game_process(user_character): break - if '_' in self._word_string_to_show: + if "_" in self._word_string_to_show: self.user_lose() -if __name__ == '__main__': +if __name__ == "__main__": main_process = MainProcess(Source(1), print, input, random.choice) main_process.start_game() diff --git a/Industrial_developed_hangman/tests/test_hangman/test_main.py b/Industrial_developed_hangman/tests/test_hangman/test_main.py index 46d0b1d6f0e..6567e56b765 100644 --- a/Industrial_developed_hangman/tests/test_hangman/test_main.py +++ b/Industrial_developed_hangman/tests/test_hangman/test_main.py @@ -1,5 +1,3 @@ -import os -from pathlib import Path from typing import Callable, List import pytest @@ -8,7 +6,6 @@ from src.hangman.main import ( MainProcess, Source, - parse_word_from_local, parse_word_from_site, ) @@ -34,21 +31,6 @@ def choice_fn() -> Callable: return lambda array: array[0] # noqa: E731 -def test_parse_word_from_local() -> None: - assert isinstance(parse_word_from_local(), str) - - -def test_parse_word_from_local_error() -> None: - data_path = Path(os.path.abspath('')) / 'Data' - real_name = 'local_words.txt' - time_name = 'local_words_not_exist.txt' - - os.rename(data_path / real_name, data_path / time_name) - with pytest.raises(FileNotFoundError): - parse_word_from_local() - os.rename(data_path / time_name, data_path / real_name) - - @pytest.mark.internet_required def test_parse_word_from_site() -> None: assert isinstance(parse_word_from_site(), str) @@ -56,50 +38,60 @@ def test_parse_word_from_site() -> None: def test_parse_word_from_site_no_internet() -> None: with requests_mock.Mocker() as mock: - mock.get('https://random-word-api.herokuapp.com/word', text='["some text"]') - assert parse_word_from_site() == 'some text' + mock.get("https://random-word-api.herokuapp.com/word", text='["some text"]') + assert parse_word_from_site() == "some text" def test_parse_word_from_site_err() -> None: with pytest.raises(RuntimeError): - parse_word_from_site(url='https://www.google.com/dsfsdfds/sdfsdf/sdfds') + parse_word_from_site(url="https://www.google.com/dsfsdfds/sdfsdf/sdfds") def test_get_word(choice_fn: Callable) -> None: fk_print = FkPrint() - fk_input = FkInput(['none']) - main_process = MainProcess(Source(1), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn) + fk_input = FkInput(["none"]) + main_process = MainProcess( + Source(1), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn + ) assert isinstance(main_process.get_word(), str) def test_start_game_win(choice_fn: Callable) -> None: fk_print = FkPrint() - fk_input = FkInput(['j', 'a', 'm']) - main_process = MainProcess(Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn) + fk_input = FkInput(["j", "a", "m"]) + main_process = MainProcess( + Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn + ) main_process.start_game() - assert 'YOU WON' in fk_print.container[-1] + assert "YOU WON" in fk_print.container[-1] -@pytest.mark.parametrize('input_str', [[letter] * 10 for letter in 'qwertyuiopasdfghjklzxcvbnm']) # noqa: WPS435 +@pytest.mark.parametrize( + "input_str", [[letter] * 10 for letter in "qwertyuiopasdfghjklzxcvbnm"] +) # noqa: WPS435 def test_start_game_loose(input_str: List[str], choice_fn: Callable) -> None: fk_print = FkPrint() fk_input = FkInput(input_str) - main_process = MainProcess(Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn) + main_process = MainProcess( + Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn + ) main_process.start_game() - assert 'YOU LOST' in fk_print.container[-1] + assert "YOU LOST" in fk_print.container[-1] def test_wow_year(freezer, choice_fn: Callable) -> None: - freezer.move_to('2135-10-17') + freezer.move_to("2135-10-17") fk_print = FkPrint() - fk_input = FkInput(['none'] * 100) # noqa: WPS435 - main_process = MainProcess(Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn) + fk_input = FkInput(["none"] * 100) # noqa: WPS435 + main_process = MainProcess( + Source(0), pr_func=fk_print, in_func=fk_input, ch_func=choice_fn + ) main_process.start_game() - assert 'this program' in fk_print.container[0] + assert "this program" in fk_print.container[0] diff --git a/Infix_to_Postfix.py b/Infix_to_Postfix.py index bdffa82e63c..597cd35cef3 100644 --- a/Infix_to_Postfix.py +++ b/Infix_to_Postfix.py @@ -2,7 +2,6 @@ # Class to convert the expression class Conversion: - # Constructor to initialize the class variables def __init__(self, capacity): self.top = -1 @@ -52,7 +51,6 @@ def notGreater(self, i): # The main function that converts given infix expression # to postfix expression def infixToPostfix(self, exp): - # Iterate over the expression for conversion for i in exp: # If the character is an operand, diff --git a/JARVIS/JARVIS_2.0.py b/JARVIS/JARVIS_2.0.py index 6a4b738e8fa..676c6b833ce 100644 --- a/JARVIS/JARVIS_2.0.py +++ b/JARVIS/JARVIS_2.0.py @@ -13,16 +13,16 @@ import subprocess # subprocess module allows you to spawn new processes # master -import pyjokes # for generating random jokes +import pyjokes # for generating random jokes import requests import json -from PIL import Image, ImageGrab +from PIL import ImageGrab from gtts import gTTS # for 30 seconds clip "Jarvis, clip that!" and discord ctrl+k quick-move (might not come to fruition) from pynput import keyboard -from pynput.keyboard import Key, Listener -from pynput.mouse import Button, Controller +from pynput.keyboard import Key +from pynput.mouse import Controller # ======= from playsound import * # for sound output @@ -30,17 +30,18 @@ # master # auto install for pyttsx3 and speechRecognition import os + try: - import pyttsx3 #Check if already installed -except:# If not installed give exception - os.system('pip install pyttsx3')#install at run time - import pyttsx3 #import again for speak function + import pyttsx3 # Check if already installed +except: # If not installed give exception + os.system("pip install pyttsx3") # install at run time + import pyttsx3 # import again for speak function -try : +try: import speech_recognition as sr except: - os.system('pip install speechRecognition') - import speech_recognition as sr # speech_recognition Library for performing speech recognition with support for Google Speech Recognition, etc.. + os.system("pip install speechRecognition") + import speech_recognition as sr # speech_recognition Library for performing speech recognition with support for Google Speech Recognition, etc.. # importing the pyttsx3 library import webbrowser @@ -82,25 +83,32 @@ def sendEmail(to, content): server.sendmail("youremail@gmail.com", to, content) server.close() + import openai -import base64 -stab=(base64.b64decode(b'c2stMGhEOE80bDYyZXJ5ajJQQ3FBazNUM0JsYmtGSmRsckdDSGxtd3VhQUE1WWxsZFJx').decode("utf-8")) +import base64 + +stab = base64.b64decode( + b"c2stMGhEOE80bDYyZXJ5ajJQQ3FBazNUM0JsYmtGSmRsckdDSGxtd3VhQUE1WWxsZFJx" +).decode("utf-8") api_key = stab + + def ask_gpt3(que): openai.api_key = api_key response = openai.Completion.create( - engine="text-davinci-002", + engine="text-davinci-002", prompt=f"Answer the following question: {question}\n", - max_tokens=150, - n = 1, - stop=None, - temperature=0.7 + max_tokens=150, + n=1, + stop=None, + temperature=0.7, ) answer = response.choices[0].text.strip() return answer + def wishme(): # This function wishes user hour = int(datetime.datetime.now().hour) @@ -127,7 +135,7 @@ def takecommand(): print("Recognizing...") query = r.recognize_google(audio, language="en-in") print(f"User said {query}\n") - except Exception as e: + except Exception: print("Say that again please...") return "None" return query @@ -249,9 +257,9 @@ def get_app(Q): elif Q == "open github": webbrowser.open("https://github.com/") elif Q == "search for": - que=Q.lstrip("search for") + que = Q.lstrip("search for") answer = ask_gpt3(que) - + elif ( Q == "email to other" ): # here you want to change and input your mail and password whenver you implement @@ -311,8 +319,8 @@ def get_app(Q): "shell": "powershell.exe", "paint": "mspaint.exe", "cmd": "cmd.exe", - "browser": "C:\\Program Files\Internet Explorer\iexplore.exe", - "vscode": "C:\\Users\\Users\\User\\AppData\\Local\\Programs\Microsoft VS Code" + "browser": r"C:\\Program Files\Internet Explorer\iexplore.exe", + "vscode": r"C:\\Users\\Users\\User\\AppData\\Local\\Programs\Microsoft VS Code", } # master diff --git a/Job_scheduling.py b/Job_scheduling.py index 6ac96c24abd..fedad00654a 100644 --- a/Job_scheduling.py +++ b/Job_scheduling.py @@ -4,6 +4,7 @@ Author : Mohit Kumar Job Sequencing Problem implemented in python """ + from collections import namedtuple from typing import List diff --git a/Key_Binding/key_binding.py b/Key_Binding/key_binding.py index dfd448497b1..3cedfe512d7 100644 --- a/Key_Binding/key_binding.py +++ b/Key_Binding/key_binding.py @@ -3,8 +3,10 @@ session = Prompt() + @bind.add("ctrl-h") def _(event): print("Hello, World") + session.prompt("") diff --git a/Kilometerstomile.py b/Kilometerstomile.py index 2a4d33c8ff2..fc7b32304c8 100644 --- a/Kilometerstomile.py +++ b/Kilometerstomile.py @@ -6,4 +6,4 @@ # calculate miles miles = kilometers * conv_fac -print(f'{kilometers:.2f} kilometers is equal to {miles:.2f} miles') +print(f"{kilometers:.2f} kilometers is equal to {miles:.2f} miles") diff --git a/LETTER GUESSER b/LETTER GUESSER deleted file mode 100644 index 03f7290c7b4..00000000000 --- a/LETTER GUESSER +++ /dev/null @@ -1,32 +0,0 @@ -import random -import string - -ABCS = string.ascii_lowercase -ABCS = list(ABCS) - -play = True - -compChosse = random.choice(ABCS) - -print(":guess the letter (only 10 guesses):") -userInput = input("guess:") - -failed = 10 - -while failed > 0: - if userInput == compChosse: - print("---------->") - print("You are correct!") - print("---------->") - print("Your guesses: " + str(10 - failed)) - break - - elif userInput != compChosse: - failed = failed - 1 - - print(":no your wrong: " + "left: " + str(failed)) - - userInput = input("guess:") - - if failed == 0: - print("out of guesses") diff --git a/LETTER GUESSER.py b/LETTER GUESSER.py new file mode 100644 index 00000000000..0751ed25542 --- /dev/null +++ b/LETTER GUESSER.py @@ -0,0 +1,32 @@ +import random +import string + +ABCS = string.ascii_lowercase +ABCS = list(ABCS) + +play = True + +compChosse = random.choice(ABCS) + +print(":guess the letter (only 10 guesses):") +userInput = input("guess:") + +failed = 10 + +while failed > 0: + if userInput == compChosse: + print("---------->") + print("You are correct!") + print("---------->") + print("Your guesses: " + str(10 - failed)) + break + + elif userInput != compChosse: + failed = failed - 1 + + print(":no your wrong: " + "left: " + str(failed)) + + userInput = input("guess:") + + if failed == 0: + print("out of guesses") diff --git a/Laundary System/code.py b/Laundary System/code.py index 1c71e5a365b..96817e49f7b 100644 --- a/Laundary System/code.py +++ b/Laundary System/code.py @@ -1,75 +1,83 @@ -id=1 -class LaundryService: - def __init__(self,Name_of_customer,Contact_of_customer,Email,Type_of_cloth,Branded,Season,id): - self.Name_of_customer=Name_of_customer - self.Contact_of_customer=Contact_of_customer - self.Email=Email - self.Type_of_cloth=Type_of_cloth - self.Branded=Branded - self.Season=Season - self.id=id +id = 1 - def customerDetails(self): - print("The Specific Details of customer:") - print("customer ID: ",self.id) - print("customer name:", self.Name_of_customer) - print("customer contact no. :", self.Contact_of_customer) - print("customer email:", self.Email) - print("type of cloth", self.Type_of_cloth) - if self.Branded == 1: - a=True - else: - a=False - print("Branded", a) - def calculateCharge(self): - a=0 - if self.Type_of_cloth=="Cotton": - a=50.0 - elif self.Type_of_cloth=="Silk": - a=30.0 - elif self.Type_of_cloth=="Woolen": - a=90.0 - elif self.Type_of_cloth=="Polyester": - a=20.0 - if self.Branded==1: - a=1.5*(a) - else: - pass - if self.Season=="Winter": - a=0.5*a - else: - a=2*a - print(a) - return a - def finalDetails(self): - self.customerDetails() - print("Final charge:",end="") - if self.calculateCharge() >200: - print("to be return in 4 days") - else: - print("to be return in 7 days") -while True: - name=input("Enter the name: ") - contact=int(input("Enter the contact: ")) - email=input("Enter the email: ") - cloth=input("Enter the type of cloth: ") - brand=bool(input("Branded ? ")) - season=input("Enter the season: ") - obj=LaundryService(name,contact,email,cloth,brand,season,id) - obj.finalDetails() - id=id+1 - z=input("Do you want to continue(Y/N):") - if z=="Y": - continue - elif z =="N": - print("Thanks for visiting!") - break - else: - print("Select valid option") +class LaundryService: + def __init__( + self, + Name_of_customer, + Contact_of_customer, + Email, + Type_of_cloth, + Branded, + Season, + id, + ): + self.Name_of_customer = Name_of_customer + self.Contact_of_customer = Contact_of_customer + self.Email = Email + self.Type_of_cloth = Type_of_cloth + self.Branded = Branded + self.Season = Season + self.id = id + def customerDetails(self): + print("The Specific Details of customer:") + print("customer ID: ", self.id) + print("customer name:", self.Name_of_customer) + print("customer contact no. :", self.Contact_of_customer) + print("customer email:", self.Email) + print("type of cloth", self.Type_of_cloth) + if self.Branded == 1: + a = True + else: + a = False + print("Branded", a) + def calculateCharge(self): + a = 0 + if self.Type_of_cloth == "Cotton": + a = 50.0 + elif self.Type_of_cloth == "Silk": + a = 30.0 + elif self.Type_of_cloth == "Woolen": + a = 90.0 + elif self.Type_of_cloth == "Polyester": + a = 20.0 + if self.Branded == 1: + a = 1.5 * (a) + else: + pass + if self.Season == "Winter": + a = 0.5 * a + else: + a = 2 * a + print(a) + return a + def finalDetails(self): + self.customerDetails() + print("Final charge:", end="") + if self.calculateCharge() > 200: + print("to be return in 4 days") + else: + print("to be return in 7 days") - \ No newline at end of file +while True: + name = input("Enter the name: ") + contact = int(input("Enter the contact: ")) + email = input("Enter the email: ") + cloth = input("Enter the type of cloth: ") + brand = bool(input("Branded ? ")) + season = input("Enter the season: ") + obj = LaundryService(name, contact, email, cloth, brand, season, id) + obj.finalDetails() + id = id + 1 + z = input("Do you want to continue(Y/N):") + if z == "Y": + continue + elif z == "N": + print("Thanks for visiting!") + break + else: + print("Select valid option") diff --git a/LinkedLists all Types/circular_linked_list.py b/LinkedLists all Types/circular_linked_list.py new file mode 100644 index 00000000000..44e6aeee73c --- /dev/null +++ b/LinkedLists all Types/circular_linked_list.py @@ -0,0 +1,135 @@ +"""Author - Mugen https://github.com/Mugendesu""" + + +class Node: + def __init__(self, data, next=None): + self.data = data + self.next = next + + +class CircularLinkedList: + def __init__(self): + self.head = self.tail = None + self.length = 0 + + def insert_at_beginning(self, data): + node = Node(data, self.head) + if self.head is None: + self.head = self.tail = node + node.next = node + self.length += 1 + return + self.head = node + self.tail.next = node + self.length += 1 + + def insert_at_end(self, data): + node = Node(data, self.head) + if self.head is None: + self.head = self.tail = node + node.next = node + self.length += 1 + return + self.tail.next = node + self.tail = node + self.length += 1 + + def len(self): + return self.length + + def pop_at_beginning(self): + if self.head is None: + print("List is Empty!") + return + self.head = self.head.next + self.tail.next = self.head + self.length -= 1 + + def pop_at_end(self): + if self.head is None: + print("List is Empty!") + return + temp = self.head + while temp: + if temp.next is self.tail: + self.tail.next = None + self.tail = temp + temp.next = self.head + self.length -= 1 + return + temp = temp.next + + def insert_values(self, arr: list): + self.head = self.tail = None + self.length = 0 + for i in arr: + self.insert_at_end(i) + + def print(self): + if self.head is None: + print("The List is Empty!") + return + temp = self.head.next + print(f"{self.head.data} ->", end=" ") + while temp != self.head: + print(f"{temp.data} ->", end=" ") + temp = temp.next + print(f"{self.tail.next.data}") + + def insert_at(self, idx, data): + if idx == 0: + self.insert_at_beginning(data) + return + elif idx == self.length: + self.insert_at_end(data) + return + elif 0 > idx or idx > self.length: + raise Exception("Invalid Position") + return + pos = 0 + temp = self.head + while temp: + if pos == idx - 1: + node = Node(data, temp.next) + temp.next = node + self.length += 1 + return + pos += 1 + temp = temp.next + + def remove_at(self, idx): + if 0 > idx or idx >= self.length: + raise Exception("Invalid Position") + elif idx == 0: + self.pop_at_beginning() + return + elif idx == self.length - 1: + self.pop_at_end() + return + temp = self.head + pos = 0 + while temp: + if pos == idx - 1: + temp.next = temp.next.next + self.length -= 1 + return + pos += 1 + temp = temp.next + + +def main(): + ll = CircularLinkedList() + ll.insert_at_end(1) + ll.insert_at_end(4) + ll.insert_at_end(3) + ll.insert_at_beginning(2) + ll.insert_values([1, 2, 3, 4, 5, 6, 53, 3]) + # ll.pop_at_end() + ll.insert_at(8, 7) + # ll.remove_at(2) + ll.print() + print(f"{ll.len() = }") + + +if __name__ == "__main__": + main() diff --git a/LinkedLists all Types/doubly_linked_list.py b/LinkedLists all Types/doubly_linked_list.py new file mode 100644 index 00000000000..ed451dc58cd --- /dev/null +++ b/LinkedLists all Types/doubly_linked_list.py @@ -0,0 +1,261 @@ +"""Contains Most of the Doubly Linked List functions.\n +'variable_name' = doubly_linked_list.DoublyLinkedList() to use this an external module.\n +'variable_name'.insert_front('element') \t,'variable_name'.insert_back('element'),\n +'variable_name'.pop_front() are some of its functions.\n +To print all of its Functions use print('variable_name'.__dir__()).\n +Note:- 'variable_name' = doubly_linked_list.DoublyLinkedList() This line is Important before using any of the function. + +Author :- Mugen https://github.com/Mugendesu +""" + + +class Node: + def __init__(self, val=None, next=None, prev=None): + self.data = val + self.next = next + self.prev = prev + + +class DoublyLinkedList: + def __init__(self): + self.head = self.tail = None + self.length = 0 + + def insert_front(self, data): + node = Node(data, self.head) + if self.head == None: + self.tail = node + node.prev = self.head + self.head = node + self.length += 1 + + def insert_back(self, data): + node = Node(data, None, self.tail) + if self.head == None: + self.tail = self.head = node + self.length += 1 + else: + self.tail.next = node + self.tail = node + self.length += 1 + + def insert_values(self, data_values: list): + self.head = self.tail = None + self.length = 0 + for data in data_values: + self.insert_back(data) + + def pop_front(self): + if not self.head: + print("List is Empty!") + return + + self.head = self.head.next + self.head.prev = None + self.length -= 1 + + def pop_back(self): + if not self.head: + print("List is Empty!") + return + + temp = self.tail + self.tail = temp.prev + temp.prev = self.tail.next = None + self.length -= 1 + + def print(self): + if self.head is None: + print("Linked List is Empty!") + return + + temp = self.head + print("NULL <-", end=" ") + while temp: + if temp.next == None: + print(f"{temp.data} ->", end=" ") + break + print(f"{temp.data} <=>", end=" ") + temp = temp.next + print("NULL") + + def len(self): + return self.length # O(1) length calculation + # if self.head is None: + # return 0 + # count = 0 + # temp = self.head + # while temp: + # count += 1 + # temp = temp.next + # return count + + def remove_at(self, idx): + if idx < 0 or self.len() <= idx: + raise Exception("Invalid Position") + if idx == 0: + self.pop_front() + return + elif idx == self.length - 1: + self.pop_back() + return + temp = self.head + dist = 0 + while dist != idx - 1: + dist += 1 + temp = temp.next + temp.next = temp.next.next + temp.next.prev = temp.next.prev.prev + self.length -= 1 + + def insert_at(self, idx: int, data): + if idx < 0 or self.len() < idx: + raise Exception("Invalid Position") + if idx == 0: + self.insert_front(data) + return + elif idx == self.length: + self.insert_back(data) + return + temp = self.head + dist = 0 + while dist != idx - 1: + dist += 1 + temp = temp.next + node = Node(data, temp.next, temp) + temp.next = node + self.length += 1 + + def insert_after_value(self, idx_data, data): + if not self.head: # For Empty List case + print("List is Empty!") + return + + if self.head.data == idx_data: # To insert after the Head Element + self.insert_at(1, data) + return + temp = self.head + while temp: + if temp.data == idx_data: + node = Node(data, temp.next, temp) + temp.next = node + self.length += 1 + return + temp = temp.next + print("The Element is not in the List!") + + def remove_by_value(self, idx_data): + temp = self.head + if temp.data == idx_data: + self.pop_front() + return + elif self.tail.data == idx_data: + self.pop_back() + return + while temp: + if temp.data == idx_data: + temp.prev.next = temp.next + temp.next.prev = temp.prev + self.length -= 1 + return + if temp != None: + temp = temp.next + print("The Element is not the List!") + + def index(self, data): + """Returns the index of the Element""" + if not self.head: + print("List is Empty!") + return + idx = 0 + temp = self.head + while temp: + if temp.data == data: + return idx + temp = temp.next + idx += 1 + print("The Element is not in the List!") + + def search(self, idx): + """Returns the Element at the Given Index""" + if self.len() == 0 or idx >= self.len(): + raise Exception("Invalid Position") + return + temp = self.head + curr_idx = 0 + while temp: + if curr_idx == idx: + return temp.data + temp = temp.next + curr_idx += 1 + + def reverse(self): + if not self.head: + print("The List is Empty!") + return + prev = c_next = None + curr = self.head + while curr != None: + c_next = curr.next + curr.next = prev + prev = curr + curr = c_next + self.tail = self.head + self.head = prev + + def mid_element(self): + if not self.head: + print("List is Empty!") + return + slow = self.head.next + fast = self.head.next.next + while fast != None and fast.next != None: + slow = slow.next + fast = fast.next.next + return slow.data + + def __dir__(self): + funcs = [ + "insert_front", + "insert_back", + "pop_front", + "pop_back", + "print", + "len", + "length", + "remove_at", + "insert_after_value", + "index", + "search", + "reverse", + "mid_element", + "__dir__", + ] + return funcs + + +def main(): + ll: Node = DoublyLinkedList() + + ll.insert_front(1) + ll.insert_front(2) + ll.insert_front(3) + ll.insert_back(0) + ll.insert_values(["ZeroTwo", "Asuna", "Tsukasa", "Seras"]) + # ll.remove_at(3) + # ll.insert_at(4 , 'Raeliana') + # ll.pop_back() + ll.insert_after_value("Asuna", "MaoMao") + # print(ll.search(4)) + # ll.remove_by_value('Asuna') + # ll.reverse() + # print(ll.index('ZeroTwo')) + + ll.print() + # print(ll.mid_element()) + # print(ll.length) + # print(ll.__dir__()) + + +if __name__ == "__main__": + main() diff --git a/LinkedLists all Types/singly_linked_list.py b/LinkedLists all Types/singly_linked_list.py new file mode 100644 index 00000000000..f1242b29cf8 --- /dev/null +++ b/LinkedLists all Types/singly_linked_list.py @@ -0,0 +1,249 @@ +"""Contains Most of the Singly Linked List functions.\n +'variable_name' = singly_linked_list.LinkedList() to use this an external module.\n +'variable_name'.insert_front('element') \t,'variable_name'.insert_back('element'),\n +'variable_name'.pop_front() are some of its functions.\n +To print all of its Functions use print('variable_name'.__dir__()).\n +Note:- 'variable_name' = singly_linked_list.LinkedList() This line is Important before using any of the function. + +Author :- Mugen https://github.com/Mugendesu +""" + + +class Node: + def __init__(self, val=None, next=None): + self.data = val + self.next = next + + +class LinkedList: + def __init__(self): + self.head = self.tail = None + self.length = 0 + + def insert_front(self, data): + node = Node(data, self.head) + if self.head == None: + self.tail = node + self.head = node + self.length += 1 + + def insert_back(self, data): + node = Node(data) + if self.head == None: + self.tail = self.head = node + self.length += 1 + else: + self.tail.next = node + self.tail = node + self.length += 1 + + def insert_values(self, data_values: list): + self.head = self.tail = None + self.length = 0 + for data in data_values: + self.insert_back(data) + + def pop_front(self): + if not self.head: + print("List is Empty!") + return + + temp = self.head + self.head = self.head.next + temp.next = None + self.length -= 1 + + def pop_back(self): + if not self.head: + print("List is Empty!") + return + + temp = self.head + while temp.next != self.tail: + temp = temp.next + self.tail = temp + temp.next = None + self.length -= 1 + + def print(self): + if self.head is None: + print("Linked List is Empty!") + return + + temp = self.head + while temp: + print(f"{temp.data} ->", end=" ") + temp = temp.next + print("NULL") + + def len(self): + return self.length # O(1) length calculation + # if self.head is None: + # return 0 + # count = 0 + # temp = self.head + # while temp: + # count += 1 + # temp = temp.next + # return count + + def remove_at(self, idx): + if idx < 0 or self.len() <= idx: + raise Exception("Invalid Position") + if idx == 0: + self.head = self.head.next + self.length -= 1 + return + temp = self.head + dist = 0 + while dist != idx - 1: + dist += 1 + temp = temp.next + temp.next = temp.next.next + self.length -= 1 + + def insert_at(self, idx: int, data): + if idx < 0 or self.len() < idx: + raise Exception("Invalid Position") + if idx == 0: + self.insert_front(data) + return + temp = self.head + dist = 0 + while dist != idx - 1: + dist += 1 + temp = temp.next + node = Node(data, temp.next) + temp.next = node + self.length += 1 + + def insert_after_value(self, idx_data, data): + if not self.head: # For Empty List case + print("List is Empty!") + return + + if self.head.data == idx_data: # To insert after the Head Element + self.insert_at(1, data) + return + temp = self.head + while temp: + if temp.data == idx_data: + node = Node(data, temp.next) + temp.next = node + self.length += 1 + return + temp = temp.next + print("The Element is not in the List!") + + def remove_by_value(self, idx_data): + temp = self.head + if temp.data == idx_data: + self.head = self.head.next + self.length -= 1 + temp.next = None + return + while temp.next != None: + if temp.next.data == idx_data: + temp.next = temp.next.next + self.length -= 1 + return + + temp = temp.next + print("Element is not in the List!") + + def index(self, data): + """Returns the index of the Element""" + if not self.head: + print("List is Empty!") + return + idx = 0 + temp = self.head + while temp: + if temp.data == data: + return idx + temp = temp.next + idx += 1 + print("The Element is not in the List!") + + def search(self, idx): + """Returns the Element at the Given Index""" + if self.len() == 0 or idx >= self.len(): + raise Exception("Invalid Position") + return + temp = self.head + curr_idx = 0 + while temp: + if curr_idx == idx: + return temp.data + temp = temp.next + curr_idx += 1 + + def reverse(self): + if not self.head: + print("The List is Empty!") + return + prev = c_next = None + curr = self.head + while curr != None: + c_next = curr.next + curr.next = prev + prev = curr + curr = c_next + self.tail = self.head + self.head = prev + + def mid_element(self): + if not self.head: + print("List is Empty!") + return + slow = self.head.next + fast = self.head.next.next + while fast != None and fast.next != None: + slow = slow.next + fast = fast.next.next + return slow.data + + def __dir__(self): + funcs = [ + "insert_front", + "insert_back", + "pop_front", + "pop_back", + "print", + "len", + "length", + "remove_at", + "insert_after_value", + "index", + "search", + "reverse", + "mid_element", + "__dir__", + ] + return funcs + + +def main(): + ll: Node = LinkedList() + + # # ll.insert_front(1) + # # ll.insert_front(2) + # # ll.insert_front(3) + # # ll.insert_back(0) + # ll.insert_values(['ZeroTwo' , 'Asuna' , 'Tsukasa' , 'Seras' ]) + # # ll.remove_at(3) + # ll.insert_at(2 , 'Raeliana') + # # ll.pop_front() + # ll.insert_after_value('Raeliana' , 'MaoMao') + # # print(ll.search(5)) + # ll.remove_by_value('Tsukasa') + # ll.reverse() + + # ll.print() + # print(ll.mid_element()) + # print(ll.length) + print(ll.__dir__()) + + +if __name__ == "__main__": + main() diff --git a/List.py b/List.py index bfc9b223f26..4f93052338c 100644 --- a/List.py +++ b/List.py @@ -1,14 +1,14 @@ List = [] # List is Muteable # means value can be change -List.insert(0, 5) #insertion takes place at mentioned index -List.insert(1, 10) +List.insert(0, 5) # insertion takes place at mentioned index +List.insert(1, 10) List.insert(0, 6) print(List) -List.remove(6) -List.append(9) #insertion takes place at last +List.remove(6) +List.append(9) # insertion takes place at last List.append(1) -List.sort() #arranges element in ascending order +List.sort() # arranges element in ascending order print(List) List.pop() List.reverse() diff --git a/ML House Prediction.ipynb b/ML House Prediction.ipynb index b838d064550..9f0fbbedaf6 100644 --- a/ML House Prediction.ipynb +++ b/ML House Prediction.ipynb @@ -22,7 +22,7 @@ "metadata": {}, "outputs": [], "source": [ - "housing= pd.read_csv(\"data.csv\")" + "housing = pd.read_csv(\"data.csv\")" ] }, { @@ -457,9 +457,7 @@ "execution_count": 7, "metadata": {}, "outputs": [], - "source": [ - "import matplotlib.pyplot as plt" - ] + "source": [] }, { "cell_type": "code", @@ -504,7 +502,7 @@ } ], "source": [ - "housing.hist(bins=50,figsize=(20,15))" + "housing.hist(bins=50, figsize=(20, 15))" ] }, { @@ -521,13 +519,15 @@ "outputs": [], "source": [ "import numpy as np\n", + "\n", + "\n", "def split_train_test(data, test_ratio):\n", " np.random.seed(42)\n", - " shuffled =np.random.permutation(len(data))\n", - " test_set_size =int(len(data)*test_ratio)\n", + " shuffled = np.random.permutation(len(data))\n", + " test_set_size = int(len(data) * test_ratio)\n", " test_indices = shuffled[:test_set_size]\n", " train_indices = shuffled[test_set_size:]\n", - " return data.iloc[train_indices],data.iloc[test_indices]" + " return data.iloc[train_indices], data.iloc[test_indices]" ] }, { @@ -536,7 +536,7 @@ "metadata": {}, "outputs": [], "source": [ - "train_set, test_set =split_train_test(housing,0.2)" + "train_set, test_set = split_train_test(housing, 0.2)" ] }, { @@ -573,7 +573,8 @@ ], "source": [ "from sklearn.model_selection import train_test_split\n", - "train_set, test_set =train_test_split(housing, test_size=0.2, random_state=42)\n", + "\n", + "train_set, test_set = train_test_split(housing, test_size=0.2, random_state=42)\n", "print(f\"Rows in train set: {len(train_set)} \\nRows in test set : {len(test_set)}\")" ] }, @@ -584,10 +585,11 @@ "outputs": [], "source": [ "from sklearn.model_selection import StratifiedShuffleSplit\n", - "split= StratifiedShuffleSplit(n_splits=1,test_size=0.2, random_state=42)\n", - "for train_index, test_index in split.split(housing, housing['CHAS']):\n", - " strat_train_set=housing.loc[train_index]\n", - " strat_test_set=housing.loc[test_index]" + "\n", + "split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)\n", + "for train_index, test_index in split.split(housing, housing[\"CHAS\"]):\n", + " strat_train_set = housing.loc[train_index]\n", + " strat_test_set = housing.loc[test_index]" ] }, { @@ -833,7 +835,7 @@ } ], "source": [ - "strat_test_set['CHAS'].value_counts()" + "strat_test_set[\"CHAS\"].value_counts()" ] }, { @@ -855,7 +857,7 @@ } ], "source": [ - "strat_train_set['CHAS'].value_counts()" + "strat_train_set[\"CHAS\"].value_counts()" ] }, { @@ -864,7 +866,7 @@ "metadata": {}, "outputs": [], "source": [ - "housing= strat_train_set.copy() # use just after split data" + "housing = strat_train_set.copy() # use just after split data" ] }, { @@ -914,7 +916,7 @@ } ], "source": [ - "corr_matrix['MEDV'].sort_values(ascending=False)" + "corr_matrix[\"MEDV\"].sort_values(ascending=False)" ] }, { @@ -962,8 +964,9 @@ ], "source": [ "from pandas.plotting import scatter_matrix\n", - "attributes=[\"MEDV\",\"RM\",\"ZN\",\"LSTAT\"]\n", - "scatter_matrix(housing[attributes],figsize =(12,8))" + "\n", + "attributes = [\"MEDV\", \"RM\", \"ZN\", \"LSTAT\"]\n", + "scatter_matrix(housing[attributes], figsize=(12, 8))" ] }, { @@ -995,7 +998,7 @@ } ], "source": [ - "housing.plot(kind=\"scatter\",x=\"RM\",y=\"MEDV\",alpha=0.8)" + "housing.plot(kind=\"scatter\", x=\"RM\", y=\"MEDV\", alpha=0.8)" ] }, { @@ -1048,7 +1051,7 @@ } ], "source": [ - "median=housing[\"RM\"].median()\n", + "median = housing[\"RM\"].median()\n", "housing[\"RM\"].fillna(median)\n", "housing.shape" ] @@ -1071,7 +1074,8 @@ ], "source": [ "from sklearn.impute import SimpleImputer\n", - "imputer = SimpleImputer(strategy = \"median\")\n", + "\n", + "imputer = SimpleImputer(strategy=\"median\")\n", "imputer.fit(housing)" ] }, @@ -1310,8 +1314,8 @@ } ], "source": [ - "X= imputer.transform(housing)\n", - "housing_tr =pd.DataFrame(X,columns = housing.columns)\n", + "X = imputer.transform(housing)\n", + "housing_tr = pd.DataFrame(X, columns=housing.columns)\n", "housing_tr.describe()" ] }, @@ -1363,10 +1367,10 @@ "source": [ "from sklearn.pipeline import Pipeline\n", "from sklearn.preprocessing import StandardScaler\n", - "my_pipeline= Pipeline([\n", - " ('imputer',SimpleImputer(strategy=\"median\")),\n", - " ('std_scaler',StandardScaler())\n", - "])" + "\n", + "my_pipeline = Pipeline(\n", + " [(\"imputer\", SimpleImputer(strategy=\"median\")), (\"std_scaler\", StandardScaler())]\n", + ")" ] }, { @@ -1375,7 +1379,7 @@ "metadata": {}, "outputs": [], "source": [ - "housing_num_tr =my_pipeline.fit_transform(housing)" + "housing_num_tr = my_pipeline.fit_transform(housing)" ] }, { @@ -1424,11 +1428,10 @@ } ], "source": [ - "from sklearn.linear_model import LinearRegression\n", - "from sklearn.tree import DecisionTreeRegressor\n", "from sklearn.ensemble import RandomForestRegressor\n", - "#model = LinearRegression()\n", - "#model = DecisionTreeRegressor()\n", + "\n", + "# model = LinearRegression()\n", + "# model = DecisionTreeRegressor()\n", "model = RandomForestRegressor()\n", "model.fit(housing_num_tr, housing_labels)" ] @@ -1499,9 +1502,10 @@ "outputs": [], "source": [ "from sklearn.metrics import mean_squared_error\n", - "housing_predictions=model.predict(housing_num_tr)\n", - "lin_mse= mean_squared_error(housing_labels, housing_predictions)\n", - "lin_rmse=np.sqrt(lin_mse)" + "\n", + "housing_predictions = model.predict(housing_num_tr)\n", + "lin_mse = mean_squared_error(housing_labels, housing_predictions)\n", + "lin_rmse = np.sqrt(lin_mse)" ] }, { @@ -1558,7 +1562,10 @@ "outputs": [], "source": [ "from sklearn.model_selection import cross_val_score\n", - "scores = cross_val_score(model, housing_num_tr, housing_labels,scoring=\"neg_mean_squared_error\",cv=10)\n", + "\n", + "scores = cross_val_score(\n", + " model, housing_num_tr, housing_labels, scoring=\"neg_mean_squared_error\", cv=10\n", + ")\n", "rmse_scores = np.sqrt(-scores)" ] }, @@ -1590,9 +1597,9 @@ "outputs": [], "source": [ "def print_scores(scores):\n", - " print(\"scores: \",scores)\n", - " print(\"Mean: \",scores.mean())\n", - " print(\"Standard deviation: \",scores.std()) " + " print(\"scores: \", scores)\n", + " print(\"Mean: \", scores.mean())\n", + " print(\"Standard deviation: \", scores.std())" ] }, { @@ -1639,8 +1646,9 @@ } ], "source": [ - "from joblib import dump, load\n", - "dump(model, 'HousingPricePredicter.joblib')" + "from joblib import dump\n", + "\n", + "dump(model, \"HousingPricePredicter.joblib\")" ] }, { @@ -1656,7 +1664,7 @@ "metadata": {}, "outputs": [], "source": [ - "X_test = strat_test_set.drop(\"MEDV\" , axis=1)\n", + "X_test = strat_test_set.drop(\"MEDV\", axis=1)\n", "Y_test = strat_test_set[\"MEDV\"].copy()\n", "X_test_prepared = my_pipeline.transform(X_test)\n", "final_predictions = model.predict(X_test_prepared)\n", diff --git a/Mad Libs Generator.py b/Mad Libs Generator.py index e8bd53b3a93..652716a2ae6 100644 --- a/Mad Libs Generator.py +++ b/Mad Libs Generator.py @@ -1,22 +1,22 @@ -#Loop back to this point once code finishes +# Loop back to this point once code finishes loop = 1 -while (loop < 10): -# All the questions that the program asks the user +while loop < 10: + # All the questions that the program asks the user noun = input("Choose a noun: ") p_noun = input("Choose a plural noun: ") noun2 = input("Choose a noun: ") place = input("Name a place: ") adjective = input("Choose an adjective (Describing word): ") noun3 = input("Choose a noun: ") -# Displays the story based on the users input - print ("------------------------------------------") - print ("Be kind to your",noun,"- footed", p_noun) - print ("For a duck may be somebody's", noun2,",") - print ("Be kind to your",p_noun,"in",place) - print ("Where the weather is always",adjective,".") - print () - print ("You may think that is this the",noun3,",") - print ("Well it is.") - print ("------------------------------------------") -# Loop back to "loop = 1" + # Displays the story based on the users input + print("------------------------------------------") + print("Be kind to your", noun, "- footed", p_noun) + print("For a duck may be somebody's", noun2, ",") + print("Be kind to your", p_noun, "in", place) + print("Where the weather is always", adjective, ".") + print() + print("You may think that is this the", noun3, ",") + print("Well it is.") + print("------------------------------------------") + # Loop back to "loop = 1" loop = loop + 1 diff --git a/Memory_game.py b/Memory_game.py index aca7f2fe81c..2b320623a92 100644 --- a/Memory_game.py +++ b/Memory_game.py @@ -1,71 +1,157 @@ import random +import pygame +import sys -import simplegui - - -def new_game(): - global card3, po, state, exposed, card1 - - def create(card): - while len(card) != 8: - num = random.randrange(0, 8) - if num not in card: - card.append(num) - return card - - card3 = [] - card1 = [] - card2 = [] - po = [] - card1 = create(card1) - card2 = create(card2) - card1.extend(card2) - random.shuffle(card1) - state = 0 - exposed = [] - for i in range(0, 16, 1): - exposed.insert(i, False) - - -def mouseclick(pos): - global card3, po, state, exposed, card1 - if state == 2: - if card3[0] != card3[1]: - exposed[po[0]] = False - exposed[po[1]] = False - card3 = [] - state = 0 - po = [] - ind = pos[0] // 50 - card3.append(card1[ind]) - po.append(ind) - if exposed[ind] == False and state < 2: - exposed[ind] = True - state += 1 - - -def draw(canvas): - global card1 - gap = 0 - for i in range(0, 16, 1): - if exposed[i] == False: - canvas.draw_polygon( - [[0 + gap, 0], [0 + gap, 100], [50 + gap, 100], [50 + gap, 0]], - 1, - "Black", - "Green", +# Initialisation de pygame +pygame.init() + +# Définir les couleurs +WHITE = (255, 255, 255) +PASTEL_PINK = (255, 182, 193) +PINK = (255, 105, 180) +LIGHT_PINK = (255, 182, 193) +GREY = (169, 169, 169) + +# Définir les dimensions de la fenêtre +WIDTH = 600 +HEIGHT = 600 +FPS = 30 +CARD_SIZE = 100 + +# Créer la fenêtre +screen = pygame.display.set_mode((WIDTH, HEIGHT)) +pygame.display.set_caption("Memory Game : Les Préférences de Malak") + +# Charger les polices +font = pygame.font.Font(None, 40) +font_small = pygame.font.Font(None, 30) + +# Liste des questions et réponses (préférences) +questions = [ + { + "question": "Quelle est sa couleur préférée ?", + "réponse": "Rose", + "image": "rose.jpg", + }, + { + "question": "Quel est son plat préféré ?", + "réponse": "Pizza", + "image": "pizza.jpg", + }, + { + "question": "Quel est son animal préféré ?", + "réponse": "Chat", + "image": "chat.jpg", + }, + { + "question": "Quel est son film préféré ?", + "réponse": "La La Land", + "image": "lalaland.jpg", + }, +] + +# Créer les cartes avec des questions et réponses +cards = [] +for q in questions: + cards.append(q["réponse"]) + cards.append(q["réponse"]) + +# Mélanger les cartes +random.shuffle(cards) + +# Créer un dictionnaire pour les positions des cartes +card_positions = [(x * CARD_SIZE, y * CARD_SIZE) for x in range(4) for y in range(4)] + + +# Fonction pour afficher le texte +def display_text(text, font, color, x, y): + text_surface = font.render(text, True, color) + screen.blit(text_surface, (x, y)) + + +# Fonction pour dessiner les cartes +def draw_cards(): + for idx, pos in enumerate(card_positions): + x, y = pos + if visible[idx]: + pygame.draw.rect(screen, WHITE, pygame.Rect(x, y, CARD_SIZE, CARD_SIZE)) + display_text(cards[idx], font, PINK, x + 10, y + 30) + else: + pygame.draw.rect( + screen, LIGHT_PINK, pygame.Rect(x, y, CARD_SIZE, CARD_SIZE) ) - elif exposed[i] == True: - canvas.draw_text(str(card1[i]), [15 + gap, 65], 50, "White") - gap += 50 + pygame.draw.rect(screen, GREY, pygame.Rect(x, y, CARD_SIZE, CARD_SIZE), 5) + + +# Variables du jeu +visible = [False] * len(cards) +flipped_cards = [] +score = 0 + +# Boucle principale du jeu +running = True +while running: + screen.fill(PASTEL_PINK) + draw_cards() + display_text("Score: " + str(score), font_small, PINK, 20, 20) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + if event.type == pygame.MOUSEBUTTONDOWN: + x, y = pygame.mouse.get_pos() + col = x // CARD_SIZE + row = y // CARD_SIZE + card_idx = row * 4 + col + + if not visible[card_idx]: + visible[card_idx] = True + flipped_cards.append(card_idx) + if len(flipped_cards) == 2: + if cards[flipped_cards[0]] == cards[flipped_cards[1]]: + score += 1 + else: + pygame.time.delay(1000) + visible[flipped_cards[0]] = visible[flipped_cards[1]] = False + flipped_cards.clear() -frame = simplegui.create_frame("Memory", 800, 100) -frame.add_button("Reset", new_game) -label = frame.add_label("Turns = 0") + if score == len(questions): + display_text( + "Félicitations ! Vous êtes officiellement le plus grand fan de Malak.", + font, + PINK, + 100, + HEIGHT // 2, + ) + display_text( + "Mais… Pour accéder au prix ultime (photo ultra exclusive + certificat de starlette n°1),", + font_small, + PINK, + 30, + HEIGHT // 2 + 40, + ) + display_text( + "veuillez envoyer 1000$ à Malak Inc.", + font_small, + PINK, + 150, + HEIGHT // 2 + 70, + ) + display_text( + "(paiement accepté en chocolat, câlins ou virement bancaire immédiat)", + font_small, + PINK, + 100, + HEIGHT // 2 + 100, + ) + pygame.display.update() + pygame.time.delay(3000) + running = False -frame.set_mouseclick_handler(mouseclick) -frame.set_draw_handler(draw) + pygame.display.update() + pygame.time.Clock().tick(FPS) -new_game() -frame.start() +# Quitter pygame +pygame.quit() +sys.exit() diff --git a/Merge_linked_list.py b/Merge_linked_list.py index 5c1f61e1bcc..b5b38a7a132 100644 --- a/Merge_linked_list.py +++ b/Merge_linked_list.py @@ -10,7 +10,6 @@ def __init__(self, data): # Constructor to initialize the node object class LinkedList: - # Function to initialize head def __init__(self): self.head = None @@ -38,7 +37,6 @@ def append(self, new_data): # Function to merge two sorted linked list. def mergeLists(head1, head2): - # create a temp node NULL temp = None @@ -53,7 +51,6 @@ def mergeLists(head1, head2): # If List1's data is smaller or # equal to List2's data if head1.data <= head2.data: - # assign temp to List1's data temp = head1 @@ -76,7 +73,6 @@ def mergeLists(head1, head2): # Driver Function if __name__ == "__main__": - # Create linked list : # 10->20->30->40->50 list1 = LinkedList() diff --git a/Model Usage.ipynb b/Model Usage.ipynb index 9a630b2068a..fbc01ccc46c 100644 --- a/Model Usage.ipynb +++ b/Model Usage.ipynb @@ -6,9 +6,10 @@ "metadata": {}, "outputs": [], "source": [ - "from joblib import dump, load\n", + "from joblib import load\n", "import numpy as np\n", - "model = load('HousingPricePredicter.joblib')" + "\n", + "model = load(\"HousingPricePredicter.joblib\")" ] }, { @@ -17,9 +18,25 @@ "metadata": {}, "outputs": [], "source": [ - "features = np.array([[-0.43942006, 3.12628155, -1.12165014, -0.27288841, -1.42262747,\n", - " -0.24141041, -1.31238772, 2.61111401, -1.0016859 , -0.5778192 ,\n", - " -0.97491834, 0.41164221, -0.86091034]])\n" + "features = np.array(\n", + " [\n", + " [\n", + " -0.43942006,\n", + " 3.12628155,\n", + " -1.12165014,\n", + " -0.27288841,\n", + " -1.42262747,\n", + " -0.24141041,\n", + " -1.31238772,\n", + " 2.61111401,\n", + " -1.0016859,\n", + " -0.5778192,\n", + " -0.97491834,\n", + " 0.41164221,\n", + " -0.86091034,\n", + " ]\n", + " ]\n", + ")" ] }, { diff --git a/Monitor Apache b/Monitor Apache deleted file mode 100644 index 50afdd1fdac..00000000000 --- a/Monitor Apache +++ /dev/null @@ -1,26 +0,0 @@ -Monitor Apache / Nginx Log File -Count the number of hits in a Apache/Nginx -This small script will count the number of hits in a Apache/Nginx log file. -How it works -This script can easily be adapted to any other log file. - -The script starts with making an empty dictionary for storing the IP addresses andcount how many times they exist. - -Then we open the file (in this example the Nginx access.log file) and read the -content line by line. - -The for loop go through the file and splits the strings to get the IP address. - -The len() function is used to ensure the length of IP address. - -If the IP already exists , increase by 1. -ips = {} - -fh = open("/var/log/nginx/access.log", "r").readlines() -for line in fh: - ip = line.split(" ")[0] - if 6 < len(ip) <=15: - ips[ip] = ips.get(ip, 0) + 1 -print ips -Test it out -If you now browse to your website, and run the python script, you should see your IP address + the counts. diff --git a/Mp3_media_player.py b/Mp3_media_player.py index 0eff5d9c379..1a778d4da66 100644 --- a/Mp3_media_player.py +++ b/Mp3_media_player.py @@ -20,13 +20,11 @@ def directorychooser(): - directory = askdirectory() os.chdir(directory) for files in os.listdir(directory): if files.endswith(".mp3"): - realdir = os.path.realpath(files) audio = ID3(realdir) realnames.append(audio["TIT2"].text[0]) diff --git a/Multiply.py b/Multiply.py index ab37d64d0d2..c8e1b52228f 100644 --- a/Multiply.py +++ b/Multiply.py @@ -1,11 +1,12 @@ -def product(a,b): - if(a>>> mycursor.execute("SQL Query") mycursor.execute("SELECT column FROM table") diff --git a/News_App/Newsapp.py b/News_App/Newsapp.py index 0f3f976e9fa..5580bd24530 100644 --- a/News_App/Newsapp.py +++ b/News_App/Newsapp.py @@ -1,10 +1,9 @@ -import os import solara as sr import yfinance as yf from patterns import Company_Name -from datetime import datetime as date,timedelta +from datetime import datetime as date, timedelta srart_date = date.today() end_date = date.today() + timedelta(days=1) @@ -12,21 +11,20 @@ def News(symbol): get_Data = yf.Ticker(symbol) - - #news section + + # news section try: NEWS = get_Data.news sr.Markdown(f"# News of {v.value} :") for i in range(len(NEWS)): sr.Markdown("\n********************************\n") - sr.Markdown(f"## {i+1}. {NEWS[i]['title']} \n ") + sr.Markdown(f"## {i + 1}. {NEWS[i]['title']} \n ") sr.Markdown(f"**Publisher** : {NEWS[i]['publisher']}\n") sr.Markdown(f"**Link** : {NEWS[i]['link']}\n") sr.Markdown(f"**News type** : {NEWS[i]['type']}\n\n\n") try: - - resolutions = NEWS[i]['thumbnail']['resolutions'] - img = resolutions[0]['url'] + resolutions = NEWS[i]["thumbnail"]["resolutions"] + img = resolutions[0]["url"] sr.Image(img) except: @@ -36,22 +34,19 @@ def News(symbol): sr.Markdown("No news available") - - company = list(Company_Name.keys()) -v=sr.reactive(company[0]) +v = sr.reactive(company[0]) + @sr.component def Page(): with sr.Column() as main: with sr.Sidebar(): sr.Markdown("## **stock Analysis**") - sr.Select("Select stock",value=v,values=company) - - select=Company_Name.get(v.value) + sr.Select("Select stock", value=v, values=company) + select = Company_Name.get(v.value) News(select) return main - diff --git a/News_App/patterns.py b/News_App/patterns.py index 7073d6ea756..7d1074c65d3 100644 --- a/News_App/patterns.py +++ b/News_App/patterns.py @@ -1,122 +1,119 @@ - - - patterns = { -'CDLHARAMI':'Harami Pattern', -'CDLHARAMICROSS':'Harami Cross Pattern', -'CDL2CROWS':'Two Crows', -'CDL3BLACKCROWS':'Three Black Crows', -'CDL3INSIDE':'Three Inside Up/Down', -'CDL3LINESTRIKE':'Three-Line Strike', -'CDL3OUTSIDE':'Three Outside Up/Down', -'CDL3STARSINSOUTH':'Three Stars In The South', -'CDL3WHITESOLDIERS':'Three Advancing White Soldiers', -'CDLABANDONEDBABY':'Abandoned Baby', -'CDLADVANCEBLOCK':'Advance Block', -'CDLBELTHOLD':'Belt-hold', -'CDLBREAKAWAY':'Breakaway', -'CDLCLOSINGMARUBOZU':'Closing Marubozu', -'CDLCONCEALBABYSWALL':'Concealing Baby Swallow', -'CDLCOUNTERATTACK':'Counterattack', -'CDLDARKCLOUDCOVER':'Dark Cloud Cover', -'CDLDOJI':'Doji', -'CDLDOJISTAR':'Doji Star', -'CDLDRAGONFLYDOJI':'Dragonfly Doji', -'CDLENGULFING':'Engulfing Pattern', -'CDLEVENINGDOJISTAR':'Evening Doji Star', -'CDLEVENINGSTAR':'Evening Star', -'CDLGAPSIDESIDEWHITE':'Up/Down-gap side-by-side white lines', -'CDLGRAVESTONEDOJI':'Gravestone Doji', -'CDLHAMMER':'Hammer', -'CDLHANGINGMAN':'Hanging Man', -'CDLHIGHWAVE':'High-Wave Candle', -'CDLHIKKAKE':'Hikkake Pattern', -'CDLHIKKAKEMOD':'Modified Hikkake Pattern', -'CDLHOMINGPIGEON':'Homing Pigeon', -'CDLIDENTICAL3CROWS':'Identical Three Crows', -'CDLINNECK':'In-Neck Pattern', -'CDLINVERTEDHAMMER':'Inverted Hammer', -'CDLKICKING':'Kicking', -'CDLKICKINGBYLENGTH':'Kicking - bull/bear determined by the longer marubozu', -'CDLLADDERBOTTOM':'Ladder Bottom', -'CDLLONGLEGGEDDOJI':'Long Legged Doji', -'CDLLONGLINE':'Long Line Candle', -'CDLMARUBOZU':'Marubozu', -'CDLMATCHINGLOW':'Matching Low', -'CDLMATHOLD':'Mat Hold', -'CDLMORNINGDOJISTAR':'Morning Doji Star', -'CDLMORNINGSTAR':'Morning Star', -'CDLONNECK':'On-Neck Pattern', -'CDLPIERCING':'Piercing Pattern', -'CDLRICKSHAWMAN':'Rickshaw Man', -'CDLRISEFALL3METHODS':'Rising/Falling Three Methods', -'CDLSEPARATINGLINES':'Separating Lines', -'CDLSHOOTINGSTAR':'Shooting Star', -'CDLSHORTLINE':'Short Line Candle', -'CDLSPINNINGTOP':'Spinning Top', -'CDLSTALLEDPATTERN':'Stalled Pattern', -'CDLSTICKSANDWICH':'Stick Sandwich', -'CDLTAKURI':'Takuri (Dragonfly Doji with very long lower shadow)', -'CDLTASUKIGAP':'Tasuki Gap', -'CDLTHRUSTING':'Thrusting Pattern', -'CDLTRISTAR':'Tristar Pattern', -'CDLUNIQUE3RIVER':'Unique 3 River', -'CDLUPSIDEGAP2CROWS':'Upside Gap Two Crows', -'CDLXSIDEGAP3METHODS':'Upside/Downside Gap Three Methods' + "CDLHARAMI": "Harami Pattern", + "CDLHARAMICROSS": "Harami Cross Pattern", + "CDL2CROWS": "Two Crows", + "CDL3BLACKCROWS": "Three Black Crows", + "CDL3INSIDE": "Three Inside Up/Down", + "CDL3LINESTRIKE": "Three-Line Strike", + "CDL3OUTSIDE": "Three Outside Up/Down", + "CDL3STARSINSOUTH": "Three Stars In The South", + "CDL3WHITESOLDIERS": "Three Advancing White Soldiers", + "CDLABANDONEDBABY": "Abandoned Baby", + "CDLADVANCEBLOCK": "Advance Block", + "CDLBELTHOLD": "Belt-hold", + "CDLBREAKAWAY": "Breakaway", + "CDLCLOSINGMARUBOZU": "Closing Marubozu", + "CDLCONCEALBABYSWALL": "Concealing Baby Swallow", + "CDLCOUNTERATTACK": "Counterattack", + "CDLDARKCLOUDCOVER": "Dark Cloud Cover", + "CDLDOJI": "Doji", + "CDLDOJISTAR": "Doji Star", + "CDLDRAGONFLYDOJI": "Dragonfly Doji", + "CDLENGULFING": "Engulfing Pattern", + "CDLEVENINGDOJISTAR": "Evening Doji Star", + "CDLEVENINGSTAR": "Evening Star", + "CDLGAPSIDESIDEWHITE": "Up/Down-gap side-by-side white lines", + "CDLGRAVESTONEDOJI": "Gravestone Doji", + "CDLHAMMER": "Hammer", + "CDLHANGINGMAN": "Hanging Man", + "CDLHIGHWAVE": "High-Wave Candle", + "CDLHIKKAKE": "Hikkake Pattern", + "CDLHIKKAKEMOD": "Modified Hikkake Pattern", + "CDLHOMINGPIGEON": "Homing Pigeon", + "CDLIDENTICAL3CROWS": "Identical Three Crows", + "CDLINNECK": "In-Neck Pattern", + "CDLINVERTEDHAMMER": "Inverted Hammer", + "CDLKICKING": "Kicking", + "CDLKICKINGBYLENGTH": "Kicking - bull/bear determined by the longer marubozu", + "CDLLADDERBOTTOM": "Ladder Bottom", + "CDLLONGLEGGEDDOJI": "Long Legged Doji", + "CDLLONGLINE": "Long Line Candle", + "CDLMARUBOZU": "Marubozu", + "CDLMATCHINGLOW": "Matching Low", + "CDLMATHOLD": "Mat Hold", + "CDLMORNINGDOJISTAR": "Morning Doji Star", + "CDLMORNINGSTAR": "Morning Star", + "CDLONNECK": "On-Neck Pattern", + "CDLPIERCING": "Piercing Pattern", + "CDLRICKSHAWMAN": "Rickshaw Man", + "CDLRISEFALL3METHODS": "Rising/Falling Three Methods", + "CDLSEPARATINGLINES": "Separating Lines", + "CDLSHOOTINGSTAR": "Shooting Star", + "CDLSHORTLINE": "Short Line Candle", + "CDLSPINNINGTOP": "Spinning Top", + "CDLSTALLEDPATTERN": "Stalled Pattern", + "CDLSTICKSANDWICH": "Stick Sandwich", + "CDLTAKURI": "Takuri (Dragonfly Doji with very long lower shadow)", + "CDLTASUKIGAP": "Tasuki Gap", + "CDLTHRUSTING": "Thrusting Pattern", + "CDLTRISTAR": "Tristar Pattern", + "CDLUNIQUE3RIVER": "Unique 3 River", + "CDLUPSIDEGAP2CROWS": "Upside Gap Two Crows", + "CDLXSIDEGAP3METHODS": "Upside/Downside Gap Three Methods", } -Company_Name ={ -"NIFTY 50" :"^NSEI", -"NIFTY BANK" : "^NSEBANK", -"INDIA VIX" : "^INDIAVIX", -"ADANI ENTERPRISES ":"ADANIENT.NS", -"ADANI PORTS AND SPECIAL ECONOMIC ZONE ":"ADANIPORTS.NS", -"APOLLO HOSPITALS ENTERPRISE ":"APOLLOHOSP.NS", -"ASIAN PAINTS ":"ASIANPAINT.NS", -"Axis Bank ":"AXISBANK.NS", -"MARUTI SUZUKI INDIA ":"MARUTI.NS", -"BAJAJ FINANCE ":"BAJFINANCE.NS", -"Bajaj Finserv ":"BAJAJFINSV.NS", -"BHARAT PETROLEUM CORPORATION ":"BPCL.NS", -"Bharti Airtel ":"BHARTIARTL.NS", # change -"BRITANNIA INDUSTRIES LTD" :"BRITANNIA.NS", -"CIPLA ":"CIPLA.NS", -"COAL INDIA LTD " :"COALINDIA.NS", -"DIVI'S LABORATORIES ":"DIVISLAB.NS", -"DR.REDDY'S LABORATORIES LTD ":"DRREDDY.NS", -"EICHER MOTORS ":"EICHERMOT.NS", -"GRASIM INDUSTRIES LTD ":"GRASIM.NS", -"HCL TECHNOLOGIES ":"HCLTECH.NS", -"HDFC BANK ":"HDFCBANK.NS", -"HDFC LIFE INSURANCE COMPANY ":"HDFCLIFE.NS", -"Hero MotoCorp ":"HEROMOTOCO.NS", -"HINDALCO INDUSTRIES ":"HINDALCO.NS", -"HINDUSTAN UNILEVER ":"HINDUNILVR.NS", -"HOUSING DEVELOPMENT FINANCE CORPORATION ":"HDFC.NS", -"ICICI BANK ":"ICICIBANK.NS", -"ITC ":"ITC.NS", -"INDUSIND BANK LTD. ":"INDUSINDBK.NS", -"INFOSYS ":"INFY.NS", -"JSW Steel ":"JSWSTEEL.NS", -"KOTAK MAHINDRA BANK ":"KOTAKBANK.NS", -"LARSEN AND TOUBRO ":"LT.NS", -"MAHINDRA AND MAHINDRA ":"M&M.NS", -"MARUTI SUZUKI INDIA ":"MARUTI.NS", -"NTPC ":"NTPC.NS", -"NESTLE INDIA ":"NESTLEIND.NS", -"OIL AND NATURAL GAS CORPORATION ":"ONGC.NS", -"POWER GRID CORPORATION OF INDIA ":"POWERGRID.NS", -"RELIANCE INDUSTRIES ":"RELIANCE.NS", #cahnged -"SBI LIFE INSURANCE COMPANY ":"SBILIFE.NS", -"SBI":"SBIN.NS", -"SUN PHARMACEUTICAL INDUSTRIES ":"SUNPHARMA.NS", -"TATA CONSULTANCY SERVICES ":"TCS.NS", -"TATA CONSUMER PRODUCTS ":"TATACONSUM.NS", -"TATA MOTORS ":"TATAMTRDVR.NS", -"TATA STEEL ":"TATASTEEL.NS", -"TECH MAHINDRA ":"TECHM.NS", -"TITAN COMPANY ":"TITAN.NS", -"UPL ":"UPL.NS", -"ULTRATECH CEMENT ":"ULTRACEMCO.NS", -"WIPRO ":"WIPRO.NS" +Company_Name = { + "NIFTY 50": "^NSEI", + "NIFTY BANK": "^NSEBANK", + "INDIA VIX": "^INDIAVIX", + "ADANI ENTERPRISES ": "ADANIENT.NS", + "ADANI PORTS AND SPECIAL ECONOMIC ZONE ": "ADANIPORTS.NS", + "APOLLO HOSPITALS ENTERPRISE ": "APOLLOHOSP.NS", + "ASIAN PAINTS ": "ASIANPAINT.NS", + "Axis Bank ": "AXISBANK.NS", + "MARUTI SUZUKI INDIA ": "MARUTI.NS", + "BAJAJ FINANCE ": "BAJFINANCE.NS", + "Bajaj Finserv ": "BAJAJFINSV.NS", + "BHARAT PETROLEUM CORPORATION ": "BPCL.NS", + "Bharti Airtel ": "BHARTIARTL.NS", # change + "BRITANNIA INDUSTRIES LTD": "BRITANNIA.NS", + "CIPLA ": "CIPLA.NS", + "COAL INDIA LTD ": "COALINDIA.NS", + "DIVI'S LABORATORIES ": "DIVISLAB.NS", + "DR.REDDY'S LABORATORIES LTD ": "DRREDDY.NS", + "EICHER MOTORS ": "EICHERMOT.NS", + "GRASIM INDUSTRIES LTD ": "GRASIM.NS", + "HCL TECHNOLOGIES ": "HCLTECH.NS", + "HDFC BANK ": "HDFCBANK.NS", + "HDFC LIFE INSURANCE COMPANY ": "HDFCLIFE.NS", + "Hero MotoCorp ": "HEROMOTOCO.NS", + "HINDALCO INDUSTRIES ": "HINDALCO.NS", + "HINDUSTAN UNILEVER ": "HINDUNILVR.NS", + "HOUSING DEVELOPMENT FINANCE CORPORATION ": "HDFC.NS", + "ICICI BANK ": "ICICIBANK.NS", + "ITC ": "ITC.NS", + "INDUSIND BANK LTD. ": "INDUSINDBK.NS", + "INFOSYS ": "INFY.NS", + "JSW Steel ": "JSWSTEEL.NS", + "KOTAK MAHINDRA BANK ": "KOTAKBANK.NS", + "LARSEN AND TOUBRO ": "LT.NS", + "MAHINDRA AND MAHINDRA ": "M&M.NS", + "MARUTI SUZUKI INDIA ": "MARUTI.NS", + "NTPC ": "NTPC.NS", + "NESTLE INDIA ": "NESTLEIND.NS", + "OIL AND NATURAL GAS CORPORATION ": "ONGC.NS", + "POWER GRID CORPORATION OF INDIA ": "POWERGRID.NS", + "RELIANCE INDUSTRIES ": "RELIANCE.NS", # cahnged + "SBI LIFE INSURANCE COMPANY ": "SBILIFE.NS", + "SBI": "SBIN.NS", + "SUN PHARMACEUTICAL INDUSTRIES ": "SUNPHARMA.NS", + "TATA CONSULTANCY SERVICES ": "TCS.NS", + "TATA CONSUMER PRODUCTS ": "TATACONSUM.NS", + "TATA MOTORS ": "TATAMTRDVR.NS", + "TATA STEEL ": "TATASTEEL.NS", + "TECH MAHINDRA ": "TECHM.NS", + "TITAN COMPANY ": "TITAN.NS", + "UPL ": "UPL.NS", + "ULTRATECH CEMENT ": "ULTRACEMCO.NS", + "WIPRO ": "WIPRO.NS", } diff --git a/News_App/requirements.txt b/News_App/requirements.txt index 39898116fb8..8ac66230937 100644 --- a/News_App/requirements.txt +++ b/News_App/requirements.txt @@ -1,6 +1,6 @@ -solara == 1.32.2 +solara == 1.54.0 Flask -gunicorn ==22.0.0 +gunicorn ==23.0.0 simple-websocket flask-sock yfinance \ No newline at end of file diff --git a/NumPy Array Exponentiation.py b/NumPy Array Exponentiation.py new file mode 100644 index 00000000000..067db178867 --- /dev/null +++ b/NumPy Array Exponentiation.py @@ -0,0 +1,72 @@ +""" +NumPy Array Exponentiation + +Check if two arrays have the same shape and compute element-wise powers +with and without np.power. + +Example usage: +>>> import numpy as np +>>> x = np.array([1, 2]) +>>> y = np.array([3, 4]) +>>> get_array(x, y) # doctest: +ELLIPSIS +Array of powers without using np.power: [ 1 16] +Array of powers using np.power: [ 1 16] +""" + +import numpy as np + + +def get_array(x: np.ndarray, y: np.ndarray) -> None: + """ + Compute element-wise power of two NumPy arrays if their shapes match. + + Parameters + ---------- + x : np.ndarray + Base array. + y : np.ndarray + Exponent array. + + Returns + ------- + None + Prints the element-wise powers using both operator ** and np.power. + + Example: + >>> import numpy as np + >>> a = np.array([[1, 2], [3, 4]]) + >>> b = np.array([[2, 2], [2, 2]]) + >>> get_array(a, b) # doctest: +ELLIPSIS + Array of powers without using np.power: [[ 1 4] + [ 9 16]] + Array of powers using np.power: [[ 1 4] + [ 9 16]] + """ + if x.shape == y.shape: + np_pow_array = x**y + print("Array of powers without using np.power: ", np_pow_array) + print("Array of powers using np.power: ", np.power(x, y)) + else: + print("Error: Shape of the given arrays is not equal.") + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + + # 0D array + np_arr1 = np.array(3) + np_arr2 = np.array(4) + # 1D array + np_arr3 = np.array([1, 2]) + np_arr4 = np.array([3, 4]) + # 2D array + np_arr5 = np.array([[1, 2], [3, 4]]) + np_arr6 = np.array([[5, 6], [7, 8]]) + + get_array(np_arr1, np_arr2) + print() + get_array(np_arr3, np_arr4) + print() + get_array(np_arr5, np_arr6) diff --git a/Number reverse.py b/Number reverse.py index 1f84f917744..29219d298c5 100644 --- a/Number reverse.py +++ b/Number reverse.py @@ -1,7 +1,7 @@ -n=int(input("Enter number: ")) -rev=0 -while(n>0): - dig=n%10 - rev=rev*10+dig - n=n//10 -print("Reverse of the number:",rev) +n = int(input("Enter number: ")) +rev = 0 +while n > 0: + dig = n % 10 + rev = rev * 10 + dig + n = n // 10 +print("Reverse of the number:", rev) diff --git a/Organise.py b/Organise.py index 4133e4138fc..55a5f60fad2 100644 --- a/Organise.py +++ b/Organise.py @@ -69,7 +69,7 @@ def Organize(dirs, name): print("{} Folder Exist".format(name)) src = "{}\\{}".format(destLocation, dirs) - dest = "{}\{}".format(destLocation, name) + dest = "{}\\{}".format(destLocation, name) os.chdir(dest) shutil.move(src, "{}\\{}".format(dest, dirs)) diff --git a/PDF/demerge_pdfs.py b/PDF/demerge_pdfs.py index 12fcf081428..547708f73ac 100644 --- a/PDF/demerge_pdfs.py +++ b/PDF/demerge_pdfs.py @@ -3,17 +3,16 @@ to enhance the experience of reading and feasibility to study only specific parts from the large original textbook """ - import PyPDF2 + path = input() -merged_pdf = open(path, mode='rb') +merged_pdf = open(path, mode="rb") pdf = PyPDF2.PdfFileReader(merged_pdf) -(u, ctr, x) = tuple([0]*3) -for i in range(1, pdf.numPages+1): - +(u, ctr, x) = tuple([0] * 3) +for i in range(1, pdf.numPages + 1): if u >= pdf.numPages: print("Successfully done!") exit(0) @@ -21,15 +20,15 @@ ctr = int(input(f"Enter the number of pages for {name}: ")) u += ctr if u > pdf.numPages: - print('Limit exceeded! ') + print("Limit exceeded! ") break - base_path = '/Users/darpan/Desktop/{}.pdf' + base_path = "/Users/darpan/Desktop/{}.pdf" path = base_path.format(name) - f = open(path, mode='wb') + f = open(path, mode="wb") pdf_writer = PyPDF2.PdfFileWriter() - for j in range(x, x+ctr): + for j in range(x, x + ctr): page = pdf.getPage(j) pdf_writer.addPage(page) diff --git a/PDF/requirements.txt b/PDF/requirements.txt index 6018eb50919..63016005d13 100644 --- a/PDF/requirements.txt +++ b/PDF/requirements.txt @@ -1,2 +1,2 @@ -Pillow==10.2.0 +Pillow==12.0.0 fpdf==1.7.2 \ No newline at end of file diff --git a/PDFtoAudiobook.py b/PDFtoAudiobook.py index 8a679000e66..648eaa23fcf 100644 --- a/PDFtoAudiobook.py +++ b/PDFtoAudiobook.py @@ -1,11 +1,12 @@ import pyttsx3 import pyPDF2 -book = open('book.pdf','rb') + +book = open("book.pdf", "rb") pdfreader = pyPDF2.PdfFileReader(book) pages = pdfreader.numPages print(pages) speaker = pyttsx3.init() -page= pdfreader.getpage(7) +page = pdfreader.getpage(7) text = page.extractText() speaker.say(text) speaker.runAndWait() diff --git a/PONG_GAME.py b/PONG_GAME.py index 8ddec6661de..59b6e566c3d 100644 --- a/PONG_GAME.py +++ b/PONG_GAME.py @@ -45,7 +45,14 @@ def new_game(): def draw(canvas): - global paddle1_pos, paddle2_pos, ball_pos, ball_vel, paddle1_vel, paddle2_vel, BALL_RADIUS + global \ + paddle1_pos, \ + paddle2_pos, \ + ball_pos, \ + ball_vel, \ + paddle1_vel, \ + paddle2_vel, \ + BALL_RADIUS global score1, score2 canvas.draw_line([WIDTH / 2, 0], [WIDTH / 2, HEIGHT], 1, "White") diff --git a/PRACTICEPROJECT-DISREGARD.txt b/PRACTICEPROJECT-DISREGARD.txt deleted file mode 100644 index f7855aa5340..00000000000 --- a/PRACTICEPROJECT-DISREGARD.txt +++ /dev/null @@ -1,5 +0,0 @@ -This is practice for my first time using GitHub - -Please disregard as I'm getting used to using CLI and GitHub - -Thanks! diff --git a/Palindrome_Checker.py b/Palindrome_Checker.py index 598c16d940d..6f70f0e1c9f 100644 --- a/Palindrome_Checker.py +++ b/Palindrome_Checker.py @@ -1,8 +1,9 @@ """ A simple method is , to reverse the string and and compare with original string. -If both are same that's means string is palindrome otherwise else. +If both are same that's means string is palindrome otherwise else. """ + phrase = input() if phrase == phrase[::-1]: # slicing technique """phrase[::-1] this code is for reverse a string very smartly""" diff --git a/Password Generator/pass_gen.py b/Password Generator/pass_gen.py index f92b9badad2..82b939cd882 100644 --- a/Password Generator/pass_gen.py +++ b/Password Generator/pass_gen.py @@ -1,6 +1,5 @@ import string as str import secrets -import random # this is the module used to generate random numbers on your given range class PasswordGenerator: @@ -39,11 +38,15 @@ class Interface: @classmethod def change_has_characters(cls, change): try: - cls.has_characters[change] # to check if the specified key exists in the dicitonary + cls.has_characters[ + change + ] # to check if the specified key exists in the dicitonary except Exception as err: print(f"Invalid \nan Exception: {err}") else: - cls.has_characters[change] = not cls.has_characters[change] #automaticly changres to the oppesite value already there + cls.has_characters[change] = not cls.has_characters[ + change + ] # automaticly changres to the oppesite value already there print(f"{change} is now set to {cls.has_characters[change]}") @classmethod diff --git a/Password Generator/requirements.txt b/Password Generator/requirements.txt index d87a562b3e8..af8d9cdcca5 100644 --- a/Password Generator/requirements.txt +++ b/Password Generator/requirements.txt @@ -1,2 +1,2 @@ colorama==0.4.6 -inquirer==3.2.4 \ No newline at end of file +inquirer==3.4.1 \ No newline at end of file diff --git a/Password Manager Using Tkinter/PGV.py b/Password Manager Using Tkinter/PGV.py new file mode 100644 index 00000000000..045625ea650 --- /dev/null +++ b/Password Manager Using Tkinter/PGV.py @@ -0,0 +1,18 @@ +import json + +new_data = { + website_input.get():{ + "email": email_input.get(), + "password": passw_input.get() + } + } + +try: + with open("data.json", "r") as data_file: + data = json.load(data_file) +except FileNotFoundError: + with open("data.json", "w") as data_file: + pass +else: + with open("data.json", "w") as data_file: + json.dump(new_data, data_file, indent = 4) \ No newline at end of file diff --git a/Password Manager Using Tkinter/README.md b/Password Manager Using Tkinter/README.md new file mode 100644 index 00000000000..a31bf876550 --- /dev/null +++ b/Password Manager Using Tkinter/README.md @@ -0,0 +1,68 @@ +# My Personal Password Manager + +Hello there! Welcome to my Password Manager project. I created this application to provide a simple and secure way **to manage all my website login credentials in one place**. It's a desktop application **built with Python**, and I've focused on making it both functional and easy on the eyes. + +--- + +## What It Can Do + +- **Generate Strong Passwords**: One click = secure, random passwords (auto-copied to clipboard!). + +- **Save Credentials**: Store site name, email/username, and password safely. + +- **Quick Search**: Instantly find saved logins by website name. + +- **View All Passwords**: Unlock all saved entries with your master password — neatly organized in a table. + +- **One-Click Copy**: Copy email or password directly from the list for quick logins. + +--- + +## How I Built It + +- **Python**: Powers the core logic behind the app. + +- **Tkinter**: Handles the clean and simple user interface. + +- **ttkbootstrap**: Adds a modern, professional theme to the UI. + +- **JSON**: Stores all password data securely in a local data.json file. + +--- + +## How to Get Started + +1. Install Python 3 on your system. + +2. Download all project files (main.py, logo.png, requirements.txt). + +3. Open Terminal/CMD, navigate to the project folder, and run: +```python +pip install -r requirements.txt +``` + +4. Start the app with: +```python +python main.py +``` + +5. Enjoy! + +--- + +## Screenshots + + + + + + + + + + +
Main Window where from where you can add credentialsMain Window
Second window — where you can see all your saved passwords (but hey, you’ll need a password to see your passwords 😏). +Main Window
+ + + diff --git a/Password Manager Using Tkinter/data.json b/Password Manager Using Tkinter/data.json new file mode 100644 index 00000000000..399ea997575 --- /dev/null +++ b/Password Manager Using Tkinter/data.json @@ -0,0 +1,14 @@ +{ + "Amazon": { + "email": "prashant123Amazon@gmail.com", + "password": "1mD%#Z555rF$&2aRpI" + }, + "Facebook": { + "email": "prashant123Facebook@gmail.com", + "password": "qQ6#H7o&)i8S!3sO)c4" + }, + "Flipkart": { + "email": "prashant123Flipkart@gmail.com", + "password": "1!+7NqmUZbN18K(3A+" + } +} \ No newline at end of file diff --git a/data.db b/Password Manager Using Tkinter/data.txt similarity index 100% rename from data.db rename to Password Manager Using Tkinter/data.txt diff --git a/Password Manager Using Tkinter/logo.png b/Password Manager Using Tkinter/logo.png new file mode 100644 index 00000000000..59b69165150 Binary files /dev/null and b/Password Manager Using Tkinter/logo.png differ diff --git a/Password Manager Using Tkinter/main.py b/Password Manager Using Tkinter/main.py new file mode 100644 index 00000000000..15d6fdc1d13 --- /dev/null +++ b/Password Manager Using Tkinter/main.py @@ -0,0 +1,207 @@ +import tkinter as tk +from tkinter import messagebox, simpledialog +import ttkbootstrap as ttk +from ttkbootstrap.constants import * +import pyperclip +import json +from random import choice, randint, shuffle + +# ---------------------------- CONSTANTS ------------------------------- # +FONT_NAME = "Helvetica" +# IMP: this is not a secure way to store a master password. +# in a real application, this should be changed and stored securely (e.g., hashed and salted). +MASTER_PASSWORD = "password123" + +# ---------------------------- PASSWORD GENERATOR ------------------------------- # +def generate_password(): + """generates a random strong password and copies it to clipboard.""" + letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] + numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] + symbols = ['!', '#', '$', '%', '&', '(', ')', '*', '+'] + + password_letters = [choice(letters) for _ in range(randint(8, 10))] + password_symbols = [choice(symbols) for _ in range(randint(2, 4))] + password_numbers = [choice(numbers) for _ in range(randint(2, 4))] + + password_list = password_letters + password_symbols + password_numbers + shuffle(password_list) + + password = "".join(password_list) + password_entry.delete(0, tk.END) + password_entry.insert(0, password) + pyperclip.copy(password) + messagebox.showinfo(title="Password Generated", message="Password copied to clipboard!") + +# ---------------------------- SAVE PASSWORD ------------------------------- # +def save(): + """saves the website, email, and password to a JSON file.""" + website = website_entry.get() + email = email_entry.get() + password = password_entry.get() + new_data = { + website: { + "email": email, + "password": password, + } + } + + if not website or not password: + messagebox.showerror(title="Oops", message="Please don't leave any fields empty!") + return + + is_ok = messagebox.askokcancel(title=website, message=f"These are the details entered: \nEmail: {email} " + f"\nPassword: {password} \nIs it ok to save?") + if is_ok: + try: + with open("data.json", "r") as data_file: + data = json.load(data_file) + except (FileNotFoundError, json.JSONDecodeError): + data = {} + + data.update(new_data) + + with open("data.json", "w") as data_file: + json.dump(data, data_file, indent=4) + + website_entry.delete(0, tk.END) + password_entry.delete(0, tk.END) + +# ---------------------------- FIND PASSWORD ------------------------------- # +def find_password(): + """finds and displays password for a given website.""" + website = website_entry.get() + try: + with open("data.json", "r") as data_file: + data = json.load(data_file) + except (FileNotFoundError, json.JSONDecodeError): + messagebox.showerror(title="Error", message="No Data File Found.") + return + + if website in data: + email = data[website]["email"] + password = data[website]["password"] + messagebox.showinfo(title=website, message=f"Email: {email}\nPassword: {password}") + pyperclip.copy(password) + messagebox.showinfo(title="Copied", message="Password for {} copied to clipboard.".format(website)) + else: + messagebox.showerror(title="Error", message=f"No details for {website} exists.") + +# ---------------------------- VIEW ALL PASSWORDS ------------------------------- # +def view_all_passwords(): + """prompts for master password and displays all saved passwords if correct.""" + password = simpledialog.askstring("Master Password", "Please enter the master password:", show='*') + + if password == MASTER_PASSWORD: + show_passwords_window() + elif password is not None: # avoids error message if user clicks cancel + messagebox.showerror("Incorrect Password", "The master password you entered is incorrect.") + +def show_passwords_window(): + """creates a new window to display all passwords in a table.""" + all_passwords_window = tk.Toplevel(window) + all_passwords_window.title("All Saved Passwords") + all_passwords_window.config(padx=20, pady=20) + + # a frame for the treeview and scrollbar + tree_frame = ttk.Frame(all_passwords_window) + tree_frame.grid(row=0, column=0, columnspan=2, sticky='nsew') + + # a Treeview (table) + cols = ('Website', 'Email', 'Password') + tree = ttk.Treeview(tree_frame, columns=cols, show='headings') + + # column headings and widths + tree.heading('Website', text='Website') + tree.column('Website', width=150) + tree.heading('Email', text='Email/Username') + tree.column('Email', width=200) + tree.heading('Password', text='Password') + tree.column('Password', width=200) + + tree.grid(row=0, column=0, sticky='nsew') + + # a scrollbar + scrollbar = ttk.Scrollbar(tree_frame, orient=tk.VERTICAL, command=tree.yview) + tree.configure(yscroll=scrollbar.set) + scrollbar.grid(row=0, column=1, sticky='ns') + + # load data from JSON file + try: + with open("data.json", "r") as data_file: + data = json.load(data_file) + + # insert data into the treeview + for website, details in data.items(): + tree.insert("", "end", values=(website, details['email'], details['password'])) + + except (FileNotFoundError, json.JSONDecodeError): + # if file not found or empty, it will just show an empty table + pass + + def copy_selected_info(column_index, info_type): + """copies the email or password of the selected row.""" + selected_item = tree.focus() + if not selected_item: + messagebox.showwarning("No Selection", "Please select a row from the table first.", parent=all_passwords_window) + return + + item_values = tree.item(selected_item, 'values') + info_to_copy = item_values[column_index] + pyperclip.copy(info_to_copy) + messagebox.showinfo("Copied!", f"The {info_type.lower()} for '{item_values[0]}' has been copied to your clipboard.", parent=all_passwords_window) + + # a frame for the buttons + button_frame = ttk.Frame(all_passwords_window) + button_frame.grid(row=1, column=0, columnspan=2, pady=(10,0)) + + copy_email_button = ttk.Button(button_frame, text="Copy Email", style="success.TButton", command=lambda: copy_selected_info(1, "Email")) + copy_email_button.pack(side=tk.LEFT, padx=5) + + copy_password_button = ttk.Button(button_frame, text="Copy Password", style="success.TButton", command=lambda: copy_selected_info(2, "Password")) + copy_password_button.pack(side=tk.LEFT, padx=5) + + all_passwords_window.grab_set() # makes window modal + +# ---------------------------- UI SETUP ------------------------------- # +window = ttk.Window(themename="superhero") +window.title("Password Manager") +window.config(padx=50, pady=50) + +# logo +canvas = tk.Canvas(width=200, height=200, highlightthickness=0) +logo_img = tk.PhotoImage(file="logo.png") +canvas.create_image(100, 100, image=logo_img) +canvas.grid(row=0, column=1, pady=(0, 20)) + +# labels +website_label = ttk.Label(text="Website:", font=(FONT_NAME, 12)) +website_label.grid(row=1, column=0, sticky="W") +email_label = ttk.Label(text="Email/Username:", font=(FONT_NAME, 12)) +email_label.grid(row=2, column=0, sticky="W") +password_label = ttk.Label(text="Password:", font=(FONT_NAME, 12)) +password_label.grid(row=3, column=0, sticky="W") + +# entries +website_entry = ttk.Entry(width=32) +website_entry.grid(row=1, column=1, pady=5, sticky="EW") +website_entry.focus() +email_entry = ttk.Entry(width=50) +email_entry.grid(row=2, column=1, columnspan=2, pady=5, sticky="EW") +email_entry.insert(0, "example@email.com") +password_entry = ttk.Entry(width=32) +password_entry.grid(row=3, column=1, pady=5, sticky="EW") + +# buttons +search_button = ttk.Button(text="Search", width=14, command=find_password, style="info.TButton") +search_button.grid(row=1, column=2, sticky="EW", padx=(5,0)) +generate_password_button = ttk.Button(text="Generate Password", command=generate_password, style="success.TButton") +generate_password_button.grid(row=3, column=2, sticky="EW", padx=(5,0)) +add_button = ttk.Button(text="Add", width=43, command=save, style="primary.TButton") +add_button.grid(row=4, column=1, columnspan=2, pady=(10,0), sticky="EW") + +view_all_button = ttk.Button(text="View All Passwords", command=view_all_passwords, style="secondary.TButton") +view_all_button.grid(row=5, column=1, columnspan=2, pady=(10,0), sticky="EW") + + +window.mainloop() + diff --git a/Password Manager Using Tkinter/requirements.txt b/Password Manager Using Tkinter/requirements.txt new file mode 100644 index 00000000000..60ffacab8a4 --- /dev/null +++ b/Password Manager Using Tkinter/requirements.txt @@ -0,0 +1 @@ +ttkbootstrap \ No newline at end of file diff --git a/Patterns/half triangle pattern.py b/Patterns/half triangle pattern.py index 982ae8efda6..9bdf4ecb3b8 100644 --- a/Patterns/half triangle pattern.py +++ b/Patterns/half triangle pattern.py @@ -1,22 +1,23 @@ - # (upper half - repeat) - #1 - #22 - #333 - - # (upper half - incremental) - #1 - #12 - #123 - - # (lower half - incremental) - #123 - #12 - #1 - - # (lower half - repeat) - #333 - #22 - #1 +# (upper half - repeat) +# 1 +# 22 +# 333 + +# (upper half - incremental) +# 1 +# 12 +# 123 + +# (lower half - incremental) +# 123 +# 12 +# 1 + +# (lower half - repeat) +# 333 +# 22 +# 1 + def main(): lines = int(input("Enter no.of lines: ")) @@ -40,43 +41,30 @@ def main(): print("Invalid input") exit(0) -def upper_half_repeat_pattern(lines): - t = 1 - for column in range(1, (lines +1)): - print(f"{str(t) * column}") - t += 1 +def upper_half_repeat_pattern(lines=5): + for column in range(1, (lines + 1)): + print(f"{str(column) * column}") -def upper_half_incremental_pattern(lines): - for column in range(1, (lines +1)): - row = "" - for ii in range(1, column +1): - row += str(ii) - print(row) - +def lower_half_repeat_pattern(lines=5): + for length in range(lines, 0, -1): + print(f"{str(length) * length}") -def lower_half_incremental_pattern(lines): - for row_length in range(lines, 0, -1): - row = "" - column = 1 - - for _ in range(row_length): - column = 0 if column == 10 else column - row = f"{row}{column}" - column += 1 +def upper_half_incremental_pattern(lines=5): + const = "" + for column in range(1, (lines + 1)): + const += str(column) + print(const) - print(row) - -def lower_half_repeat_pattern(lines): +def lower_half_incremental_pattern(lines=5): for row_length in range(lines, 0, -1): - - row = "" - for _ in range(1, row_length+1): - row += str(row_length) - print(row) + for x in range(1, row_length + 1): + print(x, end="") + print() + if __name__ == "__main__": main() diff --git a/Patterns/pattern2.py b/Patterns/pattern2.py index 5e8650e3860..b1d7b8ba3e6 100644 --- a/Patterns/pattern2.py +++ b/Patterns/pattern2.py @@ -1,5 +1,5 @@ -#pattern -#$$$$$$$$$$$ +# pattern +# $$$$$$$$$$$ # $$$$$$$$$ # $$$$$$$ # $$$$$ @@ -7,21 +7,17 @@ # $ - def main(): lines = int(input("Enter no.of lines: ")) pattern(lines) + def pattern(lines): - for i in range(lines,0,-1): - for j in range(lines-i): - print(' ', end='') - - for j in range(2*i-1): - print('$',end='') - print() + flag = lines + for i in range(lines): + print(" " * (i), "$" * (2 * flag - 1)) + flag -= 1 if __name__ == "__main__": main() - diff --git a/Patterns/pattern5.py b/Patterns/pattern5.py index 58f75df847b..c9a9643e262 100644 --- a/Patterns/pattern5.py +++ b/Patterns/pattern5.py @@ -1,19 +1,22 @@ -#pattern Reverse piramid of numbers -#1 -#21 -#321 -#4321 -#54321 +# pattern Reverse piramid of numbers +# 1 +# 21 +# 321 +# 4321 +# 54321 + def main(): lines = int(input("Enter the number of lines: ")) pattern(lines) + def pattern(rows): - for i in range(1, rows+1): - for j in range(i, 0, -1): - print(j, end="") - print() + const = "" + for i in range(1, rows + 1): + const = str(i) + const + print(const) + if __name__ == "__main__": main() diff --git a/Patterns/pattern6.py b/Patterns/pattern6.py index 1f02d6ce55a..1384619b0ad 100644 --- a/Patterns/pattern6.py +++ b/Patterns/pattern6.py @@ -1,17 +1,18 @@ # Python code to print the following alphabet pattern -#A -#B B -#C C C -#D D D D -#E E E E E +# A +# B B +# C C C +# D D D D +# E E E E E def alphabetpattern(n): num = 65 for i in range(0, n): - for j in range(0, i+1): + for j in range(0, i + 1): ch = chr(num) print(ch, end=" ") num = num + 1 print("\r") + a = 5 alphabetpattern(a) diff --git a/Patterns/patterns.py b/Patterns/patterns.py index a23b463df12..f71a38c04eb 100644 --- a/Patterns/patterns.py +++ b/Patterns/patterns.py @@ -14,26 +14,19 @@ # * * # * + def main(): lines = int(input("Enter no.of lines: ")) pattern(lines) + def pattern(lines): + for i in range(1, lines + 1): + print("* " * i) + print() for i in range(lines): - for j in range(i+1): - print("* ", end="") - print("") - print(" ") - - for i in range(0,lines): - - for j in range(0, (2 * (i - 1)) + 1): - print(" ", end="") - - for j in range(0, lines - i): - print("*", end=" ") - - print("") + print(" " * i, "* " * (lines - i)) + if __name__ == "__main__": - main() + main() diff --git a/Pc_information.py b/Pc_information.py new file mode 100644 index 00000000000..a56c8b8764e --- /dev/null +++ b/Pc_information.py @@ -0,0 +1,13 @@ +import platform # built in lib + +print(f"System : {platform.system()}") # Prints type of Operating System +print(f"System name : {platform.node()}") # Prints System Name +print(f"version : {platform.release()}") # Prints System Version +# TO get the detailed version number +print( + f"detailed version number : {platform.version()}" +) # Prints detailed version number +print( + f"System architecture : {platform.machine()}" +) # Prints whether the system is 32-bit ot 64-bit +print(f"System processor : {platform.processor()}") # Prints CPU model diff --git a/Personal-Expense-Tracker/README.md b/Personal-Expense-Tracker/README.md new file mode 100644 index 00000000000..8c54ea4d695 --- /dev/null +++ b/Personal-Expense-Tracker/README.md @@ -0,0 +1,50 @@ +# Personal Expense Tracker CLI + +This is a basic command-line interface (CLI) application built with Python to help you track your daily expenses. It allows you to easily add your expenditures, categorize them, and view your spending patterns over different time periods. + +## Features + +* **Add New Expense:** Record new expenses by providing the amount, category (e.g., food, travel, shopping, bills), date, and an optional note. +* **View Expenses:** Display your expenses for a specific day, week, month, or all recorded expenses. +* **Filter by Category:** View expenses belonging to a particular category. +* **Data Persistence:** Your expense data is saved to a plain text file (`expenses.txt`) so it's retained between sessions. +* **Simple Command-Line Interface:** Easy-to-use text-based menu for interacting with the application. + +## Technologies Used + +* **Python:** The core programming language used for the application logic. +* **File Handling:** Used to store and retrieve expense data from a text file. +* **`datetime` module:** For handling and managing date information for expenses. + +## How to Run + +1. Make sure you have Python installed on your system. +2. Save the `expense_tracker.py` file to your local machine. +3. Open your terminal or command prompt. +4. Navigate to the directory where you saved the file using the `cd` command. +5. Run the application by executing the command: `python expense_tracker.py` + +## Basic Usage + +1. Run the script. You will see a menu with different options. +2. To add a new expense, choose option `1` and follow the prompts to enter the required information. +3. To view expenses, choose option `2` and select the desired time period (day, week, month, or all). +4. To filter expenses by category, choose option `3` and enter the category you want to view. +5. To save any new expenses (though the application automatically saves on exit as well), choose option `4`. +6. To exit the application, choose option `5`. + +## Potential Future Enhancements (Ideas for Expansion) + +* Implement a monthly budget feature with alerts. +* Add a login system for multiple users. +* Generate visual reports like pie charts for category-wise spending (using libraries like `matplotlib`). +* Incorporate voice input for adding expenses (using `speech_recognition`). +* Migrate data storage to a more structured database like SQLite. + +* Add functionality to export expense data to CSV files. + +--- + +> This simple Personal Expense Tracker provides a basic yet functional way to manage your finances from the command line. + +#### Author: Dhrubaraj Pati \ No newline at end of file diff --git a/Personal-Expense-Tracker/expense_tracker.py b/Personal-Expense-Tracker/expense_tracker.py new file mode 100644 index 00000000000..d438734f3e2 --- /dev/null +++ b/Personal-Expense-Tracker/expense_tracker.py @@ -0,0 +1,141 @@ +import datetime + + +def add_expense(expenses): + amount = float(input("Enter the expense amount: ")) + category = input("Category (food, travel, shopping, bills, etc.): ") + date_str = input("Date (YYYY-MM-DD): ") + try: + date = datetime.datetime.strptime(date_str, "%Y-%m-%d").date() + except ValueError: + print("Incorrect date format. Please use YYYY-MM-DD format.") + return + note = input("(Optional) Note: ") + expenses.append( + {"amount": amount, "category": category, "date": date, "note": note} + ) + print("Expense added!") + + +def view_expenses(expenses, period="all", category_filter=None): + if not expenses: + print("No expenses recorded yet.") + return + + filtered_expenses = expenses + if category_filter: + filtered_expenses = [ + e for e in filtered_expenses if e["category"] == category_filter + ] + + if period == "day": + date_str = input("Enter the date to view expenses for (YYYY-MM-DD): ") + try: + date = datetime.datetime.strptime(date_str, "%Y-%m-%d").date() + filtered_expenses = [e for e in filtered_expenses if e["date"] == date] + except ValueError: + print("Incorrect date format.") + return + elif period == "week": + date_str = input( + "Enter the start date of the week (YYYY-MM-DD - first day of the week): " + ) + try: + start_date = datetime.datetime.strptime(date_str, "%Y-%m-%d").date() + end_date = start_date + datetime.timedelta(days=6) + filtered_expenses = [ + e for e in filtered_expenses if start_date <= e["date"] <= end_date + ] + except ValueError: + print("Incorrect date format.") + return + elif period == "month": + year = input("Enter the year for the month (YYYY): ") + month = input("Enter the month (MM): ") + try: + year = int(year) + month = int(month) + filtered_expenses = [ + e + for e in filtered_expenses + if e["date"].year == year and e["date"].month == month + ] + except ValueError: + print("Incorrect year or month format.") + return + + if not filtered_expenses: + print("No expenses found for this period or category.") + return + + print("\n--- Expenses ---") + total_spent = 0 + for expense in filtered_expenses: + print( + f"Amount: {expense['amount']}, Category: {expense['category']}, Date: {expense['date']}, Note: {expense['note']}" + ) + total_spent += expense["amount"] + print(f"\nTotal spent: {total_spent}") + + +def save_expenses(expenses, filename="expenses.txt"): + with open(filename, "w") as f: + for expense in expenses: + f.write( + f"{expense['amount']},{expense['category']},{expense['date']},{expense['note']}\n" + ) + print("Expenses saved!") + + +def load_expenses(filename="expenses.txt"): + expenses = [] + try: + with open(filename, "r") as f: + for line in f: + amount, category, date_str, note = line.strip().split(",") + expenses.append( + { + "amount": float(amount), + "category": category, + "date": datetime.datetime.strptime(date_str, "%Y-%m-%d").date(), + "note": note, + } + ) + except FileNotFoundError: + pass + return expenses + + +def main(): + expenses = load_expenses() + + while True: + print("\n--- Personal Expense Tracker ---") + print("1. Add new expense") + print("2. View expenses") + print("3. Filter by category") + print("4. Save expenses") + print("5. Exit") + + choice = input("Choose your option: ") + + if choice == "1": + add_expense(expenses) + elif choice == "2": + period = input("View expenses by (day/week/month/all): ").lower() + view_expenses(expenses, period) + elif choice == "3": + category_filter = input("Enter the category to filter by: ") + view_expenses(expenses, category_filter=category_filter) + elif choice == "4": + save_expenses(expenses) + elif choice == "5": + save_expenses(expenses) + print("Thank you!") + break + else: + print("Invalid option. Please try again.") + + +if __name__ == "__main__": + main() diff --git a/PingPong/Ball.py b/PingPong/Ball.py index ec1a4a6768f..b1b9833f116 100644 --- a/PingPong/Ball.py +++ b/PingPong/Ball.py @@ -1,10 +1,10 @@ import pygame + pygame.init() -class Ball: +class Ball: def __init__(self, pos, vel, win, rad, minCoord, maxCoord): - self.pos = pos self.vel = vel self.win = win @@ -12,39 +12,27 @@ def __init__(self, pos, vel, win, rad, minCoord, maxCoord): self.minCoord = minCoord self.maxCoord = maxCoord - def drawBall(self): - - pygame.draw.circle(self.win, (255,)*3, self.pos, self.rad, 0) - + pygame.draw.circle(self.win, (255,) * 3, self.pos, self.rad, 0) def doHorizontalFlip(self): - self.vel[0] *= -1 - + print("Github") def doVerticalFlip(self): - self.vel[1] *= -1 - def borderCollisionCheck(self): - if (self.pos[0] <= self.minCoord[0]) or (self.pos[0] >= self.maxCoord[0]): - self.doHorizontalFlip() if (self.pos[1] <= self.minCoord[1]) or (self.pos[1] >= self.maxCoord[1]): - self.doVerticalFlip() - def updatePos(self): + self.pos = [self.pos[0] + self.vel[0], self.pos[1] + self.vel[1]] - self.pos = [self.pos[0]+self.vel[0], self.pos[1]+self.vel[1]] - - - def checkSlabCollision(self, slabPos): # slab pos = [xmin, ymin, xmax, ymax] + def checkSlabCollision(self, slabPos): # slab pos = [xmin, ymin, xmax, ymax] if ( self.pos[0] + self.rad > slabPos[0] and self.pos[0] - self.rad < slabPos[2] @@ -55,4 +43,4 @@ def checkSlabCollision(self, slabPos): # slab pos = [xmin, ymin, xmax, ymax] if self.pos[0] < slabPos[0] or self.pos[0] > slabPos[2]: self.vel[0] *= -1 if self.pos[1] < slabPos[1] or self.pos[1] > slabPos[3]: - self.vel[1] *= -1 \ No newline at end of file + self.vel[1] *= -1 diff --git a/PingPong/Slab.py b/PingPong/Slab.py index c5fb5d70bec..17b5bbac724 100644 --- a/PingPong/Slab.py +++ b/PingPong/Slab.py @@ -1,31 +1,41 @@ import pygame + pygame.init() + class Slab: def __init__(self, win, size, pos, player, minPos, maxPos): self.win = win self.size = size self.pos = pos - self.player = player #player = 1 or 2 + self.player = player # player = 1 or 2 self.minPos = minPos self.maxPos = maxPos - def draw(self): - pygame.draw.rect(self.win, (255, 255, 255), (self.pos[0], self.pos[1], self.size[0], self.size[1])) - + pygame.draw.rect( + self.win, + (255, 255, 255), + (self.pos[0], self.pos[1], self.size[0], self.size[1]), + ) + def getCoords(self): - return [self.pos[0], self.pos[1], self.pos[0] + self.size[0], self.pos[1] + self.size[1]] - + return [ + self.pos[0], + self.pos[1], + self.pos[0] + self.size[0], + self.pos[1] + self.size[1], + ] + def updatePos(self): keys = pygame.key.get_pressed() if self.player == 1: - if keys[pygame.K_UP] and self.getCoords()[1]> self.minPos[1]: + if keys[pygame.K_UP] and self.getCoords()[1] > self.minPos[1]: self.pos[1] -= 0.3 - if keys[pygame.K_DOWN] and self.getCoords()[3]< self.maxPos[1]: + if keys[pygame.K_DOWN] and self.getCoords()[3] < self.maxPos[1]: self.pos[1] += 0.3 else: - if keys[pygame.K_w] and self.getCoords()[1]> self.minPos[1]: + if keys[pygame.K_w] and self.getCoords()[1] > self.minPos[1]: self.pos[1] -= 0.3 - if keys[pygame.K_s] and self.getCoords()[3]< self.maxPos[1]: - self.pos[1] += 0.3 \ No newline at end of file + if keys[pygame.K_s] and self.getCoords()[3] < self.maxPos[1]: + self.pos[1] += 0.3 diff --git a/PingPong/main.py b/PingPong/main.py index 2892f8c9305..b98773e8c08 100644 --- a/PingPong/main.py +++ b/PingPong/main.py @@ -4,17 +4,17 @@ WIDTH = 600 HEIGHT = 600 -BLACK = (0,0,0) -WHITE = (255,)*3 +BLACK = (0, 0, 0) +WHITE = (255,) * 3 pygame.init() -win = pygame.display.set_mode((WIDTH, HEIGHT )) +win = pygame.display.set_mode((WIDTH, HEIGHT)) print("Controls: W&S for player 1 and arrow up and down for player 2") -ball = Ball([300,300 ], [0.3,0.1], win, 10, (0,0), (600,600)) -slab = Slab(win, [10,100], [500, 300], 1, (0, 0), (600, 600)) -slab2 = Slab(win, [10,100], [100, 300], 2, (0, 0), (600, 600)) +ball = Ball([300, 300], [0.3, 0.1], win, 10, (0, 0), (600, 600)) +slab = Slab(win, [10, 100], [500, 300], 1, (0, 0), (600, 600)) +slab2 = Slab(win, [10, 100], [100, 300], 2, (0, 0), (600, 600)) run = True while run: for event in pygame.event.get(): @@ -37,4 +37,4 @@ slab2.draw() pygame.display.update() -pygame.quit() \ No newline at end of file +pygame.quit() diff --git a/Pomodoro (tkinter).py b/Pomodoro (tkinter).py new file mode 100644 index 00000000000..3b4c5b43205 --- /dev/null +++ b/Pomodoro (tkinter).py @@ -0,0 +1,244 @@ +from tkinter import * + +# ---------------------------- CONSTANTS & GLOBALS ------------------------------- # +PINK = "#e2979c" +GREEN = "#9bdeac" +FONT_NAME = "Courier" +DEFAULT_WORK_MIN = 25 +DEFAULT_BREAK_MIN = 5 + +# Background color options +bg_colors = { + "Pink": "#e2979c", + "Green": "#9bdeac", + "Blue": "#1f75fe", + "Yellow": "#ffcc00", + "Purple": "#b19cd9", +} + +# Global variables +ROUND = 1 +timer_mec = None +total_time = 0 # Total seconds for the current session +is_paused = False # Timer pause flag +remaining_time = 0 # Remaining time (in seconds) when paused +custom_work_min = DEFAULT_WORK_MIN +custom_break_min = DEFAULT_BREAK_MIN + + +# ---------------------------- BACKGROUND COLOR CHANGE FUNCTION ------------------------------- # +def change_background(*args): + selected = bg_color_var.get() + new_color = bg_colors.get(selected, PINK) + window.config(bg=new_color) + canvas.config(bg=new_color) + label.config(bg=new_color) + tick_label.config(bg=new_color) + work_label.config(bg=new_color) + break_label.config(bg=new_color) + + +# ---------------------------- NOTIFICATION FUNCTION ------------------------------- # +def show_notification(message): + notif = Toplevel(window) + notif.overrideredirect(True) + notif.config(bg=PINK) + + msg_label = Label( + notif, + text=message, + font=(FONT_NAME, 12, "bold"), + bg=GREEN, + fg="white", + padx=10, + pady=5, + ) + msg_label.pack() + + window.update_idletasks() + wx = window.winfo_rootx() + wy = window.winfo_rooty() + wwidth = window.winfo_width() + wheight = window.winfo_height() + + notif.update_idletasks() + nwidth = notif.winfo_width() + nheight = notif.winfo_height() + + x = wx + (wwidth - nwidth) // 2 + y = wy + wheight - nheight - 10 + notif.geometry(f"+{x}+{y}") + + notif.after(3000, notif.destroy) + + +# ---------------------------- TIMER FUNCTIONS ------------------------------- # +def reset_timer(): + global ROUND, timer_mec, total_time, is_paused, remaining_time + ROUND = 1 + is_paused = False + remaining_time = 0 + if timer_mec is not None: + window.after_cancel(timer_mec) + canvas.itemconfig(timer_text, text="00:00") + label.config(text="Timer") + tick_label.config(text="") + total_time = 0 + canvas.itemconfig(progress_arc, extent=0) + start_button.config(state=NORMAL) + pause_button.config(state=DISABLED) + play_button.config(state=DISABLED) + + +def start_timer(): + global ROUND, total_time, is_paused + canvas.itemconfig(progress_arc, extent=0) + + if ROUND % 2 == 1: # Work session + total_time = custom_work_min * 60 + label.config(text="Work", fg=GREEN) + else: # Break session + total_time = custom_break_min * 60 + label.config(text="Break", fg=PINK) + + count_down(total_time) + start_button.config(state=DISABLED) + pause_button.config(state=NORMAL) + play_button.config(state=DISABLED) + is_paused = False + + +def count_down(count): + global timer_mec, remaining_time + remaining_time = count + minutes = count // 60 + seconds = count % 60 + if seconds < 10: + seconds = f"0{seconds}" + canvas.itemconfig(timer_text, text=f"{minutes}:{seconds}") + + if total_time > 0: + progress = (total_time - count) / total_time + canvas.itemconfig(progress_arc, extent=progress * 360) + + if count > 0 and not is_paused: + timer_mec = window.after(1000, count_down, count - 1) + elif count == 0: + if ROUND % 2 == 1: + show_notification("Work session complete! Time for a break.") + else: + show_notification("Break over! Back to work.") + if ROUND % 2 == 0: + tick_label.config(text=tick_label.cget("text") + "#") + ROUND += 1 + start_timer() + + +def pause_timer(): + global is_paused, timer_mec + if not is_paused: + is_paused = True + if timer_mec is not None: + window.after_cancel(timer_mec) + pause_button.config(state=DISABLED) + play_button.config(state=NORMAL) + + +def resume_timer(): + global is_paused + if is_paused: + is_paused = False + count_down(remaining_time) + play_button.config(state=DISABLED) + pause_button.config(state=NORMAL) + + +def set_custom_durations(): + global custom_work_min, custom_break_min + try: + work_val = int(entry_work.get()) + break_val = int(entry_break.get()) + custom_work_min = work_val + custom_break_min = break_val + canvas.itemconfig(left_custom, text=f"{custom_work_min}m") + canvas.itemconfig(right_custom, text=f"{custom_break_min}m") + except ValueError: + pass + + +# ---------------------------- UI SETUP ------------------------------- # +window = Tk() +window.title("Pomodoro") +window.config(padx=100, pady=50, bg=PINK) + +# Canvas setup with increased width for spacing +canvas = Canvas(window, width=240, height=224, bg=PINK, highlightthickness=0) +timer_text = canvas.create_text( + 120, 112, text="00:00", font=(FONT_NAME, 35, "bold"), fill="white" +) +background_circle = canvas.create_arc( + 40, 32, 200, 192, start=0, extent=359.9, style="arc", outline="white", width=5 +) +progress_arc = canvas.create_arc( + 40, 32, 200, 192, start=270, extent=0, style="arc", outline="green", width=5 +) +# Updated positions for work and break time labels +left_custom = canvas.create_text( + 20, 112, text=f"{custom_work_min}m", font=(FONT_NAME, 12, "bold"), fill="white" +) +right_custom = canvas.create_text( + 220, 112, text=f"{custom_break_min}m", font=(FONT_NAME, 12, "bold"), fill="white" +) + +canvas.grid(column=1, row=1) + +label = Label(text="Timer", font=(FONT_NAME, 35, "bold"), bg=PINK, fg="green") +label.grid(column=1, row=0) + +start_button = Button(text="Start", command=start_timer, highlightthickness=0) +start_button.grid(column=0, row=2) + +reset_button = Button(text="Reset", command=reset_timer, highlightthickness=0) +reset_button.grid(column=2, row=2) + +pause_button = Button( + text="Pause", command=pause_timer, highlightthickness=0, state=DISABLED +) +pause_button.grid(column=0, row=3) + +play_button = Button( + text="Play", command=resume_timer, highlightthickness=0, state=DISABLED +) +play_button.grid(column=2, row=3) + +tick_label = Label(text="", font=(FONT_NAME, 15, "bold"), bg=PINK, fg="green") +tick_label.grid(column=1, row=4) + +# Custom durations (stacked vertically) +work_label = Label( + text="Work (min):", font=(FONT_NAME, 12, "bold"), bg=PINK, fg="white" +) +work_label.grid(column=1, row=5, pady=(20, 0)) +entry_work = Entry(width=5, font=(FONT_NAME, 12)) +entry_work.grid(column=1, row=6, pady=(5, 10)) +break_label = Label( + text="Break (min):", font=(FONT_NAME, 12, "bold"), bg=PINK, fg="white" +) +break_label.grid(column=1, row=7, pady=(5, 0)) +entry_break = Entry(width=5, font=(FONT_NAME, 12)) +entry_break.grid(column=1, row=8, pady=(5, 10)) +set_button = Button( + text="Set Durations", command=set_custom_durations, font=(FONT_NAME, 12) +) +set_button.grid(column=1, row=9, pady=(10, 20)) + +# OptionMenu for changing background color +bg_color_var = StringVar(window) +bg_color_var.set("Pink") +bg_option = OptionMenu( + window, bg_color_var, *bg_colors.keys(), command=change_background +) +bg_option.config(font=(FONT_NAME, 12)) +bg_option.grid(column=1, row=10, pady=(10, 20)) + +window.mainloop() diff --git a/PongPong_Game/pong/paddle.py b/PongPong_Game/pong/paddle.py index f7df52071b0..0a442523642 100644 --- a/PongPong_Game/pong/paddle.py +++ b/PongPong_Game/pong/paddle.py @@ -15,7 +15,6 @@ def __init__(self, *args, **kwargs): self.event_handlers = [self, self.key_handler] def update(self, win_size: Tuple, border: float, other_object, dt): - newlx = self.x + self.acc_left newrx = self.x + self.acc_right diff --git a/PongPong_Game/requirements.txt b/PongPong_Game/requirements.txt index 555f25f9c27..ccf1333682a 100644 --- a/PongPong_Game/requirements.txt +++ b/PongPong_Game/requirements.txt @@ -1 +1 @@ -pyglet==2.0.10 +pyglet==2.1.9 diff --git a/Prime_number.py b/Prime_number.py index 1a345b5abe6..c9b8259a0fd 100644 --- a/Prime_number.py +++ b/Prime_number.py @@ -19,15 +19,14 @@ def is_prime_a(n): def is_prime_b(n): - if n > 1: - if n == 2: - return True - else: - for i in range(2, n): - if n % i == 0: - return False - return True - return False + if n <= 1: + return False + if n == 2: + return True + for i in range(2, int(n // 2) + 1): + if n % i == 0: + return False + return True def is_prime_c(n): diff --git a/Python Distance.py b/Python Distance.py index 5ac0e09fc36..919f1e1528f 100644 --- a/Python Distance.py +++ b/Python Distance.py @@ -6,8 +6,8 @@ # terms = int(input("How many terms? ")) # use anonymous function -result = list(map(lambda x: 2 ** x, range(terms))) +result = list(map(lambda x: 2**x, range(terms))) -print("The total terms are:",terms) +print("The total terms are:", terms) for i in range(terms): - print("2 raised to power",i,"is",result[i]) + print("2 raised to power", i, "is", result[i]) diff --git a/Python Program for Product of unique prime factors of a number.py b/Python Program for Product of unique prime factors of a number.py deleted file mode 100644 index 594f032750e..00000000000 --- a/Python Program for Product of unique prime factors of a number.py +++ /dev/null @@ -1,29 +0,0 @@ -# Python program to find sum of given -# series. - -def productPrimeFactors(n): - product = 1 - - for i in range(2, n+1): - if (n % i == 0): - isPrime = 1 - - for j in range(2, int(i/2 + 1)): - if (i % j == 0): - isPrime = 0 - break - - # condition if \'i\' is Prime number - # as well as factor of num - if (isPrime): - product = product * i - - return product - - - -# main() -n = 44 -print (productPrimeFactors(n)) - -# Contributed by _omg diff --git a/Python Program for Tower of Hanoi.py b/Python Program for Tower of Hanoi.py deleted file mode 100644 index 7efb1b56363..00000000000 --- a/Python Program for Tower of Hanoi.py +++ /dev/null @@ -1,10 +0,0 @@ -# Recursive Python function to solve the tower of hanoi -def TowerOfHanoi(n , source, destination, auxiliary): - if n==1: - print("Move disk 1 from source ",source," to destination ",destination) - return - TowerOfHanoi(n-1, source, auxiliary, destination) - print("Move disk ",n," from source ",source," to destination ",destination) - TowerOfHanoi(n-1, auxiliary, destination, source) -n = 4 -TowerOfHanoi(n,'A','B','C') diff --git a/Python Program for factorial of a number b/Python Program for factorial of a number deleted file mode 100644 index fb75b99de87..00000000000 --- a/Python Program for factorial of a number +++ /dev/null @@ -1,38 +0,0 @@ -""" -Factorial of a non-negative integer, is multiplication of -all integers smaller than or equal to n. -For example factorial of 6 is 6*5*4*3*2*1 which is 720. -""" - -""" -Recursive: -Python3 program to find factorial of given number -""" -def factorial(n): - - # single line to find factorial - return 1 if (n==1 or n==0) else n * factorial(n - 1); - -# Driver Code -num = 5; -print("Factorial of",num,"is", factorial((num))) - -""" -Iterative: -Python 3 program to find factorial of given number. -""" -def factorial(n): - if n < 0: - return 0 - elif n == 0 or n == 1: - return 1 - else: - fact = 1 - while(n > 1): - fact *= n - n -= 1 - return fact - -# Driver Code -num = 5; -print("Factorial of",num,"is", factorial(num)) diff --git a/Python Program to Display Fibonacci Sequence Using Recursion.py b/Python Program to Display Fibonacci Sequence Using Recursion.py deleted file mode 100644 index 5a70deb0e28..00000000000 --- a/Python Program to Display Fibonacci Sequence Using Recursion.py +++ /dev/null @@ -1,15 +0,0 @@ -def recur_fibo(n): - if n <= 1: - return n - else: - return(recur_fibo(n-1) + recur_fibo(n-2)) - -nterms = 10 - -# check if the number of terms is valid -if nterms <= 0: - print("Please enter a positive integer") -else: - print("Fibonacci sequence:") - for i in range(nterms): - print(recur_fibo(i)) diff --git a/Python Program to Find LCM.py b/Python Program to Find LCM.py deleted file mode 100644 index 6e9cf1cc8a1..00000000000 --- a/Python Program to Find LCM.py +++ /dev/null @@ -1,22 +0,0 @@ -# Python Program to find the L.C.M. of two input number - -def compute_lcm(x, y): - - # choose the greater number - if x > y: - greater = x - else: - greater = y - - while(True): - if((greater % x == 0) and (greater % y == 0)): - lcm = greater - break - greater += 1 - - return lcm - -num1 = 54 -num2 = 24 - -print("The L.C.M. is", compute_lcm(num1, num2)) diff --git a/Python Program to Print the Fibonacci sequence.py b/Python Program to Print the Fibonacci sequence.py deleted file mode 100644 index 9f6b1b3d7ce..00000000000 --- a/Python Program to Print the Fibonacci sequence.py +++ /dev/null @@ -1,23 +0,0 @@ -# Program to display the Fibonacci sequence up to n-th term - -nterms = int(input("How many terms? ")) - -# first two terms -n1, n2 = 0, 1 -count = 0 - -# check if the number of terms is valid -if nterms <= 0: - print("Please enter a positive integer") -elif nterms == 1: - print("Fibonacci sequence upto",nterms,":") - print(n1) -else: - print("Fibonacci sequence:") - while count < nterms: - print(n1) - nth = n1 + n2 - # update values - n1 = n2 - n2 = nth - count += 1 diff --git a/Python Program to Reverse a linked list.py b/Python Program to Reverse a linked list.py deleted file mode 100644 index c3eff50ebab..00000000000 --- a/Python Program to Reverse a linked list.py +++ /dev/null @@ -1,57 +0,0 @@ -# Python program to reverse a linked list -# Time Complexity : O(n) -# Space Complexity : O(1) - -# Node class -class Node: - - # Constructor to initialize the node object - def __init__(self, data): - self.data = data - self.next = None - -class LinkedList: - - # Function to initialize head - def __init__(self): - self.head = None - - # Function to reverse the linked list - def reverse(self): - prev = None - current = self.head - while(current is not None): - next = current.next - current.next = prev - prev = current - current = next - self.head = prev - - # Function to insert a new node at the beginning - def push(self, new_data): - new_node = Node(new_data) - new_node.next = self.head - self.head = new_node - - # Utility function to print the linked LinkedList - def printList(self): - temp = self.head - while(temp): - print(temp.data) - temp = temp.next - - -# Driver program to test above functions -llist = LinkedList() -llist.push(20) -llist.push(4) -llist.push(15) -llist.push(85) - -print("Given Linked List") -llist.printList() -llist.reverse() -print("\nReversed Linked List") -llist.printList() - -# This code is contributed by Nikhil Kumar Singh(nickzuck_007) diff --git a/Python Program to Transpose a Matrix.py b/Python Program to Transpose a Matrix.py deleted file mode 100644 index 98f6dcba024..00000000000 --- a/Python Program to Transpose a Matrix.py +++ /dev/null @@ -1,15 +0,0 @@ -X = [[12,7], - [4 ,5], - [3 ,8]] - -result = [[0,0,0], - [0,0,0]] - -# iterate through rows -for i in range(len(X)): - # iterate through columns - for j in range(len(X[0])): - result[j][i] = X[i][j] - -for r in result: - print(r) diff --git a/Program of Reverse of any number.py b/Python Programs/Program of Reverse of any number.py similarity index 100% rename from Program of Reverse of any number.py rename to Python Programs/Program of Reverse of any number.py diff --git a/Program to print table of given number.py b/Python Programs/Program to print table of given number.py similarity index 100% rename from Program to print table of given number.py rename to Python Programs/Program to print table of given number.py diff --git a/Program to reverse Linked List( Recursive solution).py b/Python Programs/Program to reverse Linked List( Recursive solution).py similarity index 97% rename from Program to reverse Linked List( Recursive solution).py rename to Python Programs/Program to reverse Linked List( Recursive solution).py index 96263c6a276..14f27b7a6fc 100644 --- a/Program to reverse Linked List( Recursive solution).py +++ b/Python Programs/Program to reverse Linked List( Recursive solution).py @@ -1,6 +1,7 @@ from sys import stdin, setrecursionlimit -setrecursionlimit(10 ** 6) +setrecursionlimit(10**6) + # Following is the Node class already written for the Linked List class Node: @@ -56,7 +57,6 @@ def printLinkedList(head): t = int(stdin.readline().rstrip()) while t > 0: - head = takeInput() newHead = reverseLinkedListRec(head) diff --git a/Python Programs/Python Program for Product of unique prime factors of a number.py b/Python Programs/Python Program for Product of unique prime factors of a number.py new file mode 100644 index 00000000000..1018f51be56 --- /dev/null +++ b/Python Programs/Python Program for Product of unique prime factors of a number.py @@ -0,0 +1,29 @@ +# Python program to find sum of given +# series. + + +def productPrimeFactors(n): + product = 1 + + for i in range(2, n + 1): + if n % i == 0: + isPrime = 1 + + for j in range(2, int(i / 2 + 1)): + if i % j == 0: + isPrime = 0 + break + + # condition if \'i\' is Prime number + # as well as factor of num + if isPrime: + product = product * i + + return product + + +# main() +n = 44 +print(productPrimeFactors(n)) + +# Contributed by _omg diff --git a/Python Programs/Python Program for Tower of Hanoi.py b/Python Programs/Python Program for Tower of Hanoi.py new file mode 100644 index 00000000000..00c8eb96ce0 --- /dev/null +++ b/Python Programs/Python Program for Tower of Hanoi.py @@ -0,0 +1,12 @@ +# Recursive Python function to solve the tower of hanoi +def TowerOfHanoi(n, source, destination, auxiliary): + if n == 1: + print("Move disk 1 from source ", source, " to destination ", destination) + return + TowerOfHanoi(n - 1, source, auxiliary, destination) + print("Move disk ", n, " from source ", source, " to destination ", destination) + TowerOfHanoi(n - 1, auxiliary, destination, source) + + +n = 4 +TowerOfHanoi(n, "A", "B", "C") diff --git a/Python Programs/Python Program for factorial of a number.py b/Python Programs/Python Program for factorial of a number.py new file mode 100644 index 00000000000..2fd0ec75fe5 --- /dev/null +++ b/Python Programs/Python Program for factorial of a number.py @@ -0,0 +1,43 @@ +""" +Factorial of a non-negative integer, is multiplication of +all integers smaller than or equal to n. +For example factorial of 6 is 6*5*4*3*2*1 which is 720. +""" + +""" +Recursive: +Python3 program to find factorial of given number +""" + + +def factorial(n): + # single line to find factorial + return 1 if (n == 1 or n == 0) else n * factorial(n - 1) + + +# Driver Code +num = 5 +print("Factorial of", num, "is", factorial((num))) + +""" +Iterative: +Python 3 program to find factorial of given number. +""" + + +def factorial(n): + if n < 0: + return 0 + elif n == 0 or n == 1: + return 1 + else: + fact = 1 + while n > 1: + fact *= n + n -= 1 + return fact + + +# Driver Code +num = 5 +print("Factorial of", num, "is", factorial(num)) diff --git a/Python Program to Count the Number of Each Vowel.py b/Python Programs/Python Program to Count the Number of Each Vowel.py similarity index 61% rename from Python Program to Count the Number of Each Vowel.py rename to Python Programs/Python Program to Count the Number of Each Vowel.py index 297e2488590..eb66d0967d6 100644 --- a/Python Program to Count the Number of Each Vowel.py +++ b/Python Programs/Python Program to Count the Number of Each Vowel.py @@ -1,19 +1,19 @@ # Program to count the number of each vowels # string of vowels -vowels = 'aeiou' +vowels = "aeiou" -ip_str = 'Hello, have you tried our tutorial section yet?' +ip_str = "Hello, have you tried our tutorial section yet?" # make it suitable for caseless comparisions ip_str = ip_str.casefold() # make a dictionary with each vowel a key and value 0 -count = {}.fromkeys(vowels,0) +count = {}.fromkeys(vowels, 0) # count the vowels for char in ip_str: - if char in count: - count[char] += 1 + if char in count: + count[char] += 1 print(count) diff --git a/Python Programs/Python Program to Display Fibonacci Sequence Using Recursion.py b/Python Programs/Python Program to Display Fibonacci Sequence Using Recursion.py new file mode 100644 index 00000000000..7bfb6b7a03a --- /dev/null +++ b/Python Programs/Python Program to Display Fibonacci Sequence Using Recursion.py @@ -0,0 +1,16 @@ +def recur_fibo(n): + if n <= 1: + return n + else: + return recur_fibo(n - 1) + recur_fibo(n - 2) + + +nterms = 10 + +# check if the number of terms is valid +if nterms <= 0: + print("Please enter a positive integer") +else: + print("Fibonacci sequence:") + for i in range(nterms): + print(recur_fibo(i)) diff --git a/Python Programs/Python Program to Find LCM.py b/Python Programs/Python Program to Find LCM.py new file mode 100644 index 00000000000..dfd1b57e81e --- /dev/null +++ b/Python Programs/Python Program to Find LCM.py @@ -0,0 +1,23 @@ +# Python Program to find the L.C.M. of two input number + + +def compute_lcm(x, y): + # choose the greater number + if x > y: + greater = x + else: + greater = y + + while True: + if (greater % x == 0) and (greater % y == 0): + lcm = greater + break + greater += 1 + + return lcm + + +num1 = 54 +num2 = 24 + +print("The L.C.M. is", compute_lcm(num1, num2)) diff --git a/Python Program to Merge Mails.py b/Python Programs/Python Program to Merge Mails.py similarity index 68% rename from Python Program to Merge Mails.py rename to Python Programs/Python Program to Merge Mails.py index 2d18c6dbaee..f8189fff88e 100644 --- a/Python Program to Merge Mails.py +++ b/Python Programs/Python Program to Merge Mails.py @@ -3,11 +3,9 @@ # Body of the mail is in body.txt # open names.txt for reading -with open("names.txt", 'r', encoding='utf-8') as names_file: - +with open("names.txt", "r", encoding="utf-8") as names_file: # open body.txt for reading - with open("body.txt", 'r', encoding='utf-8') as body_file: - + with open("body.txt", "r", encoding="utf-8") as body_file: # read entire content of the body body = body_file.read() @@ -16,6 +14,5 @@ mail = "Hello " + name.strip() + "\n" + body # write the mails to individual files - with open(name.strip()+".txt", 'w', encoding='utf-8') as mail_file: + with open(name.strip() + ".txt", "w", encoding="utf-8") as mail_file: mail_file.write(mail) - diff --git a/Python Programs/Python Program to Print the Fibonacci sequence.py b/Python Programs/Python Program to Print the Fibonacci sequence.py new file mode 100644 index 00000000000..d6a70a574cd --- /dev/null +++ b/Python Programs/Python Program to Print the Fibonacci sequence.py @@ -0,0 +1,23 @@ +# Program to display the Fibonacci sequence up to n-th term + +nterms = int(input("How many terms? ")) + +# first two terms +n1, n2 = 0, 1 +count = 0 + +# check if the number of terms is valid +if nterms <= 0: + print("Please enter a positive integer") +elif nterms == 1: + print("Fibonacci sequence upto", nterms, ":") + print(n1) +else: + print("Fibonacci sequence:") + while count < nterms: + print(n1) + nth = n1 + n2 + # update values + n1 = n2 + n2 = nth + count += 1 diff --git a/Python Program to Remove Punctuations from a String.py b/Python Programs/Python Program to Remove Punctuations from a String.py similarity index 68% rename from Python Program to Remove Punctuations from a String.py rename to Python Programs/Python Program to Remove Punctuations from a String.py index a1e750a3a4b..6154c73a11b 100644 --- a/Python Program to Remove Punctuations from a String.py +++ b/Python Programs/Python Program to Remove Punctuations from a String.py @@ -1,5 +1,5 @@ # define punctuation -punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~''' +punctuations = r"""!()-[]{};:'"\,<>./?@#$%^&*_~""" my_str = "Hello!!!, he said ---and went." @@ -9,8 +9,8 @@ # remove punctuation from the string no_punct = "" for char in my_str: - if char not in punctuations: - no_punct = no_punct + char + if char not in punctuations: + no_punct = no_punct + char # display the unpunctuated string print(no_punct) diff --git a/Python Programs/Python Program to Reverse a linked list.py b/Python Programs/Python Program to Reverse a linked list.py new file mode 100644 index 00000000000..e636a0df632 --- /dev/null +++ b/Python Programs/Python Program to Reverse a linked list.py @@ -0,0 +1,56 @@ +# Python program to reverse a linked list +# Time Complexity : O(n) +# Space Complexity : O(1) + +# Node class +class Node: + # Constructor to initialize the node object + def __init__(self, data): + self.data = data + self.next = None + + +class LinkedList: + # Function to initialize head + def __init__(self): + self.head = None + + # Function to reverse the linked list + def reverse(self): + prev = None + current = self.head + while current is not None: + next = current.next + current.next = prev + prev = current + current = next + self.head = prev + + # Function to insert a new node at the beginning + def push(self, new_data): + new_node = Node(new_data) + new_node.next = self.head + self.head = new_node + + # Utility function to print the linked LinkedList + def printList(self): + temp = self.head + while temp: + print(temp.data) + temp = temp.next + + +# Driver program to test above functions +llist = LinkedList() +llist.push(20) +llist.push(4) +llist.push(15) +llist.push(85) + +print("Given Linked List") +llist.printList() +llist.reverse() +print("\nReversed Linked List") +llist.printList() + +# This code is contributed by Nikhil Kumar Singh(nickzuck_007) diff --git a/Python Program to Sort Words in Alphabetic Order.py b/Python Programs/Python Program to Sort Words in Alphabetic Order.py similarity index 77% rename from Python Program to Sort Words in Alphabetic Order.py rename to Python Programs/Python Program to Sort Words in Alphabetic Order.py index 3e4bd3564e5..737f88c5a8e 100644 --- a/Python Program to Sort Words in Alphabetic Order.py +++ b/Python Programs/Python Program to Sort Words in Alphabetic Order.py @@ -1,23 +1,23 @@ # Program to sort words alphabetically and put them in a dictionary with corresponding numbered keys -# We are also removing punctuation to ensure the desired output, without importing a library for assistance. +# We are also removing punctuation to ensure the desired output, without importing a library for assistance. # Declare base variables word_Dict = {} count = 0 my_str = "Hello this Is an Example With cased letters. Hello, this is a good string" -#Initialize punctuation -punctuations = '''!()-[]{};:'",<>./?@#$%^&*_~''' +# Initialize punctuation +punctuations = """!()-[]{};:'",<>./?@#$%^&*_~""" # To take input from the user -#my_str = input("Enter a string: ") +# my_str = input("Enter a string: ") # remove punctuation from the string and use an empty variable to put the alphabetic characters into no_punct = "" for char in my_str: - if char not in punctuations: - no_punct = no_punct + char + if char not in punctuations: + no_punct = no_punct + char -# Make all words in string lowercase. my_str now equals the original string without the punctuation +# Make all words in string lowercase. my_str now equals the original string without the punctuation my_str = no_punct.lower() # breakdown the string into a list of words @@ -36,7 +36,7 @@ # insert sorted words into dictionary with key for word in new_Word_List: - count+=1 + count += 1 word_Dict[count] = word print(word_Dict) diff --git a/Python Programs/Python Program to Transpose a Matrix.py b/Python Programs/Python Program to Transpose a Matrix.py new file mode 100644 index 00000000000..d636ebcfa6a --- /dev/null +++ b/Python Programs/Python Program to Transpose a Matrix.py @@ -0,0 +1,12 @@ +X = [[12, 7], [4, 5], [3, 8]] + +result = [[0, 0, 0], [0, 0, 0]] + +# iterate through rows +for i in range(len(X)): + # iterate through columns + for j in range(len(X[0])): + result[j][i] = X[i][j] + +for r in result: + print(r) diff --git a/python program for finding square root for positive number.py b/Python Programs/python program for finding square root for positive number.py similarity index 50% rename from python program for finding square root for positive number.py rename to Python Programs/python program for finding square root for positive number.py index dcb8251f839..2a2a2dc79b9 100644 --- a/python program for finding square root for positive number.py +++ b/Python Programs/python program for finding square root for positive number.py @@ -1,10 +1,10 @@ # Python Program to calculate the square root # Note: change this value for a different result -num = 8 +num = 8 # To take the input from the user -#num = float(input('Enter a number: ')) +# num = float(input('Enter a number: ')) -num_sqrt = num ** 0.5 -print('The square root of %0.3f is %0.3f'%(num ,num_sqrt)) +num_sqrt = num**0.5 +print("The square root of %0.3f is %0.3f" % (num, num_sqrt)) diff --git a/Python Voice Generator.py b/Python Voice Generator.py new file mode 100644 index 00000000000..10207a9ca0d --- /dev/null +++ b/Python Voice Generator.py @@ -0,0 +1,12 @@ +# install and import google text-to-speech library gtts +from gtts import gTTS +import os + +# provide user input text +text = input("enter the text: ") +# covert text into voice +voice = gTTS(text=text, lang="en") +# save the generated voice +voice.save("output.mp3") +# play the file in windows +os.system("start output.mp3") diff --git a/Python-Array-Equilibrium-Index.py b/Python-Array-Equilibrium-Index.py index 0aac8fbf995..a12ee99a79c 100644 --- a/Python-Array-Equilibrium-Index.py +++ b/Python-Array-Equilibrium-Index.py @@ -13,25 +13,27 @@ 7 -7 1 5 2 -4 3 0 Sample Output : -3 """ -def equilibrium(arr): - - # finding the sum of whole array - total_sum = sum(arr) +3""" + + +def equilibrium(arr): + # finding the sum of whole array + total_sum = sum(arr) leftsum = 0 - for i, num in enumerate(arr): - - # total_sum is now right sum - # for index i - total_sum -= num - - if leftsum == total_sum: - return i - leftsum += num - - # If no equilibrium index found, - # then return -1 + for i, num in enumerate(arr): + # total_sum is now right sum + # for index i + total_sum -= num + + if leftsum == total_sum: + return i + leftsum += num + + # If no equilibrium index found, + # then return -1 return -1 + + n = int(input()) arr = [int(i) for i in input().strip().split()] print(equilibrium(arr)) diff --git a/Python_swapping.py b/Python_swapping.py index 02b9411bca9..1822f2f1bc3 100644 --- a/Python_swapping.py +++ b/Python_swapping.py @@ -1,18 +1,19 @@ -# Python3 program to swap first -# and last element of a list - -# Swap function -def swapList(newList): - size = len(newList) - - # Swapping - temp = newList[0] - newList[0] = newList[size - 1] - newList[size - 1] = temp - - return newList - -# Driver code -newList = [12, 35, 9, 56, 24] - -print(swapList(newList)) +# Python3 program to swap first +# and last element of a list + +# Swap function +def swapList(newList): + size = len(newList) + + # Swapping + temp = newList[0] + newList[0] = newList[size - 1] + newList[size - 1] = temp + + return newList + + +# Driver code +newList = [12, 35, 9, 56, 24] + +print(swapList(newList)) diff --git a/QR_code_generator/qrcode.py b/QR_code_generator/qrcode.py index 475f66e99fe..51a48b692b9 100755 --- a/QR_code_generator/qrcode.py +++ b/QR_code_generator/qrcode.py @@ -1,5 +1,6 @@ -import pyqrcode, png -from pyqrcode import QRCode +import pyqrcode +# from pyqrcode import QRCode +# no need to import same library again and again # Creating QR code after given text "input" url = pyqrcode.create(input("Enter text to convert: ")) diff --git a/QuestionAnswerVirtualAssistant/backend.py b/QuestionAnswerVirtualAssistant/backend.py new file mode 100644 index 00000000000..3746a93cb69 --- /dev/null +++ b/QuestionAnswerVirtualAssistant/backend.py @@ -0,0 +1,221 @@ +import sqlite3 +import json +import pandas as pd +from sklearn.feature_extraction.text import TfidfVectorizer + + +class QuestionAnswerVirtualAssistant: + """ + Used for automatic question-answering + + It works by building a reverse index store that maps + words to an id. To find the indexed questions that contain + a certain the words in the user question, we then take an + intersection of the ids, ranks the questions to pick the best fit, + then select the answer that maps to that question + """ + + def __init__(self): + """ + Returns - None + Input - None + ---------- + - Initialize database. we use sqlite3 + - Check if the tables exist, if not create them + - maintain a class level access to the database + connection object + """ + self.conn = sqlite3.connect("virtualassistant.sqlite3", autocommit=True) + cur = self.conn.cursor() + res = cur.execute("SELECT name FROM sqlite_master WHERE name='IdToQuesAns'") + tables_exist = res.fetchone() + + if not tables_exist: + self.conn.execute( + "CREATE TABLE IdToQuesAns(id INTEGER PRIMARY KEY, question TEXT, answer TEXT)" + ) + self.conn.execute("CREATE TABLE WordToId (name TEXT, value TEXT)") + cur.execute( + "INSERT INTO WordToId VALUES (?, ?)", + ( + "index", + "{}", + ), + ) + + def index_question_answer(self, question, answer): + """ + Returns - string + Input - str: a string of words called question + ---------- + Indexes the question and answer. It does this by performing two + operations - add the question and answer to the IdToQuesAns, then + adds the words in the question to WordToId + - takes in the question and answer (str) + - passes the question and answer to a method to add them + to IdToQuesAns + - retrieves the id of the inserted ques-answer + - uses the id to call the method that adds the words of + the question to the reverse index WordToId if the word has not + already been indexed + """ + row_id = self._add_to_IdToQuesAns(question.lower(), answer.lower()) + cur = self.conn.cursor() + reverse_idx = cur.execute( + "SELECT value FROM WordToId WHERE name='index'" + ).fetchone()[0] + reverse_idx = json.loads(reverse_idx) + question = question.split() + for word in question: + if word not in reverse_idx: + reverse_idx[word] = [row_id] + else: + if row_id not in reverse_idx[word]: + reverse_idx[word].append(row_id) + reverse_idx = json.dumps(reverse_idx) + cur = self.conn.cursor() + result = cur.execute( + "UPDATE WordToId SET value = (?) WHERE name='index'", (reverse_idx,) + ) + return "index successful" + + def _add_to_IdToQuesAns(self, question, answer): + """ + Returns - int: the id of the inserted document + Input - str: a string of words called `document` + --------- + - use the class-level connection object to insert the document + into the db + - retrieve and return the row id of the inserted document + """ + cur = self.conn.cursor() + res = cur.execute( + "INSERT INTO IdToQuesAns (question, answer) VALUES (?, ?)", + ( + question, + answer, + ), + ) + return res.lastrowid + + def find_questions(self, user_input): + """ + Returns - : the return value of the _find_questions_with_idx method + Input - str: a string of words called `user_input`, expected to be a question + --------- + - retrieve the reverse index + - use the words contained in the user input to find all the idxs + that contain the word + - use idxs to call the _find_questions_with_idx method + - return the result of the called method + """ + cur = self.conn.cursor() + reverse_idx = cur.execute( + "SELECT value FROM WordToId WHERE name='index'" + ).fetchone()[0] + reverse_idx = json.loads(reverse_idx) + user_input = user_input.split(" ") + all_docs_with_user_input = [] + for term in user_input: + if term in reverse_idx: + all_docs_with_user_input.append(reverse_idx[term]) + + if not all_docs_with_user_input: # the user_input does not exist + return [] + + common_idx_of_docs = set(all_docs_with_user_input[0]) + for idx in all_docs_with_user_input[1:]: + common_idx_of_docs.intersection_update(idx) + + if not common_idx_of_docs: # the user_input does not exist + return [] + + return self._find_questions_with_idx(common_idx_of_docs) + + def _find_questions_with_idx(self, idxs): + """ + Returns - list[str]: the list of questions with the idxs + Input - list of idxs + --------- + - use the class-level connection object to retrieve the questions that + have the idx in the input list of idxs. + - retrieve and return these questions as a list + """ + idxs = list(idxs) + cur = self.conn.cursor() + sql = "SELECT id, question, answer FROM IdToQuesAns WHERE id in ({seq})".format( + seq=",".join(["?"] * len(idxs)) + ) + result = cur.execute(sql, idxs).fetchall() + return result + + def find_most_matched_question(self, user_input, corpus): + """ + Returns - list[str]: the list of [(score, most_matching_question)] + Input - user_input, and list of matching questions called corpus + --------- + - use the tfidf score to rank the questions and pick the most matching + question + """ + vectorizer = TfidfVectorizer() + tfidf_scores = vectorizer.fit_transform(corpus) + tfidf_array = pd.DataFrame( + tfidf_scores.toarray(), columns=vectorizer.get_feature_names_out() + ) + tfidf_dict = tfidf_array.to_dict() + + user_input = user_input.split(" ") + result = [] + for idx in range(len(corpus)): + result.append([0, corpus[idx]]) + + for term in user_input: + if term in tfidf_dict: + for idx in range(len(result)): + result[idx][0] += tfidf_dict[term][idx] + return result[0] + + def provide_answer(self, user_input): + """ + Returns - str: the answer to the user_input + Input - str: user_input + --------- + - use the user_input to get the list of matching questions + - create a corpus which is a list of all matching questions + - create a question_map that maps questions to their respective answers + - use the user_input and corpus to find the most matching question + - return the answer that matches that question from the question_map + """ + matching_questions = self.find_questions(user_input) + corpus = [item[1] for item in matching_questions] + question_map = { + question: answer for (id, question, answer) in matching_questions + } + score, most_matching_question = self.find_most_matched_question( + user_input, corpus + ) + return question_map[most_matching_question] + + +if __name__ == "__main__": + va = QuestionAnswerVirtualAssistant() + va.index_question_answer( + "What are the different types of competitions available on Kaggle", + "Types of Competitions Kaggle Competitions are designed to provide challenges for competitors", + ) + print( + va.index_question_answer( + "How to form, manage, and disband teams in a competition", + "Everyone that competes in a Competition does so as a team. A team is a group of one or more users", + ) + ) + va.index_question_answer( + "What is Data Leakage", + "Data Leakage is the presence of unexpected additional information in the training data", + ) + va.index_question_answer( + "How does Kaggle handle cheating", + "Cheating is not taken lightly on Kaggle. We monitor our compliance account", + ) + print(va.provide_answer("state Kaggle cheating policy")) + print(va.provide_answer("Tell me what is data leakage")) diff --git a/QuestionAnswerVirtualAssistant/frontend.py b/QuestionAnswerVirtualAssistant/frontend.py new file mode 100644 index 00000000000..216568bacc5 --- /dev/null +++ b/QuestionAnswerVirtualAssistant/frontend.py @@ -0,0 +1,44 @@ +from tkinter import * +import backend + + +def index_question_answer(): + # for this, we are separating question and answer by "_" + question_answer = index_question_answer_entry.get() + question, answer = question_answer.split("_") + print(question) + print(answer) + va = backend.QuestionAnswerVirtualAssistant() + print(va.index_question_answer(question, answer)) + + +def provide_answer(): + term = provide_answer_entry.get() + va = backend.QuestionAnswerVirtualAssistant() + print(va.provide_answer(term)) + + +if __name__ == "__main__": + root = Tk() + root.title("Knowledge base") + root.geometry("300x300") + + index_question_answer_label = Label(root, text="Add question:") + index_question_answer_label.pack() + index_question_answer_entry = Entry(root) + index_question_answer_entry.pack() + + index_question_answer_button = Button( + root, text="add", command=index_question_answer + ) + index_question_answer_button.pack() + + provide_answer_label = Label(root, text="User Input:") + provide_answer_label.pack() + provide_answer_entry = Entry(root) + provide_answer_entry.pack() + + search_term_button = Button(root, text="ask", command=provide_answer) + search_term_button.pack() + + root.mainloop() diff --git a/QuestionAnswerVirtualAssistant/requirements.txt b/QuestionAnswerVirtualAssistant/requirements.txt new file mode 100644 index 00000000000..fb4d28890ad --- /dev/null +++ b/QuestionAnswerVirtualAssistant/requirements.txt @@ -0,0 +1,2 @@ +pandas +scikit-learn \ No newline at end of file diff --git a/Quizzler Using Tkinter and Trivia DB API/README.md b/Quizzler Using Tkinter and Trivia DB API/README.md new file mode 100644 index 00000000000..1efa6c3f350 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/README.md @@ -0,0 +1,103 @@ +# 🧠 Quizzler - Python-Based Quiz Application + +## 📌 Overview + +**Quizzler** is a Python-based GUI quiz application that fetches trivia questions from an online API and challenges the user with a series of True/False questions. Built using **Tkinter**, the app demonstrates effective use of object-oriented programming, API integration, and interactive UI design in Python. + +--- + +## 🎯 Objective + +The primary goal of Quizzler is to: +- Provide a user-friendly quiz experience. +- Integrate with the Open Trivia DB API for dynamic question fetching. +- Showcase modular and scalable code architecture using Python. + +--- + +## Screenshots + +### Initial Screen and result + + + + + +
Login PageRegister Page
+ +### Response to wrong or correct answer + + + + + +
Profile PageHome Page
+ +--- +## 🛠️ Tech Stack + +| Component | Technology | +|------------------|---------------------| +| Language | Python | +| GUI Framework | Tkinter | +| Data Source | Open Trivia DB API | +| Architecture | Object-Oriented | + +--- + +## 🧩 Project Structure + +
+quizzler/
+│
+├── main.py # Main file to run the application
+├── ui.py # Handles the GUI logic with Tkinter
+├── quiz_brain.py # Core logic for question handling
+├── data.py # Module for API integration
+└── README.md # Documentation
+
+ + +- `main.py`: Initializes the quiz and GUI components. +- `ui.py`: Manages GUI rendering and button interactions. +- `quiz_brain.py`: Controls quiz logic, answer checking, and scorekeeping. +- `data.py`: Fetches quiz questions from the Open Trivia DB API. + +--- + +## 🔌 API Integration + +Questions are fetched using a GET request from the [Open Trivia Database API](https://opentdb.com/api_config.php). The app dynamically parses the JSON response and formats it for display. + +Example API endpoint: +> https://opentdb.com/api.php?amount=10&type=boolean + + - You can adjust amount if you want more or less questions. And type also. + +--- + +## 💻 How to Run + +### ✅ Prerequisites + +- Python 3.x installed on your machine +- `requests` library (install via pip) + +### 🧪 Installation Steps + +```bash +git clone https://github.com/prashantgohel321/Quizzler-Python.git +cd quizzler +pip install requests +``` + +### Execution +> python main.py + +### Features + - Clean and responsive UI with score tracking + - Instant feedback with visual cues (color-based) + - Real-time data fetching using API + - Modular code architecture for scalability + + diff --git a/Quizzler Using Tkinter and Trivia DB API/data_dynamic.py b/Quizzler Using Tkinter and Trivia DB API/data_dynamic.py new file mode 100644 index 00000000000..df3e705cbc0 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/data_dynamic.py @@ -0,0 +1,29 @@ + +''' +This file is responsible for fetching quiz questions from the Open Trivia Database API. +''' + +import requests + +parameters = { + "amount": 10, + "type": "multiple", + "category": 18 +} + +error_message = "" + +try: + response = requests.get(url="https://opentdb.com/api.php", params=parameters, timeout=10) + response.raise_for_status() # Raise an exception for HTTP errors + question_data = response.json()["results"] + print("Questions loaded successfully from the API.") +except requests.exceptions.ConnectionError: + error_message = "Network connection is poor. Please check your internet connection." + question_data = [] +except requests.exceptions.Timeout: + error_message = "Request timed out. Internet speed might be too slow." + question_data = [] +except requests.exceptions.RequestException as e: + error_message = f"An error occurred: {e}" + question_data = [] diff --git a/Quizzler Using Tkinter and Trivia DB API/data_static.py b/Quizzler Using Tkinter and Trivia DB API/data_static.py new file mode 100644 index 00000000000..081bc3982a2 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/data_static.py @@ -0,0 +1,191 @@ +question_data = [ + { + "question": "What is one of the main impacts of progress in hardware technologies on software?", + "correct_answer": "Need for more sophisticated programs", + "incorrect_answers": [ + "Increase in hardware prices", + "Decrease in computational power", + "Less complex problems for software engineers" + ] + }, + { + "question": "How have software engineers coped with the challenges of increasing computational capabilities?", + "correct_answer": "By innovating and building on past experiences", + "incorrect_answers": [ + "By reducing programming efforts", + "By simplifying programming languages", + "By avoiding large and complex problems" + ] + }, + { + "question": "Which of the following is a definition of software engineering according to IEEE?", + "correct_answer": "The application of systematic, disciplined, quantifiable approach to software development, operation, and maintenance", + "incorrect_answers": [ + "The art of writing computer programs", + "An engineering approach to developing software", + "A collection of unorganized programming techniques" + ] + }, + { + "question": "Why is software engineering similar to other engineering disciplines?", + "correct_answer": "It uses well-understood and well-documented principles", + "incorrect_answers": [ + "It makes use of subjective judgement and ill understood principles", + "It often avoids conflicting goals", + "It relies solely on qualitative attributes" + ] + }, + { + "question": "Which statement supports the idea that software engineering is not just an art?", + "correct_answer": "It organizes experiences and provides theoretical bases to experimental observations", + "incorrect_answers": [ + "It makes subjective judgement based on qualitative attributes", + "It avoids systematic and disciplined approaches", + "It does not require tradeoffs in problem solving" + ] + }, + { + "question": "How have software engineering principles evolved over the last sixty years?", + "correct_answer": "From an art form to an engineering discipline", + "incorrect_answers": [ + "From a science to an art form", + "From a craft to an art form", + "From an engineering discipline to a craft" + ] + }, + { + "question": "Which programming style is characterized by quickly developing a program without any specification, plan, or design?", + "correct_answer": "Build and fix", + "incorrect_answers": [ + "Exploratory", + "Code and fix", + "Ad hoc" + ] + }, + { + "question": "According to the text, what has been a symptom of the present software crisis?", + "correct_answer": "Increasing software costs compared to hardware", + "incorrect_answers": [ + "Decrease in software development costs", + "Software products becoming easier to alter and debug", + "Software products being delivered on time" + ] + }, + { + "question": "What is one of the main benefits of adopting software engineering techniques according to the text?", + "correct_answer": "Developing high quality software cost effectively and timely", + "incorrect_answers": [ + "Increasing hardware costs", + "Avoiding the use of scientific principles", + "Making software development more subjective" + ] + }, + { + "question": "What is a key characteristic of toy software?", + "correct_answer": "Lack good user interface and proper documentation", + "incorrect_answers": [ + "Developed by a team of professionals", + "Large in size and highly complex", + "Thoroughly tested and maintained" + ] + } + # { + # "question": "What differentiates professional software from toy software?", + # "correct_answer": "Professional software is systematically designed, carefully implemented, and thoroughly tested", + # "incorrect_answers": [ + # "Professional software is usually developed by a single individual", + # "Professional software lacks supporting documents", + # "Professional software is used by a single user" + # ] + # }, + # { + # "question": "What is a key feature of software services projects?", + # "correct_answer": "They often involve the development of customized software", + # "incorrect_answers": [ + # "They are always largescale projects", + # "They involve the development of off-the-shelf software", + # "They are never outsourced to other companies" + # ] + # }, + # { + # "question": "Why might a company choose to outsource part of its software development work?", + # "correct_answer": "To develop some parts cost effectively or to use external expertise", + # "incorrect_answers": [ + # "To ensure all development work is done internally", + # "Because it has more expertise than the outsourcing company", + # "To avoid completing the project on time" + # ] + # }, + # { + # "question": "What type of software is typically developed in a short time frame and at a low cost?", + # "correct_answer": "Toy software", + # "incorrect_answers": [ + # "Generic software products", + # "Customized software", + # "Professional software" + # ] + # }, + # { + # "question": "What has been a traditional focus of Indian software companies?", + # "correct_answer": "Executing software services projects", + # "incorrect_answers": [ + # "Developing largescale generic software products", + # "Avoiding any type of software development", + # "Developing only toy software" + # ] + # }, + # { + # "question": "What is the primary characteristic of the exploratory style of software development?", + # "correct_answer": "Complete freedom for the programmer to choose development activities", + # "incorrect_answers": [ + # "Strict adherence to development rules and guidelines", + # "Development of software based on detailed specifications", + # "Use of structured and well-documented procedures" + # ] + # }, + # { + # "question": "What typically initiates the coding process in the exploratory development style?", + # "correct_answer": "Initial customer briefing about requirements", + # "incorrect_answers": [ + # "Completion of a detailed design document", + # "Formal approval from a project manager", + # "Completion of a feasibility study" + # ] + # }, + # { + # "question": "What is a major limitation of the exploratory development style for large sized software projects?", + # "correct_answer": "Development time and effort grow exponentially with problem size", + # "incorrect_answers": [ + # "Requires a large team of developers", + # "Results in highly structured and high quality code", + # "Easily allows for concurrent work among multiple developers" + # ] + # }, + # { + # "question": "What difficulty arises when using the exploratory style in a team development environment?", + # "correct_answer": "Difficulty in partitioning work among developers due to lack of proper design and documentation", + # "incorrect_answers": [ + # "Easy partitioning of work among developers", + # "Development work is based on a detailed design", + # "Use of structured and well documented code" + # ] + # }, + # { + # "question": "In what scenario can the exploratory development style be successful?", + # "correct_answer": "Developing very small programs", + # "incorrect_answers": [ + # "Developing largescale enterprise software", + # "Implementing critical safety systems", + # "Managing large, distributed teams" + # ] + # }, + # { + # "question": "What was the primary programming style used in the 1950s?", + # "correct_answer": "Build and fix (exploratory programming) style", + # "incorrect_answers": [ + # "Object-oriented programming", + # "Control flow-based design", + # "Data flow-oriented design" + # ] + # } +] \ No newline at end of file diff --git a/Quizzler Using Tkinter and Trivia DB API/main.py b/Quizzler Using Tkinter and Trivia DB API/main.py new file mode 100644 index 00000000000..37a038c5d60 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/main.py @@ -0,0 +1,27 @@ + +"""This file processes the fetched questions and prepares them for use in the quiz.""" + +from question_model import Question +from data_dynamic import question_data +from quiz_brain import QuizBrain +from ui import QuizInterface + +# question_bank = [] +# question_text = question["question"] +# question_answer = question["correct_answer"] +# question_options = question["incorrect_answers"] + [question["correct_answer"]] +# new_question = Question(question_text, question_answer, question_options) +# question_bank.append(new_question) + +# list comprehension +question_bank = [ + Question( + question["question"], + question["correct_answer"], + question["incorrect_answers"] + [question["correct_answer"]] + ) + for question in question_data +] + +quiz = QuizBrain(question_bank) +quiz_ui = QuizInterface(quiz) diff --git a/Quizzler Using Tkinter and Trivia DB API/question_model.py b/Quizzler Using Tkinter and Trivia DB API/question_model.py new file mode 100644 index 00000000000..7087cd22968 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/question_model.py @@ -0,0 +1,5 @@ +class Question: + def __init__(self, q_text, q_answer, q_options): + self.text = q_text + self.answer = q_answer + self.options = q_options diff --git a/Quizzler Using Tkinter and Trivia DB API/quiz_brain.py b/Quizzler Using Tkinter and Trivia DB API/quiz_brain.py new file mode 100644 index 00000000000..53bcf178931 --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/quiz_brain.py @@ -0,0 +1,24 @@ + +"""This file contains the logic that drives the quiz game, including managing the current question, checking answers, and tracking the score.""" + +import html + +class QuizBrain: + def __init__(self, q_list): + self.question_number = 0 + self.score = 0 + self.question_list = q_list + self.current_question = None + + def still_has_questions(self): + return self.question_number < len(self.question_list) + + def next_question(self): + self.current_question = self.question_list[self.question_number] + self.question_number += 1 + q_text = html.unescape(self.current_question.text) + return f"Q.{self.question_number}: {q_text}" + + def check_answer(self, user_answer): + correct_answer = self.current_question.answer + return user_answer.lower() == correct_answer.lower() diff --git a/Quizzler Using Tkinter and Trivia DB API/screenshots/s1.png b/Quizzler Using Tkinter and Trivia DB API/screenshots/s1.png new file mode 100644 index 00000000000..8034d295d2e Binary files /dev/null and b/Quizzler Using Tkinter and Trivia DB API/screenshots/s1.png differ diff --git a/Quizzler Using Tkinter and Trivia DB API/screenshots/s2.png b/Quizzler Using Tkinter and Trivia DB API/screenshots/s2.png new file mode 100644 index 00000000000..96ad3a82ef6 Binary files /dev/null and b/Quizzler Using Tkinter and Trivia DB API/screenshots/s2.png differ diff --git a/Quizzler Using Tkinter and Trivia DB API/screenshots/s3.png b/Quizzler Using Tkinter and Trivia DB API/screenshots/s3.png new file mode 100644 index 00000000000..0e0129fbceb Binary files /dev/null and b/Quizzler Using Tkinter and Trivia DB API/screenshots/s3.png differ diff --git a/Quizzler Using Tkinter and Trivia DB API/screenshots/s4.png b/Quizzler Using Tkinter and Trivia DB API/screenshots/s4.png new file mode 100644 index 00000000000..977a7d38159 Binary files /dev/null and b/Quizzler Using Tkinter and Trivia DB API/screenshots/s4.png differ diff --git a/Quizzler Using Tkinter and Trivia DB API/ui.py b/Quizzler Using Tkinter and Trivia DB API/ui.py new file mode 100644 index 00000000000..42102c20fac --- /dev/null +++ b/Quizzler Using Tkinter and Trivia DB API/ui.py @@ -0,0 +1,145 @@ + +"""This file manages the graphical user interface of the quiz, using Tkinter to display questions, answer options, and the score to the user.""" + +from tkinter import * +from quiz_brain import QuizBrain +from data_dynamic import error_message + +# Normal screen +BACKGROUND = "#608BC1" +CANVAS = "#CBDCEB" +TEXT = "#133E87" + +# If answer is right +R_BACKGROUND = "#859F3D" +R_CANVAS = "#F6FCDF" +R_TEXT = "#31511E" + +# If answer is wrong +W_BACKGROUND = "#C63C51" +W_CANVAS = "#D95F59" +W_TEXT = "#522258" + +FONT = ("Lucida sans", 20) + +class QuizInterface: + + def __init__(self, quiz_brain: QuizBrain): + self.quiz = quiz_brain + self.window = Tk() + self.window.title("Quizzler") + self.window.config(padx=20, pady=20, bg=BACKGROUND) + + self.score_label = Label(text="Score: 0", fg="white", bg=BACKGROUND, font=("Lucida sans", 15, "bold")) + self.score_label.grid(row=0, column=1) + + self.canvas = Canvas(width=1000, height=550, bg=CANVAS) + self.question_text = self.canvas.create_text( + 500, 100, width=800, text="Some question text", fill=TEXT, font=FONT, anchor="center", justify="center" + ) + self.canvas.grid(row=1, column=0, columnspan=2, pady=50) + + self.opt_selected = IntVar() + self.options = self.create_radio_buttons() + + self.submit_button = Button( + text="Submit", command=self.submit_answer, fg=TEXT, font=FONT + ) + self.submit_button.grid(row=3, column=0, columnspan=2) + + if error_message: + self.display_error_message(error_message) + else: + self.get_next_question() + + self.window.mainloop() + + def create_radio_buttons(self): + radio_buttons = [] + y_position = 230 + for i in range(4): + radio_button = Radiobutton( + self.canvas, text="", variable=self.opt_selected, value=i + 1, font=FONT, bg=CANVAS, anchor="w", + justify="left", fg=TEXT, wraplength=900 + ) + radio_buttons.append(radio_button) + self.canvas.create_window(50, y_position, window=radio_button, anchor="w") + y_position += 65 + return radio_buttons + + def get_next_question(self): + if self.quiz.still_has_questions(): + self.opt_selected.set(0) # Reset selection + q_text = self.quiz.next_question() + self.canvas.itemconfig(self.question_text, text=q_text) + self.canvas.config(bg=CANVAS) + self.window.config(bg=BACKGROUND) + for option in self.options: + option.config(bg=CANVAS, fg=TEXT) + self.display_options() + self.score_label.config(bg=BACKGROUND, text=f"Score: {self.quiz.score}") + self.canvas.itemconfig(self.question_text, fill=TEXT) + else: + self.display_result() + + def display_options(self): + current_options = self.quiz.current_question.options + for i, option in enumerate(current_options): + self.options[i].config(text=option) + + def submit_answer(self): + selected_option_index = self.opt_selected.get() - 1 + if selected_option_index >= 0: + user_answer = self.quiz.current_question.options[selected_option_index] + self.quiz.check_answer(user_answer) + + if self.quiz.check_answer(user_answer): + self.quiz.score += 1 + self.canvas.config(bg=R_CANVAS) + self.window.config(bg=R_BACKGROUND) + for option in self.options: + option.config(bg=R_CANVAS, fg=R_TEXT) + self.canvas.itemconfig(self.question_text, fill=R_TEXT) + self.score_label.config(bg=R_BACKGROUND) + else: + self.canvas.config(bg=W_CANVAS) + self.window.config(bg=W_BACKGROUND) + for option in self.options: + option.config(bg=W_CANVAS, fg=W_TEXT) + self.canvas.itemconfig(self.question_text, fill=W_TEXT) + self.score_label.config(bg=W_BACKGROUND) + + self.window.after(1000, self.get_next_question) + + def display_result(self): + for option in self.options: + option.config(bg=CANVAS, fg=TEXT) + option.destroy() + + if self.quiz.score <= 3: + self.result_text = f"You've completed the quiz!\nYour final score: {self.quiz.score}/{self.quiz.question_number}\nBetter luck next time! Keep practicing!" + elif self.quiz.score <= 6: + self.result_text = f"You've completed the quiz!\nYour final score: {self.quiz.score}/{self.quiz.question_number}\nGood job! You're getting better!" + elif self.quiz.score <= 8: + self.result_text = f"You've completed the quiz!\nYour final score: {self.quiz.score}/{self.quiz.question_number}\nGreat work! You're almost there!" + else: + self.result_text = f"You've completed the quiz!\nYour final score: {self.quiz.score}/{self.quiz.question_number}\nExcellent! You're a Quiz Master!" + + self.score_label.config(bg=BACKGROUND, text=f"Score: {self.quiz.score}") + self.canvas.config(bg=CANVAS) + self.window.config(bg=BACKGROUND) + self.canvas.itemconfig(self.question_text, fill=TEXT) + self.score_label.config(bg=BACKGROUND) + + self.canvas.itemconfig(self.question_text, text=self.result_text) + self.canvas.coords(self.question_text, 500, 225) # Centered position + self.submit_button.config(state="disabled") + + def display_error_message(self, message): + for option in self.options: + option.config(bg=CANVAS, fg=TEXT) + option.destroy() + + self.canvas.itemconfig(self.question_text, text=message) + self.canvas.coords(self.question_text, 500, 225) # Centered position + self.submit_button.config(state="disabled") diff --git a/README.md b/README.md index 03c280e1cba..a1521508a59 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +#This is a new repo # My Python Eggs 🐍 😄
@@ -54,6 +55,7 @@ Feel free to explore the scripts and use them for your learning and automation n 40. [Test Case Generator](https://github.com/Tanmay-901/test-case-generator/blob/master/test_case.py) - Generate different types of test cases with a clean and friendly UI, used in competitive programming and software testing. 41. [Extract Thumbnail From Video](https://github.com/geekcomputers/Python/tree/ExtractThumbnailFromVideo) - Extract Thumbnail from video files 42. [How to begin the journey of open source (first contribution)](https://www.youtube.com/watch?v=v2X51AVgl3o) - First Contribution of open source +43. [smart_file_organizer.py](https://github.com/sangampaudel530/Python2.0/blob/main/smart_file_organizer.py) - Organizes files in a directory into categorized subfolders based on file type (Images, Documents, Videos, Audios, Archives, Scripts, Others). You can run it once or automatically at set intervals using the `--path` and `--interval` options.
_**Note**: The content in this repository belongs to the respective authors and creators. I'm just providing a formatted README.md for better presentation._ diff --git a/Random Password Generator.py b/Random Password Generator.py index b13262dadf8..f420421d14b 100644 --- a/Random Password Generator.py +++ b/Random Password Generator.py @@ -1,12 +1,11 @@ import random -low="abcdefghijklmnopqrstuvwxyz" -upp="ABCDEFGHIJKLMNOPQRSTUVWXYZ" -num="0123456789" -sym="!@#$%^&*" +low = "abcdefghijklmnopqrstuvwxyz" +upp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +num = "0123456789" +sym = "!@#$%^&*" -all=low+upp+num+sym -length=8 -password="".join(random.sample(all,length)) +all = low + upp + num + sym +length = 8 +password = "".join(random.sample(all, length)) print(password) - diff --git a/RandomDice.py b/RandomDice.py index 404c4b30a72..682aaa47613 100644 --- a/RandomDice.py +++ b/RandomDice.py @@ -5,6 +5,7 @@ from random import randint from tkinter import * + # Function to rool the dice def roll(): text.delete(0.0, END) diff --git a/RandomNumberGame.py b/RandomNumberGame.py index 8b3129234a6..b22a8086a89 100644 --- a/RandomNumberGame.py +++ b/RandomNumberGame.py @@ -1,59 +1,117 @@ """ - hey everyone it is a basic game code using random . in this game computer will randomly chose an number from 1 to 100 and players will have - to guess that which number it is and game will tell him on every guss whether his/her guess is smaller or bigger than the chosen number. it is - a multi player game so it can be played with many players there is no such limitations of user till the size of list. if any one wants to modify - this game he/she is most welcomed. - Thank you +Random Number Guessing Game +--------------------------- +This is a simple multiplayer game where each player tries to guess a number +chosen randomly by the computer between 1 and 100. After each guess, the game +provides feedback whether the guess is higher or lower than the target number. +The winner is the player who guesses the number in the fewest attempts. + +Example: + >>> import builtins, random + >>> random.seed(0) + >>> inputs = iter(["1", "Alice", "50", "49"]) + >>> builtins.input = lambda prompt="": next(inputs) + >>> from game import play_game + >>> players, scores, winners = play_game() + >>> players + ['Alice'] + >>> scores # doctest: +ELLIPSIS + [2] + >>> winners + ['Alice'] """ -import os import random +from typing import List, Tuple + + +def get_players(n: int) -> List[str]: + """ + Prompt to enter `n` player names. -players = [] -score = [] + Args: + n (int): number of players -print( - "\n\tRandom Number Game\n\nHello Everyone ! it is just a game of chance in which you have to guess a number" - " from 0 to 100 and computer will tell whether your guess is smaller or bigger than the acctual number chossen by the computer . " - "the person with less attempts in guessing the number will be winner ." -) -x = input() -os.system("cls") + Returns: + List[str]: list of player names -n = int(input("Enter number of players : ")) -print() + Example: + >>> import builtins + >>> inputs = iter(["Alice", "Bob"]) + >>> builtins.input = lambda prompt="": next(inputs) + >>> get_players(2) + ['Alice', 'Bob'] + """ + return [input("Enter name of player: ") for _ in range(n)] -for i in range(0, n): - name = input("Enter name of player : ") - players.append(name) -os.system("cls") +def play_turn(player: str) -> int: + """ + Let a player try to guess a random number. -for i in range(0, n): - orignum = random.randint(1, 100) - print(players[i], "your turn :", end="\n\n") - count = 0 + Args: + player (str): player name + + Returns: + int: number of attempts taken + + Example: + >>> import builtins, random + >>> random.seed(1) + >>> inputs = iter(["30", "15", "9"]) + >>> builtins.input = lambda prompt="": next(inputs) + >>> play_turn("Alice") # doctest: +ELLIPSIS + 3 + """ + target = random.randint(1, 100) + print(f"\n{player}, it's your turn!") + attempts = 0 while True: - ch = int(input("Please enter your guess : ")) - if ch > orignum: - print("no! number is smaller...") - count += 1 - elif ch == orignum: - print("\n\n\tcongrats you won") - break + guess = int(input("Please enter your guess: ")) + attempts += 1 + if guess > target: + print("Too high, try smaller...") + elif guess < target: + print("Too low, try bigger...") else: - print("nope ! number is large dude...") - count += 1 - print(" you have taken", count + 1, "attempts") - x = input() - score.append(count + 1) - os.system("cls") -print("players :\n") -for i in range(0, n): - print(players[i], "-", score[i]) - -print("\n\nwinner is :\n") -for i in range(0, n): - if score[i] == min(score): - print(players[i]) -x = input() + print("Congratulations! You guessed it!") + return attempts + + +def play_game() -> Tuple[List[str], List[int], List[str]]: + """ + Run the multiplayer game. + + Returns: + Tuple[List[str], List[int], List[str]]: (players, scores, winners) + + Example: + >>> import builtins, random + >>> random.seed(2) + >>> inputs = iter(["1", "Eve", "30", "13"]) + >>> builtins.input = lambda prompt="": next(inputs) + >>> players, scores, winners = play_game() + >>> players + ['Eve'] + >>> scores # doctest: +ELLIPSIS + [2] + >>> winners + ['Eve'] + """ + n = int(input("Enter number of players: ")) + players = get_players(n) + scores = [play_turn(p) for p in players] + min_score = min(scores) + winners = [p for p, s in zip(players, scores) if s == min_score] + print("\nResults:") + for p, s in zip(players, scores): + print(f"{p}: {s} attempts") + print("\nWinner(s):", ", ".join(winners)) + return players, scores, winners + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + play_game() diff --git a/Randomnumber.py b/Randomnumber.py index 45d08b4499b..6cd29746f7c 100644 --- a/Randomnumber.py +++ b/Randomnumber.py @@ -3,4 +3,4 @@ # importing the random module from random import randint -print(randint(0,9)) +print(randint(0, 9)) diff --git a/ReadFromCSV.py b/ReadFromCSV.py index f1921bd19e0..dc8177021f4 100644 --- a/ReadFromCSV.py +++ b/ReadFromCSV.py @@ -8,7 +8,7 @@ """reading data from SalesData.csv file and passing data to dataframe""" -df = pd.read_csv("..\SalesData.csv") # Reading the csv file +df = pd.read_csv(r"..\SalesData.csv") # Reading the csv file x = df[ "SalesID" ].as_matrix() # casting SalesID to list #extracting the column with name SalesID diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000000..f0c2eb583a7 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,33 @@ +# Security Policy + +## Supported Versions + +The project is currently at version **0.1**. +It was initially compatible with **Python 3.6+ ~ 3.13.7**, +but going forward we are migrating to **Python 3.9+** as the minimum supported version. + +| Version | Supported | Notes | +| ------- | ------------------ | ------------------------------------------ | +| 0.1.x | :white_check_mark: | Supported on Python 3.9+ (migration target) | +| < 0.1 | :x: | Not supported | + +| Python Version | Supported | Notes | +| -------------- | ------------------ | -------------------------- | +| 3.13.x | :white_check_mark: | Supported | +| 3.12.x | :white_check_mark: | Supported | +| 3.11.x | :white_check_mark: | Supported | +| 3.10.x | :white_check_mark: | Supported | +| 3.9.x | :white_check_mark: | Minimum required version | +| 3.6–3.8 | :x: | Deprecated (no longer supported) | + +--- + +## Reporting a Vulnerability + +To report a security vulnerability: + +- Please open a **private security advisory** through GitHub Security Advisories + (Repository → Security → Advisories → Report a vulnerability). +- You will receive an initial response within **7 days**. +- If the vulnerability is accepted, we will provide a patch or mitigation plan. +- If declined, we will explain the reasoning in detail. diff --git a/SOUNDEX.py b/SOUNDEX.py index 4d49ca8272e..fd3a3fdc9c4 100644 --- a/SOUNDEX.py +++ b/SOUNDEX.py @@ -2,7 +2,6 @@ def SOUNDEX(TERM: str): - # Step 0: Covert the TERM to UpperCase TERM = TERM.upper() TERM_LETTERS = [char for char in TERM if char.isalpha()] diff --git a/Sanke-water-gun game.py b/Sanke-water-gun game.py new file mode 100644 index 00000000000..5f21277f15c --- /dev/null +++ b/Sanke-water-gun game.py @@ -0,0 +1,137 @@ +# author: slayking1965 (refactored for Python 3.13.7 with typing & doctests) + +""" +Snake-Water-Gun Game. + +Rules: +- Snake vs Water → Snake drinks water → Snake (computer) wins +- Gun vs Water → Gun sinks in water → Water (user) wins +- Snake vs Gun → Gun kills snake → Gun wins +- Same choice → Draw + +This module implements a 10-round Snake-Water-Gun game where a user plays +against the computer. + +Functions +--------- +determine_winner(user: str, computer: str) -> str + Returns result: "user", "computer", or "draw". + +Examples +-------- +>>> determine_winner("s", "w") +'computer' +>>> determine_winner("w", "g") +'user' +>>> determine_winner("s", "s") +'draw' +""" + +import random +import time +from typing import Dict + + +CHOICES: Dict[str, str] = {"s": "Snake", "w": "Water", "g": "Gun"} + + +def determine_winner(user: str, computer: str) -> str: + """ + Decide winner of one round. + + Parameters + ---------- + user : str + User's choice ("s", "w", "g"). + computer : str + Computer's choice ("s", "w", "g"). + + Returns + ------- + str + "user", "computer", or "draw". + """ + if user == computer: + return "draw" + + if user == "s" and computer == "w": + return "computer" + if user == "w" and computer == "s": + return "user" + + if user == "g" and computer == "s": + return "user" + if user == "s" and computer == "g": + return "computer" + + if user == "w" and computer == "g": + return "user" + if user == "g" and computer == "w": + return "computer" + + return "invalid" + + +def play_game(rounds: int = 10) -> None: + """ + Play Snake-Water-Gun game for given rounds. + + Parameters + ---------- + rounds : int + Number of rounds to play (default 10). + """ + print("Welcome to the Snake-Water-Gun Game\n") + print(f"I am Mr. Computer, We will play this game {rounds} times") + print("Whoever wins more matches will be the winner\n") + + user_win = 0 + comp_win = 0 + draw = 0 + round_no = 0 + + while round_no < rounds: + print(f"Game No. {round_no + 1}") + for key, val in CHOICES.items(): + print(f"Choose {key.upper()} for {val}") + + comp_choice = random.choice(list(CHOICES.keys())) + user_choice = input("\n-----> ").strip().lower() + + result = determine_winner(user_choice, comp_choice) + + if result == "user": + user_win += 1 + elif result == "computer": + comp_win += 1 + elif result == "draw": + draw += 1 + else: + print("\nInvalid input, restarting the game...\n") + time.sleep(1) + round_no = 0 + user_win = comp_win = draw = 0 + continue + + round_no += 1 + print(f"Computer chose {CHOICES[comp_choice]}") + print(f"You chose {CHOICES.get(user_choice, 'Invalid')}\n") + + print("\nHere are final stats:") + print(f"Mr. Computer won: {comp_win} matches") + print(f"You won: {user_win} matches") + print(f"Matches Drawn: {draw}") + + if comp_win > user_win: + print("\n------- Mr. Computer won -------") + elif comp_win < user_win: + print("\n----------- You won -----------") + else: + print("\n---------- Match Draw ----------") + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + play_game() diff --git a/Search_Engine/backend.py b/Search_Engine/backend.py index f716f5fa16d..2c4f730b914 100644 --- a/Search_Engine/backend.py +++ b/Search_Engine/backend.py @@ -1,8 +1,7 @@ import sqlite3 -import test_data -import ast import json + class SearchEngine: """ It works by building a reverse index store that maps @@ -27,9 +26,17 @@ def __init__(self): tables_exist = res.fetchone() if not tables_exist: - self.conn.execute("CREATE TABLE IdToDoc(id INTEGER PRIMARY KEY, document TEXT)") - self.conn.execute('CREATE TABLE WordToId (name TEXT, value TEXT)') - cur.execute("INSERT INTO WordToId VALUES (?, ?)", ("index", "{}",)) + self.conn.execute( + "CREATE TABLE IdToDoc(id INTEGER PRIMARY KEY, document TEXT)" + ) + self.conn.execute("CREATE TABLE WordToId (name TEXT, value TEXT)") + cur.execute( + "INSERT INTO WordToId VALUES (?, ?)", + ( + "index", + "{}", + ), + ) def index_document(self, document): """ @@ -43,13 +50,15 @@ def index_document(self, document): - passes the document to a method to add the document to IdToDoc - retrieves the id of the inserted document - - uses the id to call the method that adds the words of + - uses the id to call the method that adds the words of the document to the reverse index WordToId if the word has not already been indexed """ row_id = self._add_to_IdToDoc(document) cur = self.conn.cursor() - reverse_idx = cur.execute("SELECT value FROM WordToId WHERE name='index'").fetchone()[0] + reverse_idx = cur.execute( + "SELECT value FROM WordToId WHERE name='index'" + ).fetchone()[0] reverse_idx = json.loads(reverse_idx) document = document.split() for word in document: @@ -60,8 +69,10 @@ def index_document(self, document): reverse_idx[word].append(row_id) reverse_idx = json.dumps(reverse_idx) cur = self.conn.cursor() - result = cur.execute("UPDATE WordToId SET value = (?) WHERE name='index'", (reverse_idx,)) - return("index successful") + result = cur.execute( + "UPDATE WordToId SET value = (?) WHERE name='index'", (reverse_idx,) + ) + return "index successful" def _add_to_IdToDoc(self, document): """ @@ -88,7 +99,9 @@ def find_documents(self, search_term): - return the result of the called method """ cur = self.conn.cursor() - reverse_idx = cur.execute("SELECT value FROM WordToId WHERE name='index'").fetchone()[0] + reverse_idx = cur.execute( + "SELECT value FROM WordToId WHERE name='index'" + ).fetchone()[0] reverse_idx = json.loads(reverse_idx) search_term = search_term.split(" ") all_docs_with_search_term = [] @@ -96,18 +109,18 @@ def find_documents(self, search_term): if term in reverse_idx: all_docs_with_search_term.append(reverse_idx[term]) - if not all_docs_with_search_term: # the search term does not exist + if not all_docs_with_search_term: # the search term does not exist return [] common_idx_of_docs = set(all_docs_with_search_term[0]) for idx in all_docs_with_search_term[1:]: common_idx_of_docs.intersection_update(idx) - if not common_idx_of_docs: # the search term does not exist + if not common_idx_of_docs: # the search term does not exist return [] return self._find_documents_with_idx(common_idx_of_docs) - + def _find_documents_with_idx(self, idxs): """ Returns - list[str]: the list of documents with the idxs @@ -119,11 +132,11 @@ def _find_documents_with_idx(self, idxs): """ idxs = list(idxs) cur = self.conn.cursor() - sql="SELECT document FROM IdToDoc WHERE id in ({seq})".format( - seq=','.join(['?']*len(idxs)) - ) + sql = "SELECT document FROM IdToDoc WHERE id in ({seq})".format( + seq=",".join(["?"] * len(idxs)) + ) result = cur.execute(sql, idxs).fetchall() - return(result) + return result if __name__ == "__main__": @@ -132,4 +145,4 @@ def _find_documents_with_idx(self, idxs): print(se.index_document("happiness is all you need")) se.index_document("no way should we be sad") se.index_document("a cheerful heart is a happy one even in Nigeria") - print(se.find_documents("happy")) \ No newline at end of file + print(se.find_documents("happy")) diff --git a/Search_Engine/frontend.py b/Search_Engine/frontend.py index 93dd7636f19..11905bf9d05 100644 --- a/Search_Engine/frontend.py +++ b/Search_Engine/frontend.py @@ -1,5 +1,4 @@ from tkinter import * -from tkinter import messagebox import backend @@ -8,15 +7,17 @@ def add_document(): se = backend.SearchEngine() print(se.index_document(document)) + def find_term(): term = find_term_entry.get() se = backend.SearchEngine() print(se.find_documents(term)) + if __name__ == "__main__": root = Tk() root.title("Registration Form") - root.geometry('300x300') + root.geometry("300x300") add_documents_label = Label(root, text="Add Document:") add_documents_label.pack() @@ -34,4 +35,4 @@ def find_term(): search_term_button = Button(root, text="search", command=find_term) search_term_button.pack() - root.mainloop() \ No newline at end of file + root.mainloop() diff --git a/Search_Engine/test_data.py b/Search_Engine/test_data.py index d58f43e7d17..1c6c7b043ed 100644 --- a/Search_Engine/test_data.py +++ b/Search_Engine/test_data.py @@ -2,7 +2,7 @@ "we should all strive to be happy", "happiness is all you need", "a cheerful heart is a happy one", - "no way should we be sad" + "no way should we be sad", ] -search = "happy" \ No newline at end of file +search = "happy" diff --git a/Snake Game Using Turtle/README.md b/Snake Game Using Turtle/README.md new file mode 100644 index 00000000000..2d717a602e5 --- /dev/null +++ b/Snake Game Using Turtle/README.md @@ -0,0 +1,26 @@ +# My Interactive Snake Game + +Hey there! I’m [Prashant Gohel](https://github.com/prashantgohel321) + +I took the classic Snake game and gave it a modern, interactive twist — with a sleek UI, smooth gameplay, and fun new controls. This project was all about making a nostalgic game feel fresh again! + +![alt text]() + +## What I Added + +**Fresh UI:** Clean, responsive, and almost full-screen — with a neat header for score and controls. + +**Interactive Controls**: Play, Pause, Resume, Restart — all on-screen (plus spacebar support!). + +**High Score System**: Tracks and saves your best score in highscore.txt — challenge yourself! + +**Smooth Game Flow**: Smart state system for seamless transitions between screens. + +---- + +
+ +
+💡 Built with Python
+Feel free to fork, star ⭐, or suggest improvements — I’d love to hear your thoughts! +
\ No newline at end of file diff --git a/Snake Game Using Turtle/colors.py b/Snake Game Using Turtle/colors.py new file mode 100644 index 00000000000..05fac02e5a2 --- /dev/null +++ b/Snake Game Using Turtle/colors.py @@ -0,0 +1,28 @@ +""" +This file contains the color palette for the game, now including +colors for the new interactive buttons. +""" +# A fresh and vibrant color theme +# --> food.py +FOOD_COLOR = "#C70039" # A bright, contrasting red + +# --> main.py +BG_COLOR = '#F0F8FF' # AliceBlue, a very light and clean background + +# --> scoreboard.py +GAME_OVER_COLOR = '#D21312' # Strong red for game over message +SCORE_COLOR = '#27374D' # Dark blue for high-contrast text +MESSAGE_COLOR = '#27374D' # Consistent dark blue for other messages + +# --> snake.py +FIRST_SEGMENT_COLOR = '#006400' # DarkGreen for the snake's head +BODY_COLOR = '#2E8B57' # SeaGreen for the snake's body + +# --> wall.py +WALL_COLOR = '#27374D' # Dark blue for a solid, visible border + +# --> UI Controls (Buttons) +BUTTON_BG_COLOR = "#526D82" +BUTTON_TEXT_COLOR = "#F0F8FF" +BUTTON_BORDER_COLOR = "#27374D" + diff --git a/Snake Game Using Turtle/demo (1).gif b/Snake Game Using Turtle/demo (1).gif new file mode 100644 index 00000000000..be7cff2f1f6 Binary files /dev/null and b/Snake Game Using Turtle/demo (1).gif differ diff --git a/Snake Game Using Turtle/food.py b/Snake Game Using Turtle/food.py new file mode 100644 index 00000000000..59dcd5eb740 --- /dev/null +++ b/Snake Game Using Turtle/food.py @@ -0,0 +1,27 @@ +""" +This file handles the creation of food. Its placement is now controlled +by the main game logic to ensure it spawns within the correct boundaries. +""" + +from turtle import Turtle +import random +import colors + +class Food(Turtle): + """ This class generates food for the snake to eat. """ + def __init__(self): + super().__init__() + self.shape("circle") + self.penup() + self.shapesize(stretch_len=0.7, stretch_wid=0.7) + self.color(colors.FOOD_COLOR) + self.speed("fastest") + + def refresh(self, left_wall, right_wall, bottom_wall, top_wall): + """Moves the food to a new random position within the provided game boundaries.""" + # Add a margin so food doesn't spawn exactly on the edge + margin = 20 + random_x = random.randint(int(left_wall) + margin, int(right_wall) - margin) + random_y = random.randint(int(bottom_wall) + margin, int(top_wall) - margin) + self.goto(random_x, random_y) + diff --git a/Snake Game Using Turtle/highscore.txt b/Snake Game Using Turtle/highscore.txt new file mode 100644 index 00000000000..62f9457511f --- /dev/null +++ b/Snake Game Using Turtle/highscore.txt @@ -0,0 +1 @@ +6 \ No newline at end of file diff --git a/Snake Game Using Turtle/main.py b/Snake Game Using Turtle/main.py new file mode 100644 index 00000000000..9b874f1a3df --- /dev/null +++ b/Snake Game Using Turtle/main.py @@ -0,0 +1,195 @@ +""" +This is the main file that runs the Snake game. +It handles screen setup, dynamic boundaries, UI controls (buttons), +game state management, and the main game loop. +""" +from turtle import Screen, Turtle +from snake import Snake +from food import Food +from scoreboard import Scoreboard +from wall import Wall +import colors + +# --- CONSTANTS --- +MOVE_DELAY_MS = 100 # Game speed in milliseconds + +# --- GAME STATE --- +game_state = "start" # Possible states: "start", "playing", "paused", "game_over" + +# --- SCREEN SETUP --- +screen = Screen() +screen.setup(width=0.9, height=0.9) # Set up a nearly fullscreen window +screen.bgcolor(colors.BG_COLOR) +screen.title("Interactive Snake Game") +screen.tracer(0) + +# --- DYNAMIC GAME BOUNDARIES --- +WIDTH = screen.window_width() +HEIGHT = screen.window_height() +# These boundaries are calculated to be inside the visible wall with a safe margin +LEFT_WALL = -WIDTH / 2 + 25 +RIGHT_WALL = WIDTH / 2 - 25 +TOP_WALL = HEIGHT / 2 - 85 +BOTTOM_WALL = -HEIGHT / 2 + 25 + +# --- GAME OBJECTS --- +wall = Wall() +snake = Snake() +food = Food() +# Initial food placement is now handled after boundaries are calculated +food.refresh(LEFT_WALL, RIGHT_WALL, BOTTOM_WALL, TOP_WALL) +scoreboard = Scoreboard() + +# --- UI CONTROLS (BUTTONS) --- +buttons = {} # Dictionary to hold button turtles and their properties + +def create_button(name, x, y, width=120, height=40): + """Creates a turtle-based button with a label.""" + if name in buttons and buttons[name]['turtle'] is not None: + buttons[name]['turtle'].clear() + + button_turtle = Turtle() + button_turtle.hideturtle() + button_turtle.penup() + button_turtle.speed("fastest") + + button_turtle.goto(x - width/2, y - height/2) + button_turtle.color(colors.BUTTON_BORDER_COLOR, colors.BUTTON_BG_COLOR) + button_turtle.begin_fill() + for _ in range(2): + button_turtle.forward(width) + button_turtle.left(90) + button_turtle.forward(height) + button_turtle.left(90) + button_turtle.end_fill() + + button_turtle.goto(x, y - 12) + button_turtle.color(colors.BUTTON_TEXT_COLOR) + button_turtle.write(name, align="center", font=("Lucida Sans", 14, "bold")) + + buttons[name] = {'turtle': button_turtle, 'x': x, 'y': y, 'w': width, 'h': height, 'visible': True} + +def hide_button(name): + """Hides a button by clearing its turtle.""" + if name in buttons and buttons[name]['visible']: + buttons[name]['turtle'].clear() + buttons[name]['visible'] = False + +def manage_buttons(): + """Shows or hides buttons based on the current game state.""" + all_buttons = ["Play", "Pause", "Resume", "Restart"] + for btn_name in all_buttons: + hide_button(btn_name) + + btn_x = WIDTH / 2 - 100 + btn_y = HEIGHT / 2 - 45 + + if game_state == "start": + create_button("Play", 0, -100) + elif game_state == "playing": + create_button("Pause", btn_x, btn_y) + elif game_state == "paused": + create_button("Resume", btn_x, btn_y) + elif game_state == "game_over": + create_button("Restart", btn_x, btn_y) + +# --- GAME LOGIC & STATE TRANSITIONS --- +def start_game(): + global game_state + if game_state == "start": + game_state = "playing" + scoreboard.update_scoreboard() + +def toggle_pause_resume(): + global game_state + if game_state == "playing": + game_state = "paused" + scoreboard.display_pause() + elif game_state == "paused": + game_state = "playing" + scoreboard.update_scoreboard() + +def restart_game(): + global game_state + if game_state == "game_over": + game_state = "playing" + snake.reset() + food.refresh(LEFT_WALL, RIGHT_WALL, BOTTOM_WALL, TOP_WALL) + scoreboard.reset() + +def is_click_on_button(name, x, y): + """Checks if a click (x, y) is within the bounds of a visible button.""" + if name in buttons and buttons[name]['visible']: + btn = buttons[name] + return (btn['x'] - btn['w']/2 < x < btn['x'] + btn['w']/2 and + btn['y'] - btn['h']/2 < y < btn['y'] + btn['h']/2) + return False + +def handle_click(x, y): + """Main click handler to delegate actions based on button clicks.""" + if game_state == "start" and is_click_on_button("Play", x, y): + start_game() + elif game_state == "playing" and is_click_on_button("Pause", x, y): + toggle_pause_resume() + elif game_state == "paused" and is_click_on_button("Resume", x, y): + toggle_pause_resume() + elif game_state == "game_over" and is_click_on_button("Restart", x, y): + restart_game() + +# --- KEYBOARD HANDLERS --- +def handle_snake_up(): + if game_state in ["start", "playing"]: + start_game() + snake.up() +def handle_snake_down(): + if game_state in ["start", "playing"]: + start_game() + snake.down() +def handle_snake_left(): + if game_state in ["start", "playing"]: + start_game() + snake.left() +def handle_snake_right(): + if game_state in ["start", "playing"]: + start_game() + snake.right() + +# --- KEY & MOUSE BINDINGS --- +screen.listen() +screen.onkey(handle_snake_up, "Up") +screen.onkey(handle_snake_down, "Down") +screen.onkey(handle_snake_left, "Left") +screen.onkey(handle_snake_right, "Right") +screen.onkey(toggle_pause_resume, "space") +screen.onkey(restart_game, "r") +screen.onkey(restart_game, "R") +screen.onclick(handle_click) + +# --- MAIN GAME LOOP --- +def game_loop(): + global game_state + if game_state == "playing": + snake.move() + # Collision with food + if snake.head.distance(food) < 20: + food.refresh(LEFT_WALL, RIGHT_WALL, BOTTOM_WALL, TOP_WALL) + snake.extend() + scoreboard.increase_score() + # Collision with wall + if not (LEFT_WALL < snake.head.xcor() < RIGHT_WALL and BOTTOM_WALL < snake.head.ycor() < TOP_WALL): + game_state = "game_over" + scoreboard.game_over() + # Collision with tail + for segment in snake.segments[1:]: + if snake.head.distance(segment) < 10: + game_state = "game_over" + scoreboard.game_over() + manage_buttons() + screen.update() + screen.ontimer(game_loop, MOVE_DELAY_MS) + +# --- INITIALIZE GAME --- +scoreboard.display_start_message() +game_loop() +screen.exitonclick() + diff --git a/Snake Game Using Turtle/scoreboard.py b/Snake Game Using Turtle/scoreboard.py new file mode 100644 index 00000000000..4ca9265071c --- /dev/null +++ b/Snake Game Using Turtle/scoreboard.py @@ -0,0 +1,80 @@ +""" +This file manages the display of the score, high score, and game messages. +It now positions the score dynamically in the top-left corner. +""" +from turtle import Turtle, Screen +import colors + +# Constants for styling and alignment +ALIGNMENT = "left" +SCORE_FONT = ("Lucida Sans", 20, "bold") +MESSAGE_FONT = ("Courier", 40, "bold") +INSTRUCTION_FONT = ("Lucida Sans", 16, "normal") + +class Scoreboard(Turtle): + """ This class maintains the scoreboard, high score, and game messages. """ + def __init__(self): + super().__init__() + self.screen = Screen() # Get access to the screen object + self.score = 0 + self.high_score = self.load_high_score() + self.penup() + self.hideturtle() + self.update_scoreboard() + + def load_high_score(self): + """Loads high score from highscore.txt. Returns 0 if not found.""" + try: + with open("highscore.txt", mode="r") as file: + return int(file.read()) + except (FileNotFoundError, ValueError): + return 0 + + def update_scoreboard(self): + """Clears and rewrites the score and high score in the top-left corner.""" + self.clear() + self.color(colors.SCORE_COLOR) + # Dynamically calculate position to be well-placed in the header + x_pos = -self.screen.window_width() / 2 + 30 + y_pos = self.screen.window_height() / 2 - 60 + self.goto(x_pos, y_pos) + self.write(f"Score: {self.score} | High Score: {self.high_score}", align=ALIGNMENT, font=SCORE_FONT) + + def increase_score(self): + """Increases score and updates the display.""" + self.score += 1 + self.update_scoreboard() + + def reset(self): + """Checks for new high score, saves it, and resets the score.""" + if self.score > self.high_score: + self.high_score = self.score + with open("highscore.txt", mode="w") as file: + file.write(str(self.high_score)) + self.score = 0 + self.update_scoreboard() + + def game_over(self): + """Displays the Game Over message and instructions.""" + self.goto(0, 40) + self.color(colors.GAME_OVER_COLOR) + self.write("GAME OVER", align="center", font=MESSAGE_FONT) + self.goto(0, -40) + self.write("Click 'Restart' or Press 'R'", align="center", font=INSTRUCTION_FONT) + + def display_pause(self): + """Displays the PAUSED message.""" + self.goto(0, 40) + self.color(colors.MESSAGE_COLOR) + self.write("PAUSED", align="center", font=MESSAGE_FONT) + self.goto(0, -40) + self.write("Click 'Resume' or Press 'Space'", align="center", font=INSTRUCTION_FONT) + + def display_start_message(self): + """Displays the welcome message and starting instructions.""" + self.goto(0, 40) + self.color(colors.MESSAGE_COLOR) + self.write("SNAKE GAME", align="center", font=MESSAGE_FONT) + self.goto(0, -40) + self.write("Click 'Play' or an Arrow Key to Start", align="center", font=INSTRUCTION_FONT) + diff --git a/test.cpp b/Snake Game Using Turtle/screenshots similarity index 50% rename from test.cpp rename to Snake Game Using Turtle/screenshots index 8b137891791..d3f5a12faa9 100644 --- a/test.cpp +++ b/Snake Game Using Turtle/screenshots @@ -1 +1 @@ - + diff --git a/Snake Game Using Turtle/snake.py b/Snake Game Using Turtle/snake.py new file mode 100644 index 00000000000..e9fb153c317 --- /dev/null +++ b/Snake Game Using Turtle/snake.py @@ -0,0 +1,73 @@ +""" +This file is responsible for creating the snake and managing its movement, +extension, and reset functionality. +""" +from turtle import Turtle +import colors + +STARTING_POSITIONS = [(0, 0), (-20, 0), (-40, 0)] +MOVE_DISTANCE = 20 +UP, DOWN, LEFT, RIGHT = 90, 270, 180, 0 + +class Snake: + """ This class creates a snake body and contains methods for movement and extension. """ + def __init__(self): + self.segments = [] + self.create_snake() + self.head = self.segments[0] + + def create_snake(self): + """ Creates the initial snake body. """ + for position in STARTING_POSITIONS: + self.add_segment(position) + self.segments[0].color(colors.FIRST_SEGMENT_COLOR) + + def add_segment(self, position): + """ Adds a new segment to the snake. """ + new_segment = Turtle(shape="square") + new_segment.penup() + new_segment.goto(position) + new_segment.color(colors.BODY_COLOR) + self.segments.append(new_segment) + + def extend(self): + """ Adds a new segment to the snake's tail. """ + self.add_segment(self.segments[-1].position()) + self.segments[0].color(colors.FIRST_SEGMENT_COLOR) + + def move(self): + """ Moves the snake forward by moving each segment to the position of the one in front.""" + for i in range(len(self.segments) - 1, 0, -1): + x = self.segments[i - 1].xcor() + y = self.segments[i - 1].ycor() + self.segments[i].goto(x, y) + self.head.forward(MOVE_DISTANCE) + + def reset(self): + """Hides the old snake and creates a new one for restarting the game.""" + for segment in self.segments: + segment.hideturtle() + self.segments.clear() + self.create_snake() + self.head = self.segments[0] + + def up(self): + """Turns the snake's head upwards, preventing it from reversing.""" + if self.head.heading() != DOWN: + self.head.setheading(UP) + + def down(self): + """Turns the snake's head downwards, preventing it from reversing.""" + if self.head.heading() != UP: + self.head.setheading(DOWN) + + def left(self): + """Turns the snake's head to the left, preventing it from reversing.""" + if self.head.heading() != RIGHT: + self.head.setheading(LEFT) + + def right(self): + """Turns the snake's head to the right, preventing it from reversing.""" + if self.head.heading() != LEFT: + self.head.setheading(RIGHT) + diff --git a/Snake Game Using Turtle/wall.py b/Snake Game Using Turtle/wall.py new file mode 100644 index 00000000000..dc47848961b --- /dev/null +++ b/Snake Game Using Turtle/wall.py @@ -0,0 +1,46 @@ +"""This file creates a responsive boundary wall that adapts to the game window size.""" + +from turtle import Turtle, Screen +import colors + +class Wall: + """ This class creates a wall around the game screen that adjusts to its dimensions. """ + def __init__(self): + self.screen = Screen() + self.create_wall() + + def create_wall(self): + """Draws a responsive game border and a header area for the scoreboard and controls.""" + width = self.screen.window_width() + height = self.screen.window_height() + + # Calculate coordinates for the border based on screen size + top = height / 2 + bottom = -height / 2 + left = -width / 2 + right = width / 2 + + wall = Turtle() + wall.hideturtle() + wall.speed("fastest") + wall.color(colors.WALL_COLOR) + wall.penup() + + # Draw the main rectangular border + wall.goto(left + 10, top - 10) + wall.pendown() + wall.pensize(10) + wall.goto(right - 10, top - 10) + wall.goto(right - 10, bottom + 10) + wall.goto(left + 10, bottom + 10) + wall.goto(left + 10, top - 10) + + # Draw a line to create a separate header section for the score and buttons + wall.penup() + wall.goto(left + 10, top - 70) + wall.pendown() + wall.pensize(5) + wall.goto(right - 10, top - 70) + + self.screen.update() + diff --git a/Snake-Water-Gun-Game.py b/Snake-Water-Gun-Game.py index 54341645888..3bec7bc458b 100644 --- a/Snake-Water-Gun-Game.py +++ b/Snake-Water-Gun-Game.py @@ -75,7 +75,7 @@ print("Whoever wins more matches will be the winner\n") while x < 10: - print(f"Game No. {x+1}") + print(f"Game No. {x + 1}") for key, value in choices.items(): print(f"Choose {key} for {value}") diff --git a/Snake_water_gun/main.py b/Snake_water_gun/main.py index 23d8b51f5c3..3928079b997 100644 --- a/Snake_water_gun/main.py +++ b/Snake_water_gun/main.py @@ -47,7 +47,6 @@ class bcolors: score = 0 while run and i < 10: - comp_choice = random.choice(li) user_choice = input("Type s for snake, w for water or g for gun: ").lower() @@ -80,7 +79,7 @@ class bcolors: continue i += 1 - print(f"{10-i} matches left") + print(f"{10 - i} matches left") if run == True: print(f"Your score is {score} and the final result is...") diff --git a/Sorting Algorithims/heapsort_linkedlist.py b/Sorting Algorithims/heapsort_linkedlist.py index 7e9584077e6..9f535d20ade 100644 --- a/Sorting Algorithims/heapsort_linkedlist.py +++ b/Sorting Algorithims/heapsort_linkedlist.py @@ -3,6 +3,7 @@ def __init__(self, data): self.data = data self.next = None + class LinkedList: def __init__(self): self.head = None @@ -64,6 +65,7 @@ def heap_sort(self): self.swap(0, i) self.heapify(i, 0) + # Example usage: linked_list = LinkedList() linked_list.push(12) diff --git a/Sorting Algorithims/mergesort_linkedlist.py b/Sorting Algorithims/mergesort_linkedlist.py index 429684b6c0c..4e833dc2e29 100644 --- a/Sorting Algorithims/mergesort_linkedlist.py +++ b/Sorting Algorithims/mergesort_linkedlist.py @@ -1,10 +1,12 @@ from __future__ import annotations + class Node: def __init__(self, data: int) -> None: self.data = data self.next = None + class LinkedList: def __init__(self): self.head = None @@ -17,13 +19,14 @@ def insert(self, new_data: int) -> None: def printLL(self) -> None: temp = self.head if temp == None: - return 'Linked List is empty' + return "Linked List is empty" while temp.next: - print(temp.data, '->', end='') + print(temp.data, "->", end="") temp = temp.next print(temp.data) return + # Merge two sorted linked lists def merge(left, right): if not left: @@ -40,6 +43,7 @@ def merge(left, right): return result + # Merge sort for linked list def merge_sort(head): if not head or not head.next: @@ -61,9 +65,12 @@ def merge_sort(head): return merge(left, right) + if __name__ == "__main__": ll = LinkedList() - print("Enter the space-separated values of numbers to be inserted in the linked list prompted below:") + print( + "Enter the space-separated values of numbers to be inserted in the linked list prompted below:" + ) arr = list(map(int, input().split())) for num in arr: ll.insert(num) @@ -73,5 +80,5 @@ def merge_sort(head): ll.head = merge_sort(ll.head) - print('Linked list after sorting:') + print("Linked list after sorting:") ll.printLL() diff --git a/Sorting Algorithims/quicksort_linkedlist.py b/Sorting Algorithims/quicksort_linkedlist.py index 97de82e2bc2..70804343a98 100644 --- a/Sorting Algorithims/quicksort_linkedlist.py +++ b/Sorting Algorithims/quicksort_linkedlist.py @@ -1,8 +1,9 @@ """ -Given a linked list with head pointer, +Given a linked list with head pointer, sort the linked list using quicksort technique without using any extra space Time complexity: O(NlogN), Space complexity: O(1) """ + from __future__ import annotations @@ -26,13 +27,14 @@ def insert(self, new_data: int) -> None: def printLL(self) -> None: temp = self.head if temp == None: - return 'Linked List is empty' + return "Linked List is empty" while temp.next: - print(temp.data, '->', end='') + print(temp.data, "->", end="") temp = temp.next print(temp.data) return + # Partition algorithm with pivot as first element @@ -65,12 +67,14 @@ def quicksort_LL(start, end): if __name__ == "__main__": ll = LinkedList() - print("Enter the space seperated values of numbers to be inserted in linkedlist prompted below:") + print( + "Enter the space seperated values of numbers to be inserted in linkedlist prompted below:" + ) arr = list(map(int, input().split())) for num in arr: ll.insert(num) print("Linkedlist before sorting:") ll.printLL() quicksort_LL(ll.head, None) - print('Linkedlist after sorting: ') + print("Linkedlist after sorting: ") ll.printLL() diff --git a/Sorting Algorithms/Bubble_Sorting_Prog.py b/Sorting Algorithms/Bubble_Sorting_Prog.py index 20c56177a90..ddb8f949e42 100644 --- a/Sorting Algorithms/Bubble_Sorting_Prog.py +++ b/Sorting Algorithms/Bubble_Sorting_Prog.py @@ -1,5 +1,4 @@ def bubblesort(list): - # Swap the elements to arrange in order for iter_num in range(len(list) - 1, 0, -1): for idx in range(iter_num): diff --git a/Sorting Algorithms/Counting-sort.py b/Sorting Algorithms/Counting-sort.py index 34b1667762d..0b3326b563a 100644 --- a/Sorting Algorithms/Counting-sort.py +++ b/Sorting Algorithms/Counting-sort.py @@ -7,7 +7,6 @@ def counting_sort(tlist, k, n): - """Counting sort algo with sort in place. Args: tlist: target list to sort diff --git a/Sorting Algorithms/Cycle Sort.py b/Sorting Algorithms/Cycle Sort.py index 20dca703907..93e6bd80a36 100644 --- a/Sorting Algorithms/Cycle Sort.py +++ b/Sorting Algorithms/Cycle Sort.py @@ -26,7 +26,6 @@ def cycleSort(array): # Rotate the rest of the cycle. while pos != cycleStart: - # Find where to put the item. pos = cycleStart for i in range(cycleStart + 1, len(array)): diff --git a/Sorting Algorithms/Heap sort.py b/Sorting Algorithms/Heap sort.py index 69aa753c283..6e5a80c3aff 100644 --- a/Sorting Algorithms/Heap sort.py +++ b/Sorting Algorithms/Heap sort.py @@ -46,4 +46,4 @@ def heapSort(arr): n = len(arr) print("Sorted array is") for i in range(n): - print("%d" % arr[i]), + (print("%d" % arr[i]),) diff --git a/Sorting Algorithms/Iterative Merge Sort.py b/Sorting Algorithms/Iterative Merge Sort.py index 63173b6bf5c..734cf1954c0 100644 --- a/Sorting Algorithms/Iterative Merge Sort.py +++ b/Sorting Algorithms/Iterative Merge Sort.py @@ -3,20 +3,17 @@ # Iterative mergesort function to # sort arr[0...n-1] def mergeSort(a): - current_size = 1 # Outer loop for traversing Each # sub array of current_size while current_size < len(a) - 1: - left = 0 # Inner loop for merge call # in a sub array # Each complete Iteration sorts # the iterating sub array while left < len(a) - 1: - # mid index = left index of # sub array + current sub # array size - 1 diff --git a/Sorting Algorithms/Merge Sort.py b/Sorting Algorithms/Merge Sort.py index a4d2b6da18c..ae4ea350c39 100644 --- a/Sorting Algorithms/Merge Sort.py +++ b/Sorting Algorithms/Merge Sort.py @@ -70,9 +70,9 @@ def mergeSort(arr, l, r): n = len(arr) print("Given array is") for i in range(n): - print("%d" % arr[i]), + (print("%d" % arr[i]),) mergeSort(arr, 0, n - 1) print("\n\nSorted array is") for i in range(n): - print("%d" % arr[i]), + (print("%d" % arr[i]),) diff --git a/Sorting Algorithms/Quick sort.py b/Sorting Algorithms/Quick sort.py index 983c10cb82a..937f08a7a13 100644 --- a/Sorting Algorithms/Quick sort.py +++ b/Sorting Algorithms/Quick sort.py @@ -3,7 +3,6 @@ def partition(arr, low, high): pivot = arr[high] # pivot for j in range(low, high): - # If current element is smaller than or # equal to pivot if arr[j] <= pivot: @@ -43,4 +42,4 @@ def quickSort(arr, low, high): quickSort(arr, 0, n - 1) print("Sorted array is:") for i in range(n): - print("%d" % arr[i]), + (print("%d" % arr[i]),) diff --git a/Sorting Algorithms/Shell Sort.py b/Sorting Algorithms/Shell Sort.py index dc01735b12b..74fc4206364 100644 --- a/Sorting Algorithms/Shell Sort.py +++ b/Sorting Algorithms/Shell Sort.py @@ -2,7 +2,6 @@ def shellSort(arr): - # Start with a big gap, then reduce the gap n = len(arr) gap = n / 2 @@ -12,9 +11,7 @@ def shellSort(arr): # order keep adding one more element until the entire array # is gap sorted while gap > 0: - for i in range(gap, n): - # add a[i] to the elements that have been gap sorted # save a[i] in temp and make a hole at position i temp = arr[i] @@ -37,12 +34,12 @@ def shellSort(arr): n = len(arr) print("Array before sorting:") for i in range(n): - print(arr[i]), + (print(arr[i]),) shellSort(arr) print("\nArray after sorting:") for i in range(n): - print(arr[i]), + (print(arr[i]),) # This code is contributed by mohd-mehraj diff --git a/Sorting Algorithms/Sort the values of first list using second list.py b/Sorting Algorithms/Sort the values of first list using second list.py index 61bfa9cad10..2212a6b9fda 100644 --- a/Sorting Algorithms/Sort the values of first list using second list.py +++ b/Sorting Algorithms/Sort the values of first list using second list.py @@ -3,7 +3,6 @@ def sort_list(list1, list2): - zipped_pairs = zip(list2, list1) z = [x for _, x in sorted(zipped_pairs)] diff --git a/Sorting Algorithms/Tim_sort.py b/Sorting Algorithms/Tim_sort.py index 9cbbb313e5d..80566ee6249 100644 --- a/Sorting Algorithms/Tim_sort.py +++ b/Sorting Algorithms/Tim_sort.py @@ -1,24 +1,22 @@ -""" Author : Mohit Kumar - - Tim Sort implemented in python - Time Complexity : O(n log(n)) - Space Complexity :O(n) +"""Author : Mohit Kumar + +Tim Sort implemented in python +Time Complexity : O(n log(n)) +Space Complexity :O(n) """ # Python3 program to perform TimSort. RUN = 32 + # This function sorts array from left index to # to right index which is of size atmost RUN def insertionSort(arr, left, right): - for i in range(left + 1, right + 1): - temp = arr[i] j = i - 1 while j >= left and arr[j] > temp: - arr[j + 1] = arr[j] j -= 1 @@ -27,7 +25,6 @@ def insertionSort(arr, left, right): # merge function merges the sorted runs def merge(arr, l, m, r): - # original array is broken in two parts # left and right array len1, len2 = m - l + 1, r - m @@ -41,7 +38,6 @@ def merge(arr, l, m, r): # after comparing, we merge those two array # in larger sub array while i < len1 and j < len2: - if left[i] <= right[j]: arr[k] = left[i] i += 1 @@ -54,7 +50,6 @@ def merge(arr, l, m, r): # copy remaining elements of left, if any while i < len1: - arr[k] = left[i] k += 1 i += 1 @@ -69,7 +64,6 @@ def merge(arr, l, m, r): # iterative Timsort function to sort the # array[0...n-1] (similar to merge sort) def timSort(arr, n): - # Sort individual subarrays of size RUN for i in range(0, n, RUN): insertionSort(arr, i, min((i + 31), (n - 1))) @@ -78,13 +72,11 @@ def timSort(arr, n): # to form size 64, then 128, 256 and so on .... size = RUN while size < n: - # pick starting point of left sub array. We # are going to merge arr[left..left+size-1] # and arr[left+size, left+2*size-1] # After every merge, we increase left by 2*size for left in range(0, n, 2 * size): - # find ending point of left sub array # mid+1 is starting point of right sub array mid = left + size - 1 @@ -99,14 +91,12 @@ def timSort(arr, n): # utility function to print the Array def printArray(arr, n): - for i in range(0, n): print(arr[i], end=" ") print() if __name__ == "__main__": - n = int(input("Enter size of array\n")) print("Enter elements of array\n") diff --git a/Sorting Algorithms/bubblesortpgm.py b/Sorting Algorithms/bubblesortpgm.py index 2e51d9e5259..ee10d030ffb 100644 --- a/Sorting Algorithms/bubblesortpgm.py +++ b/Sorting Algorithms/bubblesortpgm.py @@ -31,7 +31,6 @@ def bubbleSort(arr): not_swap = True # Last i elements are already in place for j in range(0, n - i - 1): - # traverse the array from 0 to n-i-1 # Swap if the element found is greater # than the next element @@ -49,4 +48,4 @@ def bubbleSort(arr): print("Sorted array is:") for i in range(len(arr)): - print("%d" % arr[i]), + (print("%d" % arr[i]),) diff --git a/Sorting Algorithms/dual_pivot_quicksort.py b/Sorting Algorithms/dual_pivot_quicksort.py new file mode 100644 index 00000000000..739c2144167 --- /dev/null +++ b/Sorting Algorithms/dual_pivot_quicksort.py @@ -0,0 +1,88 @@ +def dual_pivot_quicksort(arr, low, high): + """ + Performs Dual-Pivot QuickSort on the input array. + + Dual-Pivot QuickSort is an optimized version of QuickSort that uses + two pivot elements to partition the array into three segments in each + recursive call. This improves performance by reducing the number of + recursive calls, making it faster on average than the single-pivot + QuickSort. + + Parameters: + arr (list): The list to be sorted. + low (int): The starting index of the segment to sort. + high (int): The ending index of the segment to sort. + + Returns: + None: Sorts the array in place. + """ + if low < high: + # Partition the array and get the two pivot indices + lp, rp = partition(arr, low, high) + # Recursively sort elements less than pivot1 + dual_pivot_quicksort(arr, low, lp - 1) + # Recursively sort elements between pivot1 and pivot2 + dual_pivot_quicksort(arr, lp + 1, rp - 1) + # Recursively sort elements greater than pivot2 + dual_pivot_quicksort(arr, rp + 1, high) + + +def partition(arr, low, high): + """ + Partitions the array segment defined by low and high using two pivots. + + This function arranges elements into three sections: + - Elements less than pivot1 + - Elements between pivot1 and pivot2 + - Elements greater than pivot2 + + Parameters: + arr (list): The list to partition. + low (int): The starting index of the segment to partition. + high (int): The ending index of the segment to partition. + + Returns: + tuple: Indices of the two pivots in sorted positions (lp, rp). + """ + # Ensure the left pivot is less than or equal to the right pivot + if arr[low] > arr[high]: + arr[low], arr[high] = arr[high], arr[low] + pivot1 = arr[low] # left pivot + pivot2 = arr[high] # right pivot + + # Initialize pointers + i = low + 1 # Pointer to traverse the array + lt = low + 1 # Boundary for elements less than pivot1 + gt = high - 1 # Boundary for elements greater than pivot2 + + # Traverse and partition the array based on the two pivots + while i <= gt: + if arr[i] < pivot1: + arr[i], arr[lt] = ( + arr[lt], + arr[i], + ) # Swap to move smaller elements to the left + lt += 1 + elif arr[i] > pivot2: + arr[i], arr[gt] = ( + arr[gt], + arr[i], + ) # Swap to move larger elements to the right + gt -= 1 + i -= 1 # Decrement i to re-evaluate the swapped element + i += 1 + + # Place the pivots in their correct sorted positions + lt -= 1 + gt += 1 + arr[low], arr[lt] = arr[lt], arr[low] # Place pivot1 at its correct position + arr[high], arr[gt] = arr[gt], arr[high] # Place pivot2 at its correct position + + return lt, gt # Return the indices of the two pivots + + +# Example usage +# Sample Test Case +arr = [24, 8, 42, 75, 29, 77, 38, 57] +dual_pivot_quicksort(arr, 0, len(arr) - 1) +print("Sorted array:", arr) diff --git a/Sorting Algorithms/pigeonhole_sort.py b/Sorting Algorithms/pigeonhole_sort.py index cf6f8a5ca6c..e3f733481e4 100644 --- a/Sorting Algorithms/pigeonhole_sort.py +++ b/Sorting Algorithms/pigeonhole_sort.py @@ -3,7 +3,6 @@ def pigeonhole_sort(a): - # (number of pigeonholes we need) my_min = min(a) my_max = max(a) diff --git a/SpeechToText.py b/SpeechToText.py new file mode 100644 index 00000000000..0d8f18fbf9b --- /dev/null +++ b/SpeechToText.py @@ -0,0 +1,14 @@ +import pyttsx3 + +engine = pyttsx3.init() + +voices = engine.getProperty("voices") +for voice in voices: + print(voice.id) + print(voice.name) + +id = r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0" +engine.setProperty("voices", id) +engine.setProperty("rate", 165) +engine.say("jarivs") # Replace string with our own text +engine.runAndWait() diff --git a/Split_Circular_Linked_List.py b/Split_Circular_Linked_List.py index eadba3ce34a..26e4a2b8dd2 100644 --- a/Split_Circular_Linked_List.py +++ b/Split_Circular_Linked_List.py @@ -48,7 +48,6 @@ def Display(self): if __name__ == "__main__": - L_list = Circular_Linked_List() head1 = Circular_Linked_List() head2 = Circular_Linked_List() diff --git a/Street_Fighter/LICENSE b/Street_Fighter/LICENSE new file mode 100644 index 00000000000..fca753e5588 --- /dev/null +++ b/Street_Fighter/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Aaditya Panda + +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 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/Street_Fighter/assets/audio/magic.wav b/Street_Fighter/assets/audio/magic.wav new file mode 100644 index 00000000000..1e55ba46a7f Binary files /dev/null and b/Street_Fighter/assets/audio/magic.wav differ diff --git a/Street_Fighter/assets/audio/music.mp3 b/Street_Fighter/assets/audio/music.mp3 new file mode 100644 index 00000000000..7b90d41e53b Binary files /dev/null and b/Street_Fighter/assets/audio/music.mp3 differ diff --git a/Street_Fighter/assets/audio/sword.wav b/Street_Fighter/assets/audio/sword.wav new file mode 100644 index 00000000000..960457f4e85 Binary files /dev/null and b/Street_Fighter/assets/audio/sword.wav differ diff --git a/Street_Fighter/assets/fonts/turok.ttf b/Street_Fighter/assets/fonts/turok.ttf new file mode 100644 index 00000000000..374aa5616bd Binary files /dev/null and b/Street_Fighter/assets/fonts/turok.ttf differ diff --git a/Street_Fighter/assets/images/bg.jpg b/Street_Fighter/assets/images/bg.jpg new file mode 100644 index 00000000000..26ea8d294f3 Binary files /dev/null and b/Street_Fighter/assets/images/bg.jpg differ diff --git a/Street_Fighter/assets/images/bg1.jpg b/Street_Fighter/assets/images/bg1.jpg new file mode 100644 index 00000000000..dd6726daa0f Binary files /dev/null and b/Street_Fighter/assets/images/bg1.jpg differ diff --git a/Street_Fighter/assets/images/bg2.jpg b/Street_Fighter/assets/images/bg2.jpg new file mode 100644 index 00000000000..bcf0238cadd Binary files /dev/null and b/Street_Fighter/assets/images/bg2.jpg differ diff --git a/Street_Fighter/assets/images/victory.png b/Street_Fighter/assets/images/victory.png new file mode 100644 index 00000000000..e0c0635c6a3 Binary files /dev/null and b/Street_Fighter/assets/images/victory.png differ diff --git a/Street_Fighter/assets/images/warrior.png b/Street_Fighter/assets/images/warrior.png new file mode 100644 index 00000000000..7861832be9f Binary files /dev/null and b/Street_Fighter/assets/images/warrior.png differ diff --git a/Street_Fighter/assets/images/wizard.png b/Street_Fighter/assets/images/wizard.png new file mode 100644 index 00000000000..02af53be4c2 Binary files /dev/null and b/Street_Fighter/assets/images/wizard.png differ diff --git a/Street_Fighter/docs/CODE_OF_CONDUCT.md b/Street_Fighter/docs/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..46d4c6ac60b --- /dev/null +++ b/Street_Fighter/docs/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +aadityapanda23@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/Street_Fighter/docs/CONTRIBUTING.md b/Street_Fighter/docs/CONTRIBUTING.md new file mode 100644 index 00000000000..3620474a5a2 --- /dev/null +++ b/Street_Fighter/docs/CONTRIBUTING.md @@ -0,0 +1,91 @@ +# Contributing to Shadow Fight + +Thank you for considering contributing to **Shadow Fight**! Your support and ideas are invaluable in improving this project. Whether you're fixing bugs, adding features, or suggesting improvements, we welcome all contributions. + +--- + +## 🛠 How to Contribute + +### 1. Fork the Repository +- Click the **Fork** button at the top of the repository page to create your own copy of the project. + +### 2. Clone Your Fork +- Clone your forked repository to your local machine: + ```bash + git clone https://github.com/AadityaPanda/Shadow-Fight.git + cd Shadow-Fight + ``` + +### 3. Create a Branch +- Create a new branch for your feature or bugfix: + ```bash + git checkout -b feature/YourFeatureName + ``` + +### 4. Make Changes +- Implement your feature, bugfix, or improvement. Ensure your code follows Python best practices and is well-commented. + +### 5. Test Your Changes +- Run the game to ensure your changes work as expected: + ```bash + python src/main.py + ``` + +### 6. Commit Your Changes +- Commit your changes with a descriptive message: + ```bash + git add . + git commit -m "Add YourFeatureName: Short description of changes" + ``` + +### 7. Push Your Branch +- Push your branch to your forked repository: + ```bash + git push origin feature/YourFeatureName + ``` + +### 8. Open a Pull Request +- Go to the original repository and open a **Pull Request** from your branch. Provide a clear description of the changes and any relevant details. + +--- + +## 🧑‍💻 Code of Conduct +By contributing, you agree to adhere to the project's [Code of Conduct](CODE_OF_CONDUCT.md). Be respectful, inclusive, and collaborative. + +--- + +## 🛡️ Guidelines for Contributions + +- **Bug Reports**: + - Use the [Issues](https://github.com/AadityaPanda/Shadow-Fight/issues) tab to report bugs. + - Provide a clear description of the bug, including steps to reproduce it. + +- **Feature Requests**: + - Use the [Issues](https://github.com/AadityaPanda/Shadow-Fight/issues) tab to suggest new features. + - Explain the motivation behind the feature and how it will benefit the project. + +- **Coding Style**: + - Follow Python's [PEP 8 Style Guide](https://peps.python.org/pep-0008/). + - Keep code modular and well-documented with comments and docstrings. + +--- + +## 🔄 Issues and Feedback +- Check the [Issues](https://github.com/AadityaPanda/Shadow-Fight/issues) page for existing reports or feature requests before submitting a new one. +- Feel free to provide feedback or suggestions in the **Discussions** tab. + +--- + +## 🙌 Acknowledgments +We appreciate your efforts in making **Shadow Fight** better. Thank you for contributing and helping this project grow! + +--- + +## 📧 Contact +If you have any questions or need further assistance, reach out to the maintainer: +- **Developer**: Aaditya Panda +- **Email**: [aadityapanda23@gmail.com](mailto:aadityapanda23@gmail.com) + +--- + +We look forward to your contributions! 🎉 diff --git a/Street_Fighter/docs/README.md b/Street_Fighter/docs/README.md new file mode 100644 index 00000000000..2ff27a478e8 --- /dev/null +++ b/Street_Fighter/docs/README.md @@ -0,0 +1,129 @@ +# Street Fighter +![download](https://github.com/user-attachments/assets/1395caef-363b-4485-8c0a-8d738f3cd379) + + +**Street Fighter** is an engaging two-player fighting game built with Python and Pygame. This project features exciting gameplay mechanics, unique characters, and dynamic animations, making it a perfect choice for retro game enthusiasts and developers interested in Python-based game development. + +## Features +- **Two Distinct Fighters**: + - **Warrior**: A melee combatant with powerful sword attacks. + - **Wizard**: A magic wielder with spell-based attacks. + +- **Gameplay Mechanics**: + - Health bars for each fighter. + - Smooth animations for idle, run, jump, attack, hit, and death actions. + - Scoring system to track player victories. + +- **Dynamic Background**: + - Blurred background effects during the main menu for a cinematic feel. + +- **Sound Effects and Music**: + - Immersive soundtracks and attack effects. + +- **Responsive UI**: + - Main menu with start, score, and exit options. + - Victory screen for the winning fighter. + +- **Custom Controls** for two players. + +## 📋 Table of Contents +- [Street Fighter](#street-fighter) + - [Features](#features) + - [📋 Table of Contents](#-table-of-contents) + - [Requirements](#requirements) + - [Installation](#installation) + - [Gameplay Instructions](#gameplay-instructions) + - [Player Controls:](#player-controls) + - [Downloads](#downloads) + - [License](#license) + - [Credits](#credits) + - [Contributing](#contributing) + - [Contact](#contact) + +## Requirements +- Python 3.7 or higher +- Required Python libraries: + - `pygame` + - `numpy` + - `opencv-python` + +## Installation + +Follow these steps to install and run the game: + +1. **Clone the Repository**: + ```bash + git clone https://github.com/AadityaPanda/Street_Fighter.git + cd Streer_Fighter + ``` + +2. **Install Dependencies**: + ```bash + pip install -r + ``` + +3. **Run the Game**: + ```bash + python src/main.py + ``` + +## Gameplay Instructions + +### Player Controls: +- **Player 1**: + - Move: `A` (Left), `D` (Right) + - Jump: `W` + - Attack: `R` (Attack 1), `T` (Attack 2) + +- **Player 2**: + - Move: Left Arrow (`←`), Right Arrow (`→`) + - Jump: Up Arrow (`↑`) + - Attack: `M` (Attack 1), `N` (Attack 2) + +**Objective**: Reduce your opponent's health to zero to win the round. Victory is celebrated with a dynamic win screen! + +## Downloads + +You can download the latest release of **Street Fighter** from the following link: + +[![Version](https://img.shields.io/github/v/release/AadityaPanda/Street_Fighter?color=%230567ff&label=Latest%20Release&style=for-the-badge)](https://github.com/AadityaPanda/Street_Fighter/releases/latest) Download + +## License + +This project is licensed under the [MIT License](LICENSE). Feel free to use, modify, and distribute it in your projects. + +## Credits + +- **Developer**: Aaditya Panda +- **Assets**: + - Background music and sound effects: [Free Music Archive](https://freemusicarchive.org/) + - Fonts: [Turok Font](https://www.fontspace.com/turok-font) + - Sprites: Custom-designed and modified from open-source assets. + +## Contributing + +Contributions are welcome! Here's how you can help: +1. Fork the repository. +2. Create a new branch: + ```bash + git checkout -b feature/YourFeatureName + ``` +3. Commit your changes: + ```bash + git commit -m "Add YourFeatureName" + ``` +4. Push to the branch: + ```bash + git push origin feature/YourFeatureName + ``` +5. Open a pull request. + +Check the [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines. + +## Contact + +- **Developer**: Aaditya Panda +- **Email**: [aadityapanda23@gmail.com](mailto:aadityapanda23@gmail.com) +- **GitHub**: [AadityaPanda](https://github.com/AadityaPanda) + +Try somehting new everyday!!! diff --git a/Street_Fighter/docs/SECURITY.md b/Street_Fighter/docs/SECURITY.md new file mode 100644 index 00000000000..68fdc61aff0 --- /dev/null +++ b/Street_Fighter/docs/SECURITY.md @@ -0,0 +1,21 @@ +# Security Policy + +## Supported Versions + +Use this section to tell people about which versions of your project are +currently being supported with security updates. + +| Version | Supported | +| ------- | ------------------ | +| 5.1.x | :white_check_mark: | +| 5.0.x | :x: | +| 4.0.x | :white_check_mark: | +| < 4.0 | :x: | + +## Reporting a Vulnerability + +Use this section to tell people how to report a vulnerability. + +Tell them where to go, how often they can expect to get an update on a +reported vulnerability, what to expect if the vulnerability is accepted or +declined, etc. diff --git a/Street_Fighter/docs/requirements.txt b/Street_Fighter/docs/requirements.txt new file mode 100644 index 00000000000..3c0b6f57287 --- /dev/null +++ b/Street_Fighter/docs/requirements.txt @@ -0,0 +1,3 @@ +pygame +numpy +opencv-python diff --git a/Street_Fighter/src/fighter.py b/Street_Fighter/src/fighter.py new file mode 100644 index 00000000000..94fc68abd16 --- /dev/null +++ b/Street_Fighter/src/fighter.py @@ -0,0 +1,208 @@ +import pygame + + +class Fighter: + def __init__(self, player, x, y, flip, data, sprite_sheet, animation_steps, sound): + self.player = player + self.size = data[0] + self.image_scale = data[1] + self.offset = data[2] + self.flip = flip + self.animation_list = self.load_images(sprite_sheet, animation_steps) + self.action = 0 # 0:idle #1:run #2:jump #3:attack1 #4: attack2 #5:hit #6:death + self.frame_index = 0 + self.image = self.animation_list[self.action][self.frame_index] + self.update_time = pygame.time.get_ticks() + self.rect = pygame.Rect((x, y, 80, 180)) + self.vel_y = 0 + self.running = False + self.jump = False + self.attacking = False + self.attack_type = 0 + self.attack_cooldown = 0 + self.attack_sound = sound + self.hit = False + self.health = 100 + self.alive = True + + def load_images(self, sprite_sheet, animation_steps): + # extract images from spritesheet + animation_list = [] + for y, animation in enumerate(animation_steps): + temp_img_list = [] + for x in range(animation): + temp_img = sprite_sheet.subsurface( + x * self.size, y * self.size, self.size, self.size + ) + temp_img_list.append( + pygame.transform.scale( + temp_img, + (self.size * self.image_scale, self.size * self.image_scale), + ) + ) + animation_list.append(temp_img_list) + return animation_list + + def move(self, screen_width, screen_height, target, round_over): + SPEED = 10 + GRAVITY = 2 + dx = 0 + dy = 0 + self.running = False + self.attack_type = 0 + + # get keypresses + key = pygame.key.get_pressed() + + # can only perform other actions if not currently attacking + if self.attacking == False and self.alive == True and round_over == False: + # check player 1 controls + if self.player == 1: + # movement + if key[pygame.K_a]: + dx = -SPEED + self.running = True + if key[pygame.K_d]: + dx = SPEED + self.running = True + # jump + if key[pygame.K_w] and self.jump == False: + self.vel_y = -30 + self.jump = True + # attack + if key[pygame.K_r] or key[pygame.K_t]: + self.attack(target) + # determine which attack type was used + if key[pygame.K_r]: + self.attack_type = 1 + if key[pygame.K_t]: + self.attack_type = 2 + + # check player 2 controls + if self.player == 2: + # movement + if key[pygame.K_LEFT]: + dx = -SPEED + self.running = True + if key[pygame.K_RIGHT]: + dx = SPEED + self.running = True + # jump + if key[pygame.K_UP] and self.jump == False: + self.vel_y = -30 + self.jump = True + # attack + if key[pygame.K_m] or key[pygame.K_n]: + self.attack(target) + # determine which attack type was used + if key[pygame.K_m]: + self.attack_type = 1 + if key[pygame.K_n]: + self.attack_type = 2 + + # apply gravity + self.vel_y += GRAVITY + dy += self.vel_y + + # ensure player stays on screen + if self.rect.left + dx < 0: + dx = -self.rect.left + if self.rect.right + dx > screen_width: + dx = screen_width - self.rect.right + if self.rect.bottom + dy > screen_height - 110: + self.vel_y = 0 + self.jump = False + dy = screen_height - 110 - self.rect.bottom + + # ensure players face each other + if target.rect.centerx > self.rect.centerx: + self.flip = False + else: + self.flip = True + + # apply attack cooldown + if self.attack_cooldown > 0: + self.attack_cooldown -= 1 + + # update player position + self.rect.x += dx + self.rect.y += dy + + # handle animation updates + def update(self): + # check what action the player is performing + if self.health <= 0: + self.health = 0 + self.alive = False + self.update_action(6) # 6:death + elif self.hit: + self.update_action(5) # 5:hit + elif self.attacking: + if self.attack_type == 1: + self.update_action(3) # 3:attack1 + elif self.attack_type == 2: + self.update_action(4) # 4:attack2 + elif self.jump: + self.update_action(2) # 2:jump + elif self.running: + self.update_action(1) # 1:run + else: + self.update_action(0) # 0:idle + + animation_cooldown = 50 + # update image + self.image = self.animation_list[self.action][self.frame_index] + # check if enough time has passed since the last update + if pygame.time.get_ticks() - self.update_time > animation_cooldown: + self.frame_index += 1 + self.update_time = pygame.time.get_ticks() + # check if the animation has finished + if self.frame_index >= len(self.animation_list[self.action]): + # if the player is dead then end the animation + if not self.alive: + self.frame_index = len(self.animation_list[self.action]) - 1 + else: + self.frame_index = 0 + # check if an attack was executed + if self.action == 3 or self.action == 4: + self.attacking = False + self.attack_cooldown = 20 + # check if damage was taken + if self.action == 5: + self.hit = False + # if the player was in the middle of an attack, then the attack is stopped + self.attacking = False + self.attack_cooldown = 20 + + def attack(self, target): + if self.attack_cooldown == 0: + # execute attack + self.attacking = True + self.attack_sound.play() + attacking_rect = pygame.Rect( + self.rect.centerx - (2 * self.rect.width * self.flip), + self.rect.y, + 2 * self.rect.width, + self.rect.height, + ) + if attacking_rect.colliderect(target.rect): + target.health -= 10 + target.hit = True + + def update_action(self, new_action): + # check if the new action is different to the previous one + if new_action != self.action: + self.action = new_action + # update the animation settings + self.frame_index = 0 + self.update_time = pygame.time.get_ticks() + + def draw(self, surface): + img = pygame.transform.flip(self.image, self.flip, False) + surface.blit( + img, + ( + self.rect.x - (self.offset[0] * self.image_scale), + self.rect.y - (self.offset[1] * self.image_scale), + ), + ) diff --git a/Street_Fighter/src/main.py b/Street_Fighter/src/main.py new file mode 100644 index 00000000000..62778cee3b3 --- /dev/null +++ b/Street_Fighter/src/main.py @@ -0,0 +1,430 @@ +import math +import pygame +from pygame import mixer +import cv2 +import numpy as np +import os +import sys +from fighter import Fighter + + +# Helper Function for Bundled Assets +def resource_path(relative_path): + try: + base_path = sys._MEIPASS + except Exception: + base_path = os.path.abspath(".") + + return os.path.join(base_path, relative_path) + + +mixer.init() +pygame.init() + +# Constants +info = pygame.display.Info() +SCREEN_WIDTH = info.current_w +SCREEN_HEIGHT = info.current_h +FPS = 60 +ROUND_OVER_COOLDOWN = 3000 + +# Colors +RED = (255, 0, 0) +YELLOW = (255, 255, 0) +WHITE = (255, 255, 255) +BLACK = (0, 0, 0) +BLUE = (0, 0, 255) +GREEN = (0, 255, 0) + +# Initialize Game Window +screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT), pygame.NOFRAME) +pygame.display.set_caption("Street Fighter") +clock = pygame.time.Clock() + +# Load Assets +bg_image = cv2.imread(resource_path("assets/images/bg1.jpg")) +victory_img = pygame.image.load( + resource_path("assets/images/victory.png") +).convert_alpha() +warrior_victory_img = pygame.image.load( + resource_path("assets/images/warrior.png") +).convert_alpha() +wizard_victory_img = pygame.image.load( + resource_path("assets/images/wizard.png") +).convert_alpha() + +# Fonts +menu_font = pygame.font.Font(resource_path("assets/fonts/turok.ttf"), 50) +menu_font_title = pygame.font.Font( + resource_path("assets/fonts/turok.ttf"), 100 +) # Larger font for title +count_font = pygame.font.Font(resource_path("assets/fonts/turok.ttf"), 80) +score_font = pygame.font.Font(resource_path("assets/fonts/turok.ttf"), 30) + +# Music and Sounds +pygame.mixer.music.load(resource_path("assets/audio/music.mp3")) +pygame.mixer.music.set_volume(0.5) +pygame.mixer.music.play(-1, 0.0, 5000) +sword_fx = pygame.mixer.Sound(resource_path("assets/audio/sword.wav")) +sword_fx.set_volume(0.5) +magic_fx = pygame.mixer.Sound(resource_path("assets/audio/magic.wav")) +magic_fx.set_volume(0.75) + +# Load Fighter Spritesheets +warrior_sheet = pygame.image.load( + resource_path("assets/images/warrior.png") +).convert_alpha() +wizard_sheet = pygame.image.load( + resource_path("assets/images/wizard.png") +).convert_alpha() + +# Define Animation Steps +WARRIOR_ANIMATION_STEPS = [10, 8, 1, 7, 7, 3, 7] +WIZARD_ANIMATION_STEPS = [8, 8, 1, 8, 8, 3, 7] + +# Fighter Data +WARRIOR_SIZE = 162 +WARRIOR_SCALE = 4 +WARRIOR_OFFSET = [72, 46] +WARRIOR_DATA = [WARRIOR_SIZE, WARRIOR_SCALE, WARRIOR_OFFSET] +WIZARD_SIZE = 250 +WIZARD_SCALE = 3 +WIZARD_OFFSET = [112, 97] +WIZARD_DATA = [WIZARD_SIZE, WIZARD_SCALE, WIZARD_OFFSET] + +# Game Variables +score = [0, 0] # Player Scores: [P1, P2] + + +def draw_text(text, font, color, x, y): + img = font.render(text, True, color) + screen.blit(img, (x, y)) + + +def blur_bg(image): + image_bgr = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) + blurred_image = cv2.GaussianBlur(image_bgr, (15, 15), 0) + return cv2.cvtColor(blurred_image, cv2.COLOR_BGR2RGB) + + +def draw_bg(image, is_game_started=False): + if not is_game_started: + blurred_bg = blur_bg(image) + blurred_bg = pygame.surfarray.make_surface(np.transpose(blurred_bg, (1, 0, 2))) + blurred_bg = pygame.transform.scale(blurred_bg, (SCREEN_WIDTH, SCREEN_HEIGHT)) + screen.blit(blurred_bg, (0, 0)) + else: + image = pygame.surfarray.make_surface(np.transpose(image, (1, 0, 2))) + image = pygame.transform.scale(image, (SCREEN_WIDTH, SCREEN_HEIGHT)) + screen.blit(image, (0, 0)) + + +def draw_button(text, font, text_col, button_col, x, y, width, height): + pygame.draw.rect(screen, button_col, (x, y, width, height)) + pygame.draw.rect(screen, WHITE, (x, y, width, height), 2) + text_img = font.render(text, True, text_col) + text_rect = text_img.get_rect(center=(x + width // 2, y + height // 2)) + screen.blit(text_img, text_rect) + return pygame.Rect(x, y, width, height) + + +def victory_screen(winner_img): + start_time = pygame.time.get_ticks() + while pygame.time.get_ticks() - start_time < ROUND_OVER_COOLDOWN: + resized_victory_img = pygame.transform.scale( + victory_img, (victory_img.get_width() * 2, victory_img.get_height() * 2) + ) + screen.blit( + resized_victory_img, + ( + SCREEN_WIDTH // 2 - resized_victory_img.get_width() // 2, + SCREEN_HEIGHT // 2 - resized_victory_img.get_height() // 2 - 50, + ), + ) + + screen.blit( + winner_img, + ( + SCREEN_WIDTH // 2 - winner_img.get_width() // 2, + SCREEN_HEIGHT // 2 - winner_img.get_height() // 2 + 100, + ), + ) + + pygame.display.update() + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + + +def draw_gradient_text(text, font, x, y, colors): + """ + Draws a gradient text by layering multiple text surfaces with slight offsets. + """ + offset = 2 + for i, color in enumerate(colors): + img = font.render(text, True, color) + screen.blit(img, (x + i * offset, y + i * offset)) + + +def main_menu(): + animation_start_time = pygame.time.get_ticks() + + while True: + draw_bg(bg_image, is_game_started=False) + + elapsed_time = (pygame.time.get_ticks() - animation_start_time) / 1000 + scale_factor = 1 + 0.05 * math.sin(elapsed_time * 2 * math.pi) # Slight scaling + scaled_font = pygame.font.Font( + "assets/fonts/turok.ttf", int(100 * scale_factor) + ) + + title_text = "STREET FIGHTER" + colors = [BLUE, GREEN, YELLOW] + shadow_color = BLACK + title_x = SCREEN_WIDTH // 2 - scaled_font.size(title_text)[0] // 2 + title_y = SCREEN_HEIGHT // 6 + + shadow_offset = 5 + draw_text( + title_text, + scaled_font, + shadow_color, + title_x + shadow_offset, + title_y + shadow_offset, + ) + draw_gradient_text(title_text, scaled_font, title_x, title_y, colors) + + button_width = 280 + button_height = 60 + button_spacing = 30 + + start_button_y = ( + SCREEN_HEIGHT // 2 - (button_height + button_spacing) * 1.5 + 50 + ) + scores_button_y = ( + SCREEN_HEIGHT // 2 - (button_height + button_spacing) * 0.5 + 50 + ) + exit_button_y = SCREEN_HEIGHT // 2 + (button_height + button_spacing) * 0.5 + 50 + + start_button = draw_button( + "START GAME", + menu_font, + BLACK, + GREEN, + SCREEN_WIDTH // 2 - button_width // 2, + start_button_y, + button_width, + button_height, + ) + scores_button = draw_button( + "SCORES", + menu_font, + BLACK, + GREEN, + SCREEN_WIDTH // 2 - button_width // 2, + scores_button_y, + button_width, + button_height, + ) + exit_button = draw_button( + "EXIT", + menu_font, + BLACK, + GREEN, + SCREEN_WIDTH // 2 - button_width // 2, + exit_button_y, + button_width, + button_height, + ) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + if event.type == pygame.MOUSEBUTTONDOWN: + if start_button.collidepoint(event.pos): + return "START" + if scores_button.collidepoint(event.pos): + return "SCORES" + if exit_button.collidepoint(event.pos): + pygame.quit() + exit() + + pygame.display.update() + clock.tick(FPS) + + +def scores_screen(): + while True: + draw_bg(bg_image) + + scores_title = "SCORES" + draw_text( + scores_title, + menu_font_title, + RED, + SCREEN_WIDTH // 2 - menu_font_title.size(scores_title)[0] // 2, + 50, + ) + + score_font_large = pygame.font.Font( + "assets/fonts/turok.ttf", 60 + ) # Increased size for scores + p1_text = f"P1: {score[0]}" + p2_text = f"P2: {score[1]}" + shadow_offset = 5 + + p1_text_x = SCREEN_WIDTH // 2 - score_font_large.size(p1_text)[0] // 2 + p1_text_y = SCREEN_HEIGHT // 2 - 50 + draw_text( + p1_text, + score_font_large, + BLACK, + p1_text_x + shadow_offset, + p1_text_y + shadow_offset, + ) # Shadow + draw_gradient_text( + p1_text, score_font_large, p1_text_x, p1_text_y, [BLUE, GREEN] + ) # Gradient + + p2_text_x = SCREEN_WIDTH // 2 - score_font_large.size(p2_text)[0] // 2 + p2_text_y = SCREEN_HEIGHT // 2 + 50 + draw_text( + p2_text, + score_font_large, + BLACK, + p2_text_x + shadow_offset, + p2_text_y + shadow_offset, + ) # Shadow + draw_gradient_text( + p2_text, score_font_large, p2_text_x, p2_text_y, [RED, YELLOW] + ) # Gradient + + return_button = draw_button( + "RETURN TO MAIN MENU", + menu_font, + BLACK, + GREEN, + SCREEN_WIDTH // 2 - 220, + 700, + 500, + 50, + ) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + if event.type == pygame.MOUSEBUTTONDOWN: + if return_button.collidepoint(event.pos): + return + + pygame.display.update() + clock.tick(FPS) + + +def reset_game(): + global fighter_1, fighter_2 + fighter_1 = Fighter( + 1, + 200, + 310, + False, + WARRIOR_DATA, + warrior_sheet, + WARRIOR_ANIMATION_STEPS, + sword_fx, + ) + fighter_2 = Fighter( + 2, 700, 310, True, WIZARD_DATA, wizard_sheet, WIZARD_ANIMATION_STEPS, magic_fx + ) + + +def draw_health_bar(health, x, y): + pygame.draw.rect(screen, BLACK, (x, y, 200, 20)) + if health > 0: + pygame.draw.rect(screen, RED, (x, y, health * 2, 20)) + pygame.draw.rect(screen, WHITE, (x, y, 200, 20), 2) + + +def countdown(): + countdown_font = pygame.font.Font("assets/fonts/turok.ttf", 100) + countdown_texts = ["3", "2", "1", "FIGHT!"] + + for text in countdown_texts: + draw_bg(bg_image, is_game_started=True) + + text_img = countdown_font.render(text, True, RED) + text_width = text_img.get_width() + x_pos = (SCREEN_WIDTH - text_width) // 2 + + draw_text(text, countdown_font, RED, x_pos, SCREEN_HEIGHT // 2 - 50) + + pygame.display.update() + pygame.time.delay(1000) + + +def game_loop(): + global score + reset_game() + round_over = False + winner_img = None + game_started = True + + countdown() + + while True: + draw_bg(bg_image, is_game_started=game_started) + + draw_text(f"P1: {score[0]}", score_font, RED, 20, 20) + draw_text(f"P2: {score[1]}", score_font, RED, SCREEN_WIDTH - 220, 20) + draw_health_bar(fighter_1.health, 20, 50) + draw_health_bar(fighter_2.health, SCREEN_WIDTH - 220, 50) + + exit_button = draw_button( + "MAIN MENU", menu_font, BLACK, YELLOW, SCREEN_WIDTH // 2 - 150, 20, 300, 50 + ) + + if not round_over: + fighter_1.move(SCREEN_WIDTH, SCREEN_HEIGHT, fighter_2, round_over) + fighter_2.move(SCREEN_WIDTH, SCREEN_HEIGHT, fighter_1, round_over) + + fighter_1.update() + fighter_2.update() + + if not fighter_1.alive: + score[1] += 1 + round_over = True + winner_img = wizard_victory_img + elif not fighter_2.alive: + score[0] += 1 + round_over = True + winner_img = warrior_victory_img + else: + victory_screen(winner_img) + return + + fighter_1.draw(screen) + fighter_2.draw(screen) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + if event.type == pygame.MOUSEBUTTONDOWN: + if exit_button.collidepoint(event.pos): + return + + pygame.display.update() + clock.tick(FPS) + + +while True: + menu_selection = main_menu() + + if menu_selection == "START": + game_loop() + elif menu_selection == "SCORES": + scores_screen() diff --git a/String_Palindrome.py b/String_Palindrome.py index 6b8302b6477..b1d9300fb8f 100644 --- a/String_Palindrome.py +++ b/String_Palindrome.py @@ -1,15 +1,15 @@ # Program to check if a string is palindrome or not -my_str = 'aIbohPhoBiA' +my_str = input().strip() # make it suitable for caseless comparison my_str = my_str.casefold() # reverse the string -rev_str = reversed(my_str) +rev_str = my_str[::-1] # check if the string is equal to its reverse -if list(my_str) == list(rev_str): - print("The string is a palindrome.") +if my_str == rev_str: + print("The string is a palindrome.") else: - print("The string is not a palindrome.") + print("The string is not a palindrome.") diff --git a/Strings.py b/Strings.py index 9c76b0a872a..3d506a2a61a 100644 --- a/Strings.py +++ b/Strings.py @@ -21,3 +21,7 @@ Life""" print("\nCreating a multiline String: ") print(String1) + +# Use F string to incert variables with { +String1 = "4" +print(f"I am an f string. 2 + 2 = {String1}") diff --git a/Sum of digits of a number.py b/Sum of digits of a number.py index c000547c7bc..ba111336965 100644 --- a/Sum of digits of a number.py +++ b/Sum of digits of a number.py @@ -2,32 +2,44 @@ import sys + def get_integer(): - for i in range(3,0,-1): # executes the loop 3 times. Giving 3 chances to the user. + for i in range( + 3, 0, -1 + ): # executes the loop 3 times. Giving 3 chances to the user. num = input("enter a number:") - if num.isnumeric(): # checks if entered input is an integer string or not. - num = int(num) # converting integer string to integer. And returns it to where function is called. + if num.isnumeric(): # checks if entered input is an integer string or not. + num = int( + num + ) # converting integer string to integer. And returns it to where function is called. return num else: - print("enter integer only") - print(f'{i-1} chances are left' if (i-1)>1 else f'{i-1} chance is left') # prints if user entered wrong input and chances left. - continue - + print("enter integer only") + print( + f"{i - 1} chances are left" + if (i - 1) > 1 + else f"{i - 1} chance is left" + ) # prints if user entered wrong input and chances left. + continue + def addition(num): - Sum=0 - if type(num) is type(None): # Checks if number type is none or not. If type is none program exits. + Sum = 0 + if type(num) is type( + None + ): # Checks if number type is none or not. If type is none program exits. print("Try again!") sys.exit() - while num > 0: # Addition- adding the digits in the number. + while num > 0: # Addition- adding the digits in the number. digit = int(num % 10) Sum += digit num /= 10 - return Sum # Returns sum to where the function is called. - + return Sum # Returns sum to where the function is called. -if __name__ == '__main__': # this is used to overcome the problems while importing this file. +if ( + __name__ == "__main__" +): # this is used to overcome the problems while importing this file. number = get_integer() Sum = addition(number) - print(f'Sum of digits of {number} is {Sum}') # Prints the sum + print(f"Sum of digits of {number} is {Sum}") # Prints the sum diff --git a/TIC_TAC_TOE/index.py b/TIC_TAC_TOE/index.py deleted file mode 100644 index 7e494d0e700..00000000000 --- a/TIC_TAC_TOE/index.py +++ /dev/null @@ -1,46 +0,0 @@ -def print_board(board): - for row in board: - print(" | ".join(row)) - print("-" * 9) - -def check_winner(board, player): - for i in range(3): - # Check rows and columns - if all(board[i][j] == player for j in range(3)) or all(board[j][i] == player for j in range(3)): - return True - # Check diagonals - if all(board[i][i] == player for i in range(3)) or all(board[i][2 - i] == player for i in range(3)): - return True - return False - -def is_full(board): - return all(cell != " " for row in board for cell in row) - -def main(): - board = [[" " for _ in range(3)] for _ in range(3)] - player = "X" - - while True: - print_board(board) - row = int(input(f"Player {player}, enter the row (0, 1, 2): ")) - col = int(input(f"Player {player}, enter the column (0, 1, 2): ")) - - if 0 <= row < 3 and 0 <= col < 3 and board[row][col] == " ": - board[row][col] = player - - if check_winner(board, player): - print_board(board) - print(f"Player {player} wins!") - break - - if is_full(board): - print_board(board) - print("It's a draw!") - break - - player = "O" if player == "X" else "X" - else: - print("Invalid move. Try again.") - -if __name__ == "__main__": - main() diff --git a/TaskManager.py b/TaskManager.py index 250eb05323b..d54a7f59756 100644 --- a/TaskManager.py +++ b/TaskManager.py @@ -1,31 +1,37 @@ -import datetime import csv -def load_tasks(filename='tasks.csv'): + +def load_tasks(filename="tasks.csv"): tasks = [] - with open(filename, 'r', newline='') as file: + with open(filename, "r", newline="") as file: reader = csv.reader(file) for row in reader: - tasks.append({'task': row[0], 'deadline': row[1], 'completed': row[2]}) + tasks.append({"task": row[0], "deadline": row[1], "completed": row[2]}) return tasks -def save_tasks(tasks, filename='tasks.csv'): - with open(filename, 'w', newline='') as file: + +def save_tasks(tasks, filename="tasks.csv"): + with open(filename, "w", newline="") as file: writer = csv.writer(file) for task in tasks: - writer.writerow([task['task'], task['deadline'], task['completed']]) + writer.writerow([task["task"], task["deadline"], task["completed"]]) + def add_task(task, deadline): tasks = load_tasks() - tasks.append({'task': task, 'deadline': deadline, 'completed': 'No'}) + tasks.append({"task": task, "deadline": deadline, "completed": "No"}) save_tasks(tasks) print("Task added successfully!") + def show_tasks(): tasks = load_tasks() for task in tasks: - print(f"Task: {task['task']}, Deadline: {task['deadline']}, Completed: {task['completed']}") + print( + f"Task: {task['task']}, Deadline: {task['deadline']}, Completed: {task['completed']}" + ) + # Example usage -add_task('Write daily report', '2024-04-20') +add_task("Write daily report", "2024-04-20") show_tasks() diff --git a/TaskPlanner.py b/TaskPlanner.py index 250eb05323b..d54a7f59756 100644 --- a/TaskPlanner.py +++ b/TaskPlanner.py @@ -1,31 +1,37 @@ -import datetime import csv -def load_tasks(filename='tasks.csv'): + +def load_tasks(filename="tasks.csv"): tasks = [] - with open(filename, 'r', newline='') as file: + with open(filename, "r", newline="") as file: reader = csv.reader(file) for row in reader: - tasks.append({'task': row[0], 'deadline': row[1], 'completed': row[2]}) + tasks.append({"task": row[0], "deadline": row[1], "completed": row[2]}) return tasks -def save_tasks(tasks, filename='tasks.csv'): - with open(filename, 'w', newline='') as file: + +def save_tasks(tasks, filename="tasks.csv"): + with open(filename, "w", newline="") as file: writer = csv.writer(file) for task in tasks: - writer.writerow([task['task'], task['deadline'], task['completed']]) + writer.writerow([task["task"], task["deadline"], task["completed"]]) + def add_task(task, deadline): tasks = load_tasks() - tasks.append({'task': task, 'deadline': deadline, 'completed': 'No'}) + tasks.append({"task": task, "deadline": deadline, "completed": "No"}) save_tasks(tasks) print("Task added successfully!") + def show_tasks(): tasks = load_tasks() for task in tasks: - print(f"Task: {task['task']}, Deadline: {task['deadline']}, Completed: {task['completed']}") + print( + f"Task: {task['task']}, Deadline: {task['deadline']}, Completed: {task['completed']}" + ) + # Example usage -add_task('Write daily report', '2024-04-20') +add_task("Write daily report", "2024-04-20") show_tasks() diff --git a/ThirdAI/Terms and Conditions/ThirdAI.py b/ThirdAI/Terms and Conditions/ThirdAI.py index 67d3928ec4b..046b6998c9a 100644 --- a/ThirdAI/Terms and Conditions/ThirdAI.py +++ b/ThirdAI/Terms and Conditions/ThirdAI.py @@ -26,11 +26,11 @@ def query(self, question): search_results = self.db.search( query=question, top_k=2, - on_error=lambda error_msg: print(f"Error! {error_msg}")) + on_error=lambda error_msg: print(f"Error! {error_msg}"), + ) output = "" for result in search_results: output += result.text + "\n\n" return output - diff --git a/ThirdAI/Terms and Conditions/TkinterUI.py b/ThirdAI/Terms and Conditions/TkinterUI.py index 47317636a23..dd7d0172e74 100644 --- a/ThirdAI/Terms and Conditions/TkinterUI.py +++ b/ThirdAI/Terms and Conditions/TkinterUI.py @@ -9,6 +9,7 @@ class ThirdAIApp: """ A GUI application for using the ThirdAI neural database client to train and query data. """ + def __init__(self, root): """ Initialize the user interface window. @@ -19,7 +20,7 @@ def __init__(self, root): # Initialize the main window self.root = root self.root.geometry("600x500") - self.root.title('ThirdAI - T&C') + self.root.title("ThirdAI - T&C") # Initialize variables self.path = [] @@ -28,33 +29,69 @@ def __init__(self, root): # GUI elements # Labels and buttons - self.menu = tk.Label(self.root, text="Terms & Conditions", font=self.custom_font(30), fg='black', - highlightthickness=2, highlightbackground="red") + self.menu = tk.Label( + self.root, + text="Terms & Conditions", + font=self.custom_font(30), + fg="black", + highlightthickness=2, + highlightbackground="red", + ) self.menu.place(x=125, y=10) - self.insert_button = tk.Button(self.root, text="Insert File!", font=self.custom_font(15), fg='black', bg="grey", - width=10, command=self.file_input) + self.insert_button = tk.Button( + self.root, + text="Insert File!", + font=self.custom_font(15), + fg="black", + bg="grey", + width=10, + command=self.file_input, + ) self.insert_button.place(x=245, y=100) self.text_box = tk.Text(self.root, wrap=tk.WORD, width=30, height=1) self.text_box.place(x=165, y=150) - self.training_button = tk.Button(self.root, text="Training", font=self.custom_font(15), fg='black', bg="grey", - width=10, command=self.training) + self.training_button = tk.Button( + self.root, + text="Training", + font=self.custom_font(15), + fg="black", + bg="grey", + width=10, + command=self.training, + ) self.training_button.place(x=245, y=195) - self.query_label = tk.Label(self.root, text="Query", font=self.custom_font(20), fg='black') + self.query_label = tk.Label( + self.root, text="Query", font=self.custom_font(20), fg="black" + ) self.query_label.place(x=255, y=255) self.query_entry = tk.Entry(self.root, font=self.custom_font(20), width=30) self.query_entry.place(x=70, y=300) - self.processing_button = tk.Button(self.root, text="Processing", font=self.custom_font(15), fg='black', - bg="grey", width=10, command=self.processing) + self.processing_button = tk.Button( + self.root, + text="Processing", + font=self.custom_font(15), + fg="black", + bg="grey", + width=10, + command=self.processing, + ) self.processing_button.place(x=245, y=355) - self.clear_button = tk.Button(self.root, text="Clear", font=15, fg='black', bg="grey", width=10, - command=self.clear_all) + self.clear_button = tk.Button( + self.root, + text="Clear", + font=15, + fg="black", + bg="grey", + width=10, + command=self.clear_all, + ) self.clear_button.place(x=245, y=405) @staticmethod @@ -96,7 +133,9 @@ def training(self): Train the neural database client with the selected PDF file. """ if not self.path: - messagebox.showwarning("No File Selected", "Please select a PDF file before training.") + messagebox.showwarning( + "No File Selected", "Please select a PDF file before training." + ) return self.client.train(self.path[0]) diff --git a/Tic-Tac-Toe Games/tic-tac-toe1.py b/Tic-Tac-Toe Games/tic-tac-toe1.py new file mode 100644 index 00000000000..4f87c72b7c6 --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe1.py @@ -0,0 +1,93 @@ +""" +Text-based Tic-Tac-Toe (2 players). + +>>> check_winner([['X','X','X'],[' ',' ',' '],[' ',' ',' ']], 'X') +True +>>> check_winner([['X','O','X'],['O','O','O'],['X',' ',' ']], 'O') +True +>>> check_winner([['X','O','X'],['O','X','O'],['O','X','O']], 'X') +False +>>> is_full([['X','O','X'],['O','X','O'],['O','X','O']]) +True +>>> is_full([['X',' ','X'],['O','X','O'],['O','X','O']]) +False +""" + +from typing import List + +Board = List[List[str]] + + +def print_board(board: Board) -> None: + """Print the Tic-Tac-Toe board.""" + for row in board: + print(" | ".join(row)) + print("-" * 9) + + +def check_winner(board: Board, player: str) -> bool: + """Return True if `player` has won.""" + for i in range(3): + if all(board[i][j] == player for j in range(3)) or all( + board[j][i] == player for j in range(3) + ): + return True + if all(board[i][i] == player for i in range(3)) or all( + board[i][2 - i] == player for i in range(3) + ): + return True + return False + + +def is_full(board: Board) -> bool: + """Return True if the board is full.""" + return all(cell != " " for row in board for cell in row) + + +def get_valid_input(prompt: str) -> int: + """Get a valid integer input between 0 and 2.""" + while True: + try: + value = int(input(prompt)) + if 0 <= value < 3: + return value + print("Invalid input: Enter a number between 0 and 2.") + except ValueError: + print("Invalid input: Please enter an integer.") + + +def main() -> None: + """Run the text-based Tic-Tac-Toe game.""" + board: Board = [[" " for _ in range(3)] for _ in range(3)] + player = "X" + + while True: + print_board(board) + print(f"Player {player}'s turn:") + + row = get_valid_input("Enter row (0-2): ") + col = get_valid_input("Enter col (0-2): ") + + if board[row][col] == " ": + board[row][col] = player + + if check_winner(board, player): + print_board(board) + print(f"Player {player} wins!") + break + + if is_full(board): + print_board(board) + print("It's a draw!") + break + + player = "O" if player == "X" else "X" + else: + print("Invalid move: Spot taken. Try again.") + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + main() diff --git a/Tic-Tac-Toe Games/tic-tac-toe2.py b/Tic-Tac-Toe Games/tic-tac-toe2.py new file mode 100644 index 00000000000..2aa94574202 --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe2.py @@ -0,0 +1,131 @@ +""" +Tic-Tac-Toe Console Game + +Two players (X and O) take turns to mark a 3x3 grid until one wins +or the game ends in a draw. + +Doctest Examples: + +>>> test_board = [" "] * 10 +>>> check_position(test_board, 1) +True +>>> test_board[1] = "X" +>>> check_position(test_board, 1) +False +""" + +import os +import time +from typing import List + +# Global Variables +board: List[str] = [" "] * 10 # 1-based indexing +player: int = 1 + +Win: int = 1 +Draw: int = -1 +Running: int = 0 +Game: int = Running + + +def draw_board() -> None: + """Print the current state of the Tic-Tac-Toe board.""" + print(f" {board[1]} | {board[2]} | {board[3]}") + print("___|___|___") + print(f" {board[4]} | {board[5]} | {board[6]}") + print("___|___|___") + print(f" {board[7]} | {board[8]} | {board[9]}") + print(" | | ") + + +def check_position(b: List[str], pos: int) -> bool: + """ + Check if the board position is empty. + + Args: + b (List[str]): Board + pos (int): Position 1-9 + + Returns: + bool: True if empty, False if occupied. + + >>> b = [" "] * 10 + >>> check_position(b, 1) + True + >>> b[1] = "X" + >>> check_position(b, 1) + False + """ + return b[pos] == " " + + +def check_win() -> None: + """Evaluate the board and update the global Game status.""" + global Game + # Winning combinations + combos = [ + (1, 2, 3), + (4, 5, 6), + (7, 8, 9), + (1, 4, 7), + (2, 5, 8), + (3, 6, 9), + (1, 5, 9), + (3, 5, 7), + ] + for a, b, c in combos: + if board[a] == board[b] == board[c] != " ": + Game = Win + return + if all(board[i] != " " for i in range(1, 10)): + Game = Draw + else: + Game = Running + + +def main() -> None: + """Run the Tic-Tac-Toe game in the console.""" + global player + print("Tic-Tac-Toe Game Designed By Sourabh Somani") + print("Player 1 [X] --- Player 2 [O]\n\nPlease Wait...") + time.sleep(2) + + while Game == Running: + os.system("cls" if os.name == "nt" else "clear") + draw_board() + mark = "X" if player % 2 != 0 else "O" + print(f"Player {1 if mark == 'X' else 2}'s chance") + try: + choice = int(input("Enter position [1-9] to mark: ")) + except ValueError: + print("Invalid input! Enter an integer between 1-9.") + time.sleep(2) + continue + + if choice < 1 or choice > 9: + print("Invalid position! Choose between 1-9.") + time.sleep(2) + continue + + if check_position(board, choice): + board[choice] = mark + player += 1 + check_win() + else: + print("Position already taken! Try another.") + time.sleep(2) + + os.system("cls" if os.name == "nt" else "clear") + draw_board() + if Game == Draw: + print("Game Draw") + elif Game == Win: + player_won = 1 if (player - 1) % 2 != 0 else 2 + print(f"Player {player_won} Won!") + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + main() diff --git a/Tic-Tac-Toe Games/tic-tac-toe3.py b/Tic-Tac-Toe Games/tic-tac-toe3.py new file mode 100644 index 00000000000..92c60d494e6 --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe3.py @@ -0,0 +1,143 @@ +""" +Tic-Tac-Toe with AI (Minimax) using CustomTkinter. + +Player = "X", AI = "O". Click a button to play. + +>>> check_winner([['X','X','X'],[' ',' ',' '],[' ',' ',' ']], 'X') +True +>>> check_winner([['X','O','X'],['O','O','O'],['X',' ',' ']], 'O') +True +>>> check_winner([['X','O','X'],['O','X','O'],['O','X','O']], 'X') +False +""" + +from typing import List, Optional, Tuple +import customtkinter as ctk +from tkinter import messagebox + +Board = List[List[str]] + + +def check_winner(board: Board, player: str) -> bool: + """Check if `player` has a winning line on `board`.""" + for i in range(3): + if all(board[i][j] == player for j in range(3)) or all( + board[j][i] == player for j in range(3) + ): + return True + if all(board[i][i] == player for i in range(3)) or all( + board[i][2 - i] == player for i in range(3) + ): + return True + return False + + +def is_board_full(board: Board) -> bool: + """Return True if all cells are filled.""" + return all(all(cell != " " for cell in row) for row in board) + + +def minimax(board: Board, depth: int, is_max: bool) -> int: + """Minimax algorithm for AI evaluation.""" + if check_winner(board, "X"): + return -1 + if check_winner(board, "O"): + return 1 + if is_board_full(board): + return 0 + + if is_max: + val = float("-inf") + for i in range(3): + for j in range(3): + if board[i][j] == " ": + board[i][j] = "O" + val = max(val, minimax(board, depth + 1, False)) + board[i][j] = " " + return val + else: + val = float("inf") + for i in range(3): + for j in range(3): + if board[i][j] == " ": + board[i][j] = "X" + val = min(val, minimax(board, depth + 1, True)) + board[i][j] = " " + return val + + +def best_move(board: Board) -> Optional[Tuple[int, int]]: + """Return best move for AI.""" + best_val = float("-inf") + move: Optional[Tuple[int, int]] = None + for i in range(3): + for j in range(3): + if board[i][j] == " ": + board[i][j] = "O" + val = minimax(board, 0, False) + board[i][j] = " " + if val > best_val: + best_val = val + move = (i, j) + return move + + +def make_move(row: int, col: int) -> None: + """Human move and AI response.""" + if board[row][col] != " ": + messagebox.showerror("Error", "Invalid move") + return + board[row][col] = "X" + buttons[row][col].configure(text="X") + if check_winner(board, "X"): + messagebox.showinfo("Tic-Tac-Toe", "You win!") + root.quit() + elif is_board_full(board): + messagebox.showinfo("Tic-Tac-Toe", "Draw!") + root.quit() + else: + ai_move() + + +def ai_move() -> None: + """AI makes a move.""" + move = best_move(board) + if move is None: + return + r, c = move + board[r][c] = "O" + buttons[r][c].configure(text="O") + if check_winner(board, "O"): + messagebox.showinfo("Tic-Tac-Toe", "AI wins!") + root.quit() + elif is_board_full(board): + messagebox.showinfo("Tic-Tac-Toe", "Draw!") + root.quit() + + +# --- Initialize GUI --- +root = ctk.CTk() +root.title("Tic-Tac-Toe") +board: Board = [[" "] * 3 for _ in range(3)] +buttons: List[List[ctk.CTkButton]] = [] + +for i in range(3): + row_buttons: List[ctk.CTkButton] = [] + for j in range(3): + btn = ctk.CTkButton( + root, + text=" ", + font=("normal", 30), + width=100, + height=100, + command=lambda r=i, c=j: make_move(r, c), + ) + btn.grid(row=i, column=j, padx=2, pady=2) + row_buttons.append(btn) + buttons.append(row_buttons) + +if __name__ == "__main__": + import doctest + + doctest.testmod() + root.mainloop() diff --git a/Tic-Tac-Toe Games/tic-tac-toe4.py b/Tic-Tac-Toe Games/tic-tac-toe4.py new file mode 100644 index 00000000000..0b182ff6dcb --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe4.py @@ -0,0 +1,110 @@ +""" +Tic-Tac-Toe Game using NumPy and random moves. + +Two players (1 and 2) randomly take turns until one wins or board is full. + +Doctests: + +>>> b = create_board() +>>> all(b.flatten() == 0) +True +>>> len(possibilities(b)) +9 +>>> row_win(np.array([[1,1,1],[0,0,0],[0,0,0]]), 1) +True +>>> col_win(np.array([[2,0,0],[2,0,0],[2,0,0]]), 2) +True +>>> diag_win(np.array([[1,0,0],[0,1,0],[0,0,1]]), 1) +True +>>> evaluate(np.array([[1,1,1],[0,0,0],[0,0,0]])) +1 +>>> evaluate(np.array([[1,2,1],[2,1,2],[2,1,2]])) +-1 +""" + +import numpy as np +import random +from time import sleep +from typing import List, Tuple + + +def create_board() -> np.ndarray: + """Return an empty 3x3 Tic-Tac-Toe board.""" + return np.zeros((3, 3), dtype=int) + + +def possibilities(board: np.ndarray) -> List[Tuple[int, int]]: + """Return list of empty positions on the board.""" + return [(i, j) for i in range(3) for j in range(3) if board[i, j] == 0] + + +def random_place(board: np.ndarray, player: int) -> np.ndarray: + """Place player number randomly on an empty position.""" + selection = possibilities(board) + current_loc = random.choice(selection) + board[current_loc] = player + return board + + +def row_win(board: np.ndarray, player: int) -> bool: + """Check if player has a complete row.""" + return any(all(board[x, y] == player for y in range(3)) for x in range(3)) + + +def col_win(board: np.ndarray, player: int) -> bool: + """Check if player has a complete column.""" + return any(all(board[y, x] == player for y in range(3)) for x in range(3)) + + +def diag_win(board: np.ndarray, player: int) -> bool: + """Check if player has a complete diagonal.""" + if all(board[i, i] == player for i in range(3)): + return True + if all(board[i, 2 - i] == player for i in range(3)): + return True + return False + + +def evaluate(board: np.ndarray) -> int: + """ + Evaluate the board. + + Returns: + 0 if no winner yet, + 1 or 2 for the winner, + -1 if tie. + """ + for player in [1, 2]: + if row_win(board, player) or col_win(board, player) or diag_win(board, player): + return player + if np.all(board != 0): + return -1 + return 0 + + +def play_game() -> int: + """Play a full random Tic-Tac-Toe game and return the winner.""" + board, winner, counter = create_board(), 0, 1 + print("Initial board:\n", board) + sleep(1) + while winner == 0: + for player in [1, 2]: + board = random_place(board, player) + print(f"\nBoard after move {counter} by Player {player}:\n{board}") + sleep(1) + counter += 1 + winner = evaluate(board) + if winner != 0: + break + return winner + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + winner = play_game() + if winner == -1: + print("\nThe game is a tie!") + else: + print(f"\nWinner is: Player {winner}") diff --git a/Tic-Tac-Toe Games/tic-tac-toe5.py b/Tic-Tac-Toe Games/tic-tac-toe5.py new file mode 100644 index 00000000000..eef30bca1a7 --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe5.py @@ -0,0 +1,223 @@ +""" +Tic-Tac-Toe Game with Full Type Hints and Doctests. + +Two-player game where Player and Computer take turns. +Player chooses X or O and Computer takes the opposite. + +Doctests examples: + +>>> is_winner([' ', 'X','X','X',' ',' ',' ',' ',' ',' '], 'X') +True +>>> is_space_free([' ', 'X',' ',' ',' ',' ',' ',' ',' ',' '], 1) +False +>>> is_space_free([' ']*10, 5) +True +>>> choose_random_move_from_list([' ']*10, [1,2,3]) in [1,2,3] +True +""" + +import random +from typing import List, Optional, Tuple + + +def introduction() -> None: + """Print game introduction.""" + print("Welcome to Tic Tac Toe!") + print("Player is X, Computer is O.") + print("Board positions 1-9 (bottom-left to top-right).") + + +def draw_board(board: List[str]) -> None: + """Display the current board.""" + print(" | |") + print(f" {board[7]} | {board[8]} | {board[9]}") + print(" | |") + print("-------------") + print(" | |") + print(f" {board[4]} | {board[5]} | {board[6]}") + print(" | |") + print("-------------") + print(" | |") + print(f" {board[1]} | {board[2]} | {board[3]}") + print(" | |") + + +def input_player_letter() -> Tuple[str, str]: + """ + Let player choose X or O. + Returns tuple (player_letter, computer_letter). + """ + letter: str = "" + while letter not in ("X", "O"): + print("Do you want to be X or O? ") + letter = input("> ").upper() + return ("X", "O") if letter == "X" else ("O", "X") + + +def first_player() -> str: + """Randomly decide who goes first.""" + return "Computer" if random.randint(0, 1) == 0 else "Player" + + +def play_again() -> bool: + """Ask the player if they want to play again.""" + print("Do you want to play again? (y/n)") + return input().lower().startswith("y") + + +def make_move(board: List[str], letter: str, move: int) -> None: + """Place the letter on the board at the given position.""" + board[move] = letter + + +def is_winner(board: List[str], le: str) -> bool: + """ + Return True if the given letter has won the game. + + >>> is_winner([' ', 'X','X','X',' ',' ',' ',' ',' ',' '], 'X') + True + >>> is_winner([' ']*10, 'O') + False + """ + return ( + (board[7] == le and board[8] == le and board[9] == le) + or (board[4] == le and board[5] == le and board[6] == le) + or (board[1] == le and board[2] == le and board[3] == le) + or (board[7] == le and board[4] == le and board[1] == le) + or (board[8] == le and board[5] == le and board[2] == le) + or (board[9] == le and board[6] == le and board[3] == le) + or (board[7] == le and board[5] == le and board[3] == le) + or (board[9] == le and board[5] == le and board[1] == le) + ) + + +def get_board_copy(board: List[str]) -> List[str]: + """Return a copy of the board.""" + return [b for b in board] + + +def is_space_free(board: List[str], move: int) -> bool: + """ + Return True if a position on the board is free. + + >>> is_space_free([' ', 'X',' ',' ',' ',' ',' ',' ',' ',' '], 1) + False + >>> is_space_free([' ']*10, 5) + True + """ + return board[move] == " " + + +def get_player_move(board: List[str]) -> int: + """Get the player's next valid move.""" + move: str = " " + while move not in "1 2 3 4 5 6 7 8 9".split() or not is_space_free( + board, int(move) + ): + print("What is your next move? (1-9)") + move = input() + return int(move) + + +def choose_random_move_from_list( + board: List[str], moves_list: List[int] +) -> Optional[int]: + """ + Return a valid move from a list randomly. + + >>> choose_random_move_from_list([' ']*10, [1,2,3]) in [1,2,3] + True + >>> choose_random_move_from_list(['X']*10, [1,2,3]) + """ + possible_moves = [i for i in moves_list if is_space_free(board, i)] + return random.choice(possible_moves) if possible_moves else None + + +def get_computer_move(board: List[str], computer_letter: str) -> int: + """Return the computer's best move.""" + player_letter = "O" if computer_letter == "X" else "X" + + # Try to win + for i in range(1, 10): + copy = get_board_copy(board) + if is_space_free(copy, i): + make_move(copy, computer_letter, i) + if is_winner(copy, computer_letter): + return i + + # Block player's winning move + for i in range(1, 10): + copy = get_board_copy(board) + if is_space_free(copy, i): + make_move(copy, player_letter, i) + if is_winner(copy, player_letter): + return i + + # Try corners + move = choose_random_move_from_list(board, [1, 3, 7, 9]) + if move is not None: + return move + + # Take center + if is_space_free(board, 5): + return 5 + + # Try sides + return choose_random_move_from_list(board, [2, 4, 6, 8]) # type: ignore + + +def is_board_full(board: List[str]) -> bool: + """Return True if the board has no free spaces.""" + return all(not is_space_free(board, i) for i in range(1, 10)) + + +def main() -> None: + """Main game loop.""" + introduction() + while True: + the_board: List[str] = [" "] * 10 + player_letter, computer_letter = input_player_letter() + turn = first_player() + print(f"{turn} goes first.") + game_is_playing = True + + while game_is_playing: + if turn.lower() == "player": + draw_board(the_board) + move = get_player_move(the_board) + make_move(the_board, player_letter, move) + + if is_winner(the_board, player_letter): + draw_board(the_board) + print("Hooray! You have won the game!") + game_is_playing = False + elif is_board_full(the_board): + draw_board(the_board) + print("The game is a tie!") + break + else: + turn = "computer" + else: + move = get_computer_move(the_board, computer_letter) + make_move(the_board, computer_letter, move) + + if is_winner(the_board, computer_letter): + draw_board(the_board) + print("Computer has won. You Lose.") + game_is_playing = False + elif is_board_full(the_board): + draw_board(the_board) + print("The game is a tie!") + break + else: + turn = "player" + + if not play_again(): + break + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + main() diff --git a/Tic-Tac-Toe Games/tic-tac-toe6.py b/Tic-Tac-Toe Games/tic-tac-toe6.py new file mode 100644 index 00000000000..294f6fa0a17 --- /dev/null +++ b/Tic-Tac-Toe Games/tic-tac-toe6.py @@ -0,0 +1,182 @@ +""" +Tic-Tac-Toe Series Game + +Two players can play multiple rounds of Tic-Tac-Toe. +Keeps score across rounds until players quit. + +Doctest examples: + +>>> check_win({"X": [1, 2, 3], "O": []}, "X") +True +>>> check_win({"X": [1, 2], "O": []}, "X") +False +>>> check_draw({"X": [1, 2, 3], "O": [4, 5, 6]}) +False +>>> check_draw({"X": [1, 2, 3, 4, 5], "O": [6, 7, 8, 9]}) +True +""" + +from typing import List, Dict + + +def print_tic_tac_toe(values: List[str]) -> None: + """Print the current Tic-Tac-Toe board.""" + print("\n") + print("\t | |") + print("\t {} | {} | {}".format(values[0], values[1], values[2])) + print("\t_____|_____|_____") + print("\t | |") + print("\t {} | {} | {}".format(values[3], values[4], values[5])) + print("\t_____|_____|_____") + print("\t | |") + print("\t {} | {} | {}".format(values[6], values[7], values[8])) + print("\t | |") + print("\n") + + +def print_scoreboard(score_board: Dict[str, int]) -> None: + """Print the current score-board.""" + print("\t--------------------------------") + print("\t SCOREBOARD ") + print("\t--------------------------------") + players = list(score_board.keys()) + print(f"\t {players[0]} \t {score_board[players[0]]}") + print(f"\t {players[1]} \t {score_board[players[1]]}") + print("\t--------------------------------\n") + + +def check_win(player_pos: Dict[str, List[int]], cur_player: str) -> bool: + """ + Check if the current player has won. + + Args: + player_pos: Dict of player positions (X and O) + cur_player: Current player ("X" or "O") + + Returns: + True if player wins, False otherwise + + >>> check_win({"X": [1,2,3], "O": []}, "X") + True + >>> check_win({"X": [1,2], "O": []}, "X") + False + """ + soln = [ + [1, 2, 3], + [4, 5, 6], + [7, 8, 9], # Rows + [1, 4, 7], + [2, 5, 8], + [3, 6, 9], # Columns + [1, 5, 9], + [3, 5, 7], # Diagonals + ] + return any(all(pos in player_pos[cur_player] for pos in combo) for combo in soln) + + +def check_draw(player_pos: Dict[str, List[int]]) -> bool: + """ + Check if the game is drawn (all positions filled). + + Args: + player_pos: Dict of player positions (X and O) + + Returns: + True if game is a draw, False otherwise + + >>> check_draw({"X": [1,2,3], "O": [4,5,6]}) + False + >>> check_draw({"X": [1,2,3,4,5], "O": [6,7,8,9]}) + True + """ + return len(player_pos["X"]) + len(player_pos["O"]) == 9 + + +def single_game(cur_player: str) -> str: + """Run a single game of Tic-Tac-Toe.""" + values: List[str] = [" " for _ in range(9)] + player_pos: Dict[str, List[int]] = {"X": [], "O": []} + + while True: + print_tic_tac_toe(values) + try: + move = int(input(f"Player {cur_player} turn. Which box? : ")) + except ValueError: + print("Wrong Input!!! Try Again") + continue + if move < 1 or move > 9: + print("Wrong Input!!! Try Again") + continue + if values[move - 1] != " ": + print("Place already filled. Try again!!") + continue + + # Update board + values[move - 1] = cur_player + player_pos[cur_player].append(move) + + if check_win(player_pos, cur_player): + print_tic_tac_toe(values) + print(f"Player {cur_player} has won the game!!\n") + return cur_player + + if check_draw(player_pos): + print_tic_tac_toe(values) + print("Game Drawn\n") + return "D" + + cur_player = "O" if cur_player == "X" else "X" + + +def main() -> None: + """Run a series of Tic-Tac-Toe games.""" + player1 = input("Player 1, Enter the name: ") + player2 = input("Player 2, Enter the name: ") + cur_player = player1 + + player_choice: Dict[str, str] = {"X": "", "O": ""} + options: List[str] = ["X", "O"] + score_board: Dict[str, int] = {player1: 0, player2: 0} + + print_scoreboard(score_board) + + while True: + print(f"Turn to choose for {cur_player}") + print("Enter 1 for X") + print("Enter 2 for O") + print("Enter 3 to Quit") + + try: + choice = int(input()) + except ValueError: + print("Wrong Input!!! Try Again\n") + continue + + if choice == 1: + player_choice["X"] = cur_player + player_choice["O"] = player2 if cur_player == player1 else player1 + elif choice == 2: + player_choice["O"] = cur_player + player_choice["X"] = player2 if cur_player == player1 else player1 + elif choice == 3: + print("Final Scores") + print_scoreboard(score_board) + break + else: + print("Wrong Choice!!!! Try Again\n") + continue + + winner = single_game(options[choice - 1]) + + if winner != "D": + score_board[player_choice[winner]] += 1 + + print_scoreboard(score_board) + cur_player = player2 if cur_player == player1 else player1 + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + main() diff --git a/TicTacToe.py b/TicTacToe.py deleted file mode 100644 index f1b61b80df9..00000000000 --- a/TicTacToe.py +++ /dev/null @@ -1,186 +0,0 @@ -def print_tic_tac_toe(values): - print("\n") - print("\t | |") - print("\t {} | {} | {}".format(values[0], values[1], values[2])) - print('\t_____|_____|_____') - - print("\t | |") - print("\t {} | {} | {}".format(values[3], values[4], values[5])) - print('\t_____|_____|_____') - - print("\t | |") - - print("\t {} | {} | {}".format(values[6], values[7], values[8])) - print("\t | |") - print("\n") - - -# Function to print the score-board -def print_scoreboard(score_board): - print("\t--------------------------------") - print("\t SCOREBOARD ") - print("\t--------------------------------") - - players = list(score_board.keys()) - print("\t ", players[0], "\t ", score_board[players[0]]) - print("\t ", players[1], "\t ", score_board[players[1]]) - - print("\t--------------------------------\n") - -# Function to check if any player has won -def check_win(player_pos, cur_player): - - # All possible winning combinations - soln = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [1, 4, 7], [2, 5, 8], [3, 6, 9], [1, 5, 9], [3, 5, 7]] - - # Loop to check if any winning combination is satisfied - for x in soln: - if all(y in player_pos[cur_player] for y in x): - - # Return True if any winning combination satisfies - return True - # Return False if no combination is satisfied - return False - -# Function to check if the game is drawn -def check_draw(player_pos): - if len(player_pos['X']) + len(player_pos['O']) == 9: - return True - return False - -# Function for a single game of Tic Tac Toe -def single_game(cur_player): - - # Represents the Tic Tac Toe - values = [' ' for x in range(9)] - - # Stores the positions occupied by X and O - player_pos = {'X':[], 'O':[]} - - # Game Loop for a single game of Tic Tac Toe - while True: - print_tic_tac_toe(values) - - # Try exception block for MOVE input - try: - print("Player ", cur_player, " turn. Which box? : ", end="") - move = int(input()) - except ValueError: - print("Wrong Input!!! Try Again") - continue - - # Sanity check for MOVE inout - if move < 1 or move > 9: - print("Wrong Input!!! Try Again") - continue - - # Check if the box is not occupied already - if values[move-1] != ' ': - print("Place already filled. Try again!!") - continue - - # Update game information - - # Updating grid status - values[move-1] = cur_player - - # Updating player positions - player_pos[cur_player].append(move) - - # Function call for checking win - if check_win(player_pos, cur_player): - print_tic_tac_toe(values) - print("Player ", cur_player, " has won the game!!") - print("\n") - return cur_player - - # Function call for checking draw game - if check_draw(player_pos): - print_tic_tac_toe(values) - print("Game Drawn") - print("\n") - return 'D' - - # Switch player moves - if cur_player == 'X': - cur_player = 'O' - else: - cur_player = 'X' - -if __name__ == "__main__": - - print("Player 1") - player1 = input("Enter the name : ") - print("\n") - - print("Player 2") - player2 = input("Enter the name : ") - print("\n") - - # Stores the player who chooses X and O - cur_player = player1 - - # Stores the choice of players - player_choice = {'X' : "", 'O' : ""} - - # Stores the options - options = ['X', 'O'] - - # Stores the scoreboard - score_board = {player1: 0, player2: 0} - print_scoreboard(score_board) - - # Game Loop for a series of Tic Tac Toe - # The loop runs until the players quit - while True: - - # Player choice Menu - print("Turn to choose for", cur_player) - print("Enter 1 for X") - print("Enter 2 for O") - print("Enter 3 to Quit") - - # Try exception for CHOICE input - try: - choice = int(input()) - except ValueError: - print("Wrong Input!!! Try Again\n") - continue - - # Conditions for player choice - if choice == 1: - player_choice['X'] = cur_player - if cur_player == player1: - player_choice['O'] = player2 - else: - player_choice['O'] = player1 - - elif choice == 2: - player_choice['O'] = cur_player - if cur_player == player1: - player_choice['X'] = player2 - else: - player_choice['X'] = player1 - - elif choice == 3: - print("Final Scores") - print_scoreboard(score_board) - break - - else: - print("Wrong Choice!!!! Try Again\n") - - # Stores the winner in a single game of Tic Tac Toe - winner = single_game(options[choice-1]) - - # Edits the scoreboard according to the winner - if winner != 'D' : - player_won = player_choice[winner] - score_board[player_won] = score_board[player_won] + 1 - - print_scoreboard(score_board) - # Switch player who chooses X or O - if cur_player == player1: - cur_player = player2 - else: - cur_player = player1 diff --git a/Tic_Tac_Toe.py b/Tic_Tac_Toe.py deleted file mode 100644 index b71b5b1d290..00000000000 --- a/Tic_Tac_Toe.py +++ /dev/null @@ -1,192 +0,0 @@ -import random - -# a python program for tic-tac-toe game -# module intro for introduction -# module show_board for values -# module playgame - - -def introduction(): - print("Hello this a sample tic tac toe game") - print("It will rotate turns between players one and two") - print("While 3,3 would be the bottom right.") - print("Player 1 is X and Player 2 is O") - - -def draw_board(board): - print(" | |") - print(" " + board[7] + " | " + board[8] + " | " + board[9]) - print(" | |") - print("-------------") - print(" | |") - print(" " + board[4] + " | " + board[5] + " | " + board[6]) - print(" | |") - print("-------------") - print(" | |") - print(" " + board[1] + " | " + board[2] + " | " + board[3]) - print(" | |") - - -def input_player_letter(): - # Lets the player type witch letter they want to be. - # Returns a list with the player's letter as the first item, and the computer's letter as the second. - letter = "" - while not (letter == "X" or letter == "O"): - print("Do you want to be X or O? ") - letter = input("> ").upper() - - # the first element in the list is the player’s letter, the second is the computer's letter. - if letter == "X": - return ["X", "O"] - else: - return ["O", "X"] - - -def frist_player(): - guess = random.randint(0, 1) - if guess == 0: - return "Computer" - else: - return "Player" - - -def play_again(): - print("Do you want to play again? (y/n)") - return input().lower().startswith("y") - - -def make_move(board, letter, move): - board[move] = letter - - -def is_winner(bo, le): - # Given a board and a player’s letter, this function returns True if that player has won. - # We use bo instead of board and le instead of letter so we don’t have to type as much. - return ( - (bo[7] == le and bo[8] == le and bo[9] == le) - or (bo[4] == le and bo[5] == le and bo[6] == le) - or (bo[1] == le and bo[2] == le and bo[3] == le) - or (bo[7] == le and bo[4] == le and bo[1] == le) - or (bo[8] == le and bo[5] == le and bo[2] == le) - or (bo[9] == le and bo[6] == le and bo[3] == le) - or (bo[7] == le and bo[5] == le and bo[3] == le) - or (bo[9] == le and bo[5] == le and bo[1] == le) - ) - - -def get_board_copy(board): - dupe_board = [] - for i in board: - dupe_board.append(i) - return dupe_board - - -def is_space_free(board, move): - return board[move] == " " - - -def get_player_move(board): - # Let the player type in their move - move = " " - while move not in "1 2 3 4 5 6 7 8 9".split() or not is_space_free( - board, int(move) - ): - print("What is your next move? (1-9)") - move = input() - return int(move) - - -def choose_random_move_from_list(board, moveslist): - possible_moves = [] - for i in moveslist: - if is_space_free(board, i): - possible_moves.append(i) - - if len(possible_moves) != 0: - return random.choice(possible_moves) - else: - return None - - -def get_computer_move(board, computer_letter): - if computer_letter == "X": - player_letter = "O" - else: - player_letter = "X" - - for i in range(1, 10): - copy = get_board_copy(board) - if is_space_free(copy, i): - make_move(copy, computer_letter, i) - if is_winner(copy, computer_letter): - return i - - for i in range(1, 10): - copy = get_board_copy(board) - if is_space_free(copy, i): - make_move(copy, player_letter, i) - if is_winner(copy, player_letter): - return i - - move = choose_random_move_from_list(board, [1, 3, 7, 9]) - if move != None: - return move - - if is_space_free(board, 5): - return 5 - - return choose_random_move_from_list(board, [2, 4, 6, 8]) - - -def is_board_full(board): - for i in range(1, 10): - if is_space_free(board, i): - return False - return True - - -print("Welcome To Tic Tac Toe!") - -while True: - the_board = [" "] * 10 - player_letter, computer_letter = input_player_letter() - turn = frist_player() - print("The " + turn + " go frist.") - game_is_playing = True - - while game_is_playing: - if turn == "player": - # players turn - draw_board(the_board) - move = get_player_move(the_board) - make_move(the_board, player_letter, move) - - if is_winner(the_board, player_letter): - draw_board(the_board) - print("Hoory! You have won the game!") - game_is_playing = False - else: - if is_board_full(the_board): - draw_board(the_board) - print("The game is tie!") - break - else: - turn = "computer" - else: - # Computer's turn - move = get_computer_move(the_board, computer_letter) - make_move(the_board, computer_letter, move) - - if is_winner(the_board, computer_letter): - draw_board(the_board) - print("The computer has beaten you! You Lose.") - game_is_playing = False - else: - if is_board_full(the_board): - draw_board(the_board) - print("The game is a tie!") - break - else: - turn = "player" - if not play_again(): - break diff --git a/Timetable_Operations.py b/Timetable_Operations.py index 0f75e59e516..630ef597417 100644 --- a/Timetable_Operations.py +++ b/Timetable_Operations.py @@ -1,52 +1,72 @@ -##Clock in pt2thon## - -t1 = input("Init schedule : ") # first schedule -HH1 = int(t1[0] + t1[1]) -MM1 = int(t1[3] + t1[4]) -SS1 = int(t1[6] + t1[7]) - -t2 = input("Final schedule : ") # second schedule -HH2 = int(t2[0] + t2[1]) -MM2 = int(t2[3] + t2[4]) -SS2 = int(t2[6] + t2[7]) - -tt1 = (HH1 * 3600) + (MM1 * 60) + SS1 # total schedule 1 -tt2 = (HH2 * 3600) + (MM2 * 60) + SS2 # total schedule 2 -tt3 = tt2 - tt1 # difference between tt2 e tt1 - -# Part Math -if tt3 < 0: - # If the difference between tt2 e tt1 for negative : - - a = 86400 - tt1 # 86400 is seconds in 1 day; - a2 = a + tt2 # a2 is the difference between 1 day e the ; - Ht = a2 // 3600 # Ht is hours calculated; - - a = a2 % 3600 # Convert 'a' in seconds; - Mt = a // 60 # Mt is minutes calculated; - St = a % 60 # St is seconds calculated; - -else: - # If the difference between tt2 e tt1 for positive : - - Ht = tt3 // 3600 # Ht is hours calculated; - z = tt3 % 3600 # 'z' is tt3 converting in hours by seconds - - Mt = z // 60 # Mt is minutes calculated; - St = tt3 % 60 # St is seconds calculated; - -# special condition below : -if Ht < 10: - h = "0" + str(Ht) - Ht = h -if Mt < 10: - m = "0" + str(Mt) - Mt = m -if St < 10: - s = "0" + str(St) - St = s -# add '0' to the empty spaces (caused by previous operations) in the final result! - -print( - "final result is :", str(Ht) + ":" + str(Mt) + ":" + str(St) -) # final result (formatted in clock) +""" +Tkinter Clock Difference Calculator. + +Compute difference between two times (HH:MM:SS) with midnight wrap-around. + +Doctests: + +>>> clock_diff("12:00:00", "14:30:15") +'02:30:15' +>>> clock_diff("23:50:00", "00:15:30") +'00:25:30' +>>> clock_diff("00:00:00", "00:00:00") +'00:00:00' +""" + +import tkinter as tk +from tkinter import messagebox + + +def clock_diff(t1: str, t2: str) -> str: + """Return difference between t1 and t2 as HH:MM:SS (zero-padded).""" + h1, m1, s1 = int(t1[0:2]), int(t1[3:5]), int(t1[6:8]) + h2, m2, s2 = int(t2[0:2]), int(t2[3:5]), int(t2[6:8]) + sec1 = h1 * 3600 + m1 * 60 + s1 + sec2 = h2 * 3600 + m2 * 60 + s2 + diff = sec2 - sec1 + if diff < 0: + diff += 24 * 3600 + h = diff // 3600 + m = (diff % 3600) // 60 + s = diff % 60 + return f"{h:02}:{m:02}:{s:02}" + + +def calculate() -> None: + """Tkinter callback to calculate and display clock difference.""" + t1 = entry_t1.get().strip() + t2 = entry_t2.get().strip() + try: + for t in [t1, t2]: + if len(t) != 8 or t[2] != ":" or t[5] != ":": + raise ValueError("Format must be HH:MM:SS") + h, m, s = int(t[0:2]), int(t[3:5]), int(t[6:8]) + if not (0 <= h < 24 and 0 <= m < 60 and 0 <= s < 60): + raise ValueError("Time out of range") + result = clock_diff(t1, t2) + label_result.config(text=f"Difference: {result}") + except Exception as e: + messagebox.showerror("Error", f"Invalid input!\n{e}") + + +root = tk.Tk() +root.title("Clock Difference Calculator") +root.geometry("300x200") + +tk.Label(root, text="Init schedule (HH:MM:SS):").pack(pady=5) +entry_t1 = tk.Entry(root) +entry_t1.pack() + +tk.Label(root, text="Final schedule (HH:MM:SS):").pack(pady=5) +entry_t2 = tk.Entry(root) +entry_t2.pack() + +tk.Button(root, text="Calculate Difference", command=calculate).pack(pady=10) +label_result = tk.Label(root, text="Difference: ") +label_result.pack(pady=5) + +if __name__ == "__main__": + import doctest + + doctest.testmod() + root.mainloop() diff --git a/To find the largest number between 3 numbers.py b/To find the largest number between 3 numbers.py index 5e7e1575292..1c8e99e8f22 100644 --- a/To find the largest number between 3 numbers.py +++ b/To find the largest number between 3 numbers.py @@ -1,7 +1,6 @@ # Python program to find the largest number among the three input numbers -a=[] +a = [] for i in range(3): a.append(int(input())) -print("The largest among three numbers is:",max(a)) - +print("The largest among three numbers is:", max(a)) diff --git a/To print series 1,12,123,1234......py b/To print series 1,12,123,1234......py index 93adda5ee67..cc192eed3eb 100644 --- a/To print series 1,12,123,1234......py +++ b/To print series 1,12,123,1234......py @@ -1,6 +1,5 @@ # master def num(a): - # initialising starting number num = 1 @@ -8,7 +7,6 @@ def num(a): # outer loop to handle number of rows for i in range(0, a): - # re assigning num num = 1 @@ -18,7 +16,6 @@ def num(a): # values changing acc. to outer loop for k in range(0, i + 1): - # printing number print(num, end=" ") diff --git a/Todo_GUi.py b/Todo_GUi.py new file mode 100644 index 00000000000..6590346c7ee --- /dev/null +++ b/Todo_GUi.py @@ -0,0 +1,45 @@ +from tkinter import messagebox +import tkinter as tk + + +# Function to be called when button is clicked +def add_Button(): + task = Input.get() + if task: + List.insert(tk.END, task) + Input.delete(0, tk.END) + + +def del_Button(): + try: + task = List.curselection()[0] + List.delete(task) + except IndexError: + messagebox.showwarning("Selection Error", "Please select a task to delete.") + + +# Create the main window +window = tk.Tk() +window.title("Task Manager") +window.geometry("500x500") +window.resizable(False, False) +window.config(bg="light grey") + +# text filed +Input = tk.Entry(window, width=50) +Input.grid(row=0, column=0, padx=20, pady=60) +Input.focus() + +# Create the button +add = tk.Button(window, text="ADD TASK", height=2, width=9, command=add_Button) +add.grid(row=0, column=1, padx=20, pady=0) + +delete = tk.Button(window, text="DELETE TASK", height=2, width=10, command=del_Button) +delete.grid(row=1, column=1) + +# creating list box +List = tk.Listbox(window, width=50, height=20) +List.grid(row=1, column=0) + + +window.mainloop() diff --git a/Translator/translator.py b/Translator/translator.py index 509be9e6410..2987c91af74 100644 --- a/Translator/translator.py +++ b/Translator/translator.py @@ -1,6 +1,7 @@ from tkinter import * from translate import Translator + # Translator function def translate(): translator = Translator(from_lang=lan1.get(), to_lang=lan2.get()) diff --git a/Trending youtube videos b/Trending youtube videos new file mode 100644 index 00000000000..a14535e4ddc --- /dev/null +++ b/Trending youtube videos @@ -0,0 +1,43 @@ +''' + Python program that uses the YouTube Data API to fetch the top 10 trending YouTube videos. +You’ll need to have an API key from Google Cloud Platform to use the YouTube Data API. + +First, install the google-api-python-client library if you haven’t already: +pip install google-api-python-client + +Replace 'YOUR_API_KEY' with your actual API key. This script will fetch and print the titles, +channels, and view counts of the top 10 trending YouTube videos in India. +You can change the regionCode to any other country code if needed. + +Then, you can use the following code: + +''' + +from googleapiclient.discovery import build + +# Replace with your own API key +API_KEY = 'YOUR_API_KEY' +YOUTUBE_API_SERVICE_NAME = 'youtube' +YOUTUBE_API_VERSION = 'v3' + +def get_trending_videos(): + youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=API_KEY) + + # Call the API to get the top 10 trending videos + request = youtube.videos().list( + part='snippet,statistics', + chart='mostPopular', + regionCode='IN', # Change this to your region code + maxResults=10 + ) + response = request.execute() + + # Print the video details + for item in response['items']: + title = item['snippet']['title'] + channel = item['snippet']['channelTitle'] + views = item['statistics']['viewCount'] + print(f'Title: {title}\nChannel: {channel}\nViews: {views}\n') + +if __name__ == '__main__': + get_trending_videos() diff --git a/Trending youtube videos.py b/Trending youtube videos.py new file mode 100644 index 00000000000..e74f15e75f3 --- /dev/null +++ b/Trending youtube videos.py @@ -0,0 +1,45 @@ +""" + Python program that uses the YouTube Data API to fetch the top 10 trending YouTube videos. +You’ll need to have an API key from Google Cloud Platform to use the YouTube Data API. + +First, install the google-api-python-client library if you haven’t already: +pip install google-api-python-client + +Replace 'YOUR_API_KEY' with your actual API key. This script will fetch and print the titles, +channels, and view counts of the top 10 trending YouTube videos in India. +You can change the regionCode to any other country code if needed. + +Then, you can use the following code: + +""" + +from googleapiclient.discovery import build + +# Replace with your own API key +API_KEY = "YOUR_API_KEY" +YOUTUBE_API_SERVICE_NAME = "youtube" +YOUTUBE_API_VERSION = "v3" + + +def get_trending_videos(): + youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=API_KEY) + + # Call the API to get the top 10 trending videos + request = youtube.videos().list( + part="snippet,statistics", + chart="mostPopular", + regionCode="IN", # Change this to your region code + maxResults=10, + ) + response = request.execute() + + # Print the video details + for item in response["items"]: + title = item["snippet"]["title"] + channel = item["snippet"]["channelTitle"] + views = item["statistics"]["viewCount"] + print(f"Title: {title}\nChannel: {channel}\nViews: {views}\n") + + +if __name__ == "__main__": + get_trending_videos() diff --git a/Triplets with zero sum/find_Triplets_with_zero_sum.py b/Triplets with zero sum/find_Triplets_with_zero_sum.py index 2a2d2b7688d..f88c6538a15 100644 --- a/Triplets with zero sum/find_Triplets_with_zero_sum.py +++ b/Triplets with zero sum/find_Triplets_with_zero_sum.py @@ -1,12 +1,12 @@ """ - Author : Mohit Kumar - - Python program to find triplets in a given array whose sum is zero +Author : Mohit Kumar + +Python program to find triplets in a given array whose sum is zero """ + # function to print triplets with 0 sum def find_Triplets_with_zero_sum(arr, num): - """find triplets in a given array whose sum is zero Parameteres : @@ -24,7 +24,6 @@ def find_Triplets_with_zero_sum(arr, num): # Run a loop until l is less than r, if the sum of array[l], array[r] is equal to zero then print the triplet and break the loop for index in range(0, num - 1): - # initialize left and right left = index + 1 right = num - 1 @@ -32,7 +31,6 @@ def find_Triplets_with_zero_sum(arr, num): curr = arr[index] # current element while left < right: - temp = curr + arr[left] + arr[right] if temp == 0: @@ -59,7 +57,6 @@ def find_Triplets_with_zero_sum(arr, num): # DRIVER CODE STARTS if __name__ == "__main__": - n = int(input("Enter size of array\n")) print("Enter elements of array\n") diff --git a/Turtle_Star.py b/Turtle_Star.py index 49ce64cb949..d9b1a3b06ef 100644 --- a/Turtle_Star.py +++ b/Turtle_Star.py @@ -1,29 +1,29 @@ import turtle - + board = turtle.Turtle() - + # first triangle for star -board.forward(100) # draw base - +board.forward(100) # draw base + board.left(120) board.forward(100) - + board.left(120) board.forward(100) - + board.penup() board.right(150) board.forward(50) - + # second triangle for star board.pendown() board.right(90) board.forward(100) - + board.right(120) board.forward(100) - + board.right(120) board.forward(100) - + turtle.done() diff --git a/Tweet Pre-Processing.py b/Tweet Pre-Processing.py index 43d3e6c13b3..458e04c4e41 100644 --- a/Tweet Pre-Processing.py +++ b/Tweet Pre-Processing.py @@ -4,9 +4,7 @@ # In[10]: -import numpy as np from nltk.corpus import twitter_samples -import matplotlib.pyplot as plt import random diff --git a/Untitled.ipynb b/Untitled.ipynb index 4d36111e1e4..ca4617b5220 100644 --- a/Untitled.ipynb +++ b/Untitled.ipynb @@ -11,10 +11,10 @@ "import numpy as np\n", "\n", "## Preparation for writing the ouput video\n", - "fourcc = cv2.VideoWriter_fourcc(*'XVID')\n", - "out = cv2.VideoWriter('output.avi',fourcc,20.0, (640,480))\n", + "fourcc = cv2.VideoWriter_fourcc(*\"XVID\")\n", + "out = cv2.VideoWriter(\"output.avi\", fourcc, 20.0, (640, 480))\n", "\n", - "##reading from the webcam \n", + "##reading from the webcam\n", "cap = cv2.VideoCapture(0)\n", "\n", "## Allow the system to sleep for 3 seconds before the webcam starts\n", @@ -24,31 +24,31 @@ "\n", "## Capture the background in range of 60\n", "for i in range(60):\n", - " ret,background = cap.read()\n", - "background = np.flip(background,axis=1)\n", + " ret, background = cap.read()\n", + "background = np.flip(background, axis=1)\n", "\n", "\n", "## Read every frame from the webcam, until the camera is open\n", - "while(cap.isOpened()):\n", + "while cap.isOpened():\n", " ret, img = cap.read()\n", " if not ret:\n", " break\n", - " count+=1\n", - " img = np.flip(img,axis=1)\n", - " \n", + " count += 1\n", + " img = np.flip(img, axis=1)\n", + "\n", " ## Convert the color space from BGR to HSV\n", " hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)\n", "\n", " ## Generat masks to detect red color\n", - " lower_red = np.array([0,120,50])\n", - " upper_red = np.array([10,255,255])\n", - " mask1 = cv2.inRange(hsv,lower_red,upper_red)\n", + " lower_red = np.array([0, 120, 50])\n", + " upper_red = np.array([10, 255, 255])\n", + " mask1 = cv2.inRange(hsv, lower_red, upper_red)\n", "\n", - " lower_red = np.array([170,120,70])\n", - " upper_red = np.array([180,255,255])\n", - " mask2 = cv2.inRange(hsv,lower_red,upper_red)\n", + " lower_red = np.array([170, 120, 70])\n", + " upper_red = np.array([180, 255, 255])\n", + " mask2 = cv2.inRange(hsv, lower_red, upper_red)\n", "\n", - " mask1 = mask1+mask2" + " mask1 = mask1 + mask2" ] } ], diff --git a/Voice Command Calculator.py b/Voice Command Calculator.py index ccc6e6c6496..8c220092a38 100644 --- a/Voice Command Calculator.py +++ b/Voice Command Calculator.py @@ -1,32 +1,37 @@ import operator import speech_recognition as s_r -print("Your speech_recognition version is: "+s_r.__version__) + +print("Your speech_recognition version is: " + s_r.__version__) r = s_r.Recognizer() my_mic_device = s_r.Microphone(device_index=1) with my_mic_device as source: print("Say what you want to calculate, example: 3 plus 3") r.adjust_for_ambient_noise(source) audio = r.listen(source) -my_string=r.recognize_google(audio) +my_string = r.recognize_google(audio) print(my_string) + + def get_operator_fn(op): return { - '+' : operator.add, - '-' : operator.sub, - 'x' : operator.mul, - 'divided' :operator.__truediv__, - 'divided by' :operator.__truediv__, - 'divide' :operator.__truediv__, - 'Divided' :operator.__truediv__, - 'Divided by' :operator.__truediv__, - 'Divide' :operator.__truediv__, - 'Mod' : operator.mod, - 'mod' : operator.mod, - '^' : operator.xor, - }[op] + "+": operator.add, + "-": operator.sub, + "x": operator.mul, + "divided": operator.__truediv__, + "divided by": operator.__truediv__, + "divide": operator.__truediv__, + "Divided": operator.__truediv__, + "Divided by": operator.__truediv__, + "Divide": operator.__truediv__, + "Mod": operator.mod, + "mod": operator.mod, + "^": operator.xor, + }[op] + def eval_binary_expr(op1, oper, op2): - op1,op2 = int(op1), int(op2) + op1, op2 = int(op1), int(op2) return get_operator_fn(oper)(op1, op2) + print(eval_binary_expr(*(my_string.split()))) diff --git a/VoiceAssistant/Project_Basic_struct/TextTospeech.py b/VoiceAssistant/Project_Basic_struct/TextTospeech.py index 5c23af072e6..2bcc7f29b39 100644 --- a/VoiceAssistant/Project_Basic_struct/TextTospeech.py +++ b/VoiceAssistant/Project_Basic_struct/TextTospeech.py @@ -1,15 +1,10 @@ -from gtts import gTTS -from playsound import playsound import win32com -from win32com import client -import os + def tts(): - audio = 'speech.mp3' - language = 'en' + audio = "speech.mp3" + language = "en" sentence = input("Enter the text to be spoken :- ") - + speaker = win32com.client.Dispatch("SAPI.SpVoice") sp = speaker.Speak(sentence) - - diff --git a/VoiceAssistant/Project_Basic_struct/VoiceAssistant_main.py b/VoiceAssistant/Project_Basic_struct/VoiceAssistant_main.py index 1c2baf70897..3aa291c82b4 100644 --- a/VoiceAssistant/Project_Basic_struct/VoiceAssistant_main.py +++ b/VoiceAssistant/Project_Basic_struct/VoiceAssistant_main.py @@ -11,10 +11,9 @@ def main(): start = 0 end = 0 if start == 0: - print("\nSay \"Hello Python\" to activate the Voice Assistant!") + print('\nSay "Hello Python" to activate the Voice Assistant!') start += 1 while True: - q = short_hear().lower() if "close" in q: greet("end") @@ -23,7 +22,6 @@ def main(): greet("start") print_menu() while True: - query = hear().lower() if "close" in query: greet("end") @@ -32,34 +30,51 @@ def main(): elif "text to speech" in query: tts() time.sleep(4) - - elif "search on google" in query or "search google" in query or "google" in query: + elif ( + "search on google" in query + or "search google" in query + or "google" in query + ): google_search() time.sleep(10) - - elif "search on wikipedia" in query or "search wikipedia" in query or "wikipedia" in query: + + elif ( + "search on wikipedia" in query + or "search wikipedia" in query + or "wikipedia" in query + ): wiki_search() time.sleep(10) - + elif "word" in query: ms_word() time.sleep(5) - + elif "book" in query: pdf_read() time.sleep(10) - + elif "speech to text" in query: big_text() time.sleep(5) - + else: print("I could'nt understand what you just said!") speak("I could'nt understand what you just said!") - - print("\nDo you want to continue? if yes then say " + Fore.YELLOW + "\"YES\"" + Fore.WHITE + " else say " + Fore.YELLOW + "\"CLOSE PYTHON\"") - speak("Do you want to continue? if yes then say YES else say CLOSE PYTHON") + + print( + "\nDo you want to continue? if yes then say " + + Fore.YELLOW + + '"YES"' + + Fore.WHITE + + " else say " + + Fore.YELLOW + + '"CLOSE PYTHON"' + ) + speak( + "Do you want to continue? if yes then say YES else say CLOSE PYTHON" + ) qry = hear().lower() if "yes" in qry: print_menu() @@ -75,4 +90,5 @@ def main(): else: continue + main() diff --git a/VoiceAssistant/Project_Basic_struct/dictator.py b/VoiceAssistant/Project_Basic_struct/dictator.py index f5cb71fb014..5b2d85ed918 100644 --- a/VoiceAssistant/Project_Basic_struct/dictator.py +++ b/VoiceAssistant/Project_Basic_struct/dictator.py @@ -2,19 +2,26 @@ # from speakListen import long_hear from speakListen import * -from colorama import Fore, Back, Style +from colorama import Fore + def big_text(): - print("By default, I will record your voice for 60 seconds.\nDo you want to change this default timing?") - speak("By default, I will record your voice for 60 seconds.\nDo you want to change this default timing?") + print( + "By default, I will record your voice for 60 seconds.\nDo you want to change this default timing?" + ) + speak( + "By default, I will record your voice for 60 seconds.\nDo you want to change this default timing?" + ) print(Fore.YELLOW + "Yes or No") query = hear().lower() duration_time = 0 - if "yes" in query or "es" in query or "ye" in query or "s" in query: - - print("Please enter the time(in seconds) for which I shall record your speech - ", end = '') + if "yes" in query or "es" in query or "ye" in query or "s" in query: + print( + "Please enter the time(in seconds) for which I shall record your speech - ", + end="", + ) duration_time = int(input().strip()) print("\n") @@ -24,6 +31,7 @@ def big_text(): text = long_hear(duration_time) print("\n" + Fore.LIGHTCYAN_EX + text) + def colours(): text = "Colour" print(Fore.BLACK + text) @@ -43,5 +51,6 @@ def colours(): print(Fore.LIGHTCYAN_EX + text) print(Fore.LIGHTWHITE_EX + text) -#big_text() -#colours() \ No newline at end of file + +# big_text() +# colours() diff --git a/VoiceAssistant/Project_Basic_struct/menu.py b/VoiceAssistant/Project_Basic_struct/menu.py index 8512271c0d2..4261a3cf025 100644 --- a/VoiceAssistant/Project_Basic_struct/menu.py +++ b/VoiceAssistant/Project_Basic_struct/menu.py @@ -1,13 +1,12 @@ -from rich.console import Console # pip3 install Rich +from rich.console import Console # pip3 install Rich from rich.table import Table from speakListen import * def print_menu(): - """Display a table with list of tasks and their associated commands. - """ + """Display a table with list of tasks and their associated commands.""" speak("I can do the following") - table = Table(title="\nI can do the following :- ", show_lines = True) + table = Table(title="\nI can do the following :- ", show_lines=True) table.add_column("Sr. No.", style="cyan", no_wrap=True) table.add_column("Task", style="yellow") @@ -24,4 +23,5 @@ def print_menu(): console = Console() console.print(table) -#print_menu() \ No newline at end of file + +# print_menu() diff --git a/VoiceAssistant/Project_Basic_struct/speakListen.py b/VoiceAssistant/Project_Basic_struct/speakListen.py index e16db721abb..a28f67c2218 100644 --- a/VoiceAssistant/Project_Basic_struct/speakListen.py +++ b/VoiceAssistant/Project_Basic_struct/speakListen.py @@ -1,15 +1,14 @@ import time -from colorama import Fore, Back, Style +from colorama import Fore import speech_recognition as sr -import os import pyttsx3 import datetime from rich.progress import Progress -python = pyttsx3.init("sapi5") # name of the engine is set as Python +python = pyttsx3.init("sapi5") # name of the engine is set as Python voices = python.getProperty("voices") -#print(voices) +# print(voices) python.setProperty("voice", voices[1].id) python.setProperty("rate", 140) @@ -19,151 +18,165 @@ def speak(text): Args: text ([str]): [It is the speech to be spoken] - """ + """ python.say(text) python.runAndWait() + def greet(g): """Uses the datetime library to generate current time and then greets accordingly. - + Args: g (str): To decide whether to say hello or good bye """ if g == "start" or g == "s": h = datetime.datetime.now().hour - text = '' + text = "" if h > 12 and h < 17: text = "Hello ! Good Afternoon " elif h < 12 and h > 0: text = "Hello! Good Morning " - elif h >= 17 : + elif h >= 17: text = "Hello! Good Evening " text += " I am Python, How may i help you ?" - speak(text) - + speak(text) + elif g == "quit" or g == "end" or g == "over" or g == "e": - text = 'Thank you!. Good Bye ! ' + text = "Thank you!. Good Bye ! " speak(text) + def hear(): """[It will process the speech of user using Google_Speech_Recognizer(recognize_google)] Returns: [str]: [Speech of user as a string in English(en - IN)] - """ + """ r = sr.Recognizer() """Reconizer is a class which has lot of functions related to Speech i/p and o/p. """ - r.pause_threshold = 1 # a pause of more than 1 second will stop the microphone temporarily - r.energy_threshold = 300 # python by default sets it to 300. It is the minimum input energy to be considered. - r.dynamic_energy_threshold = True # pyhton now can dynamically change the threshold energy + r.pause_threshold = ( + 1 # a pause of more than 1 second will stop the microphone temporarily + ) + r.energy_threshold = 300 # python by default sets it to 300. It is the minimum input energy to be considered. + r.dynamic_energy_threshold = ( + True # pyhton now can dynamically change the threshold energy + ) with sr.Microphone() as source: # read the audio data from the default microphone print(Fore.RED + "\nListening...") - #time.sleep(0.5) + # time.sleep(0.5) - speech = r.record(source, duration = 9) # option - #speech = r.listen(source) + speech = r.record(source, duration=9) # option + # speech = r.listen(source) # convert speech to text try: - #print("Recognizing...") + # print("Recognizing...") recognizing() speech = r.recognize_google(speech) print(speech + "\n") - + except Exception as exception: print(exception) return "None" return speech + def recognizing(): - """Uses the Rich library to print a simulates version of "recognizing" by printing a loading bar. - """ + """Uses the Rich library to print a simulates version of "recognizing" by printing a loading bar.""" with Progress() as pr: - rec = pr.add_task("[red]Recognizing...", total = 100) + rec = pr.add_task("[red]Recognizing...", total=100) while not pr.finished: - pr.update(rec, advance = 1.0) + pr.update(rec, advance=1.0) time.sleep(0.01) -def long_hear(duration_time = 60): + +def long_hear(duration_time=60): """[It will process the speech of user using Google_Speech_Recognizer(recognize_google)] the difference between the hear() and long_hear() is that - the hear() - records users voice for 9 seconds long_hear() - will record user's voice for the time specified by user. By default, it records for 60 seconds. Returns: [str]: [Speech of user as a string in English(en - IN)] - """ + """ r = sr.Recognizer() """Reconizer is a class which has lot of functions related to Speech i/p and o/p. """ - r.pause_threshold = 1 # a pause of more than 1 second will stop the microphone temporarily - r.energy_threshold = 300 # python by default sets it to 300. It is the minimum input energy to be considered. - r.dynamic_energy_threshold = True # pyhton now can dynamically change the threshold energy + r.pause_threshold = ( + 1 # a pause of more than 1 second will stop the microphone temporarily + ) + r.energy_threshold = 300 # python by default sets it to 300. It is the minimum input energy to be considered. + r.dynamic_energy_threshold = ( + True # pyhton now can dynamically change the threshold energy + ) with sr.Microphone() as source: # read the audio data from the default microphone print(Fore.RED + "\nListening...") - #time.sleep(0.5) + # time.sleep(0.5) - speech = r.record(source, duration = duration_time) # option - #speech = r.listen(source) + speech = r.record(source, duration=duration_time) # option + # speech = r.listen(source) # convert speech to text try: - print(Fore.RED +"Recognizing...") - #recognizing() + print(Fore.RED + "Recognizing...") + # recognizing() speech = r.recognize_google(speech) - #print(speech + "\n") - + # print(speech + "\n") + except Exception as exception: - print(exception) + print(exception) return "None" return speech -def short_hear(duration_time = 5): + +def short_hear(duration_time=5): """[It will process the speech of user using Google_Speech_Recognizer(recognize_google)] the difference between the hear() and long_hear() is that - the hear() - records users voice for 9 seconds long_hear - will record user's voice for the time specified by user. By default, it records for 60 seconds. Returns: [str]: [Speech of user as a string in English(en - IN)] - """ + """ r = sr.Recognizer() """Reconizer is a class which has lot of functions related to Speech i/p and o/p. """ - r.pause_threshold = 1 # a pause of more than 1 second will stop the microphone temporarily - r.energy_threshold = 300 # python by default sets it to 300. It is the minimum input energy to be considered. - r.dynamic_energy_threshold = True # pyhton now can dynamically change the threshold energy + r.pause_threshold = ( + 1 # a pause of more than 1 second will stop the microphone temporarily + ) + r.energy_threshold = 300 # python by default sets it to 300. It is the minimum input energy to be considered. + r.dynamic_energy_threshold = ( + True # pyhton now can dynamically change the threshold energy + ) with sr.Microphone() as source: # read the audio data from the default microphone print(Fore.RED + "\nListening...") - #time.sleep(0.5) + # time.sleep(0.5) - speech = r.record(source, duration = duration_time) # option - #speech = r.listen(source) + speech = r.record(source, duration=duration_time) # option + # speech = r.listen(source) # convert speech to text try: - print(Fore.RED +"Recognizing...") - #recognizing() + print(Fore.RED + "Recognizing...") + # recognizing() speech = r.recognize_google(speech) - #print(speech + "\n") - + # print(speech + "\n") + except Exception as exception: - print(exception) + print(exception) return "None" return speech - -if __name__ == '__main__': +if __name__ == "__main__": # print("Enter your name") # name = hear() # speak("Hello " + name) # greet("s") # greet("e") pass - #hear() - #recognizing() - + # hear() + # recognizing() diff --git a/VoiceAssistant/Project_Basic_struct/speechtotext.py b/VoiceAssistant/Project_Basic_struct/speechtotext.py index 1b1974c8b79..e73a55eaf32 100644 --- a/VoiceAssistant/Project_Basic_struct/speechtotext.py +++ b/VoiceAssistant/Project_Basic_struct/speechtotext.py @@ -1,6 +1,9 @@ import speech_recognition as sr + # initialize the recognizer r = sr.Recognizer() + + def stt(): with sr.Microphone() as source: # read the audio data from the default microphone @@ -8,4 +11,4 @@ def stt(): print("Recognizing...") # convert speech to text text = r.recognize_google(audio_data) - print(text) \ No newline at end of file + print(text) diff --git a/VoiceAssistant/Project_Basic_struct/textRead.py b/VoiceAssistant/Project_Basic_struct/textRead.py index 030c78501f0..bd0d147121b 100644 --- a/VoiceAssistant/Project_Basic_struct/textRead.py +++ b/VoiceAssistant/Project_Basic_struct/textRead.py @@ -3,167 +3,209 @@ import docx import fitz import time -from rich.console import Console # pip3 install Rich +from rich.console import Console # pip3 install Rich from rich.table import Table from colorama import Fore + def ms_word(): - """[Print and speak out a ms_word docx file as specified in the path] - """ + """[Print and speak out a ms_word docx file as specified in the path]""" # TODO : Take location input from the user try: speak("Enter the document's location - ") location = input("Enter the document's location - ") - - file_loc = doubleslash(location) - + + file_loc = doubleslash(location) + doc = docx.Document(file_loc) fullText = [] for para in doc.paragraphs: fullText.append(para.text) - #print(fullText) - doc_file = '\n'.join(fullText) + # print(fullText) + doc_file = "\n".join(fullText) print(doc_file) speak(doc_file) except Exception as exp: - #print(exp) + # print(exp) print(f"ERROR - {exp}") - print(Fore.YELLOW + "I could'nt locate the file!\nIf you didn't specify the extension of the file, please specify it.") + print( + Fore.YELLOW + + "I could'nt locate the file!\nIf you didn't specify the extension of the file, please specify it." + ) return "None" + def pdf_read(): - """[Print and speak out the pdf on specified path] - """ + """[Print and speak out the pdf on specified path]""" try: speak("Enter the document's location - ") location = input("Enter the document's location - ") - - path = doubleslash(location) + + path = doubleslash(location) pdf = fitz.open(path) - details = pdf.metadata # Stores the meta-data which generally includes Author name and Title of book/document. - total_pages = pdf.pageCount # Stores the total number of pages + details = pdf.metadata # Stores the meta-data which generally includes Author name and Title of book/document. + total_pages = pdf.pageCount # Stores the total number of pages except Exception as exp: print(f"ERROR - {exp}") - print(Fore.YELLOW + "I could'nt locate the file!\nIf you didn't specify the extension of the file, please specify it.") + print( + Fore.YELLOW + + "I could'nt locate the file!\nIf you didn't specify the extension of the file, please specify it." + ) return "None" - try : + try: """ 1. Author 2. Creator 3. Producer - 4. Title """ - - author = details["author"] - #print("Author : ",author) - + 4. Title """ + + author = details["author"] + # print("Author : ",author) + title = details["title"] - #print("Title : ",title) - - #print(details) - #print("Total Pages : ",total_pages) + # print("Title : ",title) + + # print(details) + # print("Total Pages : ",total_pages) book_details(author, title, total_pages) speak(f" Title {title}") speak(f" Author {author}") speak(f" Total Pages {total_pages}") - + # TODO : Deal with the Index toc = pdf.get_toc() - print("Say 1 or \"ONLY PRINT INDEX\" - if you want me to print the book's index.\nSay 2 if you want me to print and make me speak out the book's index.\nSay any key if you don't want to print the index.'") - speak("Say 1 or only print index if you want me to print the book's index.\nSay 2 if you want me to print and make me speak out the book's index.\nSay any key if you don't want to print the index.'") + print( + "Say 1 or \"ONLY PRINT INDEX\" - if you want me to print the book's index.\nSay 2 if you want me to print and make me speak out the book's index.\nSay any key if you don't want to print the index.'" + ) + speak( + "Say 1 or only print index if you want me to print the book's index.\nSay 2 if you want me to print and make me speak out the book's index.\nSay any key if you don't want to print the index.'" + ) q = hear().lower() - if "only print" in q or "1" in q or "one" in q or "vone" in q or 'only' in q or "index only" in q or 'only' in q or "print only" in q: + if ( + "only print" in q + or "1" in q + or "one" in q + or "vone" in q + or "only" in q + or "index only" in q + or "only" in q + or "print only" in q + ): print_index(toc) time.sleep(15) - elif "speak" in q or "2" in q or 'two' in q: + elif "speak" in q or "2" in q or "two" in q: print_n_speak_index(toc) time.sleep(10) elif q == "None": print("I could'nt understand what you just said!") speak("I could'nt understand what you just said!") time.sleep(4) - else: + else: time.sleep(4) pass - """Allow the user to do the following 1. Read/speak a page 2. Read/speak a range of pages 3. Lesson 4. Read/speak a whole book - """ - - #time.sleep(5) - - print("____________________________________________________________________________________________________________") - print("1. Print/speak a single page\n2. Print/speak a range of pages\n3. Print/speak a Lesson\n4. Read/speak a whole book") - speak("1. Print/speak a single page\n2. Print/speak a range of pages\n3. Print/speak a Lesson\n4. Read/speak a whole book") + """ + + # time.sleep(5) + + print( + "____________________________________________________________________________________________________________" + ) + print( + "1. Print/speak a single page\n2. Print/speak a range of pages\n3. Print/speak a Lesson\n4. Read/speak a whole book" + ) + speak( + "1. Print/speak a single page\n2. Print/speak a range of pages\n3. Print/speak a Lesson\n4. Read/speak a whole book" + ) q = hear().lower() - if "single" in q or "one" in q or "vone" in q or "one page" in q or "vone page" in q or "1 page" in q: + if ( + "single" in q + or "one" in q + or "vone" in q + or "one page" in q + or "vone page" in q + or "1 page" in q + ): try: pgno = int(input("Page Number - ")) page = pdf.load_page(pgno - 1) - text = page.get_text('text') + text = page.get_text("text") print("\n\n") - print(text.replace('\t',' ')) - speak(text.replace('\t',' ')) + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) except Exception: - print("Sorry, I could recognize what you entered. Please re-enter the Page Number.") - speak("Sorry, I could recognize what you entered. Please re-enter the Page Number.") + print( + "Sorry, I could recognize what you entered. Please re-enter the Page Number." + ) + speak( + "Sorry, I could recognize what you entered. Please re-enter the Page Number." + ) pgno = input("Page no. - ") page = pdf.load_page(pgno - 1) - text = page.get_text('text') - print(text.replace('\t',' ')) - speak(text.replace('\t',' ')) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) - - elif 'range' in q or "multiple" in q: + elif "range" in q or "multiple" in q: try: start_pg_no = int(input("Starting Page Number - ")) end_pg_no = int(input("End Page Number - ")) for i in range(start_pg_no - 1, end_pg_no): page = pdf.load_page(i) - text = page.get_text('text') - print(text.replace('\t',' ')) - speak(text.replace('\t',' ')) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) except Exception: - print("Sorry, I could recognize what you entered. Please re-enter the Page Number.") - speak("Sorry, I could recognize what you entered. Please re-enter the Page Number.") + print( + "Sorry, I could recognize what you entered. Please re-enter the Page Number." + ) + speak( + "Sorry, I could recognize what you entered. Please re-enter the Page Number." + ) start_pg_no = int(input("Starting Page Number - ")) end_pg_no = int(input("End Page Number - ")) for i in range(start_pg_no - 1, end_pg_no - 1): page = pdf.load_page(i) - text = page.get_text('text') - print(text.replace('\t',' ')) - speak(text.replace('\t',' ')) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) - elif 'lesson' in q: + elif "lesson" in q: try: key = input("Lesson name - ") start_pg_no, end_pg_no = search_in_toc(toc, key, total_pages) if start_pg_no != None and end_pg_no != None: - start_pg_no, end_pg_no = map(int,search_in_toc(toc, key, total_pages)) - + start_pg_no, end_pg_no = map( + int, search_in_toc(toc, key, total_pages) + ) + for i in range(start_pg_no - 1, end_pg_no): page = pdf.load_page(i) - text = page.get_text('text') - print(text.replace('\t',' ')) - speak(text.replace('\t',' ')) - else: + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + else: print("Try Again.") speak("Try Again.") speak("Lesson name") key = input("Lesson name - ") - start_pg_no, end_pg_no = map(int,search_in_toc(toc, key, total_pages)) + start_pg_no, end_pg_no = map( + int, search_in_toc(toc, key, total_pages) + ) if start_pg_no != None and end_pg_no != None: for i in range(start_pg_no - 1, end_pg_no): page = pdf.load_page(i) - text = page.get_text('text') - print(text.replace('\t',' ')) - speak(text.replace('\t',' ')) - + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + except Exception: print("Try Again! Lesson could not be found.") speak("Try Again.Lesson could not be found") @@ -171,23 +213,25 @@ def pdf_read(): key = input("Lesson name - ") start_pg_no, end_pg_no = search_in_toc(toc, key, total_pages) if start_pg_no != None and end_pg_no != None: - start_pg_no, end_pg_no = map(int,search_in_toc(toc, key, total_pages)) - + start_pg_no, end_pg_no = map( + int, search_in_toc(toc, key, total_pages) + ) + for i in range(start_pg_no - 1, end_pg_no): page = pdf.load_page(i) - text = page.get_text('text') - print(text.replace('\t',' ')) - speak(text.replace('\t',' ')) - else: + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) + else: print("Sorry, I cannot find the perticular lesson.") speak("Sorry, I cannot find the perticular lesson.") - elif "whole" in q or 'complete' in q: + elif "whole" in q or "complete" in q: for i in range(total_pages): page = pdf.load_page(i) - text = page.get_text('text') - print(text.replace('\t',' ')) - speak(text.replace('\t',' ')) + text = page.get_text("text") + print(text.replace("\t", " ")) + speak(text.replace("\t", " ")) elif q == "None": print("I could'nt understand what you just said!") @@ -195,13 +239,14 @@ def pdf_read(): else: print("You didn't say a valid command!") time.sleep(5) - except Exception as e: + except Exception as e: print(e) pass pdf.close() + def doubleslash(text): - """Replaces / with // + """Replaces / with // Args: text (str): location @@ -209,7 +254,8 @@ def doubleslash(text): Returns: str: formatted location """ - return text.replace('\\' , '\\\\') + return text.replace("\\", "\\\\") + def print_index(toc): """Prints out the index in proper format with title name and page number @@ -218,14 +264,15 @@ def print_index(toc): toc (nested list): toc[1] - Topic name toc[2] - Page number """ - dash = "-"*(100 - 7) - space = " "*47 + dash = "-" * (100 - 7) + space = " " * 47 print(f"{space}INDEX") print(f"\n\nName : {dash} PageNo.\n\n\n") for topic in toc: - eq_dash = "-"*(100 - len(topic[1])) + eq_dash = "-" * (100 - len(topic[1])) print(f"{topic[1]} {eq_dash} {topic[2]}") - + + def print_n_speak_index(toc): """Along with printing, it speaks out the index too. @@ -233,15 +280,16 @@ def print_n_speak_index(toc): toc (nested list): toc[1] - Topic name toc[2] - Page number """ - dash = "-"*(100 - 7) - space = " "*47 + dash = "-" * (100 - 7) + space = " " * 47 print(f"{space}INDEX") print(f"\n\nName : {dash} PageNo.\n\n\n\n") for topic in toc: - eq_dash = "-"*(100 - len(topic[1])) + eq_dash = "-" * (100 - len(topic[1])) print(f"{topic[1]} {eq_dash} {topic[2]}") speak(f"{topic[1]} {topic[2]}") + def search_in_toc(toc, key, totalpg): """Searches a particular lesson name provided as a parameter in toc and returns its starting and ending page numbers. @@ -268,9 +316,9 @@ def search_in_toc(toc, key, totalpg): if topic[1] == key: return (topic[2], totalpg) elif topic[1].lower() == key: - return (topic[2], totalpg) - return None,None + return None, None + def book_details(author, title, total_pages): """Creates a table of book details like author name, title, and total pages. @@ -280,7 +328,7 @@ def book_details(author, title, total_pages): title (str): title of the book total_pages (int): total pages in the book """ - table = Table(title="\nBook Details :- ", show_lines = True) + table = Table(title="\nBook Details :- ", show_lines=True) table.add_column("Sr. No.", style="magenta", no_wrap=True) table.add_column("Property", style="cyan") @@ -292,7 +340,8 @@ def book_details(author, title, total_pages): console = Console() console.print(table) - -#ms_word() -#pdf_read() -#book_details("abc", "abcde", 12) + + +# ms_word() +# pdf_read() +# book_details("abc", "abcde", 12) diff --git a/VoiceAssistant/Project_Basic_struct/websiteWork.py b/VoiceAssistant/Project_Basic_struct/websiteWork.py index c20a2792791..e00aa89022d 100644 --- a/VoiceAssistant/Project_Basic_struct/websiteWork.py +++ b/VoiceAssistant/Project_Basic_struct/websiteWork.py @@ -1,4 +1,4 @@ -from speakListen import greet, hear +from speakListen import hear from speakListen import speak @@ -11,35 +11,33 @@ def google_search(): - """[Goes to google and searches the website asked by the user] - """ + """[Goes to google and searches the website asked by the user]""" google_search_link = "https://www.google.co.in/search?q=" google_search = "What do you want me to search on Google? " print(google_search) speak(google_search) - + query = hear() if query != "None": - webbrowser.open(google_search_link+query) + webbrowser.open(google_search_link + query) elif query == "None": print("I could'nt understand what you just said!") speak("I could'nt understand what you just said!") + def wiki_search(): - """[Speak out the summary in wikipedia and going to the website according to user's choice.] - """ + """[Speak out the summary in wikipedia and going to the website according to user's choice.]""" wiki_search = "What do you want me to search on Wikipedia? Please tell me the exact sentence or word to Search." wiki_search_link = "https://en.wikipedia.org/wiki/" - + print(wiki_search) speak(wiki_search) query = hear() try: - if query != "None": - results = wikipedia.summary(query, sentences = 2) + results = wikipedia.summary(query, sentences=2) print(results) speak(results) @@ -47,7 +45,16 @@ def wiki_search(): speak("Do you want me to open the Wikipedia page?") q = hear().lower() - if "yes" in q or "okay" in q or "ok" in q or "opun" in q or "opan" in q or "vopen" in q or "es" in q or "s" in q: + if ( + "yes" in q + or "okay" in q + or "ok" in q + or "opun" in q + or "opan" in q + or "vopen" in q + or "es" in q + or "s" in q + ): print(wiki_search_link + query) webbrowser.open(wiki_search_link + query) @@ -55,8 +62,9 @@ def wiki_search(): print("I could'nt understand what you just said!") speak("I could'nt understand what you just said!") - except Exception as e: + except Exception: print("Couldn't find") -#wiki_search() -#google_search() + +# wiki_search() +# google_search() diff --git a/Weather Scrapper/weather.py b/Weather Scrapper/weather.py index 3980d958bd6..788424522ac 100644 --- a/Weather Scrapper/weather.py +++ b/Weather Scrapper/weather.py @@ -1,4 +1,4 @@ -#TODO - refactor & clean code +# TODO - refactor & clean code import csv import time from datetime import datetime @@ -11,22 +11,22 @@ from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By -#TODO - Add input checking +# TODO - Add input checking city = input("City >") state = input("State >") -url = 'https://www.wunderground.com' +url = "https://www.wunderground.com" -#Supresses warnings and specifies the webdriver to run w/o a GUI +# Supresses warnings and specifies the webdriver to run w/o a GUI options = Options() options.headless = True -options.add_argument('log-level=3') +options.add_argument("log-level=3") driver = webdriver.Chrome(options=options) driver.get(url) -#----------------------------------------------------- +# ----------------------------------------------------- # Connected successfully to the site -#Passes the city and state input to the weather sites search box +# Passes the city and state input to the weather sites search box searchBox = driver.find_element(By.XPATH, '//*[@id="wuSearch"]') location = city + " " + state @@ -34,27 +34,40 @@ action = ActionChains(driver) searchBox.send_keys(location) element = WebDriverWait(driver, 10).until( - EC.presence_of_element_located((By.XPATH, '//*[@id="wuForm"]/search-autocomplete/ul/li[2]/a/span[1]')) + EC.presence_of_element_located( + (By.XPATH, '//*[@id="wuForm"]/search-autocomplete/ul/li[2]/a/span[1]') + ) ) searchBox.send_keys(Keys.RETURN) -#----------------------------------------------------- -#Gather weather data -#City - Time - Date - Temperature - Precipitation - Sky - Wind +# ----------------------------------------------------- +# Gather weather data +# City - Time - Date - Temperature - Precipitation - Sky - Wind -#waits till the page loads to begin gathering data +# waits till the page loads to begin gathering data precipitationElem = WebDriverWait(driver, 10).until( - EC.presence_of_element_located((By.XPATH, '//*[@id="inner-content"]/div[3]/div[1]/div/div[3]/div/lib-city-today-forecast/div/div[1]/div/div/div/a[1]')) + EC.presence_of_element_located( + ( + By.XPATH, + '//*[@id="inner-content"]/div[3]/div[1]/div/div[3]/div/lib-city-today-forecast/div/div[1]/div/div/div/a[1]', + ) + ) +) +precipitationElem = driver.find_element( + By.XPATH, + '//*[@id="inner-content"]/div[3]/div[1]/div/div[3]/div/lib-city-today-forecast/div/div[1]/div/div/div/a[1]', ) -precipitationElem = driver.find_element(By.XPATH, '//*[@id="inner-content"]/div[3]/div[1]/div/div[3]/div/lib-city-today-forecast/div/div[1]/div/div/div/a[1]') precip = "Precipitation:" + precipitationElem.text.split()[0] -windAndSkyElem = driver.find_element(By.XPATH, '//*[@id="inner-content"]/div[3]/div[1]/div/div[3]/div/lib-city-today-forecast/div/div[1]/div/div/div/a[2]') +windAndSkyElem = driver.find_element( + By.XPATH, + '//*[@id="inner-content"]/div[3]/div[1]/div/div[3]/div/lib-city-today-forecast/div/div[1]/div/div/div/a[2]', +) description = windAndSkyElem.text.split(". ") sky = description[0] temp = description[1] wind = description[2] -#Format the date and time +# Format the date and time time = datetime.now().strftime("%H:%M") today = date.today() date = today.strftime("%b-%d-%Y") diff --git a/WeatherGUI.py b/WeatherGUI.py index 19b42994b84..62a2fef6bf8 100644 --- a/WeatherGUI.py +++ b/WeatherGUI.py @@ -1,14 +1,10 @@ import tkinter as tk import requests from bs4 import BeautifulSoup - url = "https://weather.com/en-IN/weather/today/l/32355ced66b7ce3ab7ccafb0a4f45f12e7c915bcf8454f712efa57474ba8d6c8" - root = tk.Tk() root.title("Weather") root.config(bg="white") - - def getWeather(): page = requests.get(url) soup = BeautifulSoup(page.content, "html.parser") diff --git a/Web Socket.py b/Web Socket.py index efb44bbbc21..9c3c91beafa 100644 --- a/Web Socket.py +++ b/Web Socket.py @@ -1,13 +1,13 @@ # Program to print a data & it's Metadata of online uploaded file using "socket". import socket -skt_c=socket.socket(socket.AF_INET,socket.SOCK_STREAM) -skt_c.connect(('data.pr4e.org',80)) -link='GET http://data.pr4e.org/intro-short.txt HTTP/1.0\r\n\r\n'.encode() +skt_c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +skt_c.connect(("data.pr4e.org", 80)) +link = "GET http://data.pr4e.org/intro-short.txt HTTP/1.0\r\n\r\n".encode() skt_c.send(link) while True: - data=skt_c.recv(512) - if len(data)<1: - break - print(data.decode()) + data = skt_c.recv(512) + if len(data) < 1: + break + print(data.decode()) skt_c.close() diff --git a/Web_Scraper.py b/Web_Scraper.py index 46692794431..b489b54096d 100644 --- a/Web_Scraper.py +++ b/Web_Scraper.py @@ -4,10 +4,8 @@ Requirements: selenium, BeautifulSoup """ -import requests from bs4 import BeautifulSoup from selenium import webdriver -from selenium.webdriver.common.keys import Keys import time # url of the page we want to scrape diff --git a/Webbrowser/tk-browser.py b/Webbrowser/tk-browser.py index cbbfd01bb3e..fc8b6ddebac 100644 --- a/Webbrowser/tk-browser.py +++ b/Webbrowser/tk-browser.py @@ -3,26 +3,28 @@ # Written by Sina Meysami # -from tkinter import * # pip install tk-tools -import tkinterweb # pip install tkinterweb +from tkinter import * # pip install tk-tools +import tkinterweb # pip install tkinterweb import sys + class Browser(Tk): def __init__(self): - super(Browser,self).__init__() + super(Browser, self).__init__() self.title("Tk Browser") try: browser = tkinterweb.HtmlFrame(self) browser.load_website("https://google.com") - browser.pack(fill="both",expand=True) + browser.pack(fill="both", expand=True) except Exception: sys.exit() - - + + def main(): browser = Browser() browser.mainloop() - + + if __name__ == "__main__": # Webbrowser v1.0 main() diff --git a/Wikipdedia/flask_rendering.py b/Wikipdedia/flask_rendering.py index 05c6d7494bf..4dc0432dc22 100644 --- a/Wikipdedia/flask_rendering.py +++ b/Wikipdedia/flask_rendering.py @@ -1,13 +1,13 @@ from flask import Flask, render_template, request import practice_beautifulsoap as data -app = Flask(__name__, template_folder='template') +app = Flask(__name__, template_folder="template") -@app.route('/', methods=["GET", "POST"]) +@app.route("/", methods=["GET", "POST"]) def index(): languages = data.lang() - return render_template('index.html', languages=languages) + return render_template("index.html", languages=languages) @app.route("/display", methods=["POST"]) @@ -19,8 +19,13 @@ def output(): soup_data = data.data(entered_topic, selected_language) soup_image = data.get_image_urls(entered_topic) - return render_template('output.html', heading=entered_topic.upper(), data=soup_data, - url=soup_image, language=selected_language) + return render_template( + "output.html", + heading=entered_topic.upper(), + data=soup_data, + url=soup_image, + language=selected_language, + ) if __name__ == "__main__": diff --git a/Wikipdedia/main.py b/Wikipdedia/main.py index 5596b44786f..c937c7cff1b 100644 --- a/Wikipdedia/main.py +++ b/Wikipdedia/main.py @@ -6,11 +6,11 @@ def print_hi(name): # Use a breakpoint in the code line below to debug your script. - print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint. + print(f"Hi, {name}") # Press Ctrl+F8 to toggle the breakpoint. # Press the green button in the gutter to run the script. -if __name__ == '__main__': - print_hi('PyCharm') +if __name__ == "__main__": + print_hi("PyCharm") # See PyCharm help at https://www.jetbrains.com/help/pycharm/ diff --git a/Wikipdedia/practice_beautifulsoap.py b/Wikipdedia/practice_beautifulsoap.py index 00beb87fc44..01938c24139 100644 --- a/Wikipdedia/practice_beautifulsoap.py +++ b/Wikipdedia/practice_beautifulsoap.py @@ -8,11 +8,11 @@ def lang(): try: response = requests.get("https://www.wikipedia.org/") response.raise_for_status() - soup = BeautifulSoup(response.content, 'html.parser') + soup = BeautifulSoup(response.content, "html.parser") - for option in soup.find_all('option'): + for option in soup.find_all("option"): language = option.text - symbol = option['lang'] + symbol = option["lang"] language_symbols[language] = symbol return list(language_symbols.keys()) @@ -29,17 +29,19 @@ def data(selected_topic, selected_language): url = f"https://{symbol}.wikipedia.org/wiki/{selected_topic}" data_response = requests.get(url) data_response.raise_for_status() - data_soup = BeautifulSoup(data_response.content, 'html.parser') + data_soup = BeautifulSoup(data_response.content, "html.parser") - main_content = data_soup.find('div', {'id': 'mw-content-text'}) + main_content = data_soup.find("div", {"id": "mw-content-text"}) filtered_content = "" if main_content: for element in main_content.descendants: - if element.name in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']: - filtered_content += "\n" + element.get_text(strip=True).upper() + "\n" + if element.name in ["h1", "h2", "h3", "h4", "h5", "h6"]: + filtered_content += ( + "\n" + element.get_text(strip=True).upper() + "\n" + ) - elif element.name == 'p': + elif element.name == "p": filtered_content += element.get_text(strip=True) + "\n" return filtered_content @@ -54,11 +56,11 @@ def get_image_urls(query): search_url = f"https://www.google.com/search?q={query}&tbm=isch" image_response = requests.get(search_url) image_response.raise_for_status() - image_soup = BeautifulSoup(image_response.content, 'html.parser') + image_soup = BeautifulSoup(image_response.content, "html.parser") image_urls = [] - for img in image_soup.find_all('img'): - image_url = img.get('src') + for img in image_soup.find_all("img"): + image_url = img.get("src") if image_url and image_url.startswith("http"): image_urls.append(image_url) diff --git a/WikipediaModule.py b/WikipediaModule.py index dec5e2a5c0b..ca28501fa41 100644 --- a/WikipediaModule.py +++ b/WikipediaModule.py @@ -3,6 +3,7 @@ @author: Albert """ + from __future__ import print_function import wikipedia as wk diff --git a/Word_Dictionary/dictionary.py b/Word_Dictionary/dictionary.py new file mode 100644 index 00000000000..30028791152 --- /dev/null +++ b/Word_Dictionary/dictionary.py @@ -0,0 +1,59 @@ +from typing import Dict, List + + +class Dictionary: + def __init__(self): + self.node = {} + + def add_word(self, word: str) -> None: + node = self.node + for ltr in word: + if ltr not in node: + node[ltr] = {} + node = node[ltr] + node["is_word"] = True + + def word_exists(self, word: str) -> bool: + node = self.node + for ltr in word: + if ltr not in node: + return False + node = node[ltr] + return "is_word" in node + + def list_words_from_node(self, node: Dict, spelling: str) -> None: + if "is_word" in node: + self.words_list.append(spelling) + return + for ltr in node: + self.list_words_from_node(node[ltr], spelling + ltr) + + def print_all_words_in_dictionary(self) -> List[str]: + node = self.node + self.words_list = [] + self.list_words_from_node(node, "") + return self.words_list + + def suggest_words_starting_with(self, prefix: str) -> List[str]: + node = self.node + for ltr in prefix: + if ltr not in node: + return False + node = node[ltr] + self.words_list = [] + self.list_words_from_node(node, prefix) + return self.words_list + + +# Your Dictionary object will be instantiated and called as such: +obj = Dictionary() +obj.add_word("word") +obj.add_word("woke") +obj.add_word("happy") + +param_2 = obj.word_exists("word") +param_3 = obj.suggest_words_starting_with("wo") + +print(param_2) +print(param_3) +print(obj.print_all_words_in_dictionary()) diff --git a/Wordle/wordle.py b/Wordle/wordle.py index ffed27a1838..bd903796e90 100644 --- a/Wordle/wordle.py +++ b/Wordle/wordle.py @@ -26,9 +26,11 @@ import random # Load 5 letter word dictionary -with open("5 letter word dictionary.txt", 'r') as dictionary: +with open("5 letter word dictionary.txt", "r") as dictionary: # Read content of dictionary - dictionary = dictionary.read().split('\n') # This returns a list of all the words in the dictionary + dictionary = dictionary.read().split( + "\n" + ) # This returns a list of all the words in the dictionary # Choose a random word from the dictionary word = random.choice(dictionary) @@ -63,7 +65,7 @@ continue # Check if the word given by the user is in the dictionary - if not user_inp in dictionary: + if user_inp not in dictionary: print("Your word is not in the dictionary") continue @@ -95,7 +97,6 @@ letter += 1 continue - answer_given = False do_not_add = False # Check if letter is in word @@ -105,7 +106,10 @@ if user_inp[letter] == i: return_answer += "G" else: - if not user_inp[word.index(user_inp[letter])] == word[word.index(user_inp[letter])]: + if ( + not user_inp[word.index(user_inp[letter])] + == word[word.index(user_inp[letter])] + ): return_answer += "Y" else: answer_given = False @@ -117,7 +121,7 @@ # Append checked letter to the list letters_checked if not do_not_add: - letters_checked.append(user_inp[letter]) + letters_checked.append(user_inp[letter]) letter += 1 diff --git a/XORcipher/XOR_cipher.py b/XORcipher/XOR_cipher.py index 4d6bdb2190a..c12dfdad2b0 100644 --- a/XORcipher/XOR_cipher.py +++ b/XORcipher/XOR_cipher.py @@ -1,20 +1,20 @@ """ - author: Christian Bender - date: 21.12.2017 - class: XORCipher - - This class implements the XOR-cipher algorithm and provides - some useful methods for encrypting and decrypting strings and - files. - - Overview about methods - - - encrypt : list of char - - decrypt : list of char - - encrypt_string : str - - decrypt_string : str - - encrypt_file : boolean - - decrypt_file : boolean +author: Christian Bender +date: 21.12.2017 +class: XORCipher + +This class implements the XOR-cipher algorithm and provides +some useful methods for encrypting and decrypting strings and +files. + +Overview about methods + +- encrypt : list of char +- decrypt : list of char +- encrypt_string : str +- decrypt_string : str +- encrypt_file : boolean +- decrypt_file : boolean """ diff --git a/Youtube Downloader With GUI/main.py b/Youtube Downloader With GUI/main.py index 21d5c534ad5..b21e4495a99 100644 --- a/Youtube Downloader With GUI/main.py +++ b/Youtube Downloader With GUI/main.py @@ -12,6 +12,8 @@ q = input("") if q == "shutdown": os.system("shutdown -s") + + # function progress to keep check of progress of function. def progress(stream=None, chunk=None, remaining=None): file_downloaded = file_size - remaining diff --git a/add_two_number.py b/add_two_number.py new file mode 100644 index 00000000000..f83491cc2fd --- /dev/null +++ b/add_two_number.py @@ -0,0 +1,16 @@ +user_input = (input("type type 'start' to run program:")).lower() + +if user_input == "start": + is_game_running = True +else: + is_game_running = False + + +while is_game_running: + num1 = int(input("enter number 1:")) + num2 = int(input("enter number 2:")) + num3 = num1 + num2 + print(f"sum of {num1} and {num2} is {num3}") + user_input = (input("if you want to discontinue type 'stop':")).lower() + if user_input == "stop": + is_game_running = False diff --git a/add_two_nums.py b/add_two_nums.py index f68631f2ea1..fde5ae987e9 100644 --- a/add_two_nums.py +++ b/add_two_nums.py @@ -1,9 +1,8 @@ __author__ = "Nitkarsh Chourasia" __version__ = "1.0" -def addition( - num1: typing.Union[int, float], - num2: typing.Union[int, float] -) -> str: + + +def addition(num1: typing.Union[int, float], num2: typing.Union[int, float]) -> str: """A function to add two given numbers.""" # Checking if the given parameters are numerical or not. @@ -17,7 +16,7 @@ def addition( # returning the result. return f"The sum of {num1} and {num2} is: {sum_result}" -) + print(addition(5, 10)) # This will use the provided parameters print(addition(2, 2)) diff --git a/advanced_calculator.py b/advanced_calculator.py index 82ff80d8970..c7021f6a608 100644 --- a/advanced_calculator.py +++ b/advanced_calculator.py @@ -10,16 +10,10 @@ # How can I market gtts? Like showing used google's api? This is how can I market it? # Project description? What will be the project description? -from numbers import Number -from sys import exit -import colorama as color -import inquirer from gtts import gTTS from pygame import mixer, time from io import BytesIO from pprint import pprint -import art -import date # Find the best of best extensions for the auto generation of the documentation parts. diff --git a/agecalculator.py b/agecalculator.py index 094aa88ca46..86813e30f9f 100644 --- a/agecalculator.py +++ b/agecalculator.py @@ -4,52 +4,51 @@ from _datetime import * win = tk.Tk() -win.title('Age Calculate') -win.geometry('310x400') -# win.iconbitmap('pic.png') this is use extention ico then show pic +win.title("Age Calculate") +win.geometry("310x400") +# win.iconbitmap('pic.png') this is use extention ico then show pic ############################################ Frame ############################################ pic = tk.PhotoImage(file=r"E:\Python Practice\Age_calculate\pic.png") -win.tk.call('wm','iconphoto',win._w,pic) +win.tk.call("wm", "iconphoto", win._w, pic) -canvas=tk.Canvas(win,width=310,height=190) +canvas = tk.Canvas(win, width=310, height=190) canvas.grid() image = tk.PhotoImage(file=r"E:\Python Practice\Age_calculate\pic.png") -canvas.create_image(0,0,anchor='nw',image=image) +canvas.create_image(0, 0, anchor="nw", image=image) frame = ttk.Frame(win) -frame.place(x=40,y=220) - +frame.place(x=40, y=220) ############################################ Label on Frame ############################################ -name = ttk.Label(frame,text = 'Name : ',font = ('',12,'bold')) -name.grid(row=0,column=0,sticky = tk.W) +name = ttk.Label(frame, text="Name : ", font=("", 12, "bold")) +name.grid(row=0, column=0, sticky=tk.W) -year = ttk.Label(frame,text = 'Year : ',font = ('',12,'bold')) -year.grid(row=1,column=0,sticky = tk.W) +year = ttk.Label(frame, text="Year : ", font=("", 12, "bold")) +year.grid(row=1, column=0, sticky=tk.W) -month = ttk.Label(frame,text = 'Month : ',font = ('',12,'bold')) -month.grid(row=2,column=0,sticky = tk.W) +month = ttk.Label(frame, text="Month : ", font=("", 12, "bold")) +month.grid(row=2, column=0, sticky=tk.W) -date = ttk.Label(frame,text = 'Date : ',font = ('',12,'bold')) -date.grid(row=3,column=0,sticky = tk.W) +date = ttk.Label(frame, text="Date : ", font=("", 12, "bold")) +date.grid(row=3, column=0, sticky=tk.W) ############################################ Entry Box ############################################ -name_entry = ttk.Entry(frame,width=25) -name_entry.grid(row=0,column=1) +name_entry = ttk.Entry(frame, width=25) +name_entry.grid(row=0, column=1) name_entry.focus() -year_entry = ttk.Entry(frame,width=25) -year_entry.grid(row=1,column=1,pady=5) +year_entry = ttk.Entry(frame, width=25) +year_entry.grid(row=1, column=1, pady=5) -month_entry = ttk.Entry(frame,width=25) -month_entry.grid(row=2,column=1) +month_entry = ttk.Entry(frame, width=25) +month_entry.grid(row=2, column=1) -date_entry = ttk.Entry(frame,width=25) -date_entry.grid(row=3,column=1,pady=5) +date_entry = ttk.Entry(frame, width=25) +date_entry.grid(row=3, column=1, pady=5) def age_cal(): @@ -57,13 +56,12 @@ def age_cal(): year_entry.get() month_entry.get() date_entry.get() - cal = datetime.today()-(int(year_entry)) + cal = datetime.today() - (int(year_entry)) print(cal) -btn = ttk.Button(frame,text='Age calculate',command=age_cal) -btn.grid(row=4,column=1) - +btn = ttk.Button(frame, text="Age calculate", command=age_cal) +btn.grid(row=4, column=1) win.mainloop() diff --git a/armstrongnumber.py b/armstrongnumber.py index 2e714fa9db4..f4def08d440 100644 --- a/armstrongnumber.py +++ b/armstrongnumber.py @@ -10,7 +10,7 @@ temp = num while temp > 0: digit = temp % 10 - sum += digit ** 3 + sum += digit**3 temp //= 10 # display the result diff --git a/async_downloader/requirements.txt b/async_downloader/requirements.txt index d395d9cf8f0..4a3a6b978bc 100644 --- a/async_downloader/requirements.txt +++ b/async_downloader/requirements.txt @@ -1 +1 @@ -aiohttp==3.9.5 +aiohttp==3.13.2 diff --git a/automail.py b/automail.py index 84b67424408..c7a3f7ed236 100644 --- a/automail.py +++ b/automail.py @@ -1,25 +1,29 @@ -#find documentation for ezgmail module at https://pypi.org/project/EZGmail/ -#simple simon says module that interacts with google API to read the subject line of an email and respond to "Simon says:" -#DO NOT FORGET TO ADD CREDENTIALS.JSON AND TOKEN.JSON TO .GITIGNORE!!! +# find documentation for ezgmail module at https://pypi.org/project/EZGmail/ +# simple simon says module that interacts with google API to read the subject line of an email and respond to "Simon says:" +# DO NOT FORGET TO ADD CREDENTIALS.JSON AND TOKEN.JSON TO .GITIGNORE!!! -import ezgmail, re, time +import ezgmail +import re +import time check = True while check: recThreads = ezgmail.recent() - findEmail = re.compile(r'<(.*)@(.*)>') + findEmail = re.compile(r"<(.*)@(.*)>") i = 0 for msg in recThreads: - subEval = recThreads[i].messages[0].subject.split(' ') + subEval = recThreads[i].messages[0].subject.split(" ") sender = recThreads[i].messages[0].sender - if subEval[0] == 'Simon' and subEval[1] == 'says:': - subEval.remove('Simon') - subEval.remove('says:') - replyAddress = findEmail.search(sender).group(0).replace('<','').replace('>','') - replyContent = 'I am now doing ' + ' '.join(subEval) + if subEval[0] == "Simon" and subEval[1] == "says:": + subEval.remove("Simon") + subEval.remove("says:") + replyAddress = ( + findEmail.search(sender).group(0).replace("<", "").replace(">", "") + ) + replyContent = "I am now doing " + " ".join(subEval) ezgmail.send(replyAddress, replyContent, replyContent) ezgmail._trash(recThreads[i]) - if subEval[0] == 'ENDTASK': #remote kill command + if subEval[0] == "ENDTASK": # remote kill command check = False i += 1 - time.sleep(60) #change check frquency; default every minute \ No newline at end of file + time.sleep(60) # change check frquency; default every minute diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py new file mode 100644 index 00000000000..f1b5523f789 --- /dev/null +++ b/bank_managment_system/QTFrontend.py @@ -0,0 +1,1763 @@ +from PyQt5 import QtCore, QtGui, QtWidgets +import sys +import backend + +backend.connect_database() + +employee_data = None +# Page Constants (for reference) +HOME_PAGE = 0 +ADMIN_PAGE = 1 +EMPLOYEE_PAGE = 2 +ADMIN_MENU_PAGE = 3 +ADD_EMPLOYEE_PAGE = 4 +UPDATE_EMPLOYEE_PAGE1 = 5 +UPDATE_EMPLOYEE_PAGE2 = 6 +EMPLOYEE_LIST_PAGE = 7 +ADMIN_TOTAL_MONEY = 8 +EMPLOYEE_MENU_PAGE = 9 +EMPLOYEE_CREATE_ACCOUNT_PAGE = 10 +EMPLOYEE_SHOW_DETAILS_PAGE1 = 11 +EMPLOYEE_SHOW_DETAILS_PAGE2 = 12 +EMPLOYEE_ADD_BALANCE_SEARCH = 13 +EMPLOYEE_ADD_BALANCE_PAGE = 14 +EMPLOYEE_WITHDRAW_MONEY_SEARCH = 15 +EMPLOYEE_WITHDRAW_MONEY_PAGE = 16 +EMPLOYEE_CHECK_BALANCE_SEARCH = 17 +EMPLOYEE_CHECK_BALANCE_PAGE = 18 +EMPLOYEE_UPDATE_ACCOUNT_SEARCH = 19 +EMPLOYEE_UPDATE_ACCOUNT_PAGE = 20 + +FONT_SIZE = QtGui.QFont("Segoe UI", 12) +# ------------------------------------------------------------------------------------------------------------- +# === Reusable UI Component Functions === +# ------------------------------------------------------------------------------------------------------------- + + +def create_styled_frame(parent, min_size=None, style=""): + """Create a styled QFrame with optional minimum size and custom style.""" + frame = QtWidgets.QFrame(parent) + frame.setFrameShape(QtWidgets.QFrame.StyledPanel) + frame.setFrameShadow(QtWidgets.QFrame.Raised) + if min_size: + frame.setMinimumSize(QtCore.QSize(*min_size)) + frame.setStyleSheet(style) + return frame + + +def create_styled_label( + parent, text, font_size=12, bold=False, style="color: #2c3e50; padding: 10px;" +): + """Create a styled QLabel with customizable font size and boldness.""" + label = QtWidgets.QLabel(parent) + font = QtGui.QFont("Segoe UI", font_size) + if bold: + font.setBold(True) + font.setWeight(75) + label.setFont(font) + label.setStyleSheet(style) + label.setText(text) + return label + + +def create_styled_button(parent, text, min_size=None): + """Create a styled QPushButton with hover and pressed effects.""" + button = QtWidgets.QPushButton(parent) + if min_size: + button.setMinimumSize(QtCore.QSize(*min_size)) + button.setStyleSheet(""" + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + """) + button.setText(text) + return button + + +def create_input_field(parent, label_text, min_label_size=(120, 0)): + """Create a horizontal layout with a label and a QLineEdit.""" + frame = create_styled_frame(parent, style="padding: 7px;") + layout = QtWidgets.QHBoxLayout(frame) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + label = create_styled_label( + frame, label_text, font_size=12, bold=True, style="color: #2c3e50;" + ) + if min_label_size: + label.setMinimumSize(QtCore.QSize(*min_label_size)) + + line_edit = QtWidgets.QLineEdit(frame) + line_edit.setFont(FONT_SIZE) + line_edit.setStyleSheet( + "background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;" + ) + + layout.addWidget(label) + layout.addWidget(line_edit) + return frame, line_edit + + +def create_input_field_V(parent, label_text, min_label_size=(120, 0)): + """Create a horizontal layout with a label and a QLineEdit.""" + frame = create_styled_frame(parent, style="padding: 7px;") + layout = QtWidgets.QVBoxLayout(frame) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + label = create_styled_label( + frame, label_text, font_size=12, bold=True, style="color: #2c3e50;" + ) + if min_label_size: + label.setMinimumSize(QtCore.QSize(*min_label_size)) + + line_edit = QtWidgets.QLineEdit(frame) + line_edit.setStyleSheet( + "background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;" + ) + line_edit.setFont(FONT_SIZE) + + layout.addWidget(label) + layout.addWidget(line_edit) + return frame, line_edit + + +def show_popup_message( + parent, + message: str, + page: int = None, + show_cancel: bool = False, + cancel_page: int = HOME_PAGE, +): + """Reusable popup message box. + + Args: + parent: The parent widget. + message (str): The message to display. + page (int, optional): Page index to switch to after dialog closes. + show_cancel (bool): Whether to show the Cancel button. + """ + dialog = QtWidgets.QDialog(parent) + dialog.setWindowTitle("Message") + dialog.setFixedSize(350, 100) + dialog.setStyleSheet("background-color: #f0f0f0;") + + layout = QtWidgets.QVBoxLayout(dialog) + layout.setSpacing(10) + layout.setContentsMargins(15, 15, 15, 15) + + label = QtWidgets.QLabel(message) + label.setStyleSheet("font-size: 12px; color: #2c3e50;") + label.setWordWrap(True) + layout.addWidget(label) + + # Decide which buttons to show + if show_cancel: + button_box = QtWidgets.QDialogButtonBox( + QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel + ) + else: + button_box = QtWidgets.QDialogButtonBox(QtWidgets.QDialogButtonBox.Ok) + + button_box.setStyleSheet(""" + QPushButton { + background-color: #3498db; + color: white; + border-radius: 4px; + padding: 6px 12px; + min-width: 80px; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + """) + layout.addWidget(button_box) + + # Connect buttons + def on_accept(): + if page is not None: + parent.setCurrentIndex(page) + dialog.accept() + + def on_reject(): + if page is not None: + parent.setCurrentIndex(cancel_page) + dialog.reject() + + button_box.accepted.connect(on_accept) + button_box.rejected.connect(on_reject) + + dialog.exec_() + + +def search_result(parent, title, label_text): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + content_layout.alignment + + form_frame = create_styled_frame( + content_frame, + min_size=(400, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + # Define input fields + user = create_input_field(form_frame, label_text, min_label_size=(180, 0)) + form_layout.addWidget(user[0]) + user_account_number = user[1] + user_account_number.setFont(FONT_SIZE) + submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) + form_layout.addWidget(submit_button) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + + return page, (user_account_number, submit_button) + + +# ------------------------------------------------------------------------------------------------------------- +# === Page Creation Functions == +# ------------------------------------------------------------------------------------------------------------- +def create_page_with_header(parent, title_text): + """Create a page with a styled header and return the page + main layout.""" + page = QtWidgets.QWidget(parent) + main_layout = QtWidgets.QVBoxLayout(page) + main_layout.setContentsMargins(20, 20, 20, 20) + main_layout.setSpacing(20) + + header_frame = create_styled_frame( + page, style="background-color: #ffffff; border-radius: 10px; padding: 10px;" + ) + header_layout = QtWidgets.QVBoxLayout(header_frame) + title_label = create_styled_label(header_frame, title_text, font_size=30) + header_layout.addWidget(title_label, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop) + + main_layout.addWidget(header_frame, 0, QtCore.Qt.AlignTop) + return page, main_layout + + +def get_employee_name(parent, name_field_text="Enter Employee Name"): + page, main_layout = create_page_with_header(parent, "Employee Data Update") + + # Content frame + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + # Form frame + form_frame = create_styled_frame( + content_frame, + min_size=(340, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + + # Form fields + name_label, name_field = create_input_field(form_frame, name_field_text) + search_button = create_styled_button(form_frame, "Search", min_size=(100, 30)) + form_layout.addWidget(name_label) + form_layout.addWidget(search_button) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + + def on_search_button_clicked(): + global employee_data + entered_name = name_field.text().strip() + print(f"Entered Name: {entered_name}") + if not entered_name: + QtWidgets.QMessageBox.warning( + parent, "Input Error", "Please enter an employee name." + ) + return + + try: + employee_check = backend.check_name_in_staff(entered_name) + print(f"Employee Check: {type(employee_check)},{employee_check}") + if employee_check: + cur = backend.cur + cur.execute("SELECT * FROM staff WHERE name = ?", (entered_name,)) + employee_data = cur.fetchone() + print(f"Employee Data: {employee_data}") + parent.setCurrentIndex(UPDATE_EMPLOYEE_PAGE2) + + # if employee_data: + # QtWidgets.QMessageBox.information(parent, "Employee Found", + # f"Employee data:\nID: {fetch[0]}\nName: {fetch[1]}\nDept: {fetch[2]}\nRole: {fetch[3]}") + + else: + QtWidgets.QMessageBox.information( + parent, "Not Found", "Employee not found." + ) + except Exception as e: + QtWidgets.QMessageBox.critical( + parent, "Error", f"An error occurred: {str(e)}" + ) + + search_button.clicked.connect(on_search_button_clicked) + + return page + + # backend.check_name_in_staff() + + +def create_login_page( + parent, + title, + name_field_text="Name :", + password_field_text="Password :", + submit_text="Submit", +): + """Create a login page with a title, name and password fields, and a submit button.""" + page, main_layout = create_page_with_header(parent, title) + + # Content frame + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + # Form frame + form_frame = create_styled_frame( + content_frame, + min_size=(340, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(20) + + # Input fields + name_frame, name_edit = create_input_field(form_frame, name_field_text) + password_frame, password_edit = create_input_field(form_frame, password_field_text) + + # Submit button + button_frame = create_styled_frame(form_frame, style="padding: 7px;") + button_layout = QtWidgets.QVBoxLayout(button_frame) + button_layout.setSpacing(60) + submit_button = create_styled_button(button_frame, submit_text, min_size=(150, 0)) + button_layout.addWidget(submit_button, 0, QtCore.Qt.AlignHCenter) + + form_layout.addWidget(name_frame) + form_layout.addWidget(password_frame) + form_layout.addWidget(button_frame) + + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + + return page, name_edit, password_edit, submit_button + + +def on_login_button_clicked(parent, name_field, password_field): + name = name_field.text().strip() + password = password_field.text().strip() + + if not name or not password: + show_popup_message(parent, "Please enter your name and password.", HOME_PAGE) + else: + try: + # Ideally, here you'd call a backend authentication check + success = backend.check_admin(name, password) + if success: + QtWidgets.QMessageBox.information( + parent, "Login Successful", f"Welcome, {name}!" + ) + else: + QtWidgets.QMessageBox.warning( + parent, "Login Failed", "Incorrect name or password." + ) + except Exception as e: + QtWidgets.QMessageBox.critical( + parent, "Error", f"An error occurred during login: {str(e)}" + ) + + +def create_home_page(parent, on_admin_clicked, on_employee_clicked, on_exit_clicked): + """Create the home page with Admin, Employee, and Exit buttons.""" + page, main_layout = create_page_with_header(parent, "Admin Menu") + + # Button frame + button_frame = create_styled_frame(page) + button_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + button_layout = QtWidgets.QVBoxLayout(button_frame) + + # Button container + button_container = create_styled_frame( + button_frame, + min_size=(300, 0), + style="background-color: #ffffff; border-radius: 15px; padding: 20px;", + ) + button_container_layout = QtWidgets.QVBoxLayout(button_container) + button_container_layout.setSpacing(15) + + # Buttons + admin_button = create_styled_button(button_container, "Admin") + employee_button = create_styled_button(button_container, "Employee") + exit_button = create_styled_button(button_container, "Exit") + exit_button.setStyleSheet(""" + QPushButton { + background-color: #e74c3c; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #c0392b; + } + QPushButton:pressed { + background-color: #992d22; + } + """) + + button_container_layout.addWidget(admin_button) + button_container_layout.addWidget(employee_button) + button_container_layout.addWidget(exit_button) + + button_layout.addWidget( + button_container, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(button_frame) + + # Connect button signals + admin_button.clicked.connect(on_admin_clicked) + employee_button.clicked.connect(on_employee_clicked) + exit_button.clicked.connect(on_exit_clicked) + + return page + + +def create_admin_menu_page(parent): + page, main_layout = create_page_with_header(parent, "Admin Menu") + + button_frame = create_styled_frame(page) + button_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + button_layout = QtWidgets.QVBoxLayout(button_frame) + + button_container = create_styled_frame( + button_frame, + min_size=(300, 0), + style="background-color: #ffffff; border-radius: 15px; padding: 20px;", + ) + button_container_layout = QtWidgets.QVBoxLayout(button_container) + button_container_layout.setSpacing(15) + + # Define button labels + button_labels = [ + "Add Employee", + "Update Employee", + "Employee List", + "Total Money", + "Back", + ] + buttons = [] + + for label in button_labels: + btn = create_styled_button(button_container, label) + button_container_layout.addWidget(btn) + buttons.append(btn) + + button_layout.addWidget( + button_container, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(button_frame) + + return page, *buttons # Unpack as add_button, update_employee, etc. + + +def create_add_employee_page( + parent, title, submit_text="Submit", update_btn: bool = False +): + page, main_layout = create_page_with_header(parent, title) + + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame( + content_frame, + min_size=(340, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(10) + + # Define input fields + fields = ["Name :", "Password :", "Salary :", "Position :"] + name_edit = None + password_edit = None + salary_edit = None + position_edit = None + edits = [] + + for i, field in enumerate(fields): + field_frame, field_edit = create_input_field(form_frame, field) + form_layout.addWidget(field_frame) + if i == 0: + name_edit = field_edit + elif i == 1: + password_edit = field_edit + elif i == 2: + salary_edit = field_edit + elif i == 3: + position_edit = field_edit + edits.append(field_edit) + # Submit button + button_frame = create_styled_frame(form_frame, style="padding: 7px;") + button_layout = QtWidgets.QVBoxLayout(button_frame) + if update_btn: + update_button = create_styled_button(button_frame, "Update", min_size=(100, 50)) + button_layout.addWidget(update_button, 0, QtCore.Qt.AlignHCenter) + else: + submit_button = create_styled_button( + button_frame, submit_text, min_size=(100, 50) + ) + button_layout.addWidget(submit_button, 0, QtCore.Qt.AlignHCenter) + + form_layout.addWidget(button_frame) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + back_btn = QtWidgets.QPushButton("Back", content_frame) + back_btn.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_btn.clicked.connect(lambda: parent.setCurrentIndex(ADMIN_MENU_PAGE)) + main_layout.addWidget(back_btn, 0, alignment=QtCore.Qt.AlignLeft) + if update_btn: + return page, name_edit, password_edit, salary_edit, position_edit, update_button + else: + return ( + page, + name_edit, + password_edit, + salary_edit, + position_edit, + submit_button, + ) # Unpack as name_edit, password_edit, etc. + + +def show_employee_list_page(parent, title): + page, main_layout = create_page_with_header(parent, title) + + content_frame = create_styled_frame( + page, style="background-color: #f9f9f9; border-radius: 10px; padding: 15px;" + ) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + # Table frame + table_frame = create_styled_frame( + content_frame, + style="background-color: #ffffff; border-radius: 8px; padding: 10px;", + ) + table_layout = QtWidgets.QVBoxLayout(table_frame) + table_layout.setSpacing(0) + + # Header row + header_frame = create_styled_frame( + table_frame, + style="background-color: #f5f5f5; ; border-radius: 8px 8px 0 0; padding: 10px;", + ) + header_layout = QtWidgets.QHBoxLayout(header_frame) + header_layout.setContentsMargins(10, 5, 10, 5) + headers = ["Name", "Position", "Salary"] + for i, header in enumerate(headers): + header_label = QtWidgets.QLabel(header, header_frame) + header_label.setStyleSheet( + "font-weight: bold; font-size: 14px; color: #333333; padding: 0px; margin: 0px;" + ) + if i == 2: # Right-align salary header + header_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) + else: + header_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + header_layout.addWidget( + header_label, 1 if i < 2 else 0 + ) # Stretch name and position, not salary + table_layout.addWidget(header_frame) + + # Employee rows + employees = backend.show_employees_for_update() + for row, employee in enumerate(employees): + row_frame = create_styled_frame( + table_frame, + style=f"background-color: {'#fafafa' if row % 2 else '#ffffff'}; padding: 8px;", + ) + row_layout = QtWidgets.QHBoxLayout(row_frame) + row_layout.setContentsMargins(10, 5, 10, 5) + + # Name + name_label = QtWidgets.QLabel(employee[0], row_frame) + name_label.setStyleSheet( + "font-size: 14px; color: #333333; padding: 0px; margin: 0px;" + ) + name_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + row_layout.addWidget(name_label, 1) + + # Position + position_label = QtWidgets.QLabel(employee[3], row_frame) + position_label.setStyleSheet( + "font-size: 14px; color: #333333; padding: 0px; margin: 0px;" + ) + position_label.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) + row_layout.addWidget(position_label, 1) + + # Salary (formatted as currency) + salary_label = QtWidgets.QLabel(f"${float(employee[2]):,.2f}", row_frame) + salary_label.setStyleSheet( + "font-size: 14px; color: #333333; padding: 0px; margin: 0px;" + ) + salary_label.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) + row_layout.addWidget(salary_label, 0) + + table_layout.addWidget(row_frame) + + # Add stretch to prevent rows from expanding vertically + table_layout.addStretch() + + # Back button + back_button = QtWidgets.QPushButton("Back", content_frame) + back_button.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_button.clicked.connect(lambda: parent.setCurrentIndex(ADMIN_MENU_PAGE)) + + content_layout.addWidget(table_frame) + main_layout.addWidget(back_button, alignment=QtCore.Qt.AlignLeft) + main_layout.addWidget(content_frame) + + return page + + +def show_total_money(parent, title): + page, main_layout = create_page_with_header(parent, title) + + content_frame = create_styled_frame( + page, style="background-color: #f9f9f9; border-radius: 10px; padding: 15px;" + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + content_layout.setProperty("spacing", 10) + all = backend.all_money() + + # Total money label + total_money_label = QtWidgets.QLabel(f"Total Money: ${all}", content_frame) + total_money_label.setStyleSheet( + "font-size: 24px; font-weight: bold; color: #333333;" + ) + content_layout.addWidget(total_money_label, alignment=QtCore.Qt.AlignCenter) + # Back button + back_button = QtWidgets.QPushButton("Back", content_frame) + back_button.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_button.clicked.connect(lambda: parent.setCurrentIndex(ADMIN_MENU_PAGE)) + content_layout.addWidget(back_button, alignment=QtCore.Qt.AlignCenter) + main_layout.addWidget(content_frame) + return page + + +# -----------employees menu pages----------- +def create_employee_menu_page(parent, title): + page, main_layout = create_page_with_header(parent, title) + + button_frame = create_styled_frame(page) + button_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + button_layout = QtWidgets.QVBoxLayout(button_frame) + + button_container = create_styled_frame( + button_frame, + min_size=(300, 0), + style="background-color: #ffffff; border-radius: 15px; padding: 20px;", + ) + button_container_layout = QtWidgets.QVBoxLayout(button_container) + button_container_layout.setSpacing(15) + + # Define button labels + button_labels = [ + "Create Account ", + "Show Details", + "Add Balance", + "Withdraw Money", + "Chack Balanace", + "Update Account", + "list of all Members", + "Delete Account", + "Back", + ] + buttons = [] + + for label in button_labels: + btn: QtWidgets.QPushButton = create_styled_button(button_container, label) + button_container_layout.addWidget(btn) + buttons.append(btn) + + button_layout.addWidget( + button_container, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(button_frame) + + return page, *buttons # Unpack as add_button, update_employee, etc. + + +def create_account_page(parent, title, update_btn=False): + page, main_layout = create_page_with_header(parent, title) + + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame( + content_frame, + min_size=(400, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + + # Define input fields + fields = ["Name :", "Age :", "Address", "Balance :", "Mobile number :"] + edits = [] + + for i, field in enumerate(fields): + field_frame, field_edit = create_input_field( + form_frame, field, min_label_size=(160, 0) + ) + form_layout.addWidget(field_frame) + field_edit.setFont(QtGui.QFont("Arial", 12)) + if i == 0: + name_edit = field_edit + elif i == 1: + Age_edit = field_edit + elif i == 2: + Address_edit = field_edit + elif i == 3: + Balance_edit = field_edit + elif i == 4: + Mobile_number_edit = field_edit + edits.append(field_edit) + # Dropdown for account type + account_type_label = QtWidgets.QLabel("Account Type :", form_frame) + account_type_label.setStyleSheet( + "font-size: 14px; font-weight: bold; color: #333333;" + ) + form_layout.addWidget(account_type_label) + account_type_dropdown = QtWidgets.QComboBox(form_frame) + account_type_dropdown.addItems(["Savings", "Current", "Fixed Deposit"]) + account_type_dropdown.setStyleSheet(""" + QComboBox { + padding: 5px; + border: 1px solid #ccc; + border-radius: 4px; + background-color: white; + min-width: 200px; + font-size: 14px; + } + QComboBox:hover { + border: 1px solid #999; + } + QComboBox::drop-down { + border: none; + width: 25px; + } + QComboBox::down-arrow { + width: 12px; + height: 12px; + } + QComboBox QAbstractItemView { + border: 1px solid #ccc; + background-color: white; + selection-background-color: #0078d4; + selection-color: white; + } + """) + form_layout.addWidget(account_type_dropdown) + + # Submit button + button_frame = create_styled_frame(form_frame, style="padding: 7px;") + button_layout = QtWidgets.QVBoxLayout(button_frame) + + if update_btn: + submit_button = create_styled_button(button_frame, "Update", min_size=(100, 50)) + else: + submit_button = create_styled_button(button_frame, "Submit", min_size=(100, 50)) + button_layout.addWidget(submit_button, 0, QtCore.Qt.AlignHCenter) + + form_layout.addWidget(button_frame) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + back_btn = QtWidgets.QPushButton("Back", content_frame) + back_btn.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_btn.clicked.connect(lambda: parent.setCurrentIndex(EMPLOYEE_MENU_PAGE)) + main_layout.addWidget(back_btn, 0, alignment=QtCore.Qt.AlignLeft) + + return page, ( + name_edit, + Age_edit, + Address_edit, + Balance_edit, + Mobile_number_edit, + account_type_dropdown, + submit_button, + ) + + +def create_show_details_page1(parent, title): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame( + content_frame, + min_size=(400, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + # Define input fields + bannk_user = create_input_field( + form_frame, "Enter Bank account Number :", min_label_size=(180, 0) + ) + form_layout.addWidget(bannk_user[0]) + user_account_number = bannk_user[1] + submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) + form_layout.addWidget(submit_button) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + + return page, (user_account_number, submit_button) + + +def create_show_details_page2(parent, title): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame( + content_frame, + min_size=(400, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + form_layout.setSpacing(3) + + # Define input fields + + labeles = [ + "Account No: ", + "Name: ", + "Age:", + "Address: ", + "Balance: ", + "Mobile Number: ", + "Account Type: ", + ] + for i in range(len(labeles)): + label_frame, input_field = create_input_field( + form_frame, labeles[i], min_label_size=(180, 30) + ) + form_layout.addWidget(label_frame) + input_field.setReadOnly(True) + input_field.setFont(QtGui.QFont("Arial", 12)) + if i == 0: + account_no_field = input_field + elif i == 1: + name_field = input_field + elif i == 2: + age_field = input_field + elif i == 3: + address_field = input_field + elif i == 4: + balance_field = input_field + elif i == 5: + mobile_number_field = input_field + elif i == 6: + account_type_field = input_field + + exite_btn = create_styled_button(form_frame, "Exit", min_size=(100, 50)) + exite_btn.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + exite_btn.clicked.connect(lambda: parent.setCurrentIndex(EMPLOYEE_MENU_PAGE)) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + main_layout.addWidget(exite_btn) + + return page, ( + account_no_field, + name_field, + age_field, + address_field, + balance_field, + mobile_number_field, + account_type_field, + exite_btn, + ) + + +def update_user(parent, title, input_fields_label, input_fielf: bool = True): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy( + QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding + ) + content_layout = QtWidgets.QVBoxLayout(content_frame) + content_layout.alignment + + form_frame = create_styled_frame( + content_frame, + min_size=(400, 200), + style="background-color: #ffffff; border-radius: 15px; padding: 10px;", + ) + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + # Define input fields + user = create_input_field(form_frame, "User Name: ", min_label_size=(180, 0)) + user_balance = create_input_field(form_frame, "Balance: ", min_label_size=(180, 0)) + + # Add input fields to the form layout + form_layout.addWidget(user[0]) + form_layout.addWidget(user_balance[0]) + if input_fielf: + user_update_balance = create_input_field_V( + form_frame, input_fields_label, min_label_size=(180, 0) + ) + form_layout.addWidget(user_update_balance[0]) + + # Store the input fields in variables + user_account_name = user[1] + user_account_name.setReadOnly(True) + user_account_name.setStyleSheet( + "background-color: #8a8a8a; border: 1px solid #ccc; border-radius: 4px; padding: 8px;" + ) + user_balance_field = user_balance[1] + user_balance_field.setReadOnly(True) + user_balance_field.setStyleSheet( + "background-color: #8a8a8a; border: 1px solid #ccc; border-radius: 4px; padding: 8px;" + ) + if input_fielf: + user_update_balance_field = user_update_balance[1] + user_update_balance_field.setStyleSheet( + "background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;" + ) + + # Set the font size for the input fields + user_account_name.setFont(FONT_SIZE) + user_balance_field.setFont(FONT_SIZE) + if input_fielf: + user_update_balance_field.setFont(FONT_SIZE) + + # Add a submit button + submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) + form_layout.addWidget(submit_button) + content_layout.addWidget( + form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter + ) + main_layout.addWidget(content_frame) + back_btn = create_styled_button(content_frame, "Back", min_size=(100, 50)) + back_btn.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_btn.clicked.connect(lambda: parent.setCurrentIndex(EMPLOYEE_MENU_PAGE)) + backend + if input_fielf: + return page, ( + user_account_name, + user_balance_field, + user_update_balance_field, + submit_button, + ) + else: + return page, (user_account_name, user_balance_field, submit_button) + + +# ------------------------------------------------------------------------------------------------------------- +# === Main Window Setup === +# ------------------------------------------------------------------------------------------------------------- + + +def setup_main_window(main_window: QtWidgets.QMainWindow): + """Set up the main window with a stacked widget containing home, admin, and employee pages.""" + main_window.setObjectName("MainWindow") + main_window.resize(800, 600) + main_window.setStyleSheet("background-color: #f0f2f5;") + + central_widget = QtWidgets.QWidget(main_window) + main_layout = QtWidgets.QHBoxLayout(central_widget) + + stacked_widget = QtWidgets.QStackedWidget(central_widget) + + # Create pages + def switch_to_admin(): + stacked_widget.setCurrentIndex(ADMIN_PAGE) + + def switch_to_employee(): + stacked_widget.setCurrentIndex(EMPLOYEE_PAGE) + + def exit_app(): + QtWidgets.QApplication.quit() + + def admin_login_menu_page(name, password): + try: + # Ideally, here you'd call a backend authentication check + success = backend.check_admin(name, password) + if success: + QtWidgets.QMessageBox.information( + stacked_widget, "Login Successful", f"Welcome, {name}!" + ) + stacked_widget.setCurrentIndex(ADMIN_MENU_PAGE) + else: + QtWidgets.QMessageBox.warning( + stacked_widget, "Login Failed", "Incorrect name or password." + ) + except Exception as e: + QtWidgets.QMessageBox.critical( + stacked_widget, "Error", f"An error occurred during login: {str(e)}" + ) + # show_popup_message(stacked_widget,"Invalid admin credentials",0) + + def add_employee_form_submit(name, password, salary, position): + if ( + len(name) != 0 + and len(password) != 0 + and len(salary) != 0 + and len(position) != 0 + ): + backend.create_employee(name, password, salary, position) + show_popup_message( + stacked_widget, "Employee added successfully", ADMIN_MENU_PAGE + ) + + else: + print("Please fill in all fields") + show_popup_message( + stacked_widget, "Please fill in all fields", ADD_EMPLOYEE_PAGE + ) + + def update_employee_data(name, password, salary, position, name_to_update): + try: + cur = backend.cur + if name_to_update: + cur.execute( + "UPDATE staff SET Name = ? WHERE name = ?", (name, name_to_update) + ) + + cur.execute("UPDATE staff SET Name = ? WHERE name = ?", (password, name)) + cur.execute( + "UPDATE staff SET password = ? WHERE name = ?", (password, name) + ) + cur.execute("UPDATE staff SET salary = ? WHERE name = ?", (salary, name)) + cur.execute( + "UPDATE staff SET position = ? WHERE name = ?", (position, name) + ) + backend.conn.commit() + show_popup_message( + stacked_widget, "Employee Update successfully", UPDATE_EMPLOYEE_PAGE2 + ) + + except: + show_popup_message( + stacked_widget, "Please fill in all fields", UPDATE_EMPLOYEE_PAGE2 + ) + + # Create Home Page + home_page = create_home_page( + stacked_widget, switch_to_admin, switch_to_employee, exit_app + ) + # ------------------------------------------------------------------------------------------------ + # -------------------------------------Admin panel page --------------------------------------- + # ------------------------------------------------------------------------------------------------ + # Create Admin Login Page + admin_page, admin_name, admin_password, admin_submit = create_login_page( + stacked_widget, title="Admin Login" + ) + admin_password.setEchoMode(QtWidgets.QLineEdit.Password) + admin_name.setFont(QtGui.QFont("Arial", 10)) + admin_password.setFont(QtGui.QFont("Arial", 10)) + admin_name.setPlaceholderText("Enter your name") + admin_password.setPlaceholderText("Enter your password") + + admin_submit.clicked.connect( + lambda: admin_login_menu_page(admin_name.text(), admin_password.text()) + ) + + # Create Admin Menu Page + ( + admin_menu_page, + add_button, + update_button, + list_button, + money_button, + back_button, + ) = create_admin_menu_page(stacked_widget) + + add_button.clicked.connect( + lambda: stacked_widget.setCurrentIndex(ADD_EMPLOYEE_PAGE) + ) + update_button.clicked.connect( + lambda: stacked_widget.setCurrentIndex(UPDATE_EMPLOYEE_PAGE1) + ) + list_button.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_LIST_PAGE) + ) + back_button.clicked.connect(lambda: stacked_widget.setCurrentIndex(HOME_PAGE)) + money_button.clicked.connect( + lambda: stacked_widget.setCurrentIndex(ADMIN_TOTAL_MONEY) + ) + # Create Add Employee Page + add_employee_page, emp_name, emp_password, emp_salary, emp_position, emp_submit = ( + create_add_employee_page(stacked_widget, title="Add Employee") + ) + + # Update Employee Page + u_employee_page1 = get_employee_name(stacked_widget) + # apply the update_employee_data function to the submit button + + ( + u_employee_page2, + u_employee_name, + u_employee_password, + u_employee_salary, + u_employee_position, + u_employee_update, + ) = create_add_employee_page( + stacked_widget, "Update Employee Details", update_btn=True + ) + + def populate_employee_data(): + global employee_data + if employee_data: + print("employee_data is not None") + u_employee_name.setText(str(employee_data[0])) # Name + u_employee_password.setText(str(employee_data[1])) # Password + u_employee_salary.setText(str(employee_data[2])) # Salary + u_employee_position.setText(str(employee_data[3])) # Position + else: + # Clear fields if no employee data is available + print("employee_data is None") + u_employee_name.clear() + u_employee_password.clear() + u_employee_salary.clear() + u_employee_position.clear() + QtWidgets.QMessageBox.warning( + stacked_widget, "No Data", "No employee data available to display." + ) + + def on_page_changed(index): + if index == 6: # update_employee_page2 is at index 6 + populate_employee_data() + + # Connect the currentChanged signal to the on_page_changed function + stacked_widget.currentChanged.connect(on_page_changed) + + def update_employee_data(name, password, salary, position, name_to_update): + try: + if not name_to_update: + show_popup_message( + stacked_widget, + "Original employee name is missing.", + UPDATE_EMPLOYEE_PAGE2, + ) + return + if not (name or password or salary or position): + show_popup_message( + stacked_widget, + "Please fill at least one field to update.", + UPDATE_EMPLOYEE_PAGE2, + ) + return + if name: + backend.update_employee_name(name, name_to_update) + if password: + backend.update_employee_password(password, name_to_update) + if salary: + try: + salary = int(salary) + backend.update_employee_salary(salary, name_to_update) + except ValueError: + show_popup_message( + stacked_widget, "Salary must be a valid number.", 5 + ) + return + if position: + backend.update_employee_position(position, name_to_update) + show_popup_message( + stacked_widget, "Employee updated successfully.", ADMIN_MENU_PAGE + ) + except Exception as e: + show_popup_message( + stacked_widget, + f"Error updating employee: {str(e)}", + UPDATE_EMPLOYEE_PAGE2, + show_cancel=True, + cancel_page=ADMIN_MENU_PAGE, + ) + + u_employee_update.clicked.connect( + lambda: update_employee_data( + u_employee_name.text().strip(), + u_employee_password.text().strip(), + u_employee_salary.text().strip(), + u_employee_position.text().strip(), + employee_data[0] if employee_data else "", + ) + ) + + emp_submit.clicked.connect( + lambda: add_employee_form_submit( + emp_name.text(), emp_password.text(), emp_salary.text(), emp_position.text() + ) + ) + # show employee list page + employee_list_page = show_employee_list_page(stacked_widget, "Employee List") + admin_total_money = show_total_money(stacked_widget, "Total Money") + # ------------------------------------------------------------------------------------------------ + # -------------------------------------Employee panel page --------------------------------------- + # ------------------------------------------------------------------------------------------------ + + # Create Employee Login Page + employee_page, employee_name, employee_password, employee_submit = ( + create_login_page(stacked_widget, title="Employee Login") + ) + employee_submit.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE) + ) + ( + employee_menu_page, + E_Create_Account, + E_Show_Details, + E_add_Balance, + E_Withdraw_Money, + E_Chack_Balanace, + E_Update_Account, + E_list_of_all_Members, + E_Delete_Account, + E_Back, + ) = create_employee_menu_page(stacked_widget, "Employee Menu") + # List of all page + E_Create_Account.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CREATE_ACCOUNT_PAGE) + ) + E_Show_Details.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE1) + ) + E_add_Balance.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_ADD_BALANCE_SEARCH) + ) + E_Withdraw_Money.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_WITHDRAW_MONEY_SEARCH) + ) + E_Chack_Balanace.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CHECK_BALANCE_SEARCH) + ) + E_Update_Account.clicked.connect( + lambda: stacked_widget.setCurrentIndex(EMPLOYEE_UPDATE_ACCOUNT_SEARCH) + ) + # E_list_of_all_Members.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_LIST_OF_ALL_MEMBERS_PAGE)) + # E_Delete_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_DELETE_ACCOUNT_PAGE)) + # E_Back.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE)) + + employee_create_account_page, all_employee_menu_btn = create_account_page( + stacked_widget, "Create Account" + ) + all_employee_menu_btn[6].clicked.connect( + lambda: add_account_form_submit( + all_employee_menu_btn[0].text().strip(), + all_employee_menu_btn[1].text().strip(), + all_employee_menu_btn[2].text().strip(), + all_employee_menu_btn[3].text().strip(), + all_employee_menu_btn[5].currentText(), + all_employee_menu_btn[4].text().strip(), + ) + ) + + def add_account_form_submit(name, age, address, balance, account_type, mobile): + if ( + len(name) != 0 + and len(age) != 0 + and len(address) != 0 + and len(balance) != 0 + and len(account_type) != 0 + and len(mobile) != 0 + ): + try: + balance = int(balance) + except ValueError: + show_popup_message( + stacked_widget, + "Balance must be a valid number", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if balance < 0: + show_popup_message( + stacked_widget, + "Balance cannot be negative", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if account_type not in ["Savings", "Current", "Fixed Deposit"]: + show_popup_message( + stacked_widget, "Invalid account type", EMPLOYEE_CREATE_ACCOUNT_PAGE + ) + return + if len(mobile) != 10: + show_popup_message( + stacked_widget, + "Mobile number must be 10 digits", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if not mobile.isdigit(): + show_popup_message( + stacked_widget, + "Mobile number must contain only digits", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if not name.isalpha(): + show_popup_message( + stacked_widget, + "Name must contain only alphabets", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if not age.isdigit(): + show_popup_message( + stacked_widget, + "Age must contain only digits", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if int(age) < 18: + show_popup_message( + stacked_widget, + "Age must be greater than 18", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + if len(address) < 10: + show_popup_message( + stacked_widget, + "Address must be at least 10 characters long", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + return + backend.create_customer(name, age, address, balance, account_type, mobile) + all_employee_menu_btn[0].setText("") + all_employee_menu_btn[1].setText("") + all_employee_menu_btn[2].setText("") + all_employee_menu_btn[3].setText("") + all_employee_menu_btn[4].setText("") + (all_employee_menu_btn[5].currentText(),) + show_popup_message( + stacked_widget, + "Account created successfully", + EMPLOYEE_MENU_PAGE, + False, + ) + else: + show_popup_message( + stacked_widget, + "Please fill in all fields", + EMPLOYEE_CREATE_ACCOUNT_PAGE, + ) + # Add pages to stacked widget + + show_bank_user_data_page1, show_bank_user_other1 = create_show_details_page1( + stacked_widget, "Show Details" + ) + show_bank_user_data_page2, show_bank_user_other2 = create_show_details_page2( + stacked_widget, "Show Details" + ) + + show_bank_user_other1[1].clicked.connect( + lambda: show_bank_user_data_page1_submit_btn( + int(show_bank_user_other1[0].text().strip()) + ) + ) + + def show_bank_user_data_page1_submit_btn(name: int): + account_data = backend.get_details(name) + if account_data: + show_bank_user_other1[0].setText("") + show_bank_user_other2[0].setText(str(account_data[0])) + show_bank_user_other2[1].setText(str(account_data[1])) + show_bank_user_other2[2].setText(str(account_data[2])) + show_bank_user_other2[3].setText(str(account_data[3])) + show_bank_user_other2[4].setText(str(account_data[4])) + show_bank_user_other2[5].setText(str(account_data[5])) + show_bank_user_other2[6].setText(str(account_data[6])) + stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE2) + else: + show_popup_message( + stacked_widget, "Account not found", EMPLOYEE_SHOW_DETAILS_PAGE1 + ) + + def setup_balance_operation_flow( + stacked_widget, + title_search, + placeholder, + title_form, + action_button_text, + success_message, + backend_action_fn, + stacked_page_index, + search_index, + page_index, + need_input=True, + ): + # Create search UI + search_page, search_widgets = search_result( + stacked_widget, title_search, placeholder + ) + search_input = search_widgets[0] + search_button = search_widgets[1] + + # Create update UI + form_page, form_widgets = update_user( + stacked_widget, title_form, action_button_text, need_input + ) + if need_input: + name_field, balance_field, amount_field, action_button = form_widgets + else: + name_field, balance_field, action_button = form_widgets + + def on_search_submit(): + try: + account_number = int(search_input.text().strip()) + except ValueError: + show_popup_message( + stacked_widget, "Please enter a valid account number.", search_index + ) + return + + if backend.check_acc_no(account_number): + account_data = backend.get_details(account_number) + name_field.setText(str(account_data[1])) + balance_field.setText(str(account_data[4])) + stacked_widget.setCurrentIndex(page_index) + else: + show_popup_message( + stacked_widget, + "Account not found", + search_index, + show_cancel=True, + cancel_page=EMPLOYEE_MENU_PAGE, + ) + + def on_action_submit(): + try: + account_number = int(search_input.text().strip()) + amount = int(amount_field.text().strip()) + backend_action_fn(amount, account_number) + name_field.setText("") + balance_field.setText("") + search_input.setText("") + show_popup_message(stacked_widget, success_message, EMPLOYEE_MENU_PAGE) + except ValueError: + show_popup_message( + stacked_widget, "Enter valid numeric amount.", page_index + ) + + search_button.clicked.connect(on_search_submit) + action_button.clicked.connect(on_action_submit) + + return search_page, form_page + + # Add Balance Flow + add_balance_search_page, add_balance_page = setup_balance_operation_flow( + stacked_widget=stacked_widget, + title_search="Add Balance", + placeholder="Enter Account Number: ", + title_form="Add Balance User Account", + action_button_text="Enter Amount: ", + success_message="Balance updated successfully", + backend_action_fn=backend.update_balance, + stacked_page_index=EMPLOYEE_ADD_BALANCE_SEARCH, + search_index=EMPLOYEE_ADD_BALANCE_SEARCH, + page_index=EMPLOYEE_ADD_BALANCE_PAGE, + ) + + # Withdraw Money Flow + withdraw_money_search_page, withdraw_money_page = setup_balance_operation_flow( + stacked_widget=stacked_widget, + title_search="Withdraw Money", + placeholder="Enter Account Number: ", + title_form="Withdraw Money From User Account", + action_button_text="Withdraw Amount: ", + success_message="Amount withdrawn successfully", + backend_action_fn=backend.deduct_balance, + stacked_page_index=EMPLOYEE_WITHDRAW_MONEY_SEARCH, + search_index=EMPLOYEE_WITHDRAW_MONEY_SEARCH, + page_index=EMPLOYEE_WITHDRAW_MONEY_PAGE, + ) + + check_balance_search_page, check_balance_page = setup_balance_operation_flow( + stacked_widget=stacked_widget, + title_search="Check Balance", + placeholder="Enter Account Number: ", + title_form="Check Balance", + action_button_text="Check Balance: ", + success_message="Balance checked successfully", + backend_action_fn=backend.check_balance, + stacked_page_index=EMPLOYEE_CHECK_BALANCE_SEARCH, + search_index=EMPLOYEE_CHECK_BALANCE_SEARCH, + page_index=EMPLOYEE_CHECK_BALANCE_PAGE, + need_input=False, + ) + + def find_and_hide_submit_button(page): + # Find all QPushButton widgets in the page + buttons = page.findChildren(QtWidgets.QPushButton) + for button in buttons: + if button.text() == "Submit": + button.hide() + break + + find_and_hide_submit_button(check_balance_page) + + # Update Employee details + update_empolyee_search_page, update_empolyee_search_other = search_result( + stacked_widget, "Update Employee Details", "Enter Employee ID: " + ) + update_employee_page, update_employee_other = create_account_page( + stacked_widget, "Update Employee", True + ) + name_edit = update_employee_other[0] + Age_edit = update_employee_other[1] + Address_edit = update_employee_other[2] + Balance_edit = update_employee_other[3] + Mobile_number_edit = update_employee_other[4] + account_type_dropdown = update_employee_other[5] + # name_edit, Age_edit,Address_edit,Balance_edit,Mobile_number_edit, account_type_dropdown ,submit_button + + update_empolyee_search_other[1].clicked.connect( + lambda: update_employee_search_submit() + ) + update_employee_other[6].clicked.connect(lambda: update_employee_submit()) + + def update_employee_search_submit(): + try: + user_data = backend.get_details( + int(update_empolyee_search_other[0].text().strip()) + ) + print("Featch data: ", user_data) + name_edit.setText(str(user_data[1])) + Age_edit.setText(str(user_data[2])) + Address_edit.setText(str(user_data[3])) + Balance_edit.setText(str(user_data[4])) + Mobile_number_edit.setText(str(user_data[6])) + Balance_edit.setDisabled(True) + account_type_dropdown.setCurrentText(str(user_data[5])) + stacked_widget.setCurrentIndex(EMPLOYEE_UPDATE_ACCOUNT_PAGE) + except ValueError: + show_popup_message( + stacked_widget, "Enter valid numeric employee ID.", EMPLOYEE_MENU_PAGE + ) + + def update_employee_submit(): + try: + user_data = backend.get_details( + int(update_empolyee_search_other[0].text().strip()) + ) + name = name_edit.text().strip() + age = int(Age_edit.text().strip()) + address = Address_edit.text().strip() + mobile_number = int(Mobile_number_edit.text().strip()) + account_type = account_type_dropdown.currentText() + print(name, age, address, mobile_number, account_type) + backend.update_name_in_bank_table(name, user_data[0]) + backend.update_age_in_bank_table(age, user_data[0]) + backend.update_address_in_bank_table(address, user_data[0]) + backend.update_address_in_bank_table(address, user_data[0]) + backend.update_mobile_number_in_bank_table(mobile_number, user_data[0]) + backend.update_acc_type_in_bank_table(account_type, user_data[0]) + + show_popup_message( + stacked_widget, + "Employee details updated successfully", + EMPLOYEE_MENU_PAGE, + ) + stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE) + except ValueError as e: + print(e) + show_popup_message( + stacked_widget, "Enter valid numeric employee ID.", EMPLOYEE_MENU_PAGE + ) + + stacked_widget.addWidget(home_page) # 0 + stacked_widget.addWidget(admin_page) # 1 + stacked_widget.addWidget(employee_page) # 2 + stacked_widget.addWidget(admin_menu_page) # 3 + stacked_widget.addWidget(add_employee_page) # 4 + stacked_widget.addWidget(u_employee_page1) # 5 + stacked_widget.addWidget(u_employee_page2) # 6 + stacked_widget.addWidget(employee_list_page) # 7 + stacked_widget.addWidget(admin_total_money) # 8 + stacked_widget.addWidget(employee_menu_page) # 9 + stacked_widget.addWidget(employee_create_account_page) # 10 + stacked_widget.addWidget(show_bank_user_data_page1) # 11 + stacked_widget.addWidget(show_bank_user_data_page2) # 12 + stacked_widget.addWidget(add_balance_search_page) # 13 + stacked_widget.addWidget(add_balance_page) # 14 + stacked_widget.addWidget(withdraw_money_search_page) # 15 + stacked_widget.addWidget(withdraw_money_page) # 16 + stacked_widget.addWidget(check_balance_search_page) # 17 + stacked_widget.addWidget(check_balance_page) # 18 + stacked_widget.addWidget(update_empolyee_search_page) # 19 + stacked_widget.addWidget(update_employee_page) # 20 + + main_layout.addWidget(stacked_widget) + main_window.setCentralWidget(central_widget) + + # Set initial page + stacked_widget.setCurrentIndex(9) + + return stacked_widget, { + "admin_name": admin_name, + "admin_password": admin_password, + "admin_submit": admin_submit, + "employee_name": employee_name, + "employee_password": employee_password, + "employee_submit": employee_submit, + } + + +def main(): + """Main function to launch the application.""" + app = QtWidgets.QApplication(sys.argv) + main_window = QtWidgets.QMainWindow() + stacked_widget, widgets = setup_main_window(main_window) + + # Example: Connect submit buttons to print input values + + main_window.show() + sys.exit(app.exec_()) + + +# ------------------------------------------------------------------------------------------------------------- + +if __name__ == "__main__": + main() +# TO-DO: +# 1.refese the employee list page after add or delete or update employee diff --git a/bank_managment_system/backend.py b/bank_managment_system/backend.py index e54027cf0a6..081d4d3d551 100644 --- a/bank_managment_system/backend.py +++ b/bank_managment_system/backend.py @@ -1,248 +1,147 @@ import sqlite3 - - -# making connection with database -def connect_database(): - global conn - global cur - conn = sqlite3.connect("bankmanaging.db") - - cur = conn.cursor() - - cur.execute( - "create table if not exists bank (acc_no int, name text, age int, address text, balance int, account_type text, mobile_number int)" - ) - cur.execute( - "create table if not exists staff (name text, pass text,salary int, position text)" - ) - cur.execute("create table if not exists admin (name text, pass text)") - cur.execute("insert into admin values('arpit','123')") - conn.commit() - cur.execute("select acc_no from bank") - acc = cur.fetchall() - global acc_no - if len(acc) == 0: - acc_no = 1 - else: - acc_no = int(acc[-1][0]) + 1 - - -# check admin dtails in database -def check_admin(name, password): - cur.execute("select * from admin") - data = cur.fetchall() - - if data[0][0] == name and data[0][1] == password: - return True - return - - -# create employee in database -def create_employee(name, password, salary, positon): - print(password) - cur.execute("insert into staff values(?,?,?,?)", (name, password, salary, positon)) - conn.commit() - - -# check employee details in dabase for employee login -def check_employee(name, password): - print(password) - print(name) - cur.execute("select name,pass from staff") - data = cur.fetchall() - print(data) - if len(data) == 0: - return False - for i in range(len(data)): - if data[i][0] == name and data[i][1] == password: - return True - - return False - - -# create customer details in database -def create_customer(name, age, address, balance, acc_type, mobile_number): - global acc_no - cur.execute( - "insert into bank values(?,?,?,?,?,?,?)", - (acc_no, name, age, address, balance, acc_type, mobile_number), - ) - conn.commit() - acc_no = acc_no + 1 - return acc_no - 1 - - -# check account in database -def check_acc_no(acc_no): - cur.execute("select acc_no from bank") - list_acc_no = cur.fetchall() - - for i in range(len(list_acc_no)): - if list_acc_no[i][0] == int(acc_no): - return True - return False - - -# get all details of a particular customer from database -def get_details(acc_no): - cur.execute("select * from bank where acc_no=?", (acc_no)) - global detail - detail = cur.fetchall() - print(detail) - if len(detail) == 0: - return False - else: - return ( - detail[0][0], - detail[0][1], - detail[0][2], - detail[0][3], - detail[0][4], - detail[0][5], - detail[0][6], +import os + + +class DatabaseManager: + def __init__(self, db_name="bankmanaging.db"): + self.db_path = os.path.join(os.path.dirname(__file__), db_name) + self.conn = sqlite3.connect(self.db_path, check_same_thread=False) + self.cur = self.conn.cursor() + self._setup_tables() + self.acc_no = self._get_last_acc_no() + 1 + + def _setup_tables(self): + self.cur.execute(""" + CREATE TABLE IF NOT EXISTS bank ( + acc_no INTEGER PRIMARY KEY, + name TEXT, + age INTEGER, + address TEXT, + balance INTEGER, + account_type TEXT, + mobile_number TEXT + ) + """) + self.cur.execute(""" + CREATE TABLE IF NOT EXISTS staff ( + name TEXT, + pass TEXT, + salary INTEGER, + position TEXT + ) + """) + self.cur.execute("CREATE TABLE IF NOT EXISTS admin (name TEXT, pass TEXT)") + self.cur.execute("SELECT COUNT(*) FROM admin") + if self.cur.fetchone()[0] == 0: + self.cur.execute("INSERT INTO admin VALUES (?, ?)", ("admin", "admin123")) + self.conn.commit() + + def _get_last_acc_no(self): + self.cur.execute("SELECT MAX(acc_no) FROM bank") + last = self.cur.fetchone()[0] + return last if last else 0 + + # ----------------- Admin ----------------- + def check_admin(self, name, password): + self.cur.execute( + "SELECT 1 FROM admin WHERE name=? AND pass=?", (name, password) ) + return self.cur.fetchone() is not None + # ----------------- Staff ----------------- + def create_employee(self, name, password, salary, position): + self.cur.execute( + "INSERT INTO staff VALUES (?, ?, ?, ?)", (name, password, salary, position) + ) + self.conn.commit() -# add new balance of customer in bank database -def update_balance(new_money, acc_no): - cur.execute("select balance from bank where acc_no=?", (acc_no,)) - bal = cur.fetchall() - bal = bal[0][0] - new_bal = bal + int(new_money) - - cur.execute("update bank set balance=? where acc_no=?", (new_bal, acc_no)) - conn.commit() - - -# deduct balance from customer bank database -def deduct_balance(new_money, acc_no): - cur.execute("select balance from bank where acc_no=?", (acc_no,)) - bal = cur.fetchall() - bal = bal[0][0] - if bal < int(new_money): - return False - else: - new_bal = bal - int(new_money) - - cur.execute("update bank set balance=? where acc_no=?", (new_bal, acc_no)) - conn.commit() - return True - - -# gave balance of a particular account number from database -def check_balance(acc_no): - cur.execute("select balance from bank where acc_no=?", (acc_no)) - bal = cur.fetchall() - return bal[0][0] - - -# update_name_in_bank_table -def update_name_in_bank_table(new_name, acc_no): - print(new_name) - conn.execute("update bank set name='{}' where acc_no={}".format(new_name, acc_no)) - conn.commit() - - -# update_age_in_bank_table -def update_age_in_bank_table(new_name, acc_no): - print(new_name) - conn.execute("update bank set age={} where acc_no={}".format(new_name, acc_no)) - conn.commit() - - -# update_address_in_bank_table -def update_address_in_bank_table(new_name, acc_no): - print(new_name) - conn.execute( - "update bank set address='{}' where acc_no={}".format(new_name, acc_no) - ) - conn.commit() - - -# list of all customers in bank -def list_all_customers(): - cur.execute("select * from bank") - deatil = cur.fetchall() - - return deatil - - -# delete account from database -def delete_acc(acc_no): - cur.execute("delete from bank where acc_no=?", (acc_no)) - conn.commit() - - -# show employees detail from staff table -def show_employees(): - cur.execute("select name, salary, position,pass from staff") - detail = cur.fetchall() - return detail - + def check_employee(self, name, password): + self.cur.execute( + "SELECT 1 FROM staff WHERE name=? AND pass=?", (name, password) + ) + return self.cur.fetchone() is not None + + def show_employees(self): + self.cur.execute("SELECT name, salary, position FROM staff") + return self.cur.fetchall() + + def update_employee(self, field, new_value, name): + if field not in {"name", "pass", "salary", "position"}: + raise ValueError("Invalid employee field") + self.cur.execute(f"UPDATE staff SET {field}=? WHERE name=?", (new_value, name)) + self.conn.commit() + + def check_name_in_staff(self, name): + self.cur.execute("SELECT 1 FROM staff WHERE name=?", (name,)) + return self.cur.fetchone() is not None + + # ----------------- Customer ----------------- + def create_customer(self, name, age, address, balance, acc_type, mobile_number): + acc_no = self.acc_no + self.cur.execute( + "INSERT INTO bank VALUES (?, ?, ?, ?, ?, ?, ?)", + (acc_no, name, age, address, balance, acc_type, mobile_number), + ) + self.conn.commit() + self.acc_no += 1 + return acc_no + + def check_acc_no(self, acc_no): + self.cur.execute("SELECT 1 FROM bank WHERE acc_no=?", (acc_no,)) + return self.cur.fetchone() is not None + + def get_details(self, acc_no): + self.cur.execute("SELECT * FROM bank WHERE acc_no=?", (acc_no,)) + return self.cur.fetchone() + + def get_detail(self, acc_no): + self.cur.execute("SELECT name, balance FROM bank WHERE acc_no=?", (acc_no,)) + return self.cur.fetchone() + + def update_customer(self, field, new_value, acc_no): + if field not in {"name", "age", "address", "mobile_number", "account_type"}: + raise ValueError("Invalid customer field") + self.cur.execute( + f"UPDATE bank SET {field}=? WHERE acc_no=?", (new_value, acc_no) + ) + self.conn.commit() -# return all money in bank -def all_money(): - cur.execute("select balance from bank") - bal = cur.fetchall() - print(bal) - if len(bal) == 0: + def update_balance(self, amount, acc_no): + self.cur.execute( + "UPDATE bank SET balance = balance + ? WHERE acc_no=?", (amount, acc_no) + ) + self.conn.commit() + + def deduct_balance(self, amount, acc_no): + self.cur.execute("SELECT balance FROM bank WHERE acc_no=?", (acc_no,)) + bal = self.cur.fetchone() + if bal and bal[0] >= amount: + self.cur.execute( + "UPDATE bank SET balance=balance-? WHERE acc_no=?", (amount, acc_no) + ) + self.conn.commit() + return True return False - else: - total = 0 - for i in bal: - total = total + i[0] - return total - - -# return a list of all employees name -def show_employees_for_update(): - cur.execute("select * from staff") - detail = cur.fetchall() - return detail - - -# update employee name from data base -def update_employee_name(new_name, old_name): - print(new_name, old_name) - cur.execute("update staff set name='{}' where name='{}'".format(new_name, old_name)) - conn.commit() - -def update_employee_password(new_pass, old_name): - print(new_pass, old_name) - cur.execute("update staff set pass='{}' where name='{}'".format(new_pass, old_name)) - conn.commit() + def check_balance(self, acc_no): + self.cur.execute("SELECT balance FROM bank WHERE acc_no=?", (acc_no,)) + bal = self.cur.fetchone() + return bal[0] if bal else 0 + def list_all_customers(self): + self.cur.execute("SELECT * FROM bank") + return self.cur.fetchall() -def update_employee_salary(new_salary, old_name): - print(new_salary, old_name) - cur.execute( - "update staff set salary={} where name='{}'".format(new_salary, old_name) - ) - conn.commit() + def delete_acc(self, acc_no): + self.cur.execute("DELETE FROM bank WHERE acc_no=?", (acc_no,)) + self.conn.commit() + # ----------------- Stats ----------------- + def all_money(self): + self.cur.execute("SELECT SUM(balance) FROM bank") + total = self.cur.fetchone()[0] + return total if total else 0 -def update_employee_position(new_pos, old_name): - print(new_pos, old_name) - cur.execute( - "update staff set position='{}' where name='{}'".format(new_pos, old_name) - ) - conn.commit() - - -# get name and balance from bank of a particular account number -def get_detail(acc_no): - cur.execute("select name, balance from bank where acc_no=?", (acc_no)) - details = cur.fetchall() - return details - - -def check_name_in_staff(name): - cur = conn.cursor() - cur.execute("select name from staff") - details = cur.fetchall() - - for i in details: - if i[0] == name: - return True - return False + # ----------------- Cleanup ----------------- + def close(self): + self.conn.close() diff --git a/bank_managment_system/frontend.py b/bank_managment_system/frontend.py index c885c2b37c3..f84903f3036 100644 --- a/bank_managment_system/frontend.py +++ b/bank_managment_system/frontend.py @@ -34,7 +34,6 @@ def delete_create(): and len(acc_type) != 0 and len(mobile_number) != 0 ): - acc_no = backend.create_customer( name, age, address, balance, acc_type, mobile_number ) @@ -655,7 +654,6 @@ def back_page2(): result = backend.check_acc_no(acc_no) print(result) if not result: - label = Label(search_frame, text="invalid account number") label.grid(pady=2) button = Button(search_frame, text="Exit", command=back_page2) @@ -877,7 +875,6 @@ def database_calling(): new_salary = entry19.get() r = check_string_in_account_no(new_salary) if len(new_salary) != 0 and r: - old_name = staff_name.get() backend.update_employee_salary(new_salary, old_name) entry19.destroy() @@ -900,7 +897,6 @@ def update_position_in_database(): def database_calling(): new_position = entry19.get() if len(new_position) != 0: - old_name = staff_name.get() backend.update_employee_position(new_position, old_name) entry19.destroy() @@ -977,7 +973,6 @@ def database_calling(): if len(name) != 0: result = backend.check_name_in_staff(name) if result: - update_that_particular_employee() else: label = Label(show_employee_frame, text="Employee not found") diff --git a/bank_managment_system/untitled.ui b/bank_managment_system/untitled.ui new file mode 100644 index 00000000000..12c130fb4e7 --- /dev/null +++ b/bank_managment_system/untitled.ui @@ -0,0 +1,862 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + background-color: #f0f2f5; +QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + + + + + 2 + + + + + + + + background-color: #ffffff; + border-radius: 10px; + padding: 10px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 30 + + + + + color: #2c3e50; + padding: 10px; + + + + Bank Management system + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 300 + 0 + + + + + 16 + + + + + + background-color: #ffffff; + border-radius: 15px; + padding: 20px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + Admin + + + + + + + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + Employee + + + + + + + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + Exit + + + + + + + + + + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 340 + 210 + 261 + 231 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 20 + 20 + 75 + 23 + + + + PushButton + + + + + + + + + + + + + + background-color: #ffffff; + border-radius: 10px; + padding: 10px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 30 + + + + + color: #2c3e50; + padding: 10px; + + + + Employee Login + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 340 + 200 + + + + + 16 + + + + + + background-color: #ffffff; + border-radius: 15px; + padding: 10px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 120 + 0 + + + + + 12 + 75 + true + + + + + color: #2c3e50; + + + + Name : + + + + + + + background-color: rgb(168, 168, 168); + + + + + + + + + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 120 + 0 + + + + + 12 + 75 + true + + + + + color: #2c3e50; + + + + Password : + + + + + + + background-color: rgb(168, 168, 168); + + + + + + + + + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 60 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 150 + 0 + + + + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + Submit + + + + + + + + + + + + + + + + + + + + + background-color: #ffffff; + border-radius: 10px; + padding: 10px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 30 + + + + + color: #2c3e50; + padding: 10px; + + + + Admin Login + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 340 + 200 + + + + + 16 + + + + + + background-color: #ffffff; + border-radius: 15px; + padding: 10px; + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 120 + 0 + + + + + 12 + 75 + true + + + + + color: #2c3e50; + + + + Name : + + + + + + + background-color: rgb(168, 168, 168); + + + + + + + + + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 120 + 0 + + + + + 12 + 75 + true + + + + + color: #2c3e50; + + + + Password : + + + + + + + background-color: rgb(168, 168, 168); + + + + + + + + + + + + + padding:7 + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 60 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 150 + 0 + + + + QPushButton { + background-color: #3498db; + color: white; + font-family: 'Segoe UI'; + font-size: 16px; + font-weight: bold; + border-radius: 8px; + padding: 12px; + border: none; + } + QPushButton:hover { + background-color: #2980b9; + } + QPushButton:pressed { + background-color: #1c6ea4; + } + + + Submit + + + + + + + + + + + + + + + + + + + + + + diff --git a/bankmanaging.db b/bankmanaging.db deleted file mode 100644 index e54eb36ea21..00000000000 Binary files a/bankmanaging.db and /dev/null differ diff --git a/basic_cal.py b/basic_cal.py new file mode 100644 index 00000000000..a22093aef93 --- /dev/null +++ b/basic_cal.py @@ -0,0 +1,8 @@ +while True: + try: + print(eval(input("enter digits with operator (e.g. 5+5)\n"))) + except: + print("Invalid Input, try again..") + +# Simple Calculator using eval() in Python +# This calculator takes user input like "5+5" or "10/2" and shows the result. diff --git a/billing.py b/billing.py new file mode 100644 index 00000000000..451135cc91c --- /dev/null +++ b/billing.py @@ -0,0 +1,68 @@ + +items = {"apple": 5, "soap": 4, "soda": 6, "pie": 7, "cake": 20} +total_price = 0 +try: + print(""" +Press 1 for apple +Press 2 for soap +Press 3 for soda +Press 4 for pie +Press 5 for cake +Press 6 for bill""") + while True: + choice = int(input("enter your choice here..")) + if choice == 1: + print("Apple added to the cart") + total_price += items["apple"] + + elif choice == 2: + print("soap added to the cart") + total_price += items["soap"] + elif choice == 3: + print("soda added to the cart") + total_price += items["soda"] + elif choice == 4: + print("pie added to the cart") + total_price += items["pie"] + elif choice == 5: + print("cake added to the cart") + total_price += items["cake"] + elif choice == 6: + print(f""" + +Total amount :{total_price} +""") + break + else: + print("Please enter the digits within the range 1-6..") +except: + print("enter only digits") +""" +Code Explanation: +A dictionary named items is created to store product names and their corresponding prices. +Example: "apple": 5 means apple costs 5 units. + +one variable is initialized: + +total_price to keep track of the overall bill. + + +A menu is printed that shows the user what number to press for each item or to generate the final bill. + +A while True loop is started, meaning it will keep running until the user explicitly chooses to stop (by selecting "6" for the bill). + +Inside the loop: + +The user is asked to enter a number (1–6). + +Depending on their input: + +If they enter 1–5, the corresponding item is "added to the cart" and its price is added to the total_price. + +If they enter 6, the total price is printed and the loop breaks (ends). + +If they enter something outside 1–6, a warning message is shown. + +The try-except block is used to catch errors if the user enters something that's not a number (like a letter or symbol). +In that case, it simply shows: "enter only digits". +""" diff --git a/binary search.py b/binary search.py index cfad85df817..2cf464c8f20 100644 --- a/binary search.py +++ b/binary search.py @@ -1,23 +1,25 @@ -def binarySearchAppr (arr, start, end, x): -# check condition - if end >= start: - mid = start + (end- start)//2 - # If element is present at the middle - if arr[mid] == x: - return mid - # If element is smaller than mid - elif arr[mid] > x: - return binarySearchAppr(arr, start, mid-1, x) - # Else the element greator than mid - else: - return binarySearchAppr(arr, mid+1, end, x) - else: - # Element is not found in the array - return -1 -arr = sorted(['t','u','t','o','r','i','a','l']) -x ='r' -result = binarySearchAppr(arr, 0, len(arr)-1, x) +def binarySearchAppr(arr, start, end, x): + # check condition + if end >= start: + mid = start + (end - start) // 2 + # If element is present at the middle + if arr[mid] == x: + return mid + # If element is smaller than mid + elif arr[mid] > x: + return binarySearchAppr(arr, start, mid - 1, x) + # Else the element greator than mid + else: + return binarySearchAppr(arr, mid + 1, end, x) + else: + # Element is not found in the array + return -1 + + +arr = sorted(["t", "u", "t", "o", "r", "i", "a", "l"]) +x = "r" +result = binarySearchAppr(arr, 0, len(arr) - 1, x) if result != -1: - print ("Element is present at index "+str(result)) + print("Element is present at index " + str(result)) else: - print ("Element is not present in array") + print("Element is not present in array") diff --git a/binary_search_trees/delete_a_node_in_bst.py b/binary_search_trees/delete_a_node_in_bst.py index bfb6a0708ac..8d144cba4ac 100644 --- a/binary_search_trees/delete_a_node_in_bst.py +++ b/binary_search_trees/delete_a_node_in_bst.py @@ -1,35 +1,37 @@ +from typing import Optional from inorder_successor import inorder_successor +from tree_node import Node + + # The above line imports the inorder_successor function from the inorder_successor.py file -def delete_node(root,val): - """ This function deletes a node with value val from the BST""" - - # search in the left subtree - if root.data < val: - root.right = delete_node(root.right,val) - - # search in the right subtree - elif root.data>val: - root.left=delete_node(root.left,val) - - # node to be deleted is found - else: - # case 1: no child leaf node - if root.left is None and root.right is None: - return None - - # case 2: one child - if root.left is None: - return root.right - - # case 2: one child - elif root.right is None: - return root.left - - # case 3: two children - - # find the inorder successor - IS=inorder_successor(root.right) - root.data=IS.data - root.right=delete_node(root.right,IS.data) - return root - \ No newline at end of file +def delete_node(root: Node, val: int) -> Optional[Node]: + """This function deletes a node with value val from the BST""" + + # Search in the right subtree + if root.data < val: + root.right = delete_node(root.right, val) + + # Search in the left subtree + elif root.data > val: + root.left = delete_node(root.left, val) + + # Node to be deleted is found + else: + # Case 1: No child (leaf node) + if root.left is None and root.right is None: + return None + + # Case 2: One child + if root.left is None: + return root.right + + # Case 2: One child + elif root.right is None: + return root.left + + # Case 3: Two children + # Find the inorder successor + is_node: Node = inorder_successor(root.right) + root.data = is_node.data + root.right = delete_node(root.right, is_node.data) + return root diff --git a/binary_search_trees/inorder_successor.py b/binary_search_trees/inorder_successor.py index b9b15666eea..b7c341e50e9 100644 --- a/binary_search_trees/inorder_successor.py +++ b/binary_search_trees/inorder_successor.py @@ -1,10 +1,13 @@ -def inorder_successor(root): - # This function returns the inorder successor of a node in a BST - - # The inorder successor of a node is the node with the smallest value greater than the value of the node - current=root - - # The inorder successor is the leftmost node in the right subtree - while current.left is not None: - current=current.left - return current \ No newline at end of file +from tree_node import Node + + +def inorder_successor(root: Node) -> Node: + """This function returns the inorder successor of a node in a BST""" + + # The inorder successor of a node is the node with the smallest value greater than the value of the node + current: Node = root + + # The inorder successor is the leftmost node in the right subtree + while current.left is not None: + current = current.left + return current diff --git a/binary_search_trees/inorder_traversal.py b/binary_search_trees/inorder_traversal.py index 3bb4c4101ed..b63b01dbb28 100644 --- a/binary_search_trees/inorder_traversal.py +++ b/binary_search_trees/inorder_traversal.py @@ -1,15 +1,19 @@ -def inorder(root): - """ This function performs an inorder traversal of a BST""" - +from typing import Optional +from tree_node import Node + + +def inorder(root: Optional[Node]) -> None: + """This function performs an inorder traversal of a BST""" + # The inorder traversal of a BST is the nodes in increasing order if root is None: return - + # Traverse the left subtree inorder(root.left) - + # Print the root node print(root.data) - + # Traverse the right subtree - inorder(root.right) \ No newline at end of file + inorder(root.right) diff --git a/binary_search_trees/insert_in_bst.py b/binary_search_trees/insert_in_bst.py index dd726d06596..8201261ae1b 100644 --- a/binary_search_trees/insert_in_bst.py +++ b/binary_search_trees/insert_in_bst.py @@ -1,17 +1,19 @@ +from typing import Optional from tree_node import Node -def insert(root,val): - - """ This function inserts a node with value val into the BST""" - + + +def insert(root: Optional[Node], val: int) -> Node: + """This function inserts a node with value val into the BST""" + # If the tree is empty, create a new node if root is None: return Node(val) - + # If the value to be inserted is less than the root value, insert in the left subtree if val < root.data: - root.left = insert(root.left,val) - + root.left = insert(root.left, val) + # If the value to be inserted is greater than the root value, insert in the right subtree else: - root.right = insert(root.right,val) - return root \ No newline at end of file + root.right = insert(root.right, val) + return root diff --git a/binary_search_trees/main.py b/binary_search_trees/main.py index 96ebb6ae8eb..f2f618920e4 100644 --- a/binary_search_trees/main.py +++ b/binary_search_trees/main.py @@ -1,18 +1,17 @@ -from tree_node import Node +from typing import Optional from insert_in_bst import insert from delete_a_node_in_bst import delete_node from search_in_bst import search -from inorder_successor import inorder_successor from mirror_a_bst import create_mirror_bst from print_in_range import print_in_range from root_to_leaf_paths import print_root_to_leaf_paths from validate_bst import is_valid_bst +from tree_node import Node -def main(): - +def main() -> None: # Create a BST - root = None + root: Optional[Node] = None root = insert(root, 50) root = insert(root, 30) root = insert(root, 20) @@ -20,66 +19,63 @@ def main(): root = insert(root, 70) root = insert(root, 60) root = insert(root, 80) - + # Print the inorder traversal of the BST print("Inorder traversal of the original BST:") print_in_range(root, 10, 90) - + # Print the root to leaf paths print("Root to leaf paths:") print_root_to_leaf_paths(root, []) - + # Check if the tree is a BST - print("Is the tree a BST:", is_valid_bst(root,None,None)) - - + print("Is the tree a BST:", is_valid_bst(root, None, None)) + # Delete nodes from the BST print("Deleting 20 from the BST:") - root = delete_node(root, 20) - + if root is not None: + root = delete_node(root, 20) + # Print the inorder traversal of the BST print("Inorder traversal of the BST after deleting 20:") print_in_range(root, 10, 90) - + # Check if the tree is a BST - print("Is the tree a BST:", is_valid_bst(root,None,None)) - - + print("Is the tree a BST:", is_valid_bst(root, None, None)) + # Delete nodes from the BST print("Deleting 30 from the BST:") - root = delete_node(root, 30) - + if root is not None: + root = delete_node(root, 30) + # Print the inorder traversal of the BST after deleting 30 print("Inorder traversal of the BST after deleting 30:") print_in_range(root, 10, 90) - + # Check if the tree is a BST - print("Is the tree a BST:", is_valid_bst(root,None,None)) - + print("Is the tree a BST:", is_valid_bst(root, None, None)) + # Delete nodes from the BST print("Deleting 50 from the BST:") - root = delete_node(root, 50) - + if root is not None: + root = delete_node(root, 50) + # Print the inorder traversal of the BST after deleting 50 print("Inorder traversal of the BST after deleting 50:") print_in_range(root, 10, 90) - + # Check if the tree is a BST - print("Is the tree a BST:", is_valid_bst(root,None,None)) - - + print("Is the tree a BST:", is_valid_bst(root, None, None)) + print("Searching for 70 in the BST:", search(root, 70)) print("Searching for 100 in the BST:", search(root, 100)) print("Inorder traversal of the BST:") print_in_range(root, 10, 90) print("Creating a mirror of the BST:") - mirror_root = create_mirror_bst(root) + mirror_root: Optional[Node] = create_mirror_bst(root) print("Inorder traversal of the mirror BST:") print_in_range(mirror_root, 10, 90) + if __name__ == "__main__": main() - - - - diff --git a/binary_search_trees/mirror_a_bst.py b/binary_search_trees/mirror_a_bst.py index 73f080f85c2..579b7766092 100644 --- a/binary_search_trees/mirror_a_bst.py +++ b/binary_search_trees/mirror_a_bst.py @@ -1,16 +1,19 @@ +from typing import Optional from tree_node import Node -def create_mirror_bst(root): - """ Function to create a mirror of a binary search tree""" - + + +def create_mirror_bst(root: Optional[Node]) -> Optional[Node]: + """Function to create a mirror of a binary search tree""" + # If the tree is empty, return None if root is None: return None - - # Create a new node with the root value - + # Recursively create the mirror of the left and right subtrees - left_mirror = create_mirror_bst(root.left) - right_mirror = create_mirror_bst(root.right) + left_mirror: Optional[Node] = create_mirror_bst(root.left) + right_mirror: Optional[Node] = create_mirror_bst(root.right) + + # Swap left and right subtrees root.left = right_mirror root.right = left_mirror - return root \ No newline at end of file + return root diff --git a/binary_search_trees/print_in_range.py b/binary_search_trees/print_in_range.py index fecca23ba24..351c81422f8 100644 --- a/binary_search_trees/print_in_range.py +++ b/binary_search_trees/print_in_range.py @@ -1,21 +1,28 @@ -def print_in_range(root,k1,k2): - - """ This function prints the nodes in a BST that are in the range k1 to k2 inclusive""" - - # If the tree is empty, return - if root is None: - return - - # If the root value is in the range, print the root value - if root.data >= k1 and root.data <= k2: - print_in_range(root.left,k1,k2) - print(root.data) - print_in_range(root.right,k1,k2) - - # If the root value is less than k1, the nodes in the range will be in the right subtree - elif root.data < k1: - print_in_range(root.left,k1,k2) - - # If the root value is greater than k2, the nodes in the range will be in the left subtree - else: - print_in_range(root.right,k1,k2) \ No newline at end of file +from typing import Optional +from tree_node import Node + + +def print_in_range(root: Optional[Node], k1: int, k2: int) -> None: + """This function prints the nodes in a BST that are in the range k1 to k2 inclusive""" + + # If the tree is empty, return + if root is None: + return + + # If the root value is in the range, print the root value + if k1 <= root.data <= k2: + print_in_range(root.left, k1, k2) + print(root.data) + print_in_range(root.right, k1, k2) + + # If the root value is less than k1, the nodes in the range will be in the right subtree + elif root.data < k1: + print_in_range( + root.right, k1, k2 + ) # Fixed: original had left, which is incorrect + + # If the root value is greater than k2, the nodes in the range will be in the left subtree + else: + print_in_range( + root.left, k1, k2 + ) # Fixed: original had right, which is incorrect diff --git a/binary_search_trees/root_to_leaf_paths.py b/binary_search_trees/root_to_leaf_paths.py index 22867a713ec..ad30892886c 100644 --- a/binary_search_trees/root_to_leaf_paths.py +++ b/binary_search_trees/root_to_leaf_paths.py @@ -1,17 +1,21 @@ -def print_root_to_leaf_paths(root, path): - """ This function prints all the root to leaf paths in a BST""" - +from typing import Optional, List +from tree_node import Node + + +def print_root_to_leaf_paths(root: Optional[Node], path: List[int]) -> None: + """This function prints all the root to leaf paths in a BST""" + # If the tree is empty, return if root is None: return - + # Add the root value to the path path.append(root.data) if root.left is None and root.right is None: print(path) - + # Recursively print the root to leaf paths in the left and right subtrees else: print_root_to_leaf_paths(root.left, path) print_root_to_leaf_paths(root.right, path) - path.pop() \ No newline at end of file + path.pop() diff --git a/binary_search_trees/search_in_bst.py b/binary_search_trees/search_in_bst.py index 4a95780e43a..c5675a6a558 100644 --- a/binary_search_trees/search_in_bst.py +++ b/binary_search_trees/search_in_bst.py @@ -1,15 +1,19 @@ -def search(root, val): - """ This function searches for a node with value val in the BST and returns True if found, False otherwise""" - +from typing import Optional +from tree_node import Node + + +def search(root: Optional[Node], val: int) -> bool: + """This function searches for a node with value val in the BST and returns True if found, False otherwise""" + # If the tree is empty, return False - if root == None: + if root is None: return False - + # If the root value is equal to the value to be searched, return True if root.data == val: return True - + # If the value to be searched is less than the root value, search in the left subtree if root.data > val: return search(root.left, val) - return search(root.right, val) \ No newline at end of file + return search(root.right, val) diff --git a/binary_search_trees/tree_node.py b/binary_search_trees/tree_node.py index 1d35656da08..a34c0bf552e 100644 --- a/binary_search_trees/tree_node.py +++ b/binary_search_trees/tree_node.py @@ -1,8 +1,9 @@ +from typing import Optional -# Node class for binary tree +# Node class for binary tree class Node: - def __init__(self, data): - self.data = data - self.left = None - self.right = None + def __init__(self, data: int) -> None: + self.data: int = data + self.left: Optional[Node] = None + self.right: Optional[Node] = None diff --git a/binary_search_trees/validate_bst.py b/binary_search_trees/validate_bst.py index 3569c833005..186c8fbc039 100644 --- a/binary_search_trees/validate_bst.py +++ b/binary_search_trees/validate_bst.py @@ -1,17 +1,25 @@ -def is_valid_bst(root,min,max): - """ Function to check if a binary tree is a binary search tree""" - +from typing import Optional +from tree_node import Node + + +def is_valid_bst( + root: Optional[Node], min_node: Optional[Node], max_node: Optional[Node] +) -> bool: + """Function to check if a binary tree is a binary search tree""" + # If the tree is empty, return True if root is None: return True - - # If the root value is less than the minimum value or greater than the maximum value, return False - if min is not None and root.data <= min.data: + + # If the root value is less than or equal to the minimum value, return False + if min_node is not None and root.data <= min_node.data: return False - - # If the root value is greater than the maximum value or less than the minimum value, return False - elif max is not None and root.data >= max.data: + + # If the root value is greater than or equal to the maximum value, return False + if max_node is not None and root.data >= max_node.data: return False - + # Recursively check if the left and right subtrees are BSTs - return is_valid_bst(root.left,min,root) and is_valid_bst(root.right,root,max) \ No newline at end of file + return is_valid_bst(root.left, min_node, root) and is_valid_bst( + root.right, root, max_node + ) diff --git a/binod.txt b/binod.txt deleted file mode 100644 index 796c41c9f48..00000000000 --- a/binod.txt +++ /dev/null @@ -1 +0,0 @@ -I am binod diff --git a/birthdays.py b/birthdays.py index 19ad2b001a2..cb67003d4ea 100644 --- a/birthdays.py +++ b/birthdays.py @@ -1,15 +1,14 @@ -birthdays = {'Alice': 'Apr 1', 'Bob': 'Dec 12', 'Carol': 'Mar 4'} +birthdays = {"Alice": "Apr 1", "Bob": "Dec 12", "Carol": "Mar 4"} while True: - - print('Enter a name: (blank to quit)') - name = input() - if name == '': - break - if name in birthdays: - print(birthdays[name] + ' is the birthday of ' + name) - else: - print('I do not have birthday information for ' + name) - print('What is their birthday?') - bday = input() - birthdays[name] = bday - print('Birthday database updated.') + print("Enter a name: (blank to quit)") + name = input() + if name == "": + break + if name in birthdays: + print(birthdays[name] + " is the birthday of " + name) + else: + print("I do not have birthday information for " + name) + print("What is their birthday?") + bday = input() + birthdays[name] = bday + print("Birthday database updated.") diff --git a/blackjack.py b/blackjack.py index 1cdac41bc43..b2386ff7828 100644 --- a/blackjack.py +++ b/blackjack.py @@ -90,7 +90,6 @@ def dealer_choice(): while sum(p_cards) < 21: - k = input("Want to hit or stay?\n Press 1 for hit and 0 for stay ") if k == 1: random.shuffle(deck) diff --git a/bodymass.py b/bodymass.py index be37d0db0ef..bfc2c01e1ee 100644 --- a/bodymass.py +++ b/bodymass.py @@ -1,19 +1,19 @@ -kilo = float (input("kilonuzu giriniz(örnek: 84.9): ")) -boy = float (input("Boyunuzu m cinsinden giriniz: ")) +kilo = float(input("kilonuzu giriniz(örnek: 84.9): ")) +boy = float(input("Boyunuzu m cinsinden giriniz: ")) -vki = (kilo / (boy**2)) +vki = kilo / (boy**2) if vki < 18.5: print(f"vucut kitle indeksiniz: {vki} zayıfsınız.") elif vki < 25: - print (f"vucut kitle indeksiniz: {vki} normalsiniz.") + print(f"vucut kitle indeksiniz: {vki} normalsiniz.") elif vki < 30: - print (f"vucut kitle indeksiniz: {vki} fazla kilolusunuz.") + print(f"vucut kitle indeksiniz: {vki} fazla kilolusunuz.") elif vki < 35: - print (f"vucut kitle indeksiniz: {vki} 1. derece obezsiniz") + print(f"vucut kitle indeksiniz: {vki} 1. derece obezsiniz") elif vki < 40: - print (f"vucut kitle indeksiniz: {vki} 2.derece obezsiniz.") -elif vki >40: - print (f"vucut kitle indeksiniz: {vki} 3.derece obezsiniz.") + print(f"vucut kitle indeksiniz: {vki} 2.derece obezsiniz.") +elif vki > 40: + print(f"vucut kitle indeksiniz: {vki} 3.derece obezsiniz.") else: print("Yanlış değer girdiniz.") diff --git a/bookstore_manangement_system.py b/bookstore_manangement_system.py index 7ae31cb195b..9ef2809337b 100644 --- a/bookstore_manangement_system.py +++ b/bookstore_manangement_system.py @@ -16,7 +16,6 @@ def DBZ(): - # IF NO. OF BOOKS IS ZERO(0) THAN DELETE IT AUTOMATICALLY display = "select * from books" @@ -24,9 +23,7 @@ def DBZ(): data2 = mycur.fetchall() for y in data2: - if y[6] <= 0: - delete = "delete from books where Numbers_of_book<=0" mycur.execute(delete) mycon.commit() @@ -44,7 +41,6 @@ def end_separator(): def login(): - user_name = input(" USER NAME --- ") passw = input(" PASSWORD --- ") @@ -53,13 +49,10 @@ def login(): data2 = mycur.fetchall() for y in data2: - if y[1] == user_name and y[2] == passw: - pass else: - separator() print(" Username or Password is Incorrect Try Again") @@ -70,11 +63,9 @@ def login(): passw = input(" PASSWORD --- ") if y[1] == user_name and y[2] == passw: - pass else: - separator() print(" Username or Password is Again Incorrect") @@ -82,7 +73,6 @@ def login(): def ViewAll(): - print("\u0332".join("BOOK NAMES~~")) print("------------------------------------") @@ -92,21 +82,17 @@ def ViewAll(): c = 0 for y in data2: - c = c + 1 print(c, "-->", y[1]) def CNB1(): - if y[6] == 0: - separator() print(" NOW THIS BOOK IS NOT AVAILABLE ") elif y[6] > 0 and y[6] <= 8: - separator() print("WARNING!!!!!!!!!!!!!!!!!!!!!!!") @@ -116,7 +102,6 @@ def CNB1(): print() elif y[6] > 8: - separator() print("NO. OF BOOKS LEFT IS ", y[6] - 1) @@ -126,16 +111,13 @@ def CNB1(): def CNB2(): - if y[6] <= 8: - separator() print("WARNING!!!!!!!!!!!!!!!!!!!!!!!") print("NO. OF THIS BOOK IS LOW", "\tONLY", y[6], "LEFT") else: - separator() print("NO. OF BOOKS LEFT IS ", y[6]) @@ -151,18 +133,14 @@ def CNB2(): mycur.execute(display12) data2222 = mycur.fetchall() for m in data2222: - if m[0] == 0: - c = m[0] display11 = "select * from login" mycur.execute(display11) data222 = mycur.fetchall() if c == 0: - if c == 0: - print("\t\t\t\t REGESTER ") print("\t\t\t\t----------------------------") @@ -174,7 +152,6 @@ def CNB2(): lenght = len(passw) if lenght >= 8 and lenght <= 20: - c = c + 1 insert55 = (c, user_name, passw) insert22 = "insert into login values(%s,%s,%s)" @@ -186,9 +163,7 @@ def CNB2(): login() else: - if lenght < 8: - separator() print(" Password Is less than 8 Characters Enter Again") @@ -200,7 +175,6 @@ def CNB2(): lenght1 = len(passw2) if lenght1 >= 8 and lenght1 <= 20: - c = c + 1 insert555 = (c, user_name2, passw2) insert222 = "insert into login values(%s,%s,%s)" @@ -212,7 +186,6 @@ def CNB2(): login() elif lenght > 20: - separator() print( @@ -226,7 +199,6 @@ def CNB2(): lenght = len(passw) if lenght >= 8 and lenght >= 20: - c = c + 1 insert55 = (c, user_name, passw) insert22 = "insert into login values(%s,%s,%s)" @@ -242,9 +214,7 @@ def CNB2(): mycon.commit() elif m[0] == 1: - if m[0] == 1: - login() @@ -261,7 +231,6 @@ def CNB2(): while a == True: - # PROGRAM STARTED print(" *TO VIEW ALL ENTER 1") @@ -280,7 +249,6 @@ def CNB2(): # VIEW if choice == 1: - print() ViewAll() @@ -290,7 +258,6 @@ def CNB2(): rep = input("Do You Want To Restart ?? yes / no -- ").lower() if rep == "yes": - end_separator() separator() @@ -300,7 +267,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -312,7 +278,6 @@ def CNB2(): # SEARCH / BUY if choice == 2: - book_name = input("ENTER BOOK NAME ---- ") separator() @@ -322,7 +287,6 @@ def CNB2(): data2 = mycur.fetchone() if data2 != None: - print("BOOK IS AVAILABLE") # BUY OR NOT @@ -336,7 +300,6 @@ def CNB2(): choice2 = int(input("ENTER YOUR CHOICE -- ")) if choice2 == 1: - # BUY 1 OR MORE separator() @@ -348,17 +311,13 @@ def CNB2(): choice3 = int(input("ENTER YOUR CHOICE -- ")) if choice3 == 1: - display = "select * from books" mycur.execute(display) data2 = mycur.fetchall() for y in data2: - if y[1] == book_name: - if y[6] > 0: - separator() u = ( @@ -383,7 +342,6 @@ def CNB2(): ).lower() if rep == "yes": - end_separator() separator() @@ -393,7 +351,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -401,7 +358,6 @@ def CNB2(): os._exit(0) if choice3 == 2: - separator() wb = int(input("ENTER NO. OF BOOKS -- ")) @@ -413,13 +369,9 @@ def CNB2(): data2 = mycur.fetchall() for y in data2: - if y[1] == book_name: - if wb > y[6]: - if y[6] > 0: - print("YOU CAN'T BUT THAT MUCH BOOKS") separator() @@ -437,7 +389,6 @@ def CNB2(): k = y[6] if choice44 == "y" or choice44 == "Y": - u2 = ( "update books set numbers_of_book=numbers_of_book -%s where name='%s'" % (k, book_name) @@ -458,11 +409,8 @@ def CNB2(): data2 = mycur.fetchall() for y in data2: - if y[1] == book_name: - if y[6] <= 8: - print( "WARNING!!!!!!!!!!!!!!!!!!!!!!!" ) @@ -484,7 +432,6 @@ def CNB2(): ).lower() if rep == "yes": - end_separator() separator() @@ -494,7 +441,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -502,7 +448,6 @@ def CNB2(): os._exit(0) elif choice44 == "n" or choice44 == "N": - print( "SORRY FOR INCONVENIENCE WE WILL TRY TO FULLFILL YOUR REQUIREMENT AS SOON AS POSSIBLE" ) @@ -516,7 +461,6 @@ def CNB2(): ).lower() if rep == "yes": - separator() DBZ() @@ -524,7 +468,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -532,7 +475,6 @@ def CNB2(): os._exit(0) elif y[6] == 0: - print( "SORRY NO BOOK LEFT WE WILL TRY TO FULLFILL YOUR REQUIREMENT AS SOON AS POSSIBLE" ) @@ -546,7 +488,6 @@ def CNB2(): ).lower() if rep == "yes": - separator() DBZ() @@ -554,7 +495,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -562,7 +502,6 @@ def CNB2(): os._exit(0) else: - u2 = ( "update books set numbers_of_book=numbers_of_book -%s where name='%s'" % (wb, book_name) @@ -581,9 +520,7 @@ def CNB2(): data2 = mycur.fetchall() for y in data2: - if y[1] == book_name: - CNB2() separator() @@ -593,7 +530,6 @@ def CNB2(): ).lower() if rep == "yes": - separator() DBZ() @@ -601,7 +537,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -609,7 +544,6 @@ def CNB2(): os._exit(0) else: - separator() print("NO BOOK IS BOUGHT") @@ -621,7 +555,6 @@ def CNB2(): rep = input("Do You Want To Restart ?? yes / no -- ").lower() if rep == "yes": - separator() DBZ() @@ -629,7 +562,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -637,7 +569,6 @@ def CNB2(): os._exit(0) else: - separator() print("SORRY NO BOOK WITH THIS NAME EXIST / NAME IS INCORRECT") @@ -649,7 +580,6 @@ def CNB2(): rep = input("Do You Want To Restart ?? yes / no -- ").lower() if rep == "yes": - separator() DBZ() @@ -657,7 +587,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -667,13 +596,11 @@ def CNB2(): # ADDING BOOK if choice == 3: - q10 = int(input("ENTER NO. OF BOOKS TO ADD -- ")) separator() for k in range(q10): - SNo10 = int(input("ENTER SNo OF BOOK -- ")) name10 = input("ENTER NAME OF BOOK --- ") author10 = input("ENTER NAME OF AUTHOR -- ") @@ -687,13 +614,11 @@ def CNB2(): data20 = mycur.fetchone() if data20 != None: - print("This ISBN Already Exists") os._exit(0) else: - insert = (SNo10, name10, author10, year10, ISBN10, price10, nob10) insert20 = "insert into books values(%s,%s,%s,%s,%s,%s,%s)" mycur.execute(insert20, insert) @@ -708,7 +633,6 @@ def CNB2(): rep = input("Do You Want To Restart ?? yes / no -- ").lower() if rep == "yes": - separator() DBZ() @@ -716,7 +640,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -726,7 +649,6 @@ def CNB2(): # UPDATING BOOK if choice == 4: - choice4 = input("ENTER ISBN OF BOOK -- ") separator() @@ -736,7 +658,6 @@ def CNB2(): data2 = mycur.fetchone() if data2 != None: - SNo1 = int(input("ENTER NEW SNo OF BOOK -- ")) name1 = input("ENTER NEW NAME OF BOOK --- ") author1 = input("ENTER NEW NAME OF AUTHOR -- ") @@ -758,7 +679,6 @@ def CNB2(): rep = input("Do You Want To Restart ?? yes / no -- ").lower() if rep == "yes": - separator() DBZ() @@ -766,7 +686,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -774,7 +693,6 @@ def CNB2(): os._exit(0) else: - print("SORRY NO BOOK WITH THIS ISBN IS EXIST / INCORRECT ISBN") print() @@ -785,7 +703,6 @@ def CNB2(): rep = input("Do You Want To Restart ?? yes / no -- ").lower() if rep == "yes": - separator() DBZ() @@ -793,7 +710,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -803,20 +719,17 @@ def CNB2(): # DELETING A BOOK if choice == 5: - ISBN1 = input("ENTER ISBN OF THAT BOOK THAT YOU WANT TO DELETE -- ") display = "select * from books where ISBN='%s'" % (ISBN1) mycur.execute(display) data2 = mycur.fetchone() if data2 != None: - separator() choice5 = input("ARE YOU SURE TO DELETE THIS BOOK ENTER Y/N -- ") if choice5 == "Y" or choice5 == "y": - separator() ISBN2 = input("PLEASE ENTER ISBN AGAIN -- ") @@ -836,7 +749,6 @@ def CNB2(): rep = input("Do You Want To Restart ?? yes / no -- ").lower() if rep == "yes": - separator() DBZ() @@ -844,7 +756,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -852,7 +763,6 @@ def CNB2(): os._exit(0) else: - separator() print("NO BOOK IS DELETED") @@ -865,7 +775,6 @@ def CNB2(): rep = input("Do You Want To Restart ?? yes / no -- ").lower() if rep == "yes": - separator() DBZ() @@ -873,7 +782,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -881,7 +789,6 @@ def CNB2(): os._exit(0) else: - separator() print("SORRY NO BOOK WITH THIS ISBN AVAILABLE / ISBN IS INCORRECT") @@ -894,7 +801,6 @@ def CNB2(): rep = input("Do You Want To Restart ?? yes / no -- ").lower() if rep == "yes": - separator() DBZ() @@ -902,7 +808,6 @@ def CNB2(): continue else: - end_separator() DBZ() @@ -912,7 +817,6 @@ def CNB2(): # CLOSE if choice == 6: - exit() os._exit(0) @@ -926,9 +830,7 @@ def CNB2(): for y in data2: - if y[6] <= 0: - delete = "delete from books where Numbers_of_book<=0" mycur.execute(delete) mycon.commit() diff --git a/brickout-game/brickout-game.py b/brickout-game/brickout-game.py index c212be6a634..bdd44ce4766 100644 --- a/brickout-game/brickout-game.py +++ b/brickout-game/brickout-game.py @@ -1,11 +1,11 @@ """ Pygame base template for opening a window - + Sample Python/Pygame Programs Simpson College Computer Science http://programarcadegames.com/ http://simpson.edu/computer-science/ - + Explanation video: http://youtu.be/vRB_983kUMc ------------------------------------------------- @@ -33,7 +33,7 @@ screen = pygame.display.set_mode(size) """ - This is a simple Ball class for respresenting a ball + This is a simple Ball class for representing a ball in the game. """ @@ -345,7 +345,6 @@ def collide(self, ball): are both in the same section. """ if gameStatus: - # first draws ball for appropriate displaying the score. brickWall.draw() diff --git a/calc_area.py b/calc_area.py index 7f35917c746..29fb370cd4a 100644 --- a/calc_area.py +++ b/calc_area.py @@ -1,8 +1,6 @@ # Author: PrajaktaSathe # Program to calculate the area of - square, rectangle, circle, and triangle - import math as m - - def main(): shape = int( input( @@ -11,7 +9,7 @@ def main(): ) if shape == 1: side = float(input("Enter length of side: ")) - print("Area of square = " + str(side ** 2)) + print("Area of square = " + str(side**2)) elif shape == 2: l = float(input("Enter length: ")) b = float(input("Enter breadth: ")) @@ -38,7 +36,6 @@ def main(): print("You have selected wrong choice.") restart = input("Would you like to calculate the area of another object? Y/N : ") - if restart.lower().startswith("y"): main() elif restart.lower().startswith("n"): diff --git a/calci.py b/calci.py new file mode 100644 index 00000000000..21d9ace5233 --- /dev/null +++ b/calci.py @@ -0,0 +1,4 @@ +a = int(input("enter first value")) +b = int(input("enter second value")) +add = a + b +print(add) diff --git a/calci2.py b/calci2.py new file mode 100644 index 00000000000..cd142e11ad4 --- /dev/null +++ b/calci2.py @@ -0,0 +1,3 @@ +prices = [22.3, 6.66, 9.22] +total = sum(prices) +print(total) diff --git a/calculator-gui.py b/calculator-gui.py index e0a0ea5a28d..fa9befa47f0 100755 --- a/calculator-gui.py +++ b/calculator-gui.py @@ -173,7 +173,6 @@ def press_equal(self): "Second Number", "Please Enter Second Number To Perform Calculation" ) else: - try: if self.opr == "+": self.value1 = int(self.value1) diff --git a/calculator.py b/calculator.py index b0ef5dca8dd..ff456112afa 100644 --- a/calculator.py +++ b/calculator.py @@ -2,7 +2,7 @@ Written by : Shreyas Daniel - github.com/shreydan Description : Uses Pythons eval() function as a way to implement calculator. - + Functions available are: -------------------------------------------- + : addition @@ -11,7 +11,7 @@ / : division % : percentage e : 2.718281... - pi : 3.141592... + pi : 3.141592... sine : sin(rad) cosine : cos(rad) exponent: x^y @@ -70,21 +70,17 @@ def calc(term): term = term.replace(func, withmath) try: - # here goes the actual evaluating. term = eval(term) # here goes to the error cases. except ZeroDivisionError: - print("Can't divide by 0. Please try again.") except NameError: - print("Invalid input. Please try again") except AttributeError: - print("Please check usage method and try again.") except TypeError: print("please enter inputs of correct datatype ") diff --git a/cartesian_product.py b/cartesian_product.py index 7ed49aae295..d4e2c73f3f1 100644 --- a/cartesian_product.py +++ b/cartesian_product.py @@ -1,7 +1,6 @@ """Cartesian Product of Two Lists.""" # Import -from itertools import product # Cartesian Product of Two Lists @@ -9,11 +8,11 @@ def cartesian_product(list1, list2): """Cartesian Product of Two Lists.""" for _i in list1: for _j in list2: - print((_i, _j), end=' ') + print((_i, _j), end=" ") # Main -if __name__ == '__main__': +if __name__ == "__main__": list1 = input().split() list2 = input().split() @@ -22,4 +21,3 @@ def cartesian_product(list1, list2): list2 = [int(i) for i in list2] cartesian_product(list1, list2) - diff --git a/chaos.py b/chaos.py index 520f3d44512..1bd1c120ee4 100644 --- a/chaos.py +++ b/chaos.py @@ -11,7 +11,7 @@ def main(): break else: print("Please enter correct number") - except Exception as e: + except Exception: print("Please enter correct number") for i in range(10): diff --git a/check whether the string is Symmetrical or Palindrome.py b/check whether the string is Symmetrical or Palindrome.py index d29772e721a..24614f5d9b2 100644 --- a/check whether the string is Symmetrical or Palindrome.py +++ b/check whether the string is Symmetrical or Palindrome.py @@ -1,53 +1,50 @@ -def palindrome(a): - - mid = (len(a)-1)//2 +def palindrome(a): + mid = (len(a) - 1) // 2 start = 0 - last = len(a)-1 + last = len(a) - 1 flag = 0 - - while(start end or user_input < start: - # error case print("Please try again. Not in valid bounds.") else: - # valid case loop = False # aborts while-loop except ValueError: - # error case print("Please try again. Only numbers") diff --git a/chicks_n_rabs.py b/chicks_n_rabs.py index fa82f161d1c..c0114a08060 100644 --- a/chicks_n_rabs.py +++ b/chicks_n_rabs.py @@ -2,7 +2,7 @@ Author Anurag Kumar(mailto:anuragkumarak95@gmail.com) Module to solve a classic ancient Chinese puzzle: -We count 35 heads and 94 legs among the chickens and rabbits in a farm. +We count 35 heads and 94 legs among the chickens and rabbits in a farm. How many rabbits and how many chickens do we have? """ diff --git a/swapping of two numbers b/cicd similarity index 100% rename from swapping of two numbers rename to cicd diff --git a/class.dat b/class.dat new file mode 100644 index 00000000000..98ba2109892 Binary files /dev/null and b/class.dat differ diff --git a/cli_master/cli_master.py b/cli_master/cli_master.py index f57a3b192bb..df2ecf799d1 100644 --- a/cli_master/cli_master.py +++ b/cli_master/cli_master.py @@ -2,10 +2,9 @@ import sys from pprint import pprint -import sys sys.path.append(os.path.realpath(".")) -import inquirer # noqa +import inquirer # Take authentication input from the user questions = [ @@ -20,40 +19,80 @@ # Just making pipelines class Validation: - def phone_validation(): + @staticmethod + def phone_validation(answer, current): # Think over how to make a validation for phone number? - pass + return True - def email_validation(): - pass + @staticmethod + def email_validation(answer, current): + return True - def password_validation(): - pass + @staticmethod + def password_validation(answer, current): + return True + @staticmethod def username_validation(): pass - def country_validation(): + @staticmethod + def fname_validation(answer, current): + # Add your first name validation logic here + return True + + @staticmethod + def lname_validation(answer, current): + # Add your last name validation logic here + return True + + @staticmethod + def country_validation(answer, current): # All the countries in the world??? # JSON can be used. # Download the file + return True - def state_validation(): + @staticmethod + def state_validation(answer, current): # All the states in the world?? # The state of the selected country only. - pass + return True - def city_validation(): + @staticmethod + def city_validation(answer, current): # All the cities in the world?? # JSON can be used. - pass + return True + + @staticmethod + def password_confirmation(answer, current): + return True + + @staticmethod + def address_validation(answer, current): + return True + + @staticmethod + def login_username(answer, current): + # Add your username validation logic here + return True + + @staticmethod + def login_password(answer, current): + # Add your password validation logic here + return True # Have an option to go back. # How can I do it? -if answers["authentication"] == "Login": - print("Login") +if answers is not None and answers.get("authentication") == "Login": questions = [ + inquirer.Text( + "surname", + message="What's your last name (surname)?", + validate=Validation.lname_validation, + ), inquirer.Text( "username", message="What's your username?", @@ -65,11 +104,10 @@ def city_validation(): validate=Validation.login_password, ), ] + answers = inquirer.prompt(questions) - -elif answers["authentication"] == "Sign up": +elif answers is not None and answers.get("authentication") == "Sign up": print("Sign up") - questions = [ inquirer.Text( "name", @@ -78,7 +116,8 @@ def city_validation(): ), inquirer.Text( "surname", - message="What's your last name(surname)?, validate=Validation.lname), {name}?", + message="What's your last name (surname)?", + validate=Validation.lname_validation, ), inquirer.Text( "phone", @@ -96,7 +135,7 @@ def city_validation(): validate=Validation.password_validation, ), inquirer.Text( - "password", + "password_confirm", message="Confirm your password", validate=Validation.password_confirmation, ), @@ -110,26 +149,15 @@ def city_validation(): message="What's your country", validate=Validation.country_validation, ), - inquirer.Text( - "state", - message="What's your state", - validate=Validation.state_validation, - ), - inquirer.Text( - "city", - message="What's your city", - validate=Validation.city_validation, - ), inquirer.Text( "address", message="What's your address", validate=Validation.address_validation, ), ] -# Also add optional in the above thing. -# Have string manipulation for the above thing. -# How to add authentication of google to command line? -elif answers["authentication"] == "Exit": + answers = inquirer.prompt(questions) + +elif answers is not None and answers.get("authentication") == "Exit": print("Exit") sys.exit() diff --git a/cli_master/validation_page.py b/cli_master/validation_page.py index 8852781d4b7..a9f1c2bcffc 100644 --- a/cli_master/validation_page.py +++ b/cli_master/validation_page.py @@ -1,10 +1,12 @@ import re + def phone_validation(phone_number): # Match a typical US phone number format (xxx) xxx-xxxx - pattern = re.compile(r'^\(\d{3}\) \d{3}-\d{4}$') + pattern = re.compile(r"^\(\d{3}\) \d{3}-\d{4}$") return bool(pattern.match(phone_number)) + # Example usage: phone_number_input = input("Enter phone number: ") if phone_validation(phone_number_input): @@ -12,11 +14,13 @@ def phone_validation(phone_number): else: print("Invalid phone number.") + def email_validation(email): # Basic email format validation - pattern = re.compile(r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$') + pattern = re.compile(r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$") return bool(pattern.match(email)) + # Example usage: email_input = input("Enter email address: ") if email_validation(email_input): @@ -29,6 +33,7 @@ def password_validation(password): # Password must be at least 8 characters long and contain at least one digit return len(password) >= 8 and any(char.isdigit() for char in password) + # Example usage: password_input = input("Enter password: ") if password_validation(password_input): @@ -39,7 +44,8 @@ def password_validation(password): def username_validation(username): # Allow only alphanumeric characters and underscores - return bool(re.match('^[a-zA-Z0-9_]+$', username)) + return bool(re.match("^[a-zA-Z0-9_]+$", username)) + # Example usage: username_input = input("Enter username: ") @@ -51,7 +57,8 @@ def username_validation(username): def country_validation(country): # Example: Allow only alphabetical characters and spaces - return bool(re.match('^[a-zA-Z ]+$', country)) + return bool(re.match("^[a-zA-Z ]+$", country)) + # Example usage: country_input = input("Enter country name: ") @@ -59,4 +66,3 @@ def country_validation(country): print("Country name is valid.") else: print("Invalid country name.") - diff --git a/cloning_a_list.py b/cloning_a_list.py index ceaebef16e7..524225b734f 100644 --- a/cloning_a_list.py +++ b/cloning_a_list.py @@ -1,17 +1,11 @@ -# Python program to copy or clone a list -# Using the Slice Operator -def Cloning(li1): +# Python program to copy or clone a list +# Using the Slice Operator +def Cloning(li1): return li1[:] - -# Driver Code -li1 = [ - 4, - 8, - 2, - 10, - 15, - 18 -] -li2 = Cloning(li1) -print("Original List:", li1) -print("After Cloning:", li2) + + +# Driver Code +li1 = [4, 8, 2, 10, 15, 18] +li2 = Cloning(li1) +print("Original List:", li1) +print("After Cloning:", li2) diff --git a/colorma_as_color.py b/colorma_as_color.py index 9bf2338ebbb..345f2043697 100644 --- a/colorma_as_color.py +++ b/colorma_as_color.py @@ -1,6 +1,3 @@ -import colorama as color - - from colorama import Fore, Back, Style print(Fore.RED + "some red text") @@ -19,4 +16,4 @@ print("back to normal now") -# …or, Colorama can be used in conjunction with existing ANSI libraries such as the venerable Termcolor the fabulous Blessings, or the incredible _Rich. \ No newline at end of file +# …or, Colorama can be used in conjunction with existing ANSI libraries such as the venerable Termcolor the fabulous Blessings, or the incredible _Rich. diff --git a/colour spiral.py b/colour spiral.py index 86385ada09d..70a96b94643 100644 --- a/colour spiral.py +++ b/colour spiral.py @@ -1,52 +1,50 @@ # import turtle import turtle - + # defining colors -colors = ['red', 'yellow', 'green', 'purple', 'blue', 'orange'] - +colors = ["red", "yellow", "green", "purple", "blue", "orange"] + # setup turtle pen -t= turtle.Pen() - +t = turtle.Pen() + # changes the speed of the turtle t.speed(10) - + # changes the background color turtle.bgcolor("black") - + # make spiral_web for x in range(200): + t.pencolor(colors[x % 6]) # setting color - t.pencolor(colors[x%6]) # setting color + t.width(x / 100 + 1) # setting width - t.width(x/100 + 1) # setting width + t.forward(x) # moving forward - t.forward(x) # moving forward + t.left(59) # moving left - t.left(59) # moving left - turtle.done() t.speed(10) - -turtle.bgcolor("black") # changes the background color - + +turtle.bgcolor("black") # changes the background color + # make spiral_web for x in range(200): + t.pencolor(colors[x % 6]) # setting color - t.pencolor(colors[x%6]) # setting color + t.width(x / 100 + 1) # setting width - t.width(x/100 + 1) # setting width + t.forward(x) # moving forward - t.forward(x) # moving forward + t.left(59) # moving left - t.left(59) # moving left - -turtle.done() \ No newline at end of file +turtle.done() diff --git a/compass_code.py b/compass_code.py new file mode 100644 index 00000000000..4b7bf7b1880 --- /dev/null +++ b/compass_code.py @@ -0,0 +1,9 @@ +def degree_to_direction(deg): + directions = ["N", "NE", "E", "SE", "S", "SW", "W", "NW"] + + deg = deg % 360 + deg = int(deg // 45) + print(directions[deg]) + + +degree_to_direction(45) diff --git a/convert celsius into fahrenheit.py b/convert celsius into fahrenheit.py index df58fcda9de..0f3bf8e9838 100644 --- a/convert celsius into fahrenheit.py +++ b/convert celsius into fahrenheit.py @@ -1,4 +1,4 @@ -cels= float(input("enter temp in celsius")) -print("temprature in celsius is :",cels) -fahr = cels*9/5+32 -print("temprature in fahrenhite is :",fahr) +cels = float(input("enter temp in celsius")) +print("temprature in celsius is :", cels) +fahr = cels * 9 / 5 + 32 +print("temprature in fahrenhite is :", fahr) diff --git a/convert_wind_direction_to_degrees.py b/convert_wind_direction_to_degrees.py new file mode 100644 index 00000000000..a7a48988c12 --- /dev/null +++ b/convert_wind_direction_to_degrees.py @@ -0,0 +1,20 @@ +def degrees_to_compass(degrees): + directions = ["N", "NE", "E", "SE", "S", "SW", "W", "NW"] + index = round(degrees / 45) % 8 + return directions[index] + + +# Taking input from the user +while True: + try: + degrees = float(input("Enter the wind direction in degrees (0-359): ")) + if degrees < 0 or degrees >= 360: + raise ValueError("Degrees must be between 0 and 359") + break + except ValueError as ve: + print(f"Error: {ve}") + continue + + +compass_direction = degrees_to_compass(degrees) +print(f"{degrees} degrees is {compass_direction}") diff --git a/count the numbers of two vovels.py b/count the numbers of two vovels.py index 297e2488590..eb66d0967d6 100644 --- a/count the numbers of two vovels.py +++ b/count the numbers of two vovels.py @@ -1,19 +1,19 @@ # Program to count the number of each vowels # string of vowels -vowels = 'aeiou' +vowels = "aeiou" -ip_str = 'Hello, have you tried our tutorial section yet?' +ip_str = "Hello, have you tried our tutorial section yet?" # make it suitable for caseless comparisions ip_str = ip_str.casefold() # make a dictionary with each vowel a key and value 0 -count = {}.fromkeys(vowels,0) +count = {}.fromkeys(vowels, 0) # count the vowels for char in ip_str: - if char in count: - count[char] += 1 + if char in count: + count[char] += 1 print(count) diff --git a/create password validity in python.py b/create password validity in python.py index 46793e91061..c69a826e89e 100644 --- a/create password validity in python.py +++ b/create password validity in python.py @@ -1,24 +1,27 @@ import time -pwd=input("Enter your password: ") #any password u want to set + +pwd = input("Enter your password: ") # any password u want to set + def IInd_func(): - count1=0 - for j in range(5): - a=0 - count=0 - user_pwd = input("Enter remember password: ") #password you remember - for i in range(len(pwd)): - if user_pwd[i] == pwd[a]: #comparing remembered pwd with fixed pwd - a +=1 - count+=1 - if count==len(pwd): - print("correct pwd") - break - else: - count1 += 1 - print("not correct") - if count1==5: - time.sleep(30) - IInd_func() + count1 = 0 + for j in range(5): + a = 0 + count = 0 + user_pwd = input("Enter remember password: ") # password you remember + for i in range(len(pwd)): + if user_pwd[i] == pwd[a]: # comparing remembered pwd with fixed pwd + a += 1 + count += 1 + if count == len(pwd): + print("correct pwd") + break + else: + count1 += 1 + print("not correct") + if count1 == 5: + time.sleep(30) + IInd_func() + -IInd_func() \ No newline at end of file +IInd_func() diff --git a/currency converter/gui.ui b/currency converter/gui.ui index 6c8e578fc95..a2b39c9e6a4 100644 --- a/currency converter/gui.ui +++ b/currency converter/gui.ui @@ -6,13 +6,101 @@ 0 0 - 794 - 365 + 785 + 362 MainWindow + + QMainWindow { + background-color: #2C2F33; + } + QLabel#label { + color: #FFFFFF; + font-family: 'Arial'; + font-size: 28px; + font-weight: bold; + background-color: transparent; + padding: 10px; + } + QLabel#label_2, QLabel#label_3 { + color: #7289DA; + font-family: 'Arial'; + font-size: 20px; + font-weight: normal; + background-color: transparent; + } + QComboBox { + background-color: #23272A; + color: #FFFFFF; + font-family: 'Arial'; + font-size: 16px; + border-radius: 10px; + padding: 10px; + border: 1px solid #7289DA; + } + QComboBox:hover { + border: 1px solid #677BC4; + } + QComboBox::drop-down { + border: none; + width: 20px; + } + QComboBox::down-arrow { + image: url(:/icons/down_arrow.png); + width: 12px; + height: 12px; + } + QComboBox QAbstractItemView { + background-color: #23272A; + color: #FFFFFF; + selection-background-color: #7289DA; + selection-color: #FFFFFF; + border: 1px solid #7289DA; + border-radius: 5px; + } + QLineEdit { + background-color: #23272A; + color: #FFFFFF; + font-family: 'Arial'; + font-size: 20px; + border-radius: 10px; + padding: 10px; + border: 1px solid #7289DA; + } + QLineEdit:hover, QLineEdit:focus { + border: 1px solid #677BC4; + } + QPushButton { + background-color: #7289DA; + color: #FFFFFF; + font-family: 'Arial'; + font-size: 16px; + font-weight: bold; + border-radius: 10px; + padding: 10px; + border: none; + } + QPushButton:hover { + background-color: #677BC4; + } + QPushButton:pressed { + background-color: #5B6EAE; + } + QLCDNumber { + background-color: #23272A; + color: #43B581; + border-radius: 10px; + border: 1px solid #7289DA; + padding: 10px; + } + QStatusBar { + background-color: #23272A; + color: #FFFFFF; + } + @@ -25,8 +113,8 @@ - Segoe Script - 24 + Arial + -1 75 true @@ -61,7 +149,7 @@ - 110 + 100 260 571 41 @@ -92,9 +180,11 @@ - Monotype Corsiva - 20 + Arial + -1 + 50 true + false @@ -112,9 +202,11 @@ - Monotype Corsiva - 20 + Arial + -1 + 50 true + false @@ -132,7 +224,6 @@ - diff --git a/currency converter/main.py b/currency converter/main.py index a75a047c724..51c80445791 100644 --- a/currency converter/main.py +++ b/currency converter/main.py @@ -4,19 +4,20 @@ from PyQt5.QtWidgets import * from PyQt5 import QtWidgets, uic from PyQt5.QtCore import * -import requests +import httpx from bs4 import BeautifulSoup -from requests.models import ContentDecodingError def getVal(cont1, cont2): + # Extract currency codes from user input (format assumed like "USD- United States Dollar") cont1val = cont1.split("-")[1] cont2val = cont2.split("-")[1] url = f"https://free.currconv.com/api/v7/convert?q={cont1val}_{cont2val}&compact=ultra&apiKey=b43a653672c4a94c4c26" - r = requests.get(url) + r = httpx.get(url) htmlContent = r.content soup = BeautifulSoup(htmlContent, "html.parser") try: + # Extract the numeric value from the response text valCurr = float(soup.get_text().split(":")[1].removesuffix("}")) # {USD:70.00} except Exception: print("Server down.") diff --git a/daily_checks.py b/daily_checks.py index 337f8d5aebe..5a59ba9d3f3 100644 --- a/daily_checks.py +++ b/daily_checks.py @@ -12,6 +12,7 @@ Description : This simple script loads everything I need to carry out the daily checks for our systems. """ + import os import platform # Load Modules import subprocess @@ -31,8 +32,8 @@ def print_docs(): # Function to print the daily checks automatically # The command below passes the command line string to open word, open the document, print it then close word down subprocess.Popen( [ - "C:\\Program Files (x86)\Microsoft Office\Office14\winword.exe", - "P:\\\\Documentation\\Daily Docs\\Back office Daily Checks.doc", + r"C:\Program Files (x86)\Microsoft Office\Office14\winword.exe", + r"P:\Documentation\Daily Docs\Back office Daily Checks.doc", "/mFilePrintDefault", "/mFileExit", ] @@ -56,8 +57,10 @@ def rdp_sessions(): def euroclear_docs(): # The command below opens IE and loads the Euroclear password document subprocess.Popen( - '"C:\\Program Files\\Internet Explorer\\iexplore.exe"' - '"file://fs1\pub_b\Pub_Admin\Documentation\Settlements_Files\PWD\Eclr.doc"' + [ + r"C:\Program Files\Internet Explorer\iexplore.exe", + r"file://fs1/pub_b/Pub_Admin/Documentation/Settlements_Files/PWD/Eclr.doc", + ] ) diff --git a/data.csv b/data.csv deleted file mode 100644 index 73a9897589c..00000000000 --- a/data.csv +++ /dev/null @@ -1,507 +0,0 @@ -CRIM ,ZN,INDUS,CHAS,NOX,RM,AGE,DIS,RAD,TAX,PTRATIO,B,LSTAT,MEDV -0.00632,18,2.31,0,0.538,6.575,65.2,4.09,1,296,15.3,396.9,4.98,24 -0.02731,0,7.07,0,0.469,6.421,78.9,4.9671,2,242,17.8,396.9,9.14,21.6 -0.02729,0,7.07,0,0.469,7.185,61.1,4.9671,2,242,17.8,392.83,4.03,34.7 -0.03237,0,2.18,0,0.458,6.998,45.8,6.0622,3,222,18.7,394.63,2.94,33.4 -0.06905,0,2.18,0,0.458,7.147,54.2,6.0622,3,222,18.7,396.9,5.33,36.2 -0.02985,0,2.18,0,0.458,6.43,58.7,6.0622,3,222,18.7,394.12,5.21,28.7 -0.08829,12.5,7.87,0,0.524,6.012,66.6,5.5605,5,311,15.2,395.6,12.43,22.9 -0.14455,12.5,7.87,0,0.524,6.172,96.1,5.9505,5,311,15.2,396.9,19.15,27.1 -0.21124,12.5,7.87,0,0.524,5.631,100,6.0821,5,311,15.2,386.63,29.93,16.5 -0.17004,12.5,7.87,0,0.524,6.004,85.9,6.5921,5,311,15.2,386.71,17.1,18.9 -0.22489,12.5,7.87,0,0.524,6.377,94.3,6.3467,5,311,15.2,392.52,20.45,15 -0.11747,12.5,7.87,0,0.524,6.009,82.9,6.2267,5,311,15.2,396.9,13.27,18.9 -0.09378,12.5,7.87,0,0.524,5.889,39,5.4509,5,311,15.2,390.5,15.71,21.7 -0.62976,0,8.14,0,0.538,5.949,61.8,4.7075,4,307,21,396.9,8.26,20.4 -0.63796,0,8.14,0,0.538,6.096,84.5,4.4619,4,307,21,380.02,10.26,18.2 -0.62739,0,8.14,0,0.538,5.834,56.5,4.4986,4,307,21,395.62,8.47,19.9 -1.05393,0,8.14,0,0.538,5.935,29.3,4.4986,4,307,21,386.85,6.58,23.1 -0.7842,0,8.14,0,0.538,5.99,81.7,4.2579,4,307,21,386.75,14.67,17.5 -0.80271,0,8.14,0,0.538,5.456,36.6,3.7965,4,307,21,288.99,11.69,20.2 -0.7258,0,8.14,0,0.538,5.727,69.5,3.7965,4,307,21,390.95,11.28,18.2 -1.25179,0,8.14,0,0.538,5.57,98.1,3.7979,4,307,21,376.57,21.02,13.6 -0.85204,0,8.14,0,0.538,5.965,89.2,4.0123,4,307,21,392.53,13.83,19.6 -1.23247,0,8.14,0,0.538,6.142,91.7,3.9769,4,307,21,396.9,18.72,15.2 -0.98843,0,8.14,0,0.538,5.813,100,4.0952,4,307,21,394.54,19.88,14.5 -0.75026,0,8.14,0,0.538,5.924,94.1,4.3996,4,307,21,394.33,16.3,15.6 -0.84054,0,8.14,0,0.538,5.599,85.7,4.4546,4,307,21,303.42,16.51,13.9 -0.67191,0,8.14,0,0.538,5.813,90.3,4.682,4,307,21,376.88,14.81,16.6 -0.95577,0,8.14,0,0.538,6.047,88.8,4.4534,4,307,21,306.38,17.28,14.8 -0.77299,0,8.14,0,0.538,6.495,94.4,4.4547,4,307,21,387.94,12.8,18.4 -1.00245,0,8.14,0,0.538,6.674,87.3,4.239,4,307,21,380.23,11.98,21 -1.13081,0,8.14,0,0.538,5.713,94.1,4.233,4,307,21,360.17,22.6,12.7 -1.35472,0,8.14,0,0.538,6.072,100,4.175,4,307,21,376.73,13.04,14.5 -1.38799,0,8.14,0,0.538,5.95,82,3.99,4,307,21,232.6,27.71,13.2 -1.15172,0,8.14,0,0.538,5.701,95,3.7872,4,307,21,358.77,18.35,13.1 -1.61282,0,8.14,0,0.538,6.096,96.9,3.7598,4,307,21,248.31,20.34,13.5 -0.06417,0,5.96,0,0.499,5.933,68.2,3.3603,5,279,19.2,396.9,9.68,18.9 -0.09744,0,5.96,0,0.499,5.841,61.4,3.3779,5,279,19.2,377.56,11.41,20 -0.08014,0,5.96,0,0.499,5.85,41.5,3.9342,5,279,19.2,396.9,8.77,21 -0.17505,0,5.96,0,0.499,5.966,30.2,3.8473,5,279,19.2,393.43,10.13,24.7 -0.02763,75,2.95,0,0.428,6.595,21.8,5.4011,3,252,18.3,395.63,4.32,30.8 -0.03359,75,2.95,0,0.428,7.024,15.8,5.4011,3,252,18.3,395.62,1.98,34.9 -0.12744,0,6.91,0,0.448,6.77,2.9,5.7209,3,233,17.9,385.41,4.84,26.6 -0.1415,0,6.91,0,0.448,6.169,6.6,5.7209,3,233,17.9,383.37,5.81,25.3 -0.15936,0,6.91,0,0.448,6.211,6.5,5.7209,3,233,17.9,394.46,7.44,24.7 -0.12269,0,6.91,0,0.448,6.069,40,5.7209,3,233,17.9,389.39,9.55,21.2 -0.17142,0,6.91,0,0.448,5.682,33.8,5.1004,3,233,17.9,396.9,10.21,19.3 -0.18836,0,6.91,0,0.448,5.786,33.3,5.1004,3,233,17.9,396.9,14.15,20 -0.22927,0,6.91,0,0.448,6.03,85.5,5.6894,3,233,17.9,392.74,18.8,16.6 -0.25387,0,6.91,0,0.448,5.399,95.3,5.87,3,233,17.9,396.9,30.81,14.4 -0.21977,0,6.91,0,0.448,5.602,62,6.0877,3,233,17.9,396.9,16.2,19.4 -0.08873,21,5.64,0,0.439,5.963,45.7,6.8147,4,243,16.8,395.56,13.45,19.7 -0.04337,21,5.64,0,0.439,6.115,63,6.8147,4,243,16.8,393.97,9.43,20.5 -0.0536,21,5.64,0,0.439,6.511,21.1,6.8147,4,243,16.8,396.9,5.28,25 -0.04981,21,5.64,0,0.439,5.998,21.4,6.8147,4,243,16.8,396.9,8.43,23.4 -0.0136,75,4,0,0.41,5.888,47.6,7.3197,3,469,21.1,396.9,14.8,18.9 -0.01311,90,1.22,0,0.403,7.249,21.9,8.6966,5,226,17.9,395.93,4.81,35.4 -0.02055,85,0.74,0,0.41,6.383,35.7,9.1876,2,313,17.3,396.9,5.77,24.7 -0.01432,100,1.32,0,0.411,6.816,40.5,8.3248,5,256,15.1,392.9,3.95,31.6 -0.15445,25,5.13,0,0.453,6.145,29.2,7.8148,8,284,19.7,390.68,6.86,23.3 -0.10328,25,5.13,0,0.453,5.927,47.2,6.932,8,284,19.7,396.9,9.22,19.6 -0.14932,25,5.13,0,0.453,5.741,66.2,7.2254,8,284,19.7,395.11,13.15,18.7 -0.17171,25,5.13,0,0.453,5.966,93.4,6.8185,8,284,19.7,378.08,14.44,16 -0.11027,25,5.13,0,0.453,6.456,67.8,7.2255,8,284,19.7,396.9,6.73,22.2 -0.1265,25,5.13,0,0.453,6.762,43.4,7.9809,8,284,19.7,395.58,9.5,25 -0.01951,17.5,1.38,0,0.4161,7.104,59.5,9.2229,3,216,18.6,393.24,8.05,33 -0.03584,80,3.37,0,0.398,6.29,17.8,6.6115,4,337,16.1,396.9,4.67,23.5 -0.04379,80,3.37,0,0.398,5.787,31.1,6.6115,4,337,16.1,396.9,10.24,19.4 -0.05789,12.5,6.07,0,0.409,5.878,21.4,6.498,4,345,18.9,396.21,8.1,22 -0.13554,12.5,6.07,0,0.409,5.594,36.8,6.498,4,345,18.9,396.9,13.09,17.4 -0.12816,12.5,6.07,0,0.409,5.885,33,6.498,4,345,18.9,396.9,8.79,20.9 -0.08826,0,10.81,0,0.413,6.417,6.6,5.2873,4,305,19.2,383.73,6.72,24.2 -0.15876,0,10.81,0,0.413,5.961,17.5,5.2873,4,305,19.2,376.94,9.88,21.7 -0.09164,0,10.81,0,0.413,6.065,7.8,5.2873,4,305,19.2,390.91,5.52,22.8 -0.19539,0,10.81,0,0.413,6.245,6.2,5.2873,4,305,19.2,377.17,7.54,23.4 -0.07896,0,12.83,0,0.437,6.273,6,4.2515,5,398,18.7,394.92,6.78,24.1 -0.09512,0,12.83,0,0.437,6.286,45,4.5026,5,398,18.7,383.23,8.94,21.4 -0.10153,0,12.83,0,0.437,6.279,74.5,4.0522,5,398,18.7,373.66,11.97,20 -0.08707,0,12.83,0,0.437,6.14,45.8,4.0905,5,398,18.7,386.96,10.27,20.8 -0.05646,0,12.83,0,0.437,6.232,53.7,5.0141,5,398,18.7,386.4,12.34,21.2 -0.08387,0,12.83,0,0.437,5.874,36.6,4.5026,5,398,18.7,396.06,9.1,20.3 -0.04113,25,4.86,0,0.426,6.727,33.5,5.4007,4,281,19,396.9,5.29,28 -0.04462,25,4.86,0,0.426,6.619,70.4,5.4007,4,281,19,395.63,7.22,23.9 -0.03659,25,4.86,0,0.426,6.302,32.2,5.4007,4,281,19,396.9,6.72,24.8 -0.03551,25,4.86,0,0.426,6.167,46.7,5.4007,4,281,19,390.64,7.51,22.9 -0.05059,0,4.49,0,0.449,6.389,48,4.7794,3,247,18.5,396.9,9.62,23.9 -0.05735,0,4.49,0,0.449,6.63,56.1,4.4377,3,247,18.5,392.3,6.53,26.6 -0.05188,0,4.49,0,0.449,6.015,45.1,4.4272,3,247,18.5,395.99,12.86,22.5 -0.07151,0,4.49,0,0.449,6.121,56.8,3.7476,3,247,18.5,395.15,8.44,22.2 -0.0566,0,3.41,0,0.489,7.007,86.3,3.4217,2,270,17.8,396.9,5.5,23.6 -0.05302,0,3.41,0,0.489,7.079,63.1,3.4145,2,270,17.8,396.06,5.7,28.7 -0.04684,0,3.41,0,0.489,6.417,66.1,3.0923,2,270,17.8,392.18,8.81,22.6 -0.03932,0,3.41,0,0.489,6.405,73.9,3.0921,2,270,17.8,393.55,8.2,22 -0.04203,28,15.04,0,0.464,6.442,53.6,3.6659,4,270,18.2,395.01,8.16,22.9 -0.02875,28,15.04,0,0.464,6.211,28.9,3.6659,4,270,18.2,396.33,6.21,25 -0.04294,28,15.04,0,0.464,6.249,77.3,3.615,4,270,18.2,396.9,10.59,20.6 -0.12204,0,2.89,0,0.445,6.625,57.8,3.4952,2,276,18,357.98,6.65,28.4 -0.11504,0,2.89,0,0.445,6.163,69.6,3.4952,2,276,18,391.83,11.34,21.4 -0.12083,0,2.89,0,0.445,8.069,76,3.4952,2,276,18,396.9,4.21,38.7 -0.08187,0,2.89,0,0.445,7.82,36.9,3.4952,2,276,18,393.53,3.57,43.8 -0.0686,0,2.89,0,0.445,7.416,62.5,3.4952,2,276,18,396.9,6.19,33.2 -0.14866,0,8.56,0,0.52,6.727,79.9,2.7778,5,384,20.9,394.76,9.42,27.5 -0.11432,0,8.56,0,0.52,6.781,71.3,2.8561,5,384,20.9,395.58,7.67,26.5 -0.22876,0,8.56,0,0.52,6.405,85.4,2.7147,5,384,20.9,70.8,10.63,18.6 -0.21161,0,8.56,0,0.52,6.137,87.4,2.7147,5,384,20.9,394.47,13.44,19.3 -0.1396,0,8.56,0,0.52,6.167,90,2.421,5,384,20.9,392.69,12.33,20.1 -0.13262,0,8.56,0,0.52,5.851,96.7,2.1069,5,384,20.9,394.05,16.47,19.5 -0.1712,0,8.56,0,0.52,5.836,91.9,2.211,5,384,20.9,395.67,18.66,19.5 -0.13117,0,8.56,0,0.52,6.127,85.2,2.1224,5,384,20.9,387.69,14.09,20.4 -0.12802,0,8.56,0,0.52,6.474,97.1,2.4329,5,384,20.9,395.24,12.27,19.8 -0.26363,0,8.56,0,0.52,6.229,91.2,2.5451,5,384,20.9,391.23,15.55,19.4 -0.10793,0,8.56,0,0.52,6.195,54.4,2.7778,5,384,20.9,393.49,13,21.7 -0.10084,0,10.01,0,0.547,6.715,81.6,2.6775,6,432,17.8,395.59,10.16,22.8 -0.12329,0,10.01,0,0.547,5.913,92.9,2.3534,6,432,17.8,394.95,16.21,18.8 -0.22212,0,10.01,0,0.547,6.092,95.4,2.548,6,432,17.8,396.9,17.09,18.7 -0.14231,0,10.01,0,0.547,6.254,84.2,2.2565,6,432,17.8,388.74,10.45,18.5 -0.17134,0,10.01,0,0.547,5.928,88.2,2.4631,6,432,17.8,344.91,15.76,18.3 -0.13158,0,10.01,0,0.547,6.176,72.5,2.7301,6,432,17.8,393.3,12.04,21.2 -0.15098,0,10.01,0,0.547,6.021,82.6,2.7474,6,432,17.8,394.51,10.3,19.2 -0.13058,0,10.01,0,0.547,5.872,73.1,2.4775,6,432,17.8,338.63,15.37,20.4 -0.14476,0,10.01,0,0.547,5.731,65.2,2.7592,6,432,17.8,391.5,13.61,19.3 -0.06899,0,25.65,0,0.581,5.87,69.7,2.2577,2,188,19.1,389.15,14.37,22 -0.07165,0,25.65,0,0.581,6.004,84.1,2.1974,2,188,19.1,377.67,14.27,20.3 -0.09299,0,25.65,0,0.581,5.961,92.9,2.0869,2,188,19.1,378.09,17.93,20.5 -0.15038,0,25.65,0,0.581,5.856,97,1.9444,2,188,19.1,370.31,25.41,17.3 -0.09849,0,25.65,0,0.581,5.879,95.8,2.0063,2,188,19.1,379.38,17.58,18.8 -0.16902,0,25.65,0,0.581,5.986,88.4,1.9929,2,188,19.1,385.02,14.81,21.4 -0.38735,0,25.65,0,0.581,5.613,95.6,1.7572,2,188,19.1,359.29,27.26,15.7 -0.25915,0,21.89,0,0.624,5.693,96,1.7883,4,437,21.2,392.11,17.19,16.2 -0.32543,0,21.89,0,0.624,6.431,98.8,1.8125,4,437,21.2,396.9,15.39,18 -0.88125,0,21.89,0,0.624,5.637,94.7,1.9799,4,437,21.2,396.9,18.34,14.3 -0.34006,0,21.89,0,0.624,6.458,98.9,2.1185,4,437,21.2,395.04,12.6,19.2 -1.19294,0,21.89,0,0.624,6.326,97.7,2.271,4,437,21.2,396.9,12.26,19.6 -0.59005,0,21.89,0,0.624,6.372,97.9,2.3274,4,437,21.2,385.76,11.12,23 -0.32982,0,21.89,0,0.624,5.822,95.4,2.4699,4,437,21.2,388.69,15.03,18.4 -0.97617,0,21.89,0,0.624,5.757,98.4,2.346,4,437,21.2,262.76,17.31,15.6 -0.55778,0,21.89,0,0.624,6.335,98.2,2.1107,4,437,21.2,394.67,16.96,18.1 -0.32264,0,21.89,0,0.624,5.942,93.5,1.9669,4,437,21.2,378.25,16.9,17.4 -0.35233,0,21.89,0,0.624,6.454,98.4,1.8498,4,437,21.2,394.08,14.59,17.1 -0.2498,0,21.89,0,0.624,5.857,98.2,1.6686,4,437,21.2,392.04,21.32,13.3 -0.54452,0,21.89,0,0.624,6.151,97.9,1.6687,4,437,21.2,396.9,18.46,17.8 -0.2909,0,21.89,0,0.624,6.174,93.6,1.6119,4,437,21.2,388.08,24.16,14 -1.62864,0,21.89,0,0.624,5.019,100,1.4394,4,437,21.2,396.9,34.41,14.4 -3.32105,0,19.58,1,0.871,5.403,100,1.3216,5,403,14.7,396.9,26.82,13.4 -4.0974,0,19.58,0,0.871,5.468,100,1.4118,5,403,14.7,396.9,26.42,15.6 -2.77974,0,19.58,0,0.871,4.903,97.8,1.3459,5,403,14.7,396.9,29.29,11.8 -2.37934,0,19.58,0,0.871,6.13,100,1.4191,5,403,14.7,172.91,27.8,13.8 -2.15505,0,19.58,0,0.871,5.628,100,1.5166,5,403,14.7,169.27,16.65,15.6 -2.36862,0,19.58,0,0.871,4.926,95.7,1.4608,5,403,14.7,391.71,29.53,14.6 -2.33099,0,19.58,0,0.871,5.186,93.8,1.5296,5,403,14.7,356.99,28.32,17.8 -2.73397,0,19.58,0,0.871,5.597,94.9,1.5257,5,403,14.7,351.85,21.45,15.4 -1.6566,0,19.58,0,0.871,6.122,97.3,1.618,5,403,14.7,372.8,14.1,21.5 -1.49632,0,19.58,0,0.871,5.404,100,1.5916,5,403,14.7,341.6,13.28,19.6 -1.12658,0,19.58,1,0.871,5.012,88,1.6102,5,403,14.7,343.28,12.12,15.3 -2.14918,0,19.58,0,0.871,5.709,98.5,1.6232,5,403,14.7,261.95,15.79,19.4 -1.41385,0,19.58,1,0.871,6.129,96,1.7494,5,403,14.7,321.02,15.12,17 -3.53501,0,19.58,1,0.871,6.152,82.6,1.7455,5,403,14.7,88.01,15.02,15.6 -2.44668,0,19.58,0,0.871,5.272,94,1.7364,5,403,14.7,88.63,16.14,13.1 -1.22358,0,19.58,0,0.605,6.943,97.4,1.8773,5,403,14.7,363.43,4.59,41.3 -1.34284,0,19.58,0,0.605,6.066,100,1.7573,5,403,14.7,353.89,6.43,24.3 -1.42502,0,19.58,0,0.871,6.51,100,1.7659,5,403,14.7,364.31,7.39,23.3 -1.27346,0,19.58,1,0.605,6.25,92.6,1.7984,5,403,14.7,338.92,5.5,27 -1.46336,0,19.58,0,0.605,7.489,90.8,1.9709,5,403,14.7,374.43,1.73,50 -1.83377,0,19.58,1,0.605,7.802,98.2,2.0407,5,403,14.7,389.61,1.92,50 -1.51902,0,19.58,1,0.605,8.375,93.9,2.162,5,403,14.7,388.45,3.32,50 -2.24236,0,19.58,0,0.605,5.854,91.8,2.422,5,403,14.7,395.11,11.64,22.7 -2.924,0,19.58,0,0.605,6.101,93,2.2834,5,403,14.7,240.16,9.81,25 -2.01019,0,19.58,0,0.605,7.929,96.2,2.0459,5,403,14.7,369.3,3.7,50 -1.80028,0,19.58,0,0.605,5.877,79.2,2.4259,5,403,14.7,227.61,12.14,23.8 -2.3004,0,19.58,0,0.605,6.319,96.1,2.1,5,403,14.7,297.09,11.1,23.8 -2.44953,0,19.58,0,0.605,6.402,95.2,2.2625,5,403,14.7,330.04,11.32,22.3 -1.20742,0,19.58,0,0.605,5.875,94.6,2.4259,5,403,14.7,292.29,14.43,17.4 -2.3139,0,19.58,0,0.605,5.88,97.3,2.3887,5,403,14.7,348.13,12.03,19.1 -0.13914,0,4.05,0,0.51,5.572,88.5,2.5961,5,296,16.6,396.9,14.69,23.1 -0.09178,0,4.05,0,0.51,6.416,84.1,2.6463,5,296,16.6,395.5,9.04,23.6 -0.08447,0,4.05,0,0.51,5.859,68.7,2.7019,5,296,16.6,393.23,9.64,22.6 -0.06664,0,4.05,0,0.51,6.546,33.1,3.1323,5,296,16.6,390.96,5.33,29.4 -0.07022,0,4.05,0,0.51,6.02,47.2,3.5549,5,296,16.6,393.23,10.11,23.2 -0.05425,0,4.05,0,0.51,6.315,73.4,3.3175,5,296,16.6,395.6,6.29,24.6 -0.06642,0,4.05,0,0.51,6.86,74.4,2.9153,5,296,16.6,391.27,6.92,29.9 -0.0578,0,2.46,0,0.488,6.98,58.4,2.829,3,193,17.8,396.9,5.04,37.2 -0.06588,0,2.46,0,0.488,7.765,83.3,2.741,3,193,17.8,395.56,7.56,39.8 -0.06888,0,2.46,0,0.488,6.144,62.2,2.5979,3,193,17.8,396.9,9.45,36.2 -0.09103,0,2.46,0,0.488,7.155,92.2,2.7006,3,193,17.8,394.12,4.82,37.9 -0.10008,0,2.46,0,0.488,6.563,95.6,2.847,3,193,17.8,396.9,5.68,32.5 -0.08308,0,2.46,0,0.488,5.604,89.8,2.9879,3,193,17.8,391,13.98,26.4 -0.06047,0,2.46,0,0.488,6.153,68.8,3.2797,3,193,17.8,387.11,13.15,29.6 -0.05602,0,2.46,0,0.488,7.831,53.6,3.1992,3,193,17.8,392.63,4.45,50 -0.07875,45,3.44,0,0.437,6.782,41.1,3.7886,5,398,15.2,393.87,6.68,32 -0.12579,45,3.44,0,0.437,6.556,29.1,4.5667,5,398,15.2,382.84,4.56,29.8 -0.0837,45,3.44,0,0.437,7.185,38.9,4.5667,5,398,15.2,396.9,5.39,34.9 -0.09068,45,3.44,0,0.437,6.951,21.5,6.4798,5,398,15.2,377.68,5.1,37 -0.06911,45,3.44,0,0.437,6.739,30.8,6.4798,5,398,15.2,389.71,4.69,30.5 -0.08664,45,3.44,0,0.437,7.178,26.3,6.4798,5,398,15.2,390.49,2.87,36.4 -0.02187,60,2.93,0,0.401,6.8,9.9,6.2196,1,265,15.6,393.37,5.03,31.1 -0.01439,60,2.93,0,0.401,6.604,18.8,6.2196,1,265,15.6,376.7,4.38,29.1 -0.01381,80,0.46,0,0.422,7.875,32,5.6484,4,255,14.4,394.23,2.97,50 -0.04011,80,1.52,0,0.404,7.287,34.1,7.309,2,329,12.6,396.9,4.08,33.3 -0.04666,80,1.52,0,0.404,7.107,36.6,7.309,2,329,12.6,354.31,8.61,30.3 -0.03768,80,1.52,0,0.404,7.274,38.3,7.309,2,329,12.6,392.2,6.62,34.6 -0.0315,95,1.47,0,0.403,6.975,15.3,7.6534,3,402,17,396.9,4.56,34.9 -0.01778,95,1.47,0,0.403,7.135,13.9,7.6534,3,402,17,384.3,4.45,32.9 -0.03445,82.5,2.03,0,0.415,6.162,38.4,6.27,2,348,14.7,393.77,7.43,24.1 -0.02177,82.5,2.03,0,0.415,7.61,15.7,6.27,2,348,14.7,395.38,3.11,42.3 -0.0351,95,2.68,0,0.4161,7.853,33.2,5.118,4,224,14.7,392.78,3.81,48.5 -0.02009,95,2.68,0,0.4161,8.034,31.9,5.118,4,224,14.7,390.55,2.88,50 -0.13642,0,10.59,0,0.489,5.891,22.3,3.9454,4,277,18.6,396.9,10.87,22.6 -0.22969,0,10.59,0,0.489,6.326,52.5,4.3549,4,277,18.6,394.87,10.97,24.4 -0.25199,0,10.59,0,0.489,5.783,72.7,4.3549,4,277,18.6,389.43,18.06,22.5 -0.13587,0,10.59,1,0.489,6.064,59.1,4.2392,4,277,18.6,381.32,14.66,24.4 -0.43571,0,10.59,1,0.489,5.344,100,3.875,4,277,18.6,396.9,23.09,20 -0.17446,0,10.59,1,0.489,5.96,92.1,3.8771,4,277,18.6,393.25,17.27,21.7 -0.37578,0,10.59,1,0.489,5.404,88.6,3.665,4,277,18.6,395.24,23.98,19.3 -0.21719,0,10.59,1,0.489,5.807,53.8,3.6526,4,277,18.6,390.94,16.03,22.4 -0.14052,0,10.59,0,0.489,6.375,32.3,3.9454,4,277,18.6,385.81,9.38,28.1 -0.28955,0,10.59,0,0.489,5.412,9.8,3.5875,4,277,18.6,348.93,29.55,23.7 -0.19802,0,10.59,0,0.489,6.182,42.4,3.9454,4,277,18.6,393.63,9.47,25 -0.0456,0,13.89,1,0.55,5.888,56,3.1121,5,276,16.4,392.8,13.51,23.3 -0.07013,0,13.89,0,0.55,6.642,85.1,3.4211,5,276,16.4,392.78,9.69,28.7 -0.11069,0,13.89,1,0.55,5.951,93.8,2.8893,5,276,16.4,396.9,17.92,21.5 -0.11425,0,13.89,1,0.55,6.373,92.4,3.3633,5,276,16.4,393.74,10.5,23 -0.35809,0,6.2,1,0.507,6.951,88.5,2.8617,8,307,17.4,391.7,9.71,26.7 -0.40771,0,6.2,1,0.507,6.164,91.3,3.048,8,307,17.4,395.24,21.46,21.7 -0.62356,0,6.2,1,0.507,6.879,77.7,3.2721,8,307,17.4,390.39,9.93,27.5 -0.6147,0,6.2,0,0.507,6.618,80.8,3.2721,8,307,17.4,396.9,7.6,30.1 -0.31533,0,6.2,0,0.504,8.266,78.3,2.8944,8,307,17.4,385.05,4.14,44.8 -0.52693,0,6.2,0,0.504,8.725,83,2.8944,8,307,17.4,382,4.63,50 -0.38214,0,6.2,0,0.504,8.04,86.5,3.2157,8,307,17.4,387.38,3.13,37.6 -0.41238,0,6.2,0,0.504,7.163,79.9,3.2157,8,307,17.4,372.08,6.36,31.6 -0.29819,0,6.2,0,0.504,7.686,17,3.3751,8,307,17.4,377.51,3.92,46.7 -0.44178,0,6.2,0,0.504,6.552,21.4,3.3751,8,307,17.4,380.34,3.76,31.5 -0.537,0,6.2,0,0.504,5.981,68.1,3.6715,8,307,17.4,378.35,11.65,24.3 -0.46296,0,6.2,0,0.504,7.412,76.9,3.6715,8,307,17.4,376.14,5.25,31.7 -0.57529,0,6.2,0,0.507,8.337,73.3,3.8384,8,307,17.4,385.91,2.47,41.7 -0.33147,0,6.2,0,0.507,8.247,70.4,3.6519,8,307,17.4,378.95,3.95,48.3 -0.44791,0,6.2,1,0.507,6.726,66.5,3.6519,8,307,17.4,360.2,8.05,29 -0.33045,0,6.2,0,0.507,6.086,61.5,3.6519,8,307,17.4,376.75,10.88,24 -0.52058,0,6.2,1,0.507,6.631,76.5,4.148,8,307,17.4,388.45,9.54,25.1 -0.51183,0,6.2,0,0.507,7.358,71.6,4.148,8,307,17.4,390.07,4.73,31.5 -0.08244,30,4.93,0,0.428,6.481,18.5,6.1899,6,300,16.6,379.41,6.36,23.7 -0.09252,30,4.93,0,0.428,6.606,42.2,6.1899,6,300,16.6,383.78,7.37,23.3 -0.11329,30,4.93,0,0.428,6.897,54.3,6.3361,6,300,16.6,391.25,11.38,22 -0.10612,30,4.93,0,0.428,6.095,65.1,6.3361,6,300,16.6,394.62,12.4,20.1 -0.1029,30,4.93,0,0.428,6.358,52.9,7.0355,6,300,16.6,372.75,11.22,22.2 -0.12757,30,4.93,0,0.428,6.393,7.8,7.0355,6,300,16.6,374.71,5.19,23.7 -0.20608,22,5.86,0,0.431,5.593,76.5,7.9549,7,330,19.1,372.49,12.5,17.6 -0.19133,22,5.86,0,0.431,5.605,70.2,7.9549,7,330,19.1,389.13,18.46,18.5 -0.33983,22,5.86,0,0.431,6.108,34.9,8.0555,7,330,19.1,390.18,9.16,24.3 -0.19657,22,5.86,0,0.431,6.226,79.2,8.0555,7,330,19.1,376.14,10.15,20.5 -0.16439,22,5.86,0,0.431,6.433,49.1,7.8265,7,330,19.1,374.71,9.52,24.5 -0.19073,22,5.86,0,0.431,6.718,17.5,7.8265,7,330,19.1,393.74,6.56,26.2 -0.1403,22,5.86,0,0.431,6.487,13,7.3967,7,330,19.1,396.28,5.9,24.4 -0.21409,22,5.86,0,0.431,6.438,8.9,7.3967,7,330,19.1,377.07,3.59,24.8 -0.08221,22,5.86,0,0.431,6.957,6.8,8.9067,7,330,19.1,386.09,3.53,29.6 -0.36894,22,5.86,0,0.431,8.259,8.4,8.9067,7,330,19.1,396.9,3.54,42.8 -0.04819,80,3.64,0,0.392,6.108,32,9.2203,1,315,16.4,392.89,6.57,21.9 -0.03548,80,3.64,0,0.392,5.876,19.1,9.2203,1,315,16.4,395.18,9.25,20.9 -0.01538,90,3.75,0,0.394,7.454,34.2,6.3361,3,244,15.9,386.34,3.11,44 -0.61154,20,3.97,0,0.647,8.704,86.9,1.801,5,264,13,389.7,5.12,50 -0.66351,20,3.97,0,0.647,7.333,100,1.8946,5,264,13,383.29,7.79,36 -0.65665,20,3.97,0,0.647,6.842,100,2.0107,5,264,13,391.93,6.9,30.1 -0.54011,20,3.97,0,0.647,7.203,81.8,2.1121,5,264,13,392.8,9.59,33.8 -0.53412,20,3.97,0,0.647,7.52,89.4,2.1398,5,264,13,388.37,7.26,43.1 -0.52014,20,3.97,0,0.647,8.398,91.5,2.2885,5,264,13,386.86,5.91,48.8 -0.82526,20,3.97,0,0.647,7.327,94.5,2.0788,5,264,13,393.42,11.25,31 -0.55007,20,3.97,0,0.647,7.206,91.6,1.9301,5,264,13,387.89,8.1,36.5 -0.76162,20,3.97,0,0.647,5.56,62.8,1.9865,5,264,13,392.4,10.45,22.8 -0.7857,20,3.97,0,0.647,7.014,84.6,2.1329,5,264,13,384.07,14.79,30.7 -0.57834,20,3.97,0,0.575,8.297,67,2.4216,5,264,13,384.54,7.44,50 -0.5405,20,3.97,0,0.575,7.47,52.6,2.872,5,264,13,390.3,3.16,43.5 -0.09065,20,6.96,1,0.464,5.92,61.5,3.9175,3,223,18.6,391.34,13.65,20.7 -0.29916,20,6.96,0,0.464,5.856,42.1,4.429,3,223,18.6,388.65,13,21.1 -0.16211,20,6.96,0,0.464,6.24,16.3,4.429,3,223,18.6,396.9,6.59,25.2 -0.1146,20,6.96,0,0.464,6.538,58.7,3.9175,3,223,18.6,394.96,7.73,24.4 -0.22188,20,6.96,1,0.464,7.691,51.8,4.3665,3,223,18.6,390.77,6.58,35.2 -0.05644,40,6.41,1,0.447,6.758,32.9,4.0776,4,254,17.6,396.9,3.53,32.4 -0.09604,40,6.41,0,0.447,6.854,42.8,4.2673,4,254,17.6,396.9,2.98,32 -0.10469,40,6.41,1,0.447,7.267,49,4.7872,4,254,17.6,389.25,6.05,33.2 -0.06127,40,6.41,1,0.447,6.826,27.6,4.8628,4,254,17.6,393.45,4.16,33.1 -0.07978,40,6.41,0,0.447,6.482,32.1,4.1403,4,254,17.6,396.9,7.19,29.1 -0.21038,20,3.33,0,0.4429,6.812,32.2,4.1007,5,216,14.9,396.9,4.85,35.1 -0.03578,20,3.33,0,0.4429,7.82,64.5,4.6947,5,216,14.9,387.31,3.76,45.4 -0.03705,20,3.33,0,0.4429,6.968,37.2,5.2447,5,216,14.9,392.23,4.59,35.4 -0.06129,20,3.33,1,0.4429,7.645,49.7,5.2119,5,216,14.9,377.07,3.01,46 -0.01501,90,1.21,1,0.401,7.923,24.8,5.885,1,198,13.6,395.52,3.16,50 -0.00906,90,2.97,0,0.4,7.088,20.8,7.3073,1,285,15.3,394.72,7.85,32.2 -0.01096,55,2.25,0,0.389,6.453,31.9,7.3073,1,300,15.3,394.72,8.23,22 -0.01965,80,1.76,0,0.385,6.23,31.5,9.0892,1,241,18.2,341.6,12.93,20.1 -0.03871,52.5,5.32,0,0.405,6.209,31.3,7.3172,6,293,16.6,396.9,7.14,23.2 -0.0459,52.5,5.32,0,0.405,6.315,45.6,7.3172,6,293,16.6,396.9,7.6,22.3 -0.04297,52.5,5.32,0,0.405,6.565,22.9,7.3172,6,293,16.6,371.72,9.51,24.8 -0.03502,80,4.95,0,0.411,6.861,27.9,5.1167,4,245,19.2,396.9,3.33,28.5 -0.07886,80,4.95,0,0.411,7.148,27.7,5.1167,4,245,19.2,396.9,3.56,37.3 -0.03615,80,4.95,0,0.411,6.63,23.4,5.1167,4,245,19.2,396.9,4.7,27.9 -0.08265,0,13.92,0,0.437,6.127,18.4,5.5027,4,289,16,396.9,8.58,23.9 -0.08199,0,13.92,0,0.437,6.009,42.3,5.5027,4,289,16,396.9,10.4,21.7 -0.12932,0,13.92,0,0.437,6.678,31.1,5.9604,4,289,16,396.9,6.27,28.6 -0.05372,0,13.92,0,0.437,6.549,51,5.9604,4,289,16,392.85,7.39,27.1 -0.14103,0,13.92,0,0.437,5.79,58,6.32,4,289,16,396.9,15.84,20.3 -0.06466,70,2.24,0,0.4,6.345,20.1,7.8278,5,358,14.8,368.24,4.97,22.5 -0.05561,70,2.24,0,0.4,7.041,10,7.8278,5,358,14.8,371.58,4.74,29 -0.04417,70,2.24,0,0.4,6.871,47.4,7.8278,5,358,14.8,390.86,6.07,24.8 -0.03537,34,6.09,0,0.433,6.59,40.4,5.4917,7,329,16.1,395.75,9.5,22 -0.09266,34,6.09,0,0.433,6.495,18.4,5.4917,7,329,16.1,383.61,8.67,26.4 -0.1,34,6.09,0,0.433,6.982,17.7,5.4917,7,329,16.1,390.43,4.86,33.1 -0.05515,33,2.18,0,0.472,7.236,41.1,4.022,7,222,18.4,393.68,6.93,36.1 -0.05479,33,2.18,0,0.472,6.616,58.1,3.37,7,222,18.4,393.36,8.93,28.4 -0.07503,33,2.18,0,0.472,7.42,71.9,3.0992,7,222,18.4,396.9,6.47,33.4 -0.04932,33,2.18,0,0.472,6.849,70.3,3.1827,7,222,18.4,396.9,7.53,28.2 -0.49298,0,9.9,0,0.544,6.635,82.5,3.3175,4,304,18.4,396.9,4.54,22.8 -0.3494,0,9.9,0,0.544,5.972,76.7,3.1025,4,304,18.4,396.24,9.97,20.3 -2.63548,0,9.9,0,0.544,4.973,37.8,2.5194,4,304,18.4,350.45,12.64,16.1 -0.79041,0,9.9,0,0.544,6.122,52.8,2.6403,4,304,18.4,396.9,5.98,22.1 -0.26169,0,9.9,0,0.544,6.023,90.4,2.834,4,304,18.4,396.3,11.72,19.4 -0.26938,0,9.9,0,0.544,6.266,82.8,3.2628,4,304,18.4,393.39,7.9,21.6 -0.3692,0,9.9,0,0.544,6.567,87.3,3.6023,4,304,18.4,395.69,9.28,23.8 -0.25356,0,9.9,0,0.544,5.705,77.7,3.945,4,304,18.4,396.42,11.5,16.2 -0.31827,0,9.9,0,0.544,5.914,83.2,3.9986,4,304,18.4,390.7,18.33,17.8 -0.24522,0,9.9,0,0.544,5.782,71.7,4.0317,4,304,18.4,396.9,15.94,19.8 -0.40202,0,9.9,0,0.544,6.382,67.2,3.5325,4,304,18.4,395.21,10.36,23.1 -0.47547,0,9.9,0,0.544,6.113,58.8,4.0019,4,304,18.4,396.23,12.73,21 -0.1676,0,7.38,0,0.493,6.426,52.3,4.5404,5,287,19.6,396.9,7.2,23.8 -0.18159,0,7.38,0,0.493,6.376,54.3,4.5404,5,287,19.6,396.9,6.87,23.1 -0.35114,0,7.38,0,0.493,6.041,49.9,4.7211,5,287,19.6,396.9,7.7,20.4 -0.28392,0,7.38,0,0.493,5.708,74.3,4.7211,5,287,19.6,391.13,11.74,18.5 -0.34109,0,7.38,0,0.493,6.415,40.1,4.7211,5,287,19.6,396.9,6.12,25 -0.19186,0,7.38,0,0.493,6.431,14.7,5.4159,5,287,19.6,393.68,5.08,24.6 -0.30347,0,7.38,0,0.493,6.312,28.9,5.4159,5,287,19.6,396.9,6.15,23 -0.24103,0,7.38,0,0.493,6.083,43.7,5.4159,5,287,19.6,396.9,12.79,22.2 -0.06617,0,3.24,0,0.46,5.868,25.8,5.2146,4,430,16.9,382.44,9.97,19.3 -0.06724,0,3.24,0,0.46,6.333,17.2,5.2146,4,430,16.9,375.21,7.34,22.6 -0.04544,0,3.24,0,0.46,6.144,32.2,5.8736,4,430,16.9,368.57,9.09,19.8 -0.05023,35,6.06,0,0.4379,5.706,28.4,6.6407,1,304,16.9,394.02,12.43,17.1 -0.03466,35,6.06,0,0.4379,6.031,23.3,6.6407,1,304,16.9,362.25,7.83,19.4 -0.05083,0,5.19,0,0.515,6.316,38.1,6.4584,5,224,20.2,389.71,5.68,22.2 -0.03738,0,5.19,0,0.515,6.31,38.5,6.4584,5,224,20.2,389.4,6.75,20.7 -0.03961,0,5.19,0,0.515,6.037,34.5,5.9853,5,224,20.2,396.9,8.01,21.1 -0.03427,0,5.19,0,0.515,5.869,46.3,5.2311,5,224,20.2,396.9,9.8,19.5 -0.03041,0,5.19,0,0.515,5.895,59.6,5.615,5,224,20.2,394.81,10.56,18.5 -0.03306,0,5.19,0,0.515,6.059,37.3,4.8122,5,224,20.2,396.14,8.51,20.6 -0.05497,0,5.19,0,0.515,5.985,45.4,4.8122,5,224,20.2,396.9,9.74,19 -0.06151,0,5.19,0,0.515,5.968,58.5,4.8122,5,224,20.2,396.9,9.29,18.7 -0.01301,35,1.52,0,0.442,7.241,49.3,7.0379,1,284,15.5,394.74,5.49,32.7 -0.02498,0,1.89,0,0.518,6.54,59.7,6.2669,1,422,15.9,389.96,8.65,16.5 -0.02543,55,3.78,0,0.484,6.696,56.4,5.7321,5,370,17.6,396.9,7.18,23.9 -0.03049,55,3.78,0,0.484,6.874,28.1,6.4654,5,370,17.6,387.97,4.61,31.2 -0.03113,0,4.39,0,0.442,6.014,48.5,8.0136,3,352,18.8,385.64,10.53,17.5 -0.06162,0,4.39,0,0.442,5.898,52.3,8.0136,3,352,18.8,364.61,12.67,17.2 -0.0187,85,4.15,0,0.429,6.516,27.7,8.5353,4,351,17.9,392.43,6.36,23.1 -0.01501,80,2.01,0,0.435,6.635,29.7,8.344,4,280,17,390.94,5.99,24.5 -0.02899,40,1.25,0,0.429,6.939,34.5,8.7921,1,335,19.7,389.85,5.89,26.6 -0.06211,40,1.25,0,0.429,6.49,44.4,8.7921,1,335,19.7,396.9,5.98,22.9 -0.0795,60,1.69,0,0.411,6.579,35.9,10.7103,4,411,18.3,370.78,5.49,24.1 -0.07244,60,1.69,0,0.411,5.884,18.5,10.7103,4,411,18.3,392.33,7.79,18.6 -0.01709,90,2.02,0,0.41,6.728,36.1,12.1265,5,187,17,384.46,4.5,30.1 -0.04301,80,1.91,0,0.413,5.663,21.9,10.5857,4,334,22,382.8,8.05,18.2 -0.10659,80,1.91,0,0.413,5.936,19.5,10.5857,4,334,22,376.04,5.57,20.6 -8.98296,0,18.1,1,0.77,6.212,97.4,2.1222,24,666,20.2,377.73,17.6,17.8 -3.8497,0,18.1,1,0.77,6.395,91,2.5052,24,666,20.2,391.34,13.27,21.7 -5.20177,0,18.1,1,0.77,6.127,83.4,2.7227,24,666,20.2,395.43,11.48,22.7 -4.26131,0,18.1,0,0.77,6.112,81.3,2.5091,24,666,20.2,390.74,12.67,22.6 -4.54192,0,18.1,0,0.77,6.398,88,2.5182,24,666,20.2,374.56,7.79,25 -3.83684,0,18.1,0,0.77,6.251,91.1,2.2955,24,666,20.2,350.65,14.19,19.9 -3.67822,0,18.1,0,0.77,5.362,96.2,2.1036,24,666,20.2,380.79,10.19,20.8 -4.22239,0,18.1,1,0.77,5.803,89,1.9047,24,666,20.2,353.04,14.64,16.8 -3.47428,0,18.1,1,0.718,8.78,82.9,1.9047,24,666,20.2,354.55,5.29,21.9 -4.55587,0,18.1,0,0.718,3.561,87.9,1.6132,24,666,20.2,354.7,7.12,27.5 -3.69695,0,18.1,0,0.718,4.963,91.4,1.7523,24,666,20.2,316.03,14,21.9 -13.5222,0,18.1,0,0.631,3.863,100,1.5106,24,666,20.2,131.42,13.33,23.1 -4.89822,0,18.1,0,0.631,4.97,100,1.3325,24,666,20.2,375.52,3.26,50 -5.66998,0,18.1,1,0.631,6.683,96.8,1.3567,24,666,20.2,375.33,3.73,50 -6.53876,0,18.1,1,0.631,7.016,97.5,1.2024,24,666,20.2,392.05,2.96,50 -9.2323,0,18.1,0,0.631,6.216,100,1.1691,24,666,20.2,366.15,9.53,50 -8.26725,0,18.1,1,0.668,5.875,89.6,1.1296,24,666,20.2,347.88,8.88,50 -11.1081,0,18.1,0,0.668,4.906,100,1.1742,24,666,20.2,396.9,34.77,13.8 -18.4982,0,18.1,0,0.668,4.138,100,1.137,24,666,20.2,396.9,37.97,13.8 -19.6091,0,18.1,0,0.671,7.313,97.9,1.3163,24,666,20.2,396.9,13.44,15 -15.288,0,18.1,0,0.671,6.649,93.3,1.3449,24,666,20.2,363.02,23.24,13.9 -9.82349,0,18.1,0,0.671,6.794,98.8,1.358,24,666,20.2,396.9,21.24,13.3 -23.6482,0,18.1,0,0.671,6.38,96.2,1.3861,24,666,20.2,396.9,23.69,13.1 -17.8667,0,18.1,0,0.671,6.223,100,1.3861,24,666,20.2,393.74,21.78,10.2 -88.9762,0,18.1,0,0.671,6.968,91.9,1.4165,24,666,20.2,396.9,17.21,10.4 -15.8744,0,18.1,0,0.671,6.545,99.1,1.5192,24,666,20.2,396.9,21.08,10.9 -9.18702,0,18.1,0,0.7,5.536,100,1.5804,24,666,20.2,396.9,23.6,11.3 -7.99248,0,18.1,0,0.7,5.52,100,1.5331,24,666,20.2,396.9,24.56,12.3 -20.0849,0,18.1,0,0.7,4.368,91.2,1.4395,24,666,20.2,285.83,30.63,8.8 -16.8118,0,18.1,0,0.7,5.277,98.1,1.4261,24,666,20.2,396.9,30.81,7.2 -24.3938,0,18.1,0,0.7,4.652,100,1.4672,24,666,20.2,396.9,28.28,10.5 -22.5971,0,18.1,0,0.7,5,89.5,1.5184,24,666,20.2,396.9,31.99,7.4 -14.3337,0,18.1,0,0.7,4.88,100,1.5895,24,666,20.2,372.92,30.62,10.2 -8.15174,0,18.1,0,0.7,5.39,98.9,1.7281,24,666,20.2,396.9,20.85,11.5 -6.96215,0,18.1,0,0.7,5.713,97,1.9265,24,666,20.2,394.43,17.11,15.1 -5.29305,0,18.1,0,0.7,6.051,82.5,2.1678,24,666,20.2,378.38,18.76,23.2 -11.5779,0,18.1,0,0.7,5.036,97,1.77,24,666,20.2,396.9,25.68,9.7 -8.64476,0,18.1,0,0.693,6.193,92.6,1.7912,24,666,20.2,396.9,15.17,13.8 -13.3598,0,18.1,0,0.693,5.887,94.7,1.7821,24,666,20.2,396.9,16.35,12.7 -8.71675,0,18.1,0,0.693,6.471,98.8,1.7257,24,666,20.2,391.98,17.12,13.1 -5.87205,0,18.1,0,0.693,6.405,96,1.6768,24,666,20.2,396.9,19.37,12.5 -7.67202,0,18.1,0,0.693,5.747,98.9,1.6334,24,666,20.2,393.1,19.92,8.5 -38.3518,0,18.1,0,0.693,5.453,100,1.4896,24,666,20.2,396.9,30.59,5 -9.91655,0,18.1,0,0.693,5.852,77.8,1.5004,24,666,20.2,338.16,29.97,6.3 -25.0461,0,18.1,0,0.693,5.987,100,1.5888,24,666,20.2,396.9,26.77,5.6 -14.2362,0,18.1,0,0.693,6.343,100,1.5741,24,666,20.2,396.9,20.32,7.2 -9.59571,0,18.1,0,0.693,6.404,100,1.639,24,666,20.2,376.11,20.31,12.1 -24.8017,0,18.1,0,0.693,5.349,96,1.7028,24,666,20.2,396.9,19.77,8.3 -41.5292,0,18.1,0,0.693,5.531,85.4,1.6074,24,666,20.2,329.46,27.38,8.5 -67.9208,0,18.1,0,0.693,5.683,100,1.4254,24,666,20.2,384.97,22.98,5 -20.7162,0,18.1,0,0.659,4.138,100,1.1781,24,666,20.2,370.22,23.34,11.9 -11.9511,0,18.1,0,0.659,5.608,100,1.2852,24,666,20.2,332.09,12.13,27.9 -7.40389,0,18.1,0,0.597,5.617,97.9,1.4547,24,666,20.2,314.64,26.4,17.2 -14.4383,0,18.1,0,0.597,6.852,100,1.4655,24,666,20.2,179.36,19.78,27.5 -51.1358,0,18.1,0,0.597,5.757,100,1.413,24,666,20.2,2.6,10.11,15 -14.0507,0,18.1,0,0.597,6.657,100,1.5275,24,666,20.2,35.05,21.22,17.2 -18.811,0,18.1,0,0.597,4.628,100,1.5539,24,666,20.2,28.79,34.37,17.9 -28.6558,0,18.1,0,0.597,5.155,100,1.5894,24,666,20.2,210.97,20.08,16.3 -45.7461,0,18.1,0,0.693,4.519,100,1.6582,24,666,20.2,88.27,36.98,7 -18.0846,0,18.1,0,0.679,6.434,100,1.8347,24,666,20.2,27.25,29.05,7.2 -10.8342,0,18.1,0,0.679,6.782,90.8,1.8195,24,666,20.2,21.57,25.79,7.5 -25.9406,0,18.1,0,0.679,5.304,89.1,1.6475,24,666,20.2,127.36,26.64,10.4 -73.5341,0,18.1,0,0.679,5.957,100,1.8026,24,666,20.2,16.45,20.62,8.8 -11.8123,0,18.1,0,0.718,6.824,76.5,1.794,24,666,20.2,48.45,22.74,8.4 -11.0874,0,18.1,0,0.718,6.411,100,1.8589,24,666,20.2,318.75,15.02,16.7 -7.02259,0,18.1,0,0.718,6.006,95.3,1.8746,24,666,20.2,319.98,15.7,14.2 -12.0482,0,18.1,0,0.614,5.648,87.6,1.9512,24,666,20.2,291.55,14.1,20.8 -7.05042,0,18.1,0,0.614,6.103,85.1,2.0218,24,666,20.2,2.52,23.29,13.4 -8.79212,0,18.1,0,0.584,5.565,70.6,2.0635,24,666,20.2,3.65,17.16,11.7 -15.8603,0,18.1,0,0.679,5.896,95.4,1.9096,24,666,20.2,7.68,24.39,8.3 -12.2472,0,18.1,0,0.584,5.837,59.7,1.9976,24,666,20.2,24.65,15.69,10.2 -37.6619,0,18.1,0,0.679,6.202,78.7,1.8629,24,666,20.2,18.82,14.52,10.9 -7.36711,0,18.1,0,0.679,6.193,78.1,1.9356,24,666,20.2,96.73,21.52,11 -9.33889,0,18.1,0,0.679,6.38,95.6,1.9682,24,666,20.2,60.72,24.08,9.5 -8.49213,0,18.1,0,0.584,6.348,86.1,2.0527,24,666,20.2,83.45,17.64,14.5 -10.0623,0,18.1,0,0.584,6.833,94.3,2.0882,24,666,20.2,81.33,19.69,14.1 -6.44405,0,18.1,0,0.584,6.425,74.8,2.2004,24,666,20.2,97.95,12.03,16.1 -5.58107,0,18.1,0,0.713,6.436,87.9,2.3158,24,666,20.2,100.19,16.22,14.3 -13.9134,0,18.1,0,0.713,6.208,95,2.2222,24,666,20.2,100.63,15.17,11.7 -11.1604,0,18.1,0,0.74,6.629,94.6,2.1247,24,666,20.2,109.85,23.27,13.4 -14.4208,0,18.1,0,0.74,6.461,93.3,2.0026,24,666,20.2,27.49,18.05,9.6 -15.1772,0,18.1,0,0.74,6.152,100,1.9142,24,666,20.2,9.32,26.45,8.7 -13.6781,0,18.1,0,0.74,5.935,87.9,1.8206,24,666,20.2,68.95,34.02,8.4 -9.39063,0,18.1,0,0.74,5.627,93.9,1.8172,24,666,20.2,396.9,22.88,12.8 -22.0511,0,18.1,0,0.74,5.818,92.4,1.8662,24,666,20.2,391.45,22.11,10.5 -9.72418,0,18.1,0,0.74,6.406,97.2,2.0651,24,666,20.2,385.96,19.52,17.1 -5.66637,0,18.1,0,0.74,6.219,100,2.0048,24,666,20.2,395.69,16.59,18.4 -9.96654,0,18.1,0,0.74,6.485,100,1.9784,24,666,20.2,386.73,18.85,15.4 -12.8023,0,18.1,0,0.74,5.854,96.6,1.8956,24,666,20.2,240.52,23.79,10.8 -10.6718,0,18.1,0,0.74,6.459,94.8,1.9879,24,666,20.2,43.06,23.98,11.8 -6.28807,0,18.1,0,0.74,6.341,96.4,2.072,24,666,20.2,318.01,17.79,14.9 -9.92485,0,18.1,0,0.74,6.251,96.6,2.198,24,666,20.2,388.52,16.44,12.6 -9.32909,0,18.1,0,0.713,6.185,98.7,2.2616,24,666,20.2,396.9,18.13,14.1 -7.52601,0,18.1,0,0.713,6.417,98.3,2.185,24,666,20.2,304.21,19.31,13 -6.71772,0,18.1,0,0.713,6.749,92.6,2.3236,24,666,20.2,0.32,17.44,13.4 -5.44114,0,18.1,0,0.713,6.655,98.2,2.3552,24,666,20.2,355.29,17.73,15.2 -5.09017,0,18.1,0,0.713,6.297,91.8,2.3682,24,666,20.2,385.09,17.27,16.1 -8.24809,0,18.1,0,0.713,7.393,99.3,2.4527,24,666,20.2,375.87,16.74,17.8 -9.51363,0,18.1,0,0.713,6.728,94.1,2.4961,24,666,20.2,6.68,18.71,14.9 -4.75237,0,18.1,0,0.713,6.525,86.5,2.4358,24,666,20.2,50.92,18.13,14.1 -4.66883,0,18.1,0,0.713,5.976,87.9,2.5806,24,666,20.2,10.48,19.01,12.7 -8.20058,0,18.1,0,0.713,5.936,80.3,2.7792,24,666,20.2,3.5,16.94,13.5 -7.75223,0,18.1,0,0.713,6.301,83.7,2.7831,24,666,20.2,272.21,16.23,14.9 -6.80117,0,18.1,0,0.713,6.081,84.4,2.7175,24,666,20.2,396.9,14.7,20 -4.81213,0,18.1,0,0.713,6.701,90,2.5975,24,666,20.2,255.23,16.42,16.4 -3.69311,0,18.1,0,0.713,6.376,88.4,2.5671,24,666,20.2,391.43,14.65,17.7 -6.65492,0,18.1,0,0.713,6.317,83,2.7344,24,666,20.2,396.9,13.99,19.5 -5.82115,0,18.1,0,0.713,6.513,89.9,2.8016,24,666,20.2,393.82,10.29,20.2 -7.83932,0,18.1,0,0.655,6.209,65.4,2.9634,24,666,20.2,396.9,13.22,21.4 -3.1636,0,18.1,0,0.655,5.759,48.2,3.0665,24,666,20.2,334.4,14.13,19.9 -3.77498,0,18.1,0,0.655,5.952,84.7,2.8715,24,666,20.2,22.01,17.15,19 -4.42228,0,18.1,0,0.584,6.003,94.5,2.5403,24,666,20.2,331.29,21.32,19.1 -15.5757,0,18.1,0,0.58,5.926,71,2.9084,24,666,20.2,368.74,18.13,19.1 -13.0751,0,18.1,0,0.58,5.713,56.7,2.8237,24,666,20.2,396.9,14.76,20.1 -4.34879,0,18.1,0,0.58,6.167,84,3.0334,24,666,20.2,396.9,16.29,19.9 -4.03841,0,18.1,0,0.532,6.229,90.7,3.0993,24,666,20.2,395.33,12.87,19.6 -3.56868,0,18.1,0,0.58,6.437,75,2.8965,24,666,20.2,393.37,14.36,23.2 -4.64689,0,18.1,0,0.614,6.98,67.6,2.5329,24,666,20.2,374.68,11.66,29.8 -8.05579,0,18.1,0,0.584,5.427,95.4,2.4298,24,666,20.2,352.58,18.14,13.8 -6.39312,0,18.1,0,0.584,6.162,97.4,2.206,24,666,20.2,302.76,24.1,13.3 -4.87141,0,18.1,0,0.614,6.484,93.6,2.3053,24,666,20.2,396.21,18.68,16.7 -15.0234,0,18.1,0,0.614,5.304,97.3,2.1007,24,666,20.2,349.48,24.91,12 -10.233,0,18.1,0,0.614,6.185,96.7,2.1705,24,666,20.2,379.7,18.03,14.6 -14.3337,0,18.1,0,0.614,6.229,88,1.9512,24,666,20.2,383.32,13.11,21.4 -5.82401,0,18.1,0,0.532,6.242,64.7,3.4242,24,666,20.2,396.9,10.74,23 -5.70818,0,18.1,0,0.532,6.75,74.9,3.3317,24,666,20.2,393.07,7.74,23.7 -5.73116,0,18.1,0,0.532,7.061,77,3.4106,24,666,20.2,395.28,7.01,25 -2.81838,0,18.1,0,0.532,5.762,40.3,4.0983,24,666,20.2,392.92,10.42,21.8 -2.37857,0,18.1,0,0.583,5.871,41.9,3.724,24,666,20.2,370.73,13.34,20.6 -3.67367,0,18.1,0,0.583,6.312,51.9,3.9917,24,666,20.2,388.62,10.58,21.2 -5.69175,0,18.1,0,0.583,6.114,79.8,3.5459,24,666,20.2,392.68,14.98,19.1 -4.83567,0,18.1,0,0.583,5.905,53.2,3.1523,24,666,20.2,388.22,11.45,20.6 -0.15086,0,27.74,0,0.609,5.454,92.7,1.8209,4,711,20.1,395.09,18.06,15.2 -0.18337,0,27.74,0,0.609,5.414,98.3,1.7554,4,711,20.1,344.05,23.97,7 -0.20746,0,27.74,0,0.609,5.093,98,1.8226,4,711,20.1,318.43,29.68,8.1 -0.10574,0,27.74,0,0.609,5.983,98.8,1.8681,4,711,20.1,390.11,18.07,13.6 -0.11132,0,27.74,0,0.609,5.983,83.5,2.1099,4,711,20.1,396.9,13.35,20.1 -0.17331,0,9.69,0,0.585,5.707,54,2.3817,6,391,19.2,396.9,12.01,21.8 -0.27957,0,9.69,0,0.585,5.926,42.6,2.3817,6,391,19.2,396.9,13.59,24.5 -0.17899,0,9.69,0,0.585,5.67,28.8,2.7986,6,391,19.2,393.29,17.6,23.1 -0.2896,0,9.69,0,0.585,5.39,72.9,2.7986,6,391,19.2,396.9,21.14,19.7 -0.26838,0,9.69,0,0.585,5.794,70.6,2.8927,6,391,19.2,396.9,14.1,18.3 -0.23912,0,9.69,0,0.585,6.019,65.3,2.4091,6,391,19.2,396.9,12.92,21.2 -0.17783,0,9.69,0,0.585,5.569,73.5,2.3999,6,391,19.2,395.77,15.1,17.5 -0.22438,0,9.69,0,0.585,6.027,79.7,2.4982,6,391,19.2,396.9,14.33,16.8 -0.06263,0,11.93,0,0.573,6.593,69.1,2.4786,1,273,21,391.99,9.67,22.4 -0.04527,0,11.93,0,0.573,6.12,76.7,2.2875,1,273,21,396.9,9.08,20.6 -0.06076,0,11.93,0,0.573,6.976,91,2.1675,1,273,21,396.9,5.64,23.9 -0.10959,0,11.93,0,0.573,6.794,89.3,2.3889,1,273,21,393.45,6.48,22 -0.04741,0,11.93,0,0.573,6.03,80.8,2.505,1,273,21,396.9,7.88,11.9 diff --git a/data.json b/data.json deleted file mode 100644 index b9e1aaf7d1c..00000000000 --- a/data.json +++ /dev/null @@ -1 +0,0 @@ -{"abandoned industrial site": ["Site that cannot be used for any purpose, being contaminated by pollutants."], "abandoned vehicle": ["A vehicle that has been discarded in the environment, urban or otherwise, often found wrecked, destroyed, damaged or with a major component part stolen or missing."], "abiotic factor": ["Physical, chemical and other non-living environmental factor."], "access road": ["Any street or narrow stretch of paved surface that leads to a specific destination, such as a main highway."], "access to the sea": ["The ability to bring goods to and from a port that is able to harbor sea faring vessels."], "accident": ["An unexpected, unfortunate mishap, failure or loss with the potential for harming human life, property or the environment.", "An event that happens suddenly or by chance without an apparent cause."], "accumulator": ["A rechargeable device for storing electrical energy in the form of chemical energy, consisting of one or more separate secondary cells.\\n(Source: CED)"], "acidification": ["Addition of an acid to a solution until the pH falls below 7."], "acidity": ["The state of being acid that is of being capable of transferring a hydrogen ion in solution."], "acidity degree": ["The amount of acid present in a solution, often expressed in terms of pH."], "acid rain": ["Rain having a pH less than 5.6."], "acid": ["A compound capable of transferring a hydrogen ion in solution.", "Being harsh or corrosive in tone.", "Having an acid, sharp or tangy taste.", "A powerful hallucinogenic drug manufactured from lysergic acid.", "Having a pH less than 7, or being sour, or having the strength to neutralize alkalis, or turning a litmus paper red."], "acoustic filter": ["A device employed to reject sound in a particular range of frequencies while passing sound in another range of frequencies."], "acoustic insulation": ["The process of preventing the transmission of sound by surrounding with a nonconducting material."], "acoustic level": ["Physical quantity of sound measured, usually expressed in decibels.\\n(Source: KORENa)"], "acoustic property": ["The characteristics found within a structure that determine the quality of sound in its relevance to hearing.\\n(Source: KOREN)"], "acoustics": ["The science of the production, transmission and effects of sound."], "actinide": ["An element member of the actinide group of 15 radioactive elements."], "actinium": ["A radioactive element of the actinide series, occurring as a decay product of uranium. It is used as an alpha particle source and in neutron production.\\n(Source: CED)"], "action group": ["A collection of persons united to address specific sociopolitical or socioeconomic concerns."], "activated carbon": ["A powdered, granular or pelleted form of amorphous carbon characterized by a very large surface area per unit volume because of an enormous number of fine pores.\\n(Source: LANDY)"], "activated sludge": ["Sludge that has been aerated and subjected to bacterial action; used to speed breakdown of organism matter in raw sewage during secondary waste treatment.\\n(Source: LANDY)"], "act": ["Something done voluntarily by a person, and of such a nature that certain legal consequences attach to it.", "Legal documents, decrees, edicts, laws, judgments, etc.", "To do something.", "To perform a theatrical role."], "adaptable species": ["Species capable of adapting to changing circumstances."], "chemical addition": ["Chemical reaction in which one or more of the double bonds or triple bonds in an unsaturated compound is converted to a single bond by the addition of other atoms or groups."], "additional packaging": ["Additional packaging around the normal sales packaging, for example as protection against theft or for the purpose of advertising."], "addition polymer": ["A polymer formed by the chain addition of unsaturated monomer molecules, such as olefins, with one another without the formation of a by-product, as water; examples are polyethylene, polypropylene and polystyrene."], "additive": ["A substance mixed in small quantities with another product to modify its chemical or physical state, for example to make food look visually more attractive.", "Proper to be added."], "adhesive": ["Substance used for sticking objects together."], "acceptable daily intake": ["The measurement of the amount of any chemical substance that can be safely consumed by a human being in a day. Calculations are usually based on the maximum level of a substance that can be fed to animals without producing any harmful effects. This is divided by a \"safety factor\" to allow for the differences between animals and humans and to take account of the variation in human diets."], "administration": ["The management or direction of the affairs of a public or private office, business or organization."], "administrative body": ["Any governmental agency or organization charged with managing and implementing regulations, laws and government policies.\\n(Source: BLD)", "All representatives in a company that have the assignment to administrate the company itself."], "administrative competence": ["The power of an administrative organ to exercise control over a certain field."], "administrative fiat": ["An authoritative decree, sanction or order issued from an office with executive or managerial authority, without necessarily having the force of law or its equivalent.\\n(Source: RHW / BLD)"], "administrative jurisdiction": ["The extent, power or territory in which an office with executive or managerial authority administers justice or declares judgments.\\n(Source: RHW / BLD)"], "administrative law": ["Body of law created by administrative agencies in the form of rules, regulations, orders and decisions to carry out regulatory powers and duties of such agencies.\\n(Source: BLACK)"], "administrative sanction": ["Any formal official imposition of penalty or fine, e.g.: destruction, taking, seizure, or withholding of property; assessment of damages, reimbursement, restitution, compensation, costs, charges or fees; requirement, revocation or suspension of license; or any other compulsory or restrictive action taken by an organization, agency or its representative."], "adsorption": ["The physical or chemical bonding of molecules of gas, liquid or a dissolved substance to the external surface of a solid or the internal surface, if the material is porous, in a very thin layer."], "adult": ["A person who is fully grown, developed or of a specified age.", "(of animals) fully developed."], "adult education": ["Any instruction or training, informal or formal, which is geared to persons of mature age, regardless of previous education, and typically offered by university extension programs, employers, correspondence courses or community groups."], "advertisement": ["The action of drawing public attention to goods, services or events, often through paid announcements in newspapers, magazines, television or radio.\\n(Source: C / RHW)"], "product advertising": ["The creation and dissemination of paid announcements or public notices to draw attention to goods, services or events offered by some entity, usually for purchase.\\n(Source: RHW)"], "advice": ["Official notice, opinion, counsel or recommendation that is optional or at the receiver's discretion."], "aeration": ["Exposition to the action of air."], "aerial photograph": ["An image of the ground surface made on a light-sensitive material and taken at a high altitude from an aircraft, spacecraft or rocket.\\n(Source: MHD)"], "aerobic process": ["A process requiring the presence of oxygen."], "aerobiology": ["The study of the atmospheric dispersal of airborne fungus spores, pollen grains, and microorganisms; and, more broadly, of airborne propagules of algae and protozoans, minute insects such as aphids, and pollution gases and particles which exert specific biologic effects."], "aerodynamic noise": ["Acoustic noise caused by turbulent airflow over the surface of a body."], "aerosol": ["A gaseous suspension of ultramicroscopic particles of a liquid or a solid.\\n(Source: MGH)", "An aerosol can for applying paint, deodorant, etc., as a fine spray."], "afforestation": ["Establishment of a new forest by seeding or planting of nonforested land.", "The planting of trees on land which was previously used for other uses than forestry.", "The planting of trees in an area, or the management of an area to allow trees to regenerate or colonize naturally, in order to produce a forest."], "Africa": ["The second largest of the continents, on the Mediterranean in the north, the Atlantic in the west, and the Red Sea, Gulf of Aden, and Indian Ocean in the east."], "afterburning": ["The incineration of polluting gases and particles resulting from incompletely combusted fuel, and the breakdown of other molecules associated with combustion into inert chemicals."], "age": ["The period of time that a person, animal or plant has lived or is expected to live.", "To begin to look older; to get older.", "To make older.", "A period of history having some distinctive feature.", "How long something has existed."], "agricultural biotechnology": ["An advanced technology that allows plant breeders to make precise genetic changes to impart beneficial traits to crop plants."], "agricultural building": ["The buildings and adjacent service areas of a farm.\\n(Source: WEBSTE)"], "agricultural ecology": ["Study of the ecology of agricultural systems and the natural resources required to sustain them."], "agricultural economics": ["An applied social science that deals with the production, distribution, and consumption of agricultural or farming goods and services."], "agricultural engineering": ["A discipline concerned with developing and improving the means for providing food and fiber for mankind's needs.\\n(Source: MGH)"], "agricultural equipment": ["Machines utilized for tillage, planting, cultivation and harvesting of crops. Despite its benefits in increasing yields, mechanisation has clearly had some adverse environmental effects: deep ploughing exposes more soil to wind and water erosion; crop residues can be removed as opposed to ploughing back into the soil; removal of residues can lead to a serious loss of organic content in the soil, which may increase the risk of soil erosion.\\n(Source: MGH / DOBRIS)"], "agricultural machinery": ["Machines utilized for tillage, planting, cultivation and harvesting of crops. Despite its benefits in increasing yields, mechanisation has clearly had some adverse environmental effects: deep ploughing exposes more soil to wind and water erosion; crop residues can be removed as opposed to ploughing back into the soil; removal of residues can lead to a serious loss of organic content in the soil, which may increase the risk of soil erosion.\\n(Source: MGH / DOBRIS)"], "agricultural management": ["The administration or handling of soil, crops and livestock."], "agricultural pest": ["Insects and mites that damage crops, weeds that compete with field crops for nutrients and water, plants that choke irrigation channels or drainage systems, rodents that eat young plants and grain, and birds that eat seedlings or stored foodstuffs.\\n(Source: WRIGHT)"], "agricultural policy": ["A course of action adopted by government or some other organization that determines how to deal with matters involving the cultivation of land; raising crops; feeding, breeding and raising livestock or poultry; and other farming issues.\\n(Source: RHW)"], "agricultural production": ["The amount of grown crops and breeded livestock per year in a given area."], "agriculture": ["The production of plants and animals useful to man, involving soil cultivation and the breeding and management of crops and livestock."], "agrochemical": ["Any substance or mixture of substances used or intended to be used for preventing, destroying, repelling, attracting, inhibiting, or controlling any insects, rodents, birds, nematodes, bacteria, fungi, weeds or other forms of plant, animal or microbial life regarded as pests."], "agroforestry": ["The interplanting of farm crops and trees, especially leguminous species. In semiarid regions and on denuded hillsides, agroforestry helps control erosion and restores soil fertility, as well as supplying valuable food and commodities at the same time.\\n(Source: ALL)"], "agroindustry": ["Industry dealing with the supply, processing and distribution of farm products.\\n(Source: PHC)"], "agrometeorology": ["The study of the interaction between meteorological and hydrological factors, on the one hand, and agriculture in the widest sense, including horticulture, animal husbandry and forestry, on the other.\\n(Source: EURMET)"], "AIDS": ["A disease of the human immune system caused by the human immunodeficiency virus (HIV)."], "air": ["A predominantly mechanical mixture of a variety of individual gases forming the earth's enveloping atmosphere.", "To expose to fresh air.", "To send data over the airwaves, as in radio or television.", "An expression or appearance indicating a certain state of mind.", "A succession of notes forming a distinctive sequence.", "The space above the earth's surface where planes fly.", "To expose to cool or cold air so as to cool or freshen."], "air conditioning": ["A system or process for controlling the temperature and sometimes the humidity and purity of the air in a house, etc."], "aircraft": ["A vehicle, designed to be supported by the air, either by the dynamic action of the air upon the surfaces of the structure or object or by its own buoyancy.\\n(Source: MGH)"], "aircraft noise": ["Noise caused by various sources associated with aircraft operation, such as propeller and engine exhaust, jet noise, and sonic boom."], "air movement": ["Air movements within the Earth's atmospheric circulation; also called planetary winds. Two main components are recognized: first, the latitudinal meridional component due to the Coriolis force (a deflecting motion or force discussed by G.G. de Coriolis in 1835. The rotation of the Earth causes a body moving across its surface to be deflected to the right in the N hemisphere and to the left in the S hemisphere); and secondly, the longitudinal component and the vertical movement, resulting largely from varying pressure distributions due to differential heating and cooling of the Earth's surface.\\n(Source: WHIT)"], "air pollutant": ["Any pollutant agent or combination of such agents, including any physical, chemical, biological, radioactive substance or matter which is emitted into or otherwise enters the ambient air and can, in high enough concentrations, harm humans, animals, vegetation or material.\\n(Source: LEE / TOE)"], "air pollution": ["Presence in the atmosphere of large quantities of gases, solids and radiation produced by the burning of natural and artificial fuels, chemical and other industrial processes and nuclear explosions."], "airport": ["A landing and taking-off area for civil aircraft, usually with surfaced runways and aircraft maintenance and passenger facilities."], "air quality": ["The degree to which air is polluted; the type and maximum concentration of man-produced pollutants that should be permitted in the atmosphere.\\n(Source: ALL / WRIGHT)"], "air quality control": ["The measurement of ambient air-pollution concentrations in order to determine whether there is a problem in a given region.\\n(Source: CONFERa)"], "air safety": ["Any measure, technique or design intended to reduce the risk of harm posed by either moving vehicles or projectiles above the earth's surface or pollutants to the earth's atmosphere."], "air temperature": ["The temperature of the atmosphere which represents the average kinetic energy of the molecular motion in a small region and is defined in terms of a standard or calibrated thermometer in thermal equilibrium with the air."], "air traffic": ["Aircraft moving in flight or on airport runways."], "air traffic law": ["International rules and conventions relating to air transportation."], "air traffic regulation": ["Rules and regulations that govern civil and military air traffic."], "air transportation": ["The use of aircraft, predominantly airplanes, to move passengers and cargo."], "alarm": ["The act of signalling an impending danger in order to call attention to some event or condition.", "A signal given to call attention to some event or condition which may be an impending danger."], "alcohol": ["A group of organic chemical compounds composed of carbon, hydrogen, and oxygen. The molecules in the series vary in chain length and are composed of a hydrocarbon plus a hydroxyl group. Alcohol includes methanol and ethanol.\\n(Source: EIADOE)", "A flammable, colorless liquid which is used amongst others as solvent, disinfectant and intoxicant.", "A drink (a liquor or brew) containing ethanol, commonly known as alcohol."], "alga": ["Simple, green, aquatic plants without stems, roots or leaves. They are found floating in the sea and fresh water, but they also grow on the surface of damp walls, rocks, the bark of trees and on soil.\\n(Source: WRIGHT)"], "algal bloom": ["Excessive and rapid growth of algae and other aquatic plants. It takes place when there are too many nutrients in the water through pollution from agricultural areas, i.e. higher levels of nitrogen and phosphates."], "algicide": ["Any substance or chemical applied to kill or control algal growth."], "alicyclic compound": ["Any substance composed of two or more unlike atoms held together by chemical bonds characterized by straight-chained, branched or cyclic properties."], "alicyclic hydrocarbon": ["A class of organic compounds containing only carbon and hydrogen atoms joined to form one or more rings and having the properties of both aliphatic and cyclic substances.\\n(Source: MGH / RRDA)"], "aliphatic compound": ["Any organic compound of hydrogen and carbon characterized by a straight chain of the carbon atoms.\\n(Source: MGH)"], "aliphatic hydrocarbon": ["Hydrocarbons having an open chain of carbon atoms, whether normal or forked, saturated or unsaturated.\\n(Source: MGH)"], "alkali land": ["Any geomorphic area, often a level lake-like plain, with soil containing a high percentage of mineral salts, located especially in arid regions.\\n(Source: MHD / RHW)"], "alkali soil": ["Soil that contains sufficient exchangeable sodium to interfere with water penetration and crop growth, either with or without appreciable quantities of soluble salts.\\n(Source: LANDY)"], "alkane": ["Paraffins. A homologous series of saturated hydrocarbons having the general formula CnH2n+2. Their systematic names end in -ane. They are chemically inert, stable, and flammable. The first four members of the series (methane, ethane, propane, butane) are gases at ordinary temperatures; the next eleven are liquids, and form the main constituents of paraffin oil; the higher members are solids. Paraffin waxs consists mainly of higher alkanes.\\n(Source: UVAROV)", "Member of the homologous series of saturated hydrocarbons having the general formula CnH2n+2."], "alkyl compound": ["Compound containing one or more alkyl radicals."], "allergen": ["Any antigen, such as pollen, a drug, or food, that induces an allergic state in humans or animals.\\n(Source: MGH)"], "allergy": ["A condition of abnormal sensitivity in certain individuals to contact with substances such as proteins, pollens, bacteria, and certain foods. This contact may result in exaggerated physiologic responses such as hay fever, asthma, and in severe enough situations, anaphylactic shock.\\n(Source: KOREN)"], "allocation": ["The assignment or allotment of resources to various uses in accord with a stated goal or policy.\\n(Source: ODE)"], "alloy": ["Any of a large number of substances having metallic properties and consisting of two or more elements; with few exceptions, the components are usually metallic elements."], "alluvion": ["An overflowing; an inundation or flood, especially when the water is charged with much suspended material.\\n(Source: BJGEO)"], "alpha radiation": ["A stream of alpha particles which are ejected from many radioactive substances having a penetrating power of a few cm in air but can be stopped by a thin piece of paper."], "alternative technology": ["Technology that aims to utilize resources sparingly, with minimum damage to the environment."], "alumina": ["A natural or synthetic oxide of aluminum widely distributed in nature, often found as a constituent part of clays, feldspars, micas and other minerals, and as a major component of bauxite."], "alveolus": ["A tiny, thin-walled, capillary-rich sac in the lungs where the exchange of oxygen and carbon dioxide takes place."], "amalgam": ["A solution of a metal in mercury."], "Americas": ["Continent which extends on a great part of the Occidental Hemisphere of the Earth, from the Artic Ocean in the North, to the Cape Horn in the South at the confluence of the Atlantic and Pacific Oceans, which delimits the continent on the East and West respectively."], "Ames test": ["A bioassay developed by Bruce N. Ames in 1974, performed on bacteria to assess the capability of environmental chemicals to cause mutations."], "amine": ["One of a class of organic compounds which can be considered to be derived from ammonia by replacement of one or more hydrogens by organic radicals.\\n(Source: MGH)"], "amino acid": ["Organic compounds containing a carboxyl group (-COOH) and an amino group (-NH2). About 30 amino acids are known. They are fundamental constituents of living matter because protein molecules are made up of many amino acid molecules combined together. Amino acids are synthesized by green plants and some bacteria, but some (arginine, histidine, lysine. threonine, methionine, isoleucine, leucine, valine, phenylalanine, tryptophane) cannot be synthesized by animals and therefore are essential constituents of their diet. Proteins from specific plants may lack certain amino acids, so a vegetarian diet must include a wide range of plant products.\\n(Source: ALL)"], "ammonia": ["A colorless gaseous alkaline compound that is very soluble in water, has a characteristic pungent odour, is lighter than air, and is formed as a result of the decomposition of most nitrogenous organic material."], "ammonification": ["Addition of ammonia or ammonia compounds, especially to the soil."], "ammonium": ["A positively charged polyatomic cation of the chemical formula NH4+ formed by protonation of ammonia (NH3)."], "amphibian": ["A class of vertebrate animals characterized by a moist, glandular skin, gills at some stage of development, and no amnion during the embryonic stage.\\n(Source: MGH)"], "amusement park": ["An open-air entertainment area consisting of stalls, side shows etc.\\n(Source: CED)"], "analysis": ["The mathematical study of functions, sequences, series, limits, derivatives and integrals."], "analytical chemistry": ["The branch of chemistry dealing with techniques which yield any type of information about chemical systems.\\n(Source: MGH)"], "analytical method": ["Method to analyse the performance of a process or system."], "anatomy": ["The science concerned with the physical structure of animals and plants."], "angiosperm": ["The division of seed plants that includes all the flowering plants, characterized by the possession of flowers. The ovules, which become seeds after fertilization, are enclosed in ovaries. The xylem contains true vessels. The angiospermae are divided into two subclasses: Monocotyledoneae and Dycotiledoneae.\\n(Source: ALL)"], "angling": ["The art or sport of catching fish with a rod and line and a baited hook or other lure, such as a fly."], "animal disease": ["A disease that is mainly found in certain animals (and not in plants or humans)."], "animal ecology": ["A study of the relationships of animals to their environment.\\n(Source: MGH)"], "animal experiment": ["Investigation carried out in animals for research purposes."], "animal genetics": ["The scientific study of the hereditary material of animals for theoretical and practical applications such as increased population, conservation and disease research.\\n(Source: EEN)"], "animal housing": ["Any kind of shelter, refuge affording protection to animals."], "animal husbandry": ["A branch of agriculture concerned with the breeding and feeding of domestic animals.\\n(Source: MGH)"], "animal manure": ["Animal excreta collected from stables and barnyards with or without litter; used to enrich the soil.\\n(Source: MGH)"], "animal noise": ["Noise caused by animals such as dogs kept in kennels or in private homes as pets."], "animal nutrition": ["Ingestion, digestion and/or assimilation of food by animals."], "animal physiology": ["Study of the normal processes and metabolic functions of animal organisms.\\n(Source: LBC)"], "animal protection": ["Precautionary actions or procedures taken to prevent or reduce the harm to sentient, non-human species, posed, in most cases, by humans."], "animal for slaughter": ["Animals bred and killed for the production of food."], "animal shelter": ["A protection providing housing for animals in bad weather. (Source: RRDA)", "A facility that houses homeless, lost or abandoned animals; primarily a large variety of dogs and cats and other animals used as pets."], "animal": ["Any living organism characterized by voluntary movement, the possession of cells with noncellulose cell walls and specialized sense organs enabling rapid response to stimuli, and the ingestion of complex organic substances such as plants and other animals.", "Any living organism of the Animalia reign except human", "Of or relating to animals."], "animal trade": ["The process or act of exchanging, buying or selling animals, especially livestock."], "anion": ["An ion that is negatively charged."], "annelid": ["An animal member of the phylum Annelida."], "antagonism": ["The situation in which two chemicals upon interaction interfere in such a way that the action of one partially or completely inhibits the effects of the other."], "Antarctica": ["A continent lying chiefly within the Antarctic Circle and asymmetrically centered on the South Pole."], "Antarctic ecosystem": ["The ecosystem of the antarctic region of planet Earth."], "Antarctic Ocean": ["The waters, including ice shelves, that surround the continent of Antarctica, which comprise the southernmost parts of the Pacific, Atlantic and Indian oceans, and also the Ross, Amundsen, Bellingshausen and Weddell seas."], "Antarctic region": ["An area within the Antarctic Circle that includes the fifth largest continent and its surrounding waters, consisting mostly of thick ice shelves.\\n(Source: INP / CIA)"], "anthropic activity": ["Action resulting from or influenced by human activity or intervention."], "anthropologic reserve": ["Area of protection of the life style of societies where traditional human activities are still maintained and the exploitation of natural resources is still carried out without compromising the future availability."], "antibiotic": ["A chemical substance, produced by microorganisms and synthetically, that has the capacity to inhibit the growth of, and even to destroy, bacteria and other microorganisms."], "antibody": ["A complex protein that is produced in response to the introduction of a specific antigen into an animal. Antibodies belong to a class of proteins called immunoglobins, which are formed by plasma cells in the blood as a defence mechanism against invasion by parasites, notably bacteria and viruses, either by killing them or rendering them harmless.\\n(Source: ALL2)"], "anticipation of danger": ["The act of foreseeing, expecting and taking measures against possible future exposure to harm, death or a thing that causes these.\\n(Source: ISEP)"], "apartment block": ["An apartment building in which each apartment is individually wholly owned and the common areas are jointly owned."], "apiculture": ["The agricultural practice of intentional maintenance of honey bee colonies."], "appeal": ["Resort to a superior court to review the decision of an inferior court or administrative agency.", "Request turned to an administrative or judicial organ in order to obtain the review or revocation of an action or provision.", "To take a court case to a higher court for review."], "appeal procedure": ["Procedure through which it is possible to resort to a superior court to review the decision of an inferior court."], "applied ecology": ["The application of ecological principles to the solution of human problems."], "applied science": ["Science whose results are employed in technical applications."], "aquaculture": ["The cultivation and harvest of freshwater or marine animals and plants, in ponds, tanks, cages or on protected beds."], "aquatic animal": ["Animal having a water habitat."], "aquatic ecology": ["The study of the relationships among aquatic living organisms and between those organisms and their environment.\\n(Source: ALLa)"], "aquatic mammal": ["A diverse group of roughly 120 species of mammal that are primarily ocean-dwelling or depend on the ocean for food."], "aquatic organism": ["Organisms which live in water.\\n(Source: PHC)"], "aquatic plant": ["Plant adapted for a partially or completely submerged life."], "aqueduct": ["A channel for supplying water; often underground, but treated architecturally on high arches when crossing valleys or low ground.", "Duct for conveying water to a given place.", "Canal or passage in the body in which liquids flow."], "aquifer": ["Layers of rock, sand or gravel that can absorb water and allow it to flow."], "arable farming": ["Growing crops as opposed to dairy farming, cattle farming, etc."], "arboriculture": ["The planting and care of woody plants, especially trees."], "archaeological site": ["Any location containing significant relics and artifacts of past culture.\\n(Source: LANDY)"], "archaeology": ["The scientific study of the material remains of the cultures of historical or prehistorical peoples.\\n(Source: MGH)"], "archipelago": ["A group of many islands including the waters that surround them.\\n(Source: DOE)", "A cluster of several islands."], "architecture": ["The art and science of designing and building structures, or large groups of structures, in keeping with aesthetic and functional criteria.", "A specification that identifies components and their associated functionality, describes connectivity of components, and describes the mapping of functionality onto components."], "Arctic Ocean": ["The smallest and most poorly studied of the oceans on earth. It covers an area of 14 million square km that is divided by three submarine ridges, i.e. the Alpha Ridge, the Lomonosov Ridge, and an extension of the mid-Atlantic ridge. It is also nearly landlocked, covered\\nyear-round by pack ice, and the third of its area is continental shelf.\\n(Source: OCEAN)"], "Arctic region": ["The northernmost area of the earth, centered on the North Pole, that includes the Arctic Ocean, the northern reaches of Canada, Alaska, Russia, Norway and most of Greenland, Iceland and Svalbard.\\n(Source: INP)"], "distribution area": ["The overall geographical distribution of a talon."], "armament": ["The weapons, ammunition and equipment held by a military unit or state.", "The total force held by a military unit or state."], "armed forces": ["The military units of a state, typically divided by their differing contexts of operations, such as the army, navy, air force and marines."], "aromatic compound": ["Compound characterized by the presence of at least one benzene ring."], "aromatic hydrocarbon": ["Hydrocarbon having an unsaturated ring containing alternating double and single bonds, especially containing a benzene ring."], "aromatic substance": ["Substance having a distinctive, usually fragrant smell."], "arsenic": ["A toxic metalloid element with symbol As and atomic number 33, existing in several allotropic forms, that occurs principally in realgar and orpiment and as the free element. It is used in semiconductors, lead-based alloys, and high temperature brasses."], "art": ["The creation of works of beauty or other special significance.", "The products of human creativity; works of art collectively.", "A superior skill that one can learn by study, practice, and observation.", "Photographs or other visual representations in a printed publication."], "arthropod": ["The largest phylum in the animal kingdom; adults typically have segmented body, a sclerotized integument, and many-jointed segmental limbs.\\n(Source: MGH)", "Animal member of the phylum Arthropoda."], "Articulata": ["Animals characterized by the repetition of similar segments (metameres), exhibited especially by arthropods, annelids, and vertebrates in early embryonic stages and in certain specialized adult structures."], "artificial lake": ["Lake created behind manmade barriers."], "asbestos": ["Generic name for a group of fibrous mineral silicates."], "asbestos cement": ["A hardened mixture of asbestos fibers, Portland cement and water used in relatively thin slabs for shingles, wallboard and siding."], "ASEAN": ["Association of Southeast Asian Nations. Regional organization of states of Southeast Asia created on august 8th, 1967."], "ash": ["The incombustible matter remaining after a substance has been incinerated.", "Any of the trees belonging to the genus Fraxinus.", "Wood of the ash tree."], "Asia": ["The world's largest continent. It occupies the eastern part of the Eurasian landmass and its adjacent islands and is separated from Europe by the Ural Mountains. Asia borders on the Arctic Ocean, the Pacific Ocean, the Indian Ocean, and the Mediterranean and Red Seas in the west. It includes the largest peninsulas of Asia Minor, India, Arabia, and Indochina and the island groups of Japan, Indonesia, the Philippines, and Ceylon."], "assimilation": ["Conversion of nutritive material to living tissue.\\n(Source: KOREN)"], "association": ["A formal association of people with similar interests."], "astronautics": ["The science of space flight."], "astronomy": ["The science concerned with celestial bodies and the observation and interpretation of the radiation received in the vicinity of the earth from the component parts of the universe."], "atlas": ["A bound collection of maps or charts, plates, engravings or tables illustrating any subject.", "The most superior (first) cervical vertebra of the spine."], "atmosphere": ["The gaseous envelope surrounding the Earth in a several kilometers-thick layer.", "Gaseous envelope of a celestial body.", "A store's physical characteristics that are used to develop an image and draw customers."], "atmospheric chemistry": ["The study of the production, transport, modification, and removal of atmospheric constituents in the troposphere and stratosphere."], "atmospheric circulation": ["The general movement and circulation of air, which transfers energy between different levels of the atmosphere."], "atmospheric humidity": ["A measurable quantity of the moisture content found in the earth's atmosphere.\\n(Source: RHW)"], "atmospheric model": ["A simulation, pattern or plan designed to demonstrate the structure or workings of the atmosphere surrounding any object, including the Earth.\\n(Source: APD)"], "atmospheric ozone": ["A triatomic molecule of oxygen; a natural constituent of the atmosphere, with the highest concentrations in the ozone layer or stratosphere; it is found at a level between 15 and 30 km above the Earth, which prevents harmful ultraviolet B radiation, which causes skin cancer and threatens plant life, from reaching the ground. The fragile shield is being damaged by chemicals released on Earth. The main chemicals that are depleting stratospheric ozone are chlorofluorocarbons (CFCs), which are used in refrigerators, aerosols and as cleaners in many industries and halons, which are used in fire extinguishers. The damage is caused when these chemicals release highly reactive forms of chlorine and bromine.\\n(Source: GILP96 / WRIGHT)"], "atmospheric physics": ["The study of the physical phenomena of the atmosphere."], "atmospheric precipitation": ["The settling out of water from cloud in the form of rain, hail, snow, etc."], "atmospheric science": ["The sciences that study the dynamics, physics and chemistry of atmospheric phenomena and processes."], "attribution": ["Under certain circumstances, the tax law applies attribution rules to assign to one taxpayer the ownership interest of another taxpayer.\\n(Source: WESTS)", "Act of accrediting an author or an artist for creating a specific work or idea."], "audiovisual media": ["Any means of communication transmitted to both the sense of hearing and the sense of sight, especially technologies directed to large audiences."], "autoecology": ["That part of ecology which deals with individual species and their reactions to environmental factors.\\n(Source: UNUN)"], "automobile industry": ["Branch of industry that manufactures automobiles."], "avalanche": ["A fall or slide of a large mass, as of snow or rock, down a mountainside.", "Great quantity of ice or snow that falls down suddenly from a mountain slope while increasing in volume and speed."], "avalanche protection": ["The total of measures and devices implemented to protect people, property or natural resources from avalanche conditions, including avalanche forecasting and warning, avalanche zoning, ski testing and the use of explosives and other equipment to stabilize an avalanche area."], "aviation law": ["International rules regulating air transportation."], "avifauna": ["All the birds in a particular region."], "background level": ["Term used in a variety of situations, always as the constant or natural amount of a given substance, radiation, noise, etc."], "background radiation": ["Radiation resulting from natural sources, as opposed to man-made sources, and to which people are exposed in everyday, normal life; for example from rocks and soil."], "bacterial bed": ["A device that removes some suspended solids from sewage."], "bactericide": ["An agent that destroys bacteria."], "bacteriology": ["The science and study of bacteria."], "banking": ["Transactional business between any bank and that bank's clients or customers."], "barium": ["A soft silvery-white metallic element of the alkaline earth group. It has the symbol Ba, and atomic number 56. It is used in bearing alloys and compounds are used as pigments.\\n(Source: CED)"], "baseline monitoring": ["Monitoring of long-term changes in atmospheric compositions of particular significance to the weather and the climate.\\n(Source: YOUNG)"], "basic food requirement": ["The minimum nutriments deemed necessary for a person of a particular age, gender, physiological condition and activity level to sustain life, health and growth."], "basicity": ["The state of a solution of containing an excess of hydroxyl ions."], "basidiomycete": ["Any of various fungi of the subdivision Basidiomycota."], "bathing water": ["A body of water where bathing is permitted."], "battery": ["A cell or several cells connected together, each cell containing the essentials for producing voltaic electricity."], "bay": ["(Laurus nobilis) A shrub of the family Lauraceae.", "An open, curving indentation made by the sea or a lake into a coastline.", "To produce a loud, short, explosive sound similar to that of a dog.", "A herb made from a leaf of several of the shrubs of the family Lauraceae.", "A compartment in an aircraft used for some specific purpose."], "beach": ["A lat, narrow strip of sand, gravel or pebbles along the shoreline of a body of water (ocean, river, lake).", "To land on a beach; (of animals) to become stranded out of the water."], "beaching": ["The washing ashore of whales or other cetaceans that have died for natural causes, or because of highly polluted sea water or after being trapped in drift nets."], "bee conservation": ["The care, preservation and husbandry of hymenopterous insects valued for their ability to pollinate crops and other flora or for their production of honey."], "beef cattle": ["Cattle bred for the production of meat."], "bee": ["Any of the membranous-winged insects which compose the superfamily Apoidea in the order Hymenoptera characterized by a hairy body and by sucking and chewing mouthparts.", "The second letter of the Roman alphabet."], "beetle": ["Any insect of the order Coleoptera, having biting mouthparts and forewings modified to form shell-like protective elytra."], "beneficial organism": ["Any pollinating insect, or any pest predator, parasite, pathogen or other biological control agent which functions naturally or as part of an integrated pest management program to control another pest.\\n(Source: LEE)"], "benthic division": ["The bottom of a body of water often occupied by benthos.\\n(Source: GILP96)"], "benthic ecosystem": ["The interacting system of the biological communities located at the bottom of bodies of freshwater and saltwater and their non-living environmental surroundings.\\n(Source: TOE / DOE)"], "benthos": ["Those organisms attached to, living on, in or near the bottom of the sea, river bed or lake floor."], "benzene": ["A colorless, liquid, flammable, aromatic hydrocarbon used to manufacture styrene and phenol. Also known as benzol.\\n(Source: MGH)"], "benzopyrene": ["A five-ring aromatic hydrocarbon found in coal tar, in cigarette smoke, and as a product of incomplete combustion."], "beryllium": ["A corrosion-resistant, toxic silvery-white metallic element that occurs chiefly in beryl and is used mainly in x-ray windows and in the manufacture of alloys. Symbol: Be, atomic number: 4."], "beta radiation": ["Ionizing radiation which is produced as a stream of high speed electrons emitted by certain types of radioactive substance when they decay."], "beverage industry": ["Industry sector which produces beverages."], "beverage": ["Any one of various liquids for drinking."], "bibliography": ["A complete or selective listing of documents by a given subject, author or publisher, often including the description and identification of the editions, dates of issue, titles, authorship, publishers or other written materials.\\n(Source: RHW / ISEP)"], "bicycle": ["A vehicle with two wheels in tandem, pedals connected to the rear wheel by a chain, handlebars for steering, and a saddlelike seat."], "bilateral convention": ["An international agreement, especially one dealing with a specific matter, involving two or both sides, factions, or the like."], "bilge oil": ["Waste oil that accumulates, usually in small quantities, inside the lower spaces of a ship, just inside the shell plating, and usually mixed with larger quantities of water."], "bilge water": ["Water that builds up in the bottom of a ship's bilge."], "bioaccumulation": ["The accumulation of pollutants in living organisms by direct adsorption or through food chains."], "bio-availability": ["The extent to which a drug or other substance is taken up by a specific tissue or organ after administration.\\n(Source: ZINZAN / CEDa)"], "biochemistry": ["The study of chemical substances occurring in living organisms and the reactions and methods for identifying these substances."], "biocide": ["A diverse group of poisonous substance including preservatives, insecticides, disinfectants and pesticides used for the control of organisms that are harmful to human or animal health or that cause damage to natural or manufactured products.\\n(Source: GRAHAW)"], "bioclimatology": ["The study of climate in relation to fauna and flora."], "biocoenosis": ["A community or natural assemblage of organisms; often used as an alternative to ecosystem but strictly is the fauna/flora association excluding physical aspects of the environment."], "bioconcentration factor": ["The quotient of the concentration of a chemical in aquatic organisms at a specific time or during a discrete time period of exposure, divided by the concentration in the surrounding water at the same time or during the same period.\\n(Source: KOREN)"], "biodegradability": ["The extent to which a substance can be decomposed - or rotted - by bacteria and fungi."], "biodegradation": ["Breaking down of a substance by microorganisms."], "biodiversity": ["Number and variety of living organisms; includes genetic diversity, species diversity, and ecological diversity."], "bioethics": ["The study of ethical problems arising from biological research and its applications in such fields as organ transplantation, genetic engineering, or artificial insemination."], "biogas": ["Gas, rich in methane, which is produced by the fermentation of animal dung, human sewage or crop residues in an air-tight container."], "biogeochemical cycle": ["Movement of chemical elements in a circular pathway, from organisms to physical environment, back to organisms."], "biogeochemistry": ["The study of the chemical, physical, geological, and biological processes and reactions that govern the composition of the natural environment and its energy transportation cycles."], "biogeographical region": ["Area of the Earth's surface defined by the species of fauna and flora it contains."], "biogeography": ["The science concerned with the geographical distribution of animal and plant life."], "biological engineering": ["The application of engineering principles and techniques to biology and medicine. It is largely concerned with the design of replacement body parts, such as limbs, heart valves, etc."], "biological indicator": ["A species or organism that is used to grade environmental quality or change."], "biological monitoring": ["The direct measurement of changes in the biological status of a habitat, based on evaluations of the number and distribution of individuals or species before and after a change.\\n(Source: ALL)"], "biological nitrogen fixation": ["A process in which atmospheric nitrogen is converted to ammonia by a pair of bacterial enzymes called nitrogenase."], "biological pest control": ["Any living organism applied to or introduced into the environment that is intended to function as a pesticide against another organism declared to be a pest."], "biological weapon": ["Living organisms (or infective material derived from them) which are intended to cause disease or death in animals, plants, or man, and which depend for their effects on their ability to multiply in the person, animal or plant attacked. Various living organisms (for example, rickettsiae, viruses and fungi), as well as bacteria, can be used as weapons."], "biology": ["A division of the natural sciences concerned with the study of life and living organisms."], "bioluminescence": ["The production of light of various colors by living organisms, e.g. some bacteria and fungi, glow-worms and many marine animals)."], "biomass": ["Biomass refers strictly speaking to the total weight of all the living things in an ecosystem. However, it has come to refer to the amount of plant and crop material that could be produced in an ecosystem for making biofuels and other raw materials used in industry, for example.\\n(Source: WRIGHT)"], "biophysics": ["The science involving the application of physical principles and methods to study and explain the structures of living organisms and the mechanics of life processes."], "bioreactor": ["A container, such as a large fermentation chamber, for growing living organisms that are used in the industrial production of substances such as pharmaceuticals, antibodies, or vaccines."], "biorhythm": ["A cyclically recurring pattern of physiological states in an organism or organ, such as alpha rhythm or circadian rhythm; believed by some to affect physical and mental states and behaviour."], "biosafety": ["The combination of knowledge, techniques and equipment used to manage or contain potentially infectious materials or biohazards in the laboratory environment, to reduce or prevent harm to laboratory workers, other persons and the environment."], "biosphere": ["That part of the Earth and atmosphere capable of supporting living organisms."], "biosphere reserve": ["Protected land and coastal areas that are approved under the Man and Biosphere programme (MAB) in conjunction with the Convention on International Trade in Endangered Species (CITES). Each reserve has to have an ecosystem that is recognized for its diversity and usefulness as a conservation unit. The reserves have at least one core area where there can be no interference with the natural ecosystem. A transition zone surrounds this and within it scientific research is allowed. Beyond this is a buffer zone which protects the whole reserve from agricultural, industrial and urban development. Biosphere reserves and buffer zones were regarded as examples of a new generation of conservation techniques.\\n(Source: WRIGHT)"], "biosynthesis": ["Production, by synthesis or degradation, of a chemical compound by a living organism.\\n(Source: MGH)"], "biotechnology": ["A combination of biology and technology. It is used to describe developments in the application of biological organisms for commercial and scientific purposes."], "biotic factor": ["The influence upon the environment of organisms owing to the presence and activities of other organisms, as distinct from a physical, abiotic, environmental factor."], "biotope": ["A region of relatively uniform environmental conditions, occupied by a given plant community and its associated animal community."], "biotope network": ["Intersection of corridors connecting patchy ecological communities. Species survival tends to be higher in patches that have higher connectivity."], "biotope protection": ["Measures taken to ensure that the biological and physical components of a biotope are in equilibrium by maintaining constant their relative numbers and features."], "bird": ["Any of the bipedal, warm-blooded vertebrates that lay eggs having wings which, for most species, enables them to fly.", "A powered heavier-than-air aircraft with fixed wings that obtains lift by the Bernoulli effect and is used for transportation.", "Badminton equipment consisting of a ball of cork or rubber with a crown of feathers."], "bird sanctuary": ["Special area where birds are protected."], "bird of prey": ["Any of various carnivorous bird of the orders Falconiformes and Strigiformes which feed on meat taken by hunting."], "bird species": ["Any species of the warm-blooded vertebrates which make up the class Aves."], "birth control": ["Limitation of the number of children born by preventing or reducing the frequency of impregnation.", "The intentional prevention of pregnancy through the use of various devices, practices, surgical procedures or medication."], "bitumen": ["A generic term applied to natural inflammable substances of variable colour, hardness, and volatility, composed principally of a mixture of hydrocarbons substantially free from oxygenated bodies."], "black coal": ["A natural black graphitelike material used as a fuel, formed from fossilized plants and consisting of amorphous carbon with various organic and some inorganic compounds."], "blast furnace": ["A tall, cylindrical smelting furnace for reducing iron ore to pig iron; the blast of air blown through solid fuel increases the combustion rate."], "bleaching agent": ["A chemical that removes colors or whitens."], "bleaching clay": ["Clay capable of chemically adsorbing oils, insecticides, alkaloids, vitamins, carbohydrates and other materials; it is used for refining and decolorizing mineral and vegetable oils."], "bleaching process": ["The process of removing colored components from a textile."], "blue-green alga": ["Microorganisms, formerly classified as algae but now regarded as bacteria, including nostoc, which contain a blue pigment in addition to chlorophyll.\\n(Source: CED)"], "boating": ["To travel or go in a boat as a form of recreation."], "boiler": ["An enclosed vessel in which water is heated and circulated, either as hot water or as steam, for heating or power."], "boiling point": ["The temperature at which the transition from the liquid to the gaseous phase occurs in a pure substance at fixed pressure."], "book": ["A collection of sheets of paper bound together to hinge at one edge, containing printed or written material, pictures, etc.", "Part of a larger published work.", "To record in a register.", "To arrange for (something for someone else) in advance.", "To engage for a performance."], "bookkeeping": ["The art or science of recording business accounts and transactions."], "border": ["The dividing line or frontier between political or geographic regions.", "The boundary line or the area immediately inside the boundary.", "The boundary of a surface.", "To have its boundary touch something; to share a border."], "boron": ["A very hard almost colourless crystalline metalloid element that in impure form exists as a brown amorphous powder. It occurs principally in borax and is used in hardening steel."], "botanical garden": ["A place in which plants are grown, studied and exhibited."], "botany": ["A branch of the biological sciences which embraces the study of plants and plant life."], "boundary layer": ["The layer of fluid adjacent to a physical boundary in which the fluid motion is significantly affected by the boundary and has a mean velocity less than the free stream value.\\n(Source: LBC)"], "bovid": ["Any animal belonging to the Bovidae family."], "brackish water": ["Water, salty between the concentrations of fresh water and sea water; usually 5-10 parts x thousand."], "bradyseism": ["The gradual uplift or descent of part of the Earth's surface caused by the filling or emptying of an underground magma chamber and/or hydrothermal activity."], "breast milk": ["Milk from the breast for feeding babies."], "breeding": ["The application of genetic principles to the improvement of farm animals and cultivated plants."], "breeding bird": ["Individual in a bird population that are involved in reproduction during a particular period in a given place."], "brewing industry": ["A sector of the economy in which an aggregate of commercial enterprises is engaged in the manufacture and marketing of beverages made from malt and hops by steeping, boiling and fermentation, such as beer, ale and other related beverages."], "brick": ["A building material usually made from clay, molded as a rectangular block, and baked or burned in a kiln."], "bridge": ["A structure that spans and provides a passage over a road, railway, river, or some other obstacle.", "A system which connects two or more local area networks at layer 2.", "To be or make bridge over something.", "The ridge of the nose running from the root of the nose down to the tip.", "An elevated platform above the upper deck of a mechanically propelled ship from which it is navigated.", "A wrestling move performed from a supine position, lying down face-up."], "bromine": ["A pungent dark red volatile liquid element (symbol Br, atomic number 35) of the halogen series that occurs in brine and is used in the production of chemicals."], "brooding": ["Incubating eggs by sitting on them."], "brook": ["A small stream or rivulet, commonly swiftly flowing in rugged terrain, of lesser length and volume than a creek; especially a stream that issues directly from the ground, as from a spring or seep, or that is produced by heavy rainfall or melting snow.", "To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly."], "bryophyte": ["Any plant of the division Bryophyta, having stems and leaves but lacking true vascular tissue and roots and reproducing by spores: includes the mosses and liverworts."], "budget": ["A balance sheet or statement of estimated receipts and expenditures."], "bug": ["Any of the suborder Heteroptera, having piercing and sucking mouthparts, specialized as a beak.\\n(Source: CED)", "A problem in computer software or hardware or in electronic hardware in general.", "To make someone rather angry or impatient; to cause annoyance.", "Any insect, arachnid, or other terrestrial arthropod that is a pest."], "building": ["Structure with a roof and walls, such as a house or factory.", "The process of constructing."], "building area": ["Land and other places on, under, in or through which the temporary and permanent works are to be executed and any other lands or places needed for the purposes of construction.\\n(Source: ECHO1)"], "building component": ["A building element which uses industrial products that are manufactured as independent until capable of being joined with other elements."], "building land": ["Area of land suitable for building on."], "building material": ["Any material used in construction, such as steel, concrete, brick, masonry, glass, wood, etc."], "building planning": ["The activity of designing, organizing or preparing for future construction or reconstruction of edifices and facilities.\\n(Source: RHW)"], "building site": ["A piece of land on which a house or other building is being built."], "building technology": ["The application of engineering principles and technology to building design and construction."], "built environment": ["That part of the physical surroundings which are people-made or people-organized, such as buildings and other major structures, roads, bridges and the like, down to lesser objects such as traffic lights, telephone and pillar boxes."], "built-up area": ["Area which is full of houses, shops, offices and other buildings, with very little open space.", "The area within a city or town, as indicated by appropriate traffic signs (or, in the United Kingdom, by the presence of street lights), where different traffic rules are in effect, such as a reduction of the speed limit."], "bulb cultivation": ["The cultivation of flower bulb is divided into two sectors: for forcing (flower bulbs used by professional growers for the production of cut flowers and potted plants) and for dry sales (flower bulbs for garden planting, flower pots, landscaping and parks).\\n(Source: BULB)"], "bus": ["A large, long-bodied motor vehicle equipped with seating for passengers, usually operating as part of a scheduled service."], "business": ["The activity, position or site associated with commerce or the earning of a livelihood.", "Commercial, industrial or financial activity."], "butterfly": ["A lepidopteran that is active at day."], "button-cell battery": ["A tiny, circular battery made for a watch or for other microelectric applications."], "by-catch": ["Fish that is caught unintentionally while intending to catch other fish and that is often discarded back into the sea."], "by-product": ["A product from a manufacturing process that is not considered the principal material."], "cable": ["Strands of insulated electrical conductors laid together, usually around a central core, and wrapped in a heavy insulation.", "To send a message by telegraph."], "cadmium": ["Chemical element with symbol Cd and atomic number 48, silvery gray transition metal."], "cadmium contamination": ["The release and presence in the air, water and soil of cadmium, a toxic, metallic element, from sources such as the burning of coal and tobacco and improper disposal of cadmium-containing waste.\\n(Source: FFD / EEN)"], "calcium": ["A malleable silvery-white metallic element of the alkaline earth group with symbol Ca and atomic number 20; the fifth most abundant element in the earth crust, occurring especially as forms of calcium carbonate. It is an essential constituent of bones and teeth and is used as a deoxidizer in steel.\\n(Source: CED)"], "calcium content": ["Amount of calcium contained in a solution."], "calibration": ["The marking the scale of a measuring instrument so that readings can be made in appropriate units."], "canal": ["An artificial open waterway used for transportation, waterpower, or irrigation."], "cancer": ["Any malignant cellular tumour including carcinoma and sarcoma."], "cancer risk": ["The probability that exposure to some agent or substance will adversely transform cells to replicate and form a malignant tumor."], "car": ["A four-wheeled motor vehicle used for land transport."], "carbohydrate": ["Any of the group of organic compounds composed of carbon, hydrogen and oxygen, including sugars, starches and celluloses."], "carbon": ["A nonmetallic element with symbol C and atomic number 6 existing in the three crystalline forms: graphite, diamond and buckminsterfullerene: occurring in carbon dioxide, coal, oil and all organic compounds.\\n(Source: CED)"], "carbonate": ["A salt or ester of carbonic acid.\\n(Source: CED)"], "carbon cycle": ["The cycle of carbon in the biosphere, in which plants convert carbon dioxide to organic compounds that are consumed by plants and animals, and the carbon is returned to the biosphere in inorganic form by processes of respiration and decay.\\n(Source: MGH)"], "carbon dioxide": ["A colourless gas with a faint tingling smell and taste."], "carbon dioxide tax": ["Compulsory charges levied on fuels to reduce the output of carbon dioxide (CO2)."], "carbon monoxide": ["Chemical formula CO; a colorless, odorless, and tasteless gas."], "carcinogenicity": ["The ability or tendency of a substance or physical agent to cause or produce cancer."], "carcinogenicity test": ["Test for assessing if a chemical or physical agent increases the risk of cancer."], "carcinogen": ["A substance that causes cancer in humans and animals.", "Causing cancer."], "cardiology": ["The branch of medicine that studies the heart."], "cardiovascular disease": ["The class of diseases that involve the heart or blood vessels (arteries and veins)."], "carnivore": ["An animal that eats meat."], "cartography": ["The making of maps and charts for the purpose of visualizing spatial distributions over various areas of the earth."], "cash crop": ["Crops that are grown for sale in the town markets or for export. They include coffee, cocoa, sugar, vegetables, peanuts and non-foods, like tobacco and cotton."], "catalysis": ["A phenomenon in which a relatively small amount of substance augments the rate of a chemical reaction without itself being consumed.\\n(Source: MGH)"], "catalyst": ["A substance whose presence alters the rate at which a chemical reaction proceeds, but whose own composition remains unchanged by the reaction. Catalysts are usually employed to accelerate reactions(positive catalyst), but retarding (negative) catalysts are also used.\\n(Source: ALL)", "A substance which speeds up chemical reactions."], "catalytic converter": ["A device designed to clean up the exhaust fumes from petrol-driven vehicles."], "catastrophe": ["A sudden, widespread disaster or calamity that greatly exceeds the resources of an area or region.", "A sudden violent change in the earth's surface."], "catchment area": ["An area from which surface runoff is carried away by a single drainage system."], "cation": ["A positively charged atom or group of atoms, or a radical which moves to the negative pole (cathode) during electrolysis.\\n(Source: MGH)"], "cattle": ["Domesticated bovine animals, including cows, steers and bulls, raised and bred on a ranch or farm."], "cave": ["1) An underground hollow with access from the ground surface or from the sea, often found in limestone areas and on rocky coastlines.\\n2) A natural cavity, chamber or recess which leads beneath the surface of the earth, generally in a horizontal or obliquely inclined direction. It may be in the form of a passage or a gallery, its shape depending in part on the joint pattern or structure of the rock and partly on the type of process involved in its excavation. Thus, caves worn by subterranean rivers may be different in character from, and of considerably greater extent than, a sea-cave eroded by marine waves.\\n3) A natural underground open space, generally with a connection to the surface and large enough for a person to enter. The most common type of cave is formed in a limestone by dissolution.\\n(Source: CED / WHIT / BJGEO)"], "cellulose": ["The main polysaccharide in living plants, forming the skeletal structure of the plant cell wall; a polymer of beta-D-glucose linked together with the elimination of water to form chains of 2000-4000 units."], "cement": ["A dry powder made from silica, alumina, lime, iron oxide, and magnesia which hardens when mixed with water; used as an ingredient in concrete."], "Central Africa": ["A geographic region of the African continent close to the equator that includes Cameroon, Chad, Equatorial Guinea, Gabon, the Central African Republic and the Democratic Republic of Congo."], "Central America": ["A narrow continental region of the Western hemisphere, existing as a bridge between North and South America, often considered to be the southern portion of North America, and including countries such as Guatemala, Belize, El Salvador, Honduras, Nicaragua, Costa Rica and Panama."], "Central Asia": ["A geographic region of the Asian continent between the Caspian Sea on the west and China on the east, extending northward into the central region of Russia and southward to the northern borders of Iran and Afghanistan, and comprised of independent former republics of the Soviet Union, including Kazakstan, Uzbekistan, Turkmenistan, Kyrgyzstan and Tajikistan."], "central government": ["A system in which a governing or administrative body has a certain degree of power or authority to prevail in the management of local, national and international matters."], "centrifugation": ["Separation of particles from a suspension in a centrifuge: balanced tubes containing the suspension are attached to the opposite ends of arms rotating rapidly about a central point; the suspended particles are forced outwards, and collect at the bottoms of the tubes.\\n(Source: UVAROV)"], "cephalopod": ["Exclusively marine animals constituting the most advanced class of the Mollusca, including squid, octopuses, and Nautilus.\\n(Source: MGH)"], "ceramics": ["The art and techniques of producing articles of clay, porcelain, etc."], "ceramics industry": ["Industry producing ceramic items."], "cetacean": ["Order of aquatic mammals, including the whales, dolphins, and porpoises."], "Chagas' disease": ["A form of trypanosomiasis found in South America, caused by the protozoan Trypanosoma cruzi, characterized by fever and often inflammation of the hearth muscle.\\n(Source: CED)"], "chain management": ["The administration, organization and planning for the flow of materials or merchandise through various stages of production and distribution, involving a network of vendors, suppliers, manufacturers, distributors, retailers and other trading partners.\\n(Source: MSE)"], "charcoal": ["A porous solid product containing 85-98% carbon and produced by heating carbonaceous materials such as cellulose, wood or peat at 500-600 C\u00b0 in the absence of air.\\n(Source: MGH)"], "chelicerate": ["A subphylum of the phylum Artrophoda; chelicerae are characteristically modified as pincers."], "chemical analysis": ["The complex of operations aiming to determine the kinds of constituents of a given substance.\\n(Source: ZINZAN)"], "chemical engineering": ["The branch of engineering concerned with industrial manufacture of chemical products."], "chemical industry": ["The industry that comprises the companies that produce industrial chemicals."], "chemical oceanography": ["The study of the behavior of the chemical elements within the Earth's oceans."], "chemical plant": ["Plants where basic raw materials are chemically converted into a variety of products."], "chemical property": ["Property of a substance depending on the arrangement of the atoms in the molecule, e.g. bio-availability, degradability, persistence, etc.\\n(Source: RRDA)"], "chemical reaction": ["A change in which a substance is transformed into one or more new substances."], "chemical": ["Any substance used in or resulting from a reaction involving changes to atoms or molecules.", "Of or relating to chemistry."], "chemical structure": ["The arrangement of atoms in a molecule of a chemical compound."], "chemical treatment": ["A process that alters the chemical structure of the constituents of the waste to produce either an innocuous or a less hazardous material. Chemical processes are attractive because they produce minimal air emissions, they can often be carried out on the site of the waste generator, and some processes can be designed and constructed as mobile units.\\n(Source: PARCOR)"], "chemical waste": ["Any by-product of a chemical process, including manufacturing processes. Often this by-product is considered a toxic or polluting substance.\\n(Source: APD / ERG)"], "chemical weapon": ["Chemical agents of warfare including all gaseous, liquid or solid chemical substances which might be employed because of their direct toxic effects on man and animals."], "chemisorption": ["The process of chemical adsorption."], "chemistry": ["The scientific study of the properties, composition, and structure of matter, the changes in structure and composition of matter, and accompanying energy changes."], "child": ["Living being as genetically proceeding from an other one.", "A person below the age of puberty.", "An entity that is narrower in scope."], "chimney": ["A vertical structure of brick, masonry, or steel that carries smoke or steam away from a fire, engine, etc."], "chiropteran": ["Order of placental mammals, comprising the bats, having the front limbs modified as wings."], "chloride": ["A compound which is derived from hydrochloric acid and contains the chlorine atom in the -1 oxidation state.\\n(Source: MGH)"], "chlorinated hydrocarbon": ["A class of persistent, broad-spectrum insecticides that linger in the environment and accumulate in the food chain. Among them are DDT, aldrin, dieldrin, heptachlor, chlordane, lindane, endrin, mirex, hexachloride, and toxaphene. In insects and other animals these compounds act primarily on the central nervous system. They also become concentrated in the fats of organisms and thus tend to produce fatty infiltration of the heart and fatty degeneration of the liver in vertebrates. In fishes they have the effect of preventing oxygen uptake, causing suffocation. They are also known to slow the rate of photosynthesis in plants. Their danger to the ecosystem resides in their rate stability and the fact that they are broad-spectrum poisons which are very mobile because of their propensity to stick to dust particles and evaporate with water into the atmosphere.\\n(Source: EPAGLO / PORT)"], "chlorination": ["The application of chlorine to water, sewage or industrial wastes for disinfection or other biological or chemical purposes.\\n(Source: ALL)"], "chlorine": ["A very reactive and highly toxic green, gaseous element, belonging to the halogen family of substances with symbol Cl and atomic number 17."], "chloroethylene": ["A flammable, explosive gas with an ethereal aroma; soluble in alcohol and ether, slightly soluble in water; boils at -14\u00b0 C; an important monomer for polyvinyl chloride and its copolymers; used in organic synthesis and in adhesives."], "chlorofluorocarbon": ["Gases formed of chlorine, fluorine, and carbon whose molecules normally do not react with other substances; they are therefore used as spray can propellants because they do not alter the material being sprayed."], "partially halogenated chlorofluorohydrocarbon": ["Hydrocarbons whose hydrogen atoms have been partially substituted with chlorine and fluorine. They are used in refrigeration, air conditioning, packaging, insulation, or as solvents and aerosol propellants. Because they are not destroyed in the lower atmosphere they drift into the upper atmosphere where their chlorine components destroy ozone."], "chlorophenol": ["Any organochloride of phenol that contains one or more covalently bonded chlorine atoms."], "chlorophyll": ["A green pigment, present in algae and higher plants, that absorbs light energy and thus plays a vital role in photosynthesis."], "chlorosis": ["A disease condition of green plants seen as yellowing of green parts of the plants.\\n(Source: MGH)"], "chromatography": ["A method of separating and analyzing mixtures of chemical substances by selective adsorption in a column of powder or on a strip of paper."], "chromium": ["A hard grey metallic element that takes a high polish, occurring principally in chromite: used in steel alloys and electroplating to increase hardness and corrosion-resistance."], "chrysophyta": ["The golden-brown and orange-yellow algae; a diverse group of microscopically small algae which inhabit fresh and salt water, many being planktonic. They contain carotenoid pigments and may be unicellular, colonial, filamentous or amoeboid."], "church": ["A building where Christian religious activities take place."], "city": ["Term used generically today to denote any urban form but applied particularly to large urban settlements. There are, however, no agreed definitions to separate a city from the large metropolis or the smaller town."], "civil air traffic": ["Air traffic pertaining to or serving the general public, as distinguished from military air traffic."], "civil engineering": ["The planning, design, construction, and maintenance of fixed structures and ground facilities for industry, transportation, use and control of water or occupancy."], "civilian protection": ["The organization and measures, usually under governmental or other authority depending on the country, aimed at preventing, abating or fighting major emergencies for the protection of the civilian population and property, particularly in wartime."], "civil law": ["The body of law dealing with the private relations between members of a community."], "classification": ["An arrangement or organization of persons, items or data elements into groups by reason of common attributes, characteristics, qualities or traits."], "clay": ["A loose, earthy, extremely fine-grained, natural sediment or soft rock composed primarily of clay-size or colloidal particles and characterized by high plasticity and by a considerable content of clay mineral and subordinate amounts of finely divided quartz, decomposed feldspar, carbonates, ferruginous matter, and other impurities; it forms a plastic, moldable mass when finely ground and mixed with water, retains its shape on drying, and becomes firm, rocklike and permanently hard on heating or firing.", "The physical structure of a dead animal or person."], "clean technology": ["Industrial process which causes little or no pollution."], "climate": ["The average weather condition in a region of the world."], "climate protection": ["Precautionary actions, procedures or installations undertaken to prevent or reduce harm from pollution to natural weather conditions or patterns, including the prevailing temperature, atmospheric composition and precipitation."], "climate type": ["Weather conditions typical of areas roughly corresponding to lines of latitude."], "climatic alteration": ["The slow variation of climatic characteristics over time at a given place. This may be indicated by the geological record in the long term, by changes in the landforms in the intermediate term, and by vegetation changes in the short term.\\n(Source: WHIT)"], "climatic change": ["The long-term fluctuations in temperature, precipitation, wind, and all other aspects of the Earth's climate."], "climatic zone": ["A belt of the earth's surface within which the climate is generally homogeneous in some respect."], "climatology": ["That branch of meteorology concerned with the mean physical state of the atmosphere together with its statistical variations in both space and time as reflected in the weather behaviour over a period of many years."], "climax": ["A botanical term referring to the terminal community said to be achieved when a sere (a sequential development of a plant community or group of plant communities on the same site over a period of time) achieves dynamic equilibrium with its environment and in particular with its prevailing climate. Each of the world's major vegetation climaxes is equivalent to a biome. Many botanists believe that climate is the master factor in a plant environment and that even if several types of plant succession occur in an area they will all tend to converge towards a climax form of vegetation.\\n(Source: WHIT)", "To reach a sexual climax; to experience orgasm.", "The moment of most intense feeling and pleasure during sexual activity."], "clinical symptom": ["Any objective evidence of disease or of a patient's condition founded on clinical observation.\\n(Source: RRDA)"], "cloning": ["The production of genetically identical individuals from a single parent."], "clothing": ["Clothes considered as a group.", "All coverings designed to be worn on a person's body."], "cloud": ["Suspensions of minute water droplets or ice crystals produced by the condensation of water vapour.", "To cover with clouds."], "coagulation": ["A separation or precipitation from a dispersed state of suspended particles resulting from their growth."], "coal": ["The natural, rocklike, brown to black derivative of forest-type plant material, usually accumulated in peat beds and progressively compressed and indurated until it is finally altered in to graphite-like material."], "coal-fired power plant": ["Power plant which is fuelled by coal."], "coal gasification": ["Process of conversion of coal to a gaseous product which is used as fuel in electric power stations."], "coal liquefaction": ["The process of preparing a liquid mixture of hydrocarbons by destructive distillation of coal.\\n(Source: MGH)"], "coal mining": ["The technical and mechanical job of removing coal from the earth and preparing it for market."], "coal refining": ["The processing of coal to remove impurities."], "coal technology": ["The processing of coal to make gaseous and liquid fuels.\\n(Source: ENVAR)"], "coast": ["A line or zone where the land meets the sea or some other large expanse of water."], "coastal erosion": ["The gradual wearing away of material from a coast by the action of sea water."], "coastal fishing": ["Fishing in an area of the sea next to the shoreline.\\n(Source: PHC)"], "coastal water": ["The part of the ocean directly off the coast."], "coastguard": ["A maritime force which aids shipping, saves lives at sea, prevents smuggling, etc."], "coating": ["A material applied onto or impregnated into a substrate for protective, decorative, or functional purposes. Such materials include, but are not limited to, paints, varnishes, sealers, adhesives, thinners, diluents, and inks."], "cobalt": ["A metallic element with symbol Co and atomic number 27, used chiefly in alloys."], "cockroach": ["The most primitive of the living winged insects."], "code": ["A systematic collection, compendium or revision of laws, rules, or regulations.", "To enter a program or other instructions into a computer (or other electronic device) to instruct it to do a particular task."], "coelenterate": ["Animals that have a single body cavity (the coelenteron)."], "co-incineration": ["Joint incineration of hazardous waste, in any form, with refuse and/or sludge.\\n(Source: LEE)"], "coke": ["A coherent, cellular, solid residue remaining from the dry distillation of a coking coal or of pitch, petroleum, petroleum residue, or other carbonaceous materials; contains carbon as its principal constituent.\\n(Source: MGH)", "A street name for cocaine."], "cold": ["A condition of low temperature.", "Having a low temperature.", "A contagious, viral infectious disease of the upper respiratory system; common symptoms include cough, sore throat, runny nose, nasal congestion and sneezing.", "Psychologically distant; without human warmth or emotion.", "(color) giving no sensation of warmth.", "Sexually unresponsive.", "Without compunction or human feeling."], "coliform bacterium": ["A group of bacteria that are normally abundant in the intestinal tracts of human and other warm-blooded animals and are used as indicators (being measured as the number of individuals found per millilitre of water) when testing the sanitary quality of water."], "colloid": ["An intimate mixture of two substances, one of which, called the dispersed phase, is uniformly distributed in a finely divided state through the second substance, called the dispersion medium."], "colloidal state": ["A system of particles in a dispersion medium, with properties distinct from those of a true solution because of the larger size of the particles. The presence of these particles can often be detected by means of the ultramicroscope.\\n(Source: UVAROV)"], "colour": ["An attribute of things that results from the light they reflect, transmit, or emit in so far as this light causes a visual sensation that depends on its wavelengths.", "To add color to."], "combination effect": ["A combined effect of two or more substances or organisms which is greater than the sum of the individual effect of each."], "combined cycle-power station": ["This type of plant is flexible in response and can be built in the 100-600 MW capacity range. It produces electrical power from both a gas turbine (ca. 1300\u00b0C gas inlet temperature), fuelled by natural gas or oil plus a steam turbine supplied with the steam generated by the 500\u00b0C exhaust gases from the gas turbine. The thermal efficiency of these stations is ca. 50 per cent compared with a maximum of 40 per cent from steam turbine coal fired power stations. This type of plant can be built in two years compared with six years for a coal-fired station and 10-15 years for nuclear.\\n(Source: PORT)"], "combustibility": ["The property of a substance of being capable of igniting and burning."], "combustion engine": ["An engine that operates by the energy of combustion of a fuel."], "commercial law": ["The whole body of substantive jurisprudence applicable to the rights, intercourse and relations of persons engaged in commerce, trade or mercantile pursuits."], "commercial traffic": ["The operations and movements related to the transportation and exchange of goods.\\n(Source: RRDA)"], "commercial vehicle": ["Vehicle designed and equipped for the transportation of goods."], "communications": ["The concept, science, technique and process of transmitting, receiving or otherwise exchanging information and data."], "community-pays principle": ["A tenet of environmental policy, according to which the costs of ecological challenges, environmental quality improvements and the removal of environmental hazards are allotted to community groups or local corporations and, thereby, to the general public."], "commuter traffic": ["Traffic caused by people travelling regularly over some distance, as between a suburb and a city and back, between their place of residence and their place of work."], "commuting": ["Traveling from one's residence to one's regular place of business and back to the residence."], "compaction": ["Reduction of the bulk of solid waste by rolling and tamping."], "company policy": ["Official guidelines or set of guidelines adopted by a company for the management of its activity."], "comparative law": ["The study of the principles of legal science by the comparison of various systems of law.\\n(Source: BLACK)"], "comparative test": ["A test conducted to determine whether one procedure is better than another."], "comparison": ["The placing together or juxtaposing of two or more items to ascertain, bring into relief, or establish their similarities and dissimilarities."], "compensation": ["Equivalent in money for a loss sustained; equivalent given for property taken or for an injury done to another; recompense or reward for some loss, injury or service.\\n(Source: WESTS)"], "economic competition": ["The market condition where an individual or firm that wants to buy or sell a commodity or service has a choice of possible suppliers or customers."], "competitiveness": ["The ability of a firm to strive in the market with rivals in the production and sale of commodities or services and, analogously, the ability of a country to maintain a relatively high standard of living for its citizens through trade in international markets.\\n(Source: http://www.indiana.edu/~ipe/glossry.html / OED)"], "complex formation": ["Formation of a complex compound. Also known as complexing or complexation."], "complexing agent": ["A substance capable of forming a complex compound with another material in solution."], "compost": ["A mixture of decaying organic matter used to fertilize and condition the soil."], "composting": ["The natural biological decomposition of organic material in the presence of air to form a humus-like material."], "compression": ["Reduction in the volume of a substance due to pressure.\\n(Source: MGH)", "A condition in which the volume of fuel and air in an engine cylinder is reduced as a result of increased pressure by a piston.", "The system of forces that tend to decrease the volume of or shorten rocks.", "Any of several techniques that reduce the number of bits required to represent information in data transmission or storage."], "compressor": ["A device that produces pressure."], "European Communities": ["The collective body that resulted in 1967 from the merger of the administrative networks of the European Atomic Energy Community (EURATOM), the European Coal and Steel Community (ECSC), and the European Economic Community (EEC). The singular term has also been widely used.\\n(Source: ABDN)"], "concrete": ["A mixture of aggregate, water, and a binder, usually Portland cement; it hardens to stonelike condition when dry.", "To build using concrete; to cover with cement.", "Not abstract.", "Particular, perceivable, real."], "conductivity": ["The ratio of the electric current density to the electric field in a material."], "congress": ["A formal meeting, often consisting of representatives of various organizations, that is assembled to promote, discuss or make arrangements regarding a particular subject or some matter of common interest."], "conifer": ["An order of conebearing plants which includes nearly all the present day Gymnospermae. Most are tall evergreen trees with needle-like (e.g., pines), linear (e.g. firs) or scale-like (e.g., cedars) leaves. They are characteristic of temperate zones and the main forest trees of colder regions. They provide timber, resins, tars, turpentine and pulp for paper.\\n(Source: ALL)"], "conservation": ["The protection of a natural resource, usually by planned management, to prevent its depletion or destruction."], "constitutional law": ["That branch of the public law of a nation or state which treats of the organization, powers and frame of government, the distribution of political and governmental authorities and functions, the fundamental principles which are to regulate the relations of government and citizen and which prescribes generally the plan and method according to which the public affairs of the nation or state are to be administered.", "A law in a country's constitution."], "construction work": ["The construction, rehabilitation, alteration, conversion, extension, demolition or repair of buildings, highways, or other changes or improvement to real property, including facilities providing utility services."], "consultation": ["Any meeting or inquiry of concerned persons or advisors for the purpose of deliberation, discussion or decision on some matter or action.\\n(Source: BLD)"], "consumer group": ["A collection of persons united to address concerns regarding the purchase and use of specific commodities or services.\\n(Source: RHW)"], "consumer protection": ["Information disseminated or measures and programs established to prevent and reduce damage, injury or loss to users of specific commodities and services.\\n(Source: RHW)"], "consumption": ["Spending for survival or enjoyment in contrast to providing for future use or production.", "A common and deadly infectious disease that is caused by mycobacteria, primarily Mycobacterium tuberculosis."], "container": ["A large case that can be transported by truck and than easily loaded on a ship."], "contaminated soil": ["Soil which because of its previous or current use has substances under, on or in it which, depending upon their concentration and/or quantity, may represent a direct potential or indirect hazard to man or to the environment.\\n(Source: GRAHAW)"], "contamination": ["Introduction into or onto water, air, soil or other media of microorganisms, chemicals, toxic substances, wastes, wastewater or other pollutants in a concentration that makes the medium unfit for its next intended use."], "continental shelf": ["The gently sloping seabed of the shallow water nearest to a continent, covering about 45 miles from the shore and deepening over the sloping sea floor to an average depth of 400 ft."], "contour farming": ["The performing of cultivations along lines connecting points of equal elevation so reducing the loss of top soil by erosion, increasing the capacity of the soil to retain water and reducing the pollution of water by soil."], "contract": ["An agreement between two or more persons which creates an obligation to do or not to do a particular thing. Its essential are competent parties, subject matter, a legal consideration, mutuality of agreement, and mutuality of obligation.", "An agreement with which a person or a company are engaged towards another person or company to deliver a good or a service in exchange for a predetermined payment.", "To reduce in width or extent.", "To acquire or catch (a disease, something noxious, bad condition)."], "contract cleaner": ["A commercial service provider, usually bound by a written agreement, responsible for the removal of dirt, litter or other unsightly materials from any property.\\n(Source: RHW)"], "controlled burning": ["The planned use of carefully controlled fire to accomplish predetermined management goals. The burn is set under a combination of weather, fuel moisture, soil moisture, and fuel arrangement conditions that allow the management objectives to be attained, and yet confine the fire to the planned area.\\n(Source: DUNSTE)"], "controlling authority": ["The power of a person or an organized assemblage of persons to manage, direct, superintend, restrict, regulate, govern, administer or oversee.\\n(Source: BLD)"], "convention": ["International agreement on a specific topic.", "The preferred method of accomplishing a task.", "A large formal assembly."], "conventional energy": ["Power provided by traditional means such as coal, wood, gas, etc., as opposed to alternative energy sources such as solar power, tidal power, wind power, etc."], "cooling": ["A decrease in temperature.", "A mechanism for keeping something cool.", "Causing cold or cooling."], "cooling oil": ["Oil used as a cooling agent, either with forced circulation or with natural circulation."], "cooling tower": ["A device that aids in heat removal from water used as a coolant in electric power generating plants."], "cooling water": ["Water used to make something less hot, such as the irradiated elements from a nuclear reactor or the engine of a machine."], "copper": ["Chemical element with symbol Cu and atomic number 29; one of the most important nonferrous metals; a ductile and malleable metal found in various ores and used in industry, engineering, and the arts in both pure and alloyed form."], "coppice": ["A growth of small trees that are repeatedly cut down at short intervals; the new shoots are produced by the old stumps."], "coral": ["The skeleton of certain solitary and colonial anthozoan coelenterates; composed chiefly of calcium carbonate."], "coral reef": ["Underwater structures built up from the skeletons of reef-building coral a small primitive marine animal, and other marine animals and algae over thousands of years."], "core meltdown": ["Accidental overheating of the core of a nuclear reactor resulting in the core melting and radiation escaping."], "cork": ["The thick light porous outer bark of the cork oak, used widely as an insulator and for stoppers for bottles, casks, etc.", "Conical or cylindrical-shaped plug that is pushed in the bottleneck of a (wine) bottle to stop it up."], "corridor": ["A narrow hall or passage with rooms leading off it."], "corrosion": ["A process in which a solid, especially a metal, is eaten away and changed by a chemical action."], "corrosion inhibitor": ["A chemical agent which slows down or prohibits a corrosion reaction."], "cosmetic industry": ["Industry for the production of substances for improving the appearance of the body."], "cosmic radiation": ["Radiations consisting of atomic nuclei, especially protons, of very high energy that reach the earth from outer space. Some cosmic radiations are very energetic and are able to penetrate a mile or more into the Earth."], "cost-benefit analysis": ["The attempt to assess, compare and frequently justify the total price or loss represented by a certain activity or expenditure with the advantage or service it provides."], "cost increase": ["The augmentation or rise in the amount of money incurred or asked for in the exchange of goods and services."], "cost recovery basis": ["A standard used to provide reimbursement to individuals or organizations for any incurred expense or provided service."], "cost": ["In economics, the value of the factors of production used by a firm in producing or distributing goods and services or engaging in both activities.\\n(Source: GREENW)", "The amount of money paid per unit for a good or service.", "To be priced at.", "To require to lose, suffer, or sacrifice."], "cotton": ["Fiber obtained from plants of the genus Gossypium, used in making fabrics, cordage, and padding and for producing artificial fibers and cellulose.", "A shrub of the genus Gossypium known for the soft fibers that protect its seeds."], "county": ["An area comprising more than one city and whose boundaries have been designed according to some biological, political, administrative, economic, demographic criteria.", "The land under the jurisdiction of a count."], "court of justice": ["A tribunal having jurisdiction of appeal and review, including the ability to overturn decisions of lower courts or courts of first instance.\\n(Source: BLD)"], "covering": ["Structure or material that covers an edifice.", "Something put around something else, usually in order to give it another look or to protect it from its environment."], "craft": ["An occupation or trade requiring manual dexterity or skilled artistry.", "The skilled practice of a practical occupation."], "credit assistance": ["The help and support from banks and other financial institutions in providing money or goods without requiring present payment.\\n(Source: ISEP / OED)"], "criminality": ["A violation of the law, punishable by the State in criminal proceedings."], "criminal law": ["That body of the law that deals with conduct considered so harmful to society as a whole that it is prohibited by statute, prosecuted and punished by the government.\\n(Source: DUHA)"], "critical level": ["The concentration limit beyond which a substance can cause dangerous effects to living organisms.\\n(Source: RRDA)"], "critical load": ["The maximum load that a given system can tolerate before failing.\\n(Source: GRAHAWa)"], "crocodile": ["Any large tropical reptile of the family Crocodylidae: order Crocodylia. They have a broad head, tapering snout, massive jaws, and a thick outer covering of bony plates.\\n(Source: CED)"], "crop rotation": ["An agricultural technique in which, season after season, each field is sown with crop plants in a regular rotation, each crop being repeated at intervals of several years."], "crop waste": ["Any unusable portion of plant matter left in a field after harvest.\\n(Source: CNI)"], "crossing place": ["A place, often shown by markings, lights, or poles, where a street, railway, etc. may be crossed."], "crude oil": ["A comparatively volatile liquid bitumen composed principally of hydrocarbon, with traces of sulphur, nitrogen or oxygen compounds; can be removed from the earth in a liquid state."], "crustacean": ["A subphylum of arthropod animals having jointed feet and mandibles, two pairs of antennae, and segmented, chitin-encased bodies."], "cryptogam": ["A large group of plants, comprising the Thallophyta, Bryophyta and Pteridophyta, the last of which are cryptogams."], "crystallography": ["The branch of science that deals with the geometric description of crystals and their internal arrangement."], "cultivated plant": ["Plants specially bred or improved by cultivation."], "cultivation": ["The practice of growing and nurturing plants outside of their wild habitat (i.e., in gardens, nurseries, arboreta)."], "cultivation method": ["Any procedure or approach used to prepare land or soil for the growth of new crops, or to promote or improve the growth of existing crops."], "cultural facility": ["Any building or structure used for programs or activities involving the arts or other endeavors that encourage refinement or development of the mind.\\n(Source: WCD / OED)"], "cultural heritage": ["The inherited body of beliefs, customs, artistic activity and knowledge that has been transmitted by ancestors.\\n(Source: RHW)"], "curriculum": ["The aggregate of courses of study provided in a particular school, college, university, adult education program, technical institution or some other educational program."], "customs": ["Duties charged upon commodities on their importation into, or exportation out of, a country.", "The head office dealing with tariffs."], "cyanate": ["A salt or ester of cyanic acid containing the radical OCN."], "cyanide": ["Any of a group of compounds containing the CN group and derived from hydrogen cyanide, HCN."], "cyclone": ["A storm characterized by the converging and rising giratory movement of the wind around a zone of low pressure (the eye) towards which it is violently pulled from a zone of high pressure."], "cytology": ["A branch of the biological sciences which deals with the structure, behaviour, growth, and reproduction of cells and the functions and chemistry of cell components."], "cytotoxicity": ["The degree to which an agent is toxic to cells."], "dairy farm": ["A commercial establishment for processing or selling milk and milk products."], "dairy industry": ["Production of food made from milk or milk products."], "dairy product": ["Food which is derived from milk and contains mostly milk."], "dam": ["Structure constructed across a watercourse or stream channel."], "damage": ["An injury or harm impairing the function or condition of a person or thing.\\n(Source: CED)", "To put a thing in bad condition by making it suffer some damage.", "To mar the surface or appearance of."], "dangerous goods": ["Goods or products that are full of hazards or risks when used, transported, etc."], "data analysis": ["The evaluation of digital data, i.e. data represented by a sequence of code characters.\\n(Source: MGH)"], "data carrier": ["A medium on which data can be recorded, and which is usually easily transportable, such as cards, tape, paper, or disks."], "data exchange": ["A reciprocal transfer of individual facts, statistics or items of information between two or more parties for the purpose of enhancing knowledge of the participants."], "data processing": ["Any operation or combination of operations on data, including everything that happens to data from the time they are observed or collected to the time they are destroyed.\\n(Source: MGH)"], "data protection": ["Policies, procedures or devices designed to maintain the integrity or security of information."], "dating": ["An estimation of the age of an artifact, biological vestige, linguistic usage, etc."], "decay product": ["An isotope formed by the radioactive decay of some other isotope. This newly formed isotope possesses physical and chemical properties that are different from those of its parent isotope, and may also be radioactive."], "DDT": ["A persistent organochlorine insecticide, also known as dichlorodiphenyltrichloroethane, that was introduced in the 1940s and used widely because of its persistence (meaning repeated applications were unnecessary), its low toxicity to mammals and its simplicity and cheapness of manufacture. It became dispersed all over the world and, with other organochlorines, had a disruptive effect on species high in food chains, especially on the breeding success of certain predatory birds. DDT is very stable, relatively insoluble in water, but highly soluble in fats. Health effects on humans are not clear, but it is less toxic than related compounds. It is poisonous to other vertebrates, especially fish, and is stored in the fatty tissue of animals as sublethal amounts of the less toxic DDE. Because of its effects on wildlife its use in most countries is now forbidden or strictly limited.\\n(Source: MGH / ALL)"], "debt": ["Something owed to someone else.", "Passive balance that corresponds to the difference between all proceeds and all expenditures, the current ones and the ones registered on the capital account, excluding the financial operations."], "deciduous forest": ["The temperate forests comprised of trees that seasonally shed their leaves, located in the east of the USA, in Western Europe from the Alps to Scandinavia, and in the eastern Asia. The trees of deciduous forests usually produce nuts and winged seeds.\\n(Source: WRIGHT)"], "deciduous tree": ["Any tree losing its leaves in autumn and growing new ones in the spring.\\n(Source: CAMB)"], "decision": ["A selection of something from a collection of options or alternatives.", "An opinion and judgment formed or emitted about something.", "Firmness of conviction."], "decomposition": ["The reduction of the body of a formerly living organism into simpler forms of matter.", "The process by which a complex problem or system is broken down into parts that are easier to conceive, understand, program, and maintain."], "decontamination": ["The removing or neutralizing of chemical, biological, or radiological contamination from a person, object, or area."], "decree": ["A declaration of the court announcing the legal consequences of the facts found.", "Administrative, legislative or juridical act being issued by a executive organ being made of general or specific juridical prescriptions.", "To decide with authority.", "To issue a decree.", "High level administrative act usually issued by the head of State or, in some countries, the chief of the government."], "deep sea": ["Region of open ocean beyond the continental shelf."], "deep sea fishing": ["Fishing in the deepest parts of the sea."], "deer": ["The common name for 41 species of even-toed ungulates that compose the family Cervidae in the order Artiodactyla; males have antlers."], "defoliation": ["The drop of foliage from plants caused by herbicides such as Agent Orange, diuron, triazines, all of which interfere with photosynthesis."], "deforestation": ["The removal of forest and undergrowth to increase the surface of arable land or to use the timber for construction or industrial purposes."], "degradability": ["The capacity of being decomposed chemically or biologically."], "degradation": ["The act of abasing.", "A lowering from one's standing or rank in office or society."], "degreasing": ["The removal of grease."], "de-inking": ["Series of processes by which various types of printing inks are removed from paper fibre pulp during the pre-processing and recycling of recovered paper products."], "delinquency": ["Set of crimes.", "Failure to make payments on time."], "delta": ["A delta is a vast, fan-shaped creation of land, or low-lying plain, formed from successive layers of sediment washed from uplands to the mouth of some rivers, such as the Nile, the Mississippi and the Ganges. The nutrient-rich sediment is deposited by rivers at the point where, or before which, the river flows into the sea. Deltas are formed when rivers supply and deposit sediments more quickly that they can be removed by waves of ocean currents. The importance of deltas was first discovered by prehistoric man, who was attracted to them because of their abundant animal and plant life. Connecting waterways through the deltas later provided natural routes for navigation and trade, and opened up access to the interior. Deltas are highly fertile and often highly populated areas. They would be under serious threat of flooding from any sea-level rise.\\n(Source: WRIGHT)"], "demand": ["The desire, ability and willingness of an individual to purchase a good or service.", "To desire a service or physical goods, often without returning the favor in kind."], "democracy": ["A system of governance in which ultimate authority power is vested in the people and exercised directly by them or by their freely elected agents."], "demographic evolution": ["The gradual pattern of change in the growth of human populations in a particular region or country, from a rapid increase in the birth and death rates to a leveling off in the growth rate due to reduced fertility and other factors.\\n(Source: DOE / ANT)"], "demography": ["The statistical study of human vital statistics and population dynamics (natality, mortality, age, profession etc).", "A statistic characterizing human populations or segments of human populations broken down by age or sex or income etc."], "dendrochronology": ["The science of dating the age of a tree by studying annual growth rings."], "dendrometry": ["The measuring of the diameter of standing trees from the ground with a dendrometer that can also be used to measure tree heights."], "denitrification": ["The loss of nitrogen from soil by biological or chemical means."], "deposition": ["The process by which polluting material is precipitated from the atmosphere and accumulates in ecosystems."], "deregulation": ["The removal or relaxation of government control over the economic activities of some commercial entity, industry or economic sector."], "dermapteran": ["Any of various insects of the order Dermaptera."], "desalination": ["Removal of salt, as from water or soil.", "Removal of salt and other minerals from water."], "desalination plant": ["Plant for the extraction of fresh water from saltwater by the removal of salts, usually by distilling."], "desert": ["A wide, open, comparatively barren tract of land with few forms of life and little rainfall.", "Left behind by the owner or keeper.", "To leave someone who needs or counts on you."], "desertification": ["The development of desert conditions as a result of human activity or climatic changes."], "desert locust": ["One of about a dozen species of short-horned grasshoppers (Acridoidea) that are known to change their behavior and form swarms of adults or bands of hoppers (wingless nymphs). The swarms that form can be dense and highly mobile. (Source: FAO)"], "desorption": ["The process of removing a sorbed substance by the reverse of adsorption or absorption."], "detection": ["The act or process of discovering evidence or proof of governmental, legal or ethical violations.\\n(Source: RHW)", "Act of detecting something with a detector."], "detector": ["A mechanical, electrical, or chemical device that automatically identifies and records or registers a stimulus, such as an environmental change in pressure or temperature, an electrical signal, or radiation from a radioactive material."], "detergent": ["A surface-active agent used for removing dirt and grease from a variety of surfaces and materials.", "A substance used when cleaning."], "determination method": ["Method employed in the assessment or in the evaluation of a quantity, a quality, a fact, an event, etc.\\n(Source: ZINZANa)"], "deterrent": ["Any measure, implement or policy designed to discourage or restrain the actions or advance of another agent, organization or state.\\n(Source: RHW)", "Tending to deter."], "detoxification": ["The act or process of removing a poison or the toxic properties of a substance in the body."], "developed country": ["A nation possessing a relatively high degree of industrialization, infrastructure and other capital investment, sophisticated technology, widespread literacy and advanced living standards among its populations as a whole."], "developing country": ["A country whose people are beginning to utilize available resources in order to bring about a sustained increase in per capita production of goods and services."], "development aid": ["Economic assistance or other types of support provided to developing countries to promote or encourage advancement in living standards, institutions, infrastructure, agricultural practices and other aspects of an economy, and to resolve problems typically associated with developing countries."], "development area": ["Area which has been given special help from a government to encourage business and factories to be set up there."], "development planning": ["The act or process of formulating a course of action that promotes the economic advancement of a region or people, particularly in countries known to have low levels of economic productivity and technological sophistication.\\n(Source: OED / WBG)"], "development plan": ["The statement of local planning policies that each local planning authority is required by statute to maintain, and which can only be made or altered by following the procedures prescribed for that purpose, which include obligations to consult widely and to hold a public local inquiry into objections. The development plan includes: 1) the structure plan for the area (normally prepared by the country council); 2) an area-wide development plan for each district council area.\\n(Source: GRAHAW)"], "dialysis": ["A process of selective diffusion through a membrane; usually used to separate low-molecular-weight solutes which diffuse through the membrane from the colloidal and high-molecular-weight solutes which do not.", "A method to clean the blood of patients with renal failure."], "diatom": ["Unicellular algae, some of which are colonial, green or brownish in colour (but all contain chlorophyll) and with siliceous and often highly sculptured cell walls."], "dictionary": ["A reference book containing an explanatory alphabetical list of words, identifying usually, the phonetic, grammatical, and semantic value of each word, often with etymology, citations, and usage guidance and other information."], "didactics": ["The art or science of teaching."], "diesel engine": ["An internal combustion engine operating on a thermodynamic cycle in which the ratio of compression of the air charge is sufficiently high to ignite the fuel subsequently injected into the combustion chamber."], "diesel fuel": ["Heavy oil residue used as fuel for certain types of diesel engines."], "differentiation": ["The development of cells so that they are capable of performing specialized functions in the organs and tissues of the organisms to which they belong.", "In mathematics, the process of finding a derivative."], "diffusion": ["The spontaneous movement and scattering of particles (atoms and molecules), of liquid, gases, and solids.\\n(Source: MGH)"], "digested sludge": ["Sludge or thickened mixture of sewage solids with water that has been decomposed by anaerobic bacteria."], "digital land model": ["A representation of a surface's topography stored in a numerical format. Each pixel has been assigned coordinates and an altitude.\\n(Source: CCRS)"], "diluted acid": ["A less concentrated acid."], "dioxin": ["A heterocyclic and aromatic molecule, where two carbon atoms have been substituted by oxygen atoms."], "direct discharger": ["Factory and industrial concern which does not discharge their sewage into public sewers, but directly into a waterway."], "directive": ["The second rank of administrative acts (inferior to regulations, superior to decisions) made by the council or commission of the European Communities on order to carry out their tasks in accordance with the Treaties. They must be addressed to states, not individuals, but many create rights for individuals or allow the directive to be pleaded before municipal court."], "disabled person": ["Person lacking one or more physical power, such as the ability to walk or to coordinate one's movements, as from the effects of a disease or accident, or through mental impairment."], "disaster": ["The result of a vast ecological breakdown in the relations between man and his environment, a serious and sudden event (or slow, as in drought) on such a scale that the stricken community needs extraordinary efforts to cope with it, often with outside help or international aid.", "An event that results in large-scale damage and loss of human life, caused by natural forces, technical failure or human error."], "disaster preparedness": ["The aggregate of measures to be taken in view of disasters, consisting of plans and action programmes designed to minimize loss of life and damage, to organize and facilitate effective rescue and relief, and to rehabilitate after disaster. Preparedness requires the necessary legislation and means to cope with disaster or similar emergency situations. It is also concerned with forecasting and warning, the education and training of the public, organization and management, including plans, training of personnel, the stockpiling of supplies and ensuring the needed funds and other resources.\\n(Source: GUNN)"], "disaster relief": ["Money, food or other assistance provided for those surviving a sudden, calamitous event causing loss of life, damage or hardship."], "discharge regime": ["The rate of flow of a river at a particular moment in time, related to its volume and its velocity.\\n(Source: WHIT)"], "disease": ["A definite pathological process having a characteristic set of signs and symptoms which are detrimental to the well-being of the individual."], "disinfectant": ["An agent, such as heat, radiation, or a chemical, that disinfects by destroying, neutralizing, or inhibiting the growth of disease-carrying microorganisms.\\n(Source: AMHER)"], "disinfection": ["The complex of physical, chemical or mechanical operations undertaken to destroy pathogenic germs."], "dispatch note": ["Document accompanying something being transported (including living beings) and usually required at certain specific steps."], "dispersion": ["A distribution of finely divided particles in a medium.\\n(Source: MGH)"], "displaced person": ["A person who, for different reasons or circumstances, has been compelled to leave his or her home."], "disposal of warfare materials": ["Disposal of the material remnants of war, which can seriously impede development and cause injuries and the loss of lives and property."], "dissolution": ["Dissolving of a material.", "Excessive indulgence in sensual pleasures."], "dissolved organic carbon": ["The fraction of total organic carbon (all carbon atoms covalently bonded in organic molecules) in water that passes through a 0.45 micron pore-diameter filter.\\n(Source: WQA)"], "distillation": ["The process of producing a gas or vapour from a liquid by heating the liquid in a vessel and collecting and condensing the vapours into liquids."], "distilling industry": ["A sector of the economy in which an aggregate of commercial enterprises is engaged in the manufacture and marketing of alcoholic beverages made by a distillation process of vaporization and condensation, such as vodka, rum, whiskey and other related beverages.\\n(Source: RHW / SIC)"], "distribution": ["The sum of the commercial and service activities that transfer the produced goods to the consumer.", "In statistics, the relative arrangements of the elements of a statistical population based on some criterion, as frequency, time, or location.", "The process by which commodities get to final consumers, including storing, selling, shipping, and advertising.", "In Linux, a collection of software making up the Linux operating system. The software is usually compiled by either a company or organization. It is designed to be easy to install, administer, and use by virtue of it being an integrated whole. Examples include Ubuntu, SUSE Linux, Red Hat, and Debian."], "district heating": ["The supply of heat, either in the form of steam or hot water, from a central source to a group of buildings."], "disused military site": ["Military site where all activity has ceased."], "ditch": ["A long, narrow excavation artificially dug in the ground; especially an open and usually unpaved waterway, channel, or trench for conveying water for drainage or irrigation, and usually smaller than a canal. Some ditches may be natural watercourses."], "DNA": ["The principal material of inheritance. It is found in chromosomes and consists of molecules that are long unbranched chains made up of many nucleotides. Each nucleotide is a combination of phosphoric acid, the monosaccharide deoxyribose and one of four nitrogenous bases: thymine, cytosine, adenine or guanine. The number of possible arrangements of nucleotides along the DNA chain is immense. Usually two DNA strands are linked together in parallel by specific base-pairing and are helically coiled. Replication of DNA molecules is accomplished by separation of the two strands, followed by the building up of matching strands by means of base-pairing, using the two halves as templates. By a mechanism involving RNA, the structure of DNA is translated into the structure of proteins during their synthesis from amino acids.\\n(Source: ALL)"], "document": ["Material of any kind, regardless of physical form, which furnishes information, evidence or ideas, including items such as contracts, bills of sale, letters, audio and video recordings, and machine readable data files.", "To record in documents.", "To support or supply with references."], "documentation": ["The process of accumulating, classifying and disseminating information, often to support the claim or data given in a book or article.\\n(Source: OED)"], "dog": ["A common four-legged animal, especially kept by people as a pet or to hunt or guard things.", "A dull, unattractive girl or woman.", "An iron for holding wood in a fireplace."], "domestic appliance": ["A machine or device, especially an electrical one used domestically."], "domesticated animal": ["Wild animal which has been trained to live near a house and not be frightened of human beings.\\n(Source: PHC)"], "domestic trade": ["Trade wholly carried on at home; as distinguished from foreign commerce.\\n(Source: WESTS)"], "domestic waste": ["Waste generated by residential households and comprised of any material no longer wanted or needed.\\n(Source: EED)"], "dosage": ["The amount of a substance required to produce an effect.\\n(Source: CONFER)"], "dose": ["The amount of test substance administered. Dose is expressed as weight of test substance (g, mg) per unit weight of test animal (e.g., mg/kg), or as weight of food or drinking water.\\n(Source: LEE)", "A powerful hallucinogenic drug manufactured from lysergic acid."], "dose-effect relationship": ["The relation between the quantity of a given substance and a measurable or observable effect."], "dragonfly": ["Any of the insects composing six families of the suborder Anisoptera and having four large, membranous wings and compound eyes that provide keen vision."], "drainage": ["1) Removal of groundwater or surface water, or of water from structures, by gravity or pumping.\\n2) The discharge of water from a soil by percolation (the process by which surface water moves downwards through cracks, joints and pores in soil and rocks).\\n(Source: MGH / WHIT)"], "dredged material": ["Unconsolidated material removed from rivers, streams, and shallow seas with machines such as the bucket-ladder dredge, dragline dredge, or suction dredge."], "drilling": ["The act of boring holes in the earth for finding water or oil, for geologic surveys, etc."], "drinking water": ["Water that is suitable to drink, does not present health hazards and whose quality is regulated by legislation."], "drinking water treatment": ["The Directive on the Quality of Surface Water Intended for Drinking Water defines three categories of water treatment (A1, A2, A3) from simple physical treatment and disinfection to intensive physical and chemical treatment. The treatment to be used depends on the quality of the water abstracted. The Directive uses imperative values for parameters known to have an adverse effect on health and also guide values for those which are less adverse. There is also a directive which complements the \"surface water abstraction\" Directive by indicating the methods of measurement and the frequency of sampling and analysis required.\\n(Source: PORT)"], "drought": ["A period of abnormally dry weather sufficiently prolonged so that the lack of water causes a serious hydrologic imbalance (such as crop damage, water supply shortage) in the affected area."], "drought control": ["Measures taken to prevent, mitigate or eliminate damage caused to the ecosystem, especially crops, by a sustained period of dry weather."], "dry cleaning": ["The cleaning of fabrics with a solvent other than water."], "dry farming": ["A system of extensive agriculture allowing the production of crops without irrigation in areas of limited rainfall."], "drying": ["The process of partially or totally removing water or other liquids from a solid."], "drying out": ["Removal of water from any substance."], "dual economy": ["An economy based upon two separate/distinct economic systems which co-exist in the same geographical space. Dualism is characteristic of many developing countries in which some parts of a country resemble advanced economies while other parts resemble traditional economies, i.e. there are circuits of production and exchange.\\n(Source: GOOD)"], "dune": ["A low mound, ridge, bank, or hill of loose, windblown granular material (generally sand, sometimes volcanic ash), either bare or covered with vegetation, capable of movement from place but always retaining its characteristic shape."], "duration of sunshine": ["Period of the day during which the sun is shining."], "dust": ["Any kind of solid material divided in particles of very small size.", "To remove solid material divided in particles of very small size to clean something.", "Dust or fine dirt to be found on the ground, on floors, on streets and ways."], "dust removal": ["The removal of dust from air by ventilation or exhaust systems."], "dwelling": ["Any enclosed space wholly or partially used or intended to be used for living, sleeping, cooking, and eating.", "The abode of a human being, their place of residence."], "dye": ["A substance used to modify the color of something.", "To modify the color of something by applying dye."], "dyke": ["An artificial wall, embankment, ridge, or mound, usually of earth or rock fill, built around a relatively flat, low-lying area to protect it from flooding."], "dyke reinforcement": ["The addition of material to strengthen the structure of the dykes."], "early warning system": ["Any series of procedures and devices designed to detect sudden or potential threats to persons, property or the environment at the first sign of danger."], "earthquake": ["The violent shaking of the ground produced by deep seismic waves, originating from the epicentre."], "earth science": ["The science that deals with the earth or any part thereof; includes the disciplines of geology, geography, oceanography and meteorology, among others."], "Earth-Sun relationship": ["The Earth depends on the sun for its existence as a planet hospitable to life, and solar energy is the major factor determining the climate. Hence, conditions on the sun and conditions on Earth are inextricably linked. Although the sun's rays may appear unchanging, its radiation does vary. Many scientists suspect that sunspot activity has a greater influence on climatic change than variations attributed to the greenhouse effect.\\n(Source: WRIGHT)"], "earthworm": ["Any of numerous oligochaete worms of the suborder Lumbricina which burrow in the soil and help aerate and break up the ground."], "earwig": ["Any of various insects of the order Dermaptera, which typically have an elongated body with small leathery forewings, semicircular membranous hindwings, and curved forceps at the tip of the abdomen."], "East Africa": ["A geographic region of the African continent that includes Burundi, Kenya, Rwanda, Tanzania, Uganda, Ethiopia and Somalia, and also Mt. Kilimanjaro and Lake Victoria."], "Eastern Asia": ["A geographic region of the Asian continent bordered by the Pacific Ocean in the east that includes China, Japan, Korea, Macao, Taiwan and Siberia."], "Eastern Europe": ["A geographic region of the European continent west of Asia and east of Germany and the Adriatic Sea, traditionally consisting of countries that were formerly part of the Soviet Union, such as Poland, the Czech Republic, Slovakia, Hungary, Romania, Serbia, Croatia and Bulgaria."], "East-West trade": ["Trade between countries and companies of the Western hemisphere with those of the Eastern hemisphere (usually referring to former Communist countries of Eastern Europe)."], "EC Council of Ministers": ["The organ of the EU that is primarily concerned with the formulation of policy and the adoption of Community legislation."], "EC ecolabel": ["The European Community (EC) initiative to encourage the promotion of environmentally friendly products."], "echinoderm": ["Marine coelomate animals distinguished from all others by an internal skeleton composed of calcite plates, and a water-vascular system to serve the needs of locomotion, respiration, nutrition or perception.", "A phylum of marine animals found at all ocean depths. The phylum appeared near the start of the Cambrian period, and contains about 7,000 living species,"], "ecological adaptation": ["Change in an organism so that it is better able to survive or reproduce, thereby contributing to its fitness."], "ecological balance": ["The condition of equilibrium among the components of a natural community such that their relative numbers remain fairly constant and their ecosystem is stable. Gradual readjustments to the composition of a balanced community take place continually in response to natural ecological succession and to alterations in climatic and other influences.\\n(Source: ALL)"], "ecological niche": ["The space occupied by a species, which includes both the physical space as well as the functional role of the species."], "ecology": ["The study of the interrelationships between living organisms and their environment."], "trophic ecology": ["The study of the feeding relationships of organisms in communities and ecosystems. Trophic links between populations represent flows of organisms, organic energy and nutrients. Trophic transfers are important in population dynamics, biogeochemistry, and ecosystem energetics.\\n(Source: PARCOR)"], "economic analysis": ["The quantitative and qualitative identification, study, and evaluation of the nature of an economy or a system of organization or operation."], "economic development": ["The state of nations and the historical processes of change experienced by them, the extent to which the resources of a nation are brought into productive use."], "economic growth": ["An increase over successive periods in the productivity and wealth of a household, country or region, as measured by one of several possible variables, such as the gross domestic product."], "economic instrument": ["Any tool or method used by an organization to achieve general developmental goals in the production of, or in the regulation of, material resources."], "economic policy": ["A definite course of action adopted and pursued by a government, political party or enterprise pertaining to the production, distribution and use of income, wealth and commodities."], "economics": ["The social study of the production, distribution, and consumption of wealth."], "economic system": ["Organized sets of procedures used within or between communities to govern the production and distribution of goods and services."], "economic theory": ["The study of relationships in the economy."], "economic viability": ["Capability of developing and surviving as a relatively independent social, economic or political unit."], "economic zoning": ["A land-use planning design or control where specific types of businesses or private sector investment are encouraged within designated boundaries.\\n(Source: ALL / EEN)"], "economy": ["The system of activities and administration through which a society uses its resources to produce wealth."], "ecophysiology": ["The study of biophysical, biochemical and physiological processes used by animals to cope with factors of their physical environment, or employed during ecological interactions with other organisms."], "ecosystem": ["A community of organisms and their physical environment interacting as an ecological unit.\\n(Source: LBC)"], "ecotourism": ["Excursions to relatively untouched lands, which for the tourist promise the chance to observe unusual wildlife and indigenous inhabitants."], "ecotoxicity": ["Quality of some substances or preparations which present or may present immediate or delayed risks for one or more sectors of the environment.\\n(Source: GRAHAW)"], "ecotoxicology": ["The science dealing with the adverse effects of chemical, physical agents, and natural products on populations and communities of plants, animals and human beings."], "ecotype": ["Species that has special characteristics which allow it to live in a certain habitat."], "edaphology": ["The study of the relationships between soil and organisms, including the use made of land by mankind."], "edible fat": ["A blend of a partially hydrogenated vegetable fat and natural butterfat."], "education": ["The act or process of imparting or acquiring knowledge or skills."], "educational institution": ["An organization or establishment devoted to the act or process of imparting or acquiring knowledge or skills.\\n(Source: RHW)"], "educational planning": ["The process of making arrangements or preparations to facilitate the training, instruction or study that leads to the acquisition of skills or knowledge, or the development of reasoning and judgment.\\n(Source: RHW)"], "education policy": ["A course of action adopted and pursued by government or some other organization, which promotes or determines the goals, methods and programs to be used for training, instruction or study that leads to the acquisition of skills or knowledge, or the development of reasoning and judgment.\\n(Source: RHW)"], "educational system": ["Any formulated, regular or special organization of instruction, training or knowledge disclosure, especially the institutional structures supporting that endeavor.\\n(Source: ISEP / OED)"], "effect": ["The result or outcome of a cause. Effects include: a) direct effects, which are caused by the action and occur at the same time and place, b) indirect effects, which are caused by the action and are later in time or farther removed in distance, that are still reasonably foreseeable.\\n(Source: LANDY)", "Images or sound added to enhance the experience of viewing a movie or listening to music.", "The result or outcome of a cause.", "Consequence or result of a deed.", "Condition that which follows something on which it depends.", "[With verbal nouns, forming phrases approximately equivalent to the source verb]"], "efficiency criterion": ["Parameter or rule for assessing the competency in performance of production relative to the input of resources."], "efficiency level": ["The ratio of output to input, usually given as a percentage."], "effluent": ["Liquid waste or sewage discharged into a river or the sea."], "egg": ["An approximately spherical or ellipsoidal body produced by birds, snakes, insects and other animals housing the embryo during its development.", "Egg (either fertilized or not) from domesticated birds, most commonly hens, seen as food.", "The female gamete of an animal or plant, capable of fusing with a male gamete to produce a zygote.", "The contents of one or more (hen's usually) eggs as a culinary ingredient, etc.", "Something shaped like an egg, such as an Easter egg or a chocolate egg.", "A swelling on one's head, usually large or noticeable, associated with an injury.", "A person of Caucasian (Western) ancestry, who has a strong desire to learn about and immerse him- or herself in East Asian culture, and/or such a person who is perceived as behaving as if he or she were Asian.", "In terms such as good egg, bad egg, tough egg etc., a person, fellow.", "A foolish or obnoxious person."], "elasticity": ["Ability of a material to return to original dimensions after deformation."], "electrical engineering": ["Engineering that deals with practical applications of electricity."], "electrical industry": ["The generation, transmission, distribution and sale of electric power to the general public."], "electricity": ["A general term used for all phenomena caused by electric charge whether static or in motion."], "electricity consumption": ["Amount of electricity consumed by an apparatus."], "electricity generation": ["The act or process of transforming other forms of energy into electric energy."], "electric line": ["Wires conducting electric power from one location to another."], "electric power": ["The rate at which electric energy is consumed or delivered by an electric device or system, equal to the product of the current and the voltage drop."], "electric power plant": ["A stationary plant containing apparatus for large-scale conversion of some form of energy (such as hydraulic, steam, chemical, or nuclear energy) into electrical energy."], "electric vehicle": ["Vehicle driven by an electric motor and characterized by being silent and less polluting."], "electrokinetics": ["The study of the motion of electric charges, especially of steady currents in electric circuits, and of the motion of electrified particles in electric or magnetic fields.\\n(Source: MGH)"], "electrolysis": ["The production of a chemical reaction by passing an electric current through an electrolyte. In electrolysis, positive ions migrate to the cathode and negative ions to the anode."], "electronics": ["Study, control, and application of the conduction of electricity through gases or vacuum or through semiconducting or conducting materials.", "Electronic part of a device."], "electronic scrap": ["Any material from electronic devices and systems, generated as a waste stream in a processing operation or discarded after service."], "electrosmog": ["Pollution caused by electric and magnetic fields generated by power lines, electrical equipment, mobile and cordless phones, radar, electrical household appliances, microwave ovens, radios, computers, electric clocks, etc."], "chemical element": ["A substance made up of atoms with the same atomic number; common examples are hydrogen, gold, and iron."], "emancipation": ["The state of being free from social or political restraint or from the inhibition of moral or social conventions."], "embryo": ["An early stage of development in multicellular organisms.", "A minute rudimentary plant contained within a seed or an archegonium."], "embryogenesis": ["The formation and development of an embryo from an egg."], "emergency relief": ["Money, food or other assistance provided for those surviving a sudden and usually unexpected occurrence requiring immediate action, especially an incident of potential harm to human life, property or the environment."], "emergency shelter": ["Shelter given to persons who are deprived of the essential necessities of life after a disaster."], "emission": ["A discharge of particulate gaseous, or soluble waste material/pollution into the air from a polluting source."], "emission factor": ["The relationship between the amount of pollutants produced to the amount of raw materials processed, or fuel consumed, in any polluting process."], "emission forecast": ["The final step in a clean air plan is to predict future air quality to demonstrate that we can (if we can) meet the health standards by implementing the measures proposed in the plan. This is done by first projecting the emission inventory into the future, taking into account changes in population, housing, employment in specific business sectors, and vehicle miles traveled. These data are obtained from various sources and the resulting emissions are adjusted to account for regulations and control measures scheduled for implementation during the same time period. Additional adjustments are made to reflect large facilities that are expected to start up, modify, or shut down. The resulting inventory is an emission forecast, and is usually expressed in tons per day of particular pollutants for a given year. Additional steps may be required to determine how the forecasted quantities of air pollution will affect the overall air quality. One way to accomplish this is through computer modeling. A computer model simulates how pollutants disperse, react, and move in the air. The inputs to such a computer model are complex. They include weather patterns, terrain, and the chemical nature of air pollutants.\\n(Source: APCD)"], "emission situation": ["The overall state regarding pollutant emission in a given area."], "emission standard": ["The maximum amount of discharge legally allowed from a single source, mobile or stationary."], "employment": ["Productive activity, service, trade, or craft for which one is regularly paid.", "The work or occupation in which a person is employed.", "Act through which a subordinated work contract starts."], "emulsification": ["The process of dispersing one liquid in a second immiscible liquid."], "emulsion": ["A stable dispersion of one liquid in a second immiscible liquid, such as milk (oil dispersed in water)."], "endocrine system": ["The chemical coordinating system in animals, that is, the endocrine glands that produce hormones."], "endocrinology": ["The study of the endocrine glands and the hormones that they synthesize and secrete.\\n(Source: MGH)"], "energy": ["The capacity to do work; involving thermal energy (heat), radiant energy (light), kinetic energy (motion) or chemical energy; measured in joules.", "A source of power, such as fuel and electrical energy, used for driving machines, providing light and heat, and powering electric devices."], "energy balance": ["The energetic state of a system at any given time."], "energy conservation": ["The reduction of energy consumption through efficient energy use."], "energy consumption": ["Amount of energy consumed by a person or an apparatus."], "energy conversion": ["The process of changing energy from one form to another."], "energy demand": ["Amount of energy needed by a person or an apparatus."], "energy economics": ["The production, distribution, and consumption of usable power such as fossil fuel, electricity, or solar radiation.\\n(Source: RHW)"], "energy management": ["The administration or handling of power derived from sources such as fossil fuel, electricity and solar radiation."], "energy market": ["The trade or traffic of energy sources treated as a commodity (such as fossil fuel, electricity, or solar radiation).\\n(Source: RHW)"], "energy policy": ["A statement of a country's intentions in the energy sector."], "energy production": ["Generation of energy in a coal fired power station, in an oil fired power station, in a nuclear power station, etc."], "energy recovery": ["A form of resource recovery in which the organic fraction of waste is converted to some form of usable energy. Recovery may be achieved through the combustion of processed or raw refuse to produce steam through the pyrolysis of refuse to produce oil or gas; and through the anaerobic digestion of organic wastes to produce methane gas.\\n(Source: LANDY)"], "energy resource": ["Potential supplies of energy which have not yet been used (such as coal lying in the ground, solar heat, wind power, geothermal power, etc.).\\n(Source: PHC)"], "energy saving": ["A set of strategies for avoiding wasting energy."], "energy source": ["Potential supplies of energy including fossil and nuclear fuels as well as solar, water, wind, tidal and geothermal power.\\n(Source: PHC)"], "energy technology": ["Technology used to produce energy."], "enforcement": ["The execution, carrying out or putting into effect an order, regulation, law or official decree."], "enriched uranium": ["Uranium whose concentration of uranium-235, which is able to sustain a nuclear chain reaction, is increased by removing uranium-238.\\n(Source: ALL)"], "enrichment": ["The process of increasing the abundance of a specified isotope in a mixture of isotopes. It is usually applied to an increase in the proportion of U-235, or the addition of Pu-239 to natural uranium for use in a nuclear reactor or weapon."], "environmental auditing": ["An assessment of the nature and extent of any harm or detriment, or any possible harm or detriment, that may be inflicted on any aspect of the environment by any activity process, development programme, or any product, chemical, or waste substance. Audits may be designed to: verify or otherwise comply with environmental requirements; evaluate the effectiveness of existing environmental management systems; assess risks generally; or assist in planning for future improvements in environment protection and pollution control\\n(Source: GILP96)"], "environmental awareness": ["The growth and development of awareness, understanding and consciousness toward the biophysical environment and its problems, including human interactions and effects."], "environmental chemistry": ["Science dealing with the physical, chemical and biochemical processes that polluting substances undergo when introduced in the environment."], "environmental cost": ["Expenses incurred as a result of some violation of ecological integrity either by an enterprise that implements a program to rectify the situation, or by society or the ecosystem as a whole when no person or enterprise is held liable."], "environmental crime": ["An unlawful act against the environment, such as water contamination, hazardous waste disposal, air contamination, unpermitted installation of plants, oil spills, etc.\\n(Source: AZENPa)", "An unlawful act against the environment, such as water contamination, hazardous waste disposal, air contamination, unpermitted installation of plants, oil spills, etc."], "environmental criminal law": ["The aggregate of statutory enactments pertaining to actions or instances of ecological negligence deemed injurious to public welfare or government interests and legally prohibited."], "environmental damage": ["Harm done to the environment, e.g. loss of wetlands, pollution of rivers, etc."], "environmental economics": ["A subfield of economics concerned with environmental issues."], "environmental education": ["The educational process that deals with the human interrelationships with the environment and that utilizes an interdisciplinary problem-solving approach with value clarification. Concerned with education progress of knowledge, understanding, attitudes, skills, and commitment for environmental problems and considerations. The need for environmental education is continuous, because each new generation needs to learn conservation for itself.\\n(Source: UNUN)"], "environmental ethics": ["An ecological conscience or moral that reflects a commitment and responsibility toward the environment, including plants and animals as well as present and future generations of people. Oriented toward human societies living in harmony with the natural world on which they depend for survival and well being.\\n(Source: UNUN)"], "environmental history": ["A systematic and chronological account of past events and conditions relating to the ecosystem, its natural resources or, more generally, the external factors surrounding and affecting human life.\\n(Source: TOE)"], "environmental impact": ["Any alteration of environmental conditions or creation of a new set of environmental conditions, adverse or beneficial, caused or induced by the action or set of actions under consideration."], "environmental indicator": ["A measurement, statistic or value that provides a proximate gauge or evidence of the effects of environmental management programs or of the state or condition of the environment."], "environmental informatics": ["Science and techniques of data elaboration and of computer processing of information concerning ecosystems and ecology."], "environmental investment": ["Securities held for the production of income in the form of interest and dividends with the aim of benefitting the environment.\\n(Source: ISEP / EFP)"], "environmental legislation": ["Branch of law relating to pollution control; national parks, wildlife, fauna and flora, wilderness and biodiversity; environmental and occupational health; environmental planning; heritage conservation and a large number of international conventions relating to the environment.\\n(Source: GILP96)"], "environmental legislation on agriculture": ["A binding rule or body of rules prescribed by a government to regulate any aspect of farm and livestock production that poses a threat to ecological integrity and human health, especially the use of pesticides, fertilizers and land."], "environmental liability": ["The penalty to be paid by an organization for the damage caused by pollution and restoration necessary as a result of that damage, whether by accidental spillages from tankers, industrial waste discharges into waterways or land, or deliberate or accidental release of radioactive materials."], "environmentally unfriendly firm": ["Firm that dores not comply with environmental regulations for the disposal of noxious wastes generated during the production cycle."], "environmental medicine": ["The art and science of the protection of good health, the promotion of aesthetic values, the prevention of disease and injury through the control of positive environmental factors, and the reduction of potential physical, biological, chemical, and radiological hazards."], "environmental policy": ["Official statements of principles, intentions, values, and objective which are based on legislation and the governing authority of a state and which serve as a guide for the operations of governmental and private activities in environmental affairs."], "environmental pollution": ["The introduction by man into the environment of substances or energy liable to cause hazards to human health, harm to living resources and ecological systems, damage to structure or amenity, or interference with legitimate uses of the environment.\\n(Source: GRAHAW)"], "environmental protection": ["Measures and controls to prevent damage and degradation of the environment, including the sustainability of its living resources."], "environmental protection cost": ["The amount of money incurred in the preservation, defense, or shelter of natural resources.\\n(Source: EFP / OED)"], "environmental psychology": ["A branch of experimental psychology which studies the relationships between behavior and the environmental context in which it occurs."], "environmental quality": ["Properties and characteristics of the environment, either generalized or local, as they impinge on human beings and other organisms. Environmental quality is a general term which can refer to: varied characteristics such as air and water purity or pollution, noise, access to open space, and the visual effects of buildings, and the potential effects which such characteristics may have on physical and mental health.\\n(Source: LANDY)"], "environmental report": ["An account or statement, usually in writing, describing in detail events, situations or conditions pertaining to the ecosystem, its natural resources or any of the external factors surrounding and affecting human life.\\n(Source: TOE)"], "environmental research": ["The study of the environment and its modifications caused by human activities."], "environmental risk assessment": ["Qualitative and quantitative evaluation of the risk posed to the environment by the actual or potential presence and/or use of specific pollutants.\\n(Source: OPPTIN)"], "environmental science": ["The interdisciplinary study of environmental problems, within the framework of established physical and biological principles, i.e. oriented toward a scientific approach."], "environmental security": ["Measures taken or policies instituted to protect and promote the safety of external conditions affecting the life, development and survival of an organism.\\n(Source: TOE)"], "environmental specimen bank": ["Places in which selected specimens (fish, mussels, milk, soil sample and human tissue, etc.) are stored without being allowed to decompose."], "environmental subsidy": ["Payment by a government to assist or improve performance regarding ecological maintenance or the protection, defense, or shelter of natural resources.\\n(Source: ODE)"], "environmental terminology": ["The vocabulary of technical terms and usage appropriate to community, corporate, governmental and other groups concerned with protecting natural resources, preserving the integrity of the ecosystem and safeguarding human health.\\n(Source: ISEP / TOE)"], "environmental vandalism": ["The egregious or blatant destruction of delicate ecosystems, especially in violation of environmental protection laws."], "environmental warfare": ["The direct manipulation or destruction of ecological resources as either a political threat or for actual military advantage."], "environment": ["The set of all natural systems, including the air, land, water, and living things other than humans.", "The set of all natural and human-made surroundings that affect individuals, social groupings, and other life.", "The complex of physical, chemical, and biotic factors that surround and act upon a specific organism or upon a specific group of organisms."], "enzyme": ["Any of a group of catalytic proteins that are produced by living cells and that mediate and promote the chemical processes of life without themselves being altered or destroyed."], "epidemic": ["A sudden increase in the incidence rate of a disease to a value above normal, affecting large numbers of people and spread over a wide area.", "Spreading rapidly and extensively by infection and affecting many individuals in an area or a population at the same time."], "epidemiology": ["The study of the occurrence and distribution of disease and injury specified by person, place, and time."], "equine": ["An animal belonging to the family of Equidae."], "equipment": ["Any collection of materials, supplies, instrumentality or apparatuses stored, furnished or provided for an undertaking, service or activity."], "equivalent dose": ["A quantity used in radiation protection, expressing all radiation on a common scale for calculating the effective absorbed dose."], "ergonomics": ["The study of human capability and psychology in relation to the working environment and the equipment operated by the worker."], "erosion": ["The general process or the group of processes whereby the materials of Earth's crust are loosened, dissolved, or worn away and simultaneously moved from one place to another, by natural agencies, which include weathering, solution, corrosion, and transportation, but usually exclude mass wasting.\\n(Source: BJGEO)"], "erosion control": ["Practices used during construction or other land disturbing activities to reduce or prevent soil erosion."], "estuarine biology": ["The scientific study of the characteristic life processes of living organisms found in a semi-enclosed coastal body of water which has a free connection with the open sea and within which sea water is measurably diluted with freshwater.\\n(Source: WOR / MHE / APD)"], "estuarine oceanography": ["The study of the physical, chemical, biological and geological characteristics of a semi-enclosed coastal body of water which has a free connection with the open sea and within which sea water is measurably diluted with fresh water.\\n(Source: MHE / APD)"], "estuary": ["A river mouth or stream mouth is a part of a river where it flows into the sea, river, lake, reservoir or ocean.", "Area at the mouth of a river where it broadens into the sea, and where fresh and sea water intermingle to produce brackish water. The estuarine environment is very rich in wildlife, particularly aquatic, but it is very vulnerable to damage as a result of the actions of humans.\\n(Source: WRIGHT)"], "etching substance": ["Substance capable of wearing away the surface of a metal, glass, etc. by chemical action."], "ether": ["A colorless liquid, slightly soluble in water; used as a reagent, intermediate, anesthetic, and solvent.\\n(Source: MGH)", "A class of chemical compounds which contain an oxygen atom connected to two (substituted) alkyl groups."], "ethics": ["The philosophical study of the moral value of human conduct and of the rules and principles that ought to govern it."], "ethnology": ["The science that deals with the study of the origin, distribution, and relations of races or ethnic groups of mankind."], "ethology": ["The study of animal behaviour in a natural context."], "EU Council": ["The Council of the European Union is an institution which exercises legislative and decision-making powers. At the same time, it is the forum in which the representatives of the Governments of the 15 Member States can assert their interests and try to reach compromises. The Council ensures general coordination of the activities of the European Community, the main objective of which is the establishment of an internal market, i.e. an area without internal frontiers guaranteeing four freedoms of movement - for goods, persons, services and capital - to which should soon be added a single currency. In addition, the Council is responsible for intergovernmental cooperation, in common foreign and security policy (CFSP) and in the areas of justice and home affairs (JHA), including for example matters of immigration and asylum, combating terrorism and drugs and judicial cooperation.\\n(Source: UEEU)"], "Euratom": ["A precursor to the European Community, the European Atomic Energy Community was founded in 1958 by the European Common Market to conduct research, develop nuclear energy, create a common market for nuclear fuels and supervise the nuclear industry so as to prevent abuse and protect health.\\n(Source: ERD)"], "Europe": ["The second smallest continent, forming the Western extension of Eurasia: the border with Asia runs from the Urals to the Caspian and the Black Sea."], "European Commission": ["The European Union's administrative body, composed of twenty independent members appointed by the Member States for five-year terms and vested with powers of initiative, implementation, management and control according to the mandates established in EU Treaties or handed down by the EU Council."], "European Court of Justice": ["The supreme court of The European Union which oversees the application of the\\nEU treaties, decides upon the validity and the meaning of Community legislation and determines whether any act or omission by the European Commission, the Council of Minister or any member state constitutes a breach of Community law."], "European Environment Agency": ["The EEA is being set up to provide the European Community and its member states with objective, reliable and standardized information on the environment. It will assess the success of existing environmental policies and the data will be used to develop new policies for environmental protection measures. It will gather information covering the present, and foreseeable, state of the environment. The priority area are: air quality and emissions; water quality, pollutants and resources; soil quality, flora and fauna, and biotopes; land use and natural resources; waste management; noise pollution; chemicals; and protection of coastal areas. The Agency will also take into account the socio-economics dimension, cover transboundary and international matters, and avoid the duplication of the activities of other bodies.\\n(Source: WRIGHT)"], "European Environmental Council": ["Council of European Union environment ministers that aims to preserve the quality of the environment, human health, the prudent and rational utilisation of natural resources and to promote measures at international level to deal with regional or worldwide environmental problems."], "European Parliament": ["Formerly the \"Assembly\" of EEC. Comprises some 520 \"representatives of the peoples\" of European Community states, directly elected, and based in Strasbourg. Exercises advisory and supervisory powers; debates and passes resolutions and may veto admission of new member states.\\n(Source: CURZON)"], "European Union": ["The 27 nations (Austria, Belgium, Bulgaria, Cyprus, Czechia, Denmark, Estiona, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Luxembourg, Malta, the Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden and the UK) that have joined together to form an economic community with common monetary, political and social aspirations."], "eutrophication": ["A process of pollution that occurs when a lake or stream becomes over-rich in plant nutrient and as a consequence becomes overgrown in algae and other aquatic plants."], "evaluation": ["An assessment or a summary of a particular situation."], "evaporation": ["Conversion from a liquid or solid state to a vapour."], "evapotranspiration": ["Discharge of water from the earth's surface to the atmosphere by evaporation from lakes, streams and soil surfaces and by transpiration from plants."], "evolution": ["The biological theory or process whereby species of plants and animals change with the passage of time so that their descendants differ from their ancestors, i.e. development from earlier forms by hereditary transmission of slight variations in successive generations.", "A gradual process of development, formation, or growth, especially, one leading to a more advanced or complex form."], "exact science": ["Mathematics and other sciences based on calculation."], "excavated hole": ["A pit, cavity, or other uncovered cutting produced by excavation."], "executive order": ["An order or regulation issued by the president or some administrative authority under his direction for the purpose of interpreting, implementing or giving administrative effect to a provision of the constitution or of some law or treaty."], "exhaust device": ["A duct or pipe through which waste material is emitted; a combination of components which provides for enclosed flow of exhaust gas from engine parts to the atmosphere.\\n(Source: AMHER / LEE)"], "exhaust gas": ["Offgas produced during combustion processes discharged directly or ultimately to the atmosphere."], "exotic species": ["Plants, animals or microorganisms which are introduced by humans into areas where they are not native. Exotics are often associated with negative ecological consequences for native species and the ecosystems."], "expenditure": ["Spending by consumers, investors, or government for goods or services."], "experiment": ["A test under controlled conditions that is made to demonstrate a known truth, examine the validity of a hypothesis, or determine the efficacy of something previously untried.", "To conduct an experiment or investigation.", "To try something new, as in order to gain experience."], "expert system": ["A computer configuration of hardware and software that simulates the judgment and behavior of a human or an organization with extensive knowledge in a particular field, often by giving answers, solutions or diagnoses.\\n(Source: RHW / WIC)"], "exploration": ["A careful systematic search."], "explosion": ["A violent, sudden release of energy resulting from powders or gases undergoing instantaneous ignition or from some other means of detonation, often accompanied by a force producing great amounts of heat, major structural damages, shock waves and flying shrapnel.\\n(Source: HMD)"], "explosive": ["A substance, such as trinitrotoluene, or a mixture, such as gunpowder, that is characterized by chemical stability but may be made to undergo rapid chemical change without an outside source of oxygen, whereupon it produces a large quantity of energy generally accompanied by the evolution of hot gases.", "With the capability to, or likely to, explode.", "Liable to lead to sudden change or violence."], "export": ["To send, take or carry an article of trade or commerce out of the country.", "Any good or commodity, transported from one country to another country in a legitimate fashion, typically for use in trade."], "exposure": ["The time for which a material is illuminated or irradiated."], "expropriation": ["The act of depriving an owner of private property for public use."], "extensive cattle farming": ["Farming system practiced in very large farms, characterized by low levels of inputs per unit area of land; in such situations the stocking rate, the number of livestock units per area, is low."], "externality": ["Discrepancies between private costs and social costs or private advantages and social advantages; the basic concept of externality is interdependence without compensation."], "extraction": ["Any process by which a pure metal is obtained from its ore.\\n(Source: UVAROV)"], "extractive industry": ["Primary activities involved in the extraction of non-renewable resources.\\n(Source: GOOD)"], "fabric": ["Any cloth made from yarn or fibres by weaving, knitting, felting, etc."], "factor market": ["A market where services of the factors of production (not the actual factors of production) are bought and sold."], "fallout": ["The descent of airborne solid or liquid particles to the ground, which occurs when the speed at which they fall due to gravity exceeds that of any upward motion of the air surrounding them."], "fallow area": ["Land area normally used for crop production but left unsown for one or more growing seasons."], "fallow land": ["Arable land not under rotation that is set at rest for a period of time ranging from one to five years before it is cultivated again, or land usually under permanent crops, meadows or pastures, which is not being used for that purpose for a period of at least one year. Arable land which is normally used for the cultivation of temporary crops but which is temporarily used for grazing is included."], "family": ["A group comprising parents, offsprings and others closely related or associated with them.", "A group of persons sharing a home or living space, who aggregate and share their incomes, as evidenced by the fact that they regularly take meals together.", "A biological taxon, a group of animals or plants, part of an order and consisting of one or more genera.", "Of or related to a family."], "family planning": ["The control of the number of children in a family and of the intervals between them, especially by the use of contraceptives."], "famine": ["A severe shortage of food, as through crop failure or over population. It may be due to poor harvests following drought, floods, earthquake, war, social conflict, etc."], "farm animal": ["Animals reared in farms for working and producing food such as meat, eggs and milk."], "farm": ["Any tract of land or building used for agricultural purposes, such as for raising crops and livestock."], "fauna": ["The entire animal life of a given region, habitat or geological stratum."], "federal government": ["A system in which a country or nation formed by a union or confederation of independent states is governed by a central authority or organization."], "federal law": ["A binding rule or body of rules established by a government that has been constituted as a union of independent political units or states."], "fee": ["A charge fixed by law for services of public officers or for use of a privilege under control of government."], "fen": ["Waterlogged, spongy ground containing alkaline decaying vegetation, characterized by reeds, that may develop into peat. It sometimes occurs in the sinkholes of karst region."], "fermentation": ["Any enzymatic transformation of organic substrates, especially carbohydrates, generally accompanied by the evolution of gas."], "fern": ["Any of a large number of vascular plants composing the division Polypodiophyta, without flowers and fruits.\\n(Source: MGH)"], "fibre": ["The portion of plant products that moves through the human digestive system without being digested."], "field": ["A limited area of land with grass or crops growing on it, which is usually surrounded by fences or closely planted bushes when it is part of a farm.", "A particular environment or walk of life.", "A single aspect of each member of an entity in a database.", "A land area free of woodland or human settlements.", "The open country near or belonging to a city.", "A region affected by a particular force.", "An area that can be seen at a given time.", "A place where a battle is fought.", "A realm of practical, direct, or natural operation, contrasting with an office, classroom, or laboratory.", "A number system w\u0131th functions that has the same properties relative to the operations of addition and multiplication used for real numbers.", "A region containing a particular mineral.", "The background of the shield.", "An area of memory or storage reserved for a particular value.", "A component of a database record in which a single unit of information is stored.", "A physical or virtual location for the input of information in the form of characters.", "To intercept or catch (a ball) and play it.", "To be the team catching and throwing the ball, as opposed to hitting it.", "To place a team in (a game)."], "field damage": ["A decline in the productivity of an area of land or in its ability to support natural ecosystems or types of agriculture."], "field experiment": ["Experiment carried out on a substance or on an organism in the open air as opposed to in a laboratory."], "field study": ["Scientific study made in the open air to collect information that can not be obtained in a laboratory."], "filling material": ["Any substance used to fill the holes and irregularities in planed or sanded surfaces so as to decrease the porosity of the surface for finish coatings."], "filling station": ["A place where petrol and other supplies for motorists are sold.", "A facility selling fuel for road motor vehicles."], "film": ["A sequence of animated images.", "A thin covering layer, often about something temporarily deposited on the surface.", "To capture a motion picture onto film.", "To become covered by a thin layer.", "A thin flexible strip of cellulose coated with a photographic emission, used in cameras to make negatives and transparencies, capture motion pictures, etc."], "filter": ["A porous material for separating suspended particulate matter from liquids by passing the liquid through the pores in the filter and sieving out the solids.\\n(Source: MGH)", "Any item, mechanism, device or procedure that acts to separate or isolate.", "To separate or isolate components from one another with the help of a filter."], "filter cake": ["Accumulated solids, wet or dry, generated by any filtration process, including accumulation on fabric filters in air filtering processes, or accumulation of wet solids in liquid filtering processes.\\n(Source: EED / ISEP)"], "filtration": ["Separation of suspended particles from a liquid, gas, etc., by the action of a filter.", "The act of filtering."], "financial compensation": ["The financial reparations that a claimant seeks or a court awards for injuries sustained or property harmed by another.\\n(Source: IVW)"], "financial market": ["A place or institution in which buyers and sellers meet and trade monetary assets, including stocks, bonds, securities and money."], "financing": ["Procurement of monetary resources or credit to operate a business or acquire assets."], "fine": ["A pecuniary punishment or penalty imposed by lawful tribunal upon person convicted of crime or misdemeanor."], "fine dust": ["Air-borne solid particles, originating from human activity and natural sources, such as wind-blown soil and fires, that eventually settle through the force of gravity, and can cause injury to human and other animal respiratory systems through excessive inhalation."], "fire": ["The state of combustion in which inflammable material burns, producing heat, flames and often smoke.", "An unwanted and uncontrolled burning of matter.", "Intense adverse criticism.", "To terminate the employment of one or more employees.", "Uncontrolled burning, conflagration."], "fire precaution": ["Measure, action or installation implemented in advance to avert the possibility of any unexpected and potentially harmful combustion of materials.\\n(Source: RHW)"], "fire protection": ["All necessary precautions to see that fire is not initiated, by ensuring that all necessary fire fighting apparatus is in good order and available for use if fire should break out, and by ensuring that personnel are properly trained and drilled in fighting fire."], "fire safety requirement": ["Rules to be followed and safety systems to be adopted for preventing or fighting fire.\\n(Source: RRDA)"], "fire service": ["Organisation with trained personnel for dealing with fires and other incidents and for co-operating in their prevention."], "firing": ["The process of applying fire or heat, as in the hardening or glazing of ceramics.\\n(Source: HARRIS)"], "firm": ["A commercial association of two or more persons, especially when incorporated.", "Resistant to pressure.", "A place where an activity is accomplished, whether actual, as a pub, or virtual, as a website.", "Fixed; closely compressed.", "Marked by firm determination or resolution; not shakable.", "Strong and sure (e.g. grasp)."], "fish disease": ["An illness affecting fish, including bacterial, viral and fungal infections, parasites and maltnutrition."], "fishery": ["The industry of catching, processing and selling fish."], "fish": ["A cold-blooded vertebrate animal that lives in water that moves with the help of fins and breathes using gills (Pisces).", "To catch or try to catch fish.", "A new inmate in a prison."], "fish farming": ["Raising of fish in inland waters, estuaries or coastal waters."], "fishing": ["The art or sport of catching fish with a rod and line and a baited hook or other lure, such as a fly.", "The attempt to catch fish or other aquatic animal with a hook or with nets, traps, etc."], "fishing industry": ["Industry for the handling, processing, and packing of fish or shellfish for market or shipment."], "fishing vessel": ["Ship or boat that is used to catch fish on seas, lakes or rivers."], "fish stock": ["The population of fish in a certain area."], "flag of convenience": ["Practice of registering a merchant vessel with a country that has favourable (i.e. less restrictive ) safety requirements, registration fees, etc."], "flaring": ["1) Flares use open flames during normal and/or emergency operations to combust hazardous gaseous. The system has no special features to control temperature or time of combustion; however, supplemental fuel may be required to sustain the combustion. Historically, flares have been used to dispose of waste gases in the oil and gas industry and at wastewater treatment plants having anaerobic digestors. Regulation for thermal destruction of hazardous wastes limit the practical use of flaring to combustion of relatively simple hydrocarbons, such as methane from digesters or landfill gas collection systems. \\n2) A control device that burns hazardous materials to prevent their release into the environment; may operate continuously or intermittently, usually on top a stack.\\n(Source: CORBIT / EPAGLO)"], "rapid test": ["Medical test whose results are available very quickly."], "flea": ["Any of the wingless insects composing the order Siphonaptera; most are ectoparasites of mammals and birds.\\n(Source: MGH)"], "flocculant": ["A reagent added to a dispersion of solids in a liquid to bring together the fine particles to form flocs."], "flocculation": ["A process of contact and adhesion whereby the particles of a dispersed substance form large clusters or the aggregation of particles in a colloid to form small lumps, which then settle out."], "flood": ["An overflowing; an inundation or flood, especially when the water is charged with much suspended material.\\n(Source: BJGEO)", "An unusual accumulation of water above the ground caused by high tide, heavy rain, melting snow or rapid runoff from paved areas.", "To cover with large amounts of water."], "flooding": ["A general and temporary condition of partial or complete inundation of normally dry land areas from the overflow of inland and/or tidal waters, and/or the unusual and rapid accumulation or runoff of surface waters from any source."], "flora restoration": ["The process of returning plant ecosystems and habitats to their original conditions."], "flotation": ["A process used to separate particulate solids by causing one group of particles to float; utilizes differences in surface chemical properties of the particles, some of which are entirely wetted by water, others are not."], "flow": ["The flowing of a fluid.", "To move as a fluid from one position to another (e.g. of people).", "To move along, of liquids."], "flower": ["The reproductive structure of angiosperm plants, consisting of stamens and carpels surrounded by petals and sepals all borne on the receptacle.", "A plant that is cultivated or admired for its beautiful blossoms.", "(Of a plant) To produce blooms or flowers."], "flowering plant": ["The division of seed plants that includes all the flowering plants, characterized by the possession of flowers. The ovules, which become seeds after fertilization, are enclosed in ovaries. The xylem contains true vessels. The angiospermae are divided into two subclasses: Monocotyledoneae and Dycotiledoneae.\\n(Source: ALL)", "Member of the angiosperm, the class of seed plants that includes all the flowering plants."], "flow field": ["The velocity and the density of a fluid as functions of position and time."], "flowing water": ["Moving waters like rivers and streams."], "flue gas": ["The gaseous combustion product generated by a furnace and often exhausted through a chimney (flue)."], "fluidised bed": ["A bed of finely divided solid through which air or a gas is blown in a controlled manner so that it behaves as a liquid."], "fluoridation": ["The addition of the fluorine ion to municipal water supplies in a final concentration of 0.8-1.6 ppm (parts per million) to help prevent dental caries in children."], "fluorine": ["A gaseous chemical element with symbol F and atomic number 9; a member of the halide family, it is the most electronegative element and the most chemically energetic of the nonmetallic elements; highly toxic and corrosive; used in rocket fuels and as a chemical intermediate.\\n(Source: MGH)"], "river transport": ["Transportation of goods or persons by means of ships travelling on rivers."], "fly ash": ["Finely divided particles of ash that are entrained in flue gases resulting from the combustion of fuel or other material."], "foaming agent": ["A substance which makes it possible to form a homogenous dispersion of a gaseous phase in a liquid or solid medium."], "fodder": ["Bulk feed for livestock, especially hay, straw, etc.\\n(Source: CED)"], "fog": ["Water droplets or, rarely, ice crystals suspended in the air in sufficient concentration to reduce visibility appreciably.", "To hide from view."], "mist": ["Fine water droplets suspended in the air, which reduce visibility. Usually mists form at night, when the temperature falls because the sky is clear. If visibility falls below 1,000 metres, the mist becomes a fog."], "foliage": ["The leaves of a plant together."], "food": ["A substance that can be ingested and utilized by the organism as a source of nutrition and energy."], "food additive": ["Substances that have no nutritive value in themselves (or are not being used as nutrients) which are added to food during processing to improve colour, texture, flavour, or keeping qualities."], "food chain": ["A sequence of organisms on successive trophic levels within a community, through which energy is transferred by feeding; energy enters the food chain during fixation by primary producers (mainly green plants) and passes to the herbivores (primary consumers) and then to the carnivores (secondary and tertiary consumers)."], "food hygiene": ["That part of the science of hygiene that deals with the principles and methods of sanitation applied to the quality of foodstuffs, to their processing, preparation, conservation and consumption by man."], "food industry": ["The commercial production and packaging of foods that are fabricated by processing, by combining various ingredients, or both."], "food irradiation": ["The process of applying high energy to food products, to sterilize them and extend their shelf-life by killing microorganisms, insects and other pests residing on it."], "food preservation": ["Processing designed to protect food from spoilage caused by microbes, enzymes, and autooxidation."], "food quality": ["The quality characteristics of food that is acceptable to consumers."], "food science": ["The applied science which deals with the chemical, biochemical, physical, physiochemical, and biological properties of foods."], "foodstuff": ["A substance that can be used or prepared for use as food."], "food technology": ["The application of science and engineering to the refining, manufacturing, and handling of foods; many food technologists are food scientists rather than engineers."], "footpath": ["A narrow path for walkers only."], "forage contamination": ["Introduction of hazardous or poisonous substances such as arsenic or lead into, or onto, fodder for animals."], "forecast": ["An estimate of a future condition."], "foreign policy": ["The diplomatic policy of a nation in its interactions with other nations."], "foreign trade": ["Trade between countries and firms belonging to different countries."], "forest": ["A vegetation community dominated by trees and other woody shrubs, growing close enough together that the tree tops touch or overlap, creating various degrees of shade on the forest floor.", "In graph theory, a disjoint union of trees."], "forest damage": ["Reduction of tree population in forests caused by acidic precipitation, forest fires, air pollution, deforestation, pests and diseases of trees, wildlife, etc."], "forest ecosystem": ["Any forest environment, in which plants and animals interact with the chemical and physical features of the environment, in which they live."], "forest fire": ["A conflagration in or destroying large wooded areas having a thick growth of trees and plants."], "forest pest": ["Organism that damages trees."], "forest policy": ["A course of action adopted and pursued by government or some other organization, which seeks to preserve or protect an extensive area of woodland, often to produce products and benefits such as timber, wildlife habitat, clean water, biodiversity and recreation."], "forest reserve": ["Forest area set aside for the purpose of protecting certain fauna and flora, or both."], "forestry": ["The management of forest lands for wood, forages, water, wildlife, and recreation."], "forestry practice": ["The farming of trees to ensure a continuing supply of timber and other forest products. Foresters care for existing trees, protecting them from fire, pests and diseases, and felling where trees are overcrowded or dying and when ready for cropping. They also plant new areas (afforestation) and replant felled areas (reafforestation).\\n(Source: GOOD)"], "fossil": ["Any remains, trace, or imprint of a plant or animal that has been preserved in the Earth's crust since some past geologic or prehistoric time."], "fossil fuel": ["The energy-containing materials which were converted over many thousands of years from their original form of trees, plants and other organisms after being buried in the ground."], "four stroke engine": ["An internal combustion engine whose cycle is completed in four piston strokes; includes a suction stroke, compression stroke, expansion stroke, and exhaust stroke."], "framework legislation": ["A body of rules prescribed by a government, often composed in a series of inter-related parts, to establish or lay the foundation for a new project, agency or organizational structure.\\n(Source: RHW)"], "access to information": ["The ability, right and permission to approach and use, or the general availability of resources that convey knowledge."], "freight transport": ["Transportation of goods by ship, aircraft or other vehicles."], "freon": ["Trade name for a group of polyhalogenated hydrocarbons containing fluorine and chlorine; an example is trichlorofluoromethane."], "freshwater": ["Water having a relatively low mineral content, generally less than 500 mg/l of dissolved solids."], "freshwater biology": ["The scientific study of the characteristic life processes of living organisms found in a natural body of water that does not contain significant amounts of dissolved salts and minerals, such as a lake or river."], "freshwater ecosystem": ["The living organisms and nonliving materials of an inland aquatic environment."], "freshwater organism": ["Organism which lives in freshwater.\\n\\n(Source: PHC)"], "frog": ["Any insectivorous anuran amphibian of the family Ranidae, such as Rana temporaria of Europe, having a short squat tailless body with a moist smooth skin and very long hind legs specialized for hopping."], "frost": ["A deposit of interlocking ice crystals formed by direct sublimation on objects.\\n(Source: MGH)"], "fruit": ["A fully matured plant ovary with or without other floral or shoot parts united with it at maturity.", "A botanical fruit that can be eaten raw used as food."], "fruit cultivation": ["Cultivation of fruit trees for home consumption or on a commercial basis."], "fruit tree": ["Any tree that bears edible fruit.\\n(Source: CED)"], "fuel": ["Solid, liquid, or gaseous material such as gas, gasoline, oil, coal or wood, used to produce heat or power by burning."], "fuel additive": ["Substance (such as tetraethyl lead) which is added to petrol to prevent knocking."], "fuel alcohol": ["Alternative source of energy for motor vehicles. It is produced by fermentation of sugar cane by the yeast Saccharomyces cerevisiae.\\n(Source: DICCHE)"], "fuel consumption": ["The amount of fuel utilized.\\n(Source: PHCa)"], "fuel oil": ["A liquid product burned to generate heat, exclusive of oils with a flash point below 38\u00b0C; includes heating oils, stove oils, furnace oils, bunker fuel oils.\\n(Source: MGH)"], "fuel wood": ["Wood used for heating."], "fume": ["Solids in the air that have been generated by the condensation of vapors, chemical reactions or sublimation (a direct change from solid to gas). Often metallic oxides or metals, these particles are less than 1 micrometer in diameter and may be toxic.\\n(Source: ALL)"], "fumigation": ["The use of a chemical compound in a gaseous state to kill insects, nematodes, arachnids, rodents, weeds, and fungi in confined or inaccessible locations; also used to control weeds, nematodes, and insects in the field."], "functional substance": ["A substance from the point of view of its function or purpose, for example a painting agent or a preserving substance."], "mycete": ["Nucleated usually filamentous, sporebearing organisms devoid of chlorophyll."], "fungus": ["Nucleated usually filamentous, sporebearing organism devoid of chlorophyll."], "fungicide": ["A chemical used to kill or halt the development of fungi that cause plant disease."], "fur": ["The hair-covered, dressed pelt of a mammal, used in the making of garments and as trimming or decoration."], "fur animal": ["Animal bred and slaughtered for its fur."], "furan": ["A colourless flammable toxic liquid heterocyclic compound, used in the synthesis of nylon.\\n(Source: CED)"], "furnace": ["A structure or apparatus in which heat is produced by the combustion of fuel, often to warm houses, melt metals, produce steam and bake pottery."], "furniture": ["The movable articles in a room or an establishment that make it fit for living or working.", "A movable object (such as a table, chair, lamp) inside a dwelling, that is useful or decorative."], "furriery": ["The business or trade of dressed furs and garments made from the coats of certain animals."], "gamma radiation": ["A form of electromagnetic radiation or light emission of frequencies produced by sub-atomic particle interactions, such as electron-positron annihilation or radioactive decay."], "garden": ["A piece of land next to a house where flowers and other plants are grown and which often has an area of grass.", "To grow plants in a garden; to create or maintain a garden."], "garden waste": ["Natural organic matter discarded from gardens and yards including leaves, grass clippings, prunings, brush and stumps."], "garrigue": ["Mediterranean bush consisting of low evergreen shrubs and abundant herbaceous plants."], "gas": ["A substance that continues to occupy in a continuous manner the whole of the space in which it is placed, however large or small this place is made, the temperature remaining constant.", "A fuel for internal combustion engines consisting essentially of volatile flammable liquid hydrocarbons derived from crude petroleum.", "To show off."], "gas chromatography": ["A separation technique involving passage of a gaseous moving phase through a column containing a fixed phase; it is used principally as a quantitative analytical technique for volatile compounds.\\n(Source: MGH)"], "gas company": ["Company charged with the production and distribution of gas for domestic use.\\n(Source: RRDA)"], "gas engine": ["An internal combustion engine that uses gaseous fuel."], "gaseous state": ["State of matter in which the matter concerned occupies the whole of its container irrespective of its quantity.\\n(Source: DICCHE)"], "gasification": ["Any chemical or heat process used to convert a substance to a gas."], "gas liquefaction": ["Conversion of a gas to the liquid phase by cooling or compression."], "gas mixture": ["Mixture of two or more different gases."], "gas network": ["Interconnected system of pipes for the distribution and supply of gas."], "gasohol": ["A mixture of 80% or 90% petrol with 20% or 10% ethyl alcohol, for use as a fuel in internal combustion engines."], "gasoline engine": ["An internal combustion engine that uses a mixture of air and gasoline vapour as a fuel."], "gas pipeline": ["A long pipe, especially underground, used to transport gas over long distances."], "gas powered plant": ["Power station which burns gas, as opposed to a coal-fired station or nuclear power station."], "gas purification": ["Removal of pollutants or contaminants from waste incineration or other combustion processes.\\n(Source: MGHa)"], "gas reservoir": ["Large tank for storing coal gas or natural gas.\\n(Source: PHC)"], "gas supply": ["The provision and storage of any fuel gas, for the use of a municipality, or other fuel gas user."], "gastropod": ["Any mollusc of the class Gastropoda, typically having a flattened muscular foot for locomotion and a head that bears stalked eyes."], "gene bank": ["Storehouse of seeds or vegetative tissue, kept in low humidity and temperature, to help maintain genetic diversity."], "general chemistry": ["The study of the elements and the compounds they form."], "gene": ["A unit of heredity composed of DNA occupying a fixed position on a chromosome. A gene may determine a characteristic of an individual by specifying a polypeptide chain that forms a protein or part of a protein (structural gene); or repress such operation (repressor gene).\\n(Source: CED)"], "genetic diversity": ["The variation between individuals and between populations within a species."], "genetic effect": ["Inheritable change, chiefly mutations produced by chemical substances, herbicides, radiations, etc."], "genetic engineering": ["1) The complex of techniques for the production of new genes and the alteration of the structure of the chromosomes to produce effects beneficial to man, in agriculture and medicine.\\n2) The intentional production of new genes and alteration of genomes by the substitution or addition of new genetic material.\\n(Source: ZINZAN / MGH)"], "genetic information": ["The information for protein synthesis contained in the nucleotide sequences of the DNA polynucleotide chain.\\n(Source: RRDA)"], "genetic modification": ["Inheritable changes produced by ionizing radiation, exposure to certain chemicals, ingestion of some medication and from other causes.\\n(Source: CONFER)"], "genetic resource": ["The gene pool in natural and cultivated stocks of organisms that are available for human exploitation. It is desirable to maintain as diverse a range of organisms as possible, particularly of domesticated cultivars and their ancestors, in order to maintain a wide genetic base. The wider the genetic base, the greater the capacity for adaptation to particular environmental conditions.\\n(Source: ALL2)"], "genetics": ["The science that is concerned with the study of biological inheritance."], "genetic variation": ["Change in one or more phenotypic characteristics, due to gene mutation or rearrangement, environmental effects, etc."], "geodesy": ["A subdivision of geophysics which includes determination of the size and shape of the earth, the earth's gravitational field, and the location of points fixed to the earth's crust in an earth-referred coordinate system."], "geogenic factor": ["Factors which originate in the soil, as opposed to those of anthropic origin (anthropogenic).\\n(Source: RRDA)"], "geographic information system": ["An organized collection of computer hardware, software, geographic data, and personnel designed to efficiently capture, store, update, manipulate, analyze, and display all forms of geographically referenced information that can be drawn from different sources, both statistical and mapped."], "geography": ["The study of the natural features of the earth's surface, comprising topography, climate, soil, vegetation, etc. and man's response to them."], "geology": ["The study or science of the earth, its history, and its life as recorded in the rocks."], "geomorphology": ["The study of the classification, description, nature, origin, and development of present landforms and their relationships to underlying structures, and of the history of geologic changes as recorded by these surface features."], "geophysics": ["The physics of the earth and its environment, that is, earth, air and space."], "geotechnology": ["The application of scientific methods and engineering techniques to the exploitation and use of natural resources."], "geothermal energy": ["An energy produced by tapping the earth's internal heat. At present, the only available technologies to do this are those that extract heat from hydrothermal convection systems, where water or steam transfer the heat from the deeper part of the earth to the areas where the energy can be tapped. The amount of pollutants found in geothermal vary from area to area but may contain arsenic, boron, selenium, lead, cadmium, and fluorides. They also may contain hydrogen sulphide, mercury, ammonia, radon, carbon dioxide, and methane.\\n(Source: KOREN)"], "germ": ["A pathogenic micro-organism.", "Living substance capable of developing into an organ, part, or organism as a whole; a primordium."], "germination": ["The beginning or the process of development of a spore or seed."], "germ plasm": ["The hereditary material transmitted to the offspring via the gametes."], "glacier": ["Slow moving masses of ice which have accumulated either on mountains or in polar regions."], "glaciology": ["The study of all aspects of snow and ice, and in particular of existing glaciers, ice sheets, and their physical properties."], "glass": ["A hard, amorphous, inorganic, usually transparent, brittle substance made by fusing silicates, sometimes borates and phosphates, with certain basic oxides and then rapidly cooling to prevent crystallization.", "A surface that reflects light.", "A vessel (especially one made of glass) from which drinks may be drunk.", "A smooth surface, usually made of glass with reflective material painted on the underside, that reflects light so as to give an image of what is in front of it.", "An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "glass industry": ["Industry for the production of glassware.\\n(Source: CED)"], "global warming": ["Changes in the surface-air temperature, referred to as the global temperature, brought about by the greenhouse effect which is induced by emission of greenhouse gases into the air."], "glossary": ["An alphabetical list of terms concerned with a particular subject, field or area of usage that includes accompanying definitions."], "glue": ["Substance used for sticking objects together."], "golf": ["A game played on a large open course, the object of which is to hit a ball using clubs, with as few strokes as possible, into each of usually 18 holes.", "To play golf."], "grain": ["Edible, starchy seeds of the grass family (Graminae) usable as food by man and his livestock."], "grass": ["A very large and widespread family of Monocotyledoneae, with more than 10.000 species, most of which are herbaceous, but a few are woody. The stems are jointed, the long, narrow leaves originating at the nodes. The flowers are inconspicuous, with a much reduced perianth, and are wind-pollinated or cleistogamous.", "A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect."], "grass fire": ["A conflagration in or destroying large areas of any vegetation in the Gramineae family as found in fields, meadows, savannas or other grasslands."], "grasshopper": ["A plant-eating insect with long back legs that can jump very high and makes a sharp high noise using its back legs or wings."], "grassland": ["An area where the vegetation is dominated by grasses and other herbaceous plants."], "grassland ecosystem": ["The interacting system of the biological communities located in biomes characterized by the dominance of indigenous grasses, grasslike plants and forbs, and their non-living environmental surroundings.\\n(Source: TOE / DOE)"], "gravel": ["To have an unwanted negative influence on someone, to be distractive to or for someone, impress someone or something in a troublesome or uneasy way.", "A mixture of rock fragments and pebbles that is coarser than sand.\\n(Source: CED)", "To make someone rather angry or impatient; to cause annoyance."], "gravel pit": ["A place where gravel is dug out of the ground."], "grazing": ["The vegetation on pastures that is available for livestock to feed upon."], "greenbelt": ["An area of land around an urban area that is protected from large-scale housing."], "green corridor": ["Avenues along which wide-ranging animals can travel, plants can propagate, genetic interchange can occur, populations can move in response to environmental changes and natural disasters, and threatened species can be replenished from other areas."], "environmental tax": ["An amount of money demanded by a government to finance clean-up, prevention, reduction, enforcement or educational efforts intended to promote ecological integrity and the conservation of natural resources."], "greenhouse cultivation": ["Cultivation of plants, especially of out-of-season plants, in glass-enclosed, climate-controlled structures.\\n(Source: MGH)"], "greenhouse effect": ["The warming of the Earth's atmosphere caused by the increasing concentration of atmospheric gases, such as water vapour and carbon dioxide. These gases absorb radiation emitted by the Earth, thus slowing down the loss of radiant energy from the Earth back to space."], "greenhouse gas": ["A component of the atmosphere that influences the greenhouse effect, namely carbon dioxide, methane, nitrous oxides, ozone, CFCs and water vapour."], "green manure": ["Herbaceous plant material plowed into the soil while still green."], "green revolution": ["The development of high-yield strains of wheat, corn and rice during the 1960s and early 1970s to increase the food supplies and solve the world's hunger problems."], "green space": ["A plot of vegetated land separating or surrounding areas of intensive residential or industrial use and devoted to recreation or park uses."], "green vegetable": ["A vegetable having the edible parts rich in chlorophyll and forming an important source of vitamins and micronutrients."], "grinding": ["The process of reducing an object to powder or small fragments."], "gross national product": ["Value of all goods and services produced in a country in one year, plus income earned by its citizens abroad, minus income earned by foreigners in the country."], "groundwater": ["Water that occupies pores and crevices in rock and soil, below the surface and above a layer of impermeable material."], "groundwater extraction": ["The process, deliberate or inadvertent, of extracting ground water from a source at a rate so in excess of the replenishment that the ground water level declines persistently, threatening exhaustion of the supply or at least a decline of pumping levels to uneconomic depths."], "gulf": ["An inlet of the sea of large areal proportions, more indented than a bay and generally more enclosed."], "gymnosperm": ["Any seed-bearing plant of the division Gymnospermae, in which the ovules are borne naked on the surface of the mega sporophylls, which are often arranged in cones."], "gypsum": ["A colourless or white mineral used in the building industry and in the manufacture of cement, rubber, paper and plaster of Paris."], "habitat": ["The locality in which a plant or animal naturally grows or lives. It can be either the geographical area over which it extends, or the particular station in which a specimen is found.\\n2) A physical portion of the environment that is inhabited by an organism or population of organisms. A habitat is characterized by a relative uniformity of the physical environment and fairly close interaction of all the biological species involved. In terms of region, a habitat may comprise a desert, a tropical forest, a prairie field, the Arctic Tundra or the Arctic Ocean.\\n(Source: WRIGHT / GILP)"], "hail": ["Precipitation in the form of balls or irregular lumps of ice.", "To fall from the clouds in form of ball or lumps of ice."], "half-life": ["The time required for one-half the atoms of a given amount of radioactive material to undergo radioactive decay."], "haloform": ["A haloalkane, containing three halogen atoms, e.g. iodoform, CHI3; a haloform reaction is a reaction to produce haloforms from a ketone. For example, if propanone is treated with bleaching powder, the chlorinated ketone so formed reacts to form chloroform.\\n(Source: UVAROV)"], "halogenated biphenyl": ["Halogen derivatives of biphenyl."], "halogenated hydrocarbon": ["One of a group of halogen derivatives of organic hydrogen and carbon containing compounds; the group includes monohalogen compounds (alkyl or aryl halides) and polyhalogen compounds that contain the same or different halogen atoms."], "halogenated phenol": ["Halogen derivatives of phenol."], "harbour": ["To maintain (a theory, thoughts, or feelings).", "To secretly shelter (as of fugitives or criminals).", "To keep in one's possession; of animals."], "hardness": ["Resistance of a solid to indentation, scratching, abrasion or cutting.\\n(Source: MGH)"], "harvest": ["The amount or measure of the crop gathered in a season.", "To gather the ripened crop.", "The process of gathering the ripened crop."], "hazard": ["A physical or chemical agent capable of causing harm to persons, property, animals, plants or other natural resources."], "haze": ["Reduced visibility in the air as a result of condensed water vapour, dust, etc., in the atmosphere.\\n(Source: CED)", "Meteorologic phenomenon consisting of a big number of dry and extremely small particles (dust, sand, smoke) in suspension and carried by the air, so that visibility is considerably reduced (aprox. between 1 and 5 kms). It occurs when the relative humidity is below 70-80%. It has an opalescent color."], "health": ["A state of dynamic equilibrium between an organism and its environment in which all functions of mind and body are normal."], "health care": ["The prevention, treatment, and management of illness and the preservation of mental and physical well being through the services offered by the medical, nursing, and allied health professions.", "Treatment done for a patient in order to alleviate his pain and to heal him."], "health facility": ["A facility or location where medical, dental, surgical, or nursing attention or treatment is provided to humans or animals."], "health regulation": ["A body of rules or orders prescribed by government or management to promote or protect the soundness of human bodies and minds in the workplace, at home or in the general environment.\\n(Source: BLD / RHW)"], "hearing impairment": ["A decrease in strength or any abnormality or partial or complete loss of hearing or of the function of ear, or hearing system, due directly \\nor secondarily to pathology or injury; it may be either temporary or permanent."], "hearing protection": ["The total of measures and devices implemented to preserve persons from harm to the faculty of perceiving sound."], "heater": ["An apparatus that heats or provides heat."], "heathland": ["An area with poor acid soil, typically dominated by ling (Calluna) or heaths (Erica)."], "heating": ["A system for supplying heat to a building."], "heat pump": ["A device which transfers heat from a cooler reservoir to a hotter one, expending mechanical energy in the process."], "heat supply": ["The provision of heating fuel, coal or other heating source materials, or the amount of heating capacity, for the use of a municipality, or other heat user.\\n(Source: ISEP)"], "heavy metal": ["A metal whose specific gravity is approximately 5.0 kg/l or higher."], "hedge": ["A line of closely planted bushes or shrubs, marking the boundaries of a property."], "herbicide": ["A chemical that controls or destroys undesirable plants."], "herbivore": ["An animal that feeds on plants."], "heterocyclic compound": ["Compound in which the ring structure is a combination of more than one kind of atom."], "higher education": ["Study beyond secondary school at an institution that offers programs terminating in undergraduate and graduate degrees.\\n(Source: COE)"], "high mountain": ["The mountain part that exceeds the 1500 meters of altitude."], "high-speed railway": ["Railway track designed so that trains can travel at speeds in excess of 200 km/h."], "high-speed train": ["Train travelling at maximum speeds of 320 km/h on special high-speed rail lines."], "high voltage line": ["An electric line with a voltage on the order of thousands of volts."], "highway": ["A public road especially an important road that joins cities or towns together.", "A wide road built for fast moving traffic travelling long distances, with a limited number of points at which drivers can enter and leave it."], "hill": ["A natural elevation of the land surface, usually rounded."], "historical research": ["The study of events in relation to their development over time.\\n(Source: GOOD)"], "historical site": ["Place where significant historical events occurred and which is important to an indigenous culture or a community.\\n(Source: LANDYa)"], "history": ["A systematic written account comprising a chronological record of events (as affecting a city, state, nation, institution, science, or art) and usually including a philosophical explanation of the cause and origin of such events.", "The scientific study of events from a time-related perspective and the passing on of the knowledge obtained by this study for the purpose of education.", "the past events concerned in the development of a particular place, object, subject etc."], "holiday": ["A day on which work is suspended by law or custom, such as a religious festival, bank holiday, etc."], "horse": ["A large animal with four legs of the Equus caballus species which people ride on or use for carrying things or pulling vehicles."], "horticulture": ["The art and science of growing plants."], "hospital": ["A place where people who are ill or injured are treated and taken care of by doctors and nurses."], "hospital waste": ["Solid waste, both biological and non-biological, produced by hospitals and discarded and not intended for further use."], "hotel industry": ["The industry related with the provision of lodging and usually meals and other services for travelers and other paying guests."], "hot water": ["Water that has been heated."], "household": ["A group of persons sharing a home or living space, who aggregate and share their incomes, as evidenced by the fact that they regularly take meals together.", "Found in or having its origin in a home."], "housing": ["Dwelling-houses collectively."], "housing density": ["The number of dwelling units or the residential population of a given geographic area."], "housing improvement": ["An addition, renovation or repair to a place of residence that increases its aesthetic, functional or financial value."], "housing quality standard": ["A norm or measure applicable in legal cases and considered to reflect a relatively high grade or level of excellence in the construction, maintenance, operation, occupancy, use or appearance of dwelling units.\\n(Source: BLD)"], "human biology": ["The study of human life and character."], "human ecology": ["The study of the growth, distribution, and organization of human communities relative to their interrelationships with other humans and other species and with their environment."], "human health": ["The avoidance of disease and injury and the promotion of normalcy through efficient use of the environment, a properly functioning society, and an inner sense of well-being.\\n(Source: KOREN)"], "human-made disaster": ["Violent, sudden and destructive change in the environment caused by man."], "human pathology": ["Branch of medicine concerned with the cause, origin, and nature of disease, including the changes occurring as a result of disease.\\n(Source: CED)"], "human physiology": ["A branch of biological sciences that studies the functions of organs and tissues in human beings.\\n(Source: OMD / WOR)"], "human settlement": ["Cities, towns, villages, and other concentrations of human populations which inhabit a given segment or area of the environment."], "humus": ["The more or less decomposed organic matter in the soil.", "Earth formed by the decay of vegetable matter.", "A popular dish in the Middle East that consists of cooked, mashed chickpeas, blended with tahini, olive oil, lemon juice, salt and garlic."], "hunting": ["The pursuit and killing or capture of wild animals."], "hurricane": ["A tropical cyclone of great intensity; any wind reaching a speed of more than 73 miles per hour (117 kilometers per hour) is said to have hurricane force."], "hydraulic engineering": ["A branch of civil engineering concerned with the design, erection, and construction of sewage disposal plants, waterworks, dams, water-operated power plants and such."], "hydraulics": ["The branch of science and technology concerned with the mechanics of fluids, especially liquids."], "hydrobiology": ["Study of organisms living in water.\\n(Source: ZINZAN)"], "hydrocarbon": ["A very large group of chemical compounds composed only of carbon and hydrogen.\\n(Source: MGH)"], "hydrochloric acid": ["A solution of hydrogen chloride gas in water."], "hydroculture": ["Cultivation of plants without soil but in sand or vermiculite or other granular material, using a liquid solution of nutrients to feed them."], "hydroelectric power plant": ["Power station which operates with the free renewable source of energy provided by falling water."], "hydrogen": ["A flammable colourless gas that is the lightest and most abundant element in the universe. It occurs mainly in water and in most organic compounds and is used in the production of ammonia and other chemicals, in the hydrogenation of fats and oils, and in welding."], "hydrogeology": ["The science dealing with the occurrence of surface and ground water, its utilization, and its functions in modifying the earth, primarily by erosion and deposition."], "hydrography": ["Science which deals with the measurement and description of the physical features of the oceans, lakes, rivers, and their adjoining coastal areas, with particular reference to their control and utilization."], "hydrologic balance": ["An accounting of the inflow to, outflow from, and storage in a hydrologic unit such as a drainage basin, aquifer, soil zone, lake or reservoir; the relationship between evaporation, precipitation, runoff, and the change in water storage."], "hydrologic cycle": ["The movement of water between the oceans, ground surface and atmosphere by evaporation, precipitation and the activity of living organisms."], "hydrology": ["The science that treats the occurrence, circulation, distribution, and properties of the waters of the earth, and their reaction with the environment.", "The science that treats the occurrence, circulation, distribution, and properties of the waters of the earth, and their reaction with the environment.\\n(Source: MGH)"], "hydrolysis": ["Decomposition or alteration of a chemical substance by water; in aqueous solutions of electrolytes, the reactions of cations with water to produce a weak base or of anions to produce a weak acid.\\n(Source: MGH)"], "hydrometeorology": ["That part of meteorology of direct concern to hydrologic problems, particularly to flood control, hydroelectric power, irrigation, and similar fields of engineering and water resource.\\n(Source: ZINZAN)"], "water power": ["Energy obtained from natural or artificial waterfalls, either directly by turning a water wheel or turbine, or indirectly by generating electricity in a dynamo driven by a turbine."], "hydrosphere": ["All the waters of the Earth, as distinguished from the rocks, living things , and the air."], "hygiene": ["A set of practices associated with the preservation of health, the prevention and fighting of diseases and healthy living.", "The study and use of practical measures for the preservation of public health."], "hymenopteran": ["Insects including bees, wasps, ants, and sawflies, having two pair of membranous wings and an ovipositor specialized for stinging, sawing or piercing.\\n(Source: CED)"], "ice": ["The dense substance formed by the freezing of water to the solid state; it commonly occurs in the form of hexagonal crystals.", "To cool with ice.", "An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "iceberg": ["A large mass of detached land ice floating in the sea or stranded in shallow water."], "ideology": ["A body of ideas that reflects the beliefs and interest of a nation, political system, etc. and underlies political action.\\n(Source: CED)"], "image processing": ["The process of converting 'raw' remotely sensed data into a usable form through the application of various transformations such as supervised and unsupervised classification schemes.\\n(Source: FORUMT)"], "immission": ["The reception of material, such as pollutants, by the environment and from any source."], "immission control": ["Legislative and administrative procedures aimed at reducing the damage caused by emissions. Pollution control programmes are normally based on human-oriented acceptable dose limits. A very important measure concerns the organisation of an emission inventory.\\n(Source: GOODa)"], "immission control law": ["A law that protects the residents' health and resources of a region by limiting air pollution."], "immission damage": ["Damage caused by pollution from a distinct source of emission."], "immission forecast": ["The prediction of immissions is calculated on the basis of the pollutant load, the source height, the wind speed and the dispersion coefficient."], "immune system": ["A body system that helps an organism to resist disease, through the activities of specialised blood cells or antibodies produced by them in response to natural exposure or inoculation.\\n(Source: KOREN / CED)"], "immunity": ["The ability of an organism to resist disease or toxins by natural or artificial means."], "immunoassay": ["Any of several methods for the quantitative determination of chemical substances such as hormones, drugs, and certain proteins that utilize the highly specific binding between an antigen and an antibody."], "immunological disease": ["The disruption of the complex system of interacting cells, cell products and cell-forming tissues that protect the body from pathogens, destroys infected and malignant cells and removes cellular debris.\\n(Source: SMD / RHW)"], "immunology": ["A branch of biology concerned with the native or acquired resistance of higher animal forms and humans to infections."], "impactor": ["Instrument which samples atmospheric suspensoids by impaction; such instruments consist of a housing which constrains the air flow past a sensitized sampling plate."], "import": ["The act of bringing goods and merchandise into a country from a foreign country.", "To bring (something) in from a foreign country, especially for sale or trade.", "An object brought from a foreign country, especially for sale or trade."], "impoverishment": ["The state of having little or no money and few or no material possessions"], "impulsive noise": ["Noise characterized by transient short-duration disturbances distributed essentially uniformly over the useful passband of a transmission system."], "incineration": ["The burning of a dead body."], "incineration of waste": ["The controlled burning of solid, liquid, or gaseous combustible wastes to produce gases and solid residues containing little or no combustible material in order to reduce the bulk of the original waste materials."], "incinerator": ["Device which burns waste."], "slope": ["The inclined surface of any part of the Earth's surface, as a hillslope; also, a broad part of a continent descending toward an ocean, as the Pacific slope.\\n(Source: BJGEO)", "To be at an angle; to move downwards."], "income": ["The gain derived from capital, from labour or effort, or both combined, including profit or gain through sale or conversion of capital.", "Compensation for the selling of goods and services.", "Payment received for goods or services or coming from other sources as for instance, investments.", "Money that a person or an institution obtains."], "incorporation": ["The act of incorporating a substance to another substance."], "indemnity": ["Financial compensation, reimbursement or security for damages or loss offered by a government, insurance policy or contractual agreement under specified conditions and for specific casualties."], "Indian Ocean": ["A body of water between the continents of Africa, Antarctica, Asia and Australia including the Bay of Bengal in the east and the Arabian Sea (with the Red Sea, the Gulf of Aden and the Persian Gulf) in the west, and containing several islands and island chains, such as the Andaman, Nicobar and Seychelles."], "indicator": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "indigenous forest": ["Forests which are native to a given area."], "indoor environment": ["Environment situated in the inside of a house or other building."], "industrial area": ["Areas allocated for industry within a town-planning scheme or environmental plan. The range of industries accommodated in a plan may include: light industry, service industry, general industry, hazardous, noxious or offensive industry, waterfront industry, extractive industry. Standards are usually defined for industrial areas relating to access and roads, drainage, car parking, aesthetics, landscaping, buffer zones, noise levels, and air and water pollution.\\n(Source: GILP96)"], "industrial medicine": ["The branch of medicine which deals with the relationship of humans to their occupations, for the purpose of the prevention of disease and injury and the promotion of optimal health, productivity, and social adjustment."], "industrial process": ["Procedures involving chemical or mechanical steps to aid in the manufacture of items, usually carried out on a very large scale."], "industrial site": ["The location for the individual manufacturing firm."], "industrial sludge": ["Sludge produced as a result of industrial production processes or manufacturing."], "industrial society": ["A large-scale community with diverse manufacturing sectors and an infrastructure and economy based on the science, technology and instrumental rationality of the modern West."], "industrial waste": ["Waste materials discarded from industrial operations, or derived from manufacturing processes; may be solid, sludge (wet solids) or liquid wastes and may or may not be considered hazardous.\\n(Source: HMD / ISEP)"], "industry": ["A group of establishments engaged in the same or similar kinds of economic activities. They produce a range of commodities that are sold with the expectation of recovering the total cost of production."], "inert waste": ["Wastes that do not undergo any significant physical, chemical, or biological transformations when deposited in a landfill."], "infant mortality": ["The rate of deaths occurring in the first year of life for a given population."], "infection": ["The entry and development or multiplication of an infectious agent in the body of a living organism.", "Process in which a disease is transmitted."], "infectious disease": ["Pathogenic condition resulting from invasion of an host by a pathogen that propagates causing infection.", "A disease caused by a microorganism or other agent, such as a bacterium, fungus, or virus, that enters the body of an organism."], "infestation of crops": ["Invasion of crop by parasites."], "infiltration": ["Movement of water through the soil surface into the ground."], "inflammable substance": ["Substance liable to catch fire."], "informatics": ["Science and technique of data elaboration and of automatic treatment of information."], "information": ["All facts, ideas or imaginative works of the mind which have been communicated, published or distributed formally or informally in any format, or the knowledge that is communicated or received."], "information service": ["An organized system of providing assistance or aid to individuals who are seeking information, such as by using databases and other information sources to communicate or supply knowledge or factual data.\\n(Source: RHW / OMD)"], "information system": ["Any coordinated assemblage of persons, devices and institutions used for communicating or exchanging knowledge or data, such as by simple verbal communication, or by completely computerized methods of storing, searching and retrieving information.\\n(Source: MHD)"], "information technology": ["The systems, equipment, components and software required to ensure the retrieval, processing and storage of information in all centres of human activity (home, office, factory, etc.), the application of which generally requires the use of electronics or similar technology."], "infraction": ["A breach, violation, or infringement; as of a law, a contract, a right or duty.", "A crime less serious than a felony."], "infrared radiation": ["Electromagnetic radiation whose wavelengths lie in the range from 0.75 or 0.8 micrometer to 1000 micrometers."], "infrasound": ["Vibrations of the air at frequencies too low to be perceived as sound by the human ear, below about 15 hertz."], "infrastructure": ["The basic network or foundation of capital facilities or community investments which are necessary to support economic and community activities."], "inhabitant": ["A person occupying a region, town, house, country, etc.", "A human, officially being inhabitant of certain area inside well defined, and precise, borders - usually seen from a standpoint of census, government, register, etc."], "injury": ["A stress upon an organism that disrupts the structure or function and results in a pathological process."], "ink": ["A dispersion of a pigment or a solution of a dye in a carrier vehicle, yielding a fluid, paste, or powder to be applied to and dried on a substrate; writing, marking, drawing, and printing inks are applied by several methods to paper, metal, plastic, wood, glass, fabric, or other substrate."], "inland fishery": ["Fishing in lakes, streams, etc."], "inland navigation": ["The navigation of inland waterways, i.e. navigable rivers, canals, sounds, lakes, inlets, etc."], "inland water": ["A lake, river, or other body of water wholly within the boundaries of a state.\\n(Source: MGH)"], "inland waterways transport": ["Transportation of persons and goods by boats travelling on rivers, channels or lakes."], "innovation": ["Something newly introduced, such as a new method or device."], "inorganic chemistry": ["A branch of chemistry dealing with the chemical reactions and properties of all inorganic matter.\\n(Source: LEE)"], "inorganic substance": ["Chemical compound that does not contain carbon as the principal element (excepting carbonates, cyanides, and cyanates).\\n(Source: MGH)"], "insecticide": ["Any chemical agent used to destroy invertebrate pests."], "insectivore": ["(Insectivora) Order of placental mammals, being typically small, with simple teeth, and feeding on invertebrates.", "An animal with a diet that consists chiefly of insects and similar small creatures."], "in situ": ["In the natural or normal place."], "inspection": ["An official examination and evaluation of the extent to which specified goals, objectives, standards, policies or procedures of an agency, organization, department or unit have been met properly."], "inspection service": ["An organization designated to look into, supervise and report upon, the staff members and workings of some institution or department, or the conforming to laws and regulations by a segment of society or other group.\\n(Source: OED)"], "sound insulation material": ["Material used to reduce the transmission of sound to or from a body, device, room, etc."], "insurance": ["An agreement of providing financial protection contingencies, such as death, loss or damage and involving payment of regular premiums in return for a policy guaranteeing such protection.", "The business of providing a financial protection against most losses or harm to a person, property or a firm in return for premiums paid."], "insurance coverage": ["The protection provided against risks or a risk, often as specified by the type of protection or the item being protected."], "intensive farming": ["Farming in which as much use is made of the land as possible by growing crops close together or by growing several crops in a year or by using large amounts of fertilizers.\\n(Source: PHC)"], "interaction of pesticides": ["The enhancement of activity of pesticides when they are used in combination with others.\\n(Source: PARCOR)"], "interchange of electronic data": ["A transference of binary coded information items between two or more computers across any communications channel capable of carrying electromagnetic signals."], "interdisciplinary research": ["The utilisation, combination and coordination of two or more appropriate disciplines, technologies and humanities in an integrated approach toward problems."], "interest": ["A sum paid or charged for the use of money or for borrowing money over a given time period.", "A great attention and concern from someone or something.", "That which affects one's welfare or happiness.", "To attract attention or concern; to excite the curiosity of; to engage the interest of.", "To be on the mind of.", "To be of importance or consequence."], "interest group": ["A group of people who share common traits, attitudes, beliefs or objectives and who have formed a formal organization to serve specific concerns of the membership."], "interlaboratory comparison": ["Tests performed at the same time in different laboratories to validate the quality of the results."], "international agreement": ["Cooperation in international efforts to support global goals."], "international competitiveness": ["The ability of firms to strive with rivals in the production and sale of commodities in worldwide markets.\\n(Source: ODE / OED)"], "international convention": ["Treaties and other agreements of a contractual character between different countries or organizations of states creating legal rights and obligations between the parties."], "International Court of Justice": ["Judicial arm of the United Nations. It has jurisdiction to give advisory opinions on matters of law and treaty construction when requested by the General Assembly, Security Council or any other international agency authorised by the General Assembly to petition for such opinion. It has jurisdiction, also, to settle legal disputes between nations when voluntarily submitted to it.\\n(Source: BLACK)"], "international law": ["The system of law regulating the interrelationship of sovereign states and their rights and duties with regard to one another."], "international safety": ["Freedom from danger or the quality of averting risk of harm to persons, property or the environment shared across one or more national boundaries; consequently, the combined efforts of more than one nation to achieve or preserve that state.\\n(Source: OED / RHW)"], "international trade": ["The flow of commodities and goods between nations."], "interpretation method": ["Method employed in the assessment of the meaning and significance of data, results, facts, etc."], "intertidal zone": ["The area between land and sea which is regularly exposed to the air by the tidal movement of the sea."], "inventory": ["A detailed list of articles, goods, property, etc."], "inversion": ["A reversal in the usual direction of a process, as in the change of density of water at 4\u00b0 C.\\n(Source: PITT)"], "inversion layer": ["The atmosphere layer through which an inversion occurs."], "invertebrate": ["Any animal lacking a backbone, including all species not classified as vertebrates.", "Lacking a backbone."], "investment": ["Any item of value purchased for profitable return, as income, interest or capital appreciation."], "in vitro assay": ["Assay taking place in an artificial environment."], "in vivo assay": ["Experiment that is carried out in the living organism."], "iodine": ["A nonmetallic halogen element; the poisonous, corrosive dark plates or granules are readily sublimed; insoluble in water, soluble in common solvents; used as germicide and antiseptic, in dyes, tinctures, and pharmaceuticals, in engraving lithography, and as a catalyst and analytical reagent."], "ion exchange": ["The process in which ions are exchanged between a solution and an insoluble solid, usually a resin."], "ion exchanger": ["A permanent insoluble material (usually a synthetic resin) which contains ions that will exchange reversibly with other ions in a surrounding solution."], "ionosphere": ["A region of the earth's atmosphere, extending from about 60 to 1000 kilometers above the earth's surface, in which there is a high concentration of free electrons and ions formed as a result of ionizing radiation entering the atmosphere from space."], "ion": ["An electrically charged atom or group of atoms formed by the loss or gain of one or more electrons."], "iron": ["A malleable ductile silvery-white ferromagnetic metallic element with symbol Fe and atomic number 26, occurring principally in haematite and magnetite. It is widely used for structural and engineering purposes.", "Made out of iron.", "A small appliance used in ironing to remove wrinkles from fabric.", "To remove wrinkles from fabric."], "irradiation": ["Exposure to or treatment with light or other electromagnetic radiation or with beams of particles."], "irrigation": ["The act of supplying land with water so that crops and plants will grow or grow stronger."], "irrigation canal": ["A permanent irrigation conduit constructed to convey water from the source of supply to one or more farms."], "irrigation farming": ["Farming based on the artificial distribution and application of water to arable land to initiate and maintain plant growth.\\n(Source: GOODa)"], "island": ["A land mass, especially one smaller than a continent, entirely surrounded by water.", "A barrier on roads and highways between the opposing flows of traffic, usually covered with vegetation.", "Area in the middle of a road where pedestrians can wait while crossing."], "island ecosystem": ["Unique but fragile and vulnerable ecosystem due to the fact that the evolution of their flora and fauna has taken place in relative isolation. Many remote islands have some of the most unique flora in the world; some have species of plants and animals that are not found anywhere else, which have evolved in a specialized way, sheltered from the fierce competition that species face on mainland."], "isomer": ["Two or more compounds having the same molecular formula, but a different arrangement of atoms within the molecule. (Source: CED / MGH)", "One of two or more chemical substances having the same elementary percentage composition and molecular weight but differing in structure, and therefore in properties; there are many ways in which such structural differences occur.\\n(Source: CED / MGH)"], "isotope": ["Any of two or more atoms with the same atomic number that contain different numbers of neutrons."], "ivory": ["The fine-grained creamy-white dentine forming the tusks of elephants, and the teeth or tusks of certain other large animals such as the walrus; it has long been esteemed for a wide variety of ornamental articles.\\n(Source: BJGEO)"], "joint debtor": ["Persons united in a joint liability or indebtedness. Two or more persons jointly liable for the same debt."], "judicial assistance": ["A program sponsored or administered by a government to guide through and represent in court proceedings persons who are in financial need and cannot afford private counsel.\\n(Source: BLD)"], "judicial body": ["Any public organization or branch of government responsible for the administration of justice or the enforcement of laws.\\n(Source: BLD)"], "jurisdiction": ["The power of a court to hear and decide a case or give a certain punishment or sanction.", "The area or territory where a particular person or group of people (such as a court) has the right to excersise their legal authority."], "jurisprudence": ["The science or philosophy of law."], "karst": ["A geological formation resulting from the erosion of carbonate rocks."], "stocking": ["A soft garment worn on the foot and lower leg, usually knit or woven, worn under shoes or other footwear."], "kerosene": ["Higly refined kerosene used as fuel for jet engines.", "Higly refined sulphurless kerosene used for kerosene lamps, lanterns and portable stoves and produces very little soot."], "laboratory": ["A room or building with scientific equipment for doing scientific tests or for teaching science, or a place where chemicals or medicines are produced."], "laboratory experiment": ["Experimental tests or investigations carried out in a laboratory.\\n(Source: CEDa)"], "laboratory research": ["Research carried out in a laboratory for testing chemical substances, growing tissues in cultures, or performing microbiological, biochemical, hematological, microscopical, immunological, parasitological tests, etc.\\n(Source: PHC)"], "laboratory technique": ["The sum of procedures used on natural sciences such as chemistry, biology, physics in order to conduct an experiment, all of them following the scientific method."], "laboratory waste": ["Discarded materials produced by analytical and research activities in a laboratory.\\n(Source: ERG)"], "lacquer": ["A material which contains a substantial quantity of a cellulose derivative, most commonly nitrocellulose but sometimes a cellulose ester, such as cellulose acetate or cellulose butyrate, or a cellulose ether such as ethyl cellulose; used to give a glossy finish, especially on brass and other bright metals."], "lagoon": ["A body of water cut off from the open sea by coral reefs or sand bars."], "lake basin": ["The depression in the Earth's surface occupied or formerly occupied by a lake."], "lake pollution": ["The direct or indirect human alteration of the biological, physical, chemical or radiological integrity of lake water, or a lake ecosystem.\\n(Source: Landy)"], "lake": ["An enclosed body of water, usually but not necessarily fresh water, from which the sea is excluded."], "lamp": ["A device for producing light."], "land": ["A specified geographical tract of the Earth's surface including all its attributes, comprising its geology, superficial deposits, topography, hydrology, soils, flora and fauna, together with the results of past and present human activity, to the extent that these attributes exert a significant influence on the present and future land utilization.\\n(Source: WHIT)", "The range occupied by a community or other group.", "To descend to a surface, especially from the air; to arrive on shore.", "The part of Earth which is not covered by oceans or other bodies of water.", "A partitioned and measurable area on the Earth which is owned.", "Area that is suitable for farming.", "In a compact disc or similar recording medium, an area of the medium which does not have pits.", "The space between the rifling grooves in a gun.", "A strip area in a field between furrows made for irrigation.", "The geographic area under the control of a political state.", "Territorial possessions.", "To descend, reach or come to rest.", "To deliver (a blow)."], "land and property register": ["The system of registering certain legal estates or interests in land. It describes the land and any additional rights incidental to it, such as rights of way over adjoining land.\\n(Source: DICLAW)"], "land clearing": ["Removal of trees, undergrowth, etc. in preparation for ploughing, building, etc."], "land consolidation": ["Joining small plots of land together to form larger farms or large fields."], "land cover": ["Interface between the earth's crust and the atmosphere made of a combination of vegetation, soil, rock, water and human-made structures."], "land ecology": ["Study of the relationship between terrestrial organisms and their environment."], "landfill": ["A site where garbage is collected and buried."], "landfill covering": ["The protective shielding, consisting of soil or some other material, that encloses disposal sites for waste to minimize the chance of releasing hazardous substances into the environment."], "landfill degasification": ["Landfill gas is highly dangerous as methane is highly explosive; therefore it must be controlled at all operational landfill sites, whether by active or passive ventilation or both especially in the case of deep sites. There exist venting systems for shallow and deep sites respectively.\\n(Source: PORT)"], "landform": ["Any physical, recognizable form or feature of the Earth's surface, having a characteristic shape and produced by natural causes; it includes major forms such as plane, plateau and mountain, and minor forms such as hill, valley, slope, esker, and dune. Taken together the landforms make up the surface configuration of the Earth's.\\n(Source: BJGEO)"], "land mammal": ["Mammal that lives on shore."], "land planning": ["The activity of designing, organizing or preparing for the future use of solid areas of the earth's surface, especially regions valued for natural resources, utilized as agricultural resources or considered for human settlement.\\n(Source: RHW)"], "land register": ["A public register containing information on the land and landowners."], "landscape": ["The traits, patterns, and structure of a specific geographic area.", "A mode of printing where the horizontal sides are longer than the vertical sides."], "landscape architecture": ["The creation, development, and decorative planting of gardens, grounds, parks, and other outdoor spaces."], "landscape conservation": ["The safeguarding, for public enjoyment, of landscape and of opportunities for outdoor recreation, tourism and similar activities; the concept includes the preservation and enhancement not only of what has been inherited but the provision of new amenities and facilities."], "landscape ecology": ["The study of landscapes taking account of the ecology of their biological populations. The subjects thus embraces geomorphology and ecology and is applied to the design and architecture of landscapes.\\n(Source: ALL2)"], "landslide": ["Mass-movement landforms and processes involving the downslope transport, under gravitationary influence of soil and rock material en masse."], "land value": ["The monetary or material worth in commerce or trade of an area of ground considered as property."], "laser": ["A device that produces a powerful, highly directional, monochromatic, coherent beam of light."], "laundering": ["The act of washing and ironing clothes, linen, etc."], "law amendment": ["An alteration of or addition to any statute with legal force that, if approved by the appropriate legislative authority, supersedes the original statute."], "law enforcement": ["Any variety of activities associated with promoting compliance and obedience to the binding rules of a state, especially the prevention, investigation, apprehension or detention of individuals suspected or convicted of violating those rules."], "leaching": ["1) The process of separating a liquid from a solid (as in waste liquid by percolation into the surrounding soil. \\n2) Extraction of soluble components of a solid mixture by percolating a solvent through it.\\n3) To lose or cause to lose soluble substances by the action of a percolating liquid."], "lead": ["A heavy toxic bluish-white metallic element with symbol Pb and atomic number 82 that is highly malleable; occurs principally as galena and is used in alloys, accumulators, cable sheaths, paints, and as a radiation shield.", "To be ahead of others, e.g., in a race.", "The distance that a shooter aims ahead of a moving target in order to hit it with the projectile.", "To treat with lead.", "To move ahead (of others) in time or space.", "A small stick of graphite used in pencil that leaves marks when rubbed against a surface."], "lead compound": ["A chemical compound present as gasoline additives, in paint, ceramic products, roofing, caulking, electrical applications, tubes, or containers. Lead exposure may be due to air, water, food, or soil. Lead in the air is primarily due to lead-based fuels and the combustion of solid waste, coal, oils, and emissions from alkyl lead manufacturers, wind blown dust volcanoes, the burning of lead-painted surfaces, and cigarette smoke. Lead in drinking water comes from leaching from lead pipes, connectors, and solder in both the distribution system and household plumbing.\\n(Source: KOREN)"], "lead level in blood": ["A measure of the amount of lead or lead salts absorbed by the body as a possible sign of acute or chronic lead poisoning, which can affect the nervous, digestive or muscular systems."], "leaf": ["The main organ of photosynthesis and transpiration in higher plants, usually consisting of a flat green blade attached to the stem directly or by a stalk.", "A sheet of a book, magazine, etc (consisting of two pages, one on each face of the leaf)."], "leakage": ["The accidental, uncontrolled discharge or seepage of liquids, gases and other substances to unintended and unwanted locations, frequently causing risks of damage or harm to persons, property or the environment."], "leather": ["The dressed or tanned hide of an animal, usually with the hair removed."], "leather industry": ["Industry for the production of leather goods such as garments, bags, etc."], "legal basis": ["The fundamental law or judicial precedent that warrants or supports a subsequent decision or action by any governmental, corporate or private entity."], "legal regulation": ["Any order or rule issued by a government stipulating its procedures for the creation, execution or adjudication of laws."], "legal remedy": ["The means by which a right is enforced or the violation of a right is prevented, redressed, or compensated.\\n(Source: BLACK)"], "legal text": ["The exact wording or language of a law or other document in conformity with the law or having the authority of law.\\n(Source: BLD)"], "legislation": ["The act or process of making laws."], "legislative authority": ["The power of a deliberative assembly of persons or delegates to bring a bill, resolution or special act to an official, legally binding status.\\n(Source: RHW)"], "legislative competence": ["The skill, knowledge, qualification, capacity or authority to make, give or enact rules with binding force upon a population or jurisdiction."], "legislature": ["The department, assembly, or body of persons that makes statutory laws for a state or nation."], "leisure time": ["Time free from work or other duties; spare time."], "lepidopteran": ["Any insect of the order Lepidoptera that has a slender body with clubbed antennae and typically rests with the wings (which are often brightly coloured) closed over the back."], "levy": ["A ratable portion of the produce of the property and labor of the individual citizens, taken by the nation, in the exercise of its sovereign rights, for the support of government, for the administration of the laws, and as the means for continuing in operation the various legitimate functions of the state."], "lexicon": ["The vocabulary of a particular sphere of activity, region, social class or individual, or the total set of morphemes or meaningful units of a language and its words."], "liability": ["Subjection to a legal obligation. Liability is civil or criminal according to whether it is enforced by the civil or criminal courts.", "Responsibility to someone or for some activity.", "An obligation to pay money to another party.", "The quality of being something that holds you back."], "library": ["Place where books and other literary materials are kept.", "A collection of subroutines used to develop software."], "lichen": ["Composite organisms formed by the symbiosis between species of fungi and an algae."], "life cycle": ["The phases, changes, or stages through which an organism passes throughout its lifetime.", "The useful life of a product or system; the developmental history of an individual or group in society."], "life science": ["A science based on living organisms collectively."], "lifestyle": ["The particular attitudes, habits or behaviour associated with an individual or group."], "light": ["A device for producing light.", "Electromagnetic radiation that is capable of causing a visual sensation.", "To start (a fire).", "To give light to (something).", "Of low weight.", "Object, natural or artificial, that produces light.", "Having colors relat\u0131vely near white.", "(of the military or industry) using (or being) relatively small or light weapons or equipment.", "Low in degree or quantity or number (e.g. of rain, snow, accent).", "Psychologically light; especially free from sadness or troubles.", "Low in fat, calories, alcohol, salt, etc.", "(used of soil) loose and large-grained in consistency."], "lighting": ["The supply of illumination in streets or dwellings."], "separator of light liquids": ["A mechanical device for separating and removing residues from fuel and lubricating oil from waste water coming from filling stations and industrial plants in order to avoid pollution of water bodies; this system is based on the different specific weights of water and fuel residues that float on the water and can be easily removed."], "lignite": ["Coal of relatively recent origin consisting of accumulated layers of partially decomposed vegetation, intermediate between peat and bituminous coal; often contains patterns from the wood from which it formed.\\n(Source: MGH / CED / WRIGHT)"], "lignite mining": ["Extraction of brown coal from natural deposits; lignite is a brownish-black solid fuel in the second stage in the development of coal. It has a little over half the heating value of bituminous or anthracite coal.\\n(Source: KORENa)"], "lime": ["Any of various mineral and industrial forms of calcium oxide differing chiefly in water content and percentage of constituent such as silica, alumina and iron.", "A green citrus fruit"], "limestone": ["A sedimentary rock consisting chiefly of calcium carbonate, primarily in the form of the mineral calcite and with or without magnesium carbonate."], "limnology": ["The study of bodies of fresh water with reference to their plant and animal life, physical properties, geographical features, etc.\\n(Source: CED)"], "linear source of sound": ["Point noise sources placed one after the other one as, for instance, in a row of cars moving on a road.\\n(Source: VALAMB)"], "line source": ["A source of air, noise, water contamination or electromagnetic radiation that emanates from a linear source such as a road."], "lipid": ["One of a class of compounds which contain long-chain aliphatic hydrocarbons and their derivatives, such as fatty acids, alcohols, amines, amino alcohols, and aldehydes; includes waxes, fats, and derived compounds.\\n(Source: MGH)"], "liquefied gas": ["A gaseous compound or mixture converted to the liquid phase by cooling or compression; examples are liquefied petroleum gas (LPG), liquefied natural gas (LNG), liquid oxygen, and liquid ammonia."], "liquid manure": ["Any fertilizer substance with a moisture content of over ninety percent, usually consisting of animal excrement with water added.", "Liquid excrements of animals and people, accumulated for reuse as fertilizer."], "liquid state": ["A state of matter intermediate between that of crystalline substances and gases in which a substance has the capacity to flow under extremely small shear stresses and conforms to the shape of a confining vessel, but is relatively incompressible, lacks the capacity to expand without limit, and can posses a free surface."], "literature": ["Written material such as poetry, novels, essays, especially works of imagination characterized by excellence of style and expression and by themes of general or enduring interest."], "literature data bank": ["A fund of information on a particular subject or group of related subjects, divided into discrete documents and usually stored in and used with a computer system.\\n(Source: RHW)"], "literature study": ["The identification, description, analysis and classification of books and other materials used or consulted in the preparation of a work.\\n(Source: WEBSTE)"], "lithosphere": ["The solid portion of the Earth, as compared with the atmosphere and the hydrosphere.\\n(Source: BJGEO)"], "litter": ["Straw, hay or similar material used as bedding by animals.", "Small pieces of garbage, such as cans, bottles and wrappings, that people have left in a public place.", "A seat mounted on a frame with two poles on which a person can be carried."], "littoral": ["The intertidal zone of the seashore."], "livestock": ["Cattle, horses, and similar animals kept for domestic use especially on a farm."], "livestock breeding": ["The raising of livestock by crossing different varieties to obtain new varieties with desired characteristics."], "livestock farming": ["Breeding of cattle, horses and similar animals."], "living space": ["Any room, structure or area used as a residence and associated with subsistence activities, including sleeping, relaxing or eating."], "lizard": ["(Sauria) A reptile of the order Squamata.", "Any reptile of the suborder Lacertilia, especially those of the family Lacertidae, typically having an elongated body, four limbs, and a small tail: includes the gechos, iguanas, chameleons, monitors, and slow worms."], "load bearing capacity": ["The maximum load that a system can support before failing."], "teleheating": ["The supply of heat, either in the form of steam or hot water, from a central source to a group of buildings."], "local traffic": ["Traffic moving within a city, town, or area and subject to frequent stops, as distinguished from long distance traffic."], "locomotive": ["A self-propelled engine driven by steam, electricity or diesel power and used for drawing trains along railway tracks."], "long-distance traffic": ["Traffic moving over extended areas, great distances and usually not subject to frequent stops."], "long-term effect": ["Effect which will last long after the cause has ceased."], "long-term trend": ["The prevailing tendency or general direction expected for some observed value over a lengthy and extended period of time, often determined by studying and analyzing statistical data."], "lorry": ["A large motor vehicle of more than 3,500 kilograms designed for carrying cargo.", "Any motor vehicle designed for carrying cargo, including vans and pickups.", "Small rail car wihout cover to transport goods out of mines or quarries."], "loss": ["The result of a business operation where overhead costs are greater than the receipts or income.\\n(Source: ISEP / ODE)", "The act of being defeated and losing something, such as a match."], "loss of biotope": ["Destruction of biotopes produced by environmental degradation which in turn is caused by air- or water-borne pollution.\\n(Source: WPR)"], "loudness": ["The magnitude of the physiological sensation produced by a sound, which varies directly with the physical intensity of sound but also depends on frequency of sound and waveform."], "low-cost housing": ["Residences built at minimal expense and designed to keep the rental rate or price of purchase affordable for persons with limited means, usually determined by an annual income level set below the local median."], "Lower House": ["The body of a bicameral legislature composed of representatives elected by the general populace and organized into electorates or districts, each comprising an equal number of citizens.\\n(Source: CIV)"], "low-level flight": ["Flying at low altitude."], "low-level technology": ["Any relatively unsophisticated technical equipment or method with an amplitude or functionality below what is available in a similar or comparable system.\\n(Source: RHW / APD)"], "lubricant": ["A substance used to reduce friction between parts or objects in relative motion.\\n(Source: MGH)"], "luminosity": ["The functional relationship between stellar magnitude and the number and distribution of stars of each magnitude interval. Also known as relative luminosity factor.", "The ability of emitting or reflecting light."], "lye": ["The alkaline solution that is obtained from the leaching of wood ashes.\\n(Source: MGH)"], "lymphatic system": ["A system of vessels and nodes conveying lymph in the vertebrate body, beginning with capillaries in tissue spaces and eventually forming the thoracic ducts which empty in the subclavian veins.\\n(Source: MGH)"], "lysimetry": ["The measurement of the water percolating through soils and the determination of the materials dissolved by the water."], "machine manufacture": ["The making or production of mechanical apparatuses used for commercial or industrial purposes, such as engines and turbines, elevators and conveying equipment, computers and office equipment, and hoists, cranes and industrial trucks."], "macroeconomic goal": ["An aim or objective pertaining to the production, distribution and use of income, wealth and commodities in a country, region or other large area, typically concerned with governmental fiscal and monetary policy as it affects employment, consumption, investment and growth levels.\\n(Source: ODE)"], "macroeconomics": ["Modern economic analysis that is concerned with data inaggregate as opposed to individual form such as national income, consumption and investment."], "magnetic tape": ["A plastic, paper, or metal tape that is coated or impregnated with magnetizable iron oxide particles, used in magnetic recording.\\n(Source: MGH)"], "magnetism": ["A class of physical phenomena associated with moving electricity, including the mutual mechanical forces among magnets and electric currents."], "mailing list": ["A series of addresses or e-mail addresses to which solicited or unsolicited mass mailings can be sent.\\n(Source: RHW)"], "malaria": ["A group of human and animal febrile diseases with a chronic relapsing course caused by hemosporidian blood parasites of the genus Plasmodium, transmitted by the bite of Anopheles mosquito."], "malformation": ["Permanent structural change that may adversely affect survival, development or function.\\n(Source: KOREN)"], "malnutrition": ["Defective nutrition due to inadequate intake of nutrients or to their faulty digestion, assimilation or metabolism."], "mammal": ["Any animal of the Mammalia class, a class of warm-blooded vertebrates having a thoracic diaphragm, a four-chambered heart and in which the females feed the young with their own milk."], "management": ["The management or direction of the affairs of a public or private office, business or organization.", "Government, control, superintendence, physical or manual handling or guidance; act of managing by direction or regulation, or administration, as management of family, or of household, etc.\\n(Source: BLACK)"], "mandate": ["A command or authorization to act in a particular way given by an administrator to a subordinate, a court to a lower court or an electorate to its representative.\\n(Source: RHW)"], "mangrove": ["Any of various tropical evergreen trees or shrubs that grow in shallow coastal water; Plants of the Rhizophoraceae family and/or of the genus Rhizophora."], "mangrove swamp": ["A wet, spongy area of land in tropical climates and along coastal regions that is dominated by mangrove trees and shrubs, particularly red mangroves (Rhizophora), black mangroves (Avicennia) and white mangroves (Laguncularia)."], "man-made climate change": ["Man-made climate changes due to the greenhouse effect and other human activities."], "man-nature relationship": ["The interrelationship between human activity and geographical environment."], "manpower": ["The power generated by a man working."], "manufacturing trade": ["The process or act of exchanging, buying or selling any manufactured product, or the raw materials for any manufacturing process.\\n(Source: RHW / ISEP)"], "manure": ["Animal excreta collected from stables and barnyards with or without litter; used to enrich the soil."], "map": ["A representation, normally on a flat medium, that displays the physical and political features of a surface area of the earth, showing them in their respective forms, sizes and relationships according to some convention of representation.", "The visual representation of a person or an object.", "Representation of the location of datasets in a computer memory to speed up access and visualization."], "mapping": ["The process of making a map of an area; especially the field work necessary for the production of a map.", "Representation of the location of datasets in a computer memory to speed up access and visualization."], "mapping of lichens": ["Maps of lichens distribution indicating air quality. Fruticose lichens (with branched structures well above the surface) are more susceptible to SO2 damage than foliose lichens (whose leaflike thallus lies nearly flat on surface) and both in turn are more susceptible than crustose lichens (which embed their tissue in the cracks of bark, soil, or rocks). The use of morphological lichen types as indicators of air pollution concentrations is well developed.\\n(Source: WESTM)"], "marble": ["Metamorphic rock composed of recrystallized calcite or dolomite."], "marginal land": ["Low quality land the value of whose production barely covers its cultivation costs."], "mariculture": ["Cultivation of marine organisms in their natural habitats, usually for commercial purposes."], "marina": ["A small port that is used for pleasure rather than trade, often with hotels, restaurants and bars."], "marine biology": ["A branch of biology that deals with those living organisms which inhabit the sea.\\n(Source: MGH)"], "marine ecology": ["An integrative science that studies the basic structural and functional relationships within and among living populations and their physical-chemical environments in marine ecosystems. Marine ecology focuses on specific organisms as well as on particular environments or physical settings."], "marine ecosystem": ["Any marine environment, from pond to ocean, in which plants and animals interact with the chemical and physical features of the environment."], "marine engineering": ["The design, construction, installation, operation, and maintenance of main power plants, as well as the associated auxiliary machinery and equipment, for the propulsion of ships.\\n(Source: MGH)"], "marine environment": ["The oceans, seas, bays, estuaries, and other major water bodies, including coastal marine and nearshore zones."], "marine fauna": ["Animals which live in the sea."], "marine fishery": ["The harvest of animals and plants from the ocean to provide food and recreation for people, food for animals, and a variety of organic materials for industry."], "marine geology": ["That aspect of the study of the ocean that deals specifically with the ocean floor and the ocean-continent border, including submarine relief features, the geochemistry and petrology of the sediments and rocks of the ocean bottom and the influence of seawater and waves on the ocean bottom and its materials.\\n(Source: BJGEO)"], "marine pollution": ["Any detrimental alteration of the marine environment caused by the intentional or accidental release of dangerous or toxic substances, such as industrial, commercial and urban waste water."], "marine reserve": ["Sea area where marine wildlife is protected."], "marine sediment": ["Solid fragmental material, originated from weathering of rocks, that has settled down from a state of suspension in the water."], "maritime law": ["That system of law which particularly relates to marine commerce and navigation, to business transacted at sea or relating to navigation, to ships and shipping, to seamen, to the transportation of persons and property by sea, and to marine affairs generally.", "The area of law that deals with ships at sea and the rights of sailors, passengers, and owners of cargo."], "maritime navigation": ["Travelling on the sea by means of boats, ships, etc.\\n(Source: CEDa)"], "marker": ["Small amount of an easily detected substance that can be used to follow and quantify the flow of materials or movement of organisms not otherwise visible or detectable by ordinary means.", "A pen with a wide tip made of felt or fibre.", "An isotope of an element, a small amount of which may be incorporated into a sample of material in order to follow the course of that element through a chemical, biological, or physical process, and thus also follow the larger sample. The tracer may be radioactive, in which case observations are made by measuring the radioactivity.\\n(Source: ECHO1)"], "tracer": ["A minute quantity of radioactive isotope used in medicine or biology to study the chemical changes within living tissues.", "A person or thing that traces."], "market": ["Place of commercial activity in which articles are bought and sold."], "market economy": ["A mixed economy that relies heavily on markets to answer the three basic questions of allocation, but with a modest amount of government involvement. While it is commonly termed capitalism, market-oriented economy is much more descriptive of how the economy is structured.\\n(Source: AMOS2)"], "market form": ["The organizational form or structure of the trade or traffic of a particular commodity.\\n(Source: ISEP / RHW)"], "marketing": ["A related group of business activities whose purpose is to satisfy the demands for goods and services of consumers, businesses and government."], "market research": ["The systematic gathering, recording, computing, and analysing of data about problems relating to the sale and distribution of goods and services for certain time periods."], "marsupial": ["Type of mammal with a pouch in which the young are carried."], "material": ["The substance of which a product is made or composed.", "Worldly, as opposed to spiritual.", "Having to do with matter."], "balance of matter": ["A calculation to inventory material inputs versus outputs in a process system."], "material life cycle": ["All the stages involved in the manufacturing, distribution and retail, use and re-use and maintenance, recycling and waste management of materials."], "materials science": ["The study of the nature, behaviour, and use of materials applied to science and technology."], "mathematical analysis": ["The branch of mathematics most explicitly concerned with the limit process or the concept of convergence; includes the theories of differentiation, integration and measure, infinite series, and analytic functions.\\n(Source: MGH)"], "maximum immission concentration": ["The maximum concentration of air polluting substances in the free environment whose impact when of specified duration and frequency is not objectionable to man, fauna and flora.\\n(Source: ECHO2)"], "meadow": ["Strictly a term for a field of permanent grass used for hay, but also applied to rich, waterside grazing areas that are not suitable for arable cultivation.\\n(Source: GOOD)", "A piece of land covered or cultivated with grass, usually intended to be mown for hay."], "measuring": ["The ability of the analytical method or protocol to quantify as well as identify the presence of the substance in question.\\n(Source: LEE)"], "meat": ["The edible flesh of animals, especially that of mammals."], "mechanical engineering": ["The branch of engineering concerned with the design, construction, and operation of machines.\\n(Source: CED)"], "medical science": ["The science and art of treating and healing."], "medicinal plant": ["Plants having therapeutic properties."], "Mediterranean Area": ["The collective islands and countries of the inland sea between Europe, Africa and Asia that is linked to the Atlantic Ocean at its western end by the Strait of Gibraltar and includes the Tyrrhenian, Adriatic, Aegean and Ionian seas."], "melting": ["A change of the state of a substance from the solid phase to the liquid phase. (Source: MGH)"], "membrane": ["A thin tissue that encloses or lines biological cells, organs, or other structures."], "mercury": ["A heavy silvery-white toxic liquid metallic element with symbol Hg and atomic number 80 occurring principally in cinnabar: used in thermometers, barometers, mercury-vapour lamps, and dental amalgams."], "metabolism": ["All the chemical reactions that take place in a living organism, comprising both anabolism and catabolism."], "metabolite": ["A product of intermediary metabolism."], "metallic mineral": ["Mineral containing metals, such as bauxite, pyrite, etc."], "metal oxide": ["Any binary compound in which oxygen is combined with one or more metal atoms."], "metal plating": ["A thin, adherent layer of metal on an object."], "metal": ["An opaque crystalline material usually of high strength with good electrical and thermal conductivities, ductility and reflectivity."], "meteorological forecasting": ["A branch of science that studies the dynamics of the atmosphere and the direct effects of the atmosphere upon the Earth's surface, oceans and inhabitants, focusing particularly on weather and weather conditions."], "meteorology": ["The science concerned with the atmosphere and its phenomena."], "methane": ["A colourless, odourless, and tasteless gas, lighter than air and reacting violently with chlorine and bromine in sunlight, a chief component of natural gas; used as a source of methanol, acetylene, and carbon monoxide."], "methodology": ["The system of methods and principles used in a particular discipline."], "metropolis": ["A large city, specifically that city in a country which is the seat of government, of ecclesiastical authority, or of commercial activity.\\n(Source: GOOD)"], "microbiological analysis": ["Analysis for the identification of viruses, bacteria, fungi and parasites."], "microbiology": ["The science and study of microorganisms, including protozoans, algae, fungi, bacteria, viruses, and rickettsiae.\\n(Source: MGH)"], "microclimate": ["The local, rather uniform climate of a specific place or habitat, compared with the climate of the entire area of which it is a part."], "microclimate effect": ["An effect on the climate on a small scale, such as a single forest or other bounded area."], "microclimatology": ["The study of a microclimate, including the study of profiles of temperature, moisture and wind in the lowest stratum of air, the effects of the vegetation and of shelterbelts, and the modifying effects of towns and buildings.\\n(Source: MGH)"], "microcomputer": ["A microprocessor combined with input/output interface devices, some type of external memory, and the other elements required to form a working computer system; it is smaller, lower in cost, and usually slower than a minicomputer.\\n(Source: MGH)"], "microecosystem": ["A small-scale, simplified, experimental ecosystem, laboratory- or field- based, which may be: a) derived directly from nature (e.g. when samples of pond water are maintained subsequently by the input of artificial light and gas-exchange); or b) built up from axenic cultures (a culture of an organism that consists of one type of organism only, i.e. that is free from any contaminating organism) until the required conditions of organisms and environment are achieved. Also known as microcosm.\\n(Source: ALL2)"], "microelectronics": ["The technology of constructing circuits and devices in extremely small packages by various techniques.\\n(Source: MGH)"], "microfiltration": ["The separation or removal from a liquid of particulates and microorganisms in the size range of 0.1 to 0.2 microns in diameter."], "micropollutant": ["Pollutant which exists in very small traces in water.\\n(Source: PHC)"], "microscopy": ["The interpretative application of microscope magnification to the study of materials that cannot be properly seen by the unaided eye."], "microwave": ["An electromagnetic wave which has a wavelength between about 0.3 and 30 centimeters, corresponding to frequencies of 1-100 gigahertz; however there are no sharp boundaries between microwaves and infrared and radio waves.", "An appliance for cooking food using microwave energy.", "To cook or heat in a microwave oven."], "animal migration": ["Movements that particular animals carry out regularly often between breeding places and winter feeding grounds."], "migratory bird": ["A bird which migrates in a group."], "migratory species": ["A species that moves from one biome to another for food or to breed."], "military air traffic": ["Air traffic of or relating to the armed forces."], "military zone": ["Area whose utilization is exclusively reserved to the army."], "milk": ["The whitish fluid secreted by the mammary gland for the nourishment of the young; composed of carbohydrates, proteins, fats, mineral salts, vitamins, and antibodies.", "To draw milk from (a mammal, especially a cow)."], "mill": ["A building where grain is crushed into flour.", "An establishment where products are manufactured using industrial methods."], "mine": ["An opening or excavation in the earth for extracting minerals.\\n(Source: MGH)", "An explosive device, concealed under or on the ground and designed to destroy or disable enemy targets as they pass over or near the device.", "To extract from the earth by excavation."], "mineral deposit": ["A mass of naturally occurring mineral material, e.g. metal ores or nonmetallic mineral, usually of economic value, without regard to mode of origin.\\n(Source: BJGEO)"], "mineralogy": ["The science which concerns the study of natural inorganic substances called minerals.\\n(Source: MGH)"], "mineral": ["A naturally occurring substance with a characteristic chemical composition expressed by a chemical formula; may occur as individual crystals or may be disseminated in some other material or rock."], "mineral water": ["Water containing naturally or artificially supplied minerals or gases."], "mining district": ["A district where mineral exploitation is performed."], "mining engineering": ["Engineering concerned with the discovery, development and exploitation of coal, ores, and minerals, as well as the cleaning, sizing and dressing of the product."], "mining geology": ["The study of geologic aspects of mineral deposits, with particular regard to problems associated with mining."], "mining industry": ["A sector of the economy in which an aggregate of commercial enterprises is engaged in the extraction of minerals occurring naturally, often involving quarrying, well operations, milling, exploration and development.\\n(Source: SIC)"], "mining regulation": ["A rule or order prescribed by government or management to promote the safety, legality or ecological responsibility of any aspect of the process or industry of ore extraction.\\n(Source: BLD)"], "ministry": ["The body of top government administrators or other high ranking public officials that are selected by a head of state to manage certain aspects of a state's affairs, as opposed to civil servants whose tenure is unaffected by public changes resulting from democratic elections or some other process."], "minority": ["A group that is different racially, politically, etc. from a larger group of which it is a part."], "miscibility": ["The tendency or capacity of two or more liquids to form a uniform blend, that is, to dissolve in each other; degrees are total miscibility, partial miscibility, and immiscibility.\\n(Source: MGH)"], "mite": ["An order of small Arachnida with rounded bodies. Mites are very abundant in the soil, feeding on plant material and invertebrate animals. Some parasitic mites (e.g. red spider) damage crops and can be serious pests. Others cause diseases in animals. Ticks are blood-suckers, some being vectors of diseases such as Rocky Mountain spotted fever in humans and fowls, and louping ill in cattle and sheep.\\n(Source: ALL)"], "mitigation measure": ["Any procedure or action undertaken to reduce the adverse impacts that a project or activity may have on the environment.\\n(Source: TOE)"], "mixed forest": ["A forest composed of broadleaf trees and coniferous trees."], "mixed use area": ["Use of land for more than one purpose; e.g. grazing of livestock, watershed and wildlife protection, recreation, and timber production.\\n(Source: RRDA)"], "mixing": ["The intermingling of different materials to produce a homogeneous mixture."], "mobile home": ["Living quarters mounted on wheels and capable of being towed by a motor vehicle.\\n(Source: CED)"], "model": ["A representation, usually on a smaller scale, of a device, structure, etc. \\n(Source: CED / LEE)", "A person who serves as a subject for artwork, usually in the medium of photography but also for painting or drawing.", "Person whose job is to wear clothes in order to present them.", "A quantitative or mathematical representation or computer simulation which attempts to describe the characteristics or relationships of physical events.", "A grouping based on shared characteristics.", "To display an object for others to see, especially in regard to wearing clothing while performing the role of a fashion model.", "To create from a substance such as clay.", "A typical example or instance.", "A type of product."], "moisture": ["Water that is dispersed through a gas in the form of water vapour or small droplets, dispersed through a solid, or condensed on the surface of a solid."], "molecular biology": ["The study of the chemical structures and processes of biological phenomena at the molecular level; the discipline is particularly concerned with the study of proteins, nucleic acids, and enzymes, the macromolecules essential to life processes. It seeks to understand the molecular basis of genetic processes. Techniques used include X-ray diffraction and electron microscopy.\\n(Source: GILP96)"], "monitoring": ["The regularly checking in order to perceive change in some quality or quantity.\\n(Source: BRACK)"], "monitoring technique": ["Techniques employed in the process of checking, observing and measuring events, processes or physical, chemical, biological and environmental phenomena.\\n(Source: ZINZANa / DUNSTEa)"], "monopoly": ["The market condition where a particular commodity or service has only one seller."], "monument": ["An object, especially large and made of stone, built to remember and show respect to a person or group of people, or a special place made for this purpose.", "A burial vault (usually for some famous person)."], "moor": ["A tract of unenclosed waste ground, usually covered with heather, coarse grass, bracken, and moss."], "moral persuasion": ["Appealing to the ethical principles or beliefs of an adversary or the public to convince the adversary to change behavior or attitudes."], "morphology": ["The branch of biology concerned with the form and structure of organisms.", "In linguistics, the study of word structure."], "mortality": ["The number of deaths occurring in a given population for a given period of time."], "moss": ["Any plant of the class Bryophyta, occurring in nearly all damp habitats."], "motorcycle": ["Single-track, two-wheeled motor vehicle."], "motor fuel": ["Any gaseous or liquid flammable fuel that burns in an internal combustion engine."], "motor vehicle": ["A road vehicle driven by a motor or engine, especially an internal combustion engine."], "mountain": ["A feature of the earth's surface that rises high above the base and has generally steep slopes and a relatively small summit area.", "A great number or large amount of things not placed in a pile."], "mountaineering": ["The sport, hobby or profession of walking, hiking and climbing up mountains."], "mountainous area": ["Area characterized by conspicuous peaks, ridges, or mountain ranges.\\n(Source: BJGEO)"], "mountain range": ["A single, large mass consisting of a succession of mountains or narrowly spaced mountain ridges, with or without peaks, closely related in position, direction, formation, and age."], "mowing": ["The cutting down of grass, crops or grain with a scythe or a mechanical device."], "mud flat": ["A relatively level area of fine silt along a shore (as in a sheltered estuary) or around an island, alternately covered and uncovered by the tide, or covered by shallow water."], "mulch": ["A layer of organic material applied to the surface of the ground to retain moisture."], "multilateral agreement": ["A binding agreement between three or more parties."], "multinational firm": ["A business company operating in multiple countries."], "municipal cleansing": ["The aggregation of services offered by a town or city in which streets and other public areas are kept clean, such as through trash pick-ups, street sweeping and decontamination of water, soil and other natural resources.\\n(Source: FFD)"], "municipality": ["A town, city, or other district having powers of local self-government.\\n(Source: LANDY)"], "municipal level": ["The jurisdiction, position or status of city, town or local government.\\n(Source: DAM / OED)"], "muscular system": ["The muscle cells, tissues, and organs that effect movement in all vertebrates."], "museum": ["A place or building where objects of historical, artistic, or scientific interest are exhibited, preserved or studied.\\n(Source: CED)", "Of or relating to a museum."], "mushroom": ["An organism belonging to a family of Basidiomycetes that are characterized by the production of spores on gills."], "music": ["The artistic organisation of sounds or tones that expresses ideas and emotions through the elements of rhythm, melody, harmony and tonal colour.", "A document which contains a musical composition in printed or written form."], "mussel farming": ["Breeding of mussels for sale as food."], "mustelid": ["A large, diverse family of low-slung, long-bodied carnivorous mammals including minks, weasels, and badgers; distinguished by having only one molar in each upper jaw, and two at the most in the lower jaw."], "mutagenicity": ["The property of chemical or physical agents of inducing changes in genetic material that are transmitted during cell division."], "mutagen": ["An agent that raises the frequency of mutation of genetic material above the spontaneous rate."], "mutant": ["An individual bearing an allele that has undergone mutation and is expressed in the phenotype."], "mutation": ["A change in the chemical constitution of the DNA in the chromosomes of an organism."], "mycology": ["The branch of botany concerned with the study of fungi."], "mycorrhiza": ["The symbiotic association of the root of a higher plant with a fungus."], "national legislation": ["A binding rule or body of rules prescribed by the government of a sovereign state that holds force throughout the regions and territories within the government's dominion.\\n(Source: RHW)"], "national park": ["Areas of outstanding natural beauty, set aside for the conservation of flora, fauna and scenery, and for recreation, if this does not conflict with the conservation objectives of the parks and their landscapes. Hunting, logging, mining, commercial fishing, agriculture and livestock grazing are all controlled within national parks, as is industrial activity.\\n(Source: WRIGHT)"], "natural area": ["An area of certain natural conditions, as opposed to a civilized area shaped and inhabited mainly by humans."], "natural disaster": ["Violent, sudden and destructive change in the environment without cause from human activity, due to phenomena such as floods, earthquakes, fire and hurricanes."], "natural fertiliser": ["Organic material added to the soil to supply chemical elements needed for plant nutrition."], "natural forest": ["A forest area that has developed free from the influence of humans and remains largely unaffected by their activities."], "natural gas": ["A natural fuel containing methane and hydrocarbons that occurs in certain geologic formations.\\n(Source: LANDY)"], "natural gas extraction": ["The tapping of natural gas from wells located under the sea and in general from underground sources often in association with petroleum deposits; it is used as a fuel, having largely replaced coal-gas for this purpose, and as a source of intermediates for organic synthesis."], "natural hazard": ["The probability of occurrence, within a specific period of time in a given area of a potentially damaging phenomenon of nature.\\n(Source: GUNN)"], "natural heritage": ["Generally, the world's natural resources as handed down to the present generation, and specifically, the earth's outstanding physical, biological and geological formations, and habitats of threatened species of animals and plants and areas with scientific, conservation or aesthetic value.\\n(Source: WHC / OED)"], "rights of nature": ["A rule or body of rules that derives from nature and is believed to be binding upon human society, as opposed to human-made laws such as legislative acts and judicial decisions.\\n(Source: WOR / INP)"], "natural monument": ["A natural/cultural feature which is of outstanding or unique value because of its inherent rarity, representative of aesthetic qualities or cultural significance. Guidance for selection of a natural monument is: a) The area should contain one or more features of outstanding significance (appropriate natural features include spectacular waterfalls, caves, craters, fossil beds, sand dunes and marine features, along with unique or representative fauna and flora; associated cultural features might include cave dwellings, cliff-top forts, archaeological sites, or natural sites which have heritage significance to indigenous peoples).; b) The area should be large enough to protect the integrity of the feature and its immediately related surroundings.\\n(Source: AERG)"], "natural park": ["A designation project of lands which preserves natural resources for their scientific, scenic, cultural and/or educational value by limiting development and management practices. Land managed to protect rare and endangered species of flora and fauna will be designed as natural areas.\\n(Source: LANDY)"], "natural radioactivity": ["Radiation stemming mainly from uranium, present in small amounts in many rocks, soils, building material, etc."], "natural resource": ["A feature or component of the natural environment that is of value in serving human needs, e.g. soil, water, plantlife, wildlife, etc."], "natural science": ["The branches of science dealing with objectively measurable phenomena pertaining to the transformation and relationships of energy and matter; includes biology, physics, and chemistry."], "natural stone": ["A stone that occurs in nature, as distinguished from a man-made substitute."], "nature conservation": ["Active management of the earth's natural resources and environment to ensure their quality is maintained and that they are wisely used.\\n(Source: PHC)"], "nature reserve": ["Area allocated to preserve and protect certain animals and plants, or both."], "nausea": ["Desire to vomit."], "necrosis": ["The pathologic death of living tissue in a plant or animal."], "need": ["To need a number or amount of something, but not having any at all.", "The feeling of the lack of something.", "To need a number or amount of something, but not having enough or any at all.", "What is necessary to satisfy a need.", "To feel that something is necessary."], "nematode": ["A group of unsegmented worms which have been variously recognized as an order, class, and phylum.", "One of the most common phyla of animals, with over 80,000 different described species (of which over 15,000 are parasitic). They are ubiquitous in freshwater, marine, and terrestrial environments, where they often outnumber other animals in both individual and species counts, and are found in locations as diverse as Antarctica and oceanic trenches."], "nervous system": ["A coordinating and integrating system which functions in the adaptation of an organism to its environment; in vertebrates, the system consists of the brain, brainstem, spinal cord, cranial and peripheral nerves, and ganglia."], "net resource depletion": ["The total decrease in the amount of natural materials available for use by humans and other living beings."], "neurotoxicity": ["The occurrence of adverse effects on a nervous system following exposure to a chemical.\\n(Source: KOREN)"], "neutralisation": ["The act of making a solution neutral by adding a base to an acidic solution, or an acid to a basic solution."], "new community": ["A sociopolitical, religious, occupational or other group of common characteristics and interests formed as an alternative to social, and often residential, options currently available.\\n(Source: RHW)"], "nickel": ["A malleable ductile silvery-white metallic element that is strong and corrosion-resistant, occurring principally in pentlandite and niccolite: used in alloys, especially in toughening steel, in electroplating, and as a catalyst in organic synthesis.\\n(Source: CED)"], "nitrate": ["Any salt or ester of nitric acid, such as sodium nitrate."], "nitrification": ["The process by which ammonia compounds, including man-made fertilizer and the humus provided by organic matter or plant and animal origin, are converted into nitrites and then nitrates, which are then absorbed as a nutrient by crops."], "nitrite": ["A salt or ester of nitric acid, included in compounds such as potassium nitrite, sodium nitrite and butyl nitrite."], "nitro compound": ["Any one of a class of usually organic compounds that contain the monovalent group, -NO2 (nitro group or radical) linked to a carbon atom."], "nitrogen": ["Gaseous, non-metallic chemical element with symbol N and atomic number 7."], "nitrogen cycle": ["The complex set of processes by which crops acquire the large amount of nitrogen they need to make proteins, nucleic acids and other biochemicals of which they are composed, and how the nitrogen returns to the atmosphere."], "nitrogen dioxide": ["A reddish-brown gas; it exists in varying degrees of concentration in equilibrium with other nitrogen oxides; used to produce nitric acid."], "nitrogen fixation": ["Assimilation of atmospheric nitrogen by a variety of microorganisms which live freely in soil."], "nitrogen monoxide": ["A colourless gas, soluble in water, ethanol and ether."], "nitrosamine": ["Any one of a class of neutral, usually yellow oily compounds containing the divalent group."], "noise": ["Sound which is unwanted, either because of its effects on humans, its effect on fatigue or malfunction of physical equipment, or its interference with the perception or detection of other sounds.", "A random and unwanted signal."], "noise analysis": ["Determination of the frequency components that make up a particular noise being studied.\\n(Source: MGH)"], "noise barrier": ["A barrier for reducing the propagation of sound that are widely used in industry and alongside roads and railways."], "noise emission": ["The release of noise into the environment from various sources that can be grouped in: transportation activities, industrial activities and daily normal activities."], "noise immission": ["Immission in the environment of acoustic vibrations that negatively affect human beings, animals, plants or other objects."], "noise level": ["Physical quantity of unwanted sound measured, usually expressed in decibels."], "noise measurement": ["The process of quantitatively determining one or more properties of acoustic noise."], "noise pollutant": ["Noise in the environment which can be harmful to human beings, animals and plants.\\n(Source: ISEP)"], "noise pollution": ["Harmful or unwanted sounds in the environment, which in specific places, can be measured and averaged over a period of time."], "noise protection": ["Adoption of measures for controlling noise pollution, such as restriction of the emission of noise from industrial, commercial and domestic premises, from motor vehicles and aircrafts, the provision of noise barriers and buffer zones, the fitting of sound attenuation equipment, etc.\\n(Source: CONFERa / GILP96a)"], "nomad": ["A member of a people or tribe who move from place to place to find pasture and food."], "nomenclature": ["The body of specialized words relating to a particular subject."], "non-ferrous metal": ["Any metal other than iron and its alloys."], "non-metallic mineral": ["Minerals containing non-metals, such as quartz, garnet, etc.\\n(Source: RRDA)"], "non-metal": ["A chemical element, that does not have the chemical or physical properties of a metal, e. g. oxygen or sulfur."], "non-polluting fuel": ["Clean fuel that does not release polluting emissions in the environment, such as methane."], "non-renewable resource": ["A natural resource which, in terms of human time scales, is contained within the Earth in a fixed quantity and therefore can be used once only in the foreseeable future (although it may be recycled after its first use)."], "non-returnable container": ["Any container for which no specific provisions for its return from the consumer or final use has been established."], "norm": ["An established standard, guide, or regulation.", "The most common and popular way of thinking among a population."], "normalisation": ["(Database) The process of structuring data to minimise duplication and inconsistencies."], "North Africa": ["A geographic region of the African continent south of Europe and the Mediterranean Sea, and north of Africa's tropical rain forest, including Morocco, Algeria, Tunisia, Libya and the Egyptian region west of the Suez Canal, and also the Sahara Desert and Atlas Mountains."], "North America": ["A continent in the northern half of the western hemisphere, bounded by the Arctic Ocean in the north, by the Pacific Ocean and the Bering Sea in the west, and by the Atlantic Ocean and the Gulf of Mexico in the east, connected to South America by the Isthmus of Panama, and including the United States, Canada, Mexico and several small island nations.\\n(Source: INP)"], "North Atlantic Ocean": ["The northern part of the Atlantic Ocean, extending northward from the equator to the Arctic Ocean."], "North Pacific Ocean": ["An ocean north of the equator between the eastern coast of Asia and the western coasts of the Americas, extending northward to the arctic region, with principal arms including the Gulf of Alaska, the Sea of Okhotsk, the Sea of Japan and the Bering, Yellow, East China, South China and Philippine seas, and islands including the Aleutian, Midway, Marshall and Hawaiian islands, the Japanese island arc and the Malay Archipelago."], "novel food": ["A type of food that does not have a significant history of consumption or is produced by a relatively new method."], "nuclear accident": ["An event occurring in a nuclear power plant or anywhere that radioactive materials are used, stored, or transported and involving the release of potentially dangerous levels of radioactive materials into the environment.\\n(Source: FEMAa)"], "nuclear energy": ["Energy released by nuclear fission or nuclear fusion."], "nuclear facility": ["A place, including buildings, where all the activities relating to nuclear research are performed.\\n(Source: CAMB)"], "nuclear fission": ["The division of an atomic nucleus into parts of comparable mass; usually restricted to heavier nuclei such as isotopes of uranium, plutonium, and thorium."], "nuclear fuel": ["Material that can be used in nuclear fission or fusion to create nuclear energy."], "nuclear fuel element": ["A piece of nuclear fuel which has been formed and coated, and is ready to be placed in a reactor fuel assembly."], "nuclear fusion": ["Combination of two light nuclei to form a heavier nucleus with release of some binding energy."], "nuclear physics": ["The study of the characteristics, behaviour and internal structures of the atomic nucleus."], "nuclear debate": ["The ongoing, public discussion and dispute over the uses of nuclear energy."], "nuclear power plant": ["A power plant in which nuclear energy is converted into heat for use in producing steam for turbines, which in turn drive generators that produce electric power."], "nuclear reaction": ["A reaction involving a change in an atomic nucleus, such as fission, fusion, neutron capture, or radioactive decay, as distinct from a chemical reaction, which is limited to changes in the electron structure surrounding the nucleus."], "nuclear reactor": ["Device which creates heat and energy by starting and controlling atomic fission."], "nuclear safety": ["Measures and techniques implemented to reduce the possibility of incidence and the potential harm posed by radioactive substances used as an energy source, a test material or in weaponry."], "nuclear test": ["Test performed to evaluate nuclear weapons."], "nuclear weapon": ["Any bomb, warhead, or projectile using active nuclear material to cause a chain reaction upon detonation."], "nucleic acid": ["Any of several organic acids combined with proteins (DNA or RNA) which exist in the nucleus and protoplasm of all cells."], "nuisance": ["Something which annoys."], "nutrient medium": ["A liquid or gel designed to support the growth of microorganisms, cells or small plants."], "nutrient content": ["The amount of proteins, carbohydrates, fats, inorganic salts (e.g. nitrates, phosphates), minerals (e.g. calcium, iron), and water."], "nutrient cycle": ["A biogeochemical cycle, in which inorganic nutrients move through the soil, living organisms, air and water or through some of these."], "nutrient removal": ["Elimination of nutrients as, for example, from sewage in order to prevent eutrophication of water in reservoirs."], "nutrient": ["Chemical elements which are involved in the construction of living tissue and which are needed by both plant and animal. The most important in terms of bulk are carbon, hydrogen and oxygen, with other essential ones including nitrogen, potassium, calcium, sulphur and phosphorus."], "nutrition": ["Chemical elements which are involved in the construction of living tissue and which are needed by both plant and animal. The most important in terms of bulk are carbon, hydrogen and oxygen, with other essential ones including nitrogen, potassium, calcium, sulphur and phosphorus.", "A process in animals and plants involving the intake of nutrient materials and their subsequent assimilation into the tissues."], "oak": ["Any tree of the genus Quercus in the order Fagales, characterized by simple, usually lobed leaves, scaly winter buds, a star-shaped pith, and its fruit, the acorn, which is a nut; the wood is tough, hard, and durable, generally having a distinct pattern.", "Wood of the oak tree."], "objection": ["The act of a party who objects to some matter or proceeding in the course of a trial or an argument or reason urged by him in support of his contention that the matter or proceeding objected to is improper or illegal.\\n(Source: BLACK)", "An argument that contradicts what is said by other persons."], "obligation to label": ["The legal responsibility or duty compelling manufacturers to affix certain marks or other written identification to their products, as is directed by laws, regulations or government standards."], "occupational disease": ["A functional or organic disease caused by factors arising from the operations or materials of an individual's industry, trade, or occupation."], "occupational medicine": ["The branch of medicine which deals with the relationship of humans to their occupations, for the purpose of the prevention of disease and injury and the promotion of optimal health, productivity, and social adjustment."], "occupational safety regulation": ["Law enacted to reduce the incidence among workers of personal injuries, illnesses, and deaths resulting from employment."], "ocean": ["The mass of water occupying all of the Earth's surface not occupied by land, but excluding all lakes and inland seas."], "ocean circulation": ["Water current flow in a closed circular pattern within an ocean."], "ocean current": ["A net transport of ocean water along a definable path.\\n(Source: MGH)"], "ocean dumping": ["The process by which pollutants, including sewage, industrial waste, consumer waste, and agricultural and urban runoff are discharged into the world's oceans."], "Oceania": ["The islands of the southern, western and central Pacific Ocean, including Melanesia, Micronesia, and Polynesia. The term is sometimes extended to encompass Australia, New Zealand, and the Malay Archipelago.\\n(Source: AMHER)"], "oceanography": ["The scientific study and exploration of the oceans and seas in all their aspects.\\n(Source: MGH)"], "ocean temperature": ["A measure, referenced to a standard value, of the heat or coldness in a body of oceanic water."], "odonate": ["Order in the class of insecta that includes dragonflies and damselflies."], "environmental criminality": ["Unlawful acts against the environment, such as water contamination, hazardous waste disposal, air contamination, unpermitted installation of plants, oil spills, etc.\\n(Source: AZENPa)"], "office": ["Any room, set of rooms or building used for the administration of government service, business transactions or other work related activities.", "Any building used for the administration of government service, business transactions or other work related activities.", "The actions and activities assigned to or required or expected of a person or group.", "Professional or clerical workers in an office."], "official hearing": ["Proceedings of relative formality, with definite issues of fact or of law to be tried, in which witnesses are heard and parties proceeded against have right to be heard.\\n(Source: WESTS)"], "offshore oil drilling": ["Oil extraction from platforms situated a short distance from the coast."], "oil binding agent": ["Highly absorbent agents used for physically removing spilled oil in case of leakages and oil accidents occurring in water bodies, industry, work-shops, on roads, etc."], "oil boom": ["A floating device used to contain oil on a body of water.", "A boom in the oil producing sector of an economy."], "oil disaster": ["The disaster caused by the dumping and accidental spillage of oil into waterways from ships and land-based or offshore installations. Oil pollution may destroy or damage aquatic life and wildlife such as birds, contaminate water supplies and create fire hazards.\\n(Source: GILP96)"], "oil pipeline": ["A line of pipe connected to valves and other control devices, for conducting oil."], "oil pollution": ["Contamination of any ecosystem, but usually of freshwater or marine ecosystems, by oil or other petroleum products."], "oil recovery vessel": ["A boat used for recovering oil spilled at sea from oil tankers."], "oil refinery": ["A plant where crude petroleum is transformed into fuels, lubricants, and other petroleum-derived products."], "oil refining": ["The separation of petroleum mixtures into their component parts."], "oil shale": ["A kerogen-bearing, finely laminated brown or black sedimentary rock that will yield liquid or gaseous hydrocarbons on distillation."], "oil slick": ["The mass of oil that floats on a surface of water, which is discharged accidentally, naturally or by design, and can be moved by currents, tides and the wind."], "oil spill": ["Contamination of any ecosystem, but usually of freshwater or marine ecosystems, by oil or other petroleum products.", "The accidental release of oil, or other petroleum products usually into freshwater or marine ecosystems, and usually in large quantities."], "oil tanker": ["A very large ship which carries crude oil or other petroleum products in big tanks."], "olfactometry": ["The testing and measurement of the sensitivity of the sense of smell."], "onchocerciasis": ["Infection with the filaria Onchocerca volvulus; results in skin tumours, papular dermatitis, and ocular complications."], "oncology": ["The study of the causes, development, characteristics, and treatment of tumors."], "opencast mining": ["The extraction of metal ores and minerals that lie near the surface by removing the overlying material and breaking and loading the ore.", "Superficial mining, in which the valuable rock is exposed by removal of overburden."], "opinion": ["That which one holds to be true; the acceptance of a fact, opinion, or assertion as real or true despite a lack of strong evidence or knowledge.", "Judgement or belief not founded on certainty or proof."], "ore": ["A mineral or mineral aggregate, mixed with gangue, that can be worked and treated at a profit."], "organ": ["A fully differentiated structural and functional unit, such as a kidney or a root, in an animal or plant.", "A keyboard instrument played using one or more manuals and a pedalboard. Sound is produced by an airflow through metal or wood pipes and/or electronically by sampled organ sounds or oscillators."], "organic carbon": ["Carbon which comes from an animal or plant. \\n\\n(Source: PHC)"], "organic chemistry": ["A branch of chemistry dealing with the study of composition, reaction, properties, etc. of organic compounds.\\n(Source: LEE)"], "organic farming": ["Farming without the use of industrially made fertilizers or pesticides."], "organic solvent": ["Organic materials, including diluents and thinners, which are liquids at standard conditions and which are used as dissolvers, viscosity reducers, or cleaning agents.\\n(Source: LEE)"], "organic substance": ["Chemical compounds, based on carbon chains or rings and also containing hydrogen with or without oxygen, nitrogen, or other elements.\\n(Source: MGH)"], "organic waste": ["A type of waste which can be broken down into its base compounds by micro-organisms."], "organism": ["An individual constituted to carry out all life functions."], "organochlorine compound": ["Organic compounds containing a C-Cl bond."], "organohalogen compound": ["Organic compounds containing a C-halogen bond."], "organometallic compound": ["Molecules containing carbon-metal linkage; a compound containing an alkyl or aryl radical bonded to a metal.\\n(Source: MGH)"], "organonitrogen compound": ["Organic compounds having a C-N bond.\\n(Source: RRDA)"], "organooxygen compound": ["Compounds, both aliphatic and aromatic, which have a C-O bond, including alcohols, aldehydes, etc."], "organophosphorous compound": ["Organic compound that contains phosphorous; short-lived, but some can be toxic when first applied.\\n(Source: EPAGLO)"], "organosilicon compound": ["Any natural substance composed of two or more unlike atoms held together by chemical bonds and containing silicon, a non-metallic element often found in rocks or minerals.\\n(Source: RHW)"], "organotin compound": ["Chemical compound used in anti-foulant paints to protect the hulls of boats and ships, buoys and pilings from marine organisms such as barnacles.\\n(Source: EPAGLO)"], "ornithology": ["The branch of zoology that deals with the study of birds, including their physiology, classification, ecology, and behaviour."], "orography": ["The study of mountain systems and the depiction of their relief.\\n(Source: WHIT)"], "orthopteran": ["A heterogeneous order of generalized insects with gradual metamorphosis, chewing mouthparts, and four wings."], "osmosis": ["The passage of a solvent through a semipermeable membrane separating two solutions of different concentrations."], "local recreation": ["A pastime, diversion, exercise or other means of enjoyment and relaxation that is carried out in a particular city, town or small district."], "overburden": ["The material such as soil and rock lying above a mineral deposit that must be removed in order to work the deposit."], "overcrowding": ["An excess of people gathered together in a confined space."], "overexploitation": ["The use of raw materials excessively without considering the long-term ecological impacts of such use.\\n(Source: WPR)"], "overfishing": ["Taking out of the sea more fish than natural population growth can sustain."], "overgrazing": ["The damaging of land as a result of excessive animal grazing, for example sheep and goats."], "overhead power line": ["Suspended cables by which electrical power is distributed throughout a country."], "overpopulation": ["A population density that exceeds the capacity of the environment to supply the health requirements of the individual organism."], "overwintering": ["The passing of winter in a particular place."], "oxidation": ["A chemical reaction that increases the oxygen content of a compound."], "oxidation-reduction": ["An oxidizing chemical change, where an element's positive valence is increased (electron loss), accompanied by a simultaneous reduction of an associated element (electron gain)."], "oxide": ["Binary chemical compound in which oxygen is combined with a metal or nonmetal."], "oxygen": ["A gaseous chemical element with symbol O and atomic number 8; an essential element in cellular respiration and in combustion processes; the most abundant element in the earth's crust and about 20% of the air by volume.\\n(Source: MGH)"], "oxygenation": ["Treating with oxygen."], "oxygen content": ["Amount of oxygen contained in a solution."], "ozone": ["An allotropic form of oxygen containing three atoms in the molecule. It is a bluish gas, very active chemically, and a powerful oxidizing agent. Ozone is formed when oxygen or air is subjected to a silent electric discharge. It occurs in ordinary air in very small amounts only.\\n(Source: UVAROV)"], "ozone depletion potential": ["A factor that reflects the ozone depletion potential of a substance, on a mass per kilogram basis, as compared to chlorofluorocarbon-11 (CFC-11). Such factor shall be based upon the substance's atmospheric life time, the molecular weight of bromine and chlorine, and the substance's ability to be photolytically disassociated, and upon other factors determined to be an accurate measure of relative ozone depletion potential.\\n(Source: LEE)"], "ozone layer": ["The general stratum of the upper atmosphere in which there is an appreciable ozone concentration and in which ozone plays an important part in the radiative balance of the atmosphere."], "packaging": ["All products made of any materials of any nature to be used for the containment, protection, handling, delivery and presentation of goods, from raw materials to processed goods, from the producer to the user or the consumer."], "paint": ["A mixture of pigment and a vehicle, such as oil or water, that together form a liquid or paste that can be applied to a surface to provide an adherent coating that imparts colour, protects the surface and/or gives the surface different features.", "To make a painting.", "To make a painting of."], "painting business": ["A commercial service through which paint, a decorative or protective coating product, or similar products are applied to the interiors and exteriors of buildings and other surfaces."], "paint shop": ["A shop where paint and related items are sold."], "paper": ["Felted or matted sheets of cellulose fibers, formed on a fine-wire screen from a dilute water suspension, and bonded together as the water is removed and the sheet is dried.", "Made of paper.", "A scholarly written work describing the results of observations or stating hypotheses."], "parameter": ["1) A quantity in an equation which must be specified beside the independent variables to obtain the solution for the dependent variables. \\n2) A quantity which is constant under a given set of conditions, but may be different under other conditions.\\n(Source: LEE / MGH)"], "parasite": ["Organism which lives and obtains food at the expense of another organism, the host.", "A person who exploits fellow human beings."], "parasitology": ["A branch of biology which deals with those organisms, plant or animal, which have become dependent on other living creatures."], "Parliament": ["An assembly of elected representatives, typically controlled by a political party and constituting the legislative and, in some cases, the executive power of a state."], "participation": ["The act of sharing or taking part in a civic, community or public action."], "particle": ["Any very small part of matter, such as a molecule, atom, or electron.", "One-syllable suffixes or short words in Japanese and Korean grammar that immediately follow the modified noun, verb, adjective, or sentence. They have a wide range of grammatical functions, including the indication of a question or the speaker's assertiveness, certitude, or other feelings.", "A word or term that lack a precise lexical definition, that is typically short, indeclinable, and have a grammatical function.", "A very small piece of matter."], "particle separator": ["A device for segregation of solid particles by size range, as a screening."], "passenger transport": ["The conveyance of people over land, water or through air by automobile, bus, train, airplane or some other means of travel."], "pasture": ["Land covered with grass or herbage and grazed by or suitable for grazing by livestock.", "To put livestock into a field or pasture or meadow to graze.", "(For livestock) To feed on grass or herbage from a pasture.", "To feed as in a meadow or pasture."], "pathogen": ["Any disease-producing agent or microorganism."], "pathogenic organism": ["Agents producing or capable of producing disease."], "pathology": ["The branch of medicine concerned with the causes, origin, and nature of disease, including the changes occurring as a result of disease."], "peat": ["Unconsolidated soil material consisting largely of undecomposed or slightly decomposed organic matter accumulated under conditions of excessive moisture.\\n(Source: LANDY)"], "pedestrian zone": ["Area in a city where vehicles are not allowed."], "pedosphere": ["That shell or layer of the Earth in which soil-forming processes occur."], "penalty": ["Punitive sanction taken against someone who has broken the law.", "A free kick in football taken from 11 m in front of the goal with only the goalkeeper defending.", "A disadvantage imposed upon a competitor or team, according to the rules of the game.", "A legal punishment."], "pentachlorophenol": ["A toxic phenolic compounds with formula C6HOCl5, used as a fungicide, herbicide and molluscicide."], "perchloroethylene": ["Stable, colorless liquid, nonflammable and nonexplosive, with low toxicity; used as a dry-cleaning and industrial solvent, in pharmaceuticals and medicines, and for metal cleaning."], "periphyton": ["A plant or animal organism which is attached or clings to surfaces of leaves or stems of rooted plants above the bottom stratum."], "permeability": ["The ability of a membrane or other material to permit a substance to pass through it."], "permissible exposure limit": ["An exposure limit that is set for exposure to an hazardous substance or harmful agent and enforced by OSHA (Occupational Safety and Health Act) as a legal standard. It is based on time-weighted average concentrations for a normal 8-hour work day and 40 hour work week."], "permission": ["Voluntary agreement or permission."], "peroxyacetylnitrate": ["A pollutant created by the action of sunlight on hydrocarbons and nitrogen oxides in the air. An ingredient of smog."], "persistence": ["The capacity of a substance to remain chemically stable. This is an important factor in estimating the environmental effects of substances discharged into the environment. Certain toxic substances (e.g., cyanides) have a low persistence, whereas other less immediately toxic substances (e.g., many organochlorines) have a high persistence and may therefore produce more serious effects.\\n(Source: ALL)", "Lasting for a long period, being present for a long period."], "persistence of pesticides": ["The ability of a chemical to retain its molecular integrity and hence its physical, chemical, and functional characteristics in the environment through which such a chemical may be transported and distributed for a considerable period of time.\\n(Source: GILP96)"], "pest": ["Any unwanted insect or other organism that attacks and damages crops, reduces the fertility of land or injures or irritates livestock or people.", "A persistently annoying person."], "pest control": ["Keeping down the number of pests by killing them or preventing them from attacking."], "pesticide": ["A general term for chemical agents that are used in order to kill unwanted plants, animals pests or disease-causing fungi."], "residual pesticide": ["A pesticide remaining in the environment for a fairly long time, continuing to be effective for days, weeks, and months."], "pest infestation": ["The occurrence of one or more pest species in an area or location where their numbers and impact are currently or potentially at intolerable levels.", "A sudden increase in destructiveness or population numbers of a pest species in a given area."], "pet": ["An animal which is kept in the home as a companion and treated affectionately.", "To stroke or caress in an erotic manner, as during lovemaking."], "petrochemical industry": ["The production of materials derived from petroleum or natural gas.\\n(Source: MGH)"], "petrol": ["A fuel for internal combustion engines consisting essentially of volatile flammable liquid hydrocarbons derived from crude petroleum."], "petroleum": ["A comparatively volatile liquid bitumen composed principally of hydrocarbon, with traces of sulphur, nitrogen or oxygen compounds; can be removed from the earth in a liquid state."], "petroleum consumption": ["Petroleum belongs to non-renewable energy sources; it is a complex substance derived from the carbonized remains of trees, ferns, mosses, and other types of vegetable matter. The principal chemical constituents of oil are carbon, hydrogen, and sulphur. The various fuels made from crude oil are jet fuel, gasoline, kerosine, diesel fuel, and heavy fuel oils. Major oil consumption is in the following areas: transportation, residential-commercial, industrial and for generating electric power.\\n(Source: PARCOR)"], "petroleum geology": ["The branch of economic geology that relates to the origin, migration and accumulation of oil and gas, and to the discovery of commercial deposits. Its practice involves the application of geochemistry, geophysics, paleontology, structural geology and stratigraphy to the problems of finding hydrocarbons.\\n(Source: BJGEO)"], "petroleum industry": ["Manufacturing industry utilizing complex combination of interdependent operations engaged in the storage and transportation, separation of crude molecular constituents, molecular cracking, molecular rebuilding, and solvent finishing to produce petrochemical products."], "phanerogam": ["Plants that produce seeds. The group comprises the Gymnospermae and the Angiospermae.\\n(Source: ALL)"], "pharmaceutical industry": ["Concerted activity concerned with manufacturing pharmaceutical goods."], "pharmacokinetics": ["The study of the rates of absorption, tissue distribution, biotransformation, and excretion.\\n(Source: LEE)"], "pharmacology": ["The science dealing with the nature and properties of drugs, particularly their actions.\\n(Source: MGH)"], "phenol": ["A white crystalline soluble poisonous acidic derivative of benzene, used as an antiseptic and disinfectant and in the manufacture of resins, nylon, dyes, explosives and pharmaceuticals.\\n(Source: CED)"], "pheromone": ["Any substance secreted by an animal which influences the behaviour of other individuals of the same species.\\n(Source: MGH)"], "philosophy": ["The academic discipline concerned with making explicit the nature and significance of ordinary and scientific beliefs and investigating the intelligibility of concepts by means of rational argument concerning their presuppositions, implications, and interrelationships; in particular, the rational investigation of the nature and structure of reality (metaphysics), the resources and limits of knowledge (epistemology), the principles and import of moral judgment (ethics), and the relationship between language and reality (semantics)."], "phosphate": ["Any salt or ester of any phosphoric acid, especially a salt of orthophosphoric acid."], "phosphate removal": ["Replacement of phosphate in detergents by environmentally safer substances, such as zeolite. The substitute will not act as a nutrient, and so will not cause eutrophication as a result of the accelerated growth of plants and microorganisms if it is released into waterways.\\n(Source: WRIGHTa)"], "phosphate substitute": ["All substances that are able to substitute phosphate compounds in detergents; they must have the same chemical and physical properties and must be less polluting for the environment.\\n(Source: RRDA)"], "phosphorus": ["A nonmetallic element used to manufacture phosphoric acid, in phosphor bronzes, incendiaries, pyrotechnics, matches, and rat poisons; the white or yellow allotrope is a soft waxy solid, soluble in carbon disulfide, insoluble in water and alcohol, and is poisonous and self-igniting in air; the red allotrope is an amorphous powder, insoluble in all solvents and is nonpoisonous; the black allotrope comprises lustrous crystals similar to graphite, and is insoluble in most solvents."], "photochemical effect": ["The result or consequence of a chemical reaction caused by light or ultraviolet radiation."], "photochemical oxidant": ["Any of the chemicals which enter into oxidation reactions in the presence of light or other radiant energy."], "photochemical product": ["Degradation products that are produced by the action of light radiation.\\n(Source: FLGISAa)"], "photochemical reaction": ["Chemical reaction which is initiated by light of a specific wavelength."], "photochemical smog": ["A combination of fog and chemicals that come from automobile and factory emissions and is acted upon by the action of the sun."], "photogrammetry": ["The process of making measurements from photographs, used especially in the construction of maps from aerial photographs and also in military intelligence, medical and industrial research, etc."], "photograph": ["An image captured by a camera or some other device and reproduced as a picture, usually on a sensitized surface and formed by the chemical action of light or of radiant energy.", "To obtain an image of someone or something on photographic film or digital format by using photography."], "photosynthesis": ["Process by which plants transform carbon dioxide and water into carbohydrates and other compounds, using energy from the sun captured by chlorophyll in the plant."], "physical geography": ["The study of the spatial and temporal characteristics and relationships of all phenomena within the Earth's physical environment."], "physical oceanography": ["The study of the physical aspects of the ocean, the movements of the sea, and the variability of these factors in relationship to the atmosphere and the ocean bottom.\\n(Source: MGH)"], "physical planning": ["A form of urban land use planning which attempts to achieve an optimal spatial coordination of different human activities for the enhancement of the quality of life.\\n(Source: LANDY)"], "physical process": ["A continuous action or series of changes which alters the material form of matter.\\n(Source: RHW)"], "physical property": ["Property of a substance that cannot change without involving a change in chemical composition.", "Physical quantity that is characteristic for a material or an object, e. g. density"], "physical science": ["The sciences concerned with nonliving matter, energy, and the physical properties of the universe, such as physics, chemistry, astronomy, and geology."], "physics": ["The study of those aspects of nature which can be understood in a fundamental way in terms of elementary principles and laws."], "physiology": ["The biological study of the functions of living organisms and their parts."], "phytopathology": ["The study of plant diseases and their control.\\n(Source: ZINZAN)"], "phytoplankton": ["Planktonic plant life.\\n(Source: MGH)"], "phytosociology": ["The study of vegetation, including the organization, interdependence, development, geographical distribution and classification of plant communities."], "phytotoxicity": ["Ability of a substance to cause injury or damage to a plant."], "satellite image": ["A pictorial representation of data projected onto a two-dimensional grid of individual picture elements (pixels) and acquired from a human-made vessel placed in orbit round a planet, moon or star."], "pilotage": ["The service provided by a pilot, one who controls the movements of a ship or aircraft by visual or electronic means."], "pilot plant": ["A small version of a planned industrial plant, built to gain experience in operating the final plant."], "pilot project": ["A small scale experiment or set of observations undertaken to decide how and whether to launch a full-scale project."], "pinniped": ["A mammal belonging to the Pinnipedia, an order of aquatic placental mammals having a streamlined body and limbs specialized as flippers: includes seals, sea lions, and the walrus."], "pipeline": ["A line of pipe connected to valves and other control devices, for conducting fluids, gases, or finely divided solids.\\n(Source: MGH)", "A system of tubes, especially the ones with a large diameter, for conducting ou distributing liquids or gases.", "To convey something by a system of pipes."], "pipe": ["A rigid tube that transports water, steam or other fluid, as used in plumbing and numerous other applications.", "A device consisting of a mouthpiece, a long pipe stem and a pipe bowl, that is used to smoke tobacco."], "plain": ["An extensive, broad tract of level or rolling, almost treeless land with a shrubby vegetation, usually at a low elevation.", "Having a surface without slope nor variations in altitude.", "To state complaints, discontent, displeasure, or unhappiness.", "Having only one color."], "plan": ["A scheme of action, a method of proceeding, or a series of steps, thought out in advance to accomplish a goal.", "Scale drawing of a structure or its parts.", "To make or work out a plan for; devise.", "To have the intention to carry out some action.", "To make a (graphic) design of."], "plankton": ["Small organisms (animals, plants, or microbes) passively floating in water."], "planning": ["The act of making a detailed scheme for attaining an objective."], "planning law": ["A binding rule or body of rules prescribed by a government to organize, designate and regulate land use."], "planning permission": ["An authorization, license or equivalent control document issued by a government agency that approves a step by step method and process of defining, developing and outlining various possible courses of action to meet existing or future needs, goals and objectives.\\n(Source: TOE / ISEP)"], "plant breeding": ["Raising a certain type of plant by crossing one variety with another to produce a new variety where the desired characteristics are strongest."], "plant community": ["Any group of plants belonging to a number of different species that co-occur in the same habitat or area and interact through trophic and spatial relationships; typically characterized by reference to one or more dominant species."], "plant disease": ["A disease that affects plants."], "plant genetics": ["The scientific study of the hereditary material of plants for purposes such as hybridization, improved food resources and increased production."], "plant protection product": ["Any substance or mixture of substances which through physiological action protects the plants against parasites, fungi, virus, or other damaging factors.\\n(Source: KORENa)"], "plantigrade": ["Pertaining to mammals walking with the whole sole of the foot touching the ground.", "Mammal walking with the whole sole of the foot touching the ground."], "planting": ["The establishment of trees or other plants by transplanting, or planting seedlings or cuttings."], "plant physiology": ["The study of the function and chemical reactions within the various organs of plants.\\n(Source: UVAROV)"], "plant protection": ["Conservation of plant species that may be rare or endangered, and of other plants of particular significance.\\n(Source: GILP96)"], "plant trade": ["Trade of plants subjected to regulations established by the Convention on International Trade in Endangered Species (CITES)."], "plasma technology": ["1) Common name for a number of industrial applications of plasma, such as: etching of semiconductor chips, deposition of silicon for solar cell production, deposition of silicon dioxide for passivation of surfaces, activation of surfaces, melting and welding with plasma arcs as well as plasma chemistry. \\n2) Plasma technology consists of minute gas-filled cells, which emit light when an electric current is channelled through them.\\n(Source: IEAP / Z2Z)"], "plastic": ["A polymeric material (usually organic) of large molecular weight which can be shaped by flow; usually refers to the final product with fillers, plasticizers, pigments, and stabilizers included (versus the resin, the homogeneous polymeric starting material); examples are polyvinyl chloride, polyethylene, and urea-formaldehyde.", "Capable of being molded or modeled."], "plastic waste": ["Any discarded plastic (organic, or synthetic, material derived from polymers, resins or cellulose) generated by any industrial process, or by consumers.\\n(Source: APD)"], "platinum": ["A ductile malleable silvery-white metallic element very resistant to heat and chemicals. It occurs free and in association with other platinum metals, especially in osmiridium; used in jewellery, laboratory apparatus, electrical contacts, dentistry, electroplating, and as a catalyst."], "playground": ["A piece of land used for recreation, especially by children, often including equipment such as swings and slides."], "plutonium": ["A highly toxic metallic transuranic element with symbol Pu and atomic number 94."], "poaching": ["The action of catching game, fish, etc. illegally by trespassing on private property.\\n(Source: CED)"], "point source": ["A single identifiable localized source of something."], "poison": ["A substance which, when ingested, inhaled, or absorbed, or when applied to, injected into, or developed within the body, in relatively small amounts, may cause injury, harm, or destruction to organs, tissue, or life.", "To administer a toxic substance."], "poisoning": ["The morbid condition produced by a poison which may be swallowed, inhaled, injected, or absorbed through the skin.\\n(Source: KOREN)"], "polar ecosystem": ["The interacting systems of the biological communities and their nonliving environmental surroundings located in the regions where the air temperature is perennially below 10\u00b0 Celsius, usually at and near the North and South Poles.", "Ecosystem of the region around Earth's poles."], "polar region": ["Area relating to the earth's poles or the area inside the Arctic or Antarctic Circles."], "polder": ["A generally fertile tract of flat, low-lying land (as in Netherlands and Belgium) reclaimed and protected from the sea, a lake, a river, or other body of water by the use of embankments, dikes, dams, or levees."], "police": ["Branch of the government which is charged with the preservation of public order, the promotion of public health and safety, and the prevention, detection, and punishment of crimes."], "police law": ["A binding rule or body of rules prescribed by a government to regulate the employment and tactics of police or other civil agents organized to maintain order, prevent and detect crimes and promote obedience to civil regulations and authority."], "policy": ["A general plan of action, formulated by a political party, a government agency or a similar institution."], "politics": ["The theory and practice of acquiring and exercising the power to govern in a society in order to arbitrate values, allocate resources and establish and enforce rules."], "policy planning": ["The process of making arrangements or preparations to facilitate any course of action that may be adopted and pursued by government, business or some other organization."], "political doctrine": ["A policy, position or principle advocated, taught or put into effect concerning the acquisition and exercise of the power to govern or administrate in society.\\n(Source: RHW)"], "political ecology": ["The study of how political, economic, and social factors affect environmental issues."], "political geography": ["The study of the effects of political actions on human geography, involving the spatial analysis of political phenomena.\\n(Source: GOOD)"], "political party": ["An organized group that has as its fundamental aim the attainment of political power and public office for its designated leaders. Usually, a\\npolitical party will advertise a common commitment by its leaders and its membership to a set of political, social, economic and/or cultural values."], "political power": ["The might, ability or authority of governments, citizens groups and other interested parties in enacting change or in influencing or controlling the outcome of governmental or public policies affecting a nation, region or municipality.\\n(Source: BLD)"], "pollen": ["A fine granular substance produced in flowers. Collective term for pollen grains or microspores produced in the anthers of flowering plants."], "pollutant": ["A substance, usually a residue of human activity, which has an undesirable effect upon the environment.", "A substance that pollutes."], "pollutant accumulation": ["The process by which concentrations of pollutants progressively increase in the tissues of living organisms in environments where these pollutants are present."], "pollutant emission": ["Release of polluting substances in the air, water and soil from a given source and measured at the immission point."], "pollutant load": ["The amount of polluting material that a transporting agent, such as a stream, a glacier, or the wind, is actually carrying at a given time."], "polluter-pays principle": ["The principle that those causing pollution should meet the costs to which it gives rise."], "pollution": ["The indirect or direct alteration of the biological, thermal, physical, or radioactive properties of any medium in such a way as to create a hazard or potential hazard to human health or to the health, safety or welfare of any living species.\\n(Source: ALL)"], "pollution load": ["The amount of polluting material that a transporting agent, such as a stream, a glacier, or the wind, is actually carrying at a given time."], "pollution measurement": ["The assessment of the concentration of pollutants for a given time in a given point."], "polybrominated biphenyl": ["A chemical substance consisting of several bromine atoms attached to biphenyl."], "polychlorinated biphenyl": ["Any of a class of aromatic organic compounds formed by the chlorination of the hydrocarbon biphenyl; they have many industrial applications but are damaging to the environment."], "polychlordibenzo-p-dioxin": ["PCDD are formed (along with variants including furans) when compounds containing chlorine are burnt at low temperature in improperly operated/designed domestic refuse and industrial waste incinerators where PCDDs can be found in both the flue gases and the fly ash.\\n(Source: PORT)"], "polychlorinated dibenzofuran": ["A family containing 135 individual, colorless compounds known as congeners with varying harmful health and environmental effects. They are produced as unwanted compounds during the manufacture of several chemicals and consumer products such as wood treatment chemicals, some metals, and paper products; also produced from the burning of municipal and industrial waste in incinerators, from exhaust of leaded gasoline, heat, or production of electricity. They are hazardous to the respiratory system, gastrointestinal system, liver, musculoskeletal system, skin and nervous system; and are toxic by inhalation, ingestion, and contact. Symptoms of exposure include frequent coughing, severe respiratory infections, chronic bronchitis, abdominal pain, muscle pain, acne rashes, skin color changes, unexpected weight loss, nonmalignant or malignant liver disease.\\n(Source: KOREN)"], "polychlorinated terphenyl": ["Compounds consisting of three benzene rings linked to each other in either ortho, meta or para positions and substituted with chlorine atoms."], "polycyclic aromatic hydrocarbon": ["Hydrocarbons containing two or more closed rings of atoms."], "polycyclic hydrocarbon": ["Hydrocarbon molecule with two or more nuclei; examples are naphtalene, with two benzene rings side by side, or diphenyl, with two bond-connected benzene rings. Also known as polynuclear hydrocarbon.\\n(Source: MGH)"], "polyethylene terephtalate": ["A thermoplastic polyester resin made from ethylene glycol and terephthalic acid; melts at 265\u00b0C; used to make films or fibers."], "polymer": ["Substance made of giant molecules formed by the union of simple molecules (monomers).\\n(Source: MGH)"], "polyvinyl chloride": ["Polymer of vinyl chloride; tasteless, odourless; insoluble in most organic solvents; a member of the family of vinyl resins."], "pond": ["A natural body of standing fresh water occupying a small surface depression, usually smaller than a lake and larger than a pool."], "tailings pond": ["Any collection of liquid effluents or wastewater drained or separated out during the processing of crops or mineral ores."], "pool": ["A small, natural body of standing water, usually fresh; e.g. a stagnant body of water in a marsh, or a still body of water within a cave."], "population distribution": ["The density, dispersal pattern and apportionment of the total number of persons in any area.\\n(Source: RHW / EEN)"], "population dynamics": ["The process of numerical and structural change within populations resulting from births, deaths, and movements."], "population ecology": ["The study of the interaction of a particular species or genus population with its environment."], "population growth": ["An increase in the total number of inhabitants of a country, city, district or area."], "population movement": ["Any shift or migration of a statistically significant number of persons inhabiting a country, district or area.\\n(Source: RHW)"], "population structure": ["The organization of, and inter-relationships among, inhabitants of a given region, country or city."], "population trend": ["The direction of change in the total number of persons inhabiting a country, city, district or area."], "potash": ["Any of several compounds containing potassium, especially soluble compounds such as potassium oxide, potassium chloride, and various potassium sulfates, used chiefly in fertilizers."], "rock salt mining": ["Rock salt mining is an underground mining process in which the salt is physically dug out of the ground in an operation involving drilling, blasting and crushing the rock. The major percentage of this output is used for winter road maintenance.\\n(Source: SALINF)"], "poultry": ["Domesticated fowl grown for their meat and eggs.", "A bird that is kept for its meat and eggs."], "poverty": ["State in which the individual lacks the resources necessary for subsistence.", "Lack of the means of subsistence."], "power station": ["A stationary plant containing apparatus for large-scale conversion of some form of energy (such as hydraulic, steam, chemical, or nuclear energy) into electrical energy.", "A stationary plant containing apparatus for large-scale conversion of some form of energy (such as hydraulic, steam, chemical, or nuclear energy) into electrical energy."], "precipitation enhancement": ["Increase of precipitation resulting from changes in the colloidal stability of clouds. This can be either intentional, as with cloud seeding, or unintentional, as with air pollution, which increases aerosol concentrations and reduces sunlight.\\n(Source: PARCOR)"], "predator": ["Animal which kills and eats other animals.\\n(Source: PHC)", "Man who is hostile to, feels hatred towards, opposes the interests of, or intends injury to someone else."], "prefabricated building": ["Building whose sections are manufactured in specialized factories and later transported and assembled on a building site."], "preliminary proceedings": ["Any introductory action in the judicial process designed to determine the need for further court involvement or to expedite a motion that requires immediate attention.\\n(Source: BLD)"], "premium": ["Amount to be paid for a contract of insurance or life assurance."], "preservative": ["A chemical added to foodstuffs to prevent oxidation, fermentation or other deterioration, usually by inhibiting the growth of bacteria."], "preserve": ["A sweet spread made of any of a variety of berries.", "To keep something or someone safe or prevent harm coming to someone or something.", "To protect; to keep; to maintain the condition of."], "press": ["Printed matter as a whole, especially newspapers and periodicals.", "A crowd of people pressed close together in a small space.", "To apply pressure to an item.", "To force or impel in a given direction."], "pressing": ["Needing urgent attention."], "pressure": ["A type of stress which is exerted uniformly in all directions; its measure is the force exerted per unit area.", "To exert violence, or constraint upon or against a person in order to obtain something by physical, moral or intellectual means."], "pressure group": ["Any politically active group with a common set of values about resource use allocation."], "price": ["The amount of money paid per unit for a good or service.", "To attach a price tag to goods or services which are to be sold.", "To fix or set a price to be paid for, or asked for, a good or service which one wants to sell."], "primary education": ["The first five or six years of instruction in elementary schools.\\n(Source: COE)"], "primary energy consumption": ["Consumption of energy used in the same form as in its naturally occurring state, for example crude oil, coal, natural gas, e.g. before it is converted into electricity.\\n(Source: BRACK)"], "primary sector": ["That part of a country's or region's economy that makes direct use of natural resources, including agriculture, forestry, fishing and the fuel, metal and mining industries."], "primate": ["Order of mammals containing monkeys, apes, and human beings.", "In the Western Catholic Church and in the Anglican Communion, a bishop with higher rank than a metropolitan archbishop but, in the Catholic Church, with less high rank than a major archbishop."], "primary forest": ["Forest which originally covered a region before changes in the environment brought about by people."], "printing industry": ["A sector of the economy in which an aggregate of commercial enterprises is engaged in the reproduction of written text or images in multiple copies such as books, periodicals, newspapers or other similar formats.\\n(Source: SIC)"], "printing work": ["The art, process or business of producing reproductions of written text or images in multiple copies, in book, periodical or newspaper formats, or in other similar formats.\\n(Source: SIC / RHW)"], "private household": ["Living quarters where a group of persons (family) live together.\\n(Source: GOOD)"], "private law": ["The branch of law dealing with such aspects of relationships between individuals that are of no direct concern to the state."], "private sector": ["Segment of the economy not run by government, including households, sole traders, partnerships and companies."], "private transport": ["Transport performed with private means."], "proboscidean": ["An order of herbivorous placental mammals characterized by having a proboscis, incisors enlarged to become tusks, and pillarlike legs with five toes bound together on a broad pad."], "procaryote": ["Organisms (i.e. prokaryotes) whose genetic material (filaments of DNA) is not enclosed by a nuclear membrane, and that do not possess mitochondria or plastids. Bacteria and cyanophyta are the only prokaryotic organisms."], "procedural law": ["Law which prescribes method of enforcing rights or obtaining redress for their invasion. Laws which fix duties, establish rights and responsibilities among and for persons, natural or otherwise, are \"substantive laws\" in character, while those which merely prescribe the manner in which such rights and responsibilities may be exercised and enforced in a court are \"procedural laws\".\\n(Source: BLACK)"], "processing": ["The act of converting material from one form into another desired form."], "process water": ["Water used in a manufacturing or treatment process or in the actual product manufactured."], "producer liability": ["Obligations, responsibilities or debts imposed upon all members of an industry that manufactures or produces a product or service causing injury or harm to a consumer and apportioned according to each member's share of the market for the product.\\n(Source: BLD)"], "product": ["Something produced by human or mechanical effort or by a natural process.", "A chemical substance formed as a result of a chemical reaction.", "A commodity offered for sale.", "A quantity obtained by multiplication of two or more numbers."], "product information": ["Factual, circumstantial and, often, comparative knowledge concerning various goods, services or events, their quality and the entities producing them."], "productivity": ["The amount of output or yield per unit of input or expenditure achieved by a company, industry or country."], "productivity trend": ["The general direction or tendency in the measurement of the production of goods and services having exchange value."], "product liability": ["The legal liability of manufacturers and sellers to compensate buyers, users, and even bystanders, for damages or injuries suffered because of defects in goods purchased."], "product standard": ["A standard which prescribes aspects of the physical or chemical composition of products which have potential for causing environmental damage or the handling, presentation and packaging of products, particularly those which are toxic.\\n(Source: GRAHAW)"], "profit": ["An excess of the receipts over the spending, costs and expenses of a business or other commercial entity during any period.", "What it remains after subtracting from the total of the revenues the total of the costs of an economic activity or a commercial or financial operation.", "Income following the deduction of all expenses, taxes, and the like.", "The advantageous quality of being beneficial.", "To derive a benefit from."], "programme": ["A scheme of action, a method of proceeding, or a series of steps, thought out in advance to accomplish a goal.", "To enter a program or other instructions into a computer (or other electronic device) to instruct it to do a particular task.", "To arrange the schedule of an event."], "prohibition": ["An interdiction or forbidding of an activity or action by authority or law."], "project": ["To make or work out a plan for; devise.", "To extend out or project in space.", "To show on a screen.", "To communicate vividly (e.g. feelings)."], "propellant": ["A gas used in aerosol preparations to expel the liquid contents through an atomizer."], "prosecution": ["The pursuit of legal proceedings, particularly criminal proceedings."], "prosperity": ["State of being prosperous; wealth or success."], "water protection area": ["Area surrounding a water recovery plant in which certain forms of soil utilization are restricted or prohibited in order to protect the groundwater.\\n(Source: AZENP)"], "protection of species": ["Measures adopted for the safeguarding of species, of their ecosystems and their biodiversity.\\n(Source: ADMIN)"], "protection system": ["A series of procedures and devices designed to preserve people, property or the environment from injury or harm.\\n(Source: RHW)"], "protein": ["Any of a class of high-molecular weight polymer compounds composed of a variety of alfa-amino acids joined by peptide linkages."], "protocol": ["The original draft of a document.", "An international agreement of a less formal nature than a treaty. It is often used to amend treaties. (Source: DICLAW)", "A formal description of digital message formats and the rules for exchanging those messages in or between computing systems and in telecommunications."], "protozoan": ["A diverse phylum of eukaryotic microorganisms; the structure varies from a simple uninucleate protoplast to colonial forms, the body is either naked or covered by a test, locomotion is by means of pseudopodia or cilia or flagella, there is a tendency toward universal symmetry in floating species and radial symmetry in sessile types, and nutrition may be phagotrophic or autotrophic or saprozoic."], "province": ["A geographic area of some considerable extent, smaller than a continent but larger than a region, which is unified by some or all of its characteristics and which can therefore be studied as a whole. A faunal province, for example, has a particular assemblage of animal species, which differs from assemblages in different contemporaneous environments elsewhere.\\n(Source: WHIT)", "An administrative subdivision of a country, in some cases relatively autonomous and equivalent to a state, in others, smaller and less autonomous and more akin to a county."], "psychology": ["The science that deals with the functions of the mind and the behaviour of an organism in relation to its environment.\\n(Source: MGH)"], "psychosomatic illness": ["Illness arising from or aggravated by a mind-body relationship."], "public action": ["A measure or provision taken on behalf and with the consent of the general populace."], "public bath": ["A place having baths for public use."], "public building": ["A building to which there is free access by the public and which is available for the use of a community."], "public health": ["The discipline in health science that, at the level of the community or the public, aims at promoting prevention of disease, sanitary living, laws, practices and a healthier environment.\\n(Source: GUNN)"], "public law": ["The branch of law which governs relationships between individuals and the government."], "public opinion": ["The purported, collective view of the public on some issue or problem, typically formulated by selective polling or sampling, and frequently used as a guide to action or decision."], "public opinion polling": ["The canvassing of a representative sample of a large group of people on some question in order to determine the general opinion of a group."], "public park": ["Park with big trees, ornamental plants, alleys bordered by trees or bushes, fountains and statues situated in a town and whose access is free."], "public participation": ["The involvement of citizens in public matters, with the purpose of exerting influence."], "public-private partnership": ["A joint venture between corporations and government or between community members and government or business beyond the course of normal interaction."], "public sector": ["Segment of the economy run to some degree by government, including national and local governments, government-owned firms and quasi-autonomous non-government organizations."], "public service": ["An enterprise concerned with the provision to the public of essentials, such as electricity or water.\\n(Source: CED)"], "public transport": ["The act or the means of conveying people in mass as opposed to conveyance in private vehicles.\\n(Source: GOOD)"], "public utility": ["An enterprise concerned with the provision to the public of essentials, such as electricity or water.\\n(Source: CED)"], "pulmonary disease": ["Any disease pertaining to the lungs."], "pulp": ["A soft and moist mass of material usually obtained by pressing or beating a relatively hard object. It is mostly used about vegetable matter.", "The soft center of a tooth, where blood vessels and nerve endings are located.", "The soft and moist interior of a fruit.", "The edible inner of fruit, as opposed to that of animals, fish or nuts."], "pump": ["A machine that draws a fluid into itself through an entrance port and forces the fluid out through an exhaust port.\\n(Source: MGH)", "To use a pump to move (liquid or gas).", "To move up and down (e.g. weights in the gym)."], "purchase": ["The acquisition or the act of buying something by payment of money or its equivalent.", "To obtain in exchange for money or goods.", "The mechanical advantage gained by being in a position to use a lever."], "purification": ["The removal of unwanted constituents from a substance."], "purin": ["Any of a number of nitrogenous bases, such as guanine and adenine, that are derivatives of purine and constituents of nucleic acids and certain coenzymes.\\n(Source: CED)"], "pyrolysis": ["The breaking apart of complex molecules into simpler units by the use of heat.\\n(Source: MGH)"], "quality control": ["The inspection, analysis, and other relevant actions taken to provide control over what is being done, manufactured, or fabricated, so that a desirable level of quality is achieved and maintained."], "quality of life": ["All the factors that determine the well-being of an individual or societies, including wealth, employment, physical and mental health, environment, education and leisure time."], "quarry": ["An open or surface working or excavation for the extraction of building stone, ore, coal, gravel, or minerals.", "Animal hunted or caught for food.", "A person who is the aim of an attack (especially a victim of ridicule or exploitation) by some hostile person or influence."], "quarrying": ["The surface exploitation and removal of stone or mineral deposits from the earth's crust.\\n(Source: MGH)"], "race relations": ["The associations, tensions or harmony between two or more groups of people distinguished by history, culture, religion or physique: distinctions erroneously construed as being based on consistent biological differences and as representing, in effect, species of a human genus.\\n(Source: SOC / RHW)"], "radar": ["A system using beamed and reflected radiofrequency energy for detecting and locating objects, measuring distance or altitude, navigating, homing, bombing and other purposes."], "radiation": ["Emission of any rays from either natural or man-made origins, such as radio waves, the sun's rays, medical X-rays and the fall-out and nuclear wastes produced by nuclear weapons and nuclear energy production. Radiation is usually divided between non-ionizing radiation, such as thermal radiation (heat) and light, and nuclear radiation. Non-ionizing radiation includes ultraviolet radiation from the sun which, although it can damage cells and tissues, does not involve the ionization events of nuclear radiation.\\n(Source: WRIGHT)"], "radiation damage": ["Somatic and genetic damage to living organisms caused by exposure to ionizing radiation."], "radiation dose": ["The total amount of radiation absorbed by material or tissues, in the sense of absorbed dose, exposure dose, or dose equivalent."], "radiation effect": ["Prolonged exposure to ionizing radiation from various sources that can be harmful. Nuclear radiation from fallout from nuclear weapons or from power stations, background radiation from substances naturally present in the soil, exposure to X-rays can cause radiation sickness. Massive exposure to radiation can kill quickly and any person exposed to radiation is more likely to develop certain types of cancer than other members of the population.\\n(Source: PHC)"], "radiation exposure": ["The act or state of being subjected to electromagnetic energy strong enough to ionize atoms thereby posing a threat to human health or the environment.\\n(Source: APD / MHD)"], "radiation monitoring": ["The periodic or continuous surveillance or analysis of the level of radiant energy present in a given area, to determine that its prescribed amount has not been exceeded or that it meets acceptable safety standards.\\n(Source: TOE / OMD)"], "radiation physics": ["The study of ionizing radiation and its effects on matter."], "radiation protection": ["Precautionary actions, measures or equipment implemented to guard or defend people, property and natural resources from the harmful effects of ionizing energy."], "radiation sickness": ["Damage to the body resulting from excessive exposure to ionizing radiation which causes symptoms like nausea, fatigue, vomiting, and diarrhea and in severe cases loss of hair, hemorrhage, inflammation and death."], "radio": ["The process, equipment or programming involved in transmitting and receiving sound signals by electromagnetic waves.", "A device that can capture the signal sent over radio waves and render the modulated signal as sound."], "radioactive contamination": ["Contamination of a substance, living organism or site caused by radioactive material."], "radioactive emission": ["The release of radioactive substances into the environment deriving from nuclear installations and from mining, purification and enrichment operations of radioactive elements.\\n(Source: FLGISA)"], "radioactive fallout": ["The material that descends to the earth or water well beyond the site of a surface or subsurface nuclear explosion."], "radioactive substance": ["Any substance that contains one or more radionuclides of which the activity or the concentration cannot be disregarded as far as radiation protection is concerned.\\n(Source: ECHO2)"], "radioactive tracer": ["A radioactive isotope which, when injected into a biological or physical system, can be traced by radiation detection devices, permitting determination of the distribution or location of the substance to which it is attached."], "radioactive waste": ["Any waste that emit radiation in excess of normal background level, including the toxic by-products of the nuclear energy industry."], "radioactivity": ["The property possessed by some atomic nuclei of disintegrating spontaneously, with loss of energy through emission of a charged particle and/or gamma radiation."], "radionuclide": ["A nuclide that exhibits radioactivity.", "An unstable isotope of an element that decays or disintegrates spontaneously, emitting radiation."], "radon": ["A radioactive gaseous element emitted naturally from rocks and minerals where radioactive elements are present. It is released in non-coal mines, e.g. tin, iron, fluorspar, uranium. Radon is an alpha particle emitter as are its decay products and has been indicted as a cause of excessive occurrence of lung cancer in uranium miners. Concern has been expressed at radon levels in some housing usually adjacent to granite rocks or old tin mining regions.\\n(Source: PORT)"], "rag": ["To make someone rather angry or impatient; to cause annoyance.", "A piece of old cloth; a tattered piece of cloth; a shred, a tatter."], "rail traffic": ["The movement and circulation of vehicles transporting goods and people on railroad systems."], "rail transport": ["Transportation of goods and persons by railway.\\n(Source: CEDa)"], "rain": ["Precipitation in the form of liquid water drops with diameters greater than 0.5 millimetres.", "To fall from the clouds in drops of water."], "rain forest": ["A forest of broad-leaved, mainly evergreen, trees found in continually moist climates in the tropics, subtropics, and some parts of the temperate zones."], "rainout": ["A sporting fixture that could not be completed because of rain."], "rain water": ["Water which falls as rain from clouds."], "random test": ["A test which does not always yield the same result when repeated under the same conditions."], "rare species": ["Species which have a restricted world range."], "raw material": ["A crude, unprocessed or partially processed material used as feedstock for a processing operation."], "raw material securing": ["Measures used to ensure the provision of or the access to crude, unprocessed or partially processed materials used as feedstock for processing or manufacturing.\\n(Source: RHWa / MHD)"], "reaction kinetics": ["That branch of physical chemistry concerned with the mechanisms and rates of chemical reactions."], "reactor": ["A device that introduces either inductive or capacitive reactance into a circuit, such as a coil or capacitor.\\n(Source: MGH)"], "reactor safety": ["Those studies and activities that seek to minimise the risk of a nuclear reactor accident.\\n(Source: RRDA)"], "recommendation": ["An action which is advisory in nature rather than one having any binding effect.", "The act of commending."], "recreation": ["Activities that promote refreshment of health or spirits by relaxation and enjoyment.", "Any activity, such as play, that diverts, amuses or stimulates."], "recycled paper": ["Paper that has been separated from the solid waste stream for utilization as a raw material in the manufacture of a new product."], "recycling": ["A resource recovery method involving the collection and treatment of a waste product for use as raw material in the manufacture of the same or a similar product."], "life-cycle management": ["Management of all the stages involved in the life of a product such as raw materials acquisition, manufacturing, distribution and retail, use and re-use and maintenance, recycling and waste management, in order to create less environmentally harmful products.\\n(Source: PORT)"], "red tide": ["Sea water which is covered or discoloured by the sudden growth of algal bloom or by a great increase in single-celled organisms, dinoflagellates."], "chemical reduction": ["Chemical reaction in which an element gains an electron."], "reed": ["Any of various types of tall stiff grass-like plants growing together in groups near water."], "reef": ["A line of rocks in the tidal zone of a coast, submerged at high water but partly uncovered at low water."], "refinery": ["A factory for the purification of some crude material such as ore, sugar, oil, etc.\\n(Source: CED)"], "refining": ["The processing of raw material to remove impurities. \\n\\n(Source: PHC)"], "reflection": ["The return of waves or particles from surfaces on which they are incident."], "reflectometry": ["The study of the reflectance of light or other radiant energy."], "refrigerant": ["A substance that by undergoing a change in phase (liquid to gas, gas to liquid) releases or absorbs a large latent heat in relation to its volume, and thus effects a considerable cooling effect.", "Causing cold or cooling."], "refrigeration": ["The cooling of substances, usually food, below the environmental temperature for preservative purposes."], "refrigerator": ["A household appliance used for keeping food fresh by refrigeration."], "refuge": ["A restricted and isolated area in which plants and animals persisted during a period of continental climatic change that made surrounding areas uninhabitable; especially an ice-free or unglaciated area within or close to a continental ice sheet or upland ice cap, where hardy biotas eked out an existence during a glacial phase. It later served as a center of dispersal for the repopulation of surrounding areas after climatic readjustment.", "A shelter from danger or hardship.", "A place of safety, refuge or protection.", "A shielding or protection against the unpleasant, unwanted, or dangerous."], "refugee": ["A person who is outside his country of origin and who, due to well-founded fear of persecution, is unable or unwilling to avail himself of that country protection."], "refuse-sludge compost": ["Compost derived by the biodegradation of the organic constituents of solid wastes and wastewater sludges."], "regeneration": ["The renewing or reuse of materials such as activated carbon, single ion exchange resins, and filter beds by appropriate means to remove organics, metals, solids, etc.\\n(Source: LEE)"], "region": ["A designated area or an administrative division of a city, county or larger geographical territory that is formulated according to some biological, political, economic or demographic criteria.", "A place in or a part of the body in any way indicated.", "Any considerable and connected part of a space or surface.", "A large area or range of something specified but with undefined boundaries.", "A tract of land of undefined size."], "registration": ["An instance of or a certificate attesting to the fact of entering in an official list various pieces of information in order to facilitate regulation or authorization, including one's name, contact information and, in some instances, data concerning a specific possession or property.", "The act of registering or state of being registered."], "renewable raw material": ["Resources that have a natural rate of availability and yield a continual flow of services which may be consumed in any time period without endangering future consumption possibilities as long as current use does not exceed net renewal during the period under consideration."], "ordinance": ["A rule established by authority; a permanent rule of action."], "rehabilitation": ["A conservation measure involving the correction of past abuses that have impaired the productivity of the resources base.\\n(Source: MGH)"], "rehousing": ["The provision with new or different housing."], "religion": ["The expression of man's belief in and reverence for a superhuman power recognized as the creator and governor of the universe.", "An institution to express belief in a divine power."], "remote sensing": ["The scientific detection, recognition, inventory and analysis of land and water area by the use of distant sensors or recording devices such as photography, thermal scanners, radar, etc.", "Complex of techniques for the remote measure of electromagnetic energy emitted by objects."], "removal": ["The elimination of substances from a medium or from the environment.\\n(Source: RRDA)", "The act of removing a part from a whole."], "renaturation": ["A process of returning natural ecosystems or habitats to their original structure and species composition."], "renewable resource": ["A resource capable of being continuously renewed or replaced through such processes as organic reproduction and cultivation such as those practiced in agriculture, animal husbandry, forestry and fisheries."], "replacement": ["Substitution of an atom or atomic group with a different one.", "The act of replacing or substituting.", "Someone appointed as the substitute of another, and empowered to act for him, in his name or on his behalf."], "representation": ["Any conduct or action undertaken on behalf of a person, group, business or government, often as an elected or appointed voice."], "reprocessing": ["Restoration of contaminated nuclear fuel to a usable condition."], "reptile": ["A class of terrestrial vertebrates, characterized by the lack of hair, feathers, and mammary glands; the skin is covered with scales, they have a three chambered heart and the pleural and peritoneal cavities are continuous.", "Any cold-blooded vertebrate of the class Reptilia."], "rescue service": ["Service organized to provide immediate assistance to persons injured or in distress.\\n(Source: RRDA)"], "research": ["Scientific investigation aimed at discovering and applying new facts, techniques and natural laws.", "A detailed critical inspection."], "research project": ["Proposal, plan or design containing the necessary information and data for conducting a specific survey."], "reservoir": ["An artificial or natural storage place for water, such as a lake or pond, from which the water may be withdrawn as for irrigation, municipal water supply, or flood control."], "residential area": ["Area that has only private houses, not offices and factories."], "residential building": ["A building allocated for residence."], "residual risk": ["Remaining potential for harm to persons, property or the environment following all possible efforts to reduce predictable hazards.\\n(Source: TOE)"], "resin": ["Any of a class of solid or semisolid organic products of natural or synthetic origin with no definite melting point, generally of high molecular weight."], "resorption": ["Absorption or, less commonly, adsorption of material by a body or system from which the material was previously released."], "resource": ["Any component of the environment that can be utilized by an organism.", "Something that one uses."], "respiration": ["The process in living organisms of taking in oxygen from the surroundings and giving out carbon dioxide."], "respiratory air": ["Air volumes inspired and expired through the lungs."], "respiratory disease": ["A disease of the airways."], "respiratory protection apparatus": ["Any of a group of devices that protect the respiratory system from exposure to airborne contaminants; usually a mask with a fitting to cover the nose and mouth.\\n(Source: KOREN)"], "respiratory tract": ["The structures and passages involved with intake, expulsion, and exchange of oxygen and carbon dioxide in the vertebrate body."], "responsibility": ["The obligation to answer for an act done, and to repair or otherwise make restitution for any injury it may have caused."], "resting form": ["Resistant structure that allows the organism to survive adverse environmental conditions.\\n(Source: ALL2)"], "restoration": ["The process of renewing or returning something to its original, normal or unimpaired condition."], "retail trade": ["The sale of goods, in small numbers and directly to the consumer."], "retarding basin": ["A basin designed and operated to provide temporary storage and thus reduce the peak flood flows of a stream."], "reusable container": ["Any container which has been conceived and designed to accomplish within its life cycle a minimum number of trips or rotations in order to be refilled or reused for the same purpose for which it was conceived.\\n(Source: PORT)"], "revegetation": ["Planting of new trees and, particularly, of native plants in disturbed sites where the vegetation cover has been destroyed, to stabilize the land surface from wind and water erosion and to reclame the land for other uses."], "reverse osmosis": ["A technique whereby a solution is forced through a semipermeable membrane under pressure, used to generate drinkable water from sea water, or to separate chemical compounds."], "rice": ["An erect grass, Oryza sativa, that grows in East Asia on wet ground and has drooping flower spikes and yellow oblong edible grains that become white when polished.", "Seeds of the rice plant (Oryza sativa) used as food.", "Boiled rice."], "petition right": ["A legal guarantee or just claim enabling a citizen or employee to compose and submit a formal written request to an authority asking for some benefit or favor or for intervention and redress of some wrong."], "right to information": ["The individual's right to know in general about the existence of data banks, the right to be informed on request and the general right to a print-out of the information registered and to know the actual use made of the information."], "risk": ["The expected number of lives lost, persons injured, damage to property and disruption of economic activity due to a particular natural phenomenon, and consequently the product of the probability of occurrence and the expected magnitude of damage.\\n(Source: GUNN / RRDA)", "A qualitative assessment describing the likelihood of an attacker/threat using an exploit to successfully bypass a defender, attack a vulnerability, and compromise a system. (Schneider)"], "risk analysis": ["A technique used to determine the likelihood or chance of hazardous events occurring (such as release of a certain quantity of a toxic gas) and the likely consequences."], "risk assessment": ["The qualitative and quantitative evaluation performed in an effort to define the risk posed to human health and/or the environment by an action or by the presence or use of a specific substance or pollutant."], "risk-benefit analysis": ["A systematic process of evaluating and assessing the hazards of loss versus the possibility of financial gain or profit."], "risk communication": ["The exchange of information about health or environmental risks among risk assessors and managers, the general public, news media, interest groups, etc."], "risk perception": ["A subjective appreciation by individuals which will more often than not bear little relation to the statistical probability of damage or injury."], "risk reduction": ["Any act, instance or process lowering the probability that harm will come to an area or its population as the result of some hazard."], "river": ["A stream of water which flows in a channel from high ground to low ground and ultimately to a lake or the sea, except in a desert area where it may dwindle away to nothing."], "river water": ["Water which flows in a channel from high ground to low ground and ultimately to a lake or the sea, except in a desert area where it may dwindle away to nothing.\\n(Source: WHIT)"], "road": ["A long piece of hard ground that people can drive along from one place to another."], "road safety": ["Any measure, technique or design intended to reduce the risk of harm posed by moving vehicles along a constructed land route.\\n(Source: RHW)"], "road salt": ["Salt used against the formation of ice on roads."], "road traffic": ["Circulation of motor vehicles and people on the road network."], "road traffic engineering": ["Discipline which includes the design of highways and pedestrian ways, the study and application of traffic statistics, and the environmental aspects of the transportation of goods and people.\\n(Source: CED)"], "rock": ["Any aggregate of minerals that makes up part of the earth's crust. It may be unconsolidated, such as sand, clay, or mud, or consolidated, such as granite, limestone, or coal.", "To move gently back and forth.", "A music style characterized by basic drum-beat, generally 4/4 riffs, based on (usually electric) guitar, bass guitar, drums, and vocals."], "rock wool": ["A generic term for felted or matted fibers manufactured by blowing or spinning threads of molten rock, slag, or glass.\\n(Source: BJGEO)"], "rodent": ["Any of the relatively small placental mammals that constitute the order Rodentia, having constantly growing incisor teeth specialized for gnawing."], "root": ["The absorbing and anchoring organ of a vascular plant; it bears neither leaves nor flowers and is usually subterranean.", "A word from which another word or words are derived.", "Origin, beginning of an event, a condition or a period"], "rotary furnace": ["A heat-treating furnace of circular construction which rotates the workpiece around the axis of the furnace during heat treatment; workpieces are transported through the furnace along a circular path."], "rubber": ["A cream to dark brown elastic material obtained by coagulating and drying the latex from certain plants, especially the rubber tree.", "A contraceptive device consisting of a thin rubber or latex sheath worn over the penis during intercourse.", "An elastic hydrocarbon polymer that naturally occurs as a milky colloidal suspension, or latex, in the sap of some plants."], "rubber processing": ["The systematic series of actions in which a solid substance deriving from rubber trees and plants is toughened and treated chemically to give it the strength, elasticity, resistance and other qualities needed for the manufacture of products such as erasers, elastic bands, water hoses, electrical insulation and tires.\\n(Source: RHW)"], "rubber processing industry": ["A sector of the economy in which an aggregate of commercial enterprises is engaged in the manufacture and marketing of natural or synthetic rubber products.\\n(Source: RHW)"], "rubber waste": ["Any refuse or unwanted material made of synthetic or natural rubber, often the byproduct of rubber processing.\\n(Source: RHW)"], "runoff": ["Rate at which water is removed by flowing over the soil surface. This rate is determined by the texture of the soil, slope, climate, and land use cover (e.g. paved surface, grass, forest, bare soil).\\n(Source: LANDY)"], "rural population": ["The total number of persons inhabiting an agricultural or pastoral region.\\n(Source: RHW)"], "agritourism": ["A form of tourism in which holidays are organized in a farm: meals are prepared with natural products and guests are entertained with handicraft, sporting and agricultural activities."], "safety": ["The state of being secure from harm, injury, danger or risk.", "A contraceptive device consisting of a thin rubber or latex sheath worn over the penis during intercourse."], "safety measure": ["An action, procedure or contrivance designed to lower the occurrence or risk of injury, loss and danger to persons, property or the environment.\\n(Source: OED / RHW)"], "safety rule": ["A principle or regulation governing actions, procedures or devices intended to lower the occurrence or risk of injury, loss and danger to persons, property or the environment.\\n(Source: OED / RHW)"], "safety standard": ["A norm or measure applicable in legal cases for any action, procedure or contrivance designed to lower the occurrence or risk of injury, loss and danger to persons, property or the environment."], "safety study": ["Research, detailed examination and usually a written report on the need for or efficacy of actions, procedures or devices intended to lower the occurrence or risk of injury, loss and danger to persons, property or the environment."], "salamander": ["Any amphibian of the order Urodela (or Caudata). The adults keep their tails by opposition to the frogs and the caecilians.", "Name given to most of the species of amphibians of the order Urodela."], "salination": ["The accumulation of soluble salts by evaporation of the waters that bore them to the soil zone, in a soil of an arid, poorly drained region."], "salmonella": ["General name for a family of microorganisms, one of the largest groups of bacteria, that includes those most frequently implicated in food poisoning and gastroenteritis. Unhygienic handling and inadequate cooking of poultry and meat, improper storage of cold meats and, more recently, contamination of battery-reared hen eggs, are the most common sources of salmonella infections.\\n(Source: WRIGHT)"], "salt content": ["Amount of salt contained in a solution."], "salt marsh": ["Area of brackish, shallow water usually found in coastal areas and in deltas."], "salt meadow": ["A meadow subject to overflow by salt water."], "salt plug": ["The core of a salt dome."], "salt": ["The reaction product when a metal displaces the hydrogen of an acid.", "A condiment (NaCl - Sodium Chloride) used to add to or enhance the flavour of food (commonly with pepper).", "Containing salt.", "To season with salt.", "To preserve with salt.", "To spread salt.", "Randomly generated data added to an encryption algorithm to increase its effectiveness."], "salt water": ["Water that contains dissolved salts."], "salvage": ["The act, process, or business of rescuing vessels or their cargoes from loss at sea."], "sampling": ["The obtaining of small representative quantities of material for the purpose of analysis."], "sampling technique": ["Method of selecting items at random from a set in such a manner that the sample will be representative of the whole."], "sanction": ["A measure, including removal of diplomatic ties, ban on trade, or military intervention, adopted by a country, or group of countries, against another country for political reasons.", "The approval, by some authority, that makes something valid."], "sand": ["A loose material consisting of small mineral particles, or rock and mineral particles, distinguishable by the naked eye; grains vary from almost spherical to angular, with a diameter range from 1/16 to 2 millimeters.", "To cover with sand.", "To rub with sandpaper."], "sand dune fixation": ["Stabilization of dunes effected by the planting of marram grass (Ammophila arenaria), or rice grass, whose long roots bind the surface layers of sand and so hinder its removal by wind. A larger scale method of dealing with the same problem is by afforestation.\\n(Source: BLYFRE)"], "sand dune": ["An accumulation of loose sand heaped up by the wind."], "sand extraction": ["The extraction of sand by mining for building purposes and for the extraction of heavy minerals such as rutile and zircon."], "sand pit": ["A place where sand is extracted from the ground."], "sanitation": ["The study and use of practical measures for the preservation of public health."], "sanitation plan": ["Plans for the control of the physical factors in the human environment that can harm development, health, or survival."], "saprobic index": ["Indication or measure of the level of organic pollution."], "saprobe": ["Referring to the classification of organisms according to the way in which they tolerate pollution."], "satellite": ["An object that orbits around a larger one."], "saving": ["The amount of current income which is not spent for survival or enjoyment."], "sawdust": ["Small wood fragments produced by a saw when cutting."], "schistosomiasis": ["A disease in which humans are parasitized by any of three species of blood flukes: Schistosoma mansoni, S. haematobium, and S. japonicum; adult worms inhabit the blood vessels."], "school": ["An institution or building at which children and young people receive education.", "Group of a large number of fish (or other sea animals, such as dolphins or whales), normally from the same species, that swim together."], "school teaching": ["Instruction or training received in any educational institution, but especially to persons under college age.\\n(Source: RHW)"], "science": ["The study of the physical universe and its contents by means of reproducible observations, measurements, and experiments to establish, verify, or modify general laws to explain its nature and behaviour."], "scrap material": ["Recyclable material from any manufacturing process or discarded consumer products."], "scrap material price": ["The amount of money or the monetary rate at which materials discarded from manufacturing operations can be bought or sold.\\n(Source: TOE / RHW)"], "scrap metal": ["Any metal material discarded from manufacturing operations and usually suitable for reprocessing."], "scrap vehicle": ["Car which is no longer functional and may be dismantled for spare parts or completely demolished."], "screening": ["The reduction of the electric field about a nucleus by the space charge of the surrounding electrons."], "sea": ["The mass of water occupying all of the Earth's surface not occupied by land, but excluding all lakes and inland seas.", "In general, the marine section of the globe as opposed to that of the land.", "A body of salt water that is smaller than an ocean and generally in proximity to a continent.", "Different parts of the ocean.", "The use of the sea (as in, naval operations, the shipping trade, the profession of a sailor, etc.)", "The darker parts of the moon's surface.", "A large lake.", "The volume of water in the sea in relation to the tides.", "Condition of the sea with regards to \u0131ts use (like sailing or swimming).", "At sea, the direction of the waves.", "A large, heavy wave in the sea.", "Wind driven waves.", "A large number (of something)", "A large horizontal surface.", "A great quantity (of a liquid).", "A space filled with particles of a certain kind.", "A large quantity (of something)."], "sea bed": ["The bottom of the ocean."], "sea circulation": ["Large-scale horizontal water motion within an ocean."], "sea level": ["The level of the surface of the ocean; especially, the mean level halfway between high and low tide, used as a standard in reckoning land elevation or sea depths."], "seashore": ["The zone of unconsolidated material that extends landward from the low water-line to where there is marked change in material or physiographic form or to the line of permanent vegetation."], "season": ["One of the six equal periods into which the Hindu year is divided.", "One of the four equal periods into which the year is divided by the equinoxes and solstices, resulting from the apparent movement of the sun north and south of the equator during the course of the earth's orbit around it. These periods (spring, summer, autumn and winter) have their characteristic weather conditions in different regions, and occur at opposite times of the year in the N and S hemispheres.", "A yearly recurring period of undetermined length, relatively long but still shorter than a year, when a certain crop is ripe or a certain type of work, most commonly related to agriculture, is being performed.", "A predetermined series of cultural events; for example theatrical performances or sports events, that take place under an extended period of time, which however is shorter than a year.", "To add spices."], "seasonal migration": ["The periodic movement of a population from one region or climate to another in accordance with the yearly cycle of weather and temperature changes."], "sea water": ["Water found in the seas or oceans which has an average salinity of about 3.5%."], "sea water desalination": ["Removal salt from ocean or brackish water."], "secondary biotope": ["In the case of disruption of an existing biotope, secondary biotope can be created as a compensation and substitute measure for the loss of the natural one.\\n(Source: RRDA)"], "secondary education": ["The years of instruction following elementary school and until the end of high school.\\n(Source: COE)"], "secondary sector": ["The part of a country or region's economy that produces commodities without much direct use of natural resources."], "second-hand goods": ["Goods or products that have been used previously."], "economic sector": ["A part of a country's or region's commercial, industrial and financial activity, delimited either by public, corporate and private organization of expenditures or by agriculture, manufacturing and service product types."], "sedimentary basin": ["A geomorphic feature of the earth in which the surface has subsided for a prolonged time, including deep ocean floors, intercontinental rifts and elevated and interior drainage basins."], "sediment": ["Any material transported by water which will ultimately settle to the bottom after the water loses its transporting power.\\n(Source: LANDY)", "Matter deposited by some natural process."], "seed dressing": ["A chemical applied before planting to protect seeds and seedlings from disease or insects."], "water seepage": ["The slow movement of water through small openings and spaces in the surface of unsaturated soil into or out of a body of surface or subsurface water.\\n(Source: MGH)"], "seismic activity": ["The phenomenon of Earth movements."], "seismic monitoring": ["The gathering of seismic data from an area."], "seizure": ["The official or legally authorized act of taking away possessions or property, often for a violation of law or to enforce a judgment imposed by a court of law."], "selenium": ["A highly toxic, nonmetallic element with symbol Se and atomic number 34; used in analytical chemistry, metallurgy, and photoelectric cells."], "self-purification": ["A natural process of organic degradation that produces nutrients utilized by autotrophic organisms.\\n(Source: LBC)"], "semiconductor": ["A solid crystalline material whose electrical conductivity is intermediate between that of a metal and an insulator and is usually strongly temperature-dependent."], "semimanufactured product": ["Product that has undergone a partial processing and is used as raw material in a successive productive step.\\n(Source: ZINZAN)"], "semi-metal": ["An element having some properties characteristic of metals and others of non-metals."], "sensitivity analysis": ["A formalized procedure to identify the impact of changes in various model components on model output. Sensitivity analysis is an integral part of simulation experimentation and may influence model formulations. It is commonly used to examine model behaviour. The general procedure is to define a model output variable that represents an important aspect of model behaviour. The values of various inputs of the model are then varied and the resultant change in the output variable is monitored. Large changes in the output variable imply that the particular input varied is important in controlling model behaviour. Within this general definition, sensitivity analysis has been applied to a variety of model inputs including state variables, environmental variables and initial conditions.\\n(Source: YOUNG)"], "separator": ["A machine for separating materials of different specific gravity by means of water or air."], "septic tank": ["A tank, usually underground, into which sewage flows, the deposited matter being wholly, or partially broken down through anaerobic action."], "sequestration": ["1) A legal term referring generally to the act of valuable property being taken into custody by an agent of the court and locked away for safekeeping, usually to prevent the property from being disposed of or abused before a dispute over its ownership can be resolved.\\n2) The taking of someone's property, voluntarily (by deposit) or involuntarily (by seizure), by court officers or into the possession of a third party, awaiting the outcome of a trial in which ownership of that property is at issue.\\n(Source: DUC / EMBMO)", "The act of segregating or sequestering."], "snake": ["Any reptile of the suborder Serpentes, typically having a scaly cylindrical limbless body, fused eyelids, and a jaw modified for swallowing large prey."], "services": ["The business sector that consists of companies whose line of work involves doing something for customers, but that do not produce goods.", "A service station to get food and eat something, often found at motorways."], "settlement concentration": ["The distribution or total amount of communities, villages and houses within a specified geographic area."], "urban sprawl": ["The expansion of urban areas into surrounding rural areas, creating low-density neighbourhoods."], "settling tank": ["A tank into which a two-phase mixture is fed and the entrained solids settle by gravity during storage."], "sewage": ["A liquid composed by waste substances in decomposition that is conveyed in sewers."], "sewage farm": ["Area of land on which sewage or any other type of waste water is distributed in order to purify it."], "sewage sludge": ["A semi-liquid waste with a solid concentration in excess of 2500 parts per million, obtained from the purification of municipal sewage."], "sewerage system": ["System of pipes, usually underground, for carrying waste water and human waste away from houses and other buildings, to a place where they can be safely get rid of."], "shellfish": ["An aquatic invertebrate, such as a mollusc or crustacean, that has a shell."], "shielding device": ["Barrier devised for keeping people away from harmful substances."], "shifting cultivation": ["Agricultural practice using the rotation of fields rather than crops, short cropping periods followed by long fallows and the maintenance of fertility by the regeneration of vegetation.\\n(Source: PHC)"], "ship": ["A vessel propelled by engines or sails for navigating on the water, especially a large vessel that can not be carried aboard another, as distinguished from a boat.", "A boat that by its size, solidity and power is appropriate for long navigations and big marine enterprises."], "shipbuilding": ["The art or business of designing and constructing ships."], "shipping accident": ["An unexpected incident, failure or loss involving a vessel or its contents in the course of commercial transport that poses potential harm to persons, property or the environment.\\n(Source: RHW)"], "ship garbage": ["Domestic and operational wastes, disposed of continuously or periodically, that are generated during the normal operation of a ship; usually excluding fresh fish waste from fishing operations."], "shooting range": ["Area designed for target shooting."], "shop": ["A place, especially a small building, for the retail sale of goods and services.", "To visit shops; to look around shops with the intention of buying something."], "show": ["A performance, program or exhibition providing entertainment to a group of people, displayed either through some communication media, such as radio or television, or live at a museum or theater.", "To give a proof that something is true.", "To have somebody see something.", "To go or travel in the company of someone.", "The pretending that something is the case in order to make a good impression."], "shredder": ["A size-reduction machine which tears or grinds materials to a smaller and more uniform particle size."], "shrub": ["A woody perennial plant, smaller than a tree, with several major branches arising from near the base of the main stem.", "A plant resembling a small tree, but has no, and will never develop, a stem."], "sick building syndrome": ["A set of symptoms, including headaches, fatigue, eye irritation, and dizziness, typically affecting workers in modern airtight office buildings and thought to be caused by indoor pollutants, such as formaldehyde fumes, particulate matter, microorganisms, etc."], "side effect": ["Any secondary effect, especially an undesirable one."], "sieving": ["The size distribution of solid particles on a series of standard sieves of decreasing size, expressed as a weight percent.\\n(Source: MGH)"], "silencer": ["Any device designed to reduce noise, especially the device in the exhaust system of a motor vehicle."], "silicon": ["A brittle metalloid element with symbol Si and atomic number 14 that exists in two allotropic forms; occurs principally in sand, quartz, granite, feldspar, and clay. It is usually a grey crystalline solid but is also found as a brown amorphous powder. It is used in transistors, rectifiers, solar cells, and alloys. Its compounds are widely used in glass manufacture, the building industry, and in the form of silicones."], "silo": ["A large round tower on a farm for storing grain or winter food for cattle."], "silt": ["The fine mineral material formed from the erosion of rock fragments and deposited by rivers and lakes. Its particles are the intermediate form between sand and clay. The particles can range in size from 0.01-0.05 mm in diameter."], "silver": ["A very ductile malleable brilliant greyish-white element with symbol Ar and atomic number 47 having the highest electrical and thermal conductivity of any metal.", "Made of silver.", "The colour of silver. A shiny greyish-white."], "simulation": ["A representation of a problem, situation in mathematical terms, especially using a computer.\\n(Source: CED)", "The attempt by a football player to gain an unfair advantage by falling to the ground and possibly feigning an injury."], "sizing": ["Act of fixing the cross-section of structural components on the basis of statics and material strength."], "skiing": ["The gliding over snow on skis, especially as a sport."], "skin": ["The tissue forming the outer covering of the vertebrate body: it consists of two layers, the outermost of which may be covered with hair, scales, feathers, etc. It is mainly protective and sensory in function.", "Strip or pull off the skin or hide of"], "slag": ["A nonmetallic product resulting from the interaction of flux and impurities in the smelting and refining of metals."], "slaughterhouse": ["A place where animals are butchered for food."], "slaughterhouse waste": ["Animal body parts cut off in the preparation of carcasses for use as food. This waste can come from several sources including slaughterhouses, restaurants, stores and farms.\\n(Source: OED)"], "sleep": ["A periodic state of physiological rest during which consciousness is suspended and metabolic rate is decreased.", "To rest in a state of decreased consciousness and reduced metabolism."], "sleep disturbance": ["Medical disorder of the sleep patterns of a person or animal. (Source: Wikipedia)"], "sludge": ["A semifluid, slushy, murky mass of sediment resulting from treatment of water, sewage, or industrial and mining wastes, and often appearing as local bottom deposits in polluted bodies of water.\\n(Source: BJGEO)", "Soaked clay or soil; very soft ground.", "A soft, soupy, or muddy bottom deposit, such as found on tideland or in a stream bed."], "sluice": ["Vertical sliding gate or valve to regulate the flow of water in a channel or lock."], "smog": ["Air pollution consisting of smoke and fog."], "smog warning": ["Action, device or announcement that serves to give caution or notice to the level of air pollutants typically associated with oxidants in a given area."], "smoke": ["An aerosol, consisting of visible particles and gases, produced by the incomplete burning of carbon-based materials, such as wood and fossil fuels.", "To inhale smoke from for example a cigarette or a cigar.", "A product manufactured out of cured and finely cut leaves, which are rolled or stuffed into a paper-wrapped cylinder for smoking.", "To kill a person or an animal with a shot from a firearm.", "To expose food to the smoke of wood fires in order to preserve it.", "To give off smoke."], "smoking": ["The inhalation and exhalation of carcinogenic fumes from burning plant material, usually tobacco.", "The process of flavoring, cooking, or preserving food by exposing it to the smoke from burning or smoldering plant materials, most often wood."], "colubrid": ["Family of snakes (Colubridae), including many harmless snakes, such as the grass snake."], "snow": ["The most common form of frozen precipitation, usually flakes or starlike crystals, matted ice needles, or combinations, and often rime-coated.", "To fall from the clouds in the form of ice crystals.", "Material composed of small ice crystals.", "A street name for cocaine.", "To confuse completely by concealing one's true motives from, especially by elaborately feigning good intentions so as to gain an end."], "snowslide": ["An avalanche of relatively pure snow; some rock and earth material may also be carried downward."], "soaking": ["Absorption of liquid by a solid or a semisolid material.\\n(Source: MGH)"], "soap": ["A cleansing agent, manufactured in bars, granules, flakes, or liquid form, made from a mixture of the sodium salts of various fatty acids of natural oils and fats.", "A television serial about the lives of melodramatic characters, which are often filled with strong emotions, highly dramatic situations and suspense."], "social condition": ["An existing circumstance, situation or state affecting the life, welfare and relations of human beings in community.\\n(Source: RHW)"], "social development": ["The state of nations and the historical processes of change experienced by them."], "social differentiation": ["A concept associated with evolutionary theories of history and with structural functionalism. Societies are seen as moving from the simple to the complex via a process of social change based on structural differentiation."], "social dynamics": ["The pattern, change, development and driving forces of a human group, community or society."], "social facility": ["Any structure designed, built or installed to provide space for living or interaction among persons in a community.\\n(Source: RHW)"], "social group": ["A collection of people who interact with one another and share a certain feeling of unity.\\n(Source: SOC)"], "social medicine": ["Medicine as applied to treatment of diseases which occur in certain social groups."], "social movement": ["A organized effort by a significant number of people to change (or resist change in) some major aspect or aspects of society."], "social participation": ["Collective, civic action shared and performed by a significant number of the community or general population.\\n(Source: RHW)"], "social policy": ["A course of action adopted and pursued by government, business or some other organization, which seeks to ensure that all people have acceptable working or living conditions by providing social security, welfare, health care, insurance, fair employment practices, low cost housing or educational opportunities."], "social problem": ["A generic term applied to the range of conditions and aberrant behaviours which are considered to be manifestations of social disorganization and to warrant changing via some means of social engineering."], "social relief": ["Public assistance especially financial given to persons in special need or difficulty."], "social security": ["Branch of social legislation which has as its purpose the protection of workers from risks resulting from the impairment or loss of their earning capacity due to predetermined events."], "social structure": ["A term loosely applied to any recurring pattern of social behaviour; or, more specifically, to the ordered interrelationships between the different elements or a social system or society."], "social system": ["The concept of system appears throughout the social and natural sciences and has generated a body of literature of its own (general systems theory). A system is any pattern of relationships between elements, and is regarded as having emergent properties on its own over and above the properties of its elements."], "society": ["Human group of people, more or less large and complex, associated for some common interest and characterized by distinctive hierarchical relationships.", "A formal association of people with similar interests."], "sociology": ["The study of the development, organization, functioning and classification of human societies."], "software": ["The general term used to describe all of the various programs that may be used on a computer system. It can be divided into four main categories: systems software, development software, user interface software, applications software."], "soil": ["The top layer of the land surface of the earth that is composed of disintegrated rock particles, humus, water and air.", "A mixture of sand and organic material, used to support plant growth.", "To make filthy.", "To become filthy."], "soil acidification": ["The buildup of hydrogen cations, also called protons, which reduces the pH of the soil."], "soil air": ["The air and other gases in spaces in the soil; specifically that which is found within the zone of aeration. Also known as soil atmosphere.\\n(Source: MGH)"], "soil biology": ["The study of the living organisms, mainly microorganisms and microinvertebrates which live within the soil, and which are largely responsible for the decomposition processes vital to soil fertility."], "soil chemistry": ["The study of the inorganic and organic components of the soil and its life cycles."], "soil compaction": ["An increase in bulk density (mass per unit volume) and a decrease in soil porosity resulting from applied loads, vibration, or pressure."], "soil condition": ["Description of the character of the surface of the ground at the time of observation, especially in relation to the influence of rain and snow.\\n(Source: ECHO2)"], "soil decontamination": ["Technologies employed in the removal of PCBs, PAH, pesticides and, more generally, of organic compounds by physical, chemical or biological treatments.\\n(Source: EUROPAa)"], "soil erosion": ["Detachment and movement of topsoil or soil material from the upper part of the profile, by the action of wind or running water, especially as a result of changes brought about by human activity, such as unsuitable or mismanaged agriculture."], "soil fertility": ["The status of a soil with respect to the amount and availability to plants of elements necessary for plant growth."], "soil formation": ["The combination of natural processes by which soils are formed."], "soil improvement": ["Process of protecting the soil from excessive erosion and making soil more fertile and productive.\\n(Source: LANDY)"], "soil layer": ["Distinctive successive layers of soil produced by internal redistribution processes. Conventionally the layers have been divided into A, B and C horizons. The A horizon is the upper layer, containing humus and is leached and/or eluviated of many minerals. The B horizon forms a zone of deposition and is enriched with clay minerals and iron/aluminium oxides from the A layer. The C layer is the parent material for the present soil and may be partially weathered rock, transported glacial or alluvial material or an earlier soil.\\n(Source: ALL)"], "soil map": ["A two-dimensional representation that shows the areal extent or the distribution of soils in relation to other features of the land surface."], "soil mechanics": ["The study of the physical properties of soil, especially those properties that affect its ability to bear weight such as water content, density, strength, etc.\\n(Source: CED)"], "soil mineralogy": ["Study of the formation, occurrence, properties, composition, and classification of the minerals present in the soil.\\n(Source: BJGEOa)"], "soil moisture": ["Water stored in soils."], "soil organism": ["Organism which lives in the soil."], "soil pollutant": ["Solid, liquid and gaseous substances that detrimentally alter the natural condition of the soil."], "soil profile": ["A vertical section of a soil, showing horizons and parent material."], "soil quality": ["All current positive or negative properties with regard to soil utilization and soil functions."], "soil salination": ["The accumulation of soluble mineral salts near the surface of soil, usually caused by the capillary flow of water from saline ground water."], "soil science": ["The study of the properties, occurrence, and management of soil as a natural resource."], "soil subsidence": ["A sinking down of a part of the earth's crust, generally due to underground excavations."], "soil surface sealing": ["Any activity or process in which ground surface areas are packed or plugged to prevent percolation or the passage of fluids."], "soil type": ["A phase or subdivision of a soil series based primarily on texture of the surface soil to a depth at least equal to plow depth (about 15 cm).\\n(Source: BJGEO)"], "soil use": ["Functional utilization of soil for agriculture, industry, or residential building purposes.\\n(Source: GREMES)"], "soil water": ["Water stored in soils.\\n(Source: LANDY)"], "solar cell": ["A device for converting sunlight into electrical power using a semiconductor sensitive to the photovoltaic effect.", "A device that absorbs radiant energy and converts it into electrical energy."], "solar collector": ["Device which converts the energy from light into electricity."], "solar energy": ["The energy transmitted from the sun in the form of electromagnetic radiation. The most successful examples of energy extraction from the sun are so far solar cells used in satellites and solar collectors used to heat water.\\n(Source: MGH / ALL)"], "solar heating": ["A domestic or industrial heating system that makes direct use of solar energy."], "solar power station": ["Plant where energy is generated using radiation from the sun."], "solar radiation": ["The electromagnetic radiation and particles emitted by the sun."], "solid matter": ["A crystalline material, that is, one in which the constituent atoms are arranged in a three-dimensional lattice, periodic in three independent directions."], "solid state": ["The physical state of matter in which the constituent molecules, atoms, or ions have no translatory motion although they vibrate about the fixed positions that they occupy in a crystal lattice."], "solubility": ["The ability of a substance to form a solution with another substance.\\n(Source: MGH)"], "solvent": ["Substance, generally a liquid, capable of dissolving another substance.", "The conclusion or end to which any course or condition of things leads."], "songbird": ["Any passerine bird of the suborder Oscines, having highly developed vocal organs and, in most, a music call.\\n(Source: CED)"], "sonic boom": ["A noise caused by a shock wave that emanates from an aircraft or other object traveling at or above sonic velocity."], "soot": ["Impure black carbon with oily compounds obtained from the incomplete combustion of resinous materials, oils, wood, or coal."], "sorption": ["The taking up, usually, of a liquid or gas into the body of another material (the absorbent)."], "sound": ["Auditory sensation produced by the oscillations, stress, pressure, particle displacement, and particle velocity in a medium with internal forces; pressure variation that the human ear can detect.\\n(Source: KOREN)", "To produce a sound."], "sound emission": ["Diffusion into the environment of a sound emitted from a given source."], "sound immission": ["The introduction in the environment of noise deriving from various sources that can be grouped in: transportation activities, industrial activities and daily normal activities.\\n(Source: DIFIDa)"], "sound level": ["The sound pressure level (in decibels) at a point in a sound field, averaged over the audible frequency range and over a time interval.\\n(Source: MGH)"], "soundproofing": ["Reducing or eliminating reverberation in a room by placing sound-absorbing materials on the walls and ceiling.\\n(Source: MGH)"], "sound propagation": ["The travelling of acoustic waves in the atmosphere with a speed independent of their amplitude. The speed only depends on the acoustic medium and is proportional to the square root of the absolute temperature for any given medium.\\n(Source: RRDA / PARCOR)"], "sound transmission": ["Passage of a sound wave through a medium or series of media."], "South America": ["A continent in the southern part of the western hemisphere, astride the equator and the Tropic of Capricorn, bordered by the Caribbean Sea to the north and between the Atlantic and Pacific Oceans, connected to North America by the Isthmus of Panama, and divided into twelve countries: Argentina, Bolivia, Brazil, Chile, Columbia, Ecuador, Guyana, Paraguay, Peru, Suriname, Uruguay and Venezuela."], "South Atlantic Ocean": ["An ocean south of the equator between the eastern coast of South America and the western coast of Africa that extends southward to the Antarctic continent, including the Drake Passage, South Sandwich Islands and Falkand Islands."], "Southeast Asia": ["A geographic region of continental Asia, south of China, west of the South Pacific Ocean, north of the Indian Ocean, and east of the Bay of Bengal and the Indian subcontinent, including the Indochina Peninsula, the Malay Peninsula and the Indonesian and Philippine Archipelagos, and countries such as Brunei, Cambodia, Indonesia, Laos, Malaysia, Myanmar, the Philippines, Singapore, Thailand and Vietnam."], "Southern Africa": ["A geographic region of the African continent astride the Tropic of Capricorn, including Angola, Botswana, Lesotho, Malawi, Mozambique, Namibia, South Africa, Swaziland, Zambia and Zimbabwe, and also the Kalahari Desert, Zambezi River and Orange River.\\n(Source: AFR)", "ISO 639-6 entity"], "Southern Asia": ["A geographic region of the Asian continent bordered in the north by the countries of Central Asia and in the south by the Arabian Sea and the Bay of Bengal, extending westward into Iran and eastward into China, including Afghanistan, Pakistan, India, Nepal, Bangladesh, Burma, Bhutan and Sri Lanka."], "South Pacific Ocean": ["An ocean south of the equator between Southeast Asia and Australia in the Eastern hemisphere and South America in the Western hemisphere, extending southward to the Antarctic region, including the Tasman and Coral seas and numerous islands, such as Galapagos, Solomon, Easter, Samoa, Fiji and Tonga islands, and also New Zealand and its islands."], "space travel": ["Travel in the space beyond the earth's atmosphere performed for scientific research purposes."], "space waste": ["Nonfunctional debris of human origin left in a multitude of orbits about the earth as the result of the exploration and use of the environment lying outside the earth's atmosphere."], "spasmodic croup": ["A respiratory condition that is usually triggered by an acute viral infection of the upper airway."], "special law": ["One relating to particular persons or things; one made for individual cases or for particular places or districts; one operating upon a selected class, rather than upon the public generally. A law is special when it is different from others of the same general kind or designed for a particular purpose, or limited in range or confined to a prescribed field of action or operation."], "special waste": ["Waste which must be handled in a particular manner and for which particular rules apply."], "species": ["A taxonomic category ranking immediately below a genus and including closely related, morphologically similar individuals which actually or potentially inbreed."], "conservation of species": ["Controlled utilization, protection or development of selected classes of plants or animals for their richness, biodiversity and benefits to humanity.\\n(Source: TOE / EEN)"], "spectroscopy": ["The branch of physics concerned with the production, measurement, and interpretation of electromagnetic spectra arising from either emission or absorption of radiant energy by various substances."], "speed": ["A scalar measure of the rate of movement of a body expressed either as the distance travelled divided by the time taken (average speed) or the rate of change of position with respect to time at a particular point (instantaneous speed). It is measured in metres per second, miles per hour, etc.", "To move faster.", "An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N.", "To cause to move faster.", "To move fast."], "speed limit": ["The maximum permitted speed at which a vehicle may travel on certain roads."], "spider": ["Any predatory silk-producing arachnid of the order Araneae, having four pairs of legs and a rounded unsegmented body consisting of abdomen and cephalothorax.", "A type of skimmer in the form of a wire mesh basket attached to a handle, used to remove food from a hot liquid or skim off foam from a broth."], "spillage": ["The uncontrolled discharge, leakage, dripping or running over of fluids or liquid substances.", "Fluid or liquid substance that was discharged, leaked, dripped or running over without control."], "spoil dump": ["Place where rubbish and waste minerals dug out of a mine are deposited."], "poriferan": ["A phylum of the animal kingdom characterized by the presence of canal systems and chambers through which water is drawn in and released; tissues and organs are absent."], "sport": ["The complex of individual or group activities pursued for exercise or pleasure, often taking a competitive form.", "A person who engages in sports."], "sports facility": ["Buildings, constructions, installations, organized areas and equipment for indoor and outdoor sport activities.\\n(Source: RRDA)"], "spray can": ["An aerosol can for applying paint, deodorant, etc., as a fine spray."], "sprayed asbestos": ["Asbestos emitted into the atmosphere in a spraying operation."], "spring water": ["Water obtained from an underground formation from which water flows naturally to the surface, or would flow naturally to the surface if it were not collected underground."], "square": ["Delimited area on a game board, a form or in a table", "An open area in a town, sometimes including the surrounding buildings.", "A two dimensional polygon with four equal sides and four right angles.", "Mathematics: to multiply a value, term, or expression by itself.", "Having the shape of a square (the polygone)."], "squatter settlement": ["Settlement on the outskirts of a city, often built without authorization, where poor people live in improvised dwellings made from carton, wood or corrugated metal."], "stable": ["A building or structure usually with stalls that is used to house and feed horses, cattle or other animals.", "In a state that is not likely to change."], "stack": ["A great number or large amount of things not placed in a pile.", "A pile of similar objects, each directly on top of the last.", "A linear data structure in which the last datum stored is the first retrieved.", "To place one or more objects or material in the form of a stack or on an existing stack.", "To put together several things in one pile; to arrange in stacks."], "standard": ["Something considered by an authority or by general consent as a basis of comparison.", "A rule or principle that is used as a basis for judgement.", "An object regarded as the most common size or form of its kind.", "An average or normal quality, quantity, or level."], "staple food": ["The most commonly or regularly eaten food in a country or community and which forms the mainstay of the total calorie supply, especially in the poorer populations and at times of food shortage."], "starch": ["A polysaccharide which is a combination of many monosaccharide molecules, made during photosynthesis and stored as starch grains in many plants.", "To treat with laundry starch in order to stiffen."], "state": ["A people permanently occupying a fixed territory bound together by common law, habits and custom into one body politic exercising, through the medium of an organized government, independent sovereignty and control over all persons and things within its boundaries, unless or until authority is ceded to a federation or union of other states.", "A political entity asserting ultimate authority over a geographical area.", "The condition in which someone or something is in.", "To declare to be a fact.", "A political division of a federation retaining a degree of autonomy.", "In computing, the stable condition of a processor during a particular clock cycle.", "In computing, the set of all parameters relevant to a computation.", "In computing, the values of all parameters at some point in a computation.", "To put before."], "state of the art": ["Everything made available to the public by means of a written or oral description, by use or in any other way before the date of the patent application, or an application filed in a foreign country the priority of which is validly claimed."], "state of matter": ["One of the three fundamental conditions of matter: the solid, the liquid, and gaseous states."], "station": ["A place along a route or line at which a bus, train, etc. stops for fuel or to pick up or let off passengers or goods, especially with ancillary buildings and services.", "A place used for broadcasting radio or television."], "statistical analysis": ["The body of techniques used in statistical inference concerning a population."], "statistics": ["A branch of mathematics dealing with the collection, analysis, interpretation, and presentation of masses of numerical data."], "status of development": ["The extent to which a society promotes human well-being in all dimensions of existence by forming people's capabilities, expanding choices and increasing opportunities.\\n(Source: POP)"], "steam generator": ["A pressurized system in which water is vaporized to steam by heat transferred from a source of higher temperature, usually the products of combustion from burning fuels."], "steel": ["Any of various alloys based on iron containing carbon (usually 0.1-0.7 per cent) and often small quantities of other elements such as phosphorus, sulphur, manganese, chromium, and nickel. Steels exhibit a variety of properties, such as strength, machinability, malleability, etc., depending on their composition and the way they have been treated."], "steel industry": ["Industry that deals with the processing of iron."], "steroid": ["A compound composed of a series of four carbon rings joined together to form a structural unit called cyclopentanoperhydrophenanthrene."], "stock management": ["The handling or controlling of accumulated materials or stored goods."], "stocktaking": ["The counting over of materials or goods on hand, as in a stockroom or store."], "stone": ["A lump or mass of hard consolidated mineral matter that is used in construction, either crushed for use as aggregate or cut into shaped blocks as dimension stone.", "A small (and usually irregular) piece of mineral, approximately 20-200 mm in diameter.", "The wooden shell found inside some fruits, particularly drupes, that surrounds the seed.", "To kill or excecute (a person) by throwing rocks or boulders at and on them.", "An Imperial unit of weight and mass, equal to 6.35029318 kilograms.", "Made out of stone."], "storm": ["An atmospheric disturbance involving perturbations of the prevailing pressure and wind fields on scales ranging from tornadoes to extratropical cyclones; also the associated weather and the like.\\n(Source: MGH)", "To act or speak violently, as if in state of a great anger."], "storm damage": ["Damage caused by a storm, for example damaged houses, streets and power lines, uprooted trees, destroyed crops."], "stove": ["A chamber within which a fuel-air mixture is burned to provide heat, the heat itself being radiated outward from the chamber; used for space heating, process-fluid heating, and steel blast furnaces.", "A kitchen appliance used for cooking food."], "stratification": ["The arrangement of a body of water, as a lake, into two or more horizontal layers of different characteristics, especially densities.\\n(Source: MGH)"], "stratosphere": ["The layer of the atmosphere which is sandwiched between the troposphere and mesosphere."], "stratospheric ozone depletion": ["Damage of the ozone shield by chemicals released on Earth."], "stream measurement": ["The quantitative determination of the rate and amount of flow or discharge from a natural body of running water, such as a small river or brook."], "street cleaning": ["The process of removing dirt, litter or other unsightly materials from city or town streets."], "strength of materials": ["The material's ability to resist an applied force."], "stress": ["A stimulus or succession of stimuli of such magnitude as to tend to disrupt the homeostasis of the organism.", "Emphasis on a word or phrase by pronouncing it by increasing the volume or changing the tone.", "To stress, single out as important.", "Difficulty that causes worry or emotional tension.", "To test the limits of.", "To put stress on; to utter with an accent."], "strip mining": ["Superficial mining, in which the valuable rock is exposed by removal of overburden."], "strontium": ["A soft silvery-white element of the alkaline earth group of metals, occurring chiefly as celestite and as strontianite."], "structure-activity relationship": ["The association between a chemical structure and carcinogenicity."], "structure-borne noise": ["Sound that travels over at least part of its path by means of the vibration of a solid structure."], "submarine morphology": ["That aspect of geological oceanography which deals with the relief features of the ocean floor and with the forces that modify them."], "submarine": ["A boat that can go underwater.", "Located under the surface of the sea."], "subsidence": ["A sinking down of a part of the earth's crust, generally due to underground excavations.", "The sudden sinking or gradual downward settling of the Earth's surface with little or no horizontal motion. The movement is not restricted in rate, magnitude, or area involved. Subsidence may be caused by natural geologic processes, such as solution, thawing, compaction, slow crustal warping, or withdrawal of fluid lava from beneath a solid crust; or by man's activity, such as subsurface mining or the pumping of oil or ground water."], "subsidy": ["Any monetary grant made by the government to a private industrial undertaking or charitable organization, but especially one given to consumers or producers in order to lower the market price of some service or product and make it readily affordable to the public."], "subsoil": ["Soil underlying surface soil, devoid of plant roots."], "suburb": ["A residential district situated on the outskirts of a city or town."], "sulphur dioxide": ["A poisonous gas with the formula SO2 that is released by volcanoes and the burning of coal and petroleum."], "sulphuric acid": ["A highly corrosive acid made from sulfur dioxide; widely used in the chemical industry."], "surface-active agent": ["A substance that, when used in small quantities, modifies the surface properties of liquids or solids."], "surface runoff": ["The water flow that occurs when the soil is infiltrated to full capacity and excess water from rain, meltwater, or other sources flows over the land."], "surface tension": ["The force acting on the surface of a liquid, tending to minimize the area of the surface; quantitatively, the force that appears to act across a line of unit length on the surface. Also known as interfacial force; interfacial tension; surface intensity.\\n(Source: MGH)"], "surface treatment": ["Any method of treating a material (metal, polymer, or wood) so as to alter the surface, rendering it receptive to inks, paints, lacquers, adhesives, and various other treatments, or resistant to weather or chemical attack."], "surface water": ["All waters on the surface of the Earth found in streams, rivers, ponds, lakes, marshes or wetlands, and as ice and snow."], "surgical waste": ["Any tissue, blood or mucus removed during surgery or autopsy, soiled surgical dressings, or other materials requiring special disposal procedures."], "surplus": ["The extent to which assets exceed liabilities, especially the profits remaining after operating expenses, taxes, interest and insurance costs are subtracted.\\n(Source: IVW)", "More than is needed, desired, or required."], "survey": ["A critical examination of facts or conditions to provide information on a situation. Usually conducted by interviews and/or on-site visitations.", "A detailed critical inspection.", "To plot a map of (land)."], "sustainable development": ["Development that provides economic, social and environmental benefits in the long term having regard to the needs of living and future generations."], "marsh": ["An periodically inundated area of low ground having shrubs and trees, with or without the formation of peat."], "sweetener": ["A sweetening agent, especially one that does not contain sugar."], "symbiosis": ["A close and mutually beneficial association of organisms of different species."], "synecology": ["Study of the ecology of organisms, populations, communities or systems."], "synergism": ["An ecological association in which the physiological processes of behaviour of an individual are enhanced by the nearby presence of another organism."], "synthetic detergent": ["An artificially produced solid or liquid cleansing substance that acts like soap but is stronger, and is capable of dissolving oily materials and dispersing them in water.\\n(Source: DOE / RIC)"], "synthetic material": ["Material made artificially by chemical reaction.\\n(Source: CEDa)"], "systems analysis": ["A means of organizing elements into an integrated analytic and/or decisionmaking procedure to achieve the best possible results.\\n(Source: LANDY)"], "systems theory": ["The science concerned with the general study of structures and behaviours of systems which may be applicable in different branches of learning."], "tank farm": ["Storage space for containers of liquids or gases."], "tannin": ["One of a group of complex organic chemicals commonly found in leaves, unripe fruits, and the bark of trees."], "tar": ["A viscous material composed of complex, high-molecular-weight, compounds derived from the distillation of petroleum or the destructive distillation of wood or coal.", "A long-necked, waisted lute."], "target group": ["The group of people that something, for example an advertising campaign, is primarily aimed at."], "tariff": ["A classified list or scale of charges made in any private or public business.\\n(Source: OED)"], "tar sand": ["A mixture of bitumen, sand, clay and water."], "tax": ["An amount of money demanded by a government for its support or for specific facilities or services, most frequently levied upon income, property or sales."], "taxation": ["The act or result of a government requiring money for its support or for specific facilities or services.\\n(Source: RHW)"], "tax law": ["A binding rule or body of rules prescribed by a government stipulating the sum of money and manner of collection it demands for governmental support, facilities and services, usually levied upon income, property, sales or other financial resources."], "taxonomy": ["The branch of biology concerned with the classification of organisms into groups based on similarities of structures, origin, etc.", "A hierarchical organization of a subject area, from one perspective in one language."], "teaching": ["The act of imparting knowledge or skill."], "teaching method": ["A procedure, technique or system with definite plans for instruction or imparting knowledge."], "technology": ["Systematic knowledge of industrial processes and their application."], "technology assessment": ["The systematic analysis of the anticipated impact of a particular technology in regard to its safety and efficacy as well as its social, political, economic, and ethical consequences.\\n(Source: KOREN)"], "technology transfer": ["The transfer of development and design work from a parent company to a subsidiary or from one country to another as a form of aid to help promote development and sustainable growth."], "tectonics": ["A branch of geology dealing with the broad architecture of the outer part of the Earth, that is, the regional assembling of structural or deformation features, a study of their mutual relations, origin and historical evolution."], "telecommunications": ["The conveyance of images, speech and other sounds, usually over great distances, through technological means, particularly by television, telegraph, telephone or radio."], "telematics": ["The convergence of computing and communications technologies, thus the use of telephone or radio to link computers and the use of computers to send messages via telephone or radio links.\\n(Source: NECTAR)"], "telemetry": ["The use of radio waves, telephone lines, etc., to transmit the readings of measuring instruments to a device on which the readings can be indicated or recorded."], "television": ["The process, equipment or programming involved in converting a succession of audiovisual images into corresponding electrical signals that are transmitted by means of electromagnetic waves to distant receivers or screens, at which the signals can be used to reproduce the original image.", "A device for receiving television signals and displaying them in visual form."], "temperate forest": ["Mixed forest of conifers and broad-leaf deciduous trees, or mixed conifer and broad-leaf evergreen trees, or entirely broad-leaf deciduous, or entirely broad-leaf evergreen trees, found in temperate regions across the world; characterized by high rainfall, warm summers, cold winters occasionally subzero, seasonality; typically with dense canopies, understorey saplings and tall shrubs, large animals, carnivores dominant, very rich in bird species."], "temperate woodland": ["Forest dominated by broad-leaved hardwoods, which occurs over large tracts in the mid-latitudes of Europe, N. America, and eastern Asia, but which is restricted in the southern hemisphere to Chilean Patagonia."], "temperature": ["A measure of cold or hot. A property that determines the direction of heat flow when an object is brought into thermal contact with other objects."], "temporary shelter": ["Simple facility for asylum or provisional lodgings to individuals or groups in emergencies.\\n(Source: ECHO2)"], "teratogenesis": ["The process whereby abnormalities of the offspring are generated, usually as the result of damage to the embryonal structure during the first trimester of pregnancy, producing deformity of the fetus."], "teratogenicity": ["The ability or tendency to produce anomalies of formation."], "teratogen": ["Substance causing formation of a congenital anomaly or monstrosity in the embryo."], "terminology": ["The body of specialized words relating to a particular subject.", "The study of the designating of concepts particular to one or more domains of human activity, through research and analysis of terms in context, for the purpose of documenting and promoting correct usage."], "termite": ["A soft-bodied insect of the order Isoptera; individuals feed on cellulose and live in colonies with a caste system comprising three types of functional individuals: sterile workers and soldiers, and the reproductives."], "terrestrial area": ["Subdivisions of the continental surfaces distinguished from one another on the basis of the form, roughness, and surface composition of the land.\\n(Source: PARCOR)"], "territorial policy": ["A course of action adopted and pursued by government, business or some other organization, which determines the present and future use of each parcel of land in an area.\\n(Source: DOE)"], "territory": ["An area that an animal or group of animals defends, mainly against members of the same species.", "Land that is controlled by a specific country or ruler.", "Land or an area of a particular type.", "A tract of land of undefined size.", "A geographic area owned or controlled by a single person or organization.", "The region of responsibility assigned to a representative, agent, or the like.", "A non-sovereign geographic area which has come under the authority of an external government but has not yet been admitted to the full rights of a province or federal state of the controlling country."], "tertiary sector": ["The part of a country or region's economy that produces services or assets lacking a tangible and storable form.", "The business sector that consists of companies whose line of work involves doing something for customers, but that do not produce goods."], "test": ["To carry out an examination on (a substance, material, or system) by applying some chemical or physical procedure designed to indicate the presence of a substance or the possession of a property.", "A session in which a product or piece of equipment is placed under everyday and/or extreme conditions and is examined for its durability, etc.", "A series of questions (set by the teacher or professor), aiming to gauge how much students have learnt over a given academic module, term or year.", "To test or examine for the presence of disease or infection.", "to check a property or quality of"], "test animal": ["An animal on which experiments are conducted in order to provide evidence for or against a scientific hypothesis, or to prove the efficacy of drugs or the reaction to certain products.\\n(Source: CEDa)"], "test organism": ["Any animal organism used for scientific research."], "textile industry": ["Industry for the production of fabrics.\\n(Source: MGHa)"], "textile": ["A material made of natural or man-made fibers and used for the manufacture of items such as clothing and furniture fittings."], "thallium": ["Bluish-white metal with tinlike malleability, but a little softer; used in alloys."], "theory of money": ["A coherent group of general propositions about the supply and demand of money, interest rates, the flow of money's influence on the overall economy or the policies that should be adopted by institutions controlling the money supply."], "theory of the welfare state": ["A political conception of government in a capitalist economy where the state is responsible for insuring that all members of society attain a minimum standard of living through redistribution of resources, progressive taxation and universal social programs, including health care and education."], "therapy": ["The treatment of physical, mental or social disorders or disease."], "thermal insulation": ["The process of preventing the passage of heat to or from a body by surrounding it with a nonconducting material."], "thermal pollution": ["The excessive raising or lowering of water temperature above or below normal seasonal ranges in streams, lakes, or estuaries or oceans as the result of discharge of hot or cold effluents into such water.\\n(Source: LANDY / WPR)"], "thermal power plant": ["A power-generating plant which uses heat to produce energy. Such plants may burn fossil fuels or use nuclear energy to produce the necessary thermal energy."], "thermal water": ["Water, generally of a spring or geyser, whose temperature is appreciably above the local mean annual air temperature."], "thermodynamics": ["The branch of physics which seeks to derive, from a few basic postulates, relationships between properties of matter, especially those connected with temperature, and a description of the conversion of energy from one form to another."], "thermoselect process": ["A thermic waste processing technology."], "thesaurus": ["A compilation of terms showing synonyms, related terms and other relationships and dependencies, often used in a book format or as a standardized, controlled vocabulary for an information storage and retrieval system."], "tidal power": ["Mechanical power, which may be converted to electrical power, generated by the rise and fall of ocean tides."], "tidal water": ["Any water whose level changes periodically due to tidal action."], "tide": ["The periodic rise and fall of the water resulting from gravitational interaction between the sun, moon and earth."], "time": ["The grammatical construct of the time in which a sentence acts.", "The dimension of the physical universe which, at a given place, orders the sequence of events.", "To measure the amount of time an object takes to complete a course (e.g., \"to clock a race car\").", "The period of time a prisoner is imprisoned.", "A designated instant in time.", "An instance or occurrence of an event."], "tissue": ["A part of an organism consisting of a large number of cells having a similar structure and function.", "A sheet of paper that absorbs water, used for example to weep wet surfaces."], "titanium": ["A strong malleable white metallic element with symbol Ti and atomic number 22, which is very corrosion-resistant and occurs in rutile and ilmenite. It is used in the manufacture of strong lightweight alloys, especially aircraft parts."], "titanium dioxide": ["A white, water-insoluble powder that melts at 1560\u00b0C, and which is produced commercially from the titanium dioxide minerals ilmenite and rutile; used in paints and cosmetics."], "toad": ["Any anuran amphibian of the family Bufonidae, such as Bufo bufo of Europe. They are similar to frogs but are more terrestrial, having a drier warty skin."], "tobacco": ["A genus of short-leafed plants (Nicotiana spp., L.) of the nightshade family indigenous to North and South America.", "Leaves of certain varieties of the tobacco plant, cultivated and harvested to make cigarettes, cigars, snuff, for smoking in pipes or for chewing."], "tobacco smoke": ["The grey, brown, or blackish mixture of gases and suspended carbon particles resulting from the combustion of tobacco. Tobacco smoke is inhaled and distributes toxins widely throughout the body and causes an enormous variety of illness among users and among non-smokers exposed to tobacco smoke."], "tornado": ["A rapidly rotating column of air developed around a very intense low-pressure centre."], "tortoise": ["Any herbivorous terrestrial chelonian reptile of the family Testudinidae, of most warm regions, having a heavy dome-shaped shell and clawed limbs."], "total parameter": ["The sum of parameters that must be taken into account when assessing water quality (organoleptic factors, physico-chemical factors, toxic substances, microbiological parameters."], "tourism": ["The temporary movement of people to destinations outside their normal places or work and residence, the activities undertaken during their stay in those destinations and the facilities created to cater for their needs."], "touristic zone": ["Any section of a region which attracts travelers, often because of its scenery, objects of interest or recreational activities."], "toxic effect": ["A result produced by the ingestion or contact of poisonous materials."], "toxicity": ["The degree of danger posed by a substance to animal or plant life."], "toxic metal": ["Metal (usually heavy metals) which interferes with the respiration, metabolism or growth of organisms."], "toxicological testing": ["Test for the determination of the inherent toxicity of a chemical."], "toxicology": ["A science that deals with poisons, their actions, their detection, and the treatment of the conditions they produce.\\n(Source: LANDY)"], "toxic waste": ["Refuse posing a significant hazard to the environment or to human health when improperly handled."], "toxin": ["A substance that may present a risk or injury to health or the environment."], "trace element": ["Any of various chemical elements that occur in very small amounts in organisms and are essential for many physiological and biochemical processes."], "tracheophyte": ["A large group of plants characterized by the presence of specialized conducting tissues (xylem and phloem) in the roots, stems, and leaves.\\n(Source: MGH)"], "trade barrier": ["An artificial restraint on the free exchange of goods and services between nations."], "trade policy": ["A course of action adopted and pursued by government, business or some other organization, which promotes or determines the direction for the act or process of buying, selling or exchanging goods and services within a country or between countries."], "trade restriction": ["Commercial discrimination that apply to the exports of certain countries but not to similar goods from other countries."], "traditional health care": ["A system of treating and healing maladies based on cultural beliefs and practices handed down from generation to generation.\\n(Source: FIT)"], "traffic": ["The movement of vehicles, ships, aircraft, persons, etc., in an area or over a route.", "The vehicles, persons, etc., moving in an area or over a route.", "The buying and selling, especially of illicit trade.", "To buy and sell goods illegally.", "To exchange goods."], "traffic accident": ["An unexpected incident with potential for harm occurring through the movement or collision of vessels, vehicles or persons along a land, water, air or space route.\\n(Source: OED)"], "traffic control": ["The organization of a more efficient movement of traffic within a given road network by rearranging the flows, controlling the intersections and regulating the times and places for parking."], "traffic engineering": ["The determination of the required capacity and layout of highway and street facilities that can safely and economically serve vehicular movement between given points.\\n(Source: MGH)"], "traffic infrastructure": ["The fundamental facilities and systems used for the movement of vehicles, often provided through public funding."], "traffic jam": ["A number of vehicles so obstructed that they can scarcely move."], "traffic monitoring": ["The periodic or continuous surveillance or analysis of the movement of persons, objects, vehicles or other conveyances along an area of passage."], "traffic noise": ["Noise emitted by vehicles (heavy vehicles, cars and motorcycles, tyre/road interaction)."], "traffic on water": ["The movement of boats and other vessels over any water route or area."], "train": ["A self-propelled, connected group of vehicles moving on rails.", "To point or cause to go (blows, weapons, or objects such as photographic equipment) towards", "To develop behaviour by instruction and practice.", "A group of animals, vehicles, or people that follow one another in a line.", "To do physical exercise to improve one's fitness.", "To exercise in order to prepare for an event or competition.", "To teach by training.", "To undergo training or instruction for a particular role, function, or profession.", "To educate for a future role or function.", "To act as a trainer or coach (to), as in sports."], "training": ["The process of bringing a person or a group of persons to an agreed standard of proficiency and skilled behavior, by practice and instruction.", "The period in which someone who starts a profession is trained; the position of apprentice."], "trajectory": ["The path described by an object moving in air or space under the influence of such forces as thrust, wind resistance, and gravity, especially the curved path of a projectile."], "transition element": ["One of a group of metallic elements in which the members have the filling of the outermost shell to 8 electrons interrupted to bring the penultimate shell from 8 to 18 or 32 electrons; includes elements 21 through 29 (scandium through copper), 39 through 47 (yttrium through silver), 57 through 79 (lanthanum through gold), and 89 through 112 (actinium through ununbium) on."], "transpiration": ["The loss of water vapour from a plant, mainly through the stomata and to a small extent through the cuticle and lenticels.", "The production and evaporation of a watery fluid called sweat that is excreted by the sweat glands in the skin of mammals."], "transportation business": ["Any commercial venture involved in the processes of conveying things or people from one place to another."], "transportation policy": ["Comprehensive statements of the objectives and policies which a local transport authority intends to pursue; it includes and estimate of transport expenditure, a statement of transport objectives, etc.\\n(Source: GOOD)"], "transportation": ["The act or means of moving tangible objects (persons or goods) from place to place. Often involves the use of some type of vehicle.", "The act of expelling a person from his native land."], "trapping": ["The act of catching an animal in a mechanical device or enclosed place or pit."], "travel": ["To move from one place to another generally by using a transportation mean; to undertake a trip.", "The transport of people on a trip or journey."], "travel cost": ["Expenditure of money or the amount of money incurred for journeying or going from one place to another by some mode of transportation.\\n(Source: ISEP / RHW)"], "treaty": ["An international agreement in writing between two states or a number of states. They are binding in international law; some create law only for those states that are parties to them."], "tree": ["Any large woody perennial plant with a distinct trunk giving rise to branches or leaves at some distance from the ground.", "A widely-used data structure that emulates a tree structure with a set of linked nodes."], "tree nursery": ["An area where trees, shrubs, or plants are grown for transplanting, for use as stocks for budding and grafting.\\n(Source: ECHO2)"], "trend": ["The general drift, tendency, or bent of a set of statistical data as related to time or another related set of statistical data.\\n(Source: MGH)"], "triazine": ["Azines that contain three nitrogen atoms in their molecules."], "trinity of principles": ["Three fundamental principles of environmental policy: precautionary principle, polluter pays-principle and cooperation principle."], "tritium": ["The hydrogen isotope having mass number 3; it is one form of heavy hydrogen, the other being deuterium."], "trophic level": ["Any of the feeding levels through which the passage of energy through an ecosystem proceeds."], "tropical forest ecosystem": ["The interacting system of a biological community and its non-living environmental surroundings in forests found in tropical regions near the equator, which are characterized by warm to hot weather and abundant rainfall."], "tropical forest": ["A vegetation class consisting of tall, close-growing trees, their columnar trunks more or less unbranched in the lower two-thirds, and forming a spreading and frequently flat crown; occurs in areas of high temperature and high rainfall."], "tropical rain forest": ["A type of forest that occurs roughly within the latitudes 28 degrees north or south of the equator and is characterized by high average temperatures and a significant amount of rainfall."], "tropics": ["The region of the earth's surface lying between two parallels of latitude on the earth, one 23\u00b027' north of the equator and the other 23\u00b027' south of the equator, representing the points farthest north and south at which the sun can shine directly overhead and constituting the boundaries of the Torrid Zone.\\n(Source: AMHER)"], "troposphere": ["The lowest of the concentric layers of the atmosphere, occurring between the Earth's surface and the tropopause."], "tropospheric ozone": ["Tropospheric ozone is a secondary pollutant formed from emissions of nitrogen oxides, non-methane volatile organic compounds and carbon monoxide. Ozone scars lung tissue, makes eyes sting and throats itch. It has been implicated as a contributor to forest dieback, damage to agricultural crops, etc.\\n(Source: WPR)"], "tundra": ["An area supporting some vegetation (lichens, mosses, sedges and low shrubs) between the northern upper limit of trees and the lower limit of perennial snow on mountains, and on the fringes of the Antarctic continent and its neighbouring islands."], "tunnel": ["A underground passageway, especially one for trains or cars that passes under a mountain, river or a congested urban area.", "An Internet Protocol (IP) network communications channel between two networks. It is used to transport another network protocol by encapsulation and often encryption of its packets."], "turbidity": ["Cloudy or hazy appearance in a naturally clear liquid caused by a suspension of colloidal liquid droplets or fine solids."], "turbine": ["A fluid acceleration machine for generating rotary mechanical power from the energy in a stream of fluid.\\n(Source: MGH)"], "tween-deck tanker": ["A sea-going vessel that includes space between two continuous floor-like surfaces or platforms, which is also designed for bulk shipments of liquids or gases."], "twin-hull craft": ["Oil tank vessels provided with a double-hull to meet the regulatory safety requirements in oil transportation."], "two-stroke engine": ["An internal combustion engine whose cycle is completed in two strokes of the piston."], "type of claim": ["A class or category of interests or remedies recognized in law or equity that create in the holder a right to the interest or its proceeds, typically taking the form of money, property or privilege.\\n(Source: BLD)"], "typhoon": ["A severe tropical cyclone in the western Pacific."], "tyre": ["A rubber ring placed over the rim of a wheel of a road vehicle to provide traction and reduce road shocks."], "ultrafiltration": ["Separation of colloidal or very fine solid materials by filtration through microporous or semipermeable mediums."], "ultrasound": ["Sound waves having a frequency above about 20,000 hertz."], "ultraviolet radiation": ["The part of the electromagnetic spectrum with wavelengths shorter than light but longer than x-rays; in the range of 4-400 nm.\\n(Source: CED)"], "underground train": ["A train for transportation of people, mostly beneath the surface of the ground, in order to lessen the traffic."], "unemployment": ["The condition of being without remunerative employment."], "ungulate": ["Animal with hooved feet.", "Having a hoof."], "United Nations": ["A voluntary association of around 180 state signatory to the UN charter (1945), whose primary aim is to maintain international peace and security, solve economic, social, and political problems through international co-operation, and promote respect for human rights.", "Relating to the United Nations."], "unleaded petrol": ["Petrol, which has no lead additives in it and therefore creates less lead pollution in the atmosphere."], "clean air area": ["Area where significant reductions in ozone forming pollutants have been achieved."], "raw water": ["Water that has not been treated."], "upbringing": ["The way in which a child is cared for and taught while it is growing up."], "Upper House": ["The body of a bicameral legislature comprising either representatives of member states in a federation or a select number of individuals from certain privileged estates or social classes."], "uranium": ["A metallic element highly toxic and radioactive; used as nuclear fuel.\\nSymbol: U, atomic number: 92."], "urban area": ["Areas within the legal boundaries of cities and towns; suburban areas developed for residential, industrial or recreational purposes.", "The area within a city or town, as indicated by appropriate traffic signs (or, in the United Kingdom, by the presence of street lights), where different traffic rules are in effect, such as a reduction of the speed limit."], "urban decay": ["Condition where part of a city or town becomes old or dirty or ruined, because businesses and wealthy families have moved away from it."], "urban design": ["A plan, outline or preliminary sketch of, or for, a city or town."], "urban development": ["Any physical extension of, or changes to, the uses of land in metropolitan areas, often involving subdivision into zones; construction or modification of buildings, roads, utilities and other facilities; removal of trees and other obstructions; and population growth and related economic, social and political changes."], "urban green": ["The complex of private and public gardens in an urban area.\\n(Source: DIFID)"], "urban landscape": ["The traits, patterns and structure of a city's specific geographic area, including its biological composition, its physical environment and its social patterns."], "urban management": ["The administration, organization and planning performed for cities or towns, particularly the process of converting farmland or undeveloped land into offices, businesses, housing and other forms of development.\\n(Source: DOE)"], "urban planning": ["The activity of designing, organizing or preparing for the future lay-out and condition of a city or town.", "The study and theory of building and other physical needs in cities or predominantly urban cultures."], "urban population": ["The total number of persons inhabiting a city, metropolitan region or any area where the sum of residents exceeds a designated amount."], "urban renewal": ["A continuing process of remodelling urban areas by means of rehabilitation and conservation as well as redevelopment. Urban renewal programmes are generally undertaken by public authorities and concern those parts of the city which have fallen below current standards of public acceptability."], "urban stress": ["A state of bodily or mental tension developed through city living, or the physical, chemical, or emotional factors that give rise to that tension."], "urban study": ["The study and theory of building and other physical needs in cities or predominantly urban cultures."], "urban traffic": ["Movements of vehicles and people within a city.\\n(Source: RRDA)"], "urban water supply": ["The distribution of water, including collection, treatment and storage, for use in a town, city or municipal area, and used generally for domestic and industrial needs."], "valley": ["Any low-lying land bordered by higher ground; especially an elongate, relatively large, gently sloping depression of the Earth's surface, commonly situated between two mountains or between ranges of hills or mountains, and often containing a stream with an outlet."], "vanadium": ["A silvery-white, ductile metal resistant to corrosion; used in alloy steels and as an x-ray target."], "vandalism": ["The deliberate or wanton destruction of personal or public property caused by a vandal."], "varnish": ["A transparent surface coating which is applied as a liquid and then changes to a hard solid."], "vegetation cover": ["Number of plants growing on a certain area of land."], "vegetable cultivation": ["Cultivation of herbaceous plants that are used as food."], "plant ecology": ["Study of the relationships between plants and their environment.\\n(Source: LBC)"], "plant selection": ["The selection by man of particular genotypes in a plant population because they exhibit desired phenotypic characters.\\n(Source: LBC)"], "vegetable oil": ["An edible, mixed glyceride oil derived from plants (fruit, leaves, and seeds)."], "plant reproduction": ["Any of various processes, either sexual or asexual, by which a plant produces one or more individuals similar to itself."], "vegetable": ["Any of various herbaceous plants having parts that are used as food.", "A person with severe brain damage or who is in a persistent vegetative state.", "An organism that is not an animal, especially an organism capable of photosynthesis."], "vegetation": ["1) The plants of an area considered in general or as communities, but not taxonomically; the total plant cover in a particular area or on the Earth as a whole. 2) The total mass of plant life that occupies a given area.\\n(Source: ALL / MGH)", "The plants that inhabit a certain region or environment."], "vegetation type": ["A community of plants or plant life that share distinguishable characteristics.\\n(Source: PEM)"], "vehicle": ["Any conveyance in or by which people or objects are transported."], "vehicle inspection": ["An official periodical examination of an automobile, truck, boat, airplane or other means of conveyance to determine compliance in design or operation with legal standards for safety or pollution emissions.\\n(Source: DAM / RHW)"], "ventilation": ["The process of supplying or removing air, by natural or mechanical means, to or from any space; such air may or may not have been conditioned."], "vermin": ["Small animals and insects that can be harmful and which are difficult to control when they appear in large numbers.\\n(Source: CAMB)"], "vertebrate": ["Any chordate animal of the subphylum Vertebrata, characterized by a bony or cartilaginous skeleton and a well-developed brain: the group contains fishes, amphibians, reptiles, birds, and mammals.\\n(Source: CED)"], "veterinary medicine": ["The branch of medical practice which treats of the diseases and injuries of animals."], "viaduct": ["A long high bridge, usually held up by many arches, which carries a railway or a road over a valley or other similar area at a lower level."], "vibration": ["A periodic motion of small amplitude and high frequency, characteristic of elastic bodies."], "video": ["A format or system used to record and transmit visual or audiovisual information by translating moving or still images into electrical signals.\\n(Source: MVG)"], "village": ["A group of houses and other buildings, such as a church, a school and some shops, which is smaller than a town, usually in the countryside.", "Small town or part of it."], "vinasse": ["The residual liquid from the distillation of alcoholic liquors, specifically, that remaining from the fermentation and distillation of beet-sugar molasses, valuable as yielding potassium salts, ammonia, etc."], "virology": ["The study of submicroscopic organisms known as viruses."], "virus": ["Submicroscopic agents that infect plants, animals and bacteria, and are unable to reproduce outside the tissues of the host.\\n(Source: ALL)", "Computer program that is designed to damage a computer and that is able to spread itself to other computers."], "viscosity": ["A measure of the resistance of a fluid."], "vitamin": ["An organic compound present in variable, minute quantities in natural foodstuffs and essential for the normal processes of growth and maintenance of the body."], "viticulture": ["Division of horticulture concerned with grape growing, studies of grape varieties, methods of culture, and insect and disease control."], "vocabulary": ["A list of words or phrases of a language, technical field or some specialized area, usually arranged in alphabetical order and often provided with brief definitions and with foreign translations."], "vocational training": ["A special training for a regular occupation or profession, especially, one for which one is specially suited or qualified."], "volatile organic compound": ["Organic compound readily passing off by evaporation."], "volatility": ["The property of a substance or substances to convert into vapor or gas without chemical change."], "volcanic eruption": ["The ejection of solid, liquid, or gaseous material from a volcano."], "volcanism": ["The processes by which magma and its associated gases rise into the crust and are extruded onto the Earth's surface and into the atmosphere.\\n(Source: BJGEO)"], "volcano": ["A vent in the surface of the Earth through which magma and associated gases and ash erupt.", "A mountain formed by volcanic material."], "voluntary work": ["Unpaid activities done by citizens often organized in associations, to provide services to others, particularly to elderly and poor people, handicapped, etc."], "Wadden Sea": ["A shallow sea extending along the North Sea coasts of The Netherlands, Germany and Denmark."], "wage system": ["System which compensates the employees with a fixed sum per piece, hour, day or another period of time, covering all compensations including salary."], "wall": ["A vertical construction made of stone, brick, wood, etc., with a length and height much greater than its thickness, used to enclose, divide or support.", "A type of small thin wall, made \u200b\u200bof wood or masonry and used for the division of an apartment or any building.", "A divisive or containing structure in an organ or cavity."], "war": ["A conflict or a state of hostility between two or more parties, nations or states, in which armed forces or military operations are used."], "warm-blooded animal": ["Animal which has a body temperature that stays the same and does not change with the temperature of its surroundings."], "warning system": ["Any series of procedures and devices designed to detect sudden or potential threats to persons, property or the environment, often utilizing radar technology."], "wastage": ["Extravagant or useless consumption or expenditures."], "waste": ["Unwanted or undesired material, usually discarded.", "To use goods and wealth inconsiderately, without any care.", "Excessive spending of goods and wealth.", "To cause extensive destruction or ruin utterly."], "waste balance": ["The inventory of all waste produced or recovered during a certain time period, classified by type and quantity.\\n(Source: DOG)"], "waste bin": ["A container for litter, rubbish, etc.\\n(Source: CED)"], "waste collection": ["The periodic or on-demand removal of solid waste from primary source locations using a collection vehicle and followed by the depositing of this waste at some central facility or disposal site."], "waste degasification": ["The removal of gaseous components from waste."], "waste exchange": ["Exchange of the recyclable part of wastes. This procedure allows to minimize waste volume and the cost relating to waste disposal. The basis of waste exchange is the concept that \"one company's waste is another company's raw material\".\\n(Source: ECOUK / ECHO2)"], "waste gas": ["Any unusable aeriform fluid, or suspension of fine particles in air, given off by a manufacturing process or the burning of a substance in a enclosed area.\\n(Source: OED / RHW)"], "waste glass": ["Discarded material from the glass manufacturing process or from used consumer products made of glass."], "waste gypsum": ["By-product of the wet limestone flue gas desulphurisation process.\\n(Source: PORTa)"], "waste heat": ["Heat derived from the cooling process of electric power generating plants and which can cause thermal pollution of watercourses, promoting algal bloom."], "waste heat charge": ["The release of heat generated as a byproduct from industrial or power generation processes.\\n(Source: TOE)"], "waste oil": ["Oil that arises as a waste product of the use of oils in a wide range of industrial and commercial activities, such as engineering, power generation and vehicle maintenance and should be properly disposed of, or treated in order to be reused."], "waste paper": ["Newspapers, magazines, cartons and other paper separated from solid waste for the purpose of recycling."], "waste recycling": ["A method of recovering wastes as resources which includes the collection, and often involving the treatment, of waste products for use as a replacement of all or part of the raw material in a manufacturing process."], "waste sorting": ["Separating waste into different materials, such as glass, metal, paper, plastic, etc.\\n(Source: PHC)"], "waste treatment": ["Any process or combination of processes that changes the chemical, physical or biological composition or character of any waste or reduces or removes its harmful properties or characteristics for any purpose."], "waste water": ["Used water, or water that is not needed, which is permitted to escape, or unavoidably escapes from canals, ditches, reservoirs or other bodies of water, for which the owners of these structures are legally responsible."], "waste water charge": ["Imposed fee, expense, or cost for the management of spent or used water that contains dissolved or suspended matter from a home, community farm, or industry.\\n(Source: TOE / RHW)"], "water bottom": ["The floor upon which any body of water rests.\\n(Source: BJGEO)"], "water collection": ["The catching of water, especially rain water, in a structure such as a basin or reservoir."], "water conservation": ["The protection, development and efficient management of water resources for beneficial purposes."], "water consumption": ["The utilization patterns and quantities entailed in a community or human group's use of water for survival, comfort and enjoyment."], "watercourse": ["A natural stream arising in a given drainage basin but not wholly dependent for its flow on surface drainage in its immediate area, flowing in a channel with a well-defined bed between visible banks or through a definite depression in the land, having a definite and permanent or periodic supply of water, and usually, but not necessarily, having a perceptible current in a particular direction and discharging at a fixed point into another body of water.\\n(Source: BJGEO)"], "water distribution system": ["The system of pipes supplying water to communities and industries."], "water erosion": ["The breakdown of solid rock into smaller particles and its removal by water."], "waterfall": ["A perpendicular or steep descent of the water of a stream."], "water flea": ["A fresh-water branchiopod crustacean of the genus Daphnia characterized by a transparent bivalve shell."], "hydrologic flow": ["The characteristic behaviour and the total quantity of water involved in a drainage basin, determined by measuring such quantities as rainfall, surface and subsurface storage and flow, and evapotranspiration.\\n(Source: BJGEO)"], "water for consumption": ["Consumptive water use starts with withdrawal, but in this case without any return, e.g. irrigation, steam escaping into the atmosphere, water contained in final products, i.e. it is no longer available directly for subsequent use."], "waterfowl": ["Aquatic birds which constitute the order Anseriformes, including the swans, ducks, geese, and screamers."], "water hardness": ["The amount of calcium and magnesium salts dissolved in water."], "water hyacinth": ["Floating aquatic plant, Eichhornia crassipes of tropical America, having showy bluish-purple flowers and swollen leafstalks: family Pontederiaceae. It forms dense masses in rivers, ponds, etc., and is a serious pest in the southern U.S., Java, Australia, New Zealand, and parts of Africa.\\n(Source: CED)"], "water level": ["The level reached by the surface of a body of water."], "water pollutant": ["A chemical or physical agent introduced to any body of water that may detrimentally alter the natural condition of that body of water and other associated bodies of water."], "water pollution": ["The manmade or man-induced alteration of the chemical, physical, biological and radiological integrity of water.\\n(Source: LANDY)"], "water pollution prevention": ["Precautionary measures, actions or installations implemented to avert or hinder human-made or human-induced alteration of the physical, biological, chemical and radiological integrity of water."], "water protection": ["Measures to conserve surface and groundwater; to ensure the continued availability of water for growing domestic, commercial and industrial uses and to ensure sufficient water for natural ecosystems.\\n(Source: GILP96a)"], "water pump": ["A machine or apparatus used to lift water, usually from a well or borehole, which is powered manually or by engine, wind or some other source."], "water purification": ["Any of several processes in which undesirable impurities in water are removed or neutralized."], "water quality": ["A graded value of the components (organic and inorganic, chemical or physical) which comprise the nature of water."], "water quality management": ["Water quality management concerns four major elements: the use (recreation, drinking water, fish and wildlife propagation, industrial or agricultural) to be made of the water; criteria to protect those uses; implementation plans (for needed industrial-municipal waste treatment improvements) and enforcement plans, and an anti-degradation statement to protect existing high quality waters.\\n(Source: USC)"], "water salination": ["Process by which water becomes more salty, found especially in hot countries where irrigation is practised."], "water science": ["The science that treats the occurrence, circulation, distribution, and properties of the waters of the earth, and their reaction with the environment.\\n(Source: MGH)"], "watershed": ["The dividing line between two adjacent river systems, such as a ridge.", "An area of land where all rainwater and melting snow naturally moves to the same body of water."], "water supply": ["A source or volume of water available for use; also, the system of reservoirs, wells, conduits, and treatment facilities required to make the water available and usable."], "water transportation": ["Transportation of goods or persons by means of ships travelling on the sea or on inland waterways.\\n(Source: CEDa)"], "water treatment": ["Purification of water to make it suitable for drinking or for any other use."], "waterway": ["A river, canal, or other navigable channel used as a means of travel or transport."], "water well": ["A well sunk to extract water from a zone of saturation."], "waterworks": ["Plant for treating and purifying water before it is pumped into pipes for distribution to houses, factories, schools, etc.", "The water supply system of a town etc., including reservoirs, pumps and pipes."], "wave energy": ["Power extracted from the motion of sea waves at the coast."], "sea wave": ["A moving ridge or swell of water occurring close to the surface of the sea, characterized by oscillating and rising and falling movements, often as a result of the frictional drag of the wind.\\n(Source: OED / INP)"], "weapon": ["An instrument of attack or defense in combat, as a gun, missile, or sword."], "weather": ["The day-to-day meteorological conditions, especially temperature, cloudiness, and rainfall, affecting a specific place."], "weather condition": ["The complex of meteorological characteristics in a given region.\\n\\n(Source: RRDA)"], "weather modification": ["The changing of natural weather phenomena by technical means."], "weather monitoring": ["The periodic or continuous surveillance or analysis of the state of the atmosphere and climate, including variables such as temperature, moisture, wind velocity and barometric pressure.\\n(Source: TOE / RHW)"], "weather forecasting": ["The act or process of predicting and highlighting meteorological conditions that are expected for a specific time period and for a specific area or portion of air space, by using objective models based on certain atmospheric parameters, along with the skill and experience of a meteorologist.\\n(Source: FEM / AUS)"], "weed": ["Any plant that grows wild and profusely, especially one that grows among cultivated plants, depriving them of space, food, etc.", "A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect.", "To pull out weeds by hand.", "To clear (a cultivated area) of weeds (unwanted vegetation)."], "weight": ["The gravitational force with which the earth attracts a body. By extension, the gravitational force with which a star, planet, or satellite attracts a nearby body."], "welding": ["Joining two metals by applying heat to melt and fuse them, with or without filler metal."], "well": ["A hole dug into the earth to reach a supply of water, oil, brine or gas.", "An interjection in response to a statement that is only partially agreed with by the speaker. It is often followed by a counterstatement by the speaker elaborating on the nature of the disagreement.", "To a great extent or degree."], "West Africa": ["A geographic region of the African continent bordered in the west and south by the Atlantic Ocean, including the republics of Benin, Burkina Faso, Cape Verde, Ivory Coast, Gambia, Ghana, Guinea-Bissau, Liberia, Mali, Mauritania, Niger, Nigeria, Senegal, Sierra Leone and Togo.\\n(Source: ECW)"], "Western Asia": ["A geographic region of Asia that includes Turkey, Iran and other countries of the Middle East and the Arabian peninsula."], "Western Europe": ["A geographic region of the European continent surrounded by the North Sea, Atlantic Ocean and the Mediterranean Sea, including Belgium, France, Germany, Great Britain, Greece, Italy, Luxembourg, Netherlands, Portugal, Spain and other member countries of the Western European Union."], "wetland": ["Area that is inundated by surface or ground water with frequency sufficient to support a prevalence of vegetative or aquatic life that requires saturated or seasonally saturated soil conditions for growth or reproduction."], "wet scrubber": ["An air cleaning device that literally washes out the dust. Exhaust air is forced into a spray chamber, where fine water particles cause the dust to drop from the air stream. The dust-ladden water is then treated to remove the solid material and is often recirculated.", "Equipment through which a gas is passed to remove impurities (solid, liquid, or gaseous particles) by intimate contact with a suitable liquid, usually an aqueous medium."], "whale": ["Large marine mammals of the order Cetacea; the body is streamlined, the broad flat tail is used for propulsion, and the limbs are balancing structures."], "whaling": ["Catching whales to use as food or for their oil, etc.", "Relating to whales."], "wholesale trade": ["The business of selling goods to retailers in larger quantities than they are sold to final consumers but in smaller quantities than they are purchased from manufacturers."], "wild animal": ["A non-domesticated animal living independently of man."], "wildlife": ["All non-domesticated plants, animals and other organisms living in the wild."], "wildlife sanctuary": ["An area designated for the protection of wild animals."], "wild plant": ["A non-domesticated plant."], "wind": ["The motion of air relative to the earth's surface; usually means horizontal air motion, as distinguished from vertical motion.", "To wrap something in loops around something else."], "wind erosion": ["The breakdown of solid rock into smaller particles and its removal by wind."], "windmill": ["A machine for grinding or pumping driven by a set of adjustable vanes or sails that are caused to turn by the force of the wind."], "wind power": ["Energy extracted from wind, traditionally in a windmill, but increasingly by more complicated designes including turbines, usually to produce electricity but also for water pumping."], "wind power station": ["Power station which uses wind to drive a turbine which creates electricity."], "woman": ["An adult human member of the sex that produces ova and bears young."], "woman's status": ["The social position, rank or relative importance of women in society."], "timber": ["A wood, especially when regarded as a construction material.\\n(Source: CED)"], "wood": ["An area where trees grow, where there are, no streets, no buildings, no agriculture beyond growing trees.", "A dense growth of trees more extensive than a grove and smaller than a forest.", "The substance making up the central part of the trunk and branches of a tree. Used as a material for construction, to manufacture various items, etc. or as fuel."], "woodland clearance": ["The permanent clear-felling of an area of forest or woodland."], "wood preservation": ["The use of chemicals to prevent or retard the decay of wood, especially by fungi or insects; widely used preservatives include creosote, pitch, sodium fluoride and tar; especially used on wood having contact with the ground."], "wood waste": ["Waste which is left over after the processing of raw timber.\\n(Source: ISEP)"], "wool": ["The soft, curly hair that forms the fleece of sheep, lamas and other animals and which is used to produce clothing."], "work accident": ["Accident occurring in the course of the employment and caused by inherent or related factors arising from the operation of materials of one's occupation."], "working condition": ["All existing circumstances affecting labor in the workplace, including job hours, physical aspects, legal rights and responsibilities."], "working hours": ["The time devoted to gainful employment or job-related activities, usually calculated as hours per day or per week."], "workplace": ["Any or all locations or environments where people are employed."], "world": ["The Earth with all its inhabitants and all things upon it.", "The third planet (counted from the center) of our solar system.", "Everything that exists anywhere.", "Social context of a person.", "Human collective existence.", "A planet,especially one which is inhabited or inhabitable.", "A great amount.", "A state or place of existence other than that on Earth.", "A state or place of existence other than that of contemporary life."], "world heritage site": ["Site of great cultural significance and geographic areas of outstanding universal value, for example the Pyramids of Egypt, the historical centre of Rome, the Grand Canyon of United States, Venice, the Taj Mahal of India, the Great Wall of China.\\n(Source: GILP96)"], "write-off": ["Accounting procedure that is used when an asset is uncollectible and is therefore charged-off as a loss."], "X ray": ["Short wavelength electromagnetic wave usually produced by bombarding a metal target in a vacuum."], "yeast": ["Many species of unicellular fungi, most of which belong to the Ascomycetes and reproduce by budding. The genus Saccharomyces is used in brewing and winemaking because in low oxygen concentration it produces zymase, an enzyme system that breaks down sugars to alcohol and carbon dioxide. Saccharomyces is also used in bread-making. Some yeasts are used as a source of protein and of vitamins of the B group.\\n(Source: ALL)"], "infant": ["A young child in the first years of life.\\n(Source: ISEP)"], "youth": ["The state of being young."], "youth work": ["Job opportunities and employment for adolescents, either for financial reward or educational enrichment.\\n(Source: RHW)"], "zinc": ["Chemical element with symbol Zn and atomic number 30; a brittle bluish-white metallic element that becomes coated with a corrosion-resistant layer in moist air and occurs chiefly in sphalerite and smithsonite.", "To cover with zinc."], "zoning": ["Designation and reservation under a master plan of land use for light and heavy industry, dwellings, offices, and other buildings."], "zoological garden": ["Area in which animals, especially wild animals, are kept so that people can go and look at them, or study them."], "zoology": ["The study of animals, including their classification, structure, physiology, and history."], "zoonosis": ["Infectious disease that is able to be transmitted from animals to humans or from humans to animals."], "accounting": ["Method of recording all the transactions affecting the financial condition of a business or organization."], "animal life": ["All of the animal life of any particular region or time."], "consumer product": ["Economic good that directly satisfies human wants or desires.\\n(Source: WEBSTE)"], "human body": ["The entire physical structure of an human being."], "human science": ["Group of sciences including sociology, anthropology, psychology, pedagogy, etc. as opposed to the humanistic group."], "juridical act": ["An act relating to the administration of justice."], "physical chemistry": ["A science dealing with the effects of physical phenomena on chemical properties.\\n(Source: LEE)"], "plant life": ["The plants that inhabit a certain region or environment."], "risk management": ["The process of evaluating and selecting alternative regulatory and non-regulatory responses to prepare for the probability of an accidental occurrence and its expected magnitude of damage, including the consideration of legal, economic and behavioral factors.\\n(Source: HMD / TOE)"], "safety system": ["A unified, coordinated assemblage or plan of procedures and devices intended to lower the occurrence or risk of injury, loss and danger to persons, property or the environment.\\n(Source: OED / RHW)"], "social science": ["The study of society and of the relationship of individual members within society, including economics, history, political science, psychology, anthropology, and sociology."], "promotion of trade and industry": ["Any activity that encourages or supports the buying, selling or exchanging of goods or services with other countries, which could include marketing, diplomatic pressure or the provision of export incentives such as credits and guarantees, government subsidies, training and consultation or advice."], "masonry": ["A construction of stone or similar materials such as concrete or brick.", "Worldwide widespread movement for humanitarianism which gives its supporters an understanding of the ideal of the noble humanity.", "A widespread secret fraternal order whose members pledge mutually assistance and brotherly love."], "sand flat": ["A flat, marshy or barren tract of land that is alternately covered and uncovered by the tide, and consisting of unconsolidated sediment (mostly mud and sand)."], "animal species": ["Species belonging to the animal kingdom."], "plant species": ["Species belonging to the plant kingdom."], "occupation": ["Productive activity, service, trade, or craft for which one is regularly paid.", "Task with which one occupies oneself.", "A situation where a country or region is under the control of a foreign army."], "folk tradition": ["The common beliefs, practices, customs and other cultural elements of an ethnic or social group that are rooted in the past, but are persisting into the present due to means such as arts and crafts, songs and music, dance, foods, drama, storytelling and certain forms of oral communication.\\n(Source: VFP)"], "law branch": ["A subdivision of the body of principles and regulations established by a government or other authority, generally defined by its scope or application.\\n(Source: BLD / ISEP)"], "judicial system": ["Entire network of courts in a particular jurisdiction."], "measuring instrument": ["Instrument that shows the extent or amount or quantity or degree of something."], "major risk": ["The high probability that a given hazard or situation will yield a significant amount of lives lost, persons injured, damage to property , disruption of economic activity or harm to the environment; or any product of the probability of occurrence and the expected magnitude of damage beyond a maximum acceptable level.\\n(Source: TOE / HMD)"], "rescue system": ["Any series of procedures and devices used by trained personnel to provide immediate assistance to persons who are in danger or injured.\\n(Source: GT2 / HMD)"], "tax system": ["A co-ordinated body of methods or plan of procedures for levying compulsory charges for the purpose of raising revenue."], "forest ecology": ["The science that deals with the relationship of forest trees to their environment, to one another, and to other plants and to animals in the forest."], "urban ecology": ["Concept derived from biology in which the city is viewed as a total environment, as a life-supporting system for the large number of people concentrated there, and within this people organize themselves and adapt to a constantly changing environment. Regarded as the same as human ecology.\\n(Source: GOOD)"], "ecozone": ["A broad geographic area in which there are distinctive climate patterns, ocean conditions, types of landscapes and species of plants and animals."], "environmental engineering": ["Branch of engineering concerned with the environment and its proper management. The major environmental engineering disciplines regard water supply, wastewater, stormwater, solid waste, hazardous waste, noise radiology, industrial hygiene, oceanography and the like.\\n(Source: PORT)"], "altitude": ["In general, a term used to describe a topographic eminence.\\n(Source: WHIT)", "A specific altitude or height above a given level.", "The angle between the horizontal and a point at a higher level (in surveying)."], "cove": ["A deep recess hollow, or nook in a cliff or steep mountainside, or a small, straight valley extending into a mountain or down a mountainside.\\n(Source: BJGEO / WHIT)", "A valley or portion of lowland that penetrates into a plateau or mountain front.\\n(Source: BJGEO / WHIT)"], "canyon": ["A long deep, relatively narrow steep-sided valley confined between lofty and precipitous walls in a plateau or mountainous area, often with a stream at the bottom; similar to, but largest than, a gorge. It is characteristic of an arid or semiarid area (such as western U.S.) where stream downcutting greatly exceeds weathering.\\n(Source: BJGEO)", "A valley, especially a long, narrow, steep valley, cut in rock by a river."], "geographic circque": ["A deep steep-walled half-bowl-like recess or hollow, variously described as horseshoe- or crescent-shaped or semi-circular in plan, situated high on the side of a mountain and commonly at the head of a glacial valley and produced by the erosive activity of a mountain glacier. It often contains a small round lake, and it may or may not be occupied by ice or snow.\\n(Source: BJGEO)"], "continent": ["A protuberance of the Earth's crustal shell, with an area of several million square miles and sufficient elevation so that much of it above sea level."], "creek": ["A narrow inlet or bay, especially of the sea.\\n(Source: CED)"], "fault": ["A fracture or a zone of fractures along which there has been displacement of the sides relative to one another parallel to the fracture.", "A wrong action attributable to bad judgment or ignorance or inattention.", "An imperfection in a device or machine.", "Wrong act done deliberately or good act omitted deliberately.", "An incorrect action not made deliberately."], "cliff": ["A steep coastal declivity which may or may not be precipitous, the slope angle being dependent partly on the jointing, bedding and hardness of the materials from which the cliff has been formed, and partly on the erosional processes at work. Where wave attack is dominant the cliff-foot will be rapidly eroded and cliff retreat will take place, especially in unconsolidated materials such as clays, sands, etc., frequently leaving behind an abrasion platform at the foot of the cliff.\\n(Source: WHIT)"], "open sea": ["The high seas lying outside the exclusive economic zones of states. All states have equal rights to navigate, to overfly, to lay submarine cables, to construct artificial islands, to fish, and to conduct scientific research within the high seas.\\n(Source: GOOD)"], "coral reef lagoon": ["A coastal stretch of shallow saltwater virtually cut off from the open sea by a coral reef.\\n(Source: WHIT)"], "river bed": ["The channel containing or formerly containing the water of a river."], "barrier reef": ["An elongated accumulation of coral lying at low-tide level parallel to the coast but separated from it by a wide and deep lagoon or strait."], "marine park": ["A permanent reservation on the seabed for the conservation of species."], "reserve": ["Any area of land or water that has been set aside for a special purpose, often to prevent or reduce harm to its wildlife and ecosystems.\\n(Source: RHW / DOE)", "To arrange for (something for someone else) in advance.", "To give or assign a resource to a particular person or cause.", "To assign a resource to a particular person or cause."], "alignment": ["The selection and detailed layout of public transport routes in the light of construction, operation, service, technology, and economic criteria.", "The spatial property possessed by an arrangement or position of things in a straight line or in parallel lines."], "bocage": ["The wooded countryside characteristic of northern France, with small irregular-shaped fields and many hedges and copses. In the French language the word bocage refers both to the hedge itself and to a landscape consisting of hedges. Bocage landscapes usually have a slightly rolling landform, and are found mainly in maritime climates. Being a small-scale, enclosed landscape, the bocage offers much variations in biotopes, with habitats for birds, small mammals, amphibians, reptiles and butterflies."], "French formal garden": ["A style of garden displaying symmetry and geometrical patterns."], "English garden": ["A plot of ground consisting of an orderly and balanced arrangement of masses of flowers, shrubs and trees, following British traditions or style.\\n(Source: CBO)"], "site protection": ["Precautionary actions, procedures or installations undertaken to prevent or reduce harm to the environmental integrity of a physical area or location."], "coast protection": ["A form of environmental management designed to allay the progressive degradation of the land by coastal erosion processes."], "environmental citizenship": ["The state, character or behavior of a person viewed as a member of the ecosystem with attendant rights and responsibilities, especially the responsibility to maintain ecological integrity and the right to exist in a healthy environment.\\n(Source: TOE / RHW)"], "sponsorship": ["A person, firm, organization, etc. that provides or pledges money for an undertaking or event."], "migratory fish": ["Fishes that migrate in a body, often between breeding places and winter feeding grounds.\\n(Source: RRDA)"], "marine mammal": ["A diverse group of roughly 120 species of mammal that are primarily ocean-dwelling or depend on the ocean for food.", "Mammal which is adapted to live in the sea, such as whales, dolphins, porpoises, etc."], "ovine": ["Horned ruminant mammals raised in many breeds for wool, edible flesh, or skin."], "shelter": ["Cover or protection, as from weather or danger; place of refuge.\\n(Source: CED)", "A refuge, haven or other cover or protection from something.", "To take cover.", "To provide cover.", "A shielding or protection against the unpleasant, unwanted, or dangerous."], "nesting area": ["A place where birds gather to lay eggs."], "spawning ground": ["Area of water where fish come each year to produce their eggs."], "nesting": ["The building of nests for egg laying and rearing of offspring."], "animal population": ["A group of animals inhabiting a given area.\\n(Source: CED)"], "animal reproduction": ["Any of various processes, either sexual or asexual, by which an animal produces one or more individuals similar to itself."], "survival": ["The act or fact of surviving or condition of having survived."], "endemic species": ["Species native to, and restricted to, a particular geographical region."], "broad-leaved tree": ["Deciduous tree which has wide leaves, as opposed to the needles on conifers.\\n(Source: PHC)"], "sea grass bed": ["Seaweeds communities formed by green, brown and red macroscopic algae and by sea phanerogams such as Posidonia oceanica and Zostera noltii, etc."], "macrophyte": ["A large macroscopic plant, used especially of aquatic forms such as kelp (variety of large brown seaweed which is a source of iodine and potash).\\n(Source: LBC / PHC)"], "riverside vegetation": ["Plants growing in areas adjacent to rivers and streams."], "chestnut": ["Any north temperate fagaceous tree of the genus Castanea, such as Castanea sativa, which produce flowers in long catkins and nuts in a prickly bur.", "The nut of the chestnut tree."], "vegetation level": ["A subdivision of vegetation characteristic of a certain altitude above sea level at a given latitude.\\n(Source: ECHO2)"], "plant population": ["The number of plants in an area."], "arboretum": ["Collection of trees from different parts of the world, grown for scientific study."], "chorology": ["The study of the causal relations between geographical phenomena occurring within a particular region."], "botanical conservatory": ["Gardens for the conservation of rare species of plants.\\n(Source: RAMADE)"], "plant heritage": ["The sum of the earth's or a particular region's herb, vegetable, shrub and tree life viewed as the inheritance of the present generation, especially plant species deemed worthy of preservation and protection from extinction.\\n(Source: PPP / OED)"], "pruning": ["The cutting off or removal of dead or living parts or branches of a plant to improve shape or growth."], "mountain forest": ["An extensive area of woodland that is found at natural elevations usually higher than 2000 feet."], "state forest": ["Forest owned and managed by the State."], "Mediterranean forest": ["Type of forest found in the Mediterranean area comprising mainly xerophilous evergreen trees."], "private forest": ["A privately owned forest."], "maquis": ["A low evergreen shrub formation, usually found on siliceous soils in the Mediterranean lands where winter rainfall and summer drought are the characteristic climate features."], "nursery garden": ["A place where plants are propagated and nurtured until they reach a size appropriate for replanting at another location."], "forest protection": ["Branch of forestry concerned with the prevention and control of damage to forests arising from the action of people or livestock, of pests and abiotic agents."], "resinous plant": ["A plant yielding or producing resin."], "big game": ["Large wild animals that weigh typically more than 30 lb when fully grown, hunted for food, sport or profit."], "shellfish farming": ["Raising of shellfish in inland waters, estuaries or coastal waters, for commercial purposes."], "oyster farming": ["Raising oysters for human consumption."], "competitive examination": ["A test given to a candidate for a certificate or a position and concerned typically with problems to be solved, skills to be demonstrated, or tasks to be performed."], "initial training": ["Any education, instruction or discipline occurring at the beginning of an activity, task, occupation or life span."], "pedagogy": ["The principles, practice, or profession of teaching.\\n(Source: CED)", "Science on education and teaching."], "cycle path": ["Part of the road or a special path for the use of people riding bicycles."], "ski run": ["A trail, slope, or course for skiing."], "ecomuseum": ["A private, non-profit facility where plants and animals can be viewed in a natural outdoor setting.\\n(Source: AGRENV)"], "folklore": ["The traditional and common beliefs, practices and customs of a people, which are passed on as a shared way of life, often through oral traditions such as folktales, legends, anecdotes, proverbs, jokes and other forms of communication.\\n(Source: VFP)"], "country lodge": ["A small house or a hut located in the countryside."], "lodging": ["Provision of accommodation for rest or for residence in a room or rooms or in a dwelling place."], "public": ["The community or people in general or a part or section of the community grouped because of a common interest or activity.\\n(Source: CED)"], "path": ["A route or track between one place to another.", "The direction of movement, line or route of a vessel at any given moment."], "educational path": ["A guided trail, designed to explain to children a piece of countryside, the type of soil, flora, fauna, etc. Such trails may be self-guiding, using either explanatory notices set up at intervals or numbered boards referring to a printed leaflet: in other cases parties may be led by a demonstrator or warden.\\n(Source: GOOD)"], "seaside resort": ["A place near the sea where people spend their holidays and enjoy themselves."], "winter sports resort": ["Resort where sports held in the open air on snow or ice, especially skiing are practiced."], "all-terrain vehicle": ["A land carriage so constructed that it can be used on any kind of road or rough terrain and can be operated for many purposes, such as carrying goods, transporting the injured, conveying passengers, etc."], "population density": ["The number of people relative to the space occupied by them."], "young": ["Living being as genetically proceeding from an other one.", "The offspring or descendants of an animal (in some languages, it is used to refer to humans).", "In the early part of growth or life."], "active population": ["The number of people available and eligible for employment within a given enterprise, region or nation."], "time allocation": ["The act of assigning various hours of one's day, week or year to particular activities, especially those falling within the categories of work and leisure."], "goods": ["A term of variable content and meaning. It may include every species of personal chattels or property. Items of merchandise, supplies, raw materials, or finished goods. Land is excluded."], "goods and services": ["The total of economic assets, including both physical or storable objects and intangible acts of human assistance."], "time budget": ["Determining or planning for allotment of time in hours, days, weeks, etc.\\n(Source: RHW)"], "living environment": ["External conditions or surroundings in which people live or work."], "product life cycle": ["A product life cycle includes the following phases: acquisition of raw materials, production, packaging, distribution, use, recyling, and disposal."], "quality certification": ["The formal assertion in writing that a commodity, service or other product has attained a recognized and relatively high grade or level of excellence.\\n(Source: BLD / RHW)"], "living standard": ["A measurement of the development level in a country or community, gauged by factors such as personal income, education, life expectancy, food consumption, health care, technology and the use of natural resources.\\n(Source: TEX)"], "supply and demand": ["The relationship between the amount or quantity of a commodity that is available for purchase and the desire or ability of consumers to buy or purchase the commodity, which, in theory, determines the commodity's price in a free market.\\n(Source: MGHME)"], "ecological inequality": ["Any imbalance or disparity among inhabitants of the same living environment deemed inappropriate, unjust or detrimental to that environment's integrity.\\n(Source: TOE / RHW)"], "social inequality": ["Unequal rewards or opportunities for different individuals within a group or groups within a society. If equality is judged in terms of legal equality, equality of opportunity, or equality of outcome, then inequality is a constant feature of the human condition."], "myth": ["A traditional or legendary story, usually dealing with supernatural beings, ancestors, heroes or events, that is with or without determinable basis of fact or a natural explanation, but is used to explain some practice, rite or phenomenon of nature, or to justify the existence of a social institution."], "social psychology": ["Study of the effects of social structure on cognition and behavior, of processes of face-to-face interaction, and of the negotiation of social order."], "feeling for nature": ["A consciousness, sensibility or sympathetic perception of the physical world and its scenery in their uncultivated state."], "socioeconomics": ["The study of the interaction between society and economy."], "administrative deed": ["Any formal and legitimate step taken or decision made on matters of policy by a chief or other top-level officer within an organization.\\n(Source: DAM)"], "territorial government": ["An administrative body or system in which political direction or control is exercised over a designated area or an administrative division of a city, county or larger geographical area.\\n(Source: RHW / BLD)"], "citizen": ["A native or naturalized member of a state or nation who owes allegiance, bears responsibilities and obtains rights, including protection, from the government."], "parliamentary debate": ["Formal discussion or dispute on a particular matter among the members of the parliament."], "subsidiary principle": ["The fundamental doctrine or tenet that policy making decisions should be made at the most decentralized level, in which a centralized governing body would not take action unless it it is more effective than action taken at a lower government level."], "national accounting": ["Organised method of recording all business transactions in the national economy."], "satellite account": ["A separate financial record or statement that discloses financial activity in a particular area and supplements existing financial records.\\n(Source: RHW)"], "household expenditure": ["Any spending done by a person living alone or by a group of people living together in shared accommodation and with common domestic expenses.\\n(Source: ODE)"], "intervention fund": ["Money or financial resources set aside to interpose or interfere in any business affair in order to affect an outcome.\\n(Source: OED)"], "financial fund": ["Monetary resources set aside for some purpose."], "International Monetary Fund": ["An international organization established in 1944, affiliated with the United Nations that acts as an international bank facilitating the exchange of national currencies and providing loans to member nations."], "gross domestic product": ["The total output of goods and services produced by a national economy in a given period, usually a year, valued at market prices. It is gross, since no allowance is made, for the value of replacement capital goods.", "A measure of the economic production of a particular territory in financial capital terms over a specific time period."], "process analysis": ["The examination of a process to understand it and therefore develop ideas for its improvement."], "audit": ["The periodic or continuous verification of the accounts, assets and liabilities of a company or other organization, often to confirm compliance with legal and professional standards.", "To conduct an independent review and examination of system records and activities in order to test the adequacy and effectiveness of data security and data integrity procedures, to ensure compliance with established policy and operational procedures, and to recommend any necessary changes."], "water cost": ["The value or the amount of money exchanged for the production and sustained supply of water.\\n(Source: EFP / RHW)"], "ecomarketing": ["The marketing of products that are presumed to be environmentally safe."], "market study": ["The gathering and studying of data to determine the projection of demand for an item or service."], "free trade": ["Trade which is unimpeded by tariffs, import and export quotas and other measures which obstruct the free movement of goods and services between states."], "calculation": ["The act, process or result of calculating.\\n(Source: CED)"], "density": ["The mass of a substance per unit volume."], "index": ["A list of record surrogates arranged in order of some attribute expressible in machine-orderable form.\\n(Source: MGH)"], "census survey": ["An official periodic count of a population including such information as sex, age, occupation, etc."], "statistical series": ["An ordered sequence of data samples in numerical form used to predict or demonstrate trends through time and space."], "opinion survey": ["The canvassing of a representative sample of a large group of people on some question in order to determine the general opinion of a group."], "rate": ["The amount of change in some quantity during a time interval divided by the length of the time interval."], "seasonal variation": ["In time series, that part of the movement which is assigned to the effect of the seasons on the year."], "scientific committee": ["An organized group of persons elected or appointed to discuss scientific matters."], "applied research": ["Research directed toward using knowledge gained by basic research to make things or to create situations that will serve a practical or utilitarian purpose.\\n(Source: MGH)"], "scientific research": ["Systematic investigation to establish facts or principles concerning a specific scientific subject."], "agronomy": ["The principles and procedures of soil management and of field crop and special-purpose plant improvement, management, and production."], "agrosystem": ["Ecosystem dominated by the continuous agricultural intervention of man."], "crop treatment": ["Use of chemicals in order to avoid damage of crops by insects or weeds.\\n(Source: WRIGHTa)"], "aviculture": ["The raising, keeping, and care of birds."], "transhumance": ["The seasonal migration of livestock to suitable grazing grounds."], "mineral conditioner": ["Any naturally occurring inorganic substances with a definite chemical composition and usually of crystalline structure, such as rocks, which are used to stabilize soil, improving its resistance to erosion, texture and permeability.\\n(Source: RHW / SOI)"], "slash and burn culture": ["A traditional farming system that has been used by generations of farmers in tropical forests and the savannah of north and east Africa. It is known to be an ecologically sound form of cultivation, and because the soil is poor in tropical rain forests it is a sustainable method of farming. It is still practised today, primarily in the developing countries. Small areas of bush or forests are cleared and the smaller trees burned. This unlocks the nutrients in the vegetation and gives the soil fertilizer that is easily taken up by plants. A few years later the soil is degraded and the farmer moves on to do the same at another site. The original ground is left fallow for anything up to 20 years so that the forest can regenerate. With the growth in population and in the subsequent need for more farming land to produce food, the method is increasingly being used today to clear large areas of tropical forests for cattle ranching, and in most cases the ground is not left fallow for long enough and, with modern mechanized farming systems, not enough tree stumps or suitable habitats for plant life are left to start the regeneration process.\\n(Source: WRIGHT)"], "chalk": ["A soft, pure, earthy, fine-textured, usually white to light gray or buff limestone of marine origin, consisting almost wholly (90-99%) of calcite.", "A writing implement (made of white or coloured chalk) that leaves an impression through being divided into a powder or paste that sticks to the surface."], "organic matter": ["Plant and animal residue that decomposes and becomes a part of the soil."], "drainage system": ["A surface stream, or a body of impounded surface water, together with all other such streams and water bodies that are tributary to it and by which a region is drained. An artificial drainage system includes also surface and subsurface conduits."], "irrigation system": ["A system of man-made channels for supplying water to land to allow plants to grow."], "soil salinity": ["Measurement of the quantity of mineral salts found in a soil. Many semi-arid and arid areas are naturally salty. By definition they are areas of substantial water deficit where evapotranspiration exceeds precipitation. Thus, whereas in humid areas there is sufficient water to percolate through the soil and to leach soluble materials from the soil and the rocks into the rivers and hence into the sea, in deserts this is not the case. Salts therefore tend to accumulate.\\n(Source: PHC / GOUD)"], "approach": ["The way or means of entry or access.", "The method, orientation, way of thought in which one takes up a subject, a problem, an argument etc.", "The act of drawing spatially closer to something.", "To begin to deal with, e.g., a task, a problem, etc.", "To come near to; to move towards.", "To come near or verge on, resemble, come nearer in quality, or character.", "To make advances to someone, usually with a proposal or suggestion.", "To come near in time."], "railway station": ["A place along a route or line at which a train stops to pick up or let off passengers or goods, especially with ancillary buildings and services.", "A building in or at which trains stop."], "bus station": ["A place along a route or line at which a bus stops for fuel or to pick up or let off passengers or goods, especially with ancillary buildings and services.\\n(Source: CED)"], "railway network": ["The whole system of railway distribution in a country."], "road network": ["The system of roads through a country."], "navigation": ["The science or art of conducting ships or aircraft from one place to another, esp. the method of determining position, course, and distance travelled over the surface of the earth by the principles of geometry and astronomy and by reference to devices (as radar beacons or instruments) designed as aids.", "The transport and movement of goods, people and animals over water."], "merchant shipping": ["Transportation of persons and goods by means of ships travelling along fixed navigation routes.\\n(Source: ZINZANa)"], "combined transport": ["Transport in which more than one carrier is used, e.g. road, rail and sea."], "periurban space": ["Any expanse of land or region located on the outskirts of a city or town.\\n(Source: RHW)"], "single family dwelling": ["An unattached dwelling unit inhabited by an adult person plus one or more related persons."], "traditional architecture": ["Methods of construction which use locally available resources to address local needs."], "building destruction": ["The tearing down of buildings by mechanical means."], "building restoration": ["The accurate reestablishment of the form and details of a building, its artifacts, and the site on which it is located, usually as it appeared at a particular time."], "ISO standard": ["Documented agreements containing technical specifications or other precise criteria to be used consistently as rules, guidelines, or definitions of characteristics, to ensure that materials, products, processes and services are fit for their purpose.\\n(Source: ISOCH)"], "technical regulation": ["A government or management prescribed rule that provides detailed or stringent requirements, either directly or by referring to or incorporating the content of a standard, technical specification or code of practice.\\n(Source: PVG)"], "codification": ["The process of collecting and arranging systematically, usually by subject, the laws of a state or country, or the rules and regulations covering a particular area or subject of law or practice."], "animal rights": ["Just claims, legal guarantees or moral principles accorded to sentient, non-human species, including freedom from abuse, consumption, experimentation, use as clothing or performing for human entertainment."], "citizen rights": ["Rights recognized and protected by law, pertaining to the members of a state.\\n(Source: ZINZANa)"], "notice": ["Factual information, advice or a written warning communicated to a person by an authorized source, often conveyed because of a legal or administrative rule requiring transmission of such information to all concerned parties.", "To pay attention and perceive something.", "A sign posted in a public place as an advertisement.", "To see, discover or determine something, unclear, distant or hidden, by looking carefully.", "Advance notification (usually written) of the intention to withdraw from an arrangement of contract.", "To make or write a comment on."], "order": ["A direction or command of a court. In this sense it is often used synonymously with judgment.", "The document bearing the seal of the court recording its judgment in a case.", "To express as instruction to be executed by the receiver, in accordance with an authority acknowledged by him.", "A biological taxon, a group of species, part of a class and consisting of one or more families", "A formal association of people with similar interests.", "That which is enjoined or ordered to one or several persons by a superior authority.", "A condition of regular or proper arrangement.", "A command given by a superior (e.g., a military or law enforcement officer) that must be obeyed.", "A group of person living under a religious rule.", "A degree in a continuum of size or quantity.", "To place a request for goods at a company.", "To give instructions to or direct somebody to do something with authority."], "building permit": ["Authorization required by local governmental bodies for the erection of an enclosed structure or for the major alteration or expansion of an existing edifice."], "law draft": ["The form in which proposed statutes, resolutions or special acts are introduced into a legislative body, before they are enacted or passed."], "regulation": ["A specification of behavior used as an authoritative guide for conduct.", "The act of regulating; a rule or order prescribed for management or government; a regulating principle; a precept. Rule of order prescribed by superior or competent authority relating to action on those under its control."], "concession": ["Any rebate, abatement, voluntary grant of or a yielding to a demand or claim, typically made by a government or controlling authority to an individual or organization.\\n(Source: BLD)"], "declaration of public utility": ["Administrative Act giving the right to take private property for public use.\\n(Source: BLACKa)"], "public inquiry": ["An investigation, especially a formal one conducted into a matter of public utility by a body constituted for that purpose by a government, local authority, or other organization."], "easement": ["The rights of use over the property of someone else; a burden on a piece of land causing the owner to suffer access by another."], "crime": ["Any act done in violation of those duties which an individual owes to the community, and for the breach of which the law has provided that the offender shall make satisfaction to the public.\\n(Source: BLACK)"], "criminal law procedure": ["The rules of law governing the procedure by which crimes are investigated, prosecuted, adjudicated, and punished.\\n(Source: BLACK)"], "conflict": ["A state of opposition or disagreement between ideas, interests, etc."], "litigation": ["A judicial contest, a judicial controversy, a suit at law.\\n(Source: BLACK)"], "justice": ["The correct application of law as opposed to arbitrariness."], "trial": ["A judicial examination and determination of issues between parties to action; whether they need issues of law or of fact. A judicial examination, in accordance with law of the land, of a cause, either civil or criminal, of the issues between the parties, whether of law or fact, before a court that has proper jurisdiction.", "Grammatical number related to precisely 3 objects of the same type"], "court": ["An organ of the government, belonging to the judicial department, whose function is the application of the laws to controversies brought before it and the public administration of justice.", "The residence of a sovereign.", "The actual enclosed space in which a judge regularly holds court.", "To engage in behavior leading to mating.", "To engage in activities intended to win someone's affections."], "lease": ["Agreement which gives rise to relationship of landlord and tenant (real property) or lessor and lessee (real or personal property). Contract for exclusive possession of lands or tenements for determinate period. Contract for possession and profits of lands and tenements either for life, or for certain period of time, or during the pleasure of the parties.", "To hold under a lease or rental agreement of goods and services.", "A contract granting use or occupation of property during a specified period in exchange for a specified rent.", "The period of a lease.", "To operate or live in some property or land through a long-term contract from the owner.", "To take or hold by lease.", "To grant a lease.", "To let for money."], "certification": ["The formal assertion in writing of some fact.", "A procedure by which a third party gives written assurance that a product, process or service conforms to specified requirements.\\n(source: ISO/IEC Guide 2:1996)"], "homologation": ["The granting of approval by an official authority."], "pre-emption": ["The right of first refusal to purchase land in the event that the grantor of the right should decide to sell."], "prescription": ["Acquisition of rights to the property caused by reason of continuous and prolonged use.", "A written description by a physician of medicine and dosage."], "repression": ["The act, as by power or authority, of arresting or inhibiting the communication of ideas or facts as expressed in a practice, movement, publication or piece of evidence in a court proceeding.", "The psychological act of excluding desires and impulses (wishes, fantasies or feelings) from one's consciousness and attempting to hold or subdue them in the subconscious. (source: Wikipedia)", "The persecution of an individual or group for political reasons, particularly for the purpose of restricting or preventing their ability to take part in the political life of society."], "devolution": ["The act of assigning or entrusting authority, powers or functions to another as deputy or agent, typically to a subordinate in the administrative structure of an organization or institution."], "biomarker": ["A normal metabolite that, when present in abnormal concentrations in certain body fluids, can indicate the presence of a particular disease or toxicological condition."], "quality objective": ["Any goal or target established for a product, service or endeavor that aspires to attain a relatively high grade or level of excellence."], "solid particle": ["Any tiny or very small mass of material that has a definite volume and shape and resists forces that would alter its volume or shape."], "sensor": ["The generic name for a device that senses either the absolute value or a change in a physical quantity such as temperature, pressure, flow rate, or pH, or the intensity of light, sound, or ratio waves and converts that change into a useful input signal for an information-gathering system."], "instrumentation": ["Designing, manufacturing, and utilizing physical instruments or instrument systems for detection, observation, measurement, automatic control, automatic computation, communication, or data processing."], "metrology": ["The science of measurement."], "observation satellite": ["Man-made device that orbits the earth, receiving, processing and transmitting signals and generating images such as weather pictures."], "atrazine": ["Herbicide belonging to the triazine group, widely employed and particularly in maize crops."], "organic nitrogen": ["Essential nutrient of the food supply of plants and the diets of animals. Animals obtain it in nitrogen-containing compounds, particularly aminoacids. Although the atmosphere is nearly 80% gaseous nitrogen, very few organisms have the ability to use it in this form. The higher plants normally obtain it from the soil after microorganisms have converted the nitrogen into ammonia or nitrates, which they can then absorb. This conversion of nitrogen, known as nitrogen fixation, is essential for the formation of amino acids which, in turn, are the building blocks of proteins.\\n(Source: WRIGHT)"], "halogenated compound": ["A substance containing halogen atoms."], "pyralene": ["Chemical compound belonging to the polychlorinated biphenyls family, used in the production of electrical equipment which requires dielectric fluid such as power transformers and capacitors, as well as in hydraulic machinery, vacuum pumps, compressors and heat-exchanger fluids.\\n(Source: PZ)"], "asbestosis": ["A non-malignant progressive, irreversible, lung disease, characterized by diffuse fibrosis, resulting from the inhalation of asbestos fibers."], "genotoxicity": ["The action of chemical, physical and biological agents that damage DNA."], "intoxication": ["The state of being poisoned; the condition produced by a poison which may be swallowed, inhaled, injected, or absorbed through the skin.\\n(Source: KOREN)"], "total organic carbon": ["The amount of carbon covalently bound in organic compounds in a water sample."], "laboratory test": ["A test, examination or evaluation performed in a laboratory."], "biotic index": ["Scale for showing the quality of an environment by indicating the types of organisms present in it (e.g. how clean a river is)."], "photodegradation": ["The capability of being decomposed by prolonged exposure to light."], "insoluble substance": ["Substance incapable of forming a solution, especially in water."], "non-volatile substance": ["Substance that is not capable of changing from a solid or liquid form to a vapour.\\n(Source: CEDa)"], "volatile substance": ["A substance capable of readily changing from a solid or liquid form to a vapour; having a high vapour pressure and a low boiling point."], "chemical corrosivity": ["The tendency of a metal to wear away another by chemical attack.\\n(Source: MGH)"], "experimental study": ["Study based on experimentation."], "drawing": ["The visual representation of a person or an object.", "The act of creating an artistic picture, likeness, diagram or representation.", "A picture, likeness, diagram or representation, usually written on paper."], "organoleptic property": ["Property that can be perceived by sense organs"], "cardiovascular system": ["Those structures, including the heart and blood vessels, which provide channels for the flow of blood.", "The parts of a animal body comprising the heart, veins, capillaries and arteries."], "enterovirus": ["Any of a subgroup of the picornaviruses infecting the gastrointestinal tract and discharged in feces, including coxsackieviruses, echoviruses, and polioviruses; may be involved in respiratory disease, meningitis, and neurological disease.\\n(Source: KOREN)"], "animal biology": ["The scientific study of the natural processes of animals."], "plant biology": ["A branch of the biological sciences which embraces the study of plants and plant life."], "genetic pool": ["The total number of genes or the amount of genetic information possessed by all the reproductive members of a population of sexually reproducing organisms."], "hearing acuity": ["Effectiveness of hearing."], "decibel": ["A unit used to express relative difference on power, usually between acoustic or electric signals, equal to ten times the common logarithm of the ratio of the two level."], "acoustical quality": ["The characteristics of a confined space that determines its ability to enable music and speech to be heard clearly within it."], "airborne noise": ["Noise caused by the movement of large volumes of air and the use of high-pressure air."], "background noise": ["Noise coming from source other than the noise source being monitored."], "rolling noise": ["Deeply resounding, reverberating noise caused by the friction between car tyres and road surfaces."], "tidal power station": ["Power station where the generation of power is provided by the ebb and flow of the tides. The principle is that water collected at high tide behind a barrage is released at low tide to turn a turbine that, in turn, drives a generator."], "hydroelectric energy": ["The free renewable source of energy provided by falling water that drives the turbines. Hydropower is the most important of the regenerable energy sources because of its highest efficiency at the energy conversion. There are two types of hydroelectric power plants: a) run-of-river power plants for the use of affluent water; b) storage power plants (power stations with reservoir) where the influx can be regulated with the help of a reservoir. Mostly greater differences in altitudes are being used, like mountain creeks. Power stations with reservoirs are generally marked by barrages with earth fill dam or concrete dams. Though hydropower generally can be called environmentally acceptable, there exist also some problems: a) change of groundwater level and fill up of the river bed with rubble. b) Risk of dam breaks. c) Great demand for land space for the reservoir. d) Diminution, but partly also increase of value of recreation areas. As the hydropowers of the world are limited, the world energy demand however is rising, finally the share of hydropower will decrease.\\n(Source: PORT / PHC / PZ)"], "water mill": ["A mill whose power is provided by a large wheel which is turned by moving water, especially a river."], "radioelement": ["An element that is naturally radioactive."], "fast reactor": ["Nuclear reactor which produces more fissile material than it consumes, using fast-moving neutrons and making plutonium-239 from uranium-238, thereby increasing the reactor's efficiency."], "contaminated area": ["Any site or region that is damaged, harmed or made unfit for use by the introduction of unwanted substances, particularly microorganisms, chemicals, toxic and radioactive materials and wastes.\\n(Source: TOE / HMD)"], "atmospheric aerosol": ["Particulate matter suspended in the air. The particulate matter may be in the form of dusts, fumes, or mist. Aerosols in the atmosphere are the form in which pollutants such as smoke are dispersed.\\n(Source: LANDY / PHC)"], "biofuel": ["A gaseous, liquid, or solid fuel that contains an energy content derived from a biological source."], "ethanol": ["A colorless liquid, miscible with water, used as a reagent and solvent.", "A flammable, colorless liquid which is used amongst others as solvent, disinfectant and intoxicant."], "clean air car": ["Vehicles that functions without emitting pollutants in the atmosphere."], "continental climate": ["A climate characterized by hot summers, cold winters, and little rainfall, typical of the interior of a continent."], "desert climate": ["A climate type which is characterized by insufficient moisture to support appreciable plant life; that is, a climate of extreme aridity."], "equatorial climate": ["Climate characterized by constant temperatures, abundant rainfall and a very short dry season."], "Mediterranean climate": ["A type of climate characterized by hot, dry, sunny summers and a winter rainy season; basically, this is the opposite of a monsoon climate. Also known as etesian climate."], "mountain climate": ["Very generally, the climate of relatively high elevations; mountain climates are distinguished by the departure of their characteristics from those of surrounding lowlands, and the one common basis for this distinction is that of atmospheric rarefaction; aside from this, great variety is introduced by differences in latitude, elevation, and exposure to the sun; thus, there exists no single, clearly defined, mountain climate. Also known as highland climate.\\n(Source: MGH)"], "oceanic climate": ["A regional climate which is under the predominant influence of the sea, that is, a climate characterized by oceanity; the antithesis of a continental climate."], "temperate climate": ["The climate of the middle latitudes; the climate between the extremes of tropical climate and polar climate."], "tropical climate": ["A climate which is typical of equatorial and tropical regions, that is, one with continually high temperatures and with considerable precipitation, at least during part of the year."], "thunderstorm": ["A storm caused by strong rising air currents and characterized by thunder and lightning and usually heavy rain or hail."], "glaze": ["A coating of ice, generally clear and smooth but usually containing some air pockets, formed on exposed objects by the freezing of a film of supercooled water deposited by rain, drizzle, or fog, or possibly condensed from supercooled water vapour."], "water table": ["Water that occupies pores, cavities, cracks and other spaces in the crustal rocks. It includes water precipitated from the atmosphere which has percolated through the soil, water that has risen from deep magmatic sources liberated during igneous activity and fossil water retained in sedimentary rocks since their formation. The presence of groundwater is necessary for virtually all weathering processes to operate. Phreatic water is synonymous with groundwater and is the most important source of any water supply.\\n(Source: WHIT)"], "hydrometry": ["The science and technology of measuring specific gravities, particularly of liquids."], "sedimentology": ["The scientific study of sedimentary rocks and of the processes by which they were formed."], "demesnial water": ["A body of water that is owned and maintained by a national governmental body or agency."], "bog": ["A stretch waterlogged, spongy ground, chiefly composed of decaying vegetable matter, especially of rushes, cotton grass, and sphagnum moss."], "water desalination": ["Any mechanical procedure or process where some or all of the salt is removed from water."], "swell": ["A regular movement of marine waves created by wind stress in the open ocean which travels considerable distances.", "To grow larger in volume.", "To grow larger in volume."], "river management": ["The administration or handling of a waterway or a stream of flowing water.\\n(Source: RHW)"], "flushing": ["Removing lodged deposits of rock fragments and other debris by water flow at high velocity; used to clean water conduits and drilled boreholes.\\n(Source: MGH)"], "canal lock": ["A chamber with gates on both ends connecting two sections of a canal or other waterway, to raise or lower the water level in each section."], "bank protection": ["Engineering work which aims at the protection of banks of a river, or slopes of embankments along it, from erosion by the current of flow, from floods, etc."], "retaining reservoir": ["Basin used to hold water in storage."], "water taste": ["Taste in water that can be caused by foreign matter, such as organic compounds, inorganic salts or dissolved gases."], "green tide": ["A proliferation of a marine green plankton toxic and often fatal to fish, perhaps stimulated by the addition of nutrients."], "water salinity": ["The degree of dissolved salts in water measured by weight in parts per thousand."], "catchment": ["A structure in which water is collected."], "fountain": ["A stream of water that is forced up into the air through a small hole, especially for decorative effect.", "An ornamental water feature consisting of one or more streams of water originating from a statue or other structure."], "separate sewer system": ["Sewer system having distinct pipes for collecting superficial water and sewage water."], "combined sewer system": ["A sewer intended to serve as a sanitary sewer and a storm sewer, or as an industrial sewer and a storm sewer."], "water aeration": ["Addition of air to sewage or water so as to raise its dissolved oxygen level."], "water regeneration": ["A process in which naturally occurring microorganisms, plants, trees or geophysical processes break down, degrade or filter out hazardous substances or pollutants from a body of water, cleansing and treating contaminated water without human intervention."], "water resources management": ["Measures and activities concerning the supply of water, the improvement of efficiency in its use, the reduction of losses and waste, water-saving practices to reduce costs and to slow the depletion of the water supply to ensure future water availability.\\n(Source: EARTH1a)"], "bulky waste": ["Large item of waste material, such as appliances, furniture, large auto parts, trees, branches, stumps, etc.\\n(Source: LANDY)"], "alkaline battery": ["A primary cell that uses an alkaline electrolyte, usually potassium hydroxide, and delivers about 1.5 volts at much higher current rates than the common carbon-zinc cell."], "electric battery": ["A direct-current voltage source made up of one or more units that convert chemical, thermal, nuclear, or solar energy into electrical energy."], "metal waste": ["Metal material discarded during manufacturing or processing operations which cannot be directly fed back into the operation."], "mineral waste": ["Waste material resulting from ore extraction that is usually left on the soil surface.\\n(Source: GREMES)"], "wreck": ["The hulk of a wrecked or stranded ship; a ship dashed against rocks or land and broken or otherwise rendered useless.\\n(Source: ISEP)"], "mineral oil": ["Oil which derives from petroleum and is made up of hydrocarbons."], "whey": ["The watery liquid that separates from the curd when the milk is clotted, as in making cheese."], "thickening": ["Any thickened enlargement.", "In cooking, the process of increasing the viscosity of a liquid either by reduction, or by the addition of a thickening agent, typically containing starch."], "industrial wasteland": ["Area of land which is no longer usable for cultivation or for any other purpose after having been the site of an industrial plant."], "quartering": ["The act of dismembering the carcass of an animal with the production of organic waste which if improperly disposed cause problems of pollution and fawl smells."], "piggery": ["A place where pigs are kept and reared."], "aggregate extraction": ["Extraction of crushed rock or gravel screened to sizes for use in road surfaces, concretes, or bituminous mixes."], "biofiltration": ["The distribution of settled sewage on a bed of inert granular material through which it is allowed to percolate. In doing so, the effluent is aerated thus allowing aerobic bacteria and fungi to reduce its biochemical oxygen demand.\\n(Source: PORT)"], "dechlorination": ["Removal of chlorine from a substance."], "engineering": ["The science by which the properties of matter and the sources of power in nature are made useful to humans in structures, machines, and products."], "aerobic treatment": ["The introduction of air into sewage so as to provide aerobic biochemical stabilization during a detention period.\\n(Source: KOREN)"], "primary treatment": ["Removal of floating solids and suspended solids, both fine and coarse, from raw sewage."], "vitrification": ["Formation of a glassy or noncrystalline material."], "underground quarry": ["Quarry located below the surface of the Earth."], "geotechnics": ["The application of scientific methods and engineering principles to civil engineering problems through acquiring, interpreting, and using knowledge of materials of the crust of the earth.\\n(Source: MGH)"], "rock mechanics": ["The theoretical and applied science of the physical behavior of rocks, representing a \"branch of mechanics concerned with the response of rock to the force fields of its physical environment\"."], "bush clearing": ["The removal of brush using mechanical means, either by cutting manually or by using machinery for crushing, rolling, flailing, or chipping it, or by chemical means or a combination of these.\\n(Source: DUNSTE)"], "flood protection": ["Precautionary measures, equipment or structures implemented to guard or defend people, property and lands from an unusual accumulation of water above the ground."], "volcanology": ["The branch of geology that deals with volcanism."], "civil safety": ["Actions and measures undertaken, often at a local level, to ensure that citizens of a community are secure from harm, injury, danger or risk.\\n(Source: RHW / OEC)"], "industrial safety": ["Measures or techniques implemented to reduce the risk of injury, loss and danger to persons, property or the environment in any facility or place involving the manufacturing, producing and processing of goods or merchandise."], "ecocatastrophe": ["A sudden, widespread disaster or calamity causing extensive damage to the environment that threatens the quality of life for people living in the affected area or region, potentially leading to many deaths."], "nuclear hazard": ["Risk or danger to human health or the environment posed by radiation emanating from the atomic nuclei of a given substance, or the possibility of an uncontrolled explosion originating from a fusion or fission reaction of atomic nuclei.\\n(Source: MHD / TOE)"], "disaster zone": ["An area that officially qualifies for emergency governmental aid as a result of a catastrophe, such as an earthquake or flood."], "damage insurance": ["A commercial product which provides a guarantee against damage to property in return for premiums paid."], "pollution insurance": ["A commercial agreement which provides protection against the risks, or a particular risk, associated with pollution, toxic waste disposal or related concerns.\\n(Source: RHW)"], "water damage": ["Damage caused by water, for example as a result of flooding or severe storms."], "appraisal": ["An expert or official valuation."], "compensation for damage": ["Equivalent in money or other form for a loss sustained for an injury, for property taken, etc."], "public institution": ["Institution for the management of public issues."], "patent": ["A grant of right to exclude others from making, using or selling one's invention and includes right to license others to make, use or sell it."], "press release": ["An official statement or announcement distributed to members of the media by a public relations firm, government agency or some other organization, often to supplement or replace an oral presentation."], "speech": ["An address or form of oral communication in which a speaker makes his thoughts and emotions known before an audience, often for a given purpose.\\n(Source: RHW)"], "cinematographic film": ["Any motion picture of a story, drama, episode or event, often considered as an art form or used as a medium for entertainment."], "documentary film": ["Any motion picture or movie in which an actual event, era or life story is presented factually, with little or no fiction."], "parliamentary report": ["A written account describing in detail observations or the results of an inquiry into an event or situation and presented to an official, deliberative body with legislative powers.\\n(Source: RHW)"], "statutory text": ["A document or a portion thereof expressing an official enactment of a legislative body, with emphasis on the document's precise wording or language.\\n(Source: RHW)"], "thesis": ["A treatise on a particular subject, in which original research has been done, in order to receive a doctoral degree."], "CD-ROM": ["A compact disc on which a large amount of digitalised read-only data can be stored."], "information network": ["A system of interrelated persons and/or devices linked to permit the exchange of data or knowledge.\\n(Source: ISEP / RHW)"], "assay": ["Qualitative or quantitative determination of the components of a material, such as an ore or a drug."], "method": ["A way of proceeding or doing something, especially a systematic or regular one.", "A particular means of accomplishing something."], "groundwater quality": ["Groundwater accounts for over 95% of the earth's useable fresh-water resources; over half the world's population depends on groundwater for drinking-water supplies. This invisible resource is vulnerable to pollution and over-exploitation. Effective conservation of groundwater supplies requires the integration of land-use and water management.\\n(Source: GILP96)"], "ontogenesis": ["The entire sequence of events involved in the development of an individual organism."], "land tax": ["A tax laid upon the legal or beneficial owner of real property, and apportioned upon the assessed value of his land."], "open lawn": ["Any relatively unobstructed field of cultivated and mown grass, especially near a house or in a park."], "urban concentration": ["A process in which an increasing proportion of a country's population is concentrated in urban areas.\\n(Source: GOOD)"], "home garden": ["A plot of cultivated ground adjacent to a dwelling and usually devoted in whole or in part to the growing of herbs, fruits, flowers, or vegetables for household use."], "photography": ["The process of forming visible images directly or indirectly by the action of light or other forms of radiation on sensitive surfaces.", "The occupation of taking and printing photographs or making movies."], "bottle cap": ["A device used to seal the openings of bottles of many types."], "voting": ["The act of formally expressing an opinion or choice in some matter or for some candidate, usually by voice or ballot."], "budget policy": ["The programmatic use of a government's spending and revenue-generating activities to influence the economy and achieve specific objectives."], "international balance": ["A system in which nations or blocks of nations strive to maintain an equilibrium of power to prevent dominance by any single nation or to reduce conflict or the possibility of war."], "monetary economics": ["The study, policies or system of institutions and procedures by which a country or region's commerce is supplied with notes, coins, bank deposits or other equivalent mediums of exchange."], "free movement of capital": ["The unrestrained flow of cash, funds, and other means of wealth between countries with different currencies."], "economic geography": ["The geography of people making a living, dealing with the spatial patterns of production, distribution and consumption of goods and services. The development of economic geography over the past three decades has witnessed the substitution of analysis for description, leading to an identification of the factors and an understanding of the processes affecting the spatial differentiation of economic activities over the earth's surface.\\n(Source: GOOD)"], "credit": ["The financial facility or system by which goods and services are provided in return for deferred, instead of immediate, payment.", "(accounting) To attribute a credit (to an account).", "To give someone credit for something.", "To ascribe an achievement to.", "Approval.", "Money available for a client to borrow.", "A short note recognizing a source of information or of a quoted passage."], "freedom": ["The quality or state of being free, especially to enjoy political and civil liberties.\\n(Source: CED)", "The condition of being free to act, believe or express oneself as one chooses."], "fodder plant": ["A plant used to feed livestock."], "textile plant": ["Plant producing material suitable to be made into cloths."], "tropical plant": ["A plant growing in tropical areas in conditions of constant rain and high temperature."], "type of tenure": ["The manner in which land is owned and possessed, i.e. of title to its use.\\n(Source: GOOD)"], "petrochemical": ["Chemicals manufactured from the products of oil refineries, based largely on ethylene, propylene and butylene produced in the cracking of petrol fractions."], "speciality chemical": ["Various fine chemical products like glue, adhesives, resins, rubber, plastic compounds, selective herbicide, etc.\\n(Source: ICBT)"], "processed foodstuff": ["Food which has been treated to improve its appearance or to prevent it going bad."], "convenience food": ["Food so prepared and presented as to be easily and quickly ready for consumption."], "root crop": ["Plant which stores edible material in a root, corm or tuber."], "cultivation system": ["Any overall structure or set-up used to organize the activity of preparing land or soil for the growth of new crops, or the activity of promoting or improving the growth of existing crops."], "fisheries structure": ["All the structures (fishing vessels, trawling nets, factory ships, catcher boats, etc.) used in fishing industry.\\n(Source: PARCORa)"], "fishing ground": ["Area of sea or freshwater where fish are caught."], "coal industry": ["Industry related with the technical and mechanical activity of removing coal from the earth and preparing it for market."], "energy industry": ["Industry which converts various types of fuels as well as solar, water, tidal, and geothermal energy into other energy forms for a variety of household, commercial, transportation, and industrial application.\\n(Source: PZ)"], "precision engineering": ["Research and development, design, manufacture and measurement of high accuracy components and systems. It is related to mechanical, electronic, optical and production engineering, physics, chemistry, and computer and materials science.\\n(Source: ASPE)"], "materials technology": ["Any technical means or equipment used for the production and optimization of material goods that consist of any of a diverse range of properties, either alone or in combination, such as glass, metal, plastics and ceramics.\\n(Source: APD)"], "military equipment": ["Equipment necessary to the performance of military activities, either combat or noncombat."], "machinery": ["A group of mechanical or electrical parts or machines arranged to perform or assist a particular function."], "business activity": ["Any profit-seeking undertaking or venture that involves the production, sale and purchase of goods or services."], "building service": ["The aggregation of services, including construction, development, maintenance and leasing, performed for human-occupied properties, such as office buildings and apartment houses.\\n(Source: PBS)"], "destination of transport": ["The targeted place to which persons, materials or commodities are conveyed over land, water or through the air."], "degradation of the environment": ["The process by which the environment is progressively contaminated, overexploited and destroyed."], "accounting system": ["The system of setting up, maintaining, and auditing the books of a firm and of analyzing its financial status and operating results."], "customs tariff": ["An official list or schedule setting forth the duties imposed by a government on imported or exported goods.\\n(Source: OED)"], "commercial transaction": ["The conduct or carrying on of trade, business or a financial matter to a conclusion or settlement.\\n(Source: RHW)"], "pay policy": ["A course of action or procedure regarding compensation or recompensation for work done or services rendered.\\n(Source: RHW)"], "European Monetary System": ["An organization established in Europe in 1979 to coordinate financial policy and exchange rates for the continent by running the Exchange Rate Mechanism (ERM) and assisting movement toward a common European currency and a central European bank.\\n(Source: ODE)"], "money market": ["A financial market that trades Treasury bills, commercial paper and other short-term financial instruments."], "exchange policy": ["Course of action or procedure by government, business, or an individual concerning trade activities.\\n(Source: ISEP / RHW)"], "public debt": ["The total amount of all government securities outstanding."], "tax on consumption": ["A sum of money demanded from businesses by a government, usually based on a percentage of total sales of select goods and services, and generally passed on to consumers with each individual purchase.\\n(Source: ODE)"], "tax on capital": ["A government imposed levy on the wealth or assets gained by an individual, firm, or corporation for the purpose of raising revenue to pay for services or improvements for the general public benefit.\\n(Source: EFP / RHW)"], "income tax": ["A tax on the annual profits arising from property, business pursuits, professions, trades or offices."], "market price": ["The price actually given in current market dealings; the actual price at which given stock or commodity is currently sold in the usual and ordinary course of trade and competition between sellers and buyers.\\n(Source: WESTS)"], "transport cost": ["The outlay or expenditure involved in moving goods from one place to another.\\n(Source: ODE)"], "prices policy": ["The guiding procedure, philosophy, or course of action for decisions regarding the monetary rate or value for goods and services."], "company structure": ["The type of organization of a company. Three kinds of structure are usually recognized: centralized, formal or hierarchical."], "private international law": ["The part of the national law of a country that establishes rules for dealing with cases involving a foreign element."], "public international law": ["The general rules and principles pertaining to the conduct of nations and of international organizations and with the relations among them.\\n(Source: BLD)"], "international economic law": ["The recognized rules guiding the commercial relations of at least two sovereign states or private parties involved in cross-border transactions, including regulations for trade, finance and intellectual property.\\n(Source: IEL)"], "family law": ["Branch of specialty of law concerned with such subjects as adoption, annulment, divorce, paternity, custody and child support."], "traffic regulation": ["A body of rules or orders prescribed by government or management for the safe and orderly movement of vehicles on land, sea or in the air.\\n(Source: BLD / RHW)"], "law relating to prisons": ["Binding rules and regulations pertaining to the construction, use and operation of jails, penitentiaries and other places of legal confinement and punishment."], "competition law": ["That part of the law dealing with matters such as those arising from monopolies and mergers, restrictive trading agreements, resale price maintenance and agreements involving distortion of competition affected by EU rules."], "ruling": ["A judicial or administrative interpretation of a provision of a statute, order, regulation, or ordinance. May also refer to judicial determination of admissibility of evidence, allowance of motion, etc."], "legal procedure": ["All proceedings authorised or sanctioned by law, and brought or instituted in a court of legal tribunal, for the acquiring of a right or the enforcement of a remedy.\\n(Source: WESTS)"], "legal system": ["The organization and network of courts and other institutions, procedures and customs, officers and other personnel concerned with interpretation and enforcement of a country's law or with advice and assistance in matters pertaining to those laws."], "legislative procedure": ["Any prescribed step or manner of proceeding that a law making body takes in proposing laws, resolutions or special acts before they can be enacted or passed.\\n(Source: RHW)"], "management technique": ["Systematic approach or method of performance for the accomplishment of administrative goals or tasks."], "construction policy": ["A course of action adopted and pursued by government, business or some other organization, which plans or organizes for the maintenance, development and erection of houses, offices, bridges or other building structures.\\n(Source: OED)"], "space policy": ["A course of action adopted and pursued by government or some other organization, which seeks to support research and the exploration of planets, asteroids and other elements in the region beyond earth's atmosphere or beyond the solar system.\\n(Source: OED)"], "economic region": ["A district or an administrative division of a city or territory that is designed according to some material, distributive or productive criteria."], "humanitarian aid": ["The support or relief given to save human lives or to alleviate suffering, including public health efforts and the provision of financial resources and food, often when governmental authorities are unable or unwilling to provide for such assistance."], "international conflict": ["A controversy, disagreement, quarrel or warfare between or among two or more nations or countries, often requiring involvement or monitoring by other members of the global community."], "peacekeeping": ["The activities to prevent, contain, moderate and/or terminate the hostilities between or within States, through the medium of an impartial third party intervention, organised and directed internationally."], "level of education": ["A position along a scale of increasingly advanced training marking the degree or grade of instruction either obtained by an individual, offered by a some entity or necessary for a particular job or task.\\n(Source: RHW)"], "general education": ["Informal learning or formal instruction with broad application to human existence beyond the domain of any particular subject or discipline, often equated with liberal arts in the university setting and contrasted to courses required for a specific major or program."], "schoolwork": ["The material studied in or for an educational institution, comprising homework and work done in the classroom.\\n(Source: RHW)"], "documentary system": ["A coordinated assemblage of people, devices or other resources providing written, printed or digitized items that furnish or substantiate information or evidence.\\n(Source: RHW)"], "communications system": ["A coordinated assemblage of people, devices or other resources designed to exchange information and data by means of mutually understood symbols."], "data processing system": ["An assembly of computer hardware, firmware and software configured for the purpose of performing various operations on digital information elements with a minimum of human intervention.\\n(Source: JON)"], "health care profession": ["A profession specific to the health care industry."], "war victim": ["A person that suffers from the destructive action undertaken as a result of an armed conflict between two or more parties, particularly death, injury, hardship, loss of property or dislocation."], "internal migration": ["A population shift occurring within national or territorial boundaries, often characterized by persons seeking labor opportunities in more advantageous areas.\\n(Source: ISEP)"], "marital status": ["The standing of an individual with regard to a legally recognized conjugal relationship, either in the present or past."], "socio-cultural group": ["A collection of people who interact and share a sense of unity on account of a common ethnic, ancestral, generational or regional identity.\\n(Source: RHW)"], "employment structure": ["The organization and proportions of the various job types and skill levels in an enterprise or economy.\\n(Source: LAB)"], "camp": ["Tents, cabins, etc., used as temporary lodgings by a group of travellers, holiday-makers, Scouts, Gypsies, etc.", "To live in a tent or similar temporary accomodation."], "royalty": ["Compensation for the use of a person's property, based on an agreed percentage of the income arising from its use."], "allowance": ["Regular allocation or deduction of money."], "salina": ["A place where crystalline salt deposits are formed or found, such as a salt flat or pan, a salada, or a salt lick."], "hiking trail": ["A trail in the country along which one can walk, usually for pleasure or exercise."], "eco-balance": ["An eco-balance refers to the consumption of energy and resources and the pollution caused by the production cycle of a given product. The product is followed throughout its entire life cycle, from the extraction of the raw materials, manufacturing and use, right through to recycling and final handling of waste.\\n(Source: DUNI)"], "nitrogen oxide": ["A colorless gas that, at room temperature, reacts with\\noxygen to form nitrogen dioxide; may be used to form other compounds."], "oven": ["An enclosed heated compartment usually lined with a refractory material used for drying substances, firing ceramics, heat-treating, etc."], "bovine": ["Medium-sized to large ungulates, including domestic cattle, Bison, the Water Buffalo, the Yak, and the four-horned and spiral-horned antelopes."], "approval": ["Approbation; a sanctioning of an item."], "cleansing": ["The act or process of washing, laundering or removing dirt and other unwanted substances from the surface of an object, thing or place.\\n(Source: RHW)"], "inner city": ["In the United States, United Kingdom and Ireland: Part of a city at or near the centre, especially a slum area where poor people live in bad housing."], "sluice-gate": ["A valve or gate fitted to a sluice to control the rate of flow of water."], "deciduous wood": ["The temperate forests comprised of trees that seasonally shed their leaves, located in the east of the USA, in Western Europe from the Alps to Scandinavia, and in the eastern Asia. The trees of deciduous forests usually produce nuts and winged seeds.\\n(Source: WRIGHT)", "Wood taken from a deciduous tree."], "mixed woodland": ["A forest composed of broadleaf trees and coniferous trees."], "penal sanction": ["Punishment for the commission of a specific crime, such as fines, restitution, probation and imprisonment."], "coniferous tree": ["Any tree bearing cones."], "aerial photography": ["The creation of photographs from an airplane."], "swamp": ["A permanently waterlogged area in which there is often associated tree growth, e.g. mangroves in hot climates."], "legislative process": ["The entire course of action necessary to bring a law, resolution or special act to an authoritative, legally binding status.\\n(Source: RHW)"], "returnable container": ["Container whose return from the consumer or final user is assured by specific means (separate collection, deposits, etc.), independently on its final destination, in order to be reused, recovered or subjected to specific waste management operations.\\n(Source: PORTa)"], "intermediate product": ["Product that has undergone a partial processing and is used as raw material in a successive productive step."], "mutagenic substance": ["Agents that induce a permanent change in the genetic material."], "excise": ["A tax charged on goods produced within the country."], "dipteran": ["An order of insects possessing only a single pair of wings on the mesothorax."], "coniferous wood": ["Forest, mainly containing conifers."], "underground railway": ["An electric passenger railway operated in underground tunnels."], "genetically modified organism": ["An organism that has undergone external processes by which its basic set of genes has been altered."], "surface active compound": ["Any soluble substance composed of two or more unlike atoms held together by chemical bonds that reduces interfacial tension between liquids or a liquid and a solid, often used as detergents, wetting agents and emulsifiers."], "pH-value": ["(logarithmical) Measure of the acidity or alkalinity of an aqueous solution."], "mining": ["The act, process or industry of extracting coal, ores, etc. from the earth.\\n(Source: CED)"], "Black Sea": ["An inland sea between southeastern Europe and Anatolia."], "Caspian Sea": ["A landlocked sea between Asia and European Russia. It is the world\u2019s largest inland body of water."], "Mediterranean Sea": ["The largest inland sea between Europe, Africa and Asia, linked to the Atlantic Ocean at its western end by the Strait of Gibraltar, including the Tyrrhenian, Adriatic, Aegean and Ionian seas, and major islands such as Sicily, Sardina, Corsica, Crete, Malta and Cyprus."], "indigenous knowledge": ["Local knowledge that is unique to a given culture or society, which is the basis for local-level decision making in agriculture, health care, education and other matters of concern in rural communities.\\n(Source: WIK)"], "professional society": ["A group of persons engaged in the same profession, business, trade or craft that is organized or formally structured to attain common ends.\\n(Source: RHW)"], "subject": ["The general category, often stated in a word or phrase, to which the ideas of a passage as a whole belong.", "The grammatical subject.", "The subject of discourse; the point at issue.", "Area of knowledge taught in an educational institution."], "physical alteration": ["Any change in a body or substance that does not involve an alteration in its chemical composition."], "information infrastructure": ["The basic, underlying framework and features of a communications system supporting the exchange of knowledge, including hardware, software and transmission media.\\n(Source: WIC / RHW)"], "wide area network": ["A system of interrelated computer and telecommunications devices linking two or more computers separated by a great distance for the exchange of electronic data.\\n(Source: WIC)"], "World Wide Web": ["A graphical, interactive, hypertext information system that is cross-platform and can be run locally or over the global Internet. The Web consists of Web servers offering pages of information to Web browsers who view and interact with the pages. Pages can contain formatted text, background colors, graphics, as well as audio and video clips."], "homepage": ["The preset document that is displayed after starting a World Wide Web browser, or the main World Wide Web document in a series of related documents.\\n(Source: UNM / WIC)"], "hypertext": ["The organization of information units typically containing visible links that users can select or click with a mouse pointer or some other computer device to automatically retrieve or display other documents.\\n(Source: WIC / TWI)"], "newsgroup": ["A discussion group on a specific topic maintained on a computer network, frequently on the Internet."], "electronic mail": ["Information or message that is transmitted or exchanged from one computer terminal to another, through telecommunication."], "multimedia technology": ["Any technical means used to combine text, sound, still or animated images and video in computers and electronic products, often allowing audience interactivity.\\n(Source: ENC / WIS)"], "exhibit": ["A display of an object or collection of objects for general dissemination of information, aesthetic value or entertainment.", "To make known something heretofore kept secret."], "newsletter": ["A printed periodical bulletin circulated to members of a group."], "public relations": ["The methods and activities employed by an individual, organization, corporation, or government to promote a favourable relationship with the public."], "bibliographic information system": ["A coordinated assemblage of people, devices or other resources organized for the exchange of data pertaining to the history, physical description, comparison, and classification of books and other works.\\n(Source: RHW)"], "bibliographic information": ["Data pertaining to the history, physical description, comparison, and classification of books and other works.\\n(Source: RHW)"], "referral information system": ["A coordinated assemblage of people, devices or other resources organized to provide directions leading people to sources known to provide knowledge or assistance on a specified topic or request.\\n(Source: RHW)"], "statistical information system": ["A coordinated assemblage of people, devices or other resources enabling the exchange of numerical data that has been collected, classified or interpreted for analysis.\\n(Source: RHW)"], "library service": ["The duties of an establishment, or a public institution, charged with the care and organizing of a collection of printed and other materials, and the duty of interpreting such materials to meet the informational, cultural, educational, recreational or research needs of its clients.\\n(Source: OED / LFS)"], "inter-library loan": ["The service provided by one library in which a second library's clients are temporarily allowed to use books and other printed materials belonging to the first library; and consequently the system providing rules and infrastructure for this service to a group of libraries.\\n(Source: RHW)"], "information clearing-house": ["A central institution or agency for the collection, maintenance, and distribution of materials or data compiled to convey knowledge on some subject.\\n(Source: RHW)"], "information exchange": ["A reciprocal transference of data between two or more parties for the purpose of enhancing knowledge of the participants."], "relational database": ["A collection of digital information items organized as a set of formally described tables from which the information can be accessed or reassembled in different ways without reorganizing the tables."], "multispectral scanner": ["A remote sensing term referring to a scanning radiometer that simultaneously acquires images in various wavebands at the same time."], "pixel": ["The smallest unit of information in an image or raster map."], "spectral band": ["Closely grouped bands of lines characteristic of molecular gases of chemical compounds (spectroscopy)."], "image processing digital system": ["A coordinated assemblage of computer devices designed to capture and manipulate pictures stored as data in discrete, quantized units or digits.\\n(Source: GIS)"], "digital image processing technique": ["Techniques employed in the calibration of image data, the correction or reduction of errors occurring during capture or transmission of the data and in various types of image enhancement-operations which increase the ability of the analyst to recognize features of interest.\\n(Source: YOUNG)"], "pattern recognition": ["A remote sensing term referring to an automated process through which unidentified patterns can be classified into a limited number of discrete classes through comparison with other class-defining patterns or characteristics."], "mosaic": ["A composite photograph consisting of separate aerial photographs of overlapping surface areas, producing an overall image of a surface area too large to be depicted in a single aerial photograph."], "image filtering": ["A remote sensing term related to image enhancement that refers to the removal of a spatial component of electromagnetic radiation.\\n(Source: WHITa)"], "image enhancement": ["In remote sensing, the filtering of data and other processes to manipulate pixels to produce an image that accentuates features of interest or visual interpretation."], "geometric correction": ["A remote sensing term referring to the adjustment of an image for geometric errors.\\n(Source: DWEB)"], "image registration": ["The process of linking map coordinates to control points with known earth-surface coordinates."], "image classification": ["Processing techniques which apply quantitative methods to the values in a digital yield or remotely sensed scene to group pixels with similar digital number values into feature classes or categories.\\n(Source: DYNAMO)"], "atmospheric correction": ["The removal of atmospheric effects from astronomical data or satellite imagery. These effects are caused by the scattering and absorption of sunlight by particles in the earth's athmosphere; the removal of these effects improves not only the quality of the observed earth surface imaging but also the accuracy of classification of the ground objects.\\n(Source: YOUNG)"], "GIS digital format": ["The digital form of data collected by remote sensing."], "vector": ["One of the two major types of internal data organization used in GIS. Vector systems are based primarily on coordinate geometry.", "A mathematical object defined by both magnitude and direction; in contrast to a scalar, an object with magnitude only.", "An element in a vector space, often represented as a coordinate vector.", "A virus modified to deliver genetic material into a cell.", "An organism that transmits diseases or infections."], "point": ["A position on a reference system determined by a survey.", "Zero-dimensional mathematical object.", "A certain place in a continuum.", "A dot-shaped punctuation mark.", "A small spot, mark or feature which does not bear any details.", "The narrow, acute end of an object of variable thickness.", "To indicate with a pointy object; to direct into a position.", "To indicate a person, thing, direction, etc. e.g. with a finger."], "line": ["Term used in GIS technologies in the vector type of internal data organization: spatial data are divided into point, line and polygon types.", "The descendants of one individual.", "A succession of notes forming a distinctive sequence.", "A measure of length equal to one twelfth of an inch.", "An infinitely long, infinitely thin, not bent line in geometry.", "A mark that is long relative to its width."], "polygon": ["In the vector type of GIS internal data organization spatial data are conveniently divided into point, line and polygon types. Some vector GIS store information in the form of points, line segments and point pairs; others maintain close lists of points defining polygon regions.", "Geometrical figure that is circumscribed by straight lines."], "raster": ["One of the two major types of internal data organization used in GIS."], "attribute": ["A distinctive feature of an object. In mapping and GIS applications, the objects are points, lines, or polygons that represent features such as sampling locations, section corners (points); roads and streams (lines); lakes, forest and soil types (polygons). These attributes can be further divided into classes such as tree species Douglas-fir and ponderosa pine) for forest types and paved and gravel for road types. Multiple attributes are generally associated with objects that are located on a single map layer.\\n(Source: FORUMT)", "To credit something to.", "To attribute or credit to.", "To associate ownership of (something) to someone."], "GIS digital technique": ["The transformation to digital form of data collected by remote sensing, traditional field and documentary methods and of existing historical data such as paper maps, charts, and publications."], "interpolation": ["A process used to estimate an intermediate value of one (dependent) variable which is a function of a second (independent) variable when values of the dependent variable corresponding to several discrete values of the independent variable are known.\\n(Source: MGH)"], "gridding": ["A system of uniformly spaced perpendicular lines and horizontal lines running north and south, and east and west on a map, chart, or aerial photograph; used in locating points."], "national boundary": ["The line demarcating recognized limits of established political units."], "geographical projection": ["A representation of the globe constructed on a plane with lines representative of and corresponding to the meridians and parallels of the curved surface of the earth."], "latitude": ["An angular distance in degrees north or south of the equator (latitude 0\u00b0), equal to the angle subtended at the centre of the globe by the meridian between the equator and the point in question."], "longitude": ["Distance in degrees east or west of the prime meridian at 0\u00b0 measured by the angle between the plane of the prime meridian and that of the meridian through the point in question, or by the corresponding time difference."], "GIS laboratory": ["A laboratory where GIS data drawn from different sources are stored, handled, analyzed and updated.\\n(Source: GILP96a)"], "underground dump": ["Any subterranean or below-ground site in which solid, or other, waste is deposited without environmental controls."], "business economics": ["The art of purchasing and selling goods from an economics perspective or a perspective involving the scientific study of the production, distribution, and consumption of goods and services."], "deterrence": ["The power of discouraging actions or preventing occurrences by instilling the fear of punishment."], "deep sea mining": ["The most valuable of the marine mineral resources is petroleum. About 15% of the world's oil is produced offshore, and extraction capabilities are advancing. One of the largest environmental impacts of deep sea mining are discharged sediment plumes which disperse with ocean currents and thus may negatively influence the marine ecosystem. Coal deposits known as extensions of land deposits , are mined under the sea floor in Japan and England.\\n(Source: PARCOR / ERIB)"], "semi-liquid manure": ["Manure that contains between 12-20% dry matter, and therefore are too solid for pumping, but too liquid for stacking."], "local heat supply": ["The provision of heating fuel, coal or other heating source materials, or the amount of heating capacity, for the use of a specific local community.\\n(Source: ISEP)"], "forwarding agent": ["A person or business that specializes in the shipment and receiving of goods.", "A person or company that organizes shipments for individuals or other companies."], "citizen initiative": ["Procedure that allows a request, signed by a group of people, to activate a public voting."], "mountain refuge": ["Any shelter or protection from distress or danger located in a predominantly mountainous area.\\n(Source: RHW)"], "space research": ["Research involving studies of all aspects of environmental conditions beyond the atmosphere of the earth."], "red list": ["A series of publications produced by the International Union for the Conservation of Nature and Natural Resources (IUCN) which provides an inventory on the threat to rare plants and animal species and conservation measures."], "insulating material": ["Material that prevents or reduces the transmission of electricity, heat, or sound to or from a body, device or region.\\n(Source: CED)"], "decantation": ["Sizing or classifying particulate matter by suspension in a fluid (liquid or gas), the larger particulates tending to separate by sinking.\\n(Source: ECHO2)"], "general": ["Not specific or particular.", "Rank in the army and air force that is higher than colonel or brigadier, and is usually the highest rank group next to commander in chief, except in countries that use the rank of field marshal.", "Applicable to an entire class or group."], "materials": ["The substance of which a product is made or composed."], "trade": ["To give something in return for something received.", "The act or process of buying, selling or exchanging goods and services at either wholesale or retail, within a country or between countries.", "The act or the business of buying and selling for money. Mercantile or commercial business in general or the buying and selling, or exchanging, of commodities, either by wholesale or retail within a country or between countries.\\n(Source: WESTS)", "The skilled practice of a practical occupation."], "population": ["The people living in a certain area as a whole.", "A group of organisms of one species, occupying a defined area.\\n(Source: LBC)", "The abstract property of a human, of living in a specific area given by precise, and well defined, borders. (This may be part of, or include, citizenship, but not necessarily so, e.g. for people having several places of residence, for foreigners, or ones officially being accepted on long-term transient living terms)", "The totality of persons or objects with which a research study is concerned."], "space": ["Space extending between the sun and the planets of the solar system. Interplanetary space is not empty, but contains dust, particles with an electric charge, and the magnetic field of the sun (also called the IMF, or Interplanetary Magnetic Field).", "The location of an object or organism.", "Relatively empty regions (with very small densities) of the universe outside the atmospheres of celestial bodies."], "transport": ["The act or means of moving tangible objects (persons or goods) from place to place. Often involves the use of some type of vehicle.", "Transfer of mass, momentum, or energy in a system as a result of molecular agitation, including such properties as thermal conduction and viscosity.", "To change the location or place of.", "To delight to a high degree; to hold spellbound."], "water": ["Significant accumulation of water, covering the Earth or another planet.", "Common liquid (H\u2082O) which forms rain, rivers, the sea, etc., and which makes up a large part of the bodies of organisms.", "To pour water onto the soil surrounding plants.", "Of the eyes: To secrete tears because of an irritation caused by wind, smoke etc."], "kid": ["A young goat."], "Southern Ocean": ["The waters, including ice shelves, that surround the continent of Antarctica, which comprise the southernmost parts of the Pacific, Atlantic and Indian oceans, and also the Ross, Amundsen, Bellingshausen and Weddell seas."], "mechanism": ["A group of mechanical or electrical parts or machines arranged to perform or assist a particular function.", "The mechanic part of a device."], "economic science": ["The social study of the production, distribution, and consumption of wealth."], "noble gas": ["Any one of the monatomic gaseous elements forming group 18 (formerly group 0) of the periodic table."], "plant eater": ["An animal that feeds on plants."], "many": ["An indefinite large number of."], "one": ["The first natural number (1).", "One certain or particular.", "The cardinal number that directly follows zero and precedes two, represented in Roman numerals as I, and in Arabic numerals as 1.", "An unspecified individual.", "The symbol representing the number 1.", "Being the only representative of its kind.", "Forming a whole.", "The same in substance or being, in relation to two or more things or persons.", "Identical in nature.", "United in feeling, opinion, purpose, attitude.", "A note or coin worth one unit of a currency.", "One person or thing, identified in context.", "A single individual, as opposed to none.", "An individual among many.", "A person or thing of the kind already mentioned.", "A person or thing having the characteristic mentioned.", "A person called...", "Any person in general, including the speaker.", "An individual..., a specific ...", "The single, special individual", "The digit \"1\"."], "two": ["Two human beings, at least one of whom is a male.", "The second natural number (2).", "The cardinal number occurring after one and before three, represented in Roman numerals as II and in Arabic numerals as 2.", "The digit \"2\"."], "man": ["A member of the human species.", "The generic name for a piece used in board games.", "All human beings.", "An adult human member of the sex that begets young by fertilizing ova."], "humanity": ["All human beings."], "wife": ["A married woman."], "husband": ["The male partner in a marriage."], "three": ["Three human beings, at least one of whom is a male.", "The cardinal number occurring after two and before four, represented in Roman numerals as III, in Arabic numerals as 3.", "The digit \"3\".", "The third natural number (3)."], "pawn": ["A chess piece, the least valuable one."], "print": ["The result of the printing process; something in printed or published form.", "To press something onto or into a surface, usually with a press.", "To reproduce a document with black or color ink using a printer.", "Concrete result of the reproduction process of an image by means of different techniques.", "To produce a positive image on photographic paper from a negative."], "feather": ["A branching, hair-like structure that grows on the skin of birds and protects them against coldness and water and allows their wings to create lift."], "big": ["Of a great size; the weakest sense of great size.", "Having relevant and crucial value.", "(for abstract matters) of larger than normal size.", "In a major way."], "long": ["Having much distance from one terminating point on an object or an area to another terminating point.", "Having relatively great height.", "Of relatively great duration.", "Of a specified linear extent or duration.", "To have a yearning desire.", "Qualifying a measure of length, to indicate that it is greater than stated, or is felt by the speaker to be excessive in duration.", "Having a shape with one dimension of much greater length than the others.", "Having (a specified) distance from end to end.", "Of something consisting of a series of items (like a list, a sentence, a literary work): having a great extent from the start to the end.", "That which has been so for a long time.", "A person who buys a financial security such as a stock, commodity or currency, with the expectation that it will rise in value", "Extending to a great distance.", "For or during a long time.", "Having a financial position in a security so as to profit if the price of the security goes up."], "bark": ["The exterior covering of the trunk and branches of a tree.", "The short, loud, explosive sound produced by a dog.", "To produce a loud, short, explosive sound similar to that of a dog.", "A sailing ship with three or more masts, fore-and-aft sails on the aftermost mast and square sails on all other masts."], "tongue": ["The flexible muscular organ in the mouth that is used to move food around, for tasting and that is moved into various positions to modify the flow of air from the lungs in order to produce different sounds.", "In a shoe, the flap of material that goes between the laces and the foot.", "A person's manner of speaking."], "cat": ["A common four-legged animal (Felis silvestris) that is often kept as a household pet."], "four": ["Four human beings, at least one of whom is a male.", "The fourth natural number (4).", "The cardinal number occurring after three and before five, represented in Roman numerals as IV, in Arabic numerals as 4.", "The digit \"4\"."], "five": ["Five human beings, at least one of whom is a male.", "The cardinal number occurring after four and before six, represented in Roman numerals as V, in Arabic numerals as 5.", "The digit \"5\".", "The fifth natural number (5)."], "I": ["The speaker or writer referring to himself or herself alone.", "The capitalized version of the ninth letter of the Latin alphabet."], "heavy": ["Of a physical object, having great weight."], "small": ["Not large or big; small in size."], "thou": ["The second person singular feminine subject pronoun.", "The second person singular masculine subject pronoun.", "The person addressed as the subject.", "The person addressed."], "he": ["Another person; the person previously mentioned.", "A male other; the male previously mentioned; himself. \\n3rd person singular masculine subject pronoun."], "we": ["exclusive \"we\": I and at least one other person, but not the addressed person (you)\\n\\n(pronoun 1st person plural without 2nd person)", "inclusive \"we\": I and at least one other person, including the addressed person(s)\\n(pronoun 1st person plural with 2nd person)", "The speaker or writer and at least one other person."], "you": ["The second person plural feminine subject pronoun.", "The second person singular feminine subject pronoun.", "The second person singular masculine subject pronoun.", "The second person plural masculine subject pronoun.", "The second person singular masculine object pronoun.", "The second person plural masculine object pronoun.", "The second person plural feminine object pronoun.", "The person addressed as the subject.", "The group of persons addressed.", "The person addressed.", "An unspecified individual.", "Used before epithets for emphasis."], "they": ["[A group of others previously mentioned.]", "The previously mentioned persons.", "The things previously mentioned.", "Form in its third person plural of the personal pronoun that designates more than one male person (or male animals), which have already been mentioned previously.", "The third person plural of the personal pronoun that designates more than one female person or animal, which have already been mentioned previously.", "An unknown unnamed anonymous authority, ruling body, shaping or governing force, be it real or fictional, working openly or secretly.", "The third person plural of the personal pronoun that designates more than one person or animal, thing or idea which have already been mentioned previously."], "this": ["[Something that is farther than \"this\" but nearer than \"that\".]", "[Used to refer to something between the speaker and the listener.]", "The indicated object, item, etc.", "An indicated thing that is near in space or in mind, as having been just mentioned."], "barque": ["A sailing ship with three or more masts, fore-and-aft sails on the aftermost mast and square sails on all other masts."], "that": ["The indicated item (at a distance from the speaker, next to the listener).", "The indicated item (at a distance from the speaker, or previously mentioned, or at another time).", "Demonstrative pronoun (feminine, singular): the indicated thing is implied, since it is previously mentioned. Collocation: that of; to that of.", "In the same manner or to the same extent as mentioned before."], "seed": ["A mature fertilized plant ovule, consisting of an embryo and its food store surrounded by a protective seed coat (testa).", "Anything that provides inspiration for later work.", "To remove the seeds from.", "To place seeds in or on the ground for future growth.", "One of the outstanding players in a tournament."], "blood": ["A fluid connective tissue consisting of the plasma and cells that circulate in the blood vessels.", "The descendants of one individual."], "mother": ["A woman who has at least one child.", "A female parent.", "A woman acting like a mother.", "A female ancestor (usually in reference to Eve).", "Term of address to an old or elderly woman.", "The female head of a religious organization.", "A woman who runs a brothel.", "A term of address to someone who is a female parent (a biological mother or a woman with parental responsibility).", "The female animal that gave birth to an animal.", "The source of something.", "A country, region, etc. in relation to its inhabitants.", "The Christian Church (usually as \"holy mother\")", "The source of a substance, structure, object.", "The first mold from which other molds are made for the manufacturing of music discs.", "Give birth to.", "To care for and protect in a motherly way."], "father": ["A male parent.", "A person that has founded or originated, as in ''the father of our country''", "The head of an organized crime family."], "rope": ["Thick, strong string made of several strands that have been twisted together."], "worm": ["A generally tubular invertebrate of the annelid phylum.", "A self-replicating program that propagates widely through a network.", "To rid of intestinal worms."], "tail": ["The appendage of an animal that is attached to its posterior and near the anus.", "The fleshy part of the human body that one sits on."], "mouth": ["The opening of a creature through which food is ingested.", "What humans use for speaking.", "Opening in the lower half of a human face which is used for food ingestion and articulation.", "A river mouth or stream mouth is a part of a river where it flows into the sea, river, lake, reservoir or ocean."], "nose": ["The organ of the face used to breath and smell.", "To search or inquire intrusively."], "penis": ["The male sexual organ for copulation and urination; the tubular portion of the male genitalia (excluding the scrotum)."], "cock": ["A device applied to the end of a pipe in order to interrupt and regulate the flow of a liquid or gas.", "A male of various birds.", "A male pheasant.", "A male chicken (Gallus gallus domesticus), a domestic bird.", "The part of a firearm that hits the back of the bullet and sets it off, firing the gun.", "A valve with the function of regulating the flow of a liquid or gas through a pipe."], "heart": ["A muscular organ that pumps blood through the body.", "The perceived center of feelings and intuitions.", "A stylized representation of the muscular organ, used as a symbol for affection, in the shape of two top lobes and a tapering bottom.", "Relating to the heart."], "liver": ["A large organ in the body that stores and metabolizes nutrients, destroys toxins and produces bile. Responsible for thousands of biochemical reactions."], "day": ["The period between sunrise and sunset where one enjoys daylight.", "A period of time lasting 24 hours", "The period of time from one midnight to the next, seven of which consitutes a week"], "year": ["The time it takes the Earth to complete one revolution of the Sun (between 365.24 and 365.26 days depending on the point of reference).", "The time it takes for any planetary body to make one revolution around another body.", "A period between set dates that mark a year, from January 1 to December 31 by the Gregorian calendar."], "board": ["A (usually) rectangular section of a surface, or of a covering or of a wall, fence etc.", "A piece of wood or similar material that has been sawn into a regular shape, usually in preparation for using it in some sort of construction.", "A committee that manages some business of an organization.", "A flat piece of material designed for a special purpose.", "A screen on which information can be displayed to public view.", "To enter trains, buses, ships, aircraft, etc.", "A printed circuit that can be inserted into expansion slots in a computer to increase the computer's capabilities.", "An electrical device consisting of an insulated panel containing switches and dials and meters for controlling other electrical devices.", "Consulting or decisive insititution, composed of more than one person, national or international, private or public, with different scopes.", "All representatives in a company that have the assignment to administrate the company itself.", "Food or meals in general."], "earth": ["The soft and loose material forming a great part of the Earth surface.", "The third planet (counted from the center) of our solar system."], "dirty": ["Covered with or containing unpleasant substances such as dirt or grime.", "To make filthy."], "new": ["Recently made, created or begun.", "(of a cycle) beginning or occurring again (e.g. a fresh start or idea)."], "warm": ["Having a temperature slightly higher than usual, still pleasant.", "To make warm or warmer.", "To become warm or warmer.", "About colors whose relative visual temperature makes them seem warm. Warm colors or hues include red-violet, red, red-orange, orange, yellow-orange, and yellow.", "Having affection or warm regard; loving."], "night": ["The period between sunset and sunrise, when a location faces far away from the sun, thus when the sky is dark."], "smooth": ["Not rough; having a surface texture that lacks friction."], "here": ["This place.", "at this place"], "there": ["That place.", "In a not completely determined place which is not here."], "who": ["What person or people; which person or people."], "what": ["Which thing.", "Exclamation of amazement."], "where": ["Place in which.", "At what place?", "In or at or to what place.", "To which place?", "To which place."], "when": ["at the time following immediately the time when", "At what time.", "As soon as.", "At the time that (Temporal coincidence relationship.)", "At a time in the past.", "At what time in the past."], "how": ["In what way."], "not": ["Negates the meaning of the modified verb.", "Logical operation (not)"], "all": ["Every individual or anything of the given class, with no exceptions.", "Throughout the whole of.", "The totality of.", "Having or showing nothing other than."], "old": ["Having lived or existed for a relatively long period of time.", "(For a person or an animal) Having lived for a relatively long period of time.", "(For an object or a concept) Having existed for a relatively long period of time.", "A person that has been living for a relatively long period of time.", "An object or concept existing for a relatively long period of time."], "some": ["An unspecified quantity of.", "An unspecified quantity or number of.", "An unspecified number of. (The masculine plural indefinite article) - Phrase: some men. - NOTE: In Englih, \"some\" in this sense is an indefinite pronoun.", "The feminine plural of the indefinite article.", "[The plural indefinite article.]", "The plural partitive article.", "[The plural indefinite article, with an adjective that precedes a noun.]", "[The plural partitive article, with an adjective that precedes a noun.]", "An unknown quantity of an uncountable substance."], "few": ["More than one, but not as many as usual or as expected."], "other": ["The one not previously referred to.", "Not the same.", "A few (days, years, etc.) ago.", "Remaining from a group of two or more."], "wide": ["Having a long distance or area between two points, especially horizontally.", "Very large in expanse or scope."], "thick": ["Relatively large distance from one surface to the opposite in its smallest solid dimension."], "love": ["An intense feeling of affection and care towards another person.", "To receive pleasure or satisfaction from something.", "Someone that one loves.", "To have an intense feeling of affection and care towards another person.", "(Tennis) Score of zero.", "To have sex with.", "To be enamored or in love with (somebody)."], "my": ["Belonging to me."], "butter": ["A soft, fatty foodstuff that is made by churning the cream of milk (most often cows milk).", "To spread butter on."], "grumpy": ["Unhappy or irritable - often applied to babies, young children or adults acting childishly."], "short": ["Small in length by comparison.", "An unintentional electrical connection of low resistance or impedance in a circuitry or installation.", "Short in height; low in stature; not tall.", "Lasting for a small length of time; limited in temporal duration.", "Not reaching a standard; Not sufficient to meet a need or requirement.", "A quantity, time, number, etc. that is less than what is expressed.", "Something traveling not as far as intended.", "Having an insufficient supply of.", "Having sold a borrowed stock which the seller hopes to buy at a lower price before the time to return it.", "To cause a short circuit.", "To sell something that is borrowed, with the hope of buying it later at a lower price, before the time to return it.", "To cheat someone by giving them less money than what are due.", "Something short, like a short film, short shot, a short story, a short signal, etc.", "A contraction for a name."], "ear": ["The organ of hearing, consisting of the pinna, auditory canal, eardrum, malleus, incus, stapes and cochlea.", "The fruiting body of a grain plant."], "eye": ["The organ that is sensitive to light, which it converts to electrical signals passed to the brain, by which means animals see.", "The centre of a storm, around which, the winds blow.", "The hole in a needle through which the thread runs", "The dark spot on the surface under the skin of a potato, of which there are usually several.", "To look at."], "jaguar": ["A carnivorous spotted large cat native to South and Central America.", "A French military aircraft."], "belly": ["The lower part of the front of the torso (or a comparable part of an animal), confined by the upper side by the midriff and the lowerside by the pelvis. Contains the intestines."], "abdomen": ["The lower part of the front of the torso (or a comparable part of an animal), confined by the upper side by the midriff and the lowerside by the pelvis. Contains the intestines.", "The cavity containing the major viscera."], "stomach": ["The lower part of the front of the torso (or a comparable part of an animal), confined by the upper side by the midriff and the lowerside by the pelvis. Contains the intestines.", "An organ in the body, involved in digestion of food.", "To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly."], "house": ["The abode of a human being, their place of residence.", "To keep within a structure or container; to contain or cover.", "A place that a human built to live in.", "A place where an activity is accomplished, whether actual, as a pub, or virtual, as a website.", "A familiar descendance, for example, a Royal House.", "To admit to residence; provide housing for.", "One of 12 equal areas into which the zodiac is divided."], "handle": ["A closed loop that is normally placed horizontally on an object (for example, on a mug or a cup).", "To feel with the hand; to use or hold with the hand.", "To manage; to control; to practice skill upon."], "hair": ["The collection or mass of filaments growing from the skin of humans and animals, and forming a covering for a part of the head or for any part or the whole body.", "One single of the filaments growing from the skin of humans and animals, and forming a covering for parts of the body.", "A single filament growing from the non-facial part of the head of humans.", "The collection or mass of hair on a person's head except the face."], "head": ["The part of the body of an animal or human which contains the brain, mouth and main sense organs.", "The foremost or leading position in a race, a competition.", "A person who leads, rules, or is in charge.", "The person who is in charge of and runs a school.", "Leader of a department or tribe.", "The complex of cognitive faculties, mostly characteristic of human beings, that enables consciousness, thinking, reasoning, perception, and judgement."], "wing": ["The appendage of an animal's (bird, bat, insect) body that enables it to fly in the air.", "To move autonomously through the air, without any part of the object or object's enclosure touching anything attached to the ground.", "Part of airplane that enables it to stay in the air."], "fingernail": ["The hard, flat, translucent covering near the tip of a human finger, useful for scratching and fine manipulation."], "tofu": ["A protein-rich food made from curdled soybean milk, by coagulating it with magnesium sulfate."], "marriage": ["A union of two persons (usually a man and a woman) which entails legal obligations and is intended to last for life.", "A ceremony celebrating the beginning of a marriage, during which the marrying parties exchanges vows.", "The state of being married."], "wedding": ["A ceremony celebrating the beginning of a marriage, during which the marrying parties exchanges vows."], "wedlock": ["The state of being married."], "matrimony": ["The state of being married."], "nighttime": ["The period between sunset and sunrise, when a location faces far away from the sun, thus when the sky is dark."], "daytime": ["The period between sunrise and sunset where one enjoys daylight."], "collection": ["A method to group defined meanings from a particular source or context.", "The embeding of a sum of due money.", "Several things grouped together or considered as a whole.", "The act of gathering something together.", "In computer science, a data structure which contains some variable number of data items that have some shared significance to the problem being solved and need to be operated upon together in some controlled fashion (e.g. in a sequence).", "A collection of art works."], "choir": ["A singing group; a group of people who sing together.", "The part of a church where the choir assembles for song.", "One of the nine ranks or orders of angels."], "sing": ["To produce harmonious sounds with one's voice."], "brother": ["A male person who has the same parents as another person.", "A man who is member of a religious order and lives under community rules separated from the world.", "A fellow fraternity member.", "A peer, male or female.", "An African-American male.", "Close friend."], "half-brother": ["A brother with whom one has only one parent in common."], "sister": ["A female person who has the same parents as another person.", "A female ascetic who chooses to live her life in prayer and contemplation in a monastery or convent.", "A fellow sorority member.", "An African-American female."], "change": ["To become different in essence or nature; to undergo a change.", "To make different.", "The process of becoming different.", "To put on different clothing; to change clothes.", "To exchange something old or something that has become unusable for something else of the same kind.", "Small denominations of money given in exchange for its equivalent in a larger denomination."], "soprano": ["A musical part or section that is higher than alto and all other sections, with a typical range from the A below \"middle C\" to \"high C\" (two octaves above \"middle C\")."], "celestial": ["Relating to the sky or heavens."], "alto": ["A musical part or section higher than tenor but lower than soprano, with a typical range from the F below \"middle C\" to the E a tenth above it."], "tenor": ["A musical part or section higher than bass but lower than alto, with a typical range from the C one octave below \"middle C\" to the G above.", "That which is understood from a discourse, dialogue or phrase by the way in which it is expressed.", "The general meaning or substance of an utterance."], "bass": ["A musical part or section lower than tenor and all other sections, with a typical range from the D below the bottom of the bass clef to the E above \"middle C\".", "A marine fish (Percicthyidae or Centrarchidae) that is popular as game.", "Of low frequency or range.", "A male singer who sings in the deepest vocal range.", "A sound range of low frequency or range.", "An instrument that plays sounds of low frequency.", "A musical clef indicating that the F3 note is placed on the fourth line.", "Nontechnical name for any of numerous edible marine and freshwater spiny-finned fishes."], "bride": ["A woman who is going to get married or has just got married."], "narrow": ["Having a small width.", "To reduce in width or extent."], "yes": ["A word used to show agreement or affirmation of something."], "no": ["A word used to show disagreement of something.", "A word used to confirm a negatively formulated statement.", "[Used to show disagreement or negation.]"], "because": ["[Indicates that a reason or cause follows].", "By or for the cause that; as a result of that.", "Conjunction initiating a causal phrase."], "why": ["For what reason."], "leader": ["A person who leads, rules, or is in charge.", "Leader of a department or tribe."], "chief": ["A person who leads, rules, or is in charge.", "Leader of a department or tribe.", "Leader of a tribe"], "director": ["A person who leads, rules, or is in charge.", "A person who visualizes a script, controlling the artistic and dramatic aspects, while guiding the technical crew and actors in the fulfilment of his or her vision of a film or theatre production."], "headmaster": ["The person who is in charge of and runs a school."], "parent": ["A person having one or more offsprings.", "An entity that is broader in scope.", "A person who is the caretaker of a child."], "ice cream": ["A cold dessert (made of water, cream and milk, combined with flavourings, emulsifiers and sugar) that's popular when it's hot."], "cake": ["A rich, sweet, baked dessert, typically made with flour, eggs, sugar and butter.", "To coat (something) with a layer of solid material.", "A baked delicacy."], "hello": ["Expression of greeting used by two or more people who meet each other."], "goodbye": ["A parting statement; used when one or more people in a situation, dialogue or location are leaving, while others remain."], "farewell": ["A parting statement; used when one or more people in a situation, dialogue or location are leaving, while others remain.", "An interjection of parting.", "An act of departure from a place or a group.", "An expression of good wish at a permanent departure.", "Any statement of good wish (like \"good bye\") at parting.", "A interjection of good wish at (a non-final) parting said by the staying person to the leaver."], "please": ["An expression used when a person wants something, in order to make their request more polite.", "To give pleasure to; to make happy or satisfied.", "Formal way of being polite when you give something.", "to make someone happy"], "if you please": ["An expression used when a person wants something, in order to make their request more polite."], "thank you": ["[An interjection of gratitude or politeness, used in response to something done or given.]", "An expression of gratitude"], "thanks": ["[An interjection of gratitude or politeness, used in response to something done or given.]"], "heavenly": ["Relating to the sky or heavens.", "Wonderful, lovely or amazing - in relation to a sensual experience (comparable to the experience of heaven)."], "wonderful": ["Causing wonder, admiration or astonishment.", "(of weather) highly enjoyable.", "Deserving praise; worth to be praised."], "half-sister": ["A sister with whom one has only one parent in common."], "aunt": ["A woman with one or more siblings who have one or more children; a sister of someone's father or mother."], "candle": ["A light source consisting of a wick embedded in a solid, flammable substance such as wax, tallow, or paraffin."], "ice lolly": ["A cold dessert or snack (made of water, combined with flavourings and sugar) that is popular when it's hot."], "adieu": ["A parting statement; used when one or more people in a situation, dialogue or location are leaving, while others remain.", "An expression of good wish at a permanent departure."], "bye": ["A parting statement; used when one or more people in a situation, dialogue or location are leaving, while others remain."], "bridegroom": ["A man who is going to get married or has just got married."], "groom": ["A man who is going to get married or has just got married.", "To educate for a future role or function.", "To care for one's external appearance.", "To give a neat appearance to; for care for animals by brushing and cleaning them."], "smell": ["That which is perceived by the nasal organs.", "To perceive the presence of molecules in the air by inhaling them through the nose.", "To give off a smell that can be perceived by the nose."], "Frau": ["Historically polite address for a female person"], "yesterday": ["On the day before today.", "The day before today."], "fermata": ["A piece of musical notation that indicates that the note should be held for longer than the usual duration: until the conductor cuts it off."], "your": ["Of or belonging to you (singular).", "Of or belonging to you (plural).", "Of or belonging to you (plural, formal)", "Of or belonging to you (singular, formal)."], "stop": ["To come to a halt; to cease moving.", "To render passage impossible by physical obstruction.", "An obstruction in a pipe or tube.", "To have an end, in a temporal, spatial, or quantitative sense; either spatial or metaphorical.", "A traffic sign to instruct one to be still and not proceed until the path is clear.", "A place where line buses, trams or trains halt to let passengers get on and off.", "To cause to stop (e.g. an engine or a machine).", "To put an end to a state or an activity.", "To interrupt a trip.", "To hold back, as of a danger or an enemy; check the expansion or influence of.", "To prevent completion (e.g. of a project, of negotiations, etc.)."], "pause": ["To cease or suspend an action temporarily."], "answer": ["To communicate a message of any form in reaction to something that has been asked or expressed, to the being who expressed it.", "To understand the meaning of.", "A statement (either spoken or written) that is made in reaction to a question, a request, criticism or accusation", "To respond to an incoming telephone call."], "gift": ["Something given to another person voluntarily and without charge.", "A talent or quality which is or seems innate or natural.", "To give as a present; make a gift of."], "present": ["Something given to another person voluntarily and without charge.", "Grammatical tense that describes the present or ongoing conditions.", "To have somebody see something.", "The current moment or period of time.", "Existing or happening now, in the presence; being intermediate between past and future.", "To come to the attention of medical staff.", "To give [a gift or award] in a formal manner.", "To submit (a bill or a check) for payment.", "To offer to a court or legislature for consideration.", "To introduce someone to another, in a formal manner.", "To introduce or show to the public.", "To present somebody with something, e.g. to accuse or criticize."], "noun": ["A word that can be used to refer to a person, place, thing, quality, or idea; a part of speech. It can serve as the subject or object of a verb. For example, a table or a computer."], "adverb": ["A word that modifies a verb, adjective, another adverb or a prepositional phrase."], "fat": ["Who is too fat.", "A specialized animal tissue with a high oil content, used for long-term storage of energy.", "Carrying a larger-than-normal amount of fat or weight.", "The ester of glycerol and one, two, or three fatty acids.", "Made of fat.", "(Concerning a person) He who carries a lot of fat."], "hand": ["That part of the fore limb below the forearm or wrist in primates (including humans).", "To give, transmit or pass to, using one's hand.", "A set of cards or pieces of a player at a given time during a game."], "vomit": ["To regurgitate the contents of the stomach.", "Matter ejected from the stomach through the mouth."], "overweight": ["Carrying a larger-than-normal amount of fat or weight.", "Of a large person who has a mass or quantity of fat above normal."], "peach": ["The soft, sweet, juicy fruit of the peach tree, usually with a red or orange skin, yellow flesh and a large stone inside.", "A species of tree, native to China, that bears juicy fruits, usually with a red or orange skin, yellow flesh and a large, wrinkled stone."], "today": ["The current day or date.", "On the current day or date.", "In the current era.", "Metaphoric expression for the present."], "fall": ["Move to a lower position due to the effect of gravity.", "The act of surrendering to the enemy.", "To die in battle.", "A downward slope or bend.", "To go from a higher to a lower place.", "To lose one's balance and hit the ground.", "A sudden drop from an upright position.", "A wrestling move in which a wrestler's shoulders are forced to the mat.", "To move downward and lower (e.g. of temperature values or falling objects).", "To pass suddenly and passively into a state of body or mind (e.g. into a trap, ill, in love, etc.).", "To come under, be classified or included (e.g. into a category).", "To touch or seem as if touching visually or audibly."], "prison": ["A place in which individual persons have restricted personal freedom.", "A building where people are detained after they were convicted for a crime by a court."], "a": ["One; any indefinite example of [indefinite article].", "One certain or particular.", "To; each; per.", "Singular feminine of the indefinite article", "The masculine singular indefinite article.", "A certain; a particular.", "Some; about", "A work by.", "[The indefinite article, used in a negative construction.]"], "jail": ["A place in which individual persons have restricted personal freedom.", "Putting someone in prison or in jail."], "couch": ["A piece of furniture on which more than one person can sit, with cushions, a back, and arm rests.", "Phrase in a style or language that softens or hides the intended meaning"], "bank": ["The sloping side of any hollow in the ground, especially when bordering a river.", "A financial institution where one can borrow money (upon which interest is due) or deposit money (in order to collect interest).", "Accumulation of a same substance, normally in big quantities, or arrangement of similar objects that is considered as a unit, for example: sand bank, fog bank, bank of ice.", "A place where supplies or stock of bodies or substances of the human body are preserved, usually of the same type, for future medical use, for example: blood bank, eye bank, sperm bank.", "A place where elements, usually of the same type are kept, for consultation or later use, for example: data bank, image bank.", "To tip laterally.", "To do business with a financial institution or keep an account at a financial institution.", "To act as the banker in a game or in gambling.", "To have confidence or faith in.", "A flight maneuver; the aircraft tips laterally about its longitudinal axis (especially in turning).", "A long ridge or pile."], "important": ["Having relevant and crucial value.", "Worth paying attention to."], "nowadays": ["In the current era."], "sofa": ["A piece of furniture on which more than one person can sit, with cushions, a back, and arm rests."], "settee": ["A piece of furniture on which more than one person can sit, with cushions, a back, and arm rests."], "limit": ["The point, edge, or line beyond which something cannot or may not proceed.", "To restrict; not to allow to go beyond a certain bound."], "hot": ["Having a high temperature.", "Sexually attractive.", "The quality or state of being warm.", "Characterized by violent and forceful activity or movement; very intense.", "(color) bold and intense.", "Of, pertaining to, or containing spice; or spicy flavour: Provoking a burning sensation due to the presence of chillies or similar hot spices."], "by": ["Close to; next to.", "With the use of; by means of.", "Having the position next to a given place, location or object"], "cap": ["A soft head-covering, often knitted, that fits the head closely.", "A soft head covering with a visor, most commonly of cloth.", "A usually soft and close-fitting head covering, either having no brim or with a visor."], "baby": ["A very young human being, from birth to a year old.", "A woman that is considered sexually attractive by a man, or many men.", "A project of personal concern to someone."], "elephant": ["A mammal of the order Proboscidea, having a trunk, and two large ivory tusks jutting from the upper jaw. Elephants are the largest land animals now existing."], "base": ["Any chemical species, ionic or molecular, capable of accepting or receiving a proton (hydrogen ion) from another substance; the other substance acts as an acid in giving of the proton.", "The lowest side of a in a triangle or other polygon, or the lowest face of a cone, pyramid or other polyhedron.", "Not adhering to ethical or moral principles.", "Having or showing an ignoble lack of honor or morality.", "An installation from which a military force initiates operations.", "The bottom or lowest part.", "To use as a basis for.", "To use purified cocaine by burning it and inhaling the fumes.", "The lowest support of a structure.", "The inferior part of a building, monument or furniture.", "The base of a nucleic acid, such as thymine, uracil, adenine, cytosine and guanine."], "back": ["The side of something opposite the front or useful side; the reverse side; the side that is not normally seen.", "That which is farthest away from the front.", "The part of something that goes last.", "The rear of body, especially the part between the neck and the end of the spine and opposite the chest and belly.", "In some team sports, a position behind most players on the team.", "To travel backward.", "To give support or one's approval to; to be behind; to approve of.", "The direction to here, when the subject has been here before.", "Present again.", "To be in favour of or be behind; to approve of."], "bad": ["Not good; unfavorable; negative.", "A mistake, an oversight, a slight; usually apologetic, referring to one's own failures.", "Having changed its colour, smell or composition (partially or completely), due to being attacked and decomposed by microorganisms (relating to organic matter); damaged by decay.", "With great intensity.", "Characterized by wickedness or immorality."], "error": ["A mistake, an oversight, a slight; usually apologetic, referring to one's own failures.", "Wrong or considered mistaken action.", "An incorrect action not made deliberately."], "mistake": ["A mistake, an oversight, a slight; usually apologetic, referring to one's own failures.", "To fail to understand or interpret the meaning of words or behaviour correctly.", "To make a mistake or be incorrect.", "To identify incorrectly.", "An incorrect action not made deliberately."], "bathtub": ["A tub or pool which is used for bathing."], "zero": ["The cardinal number that denotes no quantity or amount at all.", "The digit \"0\""], "bath": ["A tub or pool which is used for bathing.", "Submerging of the body into water either for washing or for recreation.", "To submerge the body into water either for washing or for recreation.", "A room containing a bath or shower and usually a washbasin and toilet"], "guard-room": ["A place, where police, soldiers, security guards, rescue teams, firemen, etc. spent their time of duty, unless, or until, incidents possibly call them out."], "duty-room": ["A place, where police, soldiers, security guards, rescue teams, firemen, etc. spent their time of duty, unless, or until, incidents possibly call them out."], "cook": ["To prepare by submerging in a liquid (usually water) at 100 degrees Celsius or more.", "A person that has prepared a meal.", "A person whose profession is to prepare food for customers.", "To apply heat to something, usually food.", "To prepare a meal or a single dish.", "To make ready for eating or drinking."], "job": ["Productive activity, service, trade, or craft for which one is regularly paid.", "A piece of work to be done, a task to be fulfilled."], "Job": ["A character of the Old Testament."], "stick": ["A long, thin piece of wood, mainly left in the shape in which it grew, that does not bend.", "An object, specifically for providing support when walking.", "To stay faithful to (an opinion, a belief, etc.).", "To come or be in close contact with; to stick or hold together and resist separation.", "To stick to firmly."], "walking stick": ["An object, specifically for providing support when walking."], "feature": ["A defining characteristic.", "A part of something that is noticeable."], "leg": ["The limb of an animal (including humans) that extends from the groin to the ankle.", "A stage of a journey.", "A single game or match played in a tournament or other sporting contest."], "newspaper": ["A publication (usually published daily or weekly and printed on cheap, low-quality paper) that contains news and other articles."], "computer": ["A programmable device that performs mathematical calculations and logical operations, especially one that can process, store and retrieve large amounts of data very quickly."], "coffee": ["A beverage made by infusing the beans of the coffee plant in hot water.", "A flowering plant of the genus Coffea whose seeds are used to make coffee."], "country": ["A people permanently occupying a fixed territory bound together by common law, habits and custom into one body politic exercising, through the medium of an organized government, independent sovereignty and control over all persons and things within its boundaries, unless or until authority is ceded to a federation or union of other states.", "A political entity asserting ultimate authority over a geographical area.", "A rural area, the countryside - as opposed to a city or town.", "The land [region] of a person's birth, citizenship, residence, etc.", "The people living within the boundaries of a sovereign state.", "A set region of land having particular human occupation or agreed limits, especially inhabited by members of the same race, language speakers etc., or associated with a given person, occupation, species etc.", "A tract of land of undefined size.", "The geographic area under the control of a political state."], "foot": ["The part of a human\u2019s body below the ankle that is used in order to stand and walk.", "A unit of measurement equal to twelve inches and one third of a yard (or exactly 30.48 centimetres).", "The lowest support of a structure."], "fork": ["A utensil with spikes used to put solid food into the mouth.", "An intersection in a road or path where one road is split into two.", "To divide into two or more branches so as to form a fork, starting from a common point.", "In a bicycle, the portion holding the front wheel, allowing the rider to steer and balance."], "finger": ["One of the long extremities of the hand that is used for gripping objects."], "wedding dress": ["Clothing worn by a bride during a wedding ceremony; traditionally white in Western culture."], "wedding ring": ["One of a pair of rings exchanged by bride and groom in a wedding ceremony; symbolizes continuous fidelity."], "wedding band": ["One of a pair of rings exchanged by bride and groom in a wedding ceremony; symbolizes continuous fidelity."], "honeymoon": ["The period of time immediately following a marriage.", "To spend one's honeymoon.", "A holiday or trip taken by a newly married couple."], "wedding gown": ["Clothing worn by a bride during a wedding ceremony; traditionally white in Western culture."], "wedding night": ["The night after the wedding, when the bride and groom spend their first official night together"], "wedding cake": ["An often multi-layered cake ceremoniously cut by the bridal pair at their wedding."], "dowry": ["An amount paid by the parents of a bride to the groom and or his family."], "wedding march": ["Music played when either the couple or the bride arrive at the wedding ceremony."], "Dutch": ["A West Germanic language spoken mainly in the Netherlands, Flanders and Suriname.", "Of or relating to the Netherlands, the Dutch people, or the Dutch language.", "A person of Dutch nationality."], "English": ["A West-Germanic language originating in England but now spoken in all parts of the British Isles, the Commonwealth of Nations, the United States of America, and other parts of the world.", "Of or relating to England, the English people, or the English language.", "A person of English nationality."], "Galician": ["The language of Galicia, a region of the Northwestern Iberian peninsula.", "Of or relating to Galicia, Galicians, or the Galician language.", "A person from Galicia, or of Galician ancestry."], "French": ["The language of France and numerous other countries.", "The people of France collectively.", "Of or pertaining to France, the French people.", "Of the French language"], "German": ["A male person of German nationality.", "A female person of German nationality.", "An Indo-European language, primarily spoken in Germany, Austria, Liechtenstein, South Tyrol, Switzerland and a small part of Belgium.", "Of or relating to Germany, Germans, or the German language.", "A person of German nationality."], "Belgium": ["A country in Western Europe at the North Sea, south of The Netherlands, north of France, and west of Germany, with capital city Brussels."], "Spanish": ["A Romance language that is spoken mainly in Spain, North, Central and South America, and the Carribbean.", "Of or relating to Spain, Spaniards, or the Spanish language."], "chef": ["A person whose profession is to prepare food for customers.", "A cook who manages other cooks in an establishment such as a restaurant."], "football": ["Inflated ball used in the sport of football which has between 62 and 66 cm in diameter.", "The ball used when playing football.", "The ball used in American football."], "morning gift": ["A gift from the groom to the bride given on the morning after the wedding night; traditionally this gift became her personal property."], "cool": ["To make cooler or colder.", "Having a slightly low temperature; mildly or pleasantly cold.", "About colors whose relative visual temperatures make them seem cool. Cool colors generally include green, blue-green, blue, blue-violet, and violet.", "To become cooler or colder."], "soccerball": ["The ball used when playing football."], "queen": ["A female monarch.", "The wife of a king.", "The most powerful piece in the game of chess, able to move both horizontally and diagonally any number of spaces.", "A playing card with a picture of a queen on its face; the 12th card in a given suit.", "A reproductive female animal in a hive, such as an ant, bee, termite or wasp.", "The only sexually mature female in a colony of honeybees."], "language": ["A person's manner of speaking.", "A system of communication using the spoken or signed word or using symbols that represent words, signs or sounds.", "Any variety of language that functions as a system of communication for its speakers."], "question": ["A sentence, phrase or word which asks for information, a reply or response.", "A subject or topic under consideration or discussion.", "Challenge about the truth or accuracy of a matter.", "To ask (a question) to somebody; to seek an answer to.", "To examine by asking (a witness, for example).", "Action of asking for information, a reply or response on a given subject."], "quick": ["Raw or sensitive flesh, especially that underneath finger and toe nails.", "Moving with speed, rapidity or swiftness, or capable of doing so.", "Mentally agile.", "Occurring or happening within a short time; brief."], "clever": ["Mentally agile.", "Of high or especially quick cognitive capacity."], "very": ["To a high or large degree."], "too": ["To a greater, larger or higher degree than expected, warranted or wanted.", "In addition to what has already been said or noted."], "fox": ["A carnivorous relatively small canine of the species Vulpes Vulpes.", "A canine animal of the genus Vulpes."], "red fox": ["A carnivorous relatively small canine of the species Vulpes Vulpes."], "Canada": ["A country in North America whose capital is Ottawa."], "Iceland": ["An island nation in the northern Atlantic Ocean. Its capital is Reykjavik."], "moon": ["A natural satellite of a planet.", "A month, particularly a lunar month (approximately 28 days).", "To fuss over adoringly or with great affection.", "Deliberately show ones bare ass (usually to an audience, or at a place, where this is not expected or deemed appropriate).", "To be lost in phantasies or be carried away by some internal vision, having temorarily lost (part of) contact to reality."], "stave": ["A series of (usually five) horizontal lines on which musical notes are written."], "staff": ["A group of suporters or being consulted on a high but not the highest hierarchy position, corroborating closely usually assisting in solving specific problems or questions in a certain field.", "A series of (usually five) horizontal lines on which musical notes are written.", "The employees or workers of a business or organisation.", "A long, straight stick (usually made of wood) that is used for walking or as a status symbol or weapon.", "The whole of the worforce."], "India": ["A country in South Asia, with the capital New Delhi.", "The letter \"I\" in the ICAO radiotelephony spelling alphabet."], "Republic of India": ["A country in South Asia, with the capital New Delhi."], "suave": ["Charming, confident, elegant and sophististicated (relating to a person)."], "Republic of Iceland": ["An island nation in the northern Atlantic Ocean. Its capital is Reykjavik."], "Indonesia": ["A country in Southeast Asia with capital Jakarta."], "also": ["In addition to what has already been said or noted."], "Republic of Indonesia": ["A country in Southeast Asia with capital Jakarta."], "Iran": ["A country in Southwest Asia with capital Tehran."], "Islamic Republic of Iran": ["A country in Southwest Asia with capital Tehran."], "Iraq": ["A country in Southwest Asia with capital Baghdad."], "Republic of Iraq": ["A country in Southwest Asia with capital Baghdad."], "Armenia": ["A country in West Asia. Its official name is Republic of Armenia and its capital is Yerevan."], "Ireland": ["A country in Western Europe with capital Dublin.", "An island in the Atlantic Ocean, the third largest of Europe."], "Republic of Ireland": ["A country in Western Europe with capital Dublin."], "Israel": ["A country in Southwest Asia, with capital Jerusalem."], "Italy": ["A country in Southern Europe with capital Rome."], "Italian Republic": ["A country in Southern Europe with capital Rome."], "Haiti": ["A country in the Carribean with capital Port-au-Prince."], "Republic of Haiti": ["A country in the Carribean with capital Port-au-Prince."], "Honduras": ["A country in Central America with capital Tegucigalpa."], "Republic of Honduras": ["A country in Central America with capital Tegucigalpa."], "Hungary": ["A country in Central Europe with capital Budapest."], "Republic of Hungary": ["A country in Central Europe with capital Budapest."], "Afghanistan": ["A country in Central Asia with capital Kabul."], "Transitional Islamic State of Afghanistan": ["A country in Central Asia with capital Kabul."], "Albania": ["A country in Southeastern Europe with capital Tirana."], "Republic of Albania": ["A country in Southeastern Europe with capital Tirana."], "Algeria": ["A country in North Africa with capital Algiers."], "People's Democratic Republic of Algeria": ["A country in North Africa with capital Algiers."], "Antigua and Barbuda": ["A country in the Carribean with capital Saint John's."], "Andorra": ["A country in Southwestern Europe, with capital Andorra la Vella."], "Principality of Andorra": ["A country in Southwestern Europe, with capital Andorra la Vella."], "Azerbaijan": ["A country in the Caucasus region, with capital Baku."], "Republic of Azerbaijan": ["A country in the Caucasus region, with capital Baku."], "quiet": ["With little or no sound; denoting absence of disturbing noise.", "Having little motion or activity.", "Not busy.", "To become quiet, silent, still, tranquil, calm.", "Marked by the complete lack of sound or noise.", "The absence of movement."], "quite": ["To a great extent or degree.", "To a moderate extent or degree.", "Expresses emphatic agreement with another person's (often grim) analysis of a situation."], "throw the baby out with the bathwater": ["To discard something valuable or useful in the process of removing waste."], "Angola": ["A country in Southern Africa with capital Luanda."], "Republic of Angola": ["A country in Southern Africa with capital Luanda."], "tent": ["A portable lodging (usually made from waterproof plastic, animal hide or canvas streched by poles) that is used for sheltering people and objects from the weather when camping or at festivals."], "rainy": ["Abounding with rain."], "marquee": ["A portable lodging (usually made from waterproof plastic, animal hide or canvas streched by poles) that is used for sheltering people and objects from the weather when camping or at festivals."], "raise": ["To cause to rise; to move something from a lower position to a higher one.", "To gather together; to encourage growth by collecting funds.", "An increase in pay or wages by being with a company or business for a certain period of time, or for specific good work.", "To construct a wall, a building, etc.", "To make by combining materials and parts.", "To summon into action or bring into existence.", "To cultivate by growing, often involving improvements by means of agricultural techniques.", "To move upwards (e.g. eyes)."], "Argentina": ["A country in South America, with capital Buenos Aires.", "ISO 639-6 entity"], "Argentine Republic": ["A country in South America, with capital Buenos Aires."], "collect": ["To gather together; to encourage growth by collecting funds.", "To get or gather together.", "To heap up; to collect or gather (e.g. work, magazines, etc.).", "To receive an amount due."], "Australia": ["A country in Oceania, with capital Canberra.", "Continent that is entirely located on the southern half of the globe, surrounded by the Indian, and Pacific Oceans, and Southern Ocean."], "Commonwealth of Australia": ["A country in Oceania, with capital Canberra."], "Austria": ["A country in Central Europe, with capital Vienna."], "Republic of Austria": ["A country in Central Europe, with capital Vienna."], "chicken": ["A type of domesticated bird from the order of Galliformes which is often raised as a type of poultry (Gallus gallus domesticus).", "A person who lacks courage.", "The flesh of the domesticated chicken (Gallus gallus domesticus).", "A youthful person."], "apple": ["A native Eurasian tree of the genus ''Malus''.", "The popular, crisp, round fruit of the apple tree, usually with red, yellow or green skin, light-coloured flesh and pips inside.", "The wood of the apple tree."], "apple tree": ["A native Eurasian tree of the genus ''Malus''."], "bottle": ["A container, typically made of glass and having a tapered neck, used for holding liquids.", "The contents of a container called bottle.", "A container with a rubber nipple used for giving liquids to infants.", "To store liquids in bottles."], "breakfast": ["The first meal of the day, usually eaten in the morning.", "To eat breakfast."], "century": ["A period of 100 years.", "A hundred runs scored in cricket either by a single player in one innings, or by two players in a partnership.", "A unit of the ancient Roman army, originally of 100 soldiers, later reduced to 80."], "bedroom": ["A room in a house (usually containing at least a bed and a wardrobe) where a person sleeps."], "clock": ["An instrument used to measure or keep track of time.", "To measure the amount of time an object takes to complete a course (e.g., \"to clock a race car\")."], "slip": ["To fall over (usually unexpectedly) onto the ground or floor, due to the floor being slippery, smooth or slimy.", "To make a mistake or be incorrect."], "slide": ["To fall over (usually unexpectedly) onto the ground or floor, due to the floor being slippery, smooth or slimy."], "friend": ["A person other than a family member, spouse or lover whose company one enjoys and towards whom one feels affection.", "An associate who provides assistance.", "A person that someone has met repeatedly, and has a superficial knowledge of.", "A person with whom one has a love affair."], "work": ["Productive activity, service, trade, or craft for which one is regularly paid.", "To run or perform well, with ease or as desired or intended.", "To apply the mind to learning and understanding a subject (especially by reading).", "That that has been made; a product produced or accomplished through the effort or activity or agency of a person or thing.", "To do a specific task by employing physical or mental powers.", "To have and exert influence or effect.", "To create something, usually for a specific function."], "work well": ["To run or perform well, with ease or as desired or intended."], "function": ["To run or perform well, with ease or as desired or intended.", "Social gathering for entertainment and fun.", "(mathematics) A relation in which each element of the domain is associated with exactly one element of the codomain.", "What something does or is used for.", "(biology) The physiological activity of an organ or body part.", "(computing) A routine that returns a result.", "(chemistry) The characteristic behavior of a chemical compound.", "To perform duties attached to a particular office or place or function."], "down": ["From an higher position to a lower one.", "In a Southern direction; especially when taking directions from a map.", "In or into a state of non-operation.", "From one end to another; especially, from a higher end to a lower.", "On a lower level than before.", "Soft, fluffy immature feathers which grow on young birds.", "To drink or swallow, especially without stopping before the vessel containing the liquid is empty.", "Having a property of what grows on young birds before their feathers appear.", "Low in spirits.", "To knock somebody or cut something down, e.g. a tree."], "tomahawk": ["The war axe of North American indians."], "uncle": ["The brother of someone\u2019s father or mother."], "scissors": ["A tool used for cutting thin material, consisting of two crossing blades attached at a pivot point in such a way that the blades slide across each other when the handles are closed."], "tomorrow": ["The day after the present day.", "On the day after the present day."], "choice": ["One particular selection or preference out of a given range; the outcome of a decision that a person has made, or is about to make.", "A selection of something from a collection of options or alternatives.", "Considered especially good or preferred."], "possible": ["Able to happen but not certain."], "sentence": ["The official and authentic decision of a court of justice upon the respective rights and claims of the parties to an action or suit therein litigated and submitted to its determination, the final decision of the court resolving the dispute and determining the rights and obligations of the parties.", "A grammatically complete series of words (consisting of a subject and predicate, even if one or the other is implied) that typically begins with a capital letter and ends with a full stop.", "The punishment imposed upon a person that has been convicted of a crime."], "prince": ["Son of a prince, king, queen, emperor or empress, or other high-ranking person (such as a grand duke).", "The male ruler or head of a principality."], "problem": ["A difficulty that needs to be resolved or dealt with.", "A question with the explicit purpose of being solved by the students.", "A source of difficulties."], "protect": ["To keep something or someone safe or prevent harm coming to someone or something.", "To prevent against danger, injury, destruction, or damage."], "sheep": ["A common, four-legged animal (Ovis) that is commonly kept by humans for its wool.", "A timid, shy person who is easily led by others."], "neighbour": ["A male person living in a house that is adjacent or nearby another person's house.", "A female person living in a house that is adjacent or nearby another person's house."], "orange": ["The slightly sour fruit of the orange tree (citrus sinensis), usually orange in colour throughout, with a thick skin and pips.", "The colour of a ripe orange; a reddish-yellow.", "Having the colour of a ripe orange; a reddish-yellow."], "neck": ["The part of the body (found in some animals, including humans) that connects the head and the trunk.", "The narrow portion near the opening of a bottle."], "guts": ["The internal organs of an animal.", "The quality of not being afraid or intimidated easily without being incautious or inconsiderate."], "white": ["Bright and colourless; reflecting equal quantities of all frequencies of visible light.", "A Caucasian person with light-coloured skin; a member of the Caucasoid race.", "The colour of light that contains equal amounts of all visible wavelengths.", "Of or belonging to a racial group having light skin coloration."], "rotten": ["Having been overridden with bacteria and other infectious agents, hereby becoming unfit for consumption (referring to food).", "Having changed its colour, smell or composition (partially or completely), due to being attacked and decomposed by microorganisms (relating to organic matter); damaged by decay."], "eat": ["To consume something solid or semi-solid (usually food) by putting it into the mouth and eventually swallowing it.", "To eat a meal.", "To use up resources or materials.", "To cause to deteriorate due to the action of water, air, or an acid."], "red": ["The colour obtained by subtracting green and blue from white. A primary colour in the additive colour system, and a secondary colour in the subtractive colour system. It is the complementary colour of cyan.", "Having red as its colour."], "fart": ["The emission of digestive gases through the anus.", "To emit digestive gases through the anus."], "opposite": ["Located directly across from something else, or from each other.", "The contrary; being opposed to something.", "A person or object that is as different as possible from something else.", "A relation of direct opposition.", "Facing the other direction."], "pencil": ["To tentatively arrange an appointment into a busy schedule.", "A common writing utensil (made of a graphite shaft surrounded by wood) that uses graphite (commonly referred to as lead) to make marks on paper."], "pig": ["A common, four-legged animal (Sus scrofa) that has cloven hooves, bristles and a nose adapted for digging and is farmed by humans for its meat.", "(Pejorative) A fat or overweight person."], "minute": ["A unit of time equal to sixty seconds and one-sixtieth of an hour.", "Extremely small in size."], "peace": ["A state of tranquility, quiet, and harmony, e.g., a state free from civil disturbance.", "A state free of war, in particular war between different countries."], "Holland": ["A country in Europe, north of Belgium, officially the Kingdom of the Netherlands. Also existing of the Netherlands Antilles and Aruba, with capital Amsterdam.", "A region of the Netherlands, now divided into two separate regions: South Holland and North Holland."], "with": ["On the opposing side to.", "In the company of.", "In agreement with (a person).", "In addition to; as an accessory to."], "heat": ["A form of energy that is transferred by a difference in temperature: it is equal to the total kinetic energy of the atoms or molecules of a system.", "To cause an increase in temperature of an object or space; to cause something to become hot.", "To become hot or hotter."], "summer": ["Traditionally the second of the four seasons regarded as being from June 21 to September 20 (or just June, July and August) in the Northern Hemisphere and from December 21 to March 20 (or just December, January and February) in the Southern Hemisphere."], "sun": ["Any star, especially when seen as the centre of any single solar system.", "The particular star at the centre of our solar system, from which the Earth gets light and heat."], "option": ["One particular selection or preference out of a given range; the outcome of a decision that a person has made, or is about to make."], "exquisite": ["Considered especially good or preferred."], "guard": ["To keep something or someone safe or prevent harm coming to someone or something.", "A person who protects or watches over something.", "Something that serves as a guard or protection; a defense."], "ewe": ["A female sheep."], "ram": ["A male sheep.", "Non gelded male sheep.", "To strike against with a heavy impact."], "throat": ["The front part of the neck."], "consume": ["To consume something solid or semi-solid (usually food) by putting it into the mouth and eventually swallowing it.", "To ingest food, medicine, drugs, etc.", "To use up resources or materials."], "swallow": ["The reflex in the human body that makes something pass from the mouth to the pharynx and into the esophagus, with the shutting of the epiglottis.", "A passerine bird in the family Hirundinidae, characterised by its adaptation to aerial feeding.", "The act of swallowing.", "To tolerate or accommodate oneself to.", "To cause to pass through the esophagus as part of eating or drinking."], "across": ["Located directly across from something else, or from each other.", "From one side to the other.", "In a transverse manner."], "Spaniard": ["A person of Spanish nationality.", "A male person of Spanish nationality.", "A female person of Spanish nationality."], "monkey": ["A primate from the group \"New World monkeys\" or \"Old World monkeys\" (Simiiformes, excluding the superfamily Hominoidea or apes) that lives mainly in rainforests and is distinguished from an Ape by its smaller size and its tail."], "knife": ["A utensil consisting of a sharpened piece of hard material such as steel or other metal, ceramic, glass or stone, usually attached to a handle, that is formed in a manner that allows for cutting softer materials, especially meat or other food.", "To cut with a knife.", "To use a knife as a weapon in order to injure or kill.", "To cut through with or as if with a knife."], "hour": ["A time period of sixty minutes; one twenty-fourth of a day."], "next": ["Following in a sequence."], "laugh": ["To express pleasure, mirth or derision by peculiar movement of the muscles of the face, particularly of the mouth, causing a lighting up of the face and eyes, and usually accompanied by the emission of explosive or chuckling sounds from the chest and throat; to produce laughter.", "An involuntary reaction to a funny or entertaining dialogue or action that usually results in the emission of chuckling or explosive sounds, and shows happiness or satisfaction of the situation."], "number": ["An abstract entity used to describe quantity.", "A member of one of several classes: natural numbers, integers, rational numbers, real numbers, complex numbers, quaternions.", "A sequence of digits used to reach a particular person on a telephone network."], "amongst": ["In the company of.", "[Denotes a mingling or intermixing with distinct or separable objects.]"], "alongside": ["In the company of.", "Side by side with."], "sow": ["An adult female pig.", "To scatter, disperse, or plant seeds."], "boar": ["An adult male pig.", "A mammal of the biological family Suidae (Sus scrofa, Linneo 1758), ancestor of the domestic pig", "An adult male wild boar."], "come apart": ["To move away from each other."], "mountain bike": ["A bicycle, that is mainly used for riding off road and in the mountains."], "electron": ["An elementary particle with a negative charge. Together with atomic nuclei, it makes up atoms."], "daughter": ["An animal's female offspring (including that of a human)."], "enemy": ["Someone who is hostile to, feels hatred towards, opposes the interests of, or intends injury to someone else.", "The troups of a state, nation or people with whom one is at war.", "Man who is hostile to, feels hatred towards, opposes the interests of, or intends injury to someone else.", "Of, relating to, or belonging to an enemy."], "separate": ["To move away from each other.", "To cause something or someone to move away from something or someone else.", "To divide fully or partly along a more or less straight line.", "To sever the union of.", "To see someone or something as different from others; to discern or comprehend."], "come away": ["To move away from each other."], "in droves": ["In large quantities, with many."], "closing scene": ["The last scene in a play, novel or another artistic work."], "duck": ["An aquatic bird of the family Anatidae, having a flat bill and webbed feet.", "To lower the head or body to avoid collision, as with an object or ceiling."], "criminal": ["A male person that has conducted a criminal act.", "A female person that has conducted a criminal act.", "A person that has conducted a criminal act.", "Being against the law."], "wedding reception": ["A celebration after the wedding ceremony where people congratulate and meet the newlyweds and their families."], "tool": ["A mechanical device intended to make a task easier.", "A program or application that software developers use to create, debug, maintain, or otherwise support other programs and applications."], "final": ["After all the others.", "A test or examination given at the end of a term or class."], "finale": ["The last scene in a play, novel or another artistic work."], "street": ["A paved part of road, usually in a village or a town.", "Relative to urban streets and highways."], "childbirth": ["The fact or action of giving birth to a child, as the culmination of pregnancy."], "congratulation": ["The expression of one's sympathetic pleasure or joy to the person(s) it is felt for."], "party": ["An organized group that has as its fundamental aim the attainment of political power and public office for its designated leaders. Usually, a\\npolitical party will advertise a common commitment by its leaders and its membership to a set of political, social, economic and/or cultural values.", "Social gathering for entertainment and fun."], "birth": ["The fact or action of giving birth to a child, as the culmination of pregnancy.", "The moment at which someone is being born.", "The procedure of developing or the first time of presenting itself of an idea or a thing.", "To help a woman or an animal to give birth.", "To release an offspring from one's own body; to cause to be born."], "parturition": ["The fact or action of giving birth to a child, as the culmination of pregnancy."], "healthy": ["In good physical and mental condition; free from disease."], "kitchen": ["A room equipped for preparing and cooking food."], "face to face": ["Directly opposite each other."], "boy": ["A young male person, usually a child or teenager."], "birthday": ["The date on which a person was born.", "The day on which one or more years ago someone was born."], "cross": ["A geometrical figure consisting of two straight lines or bars intersecting each other such that at least one of them is bisected by the other.", "To go beyond, to pass here.", "To hinder or prevent (the efforts, plans, or desires) of.", "To fold so as to resemble a cross."], "bread": ["A common food made mainly from flour, water and yeast and produced by kneading and baking a dough."], "tools": ["The collection of mechanical devices that are required to do a task."], "booby": ["A clumsy person."], "gold": ["A heavy yellow elemental metal of great value, with atomic number 79 and symbol Au.", "The award presented after being victorious in a sporting event."], "future": ["The time ahead; those moments yet to be experienced.", "Taking place or existing in the future."], "voice": ["The sound and tones human beings are able to produce with the vocal cords."], "month": ["A period into which a year is divided, historically based on the phases of the moon. In the Gregorian calendar there are twelve months.", "A period of time lasting approximately thirty days."], "unit": ["A standard measure of a quantity."], "bathroom": ["A room containing a bath or shower and usually a washbasin and toilet"], "knee": ["In man, the joint in the middle part of the leg.", "To go down on one or both knees."], "creation": ["The procedure of developing or the first time of presenting itself of an idea or a thing."], "medicine": ["The science and art of treating and healing.", "A substance which specifically promotes healing."], "emergence": ["The procedure of developing or the first time of presenting itself of an idea or a thing."], "manifestation": ["The procedure of developing or the first time of presenting itself of an idea or a thing."], "picture": ["A representation of visible reality produced by drawing, painting, printing, photography, etc.", "The visual representation of a person or an object.", "To represent or show in, or as in, a picture."], "object": ["Something that has a physical existence.", "The grammatical object in a sentence.", "To express opinions disagreeing with the ones expressed by others.", "The goal intended to be attained (and which is believed to be attainable)."], "plant": ["Any living organism that synthesizes its food from inorganic substances, possesses cellulose cell walls, responds slowly and often permanently to a stimulus, lacks specialized sense organs and nervous system, and has no powers of locomotion.", "An establishment where products are manufactured using industrial methods.", "The whole of buildings, machines and necessary devices to carry out an activity.", "To set up or lay the groundwork for.", "To put a plant in the ground so that it strikes root and grows.", "To set up or found; to begin something, to undertake a plan, to give life to an institution, enterprise, etc.", "Pertaining to vegetables or other plants (as opposed to animal).", "An organism that is not an animal, especially an organism capable of photosynthesis.", "To fix or set securely or deeply."], "tea": ["The dried leaves or buds of the tea plant, Camellia sinensis.", "The drink made by infusing dried leaves or buds in hot water.", "A meal that is eaten in the late afternoon or evening daily.", "A cup or mug of dried leaves or buds infused in hot water."], "form": ["The shape or visible structure of a thing or person.", "A document w\u0131th blank spaces to be filled in by the user.", "To g\u0131ve shape or visible structure to a thing or person.", "In botanics, a group of organisms within a species that differ in trivial ways from similar groups.", "To create something, usually for a specific function.", "A method of doing something."], "skill": ["The capacity to do something well. They are usually acquired or learned, as opposed to abilities, which are often thought of as innate."], "ring": ["A round piece of (precious) metal worn around the finger.", "To contact someone using the telephone.", "An algebraic structure with an addition operation constituting an abelian group and with a multiplication operation constituting a monoid and distributive over addition.", "An algebraic structure with an addition operation constituting an abelian group and with a multiplication operation distributive over addition.", "A square ring where boxers fight.", "A platform usually marked off by ropes in which contestants box or wrestle."], "ability": ["The quality of being able to perform; a quality that permits or facilitates achievement or accomplishment."], "talent": ["The ability to acquire knowledge or skills."], "window": ["An opening, usually covered by one or more panes of clear glass, to allow light from outside to enter a building or vehicle.", "An opening, usually covered by glass, in a shop which allows people to view the shop and its products from outside.", "A period of time when something is available.", "A rectangular or differently shaped area on a computer terminal or screen containing some kind of user interface, displaying the output of and allowing input for one of a number of simultaneously running computer processes."], "yet": ["Up to the present.", "Continuously, during all time up to this or that time.", "At some future time.", "In addition to something else previously mentioned.", "[Phrase implying that the following clause is contrary to prior belief].", "At the present time.", "[used to emphasize a comparative]", "Up to the present time."], "visit": ["To go and see a person or place.", "A single act of seeing some person or place for a short time.", "To pay a short visit."], "record": ["Information stored on any type of media (paper, on a server, data in a program, microfilm, on a hard drive, etc.) with the intent to preserve the official business of the organization.", "Deposit of a document in an office or a public authority in order to have it registered (or acknowledged).", "A set of data relating to a single individual or item.", "The most extreme known value of some achievement, particularly in competitive events.", "To make a record of information.", "To insert and to record data in an electronic computer in permanent form.", "To make an audio or video recording of.", "The information about a single \u2018member\u2019 of a table in a database."], "spoon": ["An implement for eating or serving, a small bowl with a long straight handle."], "telephone": ["An electronic device used for calling people.", "To contact someone using the telephone.", "To speak with a person by telephone."], "phone": ["An electronic device used for calling people.", "To contact someone using the telephone."], "tooth": ["A hard, calcareous structure present in the mouth of many vertebrate animals, generally used for eating."], "second": ["One-sixtieth of a minute (as it is the second division of the hour, the minute being the first).", "A short, indeterminate amount of time.", "That which comes after the first.", "The attendant of a contestant in a duel or boxing match, who must be ready to take over if the contestant drops out.", "To give support or one's approval to; to be behind; to approve of."], "shoe": ["A protective covering for the foot, with a bottom part composed of thick leather or plastic sole and often a thicker heel, and a softer upper part made of leather or synthetic material. Shoes generally do not extend above the ankle, as opposed to boots, which do.", "A piece of metal designed to be attached to a horse's foot as a means of protection."], "right": ["One direction or side, as opposed to left. When a person hold his hands out, palms facing away from him, the shape between the first finger and thumb that it not an \"L\" is this direction.", "That are in accordance with fact.", "A power or liberty to which one is justly entitled.", "Something that is on the right side relative to another object.", "Pertaining to the political right; conservative."], "needle": ["A thin, sharp implement used in sewing, knitting and acupuncture.", "A long, slender device for indicating the reading of measurements on a dial (such as a compass).", "A hollow, thin and usually sharp implement used for injecting or drawing fluids from a person or animal.", "Long, thin, metal item with a sharp end, that is suitable for sewing.", "The leaf of a conifer."], "grandfather": ["The father of one of someone's parents"], "mobile": ["A type of sculpture in which parts move, often activated by air currents."], "molar": ["A tooth located in the back of the mouth used for crushing and grinding food."], "silence": ["The complete lack of sound or noise."], "moment": ["A short, indeterminate amount of time."], "pepper": ["A spice prepared from the fermented, dried, unripe red berries of the pepper plant.", "A fruit of the Capsicum: red, yellow or white, hollow and containing seeds, and in very spicy and mild varieties.", "A mild fruit of the Capsicum.", "Any fruit of a plant of the botanical genus Capsicum, noted for their spicy and burning flavour due to presence of capsaicin.", "To season with pepper."], "lion": ["A large cat (Panthera leo) that is native to Africa, Asia and formerly much of Europe."], "hobby": ["An activity that a person enjoys doing in their spare time (such as stamp collecting or knitting)."], "hypodermic needle": ["A hollow, thin and usually sharp implement used for injecting or drawing fluids from a person or animal."], "shade": ["Darkness, where light (particularly sunlight) is blocked.", "A variety of a colour, particularly one obtained with the addition of black."], "until": ["Up to the time or date of (something happening)."], "toe": ["One of the extremities of the foot."], "shadow": ["Darkness, where light (particularly sunlight) is blocked.", "Something existing in perception only."], "sensible": ["Reasonable and consequently also useful."], "meaningful": ["Having a recognizable meaning."], "town": ["An area with residential districts, shops and amenities, and its own local government."], "student": ["A person who studies a particular academic subject.", "Someone who attends a class."], "braeburn": ["A firm, red-streaked apple cultivar that tastes both sweet and tart."], "steam": ["The gas phase of water.", "To cook with water vapor."], "simple": ["Having few parts or features; having no special features.", "A person with poor judgment or little intelligence.", "Requiring little skill or effort; posing no difficulty."], "louse": ["A small wingless parasitic insect of the order Phthiraptera that lives on humans, other mammals and birds."], "horn": ["A hard growth of keratin that protrudes from the top of the head of certain animals.", "A wind instrument made of a wound copper tube with a wide sound bucket and valves."], "bone": ["A composite material consisting largely of calcium phosphate and collagen and making up the skeleton of most vertebrates.", "Any of the components of an endoskeleton, consisting mainly of calcium phosphate, collagen and cells.", "To remove the bones from.", "To study intensively, as before an exam.", "To remove the fishbones from."], "round": ["Circular or having a circular cross-section in at least one direction.", "A charge of ammunition for a single shot.", "A regular route for a sentry or policeman.", "A stage in the process of multilateral trade negotiations.", "Having a circular, cylindrical or spherical shape."], "lioness": ["A large female cat (Panthera leo) that is native to Africa, Asia and formerly much of Europe."], "reach": ["To come to a destination.", "Catching up with someone that went ahead.", "To attain or obtain by stretching forth the hand.", "To bring to a succesful end; to gain with effort.", "To exert much effort or energy on (e.g. ears, eyes, etc.).", "The limit of capability."], "wrong": ["Contradicting the facts."], "left": ["One direction or side, as opposed to right. The west side of the body when one is facing north.", "Pertaining to the political left; liberal.", "Something that is on the left side relative to another object."], "sharp": ["Having the ability to cut easily.", "Having or emitting a high-pitched and sharp tone or tones.", "Executed in an energetic and decided way.", "Intelligent, smart and capable of taking advantage of a situation.", "A note that is played a semitone higher than usual (denoted by the name of the note followed by the symbol \u266f).", "The symbol \u266f, placed after the name of a note, in the key signature, or before a note on the staff to indicate that the note is to be played a semitone higher."], "dull": ["Lacking the ability to cut easily; not sharp.", "Lacking in intelligence.", "Causing boredom.", "To reduce the intensity of a sound."], "dry": ["(Almost) free from liquid or moisture.", "A classification for wine with a relatively low sugar content.", "Of weather without precipitation (rain, hail, snow etc.).", "To lose moisture, usually through evaporation or absorption.", "To remove the moisture and make dry.", "(Of cows, goat, etc) Not producing milk (any more).", "To lose part of the moisture, to start drying."], "thin": ["(Of a person or animal) Narrow in size, and usually indicating carrying little fat.", "(For a flat object) Having a very small thickness.", "(For an elongated object) Having a very small diameter or cross-section."], "drink": ["Any one of various liquids for drinking.", "To consume a liquid through the mouth.", "To raise one's glass and touch it against another person's (usually at a celebration meal, etc. and usually with the word, \"cheers\").", "To consume a liquid containing alcohol.", "A serving of a liquid containing alcohol.", "The act of swallowing.", "Any large deep body of water."], "breast": ["The fleshy organ on the chest of a sexually mature human female containing mammary glands.", "The portion of the body from the base of the neck to the top of the abdomen; the thorax."], "bite": ["To cut off a piece by clamping the teeth.", "To hold something by clamping one's teeth.", "The act of biting with the teeth and jaws.", "The wound left behind after having been bitten by an animal or person.", "A small amount of solid food; a mouthful."], "straight": ["Not crooked or bent; having a constant direction throughout its length.", "Sexually attracted to members of the opposite gender.", "Without any deviation, immediately and directly.", "A poker hand such as Q\u2663 J\u2660 10\u2660 9\u2665 8\u2665, that contains five cards of sequential rank and mixed suits."], "name": ["Any word or phrase which designates a particular person, place, class or thing.", "To refer briefly to; to make reference to.", "To designate for a role.", "To give a name to.", "Word or phrase used to designate an object.", "To identify as in botany or biology, for example.", "To give the name or identifying characteristics of; to refer to by name or some other identifying characteristic property."], "near": ["Having a small intervening distance with regard to something.", "With very little distance to or in a particular place or location.", "To come near to; to move towards.", "Not far distant in time or space or degree or circumstances."], "far": ["Having a large intervening distance with regard to something.", "To a considerably larger extent.", "At a large intervening distance with regard to something."], "breathe": ["To repeatedly draw air into, and expel it from, the lungs, in order to extract oxygen from it and excrete waste products."], "hear": ["To perceive sound with the ear, without necessarily paying attention to it.", "To examine or hear (evidence or a case) by judicial process."], "blow": ["To produce an air current by forcing air out through the lips (at a speed faster than when breathing) or a device (such as a bellows).", "To create an explosion, resulting in the destruction of the entity.", "The moving of air resulting from the difference in air pressure in the atmosphere.", "A powerful stroke with the fist or a weapon.", "A street name for cocaine.", "To provide sexual gratification to a man through oral stimulation.", "In cetaceans, the expulsion of air at the surface through the blowhole(s).", "To show off.", "(Of the wind or a current of air) To move.", "To push away by blowing.", "A hard and loud hit received by someone when falling."], "explode": ["To create an explosion, resulting in the destruction of the entity.", "To expand suddenly with great force, a loud noise and release energy because of strong inner pressure due to a violent chemical or physical reaction.", "To increase suddenly, sharply, and without control.", "Break, burst in to pieces violently."], "see": ["To perceive [images] with the eye, without necessarily paying attention to them.", "To go or live through; to be affected by a certain situation, to have something happen to oneself.", "To be in charge of or deal with.", "To perceive by the visual faculty."], "know": ["To be certain or sure about something.", "To have a distinct physical emotion, feeling or sensation.", "To have knowledge of; to have memorised information, data, or facts about."], "lie": ["To rest in a horizontal, static position, usually on another surface.", "A false statement made with the intention to deceive.", "To knowingly say something that is untrue."], "pejorative": ["A disparaging, belittling or derogatory word or expression", "Having a negative denotation or connotation."], "insult": ["To assault verbally; to be deliberately rude to.", "Coarse, insulting speech or expression.", "To put someone down, or show disrespect by the use of insulting language or dismissive behaviour."], "rude": ["Tough, robust.", "Bad mannered."], "play": ["To act in a manner such that one has fun; to engage in playful activities expressly for the purpose of recreation.", "To use a musical instrument, obtaining sounds from it.", "To engage in a sport as a professional or amateur.", "To take part in a sport's match.", "To perform a theatrical role.", "To use a device to watch or listen to the indicated recording.", "To contend against an opponent in a sport, game, or battle."], "depository": ["A place where something is deposited, as for storage, safekeeping, or preservation."], "count": ["The result of a tally that reveals the number of items in a set.", "The male ruler of a county.", "To enumerate the digits of one's numeral system.", "To determine the number (of objects in a group).", "To be important."], "earl": ["The male ruler of a county."], "Armenian": ["The script used for the Armenian language.", "An Indo-European language spoken by the Armenian people.", "A person of Armenian nationality.", "Of or relating to Armenia, Armenians, or the Armenian language."], "settlement": ["An area with residential districts, shops and amenities, and its own local government."], "uncomplicated": ["Having few parts or features; having no special features."], "spherical": ["Of or pertaining to a sphere.", "Shaped like a sphere."], "cylindrical": ["Related to a cylinder.", "Shaped like a cylinder."], "circular": ["Having the shape of a circle"], "squeeze": ["To apply pressure to something from two or more sides at once.", "To squeeze someone in one's arms.", "To push or press something into a small confined space.", "To apply pressure to something, usually with the hands, to make a liquid come out; for example, milking a cow or squeezing a lemon", "To press or force."], "sec": ["A classification for wine with a relatively low sugar content."], "slim": ["(Of a person or animal) Narrow in size, and usually indicating carrying little fat."], "slender": ["(Of a person or animal) Narrow in size, and usually indicating carrying little fat.", "Of buildings or trees: With a slender and elongated. form"], "reedy": ["(Of a person or animal) Narrow in size, and usually indicating carrying little fat."], "gulp": ["To consume a liquid through the mouth."], "quaff": ["To consume a liquid through the mouth."], "sip": ["A small drink.", "To drink in sips."], "think": ["To account; to esteem; to think; to judge; to hold in opinion; to regard. (Source Webster 1913)", "To actively and consciously use one's mental powers, usually to form ideas.", "To have as opinion, belief, or idea.", "To have in one's mind as the subject of one's thoughts.", "To reckon as being possible in the future.", "To have in mind as one's purpose or intention.", "To imagine or visualize."], "bust": ["The fleshy organ on the chest of a sexually mature human female containing mammary glands.", "Representation of a man from its head to his shoulders, mostly made of bronze or marble.", "Police raid done by surprise in a given place, for inspection of suspected people."], "sit": ["To be in a position with the upper body upright and the legs resting.", "To move into a position where the upper body is upright and the bottom is resting on a surface or the floor."], "kill": ["To purposely end the life of another human being.", "To deliberately and purposely end the life of a political, public or other significant figure, usually publically.", "To be in the process of putting to death/ending a life.", "To begin, to be in the process of and then to finish putting to death/ending a life.", "To put to death; to end a life.", "An animal or person that another animal or person has put to death, often for the purposes of eating it."], "dig": ["To move earth, rocks, etc. out of the way, usually to create a hole.", "To get the meaning of something.", "To remove, harvest, or recover earth by digging."], "respirate": ["To repeatedly draw air into, and expel it from, the lungs, in order to extract oxygen from it and excrete waste products."], "fear": ["To be scared of; to have an uncontrollable emotion of anxiety about something that causes a scared reaction or frightening impression.", "An emotion experienced in anticipation of some specific pain or danger."], "repository": ["A place where something is deposited, as for storage, safekeeping, or preservation.", "A person to whom a secret is entrusted.", "A burial vault (usually for some famous person)."], "ponder": ["To actively and consciously use one's mental powers, usually to form ideas.", "To think deeply about something."], "suck": ["To draw in a substance by creating a practical vacuum in the mouth, and as a result a difference in pressure."], "live": ["To be alive; to have a life.", "To have a distinct physical emotion, feeling or sensation.", "To have permanent residence.", "Seen or heard from a broadcast, as it happens.", "In a live or real time manner."], "corset": ["A woman's foundation garment, reinforced with stays, that supports the waistline, hips and bust."], "fight": ["To be engaged in a physical confrontation or fight.", "Struggle for superiority.", "To take part in a loud or angry verbal confrontation with one or more other people.", "A boxing or wrestling match."], "yellow": ["Having the colour of a yolk, a lemon or gold.", "To become yellow.", "To make yellow.", "Lacking courage.", "Color evoked by light that stimulates both the long and medium-wavelength cone cells of the retina about equally, but does not significantly stimulate the short-wavelength cone cells."], "green": ["Having green as its colour; having the hue of that portion of the visible spectrum lying between yellow and blue, evoked in the human observer by radiant energy with wavelengths of approximately 490 to 570 nanometers.", "The colour of growing foliage, as well as other plant cells containing chlorophyll; the colour between yellow and blue in the visible spectrum; one of the primary additive colour for transmitted light; the colour obtained by subtracting red and blue from white light using cyan and yellow filters.", "Easily deceived or duped.", "The part of a golf course near the hole."], "black": ["A colour (the colour of the sky at night and a blackbird's feathers) that is created by the absorption of all light and reflection of none; dark and colourless.", "Of or belonging to a racial group having dark skin especially of sub-Saharan African origin.", "Marked by anger or resentment or hostility.", "The total absence of light.", "A person with dark skin who comes from Africa (or whose ancestors came from Africa).", "Dark and colourless; not reflecting visible light."], "good": ["In the interest of a positive purpose.", "Kind and willing.", "Having desired or positive qualities.", "The nutritional, healthy part of something.", "Of moral excellence.", "In a thorough or complete manner.", "[The abstract instantiation of something qualified by the adjective 'good'.]", "An article of commerce.", "A result that is positive in the view of the speaker.", "The forces or behaviors that are the enemy of evil."], "burn": ["To be consumed by fire.", "An injury to the skin caused by fire, excessive heat or certain chemicals.", "Physical sensation in the muscles following strenuous exercise, caused by build-up of lactic acid.", "To undergo combustion.", "To cause to undergo fire combustion.", "A browning of the skin obtained from exposure to the sun."], "full": ["Containing the most or maximum amount possible in the given available space.", "In tourism when everything is occupied.", "Having eaten enough."], "star": ["A luminous celestial body that is made from gases (particularly hydrogen and helium) and forms the shape of a sphere.", "A noteworthy or popular person, often a performer or athlete.", "To appear as a featured performer or headliner, especially in an entertainment program.", "A natural luminous object in the cosmos that is visible in the sky from the earth at least during clear nights."], "freeze": ["To reach a chemically solid state, by the process of cooling.", "To become and remain uncomfortably cold (usually referring to animals, especially humans).", "To put (usually food) into a freezer, in order that it remains fresh.", "To become very still or silent, usually as the result of a surprising, awkward or embarrassing situation.", "To become motionless."], "cut": ["To perform an incision or separate, as with an instrument (for example, with a knife).", "To divide something with scissors.", "The reduction or limitation of costs, jobs, etc.", "To obtain a precise figure from a sheet of paper, from a fabric or other material by cutting its outline.", "To divide something with a sharp object (such as a knife, scissors, etc.).", "To cut down on; to make a reduction in (especially costs, jobs, e.g. with financial and administrative acts)."], "costly": ["Having a high price, cost."], "hit": ["To deal one or more blows with a swift movement with the hand or one instrument.", "A song that is very popular for a while.", "To give a blow by striking and make contact.", "To impact with another object, resulting in a change of direction and/or velocity of one or both objects.", "A record from a database that results from a given search query.", "Act or effect of hitting.", "To unlawfully and intentionally kill another human being.", "To hit or come into contact against something.", "To make a strategic, offensive, assault against an enemy, opponent, or a target.", "To affect or afflict suddenly, usually adversely (e.g. of bad weather or illness)."], "stab": ["To pierce or to wound with a pointed tool or weapon, especially a knife or dagger.", "A strong blow with a knife or other sharp pointed instrument.", "To poke or thrust abruptly."], "hunt": ["The pursuit and killing or capture of wild animals.", "To chase down prey and (usually) kill it.", "Chase of prey."], "scratch": ["To rub or scrape (a part of the body) with a sharp object (e.g. to relieve an itching).", "A mark or indentation left by drawing a sharp object over a surface.", "To scratch or cut with nails.", "To make a slight linear abrasion on a surface.", "To rub or scrape a part of one's self with a sharp object (e.g. to relieve an itching).", "To wound superficially with a sharp object dragged over the skin.", "To indicate the removal of part of a text by drawing a line over it."], "split": ["To divide fully or partly along a more or less straight line.", "To spread or separate the balls laying close to each other in billards, during a pool or snooker match."], "fool": ["A person or thing that is humiliated or mocked.", "A person with poor judgment or little intelligence.", "A person who is gullible and easy to take advantage of.", "A person, especially a large male, who is clumsy or a simpleton; an idiot."], "swim": ["To move through the water, without touching the bottom."], "spit": ["To forcefully evacuate saliva from the mouth.", "A secretion from the salivary glands (found in the mouth) that can be spat out."], "fly": ["To move autonomously through the air, without any part of the object or object's enclosure touching anything attached to the ground.", "A common insect; any species of insect of the order Diptera.", "The zipper or set of buttons at the front of a pair of trousers.", "A small, black and flying insect of the genus Musca, without a spine.", "To travel in an aircraft or spacecraft."], "stand": ["To be upright in an erect position, supported by the feet.", "An object or implement that is used to keep other objects in an upright position.", "To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly.", "The mental position from which things are viewed."], "walk": ["To move from one place to another by moving legs alternately, so that at least one foot is in contact with the floor or surface at any one time.", "Comfortable walking on foot for relaxation and enjoyment."], "turn": ["To position by moving an object around its axis.", "To change direction of movement.", "To switch to the next page in a book or document.", "To begin to be; to come to be; to turn into.", "To undergo a transformation or a change of position or action.", "To undergo a change or development."], "come": ["To come to a destination.", "To move toward or to reach either the speaker, the person spoken to, or the subject of the speaker's narrative.", "To reach a sexual climax; to experience orgasm.", "Men's semen.", "To come to pass; to arrive, as in due course (e.g. success, dawn, etc.).", "To reach or enter a state, relation, condition, use, or position.", "To be the product or result.", "To come from; to be connected by a relationship of blood.", "To come under, be classified or included (e.g. into a category)."], "Bulgarian": ["A South Slavic language that is spoken mainly by the people of Bulgaria.", "Of or relating to Bulgaria, the people from Bulgaria or their language.", "A person of Bulgarian nationality.", "Relating to Bulgaria."], "give": ["To transfer the possession or holding (of an object) to another person.", "To be the cause or source of (feeling, effect, etc.)", "To bestow the possession or title of.", "To produce as return, as from an investment; to give or supply.", "To convey or reveal information (e.g. one's name).", "To convey, as of a compliment, regards, attention, etc.", "To organize or be responsible for (e.g. a party, a course, etc.)", "To give as a present; make a gift of.", "To bring about (e.g. depth in a picture)."], "hold": ["To grasp or grip (particularly with the hand) so that the object does not end up at the surface below.", "To contain or hold; have within.", "To arrange for (something for someone else) in advance.", "To have a right, title, or office.", "To have effectiveness or legal force, to be applicable.", "To be the physical support of; carry the weight of.", "The understanding of the nature or meaning or quality or magnitude of something.", "The act of grasping.", "To hold or possess either in an abstract or concrete sense.", "To cause to stop (e.g. an engine or a machine).", "To organize or be responsible for (e.g. a party, a course, etc.)", "To have room for; to hold without crowding.", "To remain in a certain state, position, or condition.", "To maintain (a theory, thoughts, or feelings)."], "Chinese": ["A Sino-Tibetan language spoken mainly in China and the surrounding regions and countries.", "Of or relating to China, peoples from China or their languages.", "A person of Chinese nationality.", "A citizen of China or someone of Chinese origin."], "rub": ["To move one's hand or an object over a surface or other object (maintaining constant contact and applying moderate pressure)."], "Castilian": ["A Romance language that is spoken mainly in Spain, North, Central and South America, and the Carribbean."], "Italian": ["A Romance language spoken primarily in Italy.", "A person from Italy, or of Italian ancestry.", "Originating from Italy."], "Portuguese": ["Of or relating to Portugal, the Portuguese people, or the Portuguese language.", "A Romance language spoken primarily in Portugal, Brazil, Angola and Mozambique.", "A male person of Portuguese nationality.", "A female person of Portuguese nationality.", "A person from Portugal, or of Portuguese ancestry.", "Of or relating to Portugal, Portuguese or the Portuguese language."], "room": ["A separate part of a building, enclosed by walls, a floor and a ceiling.", "Physical accomodation for a particular object or item, or a set of rules within which to carry out an activity.", "One's bedroom.", "Any habitable room of a house."], "smile": ["An upwards movement of the sides of the mouth that indicates happiness or satisfaction.", "To make an upwards movement of the sides of the mouth, that indicates happiness or satisfaction."], "push": ["To apply a force to (an object), in order that it moves away from the origin of the force that was applied.", "A great force, applied in order that an object will move away from the origin of the force that was applied to it.", "To press, drive, or impel (someone) to action or completion of an action.", "The force used in pushing."], "wash": ["To remove dirt and grime from an object, using water (usually with soap).", "A covering with water (and usually soap), with the intention of removing dirt or grime from the object.", "The work of cleansing, usually with water and soap.", "To cleanse (one's body) with soap and water."], "wipe": ["To move an object or utensil over a surface or other object while maintaining contact, in order that a substance be removed from its surface."], "pull": ["To apply a force to (an object), in order that it moves towards the origin of the force that was applied.", "A great force, applied in order that an object will move towards the origin of the force that was applied to it.", "To draw by a physical force causing or tending to cause to approach, adhere, or unite.", "To cause to move along the ground by pulling."], "throw": ["To cause (an object) to move rapidly through the air, with the force of the hand or arm.", "(Of a horse) To cause its rider to fall off.", "To organize or be responsible for (e.g. a party, a course, etc.)"], "sew": ["To pass thread repeatedly through fabric or a material, using a needle, in order to join two or more parts or to make a pattern or motif."], "float": ["To be held up or supported by a liquid (due to the liquid being of greater density than the object) so that some or all of it is above the liquid's surface.", "A buoyant, usually rectangular device used by children to help them to float or swim.", "A set of different coins and notes (borrowed from the bank) to use as change at a stall or shop.", "To move or run smoothly and continously as a fluid."], "say": ["To be in the process of communicating orally, using a particular language.", "To begin, to be in the process of and then to finish communicating orally, using a particular language.", "To communicate orally, using a particular language; to express in words.", "To report or maintain.", "To have or contain a certain wording or form.", "To give instructions to or direct somebody to do something with authority.", "To communicate or express nonverbally."], "if": ["[The introduction of a condition or decision.]", "The exactness or the inaccuracy of the hypothesis that [Particle marking the object clause of a cognitive verb as doubtful.]"], "in": ["Contained or encased by.", "Place in which.", "Before the end of a time period."], "silent": ["Marked by the complete lack of sound or noise.", "Not making a sound.", "Not speaking."], "at": ["Having the position over a given place, location or object.", "With very little distance to or in a particular place or location.", "Indicates the moment in the day in which something occurs.", "In the direction of (often in an unfocused or uncaring manner).", "Occupied in (activity).", "The logogram @.", "Evenly distributed to; identical instances of; mapped to any of."], "ashes": ["That which is left behind of a body, especially after cremation or decay."], "living room": ["A room in a private house used for general social and leisure activities."], "tug": ["A great force, applied in order that an object will move towards the origin of the force that was applied to it.", "(nautical) a small, powerful boat used to push or pull barges or to help maneuver larger vessels ; a small towboat."], "sitting room": ["A room in a private house used for general social and leisure activities."], "Sumerian": ["The language of ancient Sumer was spoken in Southern Mesopotamia from at least the 4th millennium BCE."], "Afrikaans": ["A West Germanic language spoken mainly in South Africa and Namibia."], "Neapolitan": ["The language spoken in the Campania and Calabria provinces of southern Italy."], "Albanian": ["An Indo-European language spoken primarily in Albania, Kosovo, Greece, Serbia, Montenegro, and the Republic of Macedonia.", "A person of Albanian nationality.", "Of or relating to Albania, Albanians, or the Albanian language."], "Russian": ["A woman from Russia.", "An East Slavic language spoken mainly in Russia and in the former Soviet republics.", "Of or relating to Russia, Russians, or the Russian language.", "A person of Russian nationality."], "Arabic": ["A Semitic language spoken primarily throughout the Arab world - North Africa and the Middle East - and as the liturgical language of the Islam.", "Of or relating to Saudia Arabia and surrounding Arab states, Arabs, or the Arabic language and alphabet."], "Azerbaijani": ["A Turkic language spoken primarily in Azerbaijan and parts of Iran."], "Azeri": ["A Turkic language spoken primarily in Azerbaijan and parts of Iran."], "Belarusian": ["An East Slavic language spoken mainly in Belarus.", "A person of Belarusian nationality.", "Of, from, or pertaining to Belarus, the Belarusian people or the Belarusian language."], "Belarusan": ["An East Slavic language spoken mainly in Belarus.", "A person of Belarusian nationality."], "Byelorussian": ["An East Slavic language spoken mainly in Belarus.", "A person of Belarusian nationality."], "Belorussian": ["An East Slavic language spoken mainly in Belarus.", "A person of Belarusian nationality."], "Bengali": ["An Indic language spoken mainly in Bangladesh and India.", "A variant of the Eastern Nagari script used for writing several languages of India."], "ladder": ["A frame usually portable, of wood, metal, or rope, for ascent and descent, consisting of two vertical side pieces to which are horizontally fastened cross strips or rounds forming steps."], "verb": ["A word that indicates an action or state; it commonly serves as part of the predicate in a sentence."], "drunk": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol.", "A person who is addicted to drinking alcohol excessively."], "adjective": ["A word that modifies or describes a noun or pronoun."], "Bosnian": ["A South Slavic language spoken by the Bosniaks, in Bosnia and Herzegovina, the region of Sand\u017eak, and elsewhere.", "Of or relating to Bosnia and Herzegovina, Bosnians, Bosniaks, or the Bosnian language.", "A person of Bosnian-Herzegovinian nationality."], "pan": ["A generic kitchen utensil used for cooking food by boiling, frying or other methods.", "To make a sweeping movement."], "Burmese": ["A Sino-Tibetan language spoken mainly in Myanmar."], "saucepan": ["A generic kitchen utensil used for cooking food by boiling, frying or other methods."], "Cantonese": ["One of the major dialect groups or languages of the Chinese language or language family, mainly spoken in parts of southern Mainland China.", "A Chinese language mainly spoken in the south-eastern part of Mainland China."], "Croatian": ["A South Slavic language spoken by the Croats, who mostly live in Croatia, Bosnia and Herzegovina and nearby countries.", "Of or relating to Croatia, Croats."], "Czech": ["A woman of Czech nationality.", "A male person of Czech nationality.", "A West Slavic language spoken mainly in the Czech Republic.", "A person of Czech nationality.", "Of or relating to Czech, Czechs, or the Czech language."], "Danish": ["A North Germanic language, spoken primarily in Denmark.", "Of or relating to Denmark, Danes, or the Danish language.", "A sweet pastry (a speciality of Denmark) popular throughout the industrialized world."], "Esperanto": ["A widely spoken constructed international language, initiated by L. L. Zamenhof."], "verbatim": ["In the exact same words."], "Estonian": ["A Finno-Ugric language spoken primarily in Estonia.", "A person of Estonian nationality.", "Of or relating to Estonia, Estonians, or the Estonian language.", "Member of Estonian ethnicity.", "A female person of Estonian nationality.", "Particularly female member of Estonian ethnicity."], "Finnish": ["A Finno-Ugric language spoken mainly in Finland.", "Of or relating to Finland, Finns or the Finnish language."], "Georgian": ["A South Caucasian language spoken mainly in the Republic of Georgia.", "Of or relating to the period in British history (1714-1830) between the reigns of George I and George V.", "A person from the Georgian period of British history.", "Of or relating to Georgia, the Georgian people, or the Georgian language.", "A person of Georgian nationality."], "Greek": ["An Indo-European language spoken primarily in Greece and Cyprus.", "A native or resident of Greece.", "Of or relating to Greece, the Greek people, or the Greek language."], "Hebrew": ["A Semitic language spoken mainly by Jewish communities in Israel and around the world.", "A follower of Judaism."], "rollercoaster": ["An amusement ride consisting of a buggy on a track that rises and falls and twists and turns."], "Hindi": ["An Indic language spoken mainly in Northern and Central India."], "Hungarian": ["A Finno-Ugric language spoken primarily in Hungary.", "A person of Hungarian nationality.", "Of or relating to Hungary, Hungarians, or the Hungarian language.", "An ethnic group primarily associated with Hungary."], "Flanders": ["A geographical region in the north of Belgium.", "The social, political and cultural community of the Flemings, which includes the people of French Flanders, Zeeuws-Vlaanderen and other groups of Flemish people around the world.", "The two Belgian provinces of West Flanders and East Flanders, usually viewed as a historically united County of Flanders.", "That one of the three communities established by the Belgian constitution that corresponds with the Flemish region."], "baste": ["To use needle and thread to temporarily and loosely join sections of fabric or cloth together, in order that they remain in place when fully and finally sewn together.", "To pour liquid such as fat or juice that have collected in the roasting tin back over the meat."], "Flemish region": ["A geographical region in the north of Belgium."], "Flemish Community": ["The social, political and cultural community of the Flemings, which includes the people of French Flanders, Zeeuws-Vlaanderen and other groups of Flemish people around the world.", "That one of the three communities established by the Belgian constitution that corresponds with the Flemish region."], "box": ["A generic manmade object with space in it (commonly made of cardboard or wood) that is used to keep and store many various different objects.", "A private area in a theater or grandstand where a small group can watch the performance.", "A predicament from which a skillful or graceful escape is impossible.", "To engage in a boxing match.", "To put into a box."], "exact": ["Without diversion from the desired or agreed specification; neither exceeding nor failling short in any way.", "Exactly right.", "To call for, demand, or require."], "circle": ["A two-dimensional, geometric shape that is made up of every point on a plane which is equidistant from the centre. May be drawn with a pair of compasses.", "Group of persons who have common ideas, interests or occupations.", "To move in circles."], "invent": ["To use the intellect to plan or design something.", "To make up something artificial or untrue."], "miss": ["An unmarried woman.", "A failure to hit.", "To need a number or amount of something, but not having enough or any at all.", "To feel regret or sadness because of the absence of a person.", "To fail to hit (a target, a bell, etc.)."], "sugar": ["A sweet crystalline or powdered substance, white when pure, consisting of sucrose obtained mainly from sugar cane and sugar beets and used in many foods, drinks, and medicines to improve their taste.", "Any of a series of carbohydrates that are used by organisms to store energy.", "To make something unpleasant seem less so.", "To sweeten with sugar."], "search": ["To attempt to find something or someone, within a specific region or area.", "To try to find something.", "To attempt to locate particular information on the Internet, usually with the aid of a Search Engine.", "To subject to a search."], "seek": ["To try to find something."], "plastered": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "week": ["A period of seven days."], "drunkard": ["A person who is addicted to drinking alcohol excessively."], "fold": ["To bend or lay a thin material (such as paper) over so that it comes in contact with itself.", "A angular or rounded shape in a thin material (such as paper) where the material abruptly changes direction, typically back toward itself.", "A group of people who adhere to a common faith and habitually attend a given church.", "To cease to operate or cause to cease operating (e.g. a business or a shop)."], "winter": ["Traditionally, the fourth of the seasons, marked by the applicable hemisphere of the planet being at its minimum angle of exposure to the Sun, resulting in short days, long nights and typically in low temperatures.", "To spend the winter (in a particular place).", "To store something to protect it during the winter."], "key": ["An object designed to be able to open (and usually close) a lock.", "Any of 24 major or minor diatonic scales that provide the tonal framework for a piece of music."], "introduce": ["To make something known by a formal announcement.", "To cause someone to be acquainted with someone else.", "To bring something into practice."], "article": ["A word, a type of determiner, that specifies or limits the following noun.", "A coherent collection of words and sentences, possibly containing opinion, in a newspaper, magazine, or journal."], "comb": ["A toothed implement for grooming the hair.", "A tuft of fur present on the head of certain birds.", "A fleshy growth on the top of the head of some birds.", "To groom the hair with a comb or a similar object."], "gentleman": ["A polite term referring to a man.", "A man of refinement or of higher class."], "rule": ["A specification of behavior used as an authoritative guide for conduct.", "To specify behavior as an authoritative guide for conduct.", "To exercise power or authority over a person, a group of persons, animals, territories or an organization.", "To emerge; to be visible or larger in number, quantity, power, status or importance.", "A plan of action intended to solve a problem.", "To decide with authority."], "regulate": ["To specify behavior as an authoritative guide for conduct.", "To dictate policy."], "guideline": ["A specification of behavior used as an authoritative guide for conduct."], "seat": ["Furniture (usually made of wood, metal or plastic) with a horizontal section that people are able or intended to sit upon.", "The horizontal section of a chair or other piece of furniture that is intended for people to sit upon.", "The section of a piece of clothing with separate spaces for legs (such as trousers or underwear) that covers the bottom of the person wearing it.", "To provide places or objects that people can sit on.", "The posture of a person riding a horse.", "An administrative or educational centre.", "The position of a political representative in the parliament or in the Senate.", "The fleshy part of the human body that one sits on.", "A backless seat for the rider of vehicles such as a bicycle, motorcycle, etc.", "A space reserved for sitting (as in a theater or on a train or airplane)."], "chair": ["An item of furniture comprising a seat, legs, back, and sometimes arm rests, on which or in which one people can sit.", "The presiding officer of a meeting, organization, committee, or other deliberative body."], "keep": ["The uninhabited main tower of a medieval castle which served as defense and status symbol.", "To retain possession of something.", "To maintain an action, state or condition without interruption.", "Highest and most fortified tower of a castle.", "Mantener algo encerrado de manera de impedir que se aleje.", "To remain in a certain state, position, or condition.", "To keep from happening or arising; make impossible.", "To conform one's action or practice to."], "force": ["The ability to cause significant change.", "In physics, a vector quantity that causes a body with mass to change its velocity.", "To impose urgently, importunately, or inexorably.", "To exert violence, or constraint upon or against a person in order to obtain something by physical, moral or intellectual means.", "To cause to move along the ground by pulling.", "An organised group of people that exerts power in order to maintain or take control over other people; such as a military force or a police force.", "A group of people organised to work on a common project, as a task force or a work force.", "To impose urgently, importunately, or inexorably.", "To do forcibly; to exert force on something."], "without": ["Not having, containing, characteristic of, etc.", "not being the case [negation of an adverbial clause]"], "welcome": ["A greeting used when someone arrives.", "To salute with kindness, as a newcomer; to bid welcome to; to greet upon arrival.", "To accept gladly.", "Giving pleasure or satisfaction or received with pleasure or freely granted.", "To receive someone, as into one's house."], "tonight": ["The nighttime pertaining to the current day or date.", "During the current day's nighttime."], "dangerous": ["Full of danger.", "Causing fear or anxiety by threatening great harm."], "risky": ["Full of danger."], "hazardous": ["Full of danger."], "perilous": ["Full of danger."], "activity": ["The state or quality of being active."], "chocolate": ["A rich foodstuff (made from cocoa, sugar and cocoa butter) that can be eaten on its own or made into other desserts.", "A small piece of chocolate, often as confectionery.", "Made of chocolate.", "Having the color of chocolate."], "lesson": ["A relatively short period of learning or teaching."], "length": ["The unit of measurement indicating the longest side of an object.", "The measurement of distance along the longest dimension of an object."], "potato": ["A tuberous plant, Solanum tuberosum, often eaten as a starchy vegetable, particularly in the Americas and Europe."], "something": ["An unspecified object."], "watch": ["A portable or wearable timepiece worn connected to a band around the wrist.", "To have one's eyes, one's attention on something or someone.", "To be vigilant, be on the lookout or be careful.", "To see or watch.", "To look attentively."], "body": ["The physical structure of a human or animal.", "A distinguishable object with set properties (in terms of classical physics), such as mass and (rotational) velocity.", "The physical structure of a dead animal or person.", "A colleection of persons that were assigend a specific task, most often for a predetermined time, or to be completed within a given time frame, that is to find or determine something, make decisions, or steer towards a settlement that other are looking for and/or are going to use."], "ruler": ["A flat, rectangular measuring or drawing instrument with on it graduations in units of measurement.", "One who leads and makes rules for a nation."], "complete": ["With everything included.", "To bring something to fulfilment.", "To finish; to make done; to reach the end."], "entire": ["With everything included.", "The totality of."], "total": ["With everything included."], "hammer": ["A tool with a heavy head and a handle used for pounding.", "A bone in the middle ear, in between the eardrum and the anvil.", "The part of a firearm that hits the back of the bullet and sets it off, firing the gun.", "To strike repeatedly with a hammer or some other implement.", "To create and mold by hammering."], "exercise": ["Any activity designed to develop or hone a skill or ability.", "Repetition of an activity to improve skill.", "To perform an activity designed to develop or hone a skill or ability; to learn by repetition.", "To do physical exercise to improve one's fitness.", "To do physical exercise.", "To carry out or practice; as of jobs and professions.", "To put to use (e.g. power or influence)."], "shoulder": ["One side of the top of the torso, where an arm attaches or joins.", "A part of a road used to stop on in emergencies."], "pike": ["Any carnivorous freshwater fish of the genus Esox.", "a long, stabbing weapon for thrusting or throwing, consisting of a wooden shaft to which a sharp-pointed head, as of iron or steel, is attached."], "Aalborg": ["Town in the West of Northern Jylland in Denmark."], "nine": ["The ninth natural number (9).", "The cardinal number occurring after eight and before ten, represented in Roman numerals as IX, in Arabic numerals as 9.", "The digit \"9\"."], "oil": ["Fat in a liquid form.", "To smear or soak with oil, as if by rubbing."], "Aabenraa": ["Town at the East Coast of Southern Jylland in Denmark"], "under": ["Lower in spatial position than."], "below": ["Lower in spatial position than."], "underneath": ["Lower in spatial position than."], "taxi": ["A vehicle that may be hired for single journeys by members of the public and driven by a taxi driver.", "To travel slowly (e.g. of airplane).", "To ride in a taxicab."], "expensive": ["Having a high price, cost.", "Being high in price, having high charges."], "remind": ["To bring to the remembrance of.", "To aid the memory or help somebody call something to memory."], "Icelandic": ["A North Germanic language spoken mainly in Iceland.", "Of or relating to Iceland, Iclanders, or the Icelandic language."], "Indonesian": ["An Austronesian language spoken mainly in Indonesia and East Timor.", "Originating from Indonesia."], "Rome": ["The capital of Italy.", "Largest city in Floyd County, Georgia, United States.", "A province in the Lazio region of Italy."], "Naples": ["Capital of the region Campania in the South of Italy.", "A province in the Campania region of Italy."], "Irish": ["A Celtic language spoken primarily in Ireland.", "Of or relating to Ireland, the Irish people, or the Irish language.", "A person of Irish nationality."], "Moscow": ["The capital and largest city of Russia.", "A federal subject of Russia (an oblast) officially established on January 14, 1929. It is the second most populous Russian federal subject after the city of Moscow."], "Arb\u00ebresh\u00eb Albanian": ["A dying Albanian dialect or language spoken by the Arb\u00ebresh\u00eb people, a minority in the south of Italy and Sicily."], "Arb\u00ebresh": ["A dying Albanian dialect or language spoken by the Arb\u00ebresh\u00eb people, a minority in the south of Italy and Sicily."], "Arb\u00ebrishte": ["A dying Albanian dialect or language spoken by the Arb\u00ebresh\u00eb people, a minority in the south of Italy and Sicily."], "Arb\u00ebrisht": ["A dying Albanian dialect or language spoken by the Arb\u00ebresh\u00eb people, a minority in the south of Italy and Sicily."], "Arb\u00ebresh\u00eb": ["A dying Albanian dialect or language spoken by the Arb\u00ebresh\u00eb people, a minority in the south of Italy and Sicily."], "Afar": ["An Afro-Asiatic language spoken mainly in Ethiopia, Eritrea and Djibouti.", "An ethnic group who reside principally in the Danakil Desert in the Afar Region of Ethiopia and in Eritrea and Djibouti."], "Arvanitic": ["An Albanian dialect or language spoken by the Arvanites, a population group in Greece."], "Arvanitika": ["An Albanian dialect or language spoken by the Arvanites, a population group in Greece."], "Luino": ["A small town in the province of Varese, Lombardy, northern Italy, near the border with Switzerland on the eastern shore of Lake Maggiore."], "Abkhaz": ["A North Caucasian language spoken mainly in Abkhazia.", "Of or pertaining to Abakhazia, the Abkhaz people, or the Abkhaz language.", "A Caucasian people, mainly living in Abkhazia."], "Abkhazian": ["A North Caucasian language spoken mainly in Abkhazia.", "Of or pertaining to Abakhazia, the Abkhaz people, or the Abkhaz language."], "Ainu": ["A language spoken by the Ainu ethnic group on the northern Japanese island of Hokkaido.", "An ethnic group native to Hokkaido, northern Honshu, Sakhalin and the Kuril Islands. An ethnic minority in Japan. Today, about 27.000 Japanese citizens define themselves as Ainu.", "A member of the Ainu ethnic group.", "A language of China."], "Akan": ["A language family of West-African languages.", "A language within the Akan language family, spoken mainly in Ghana."], "celebrity": ["A noteworthy or popular person, often a performer or athlete.", "The state or quality of having a positive reputation."], "Gheg": ["An Albanian language, spoken mainly in the northern parts of Albania and the surrounding regions."], "Geg": ["An Albanian language, spoken mainly in the northern parts of Albania and the surrounding regions."], "Gheg Albanian": ["An Albanian language, spoken mainly in the northern parts of Albania and the surrounding regions."], "Japanese": ["A language spoken mainly in Japan.", "Originating from Japan.", "A person from Japan, or of Japanese ancestry.", "Of or relating to Japan."], "Kazakh": ["A Turkic language spoken mainly in Kazakhstan.", "Of or relating to Kazakhstan, Kazakhs, or the Kazakh language.", "A person of Kazakh nationality."], "Korean": ["A language spoken mainly in North and South Korea.", "A person from Korea, or of Korean ancestry", "Of or relating to Corea, Coreans or the Corean language."], "rotate": ["To position by moving an object around its axis."], "spin": ["To position by moving an object around its axis.", "To make (yarn) by drawing out, twisting, and winding natural fibers."], "flip": ["To position by moving an object around its axis."], "orgasm": ["To reach a sexual climax; to experience orgasm.", "The moment of most intense feeling and pleasure during sexual activity."], "Kurdish": ["A group of Indo-Iranian languages spoken by the Kurds, who live mainly in Iraq, Turkey, Syria, Lebanon and Iran."], "Latin": ["An Indo-European language originally spoken only in the region immediately surrounding the city of Rome, later throughout the Roman Empire, and as a result of the Roman legacy, by the Catholic and academic world in the Middle Ages and afterwards.", "An alphabetic writing system with 26 letters used with some modifications, in most of the languages of the European Union, America, Subsaharian Africa and the Islands of the Pacific Ocean.", "Of or relating to the script of the language spoken in ancient Rome and many modern alphabets.", "Of or relating to the language spoken in ancient Rome.", "Of or from Latin America or of Latin American culture.", "Of or relating to ancient Rome or its Empire.", "Of or pertaining to peoples who use languages derived from Latin."], "Latvian": ["A Baltic language spoken primarily in Latvia.", "A person of Latvian nationality.", "Of or relating to Latvia, Latvians, or the Latvian language."], "Lithuanian": ["A Baltic language spoken mainly in Lithuania.", "A person of Lithuanian nationality.", "Of or relating to Lithuania, Lithuanians, or the Lithuanian language."], "Macedonian": ["A South Slavic language spoken primarily in the Republic of Macedonia and the surrounding regions.", "A person of Macedonian nationality.", "Of or relating to Macedonia, Macedonians, or the Macedonian language.", "A dialect of the modern Greek language.", "The southwestern dialects of the Bulgarian language."], "Maltese": ["A Semitic language spoken mainly on Malta."], "home": ["A group of persons sharing a home or living space, who aggregate and share their incomes, as evidenced by the fact that they regularly take meals together.", "The abode of a human being, their place of residence.", "One\u2019s own dwelling place; the house or structure in which one lives; especially the house in which one lives with his family.", "To the own house or to the own domicile.", "An environment offering affection and security.", "Area where you are and feel at home and in which you are comfortable; usually, but not neccesssarily, the area in which you grow up.", "The place where something began and flourished.", "Relating to or being where one lives or where one's roots are."], "rat": ["Any of numerous small rodents of the genera ''rattus'', ''mus'', or various other related genera of the ''Murid\u00e6'' family characterised by a long hairless tail, rounded ears, and a pointed nose.", "A nearly omnivorous rodent of the genus ''rattus'' characterised by a long hairless tail, rounded ears, and a pointed nose."], "Mongolian": ["The best-known language in the family of Mongolic languages, primarily spoken in Mongolia.", "The primary language of most of the residents of Mongolia.", "The official language of Mongolia, also spoken in Russia.", "A person who originated from or is a citizen of Mongolia."], "Nepali": ["An Indic language spoken in Nepal, Bhutan, and some parts of India and Myanmar."], "mouse": ["Any of numerous small rodents of the genera ''rattus'', ''mus'', or various other related genera of the ''Murid\u00e6'' family characterised by a long hairless tail, rounded ears, and a pointed nose.", "A computer input device which when moved over a flat surface moves a cursor in the X and Y axes of a GUI and has one or more buttons for clicking on GUI elements such as buttons.", "Any of numerous small rodents of the genus ''mus'' or various related genera of the ''Murid\u00e6'' family characterised by a long hairless tail, rounded ears, and a pointed nose."], "Norwegian": ["A North Germanic language spoken in Norway.", "A person from Norway.", "Of or relating to Norway, Norwegians, or the Norwegian language."], "Persian": ["An Indo-European language spoken mainly in Iran.", "Of or relating to Iran, Iranians, or the Persian language.", "A person of Iranian nationality or of Iranian descent.", "A thing, animal or person that is associated with Persia, its habits, culture, territory, language, etc."], "Polish": ["A West Slavic language spoken primarily in Poland.", "Of or relating to Poland, Poles, or the Polish language."], "Romanian": ["A Romance language spoken mainly in Romania, Moldova, and Vojvodina.", "A citizen of Romania or someone who is of Romanian origin.", "Of or relating to Romania, Romanians or the Romanian language."], "Serbian": ["A South Slavic language spoken mainly in Serbia, Montenegro, Bosnia and Herzegovina and by Serbs everywhere.", "Of or relating to Serbia, Serbs, or the Serbian language."], "condition": ["A logical state that a conditional statement uses. It can either be true or false.", "Position or status with regard to conditions and circumstances.", "The condition in which someone or something is in.", "Something that is stated as a condition for an agreement.", "The state of any object, referring to the amount of its wear.", "The health status of a medical patient.", "To subject to different conditions, especially as an exercise.", "To undergo the process of acclimation.", "To shape the behaviour of someone to do something.", "To develop behaviour by instruction and practice."], "die": ["To cease to live.", "An object with many (usually 6) faces, each with a different value, that is used in many games to randomly select a number."], "happy": ["Having a feeling of satisfaction, enjoyment or well-being, often arising from a positive situation or set of circumstances.", "In a state of satisfaction."], "grandmother": ["The mother of one of someone's parents."], "juice": ["The liquid that is produced by squeezing or crushing fruits or vegetables.", "To obtain the liquid from fruit or other plants by crushing or squeezing.", "The juice obtained by squeezing, crushing or centrifuging fruit.", "The liquid part or moisture of an animal body or substance."], "Slovak": ["A woman of Slovak nationality.", "A male person of Slovak nationality.", "A West Slavic language spoken primarily in Slovakia.", "Of or relating to Slovakia, Slovaks, or the Slovak language.", "A person of Slovak nationality."], "jelly": ["A sweet, gelatinous substance (made from fruit juice, sugar and pectin) that is commonly spread on bread and toast.", "A sweet, gelatinous dessert (made from fruit juice, sugar and gelatin) that is popular with children."], "coach": ["A large, long-bodied motor vehicle equipped with seating for passengers, usually operating as part of a scheduled service.", "Someone who trains athletes.", "The lowest and cheapest class of accommodation on a public transport.", "To act as a trainer or coach (to), as in sports."], "Slovenian": ["A South Slavic language mainly spoken in Slovenia.", "A person of Slovenian nationality.", "Of or relating to Slovenia, Slovenians, or the Slovenian language."], "Basque": ["A language spoken mainly in the Basque Country.", "Of or pertaining to the Basque Country, the Basque people.", "Of the Basque language."], "goat": ["A common four-legged animal (Capra) that is related to sheep and bred by humans for its coat and milk.", "A female of a common four-legged animal (Capra) that is related to sheep and bred by humans for its coat and milk."], "chopstick": ["A utensil in the form of a narrow stick used in pairs in China, Japan, Korea, and Vietnam to eat food."], "saliva": ["A secretion from the salivary glands (found in the mouth) that can be spat out."], "g'day": ["An informal greeting used by Australians."], "story": ["A coherent collection of words and sentences, possibly containing opinion, in a newspaper, magazine, or journal.", "A retelling of real or fictive events.", "A television serial about the lives of melodramatic characters, which are often filled with strong emotions, highly dramatic situations and suspense."], "report": ["A coherent collection of words and sentences, possibly containing opinion, in a newspaper, magazine, or journal.", "To give an account or representation in words.", "To communicate to someone else something that we know."], "sperm": ["Men's semen."], "ejaculate": ["To ejaculate semen."], "spoof": ["Men's semen."], "cum": ["Men's semen."], "sprog": ["Men's semen."], "jism": ["Men's semen."], "jizz": ["Men's semen."], "spunk": ["Men's semen."], "flies": ["The zipper or set of buttons at the front of a pair of trousers."], "baguette": ["A type of elongated french bread with a hard, crispy crust."], "wand": ["A magical stick used in the casting of spells."], "the": ["The feminine definite article.", "Nominative singular masculine of the definite article.", "Nominative singular neuter of the definite article.", "The feminine plural definite article.", "The male singular definite article.", "The male plural definite article.", "Feminine definite article nominative singular", "Definite article nominative plural", "Feminine definite article accusative singular", "Definite article accusative plural", "Accusative singular neuter of the definite article.", "The definite article.", "The feminine singular definite article.", "The masculine singular definite article.", "The masculine plural definite article."], "dice": ["An object with many (usually 6) faces, each with a different value, that is used in many games to randomly select a number."], "expire": ["To cease to live.", "To lose validity, to cease to exist."], "pass away": ["To cease to live."], "granny": ["The mother of one of someone's parents."], "grandma": ["The mother of one of someone's parents."], "restroom": ["A room containing a bath or shower and usually a washbasin and toilet"], "loma": ["A natural elevation of the land surface, usually rounded."], "colina": ["A natural elevation of the land surface, usually rounded."], "Swedish": ["A North Germanic language spoken primarily in Sweden and parts of Finland.", "Of or relating to Sweden, Swedes, or the Swedish language."], "goatee": ["A beard trimmed to grow only at the center of the chin."], "buck-goat": ["A male goat."], "billy-goat": ["A male goat."], "Slovene": ["A South Slavic language mainly spoken in Slovenia.", "A person of Slovenian nationality."], "glider": ["An aircraft with fixed wings, but no engine."], "Zulu": ["A Niger-Congo language spoken primarily by the Zulu people in southern Africa.", "The largest South African ethnic group of an estimated 10-11 million people who live mainly in the province of KwaZulu-Natal, South Africa."], "receptacle": ["A generic item with the main purpose of containing or holding a substance or other object.", "The section of the plant's stem or stalk to which the flower is attached.", "A wall-mounted power socket."], "torus": ["The section of the plant's stem or stalk to which the flower is attached."], "compass": ["A magnetic or electronic device used to determine the cardinal directions (usually magnetic north).", "A technical drawing instrument that can be used for inscribing circles or arcs.", "Navigational instrument that indicates the cardinal directions on the Earth.", "To get the meaning of something.", "The limit of capability."], "Yiddish": ["A Germanic language spoken by three to four million people throughout the world, predominantly Ashkenazi Jews."], "Xhosa": ["A Niger-Congo language spoken predominantly in South Africa.", "A group of peoples of Bantu origins living in South Africa."], "Welsh": ["A Celtic language spoken natively in Wales."], "Vietnamese": ["An Austro-Asiatic language spoken primarily in Vietnam.", "Of or relating to Vietnam, the Vietnamese people, or the Vietnamese language.", "A person of Vietnamese nationality."], "Urdu": ["An Indic language spoken mainly in India and Pakistan."], "Ukrainian": ["An East Slavic language spoken mainly in Ukraine.", "A person of Ukrainian nationality.", "Of or relating to Ukraine, Ukrainians, or the Ukrainian language."], "Turkish": ["A Turkic language spoken primarily in Turkey, Cyprus, and other countries of the former Ottoman Empire.", "Of or relating to Turkey, Turks, or the Turkish language."], "Turkic": ["A language family spoken across an area from Eastern Europe to Siberia and Western China, separated into Common Turkic and Bolgar Turkic, traditionally considered to be part of the Altaic language family.", "ISO 639-6 entity"], "Tamil": ["A Dravidian language spoken predominantly by Tamils in India, Sri Lanka, Malaysia and Singapore.", "A person of the Tamil population group.", "A Vatteluttu script that is used to write the Tamil language."], "Swahili": ["A group of two languages widely spoken in East Africa.", "One of two languages that is spoken a lot in East Africa."], "Sorbian": ["A group of West Slavic languages spoken in Lusatia."], "king": ["A male member of a Royal Family and supreme ruler of his nation.", "The principal playing piece in chess, which moves only one square per move (except in castling) and in all eight directions. When one's king is in \"checkmate\", the game is won by the opposing player.", "A playing card with a picture of a king on its face; the 13th card in a given suit."], "chin": ["A rabbit-sized, crepuscular rodents native to the Andes mountains in South America.", "The bottom of the face, below the mouth."], "rooster": ["A male chicken (Gallus gallus domesticus), a domestic bird."], "shape": ["The appearance of something, especially its outline.", "External aspect or form of something.", "To create something, usually for a specific function."], "reflect": ["To actively and consciously use one's mental powers, usually to form ideas.", "To give evidence of the quality of.", "To return a smooth, shiny surface, the image of a body."], "hen": ["A female chicken."], "ten": ["The cardinal number occurring after nine and before eleven, represented in Roman numerals as X, in Arabic numerals as 10, and in the hexadecimal system (base 16) as A.", "The tenth natural number (10)"], "K\u00f6lsch": ["Local language being used in the city of Cologne in Germany and close about.", "A type of beer brewed exclusively in the German city of Cologne and the surrounding area.", "Of, or pertaining to, the city of Cologne in western Germany in Europe."], "famous": ["Well or widely known."], "foreign": ["From a different country.", "Not belonging to that in which it is contained; introduced from an outside source."], "consider": ["To reckon as being possible in the future.", "To have as an opinion.", "To think about seriously.", "To have an opinion on something or someone."], "stupid": ["Lacking in intelligence.", "Marked by lack of intellectual acuity or somewhat mentally limited."], "run": ["To move quickly by alternately making a short jump off of either foot.", "To perform an action, as in executing a program or a command.", "To develop in a direction.", "To flee; to take to one's heels; to cut and run.", "To direct or control (e.g. projects, businesses, etc.).", "To move along, of liquids.", "To compete in a race."], "believe": ["To have as opinion, belief, or idea.", "To be confident about something.", "To give something for certain although unproven by science; to have faith.", "To consider what someone is telling as being the truth; to accept as or take to be true."], "contemplate": ["To actively and consciously use one's mental powers, usually to form ideas.", "To reckon as being possible in the future.", "To think intently and at length, as for spiritual purposes.", "To look at thoughtfully; to observe deep in thought."], "seem": ["To have a given outward appearance."], "appear": ["To have a given outward appearance.", "To come into sight or view."], "sock": ["A knitted or woven covering for the foot, reaching no higher than just above the ankle."], "forget": ["To lose memory of something."], "wine": ["An alcoholic beverage made by fermenting juice of grapes."], "team": ["A group of people involved in the same activity.", "Set of things or people between which exists cohesion or agreement.", "Two or more draft animals that work together to pull something."], "wire": ["Metal formed into a thin, even thread, now usually by being passed between grooved rollers, or drawn through holes in a plate of steel.", "To send a message by telegraph."], "meal": ["Food that is prepared and eaten, usually at a specific time.", "Ground or milled grain or cereal."], "knock": ["To make a sound by striking one's knuckles against something.", "To knock, especially a door, in order to ask for someone to open it, and, thus, to be able to go inside.", "To express negative criticism.", "To deliver a sharp blow or push.", "A vigorous blow.", "The sound of knocking (as on a door or in an engine or bearing)."], "someone": ["An unspecified person.", "A human being."], "somebody": ["An unspecified person.", "A human being."], "forgive": ["To stop blaming someone for an offense."], "excuse": ["To stop blaming someone for an offense."], "pardon": ["To stop blaming someone for an offense.", "An interjection that indicates that a person doesn't understand and invites the other person to repeat it.", "A warrant granting release from punishment for an offence."], "large": ["Of a great size; the weakest sense of great size.", "(for abstract matters) of larger than normal size.", "More than enough in size or scope or capacity."], "last": ["After all the others.", "To endure, continue over time.", "Most recent."], "some one": ["An unspecified person."], "little": ["Small quantity."], "ultimate": ["After all the others."], "datum": ["A piece of information."], "info": ["All facts, ideas or imaginative works of the mind which have been communicated, published or distributed formally or informally in any format, or the knowledge that is communicated or received."], "central": ["Being in the centre."], "comfortable": ["Providing comfort."], "agreeable": ["Providing comfort."], "bowl": ["A roughly hemispherical container used to hold, mix or present food, such as salad, fruit or soup, or other items.", "To engage in the sport of bowling.", "A large structure for open-air sports or entertainments."], "comfy": ["Providing comfort."], "hemispherical": ["Of or relating to or being half of a sphere."], "branch": ["A separation of a river, a road, etcetera.", "A woody part of a tree arising from the trunk and usually dividing.", "A part of an object (usually rigid and relatively long) that extends from the centre or main section.", "A division of some larger or more complex organization.", "To divide into two or more branches so as to form a fork, starting from a common point."], "fun": ["A source of amusement, enjoyment or pleasure."], "hungry": ["Desirous of food; having a physical need for food."], "example": ["Something that is representative of all such things in a group; an occurrence of something.", "An item of information that is representative of a type or class.", "A typical example or instance."], "fever": ["A higher than normal temperature of a person (or generally a mammal)."], "nature": ["The set of all natural systems, including the air, land, water, and living things other than humans.", "Everything not created by man."], "sudden": ["Happening quickly and with little or no warning."], "sword": ["A long-bladed weapon that has a handle (and sometimes a hilt) and is designed to stab, cut or slash."], "usual": ["Which most commonly occurs.", "According to or depending on custom."], "corpus": ["A collection of writings."], "understand": ["To be aware of the meaning of.", "To get the meaning of something.", "To believe, based on information.", "To impute meaning, character etc. that is not explicitly stated."], "surroundings": ["The complex of physical, chemical, and biotic factors that surround and act upon a specific organism or upon a specific group of organisms.", "The area or region around something; that which surrounds; the vicinity."], "free": ["Obtainable without payment.", "Able to act without restriction.", "To give freedom; to release from confinement or restraint.", "Completely wanting or lacking.", "To relieve from.", "To grant relief or an exemption from a rule or requirement to.", "To free from obligations or duties.", "Not taken up by previously scheduled activities.", "Unconstrained, not chemically bound or capable of unrestricted motion."], "spring": ["A place where ground water flows naturally from a rock or the soil onto the land surface or into a body of surface water.", "Traditionally the first of the four seasons, the season of growth with an ever increasing amount of daytime.", "A mechanical device made of flexible material that exerts force when it is bent.", "A place where water emerges from the ground.", "To spring away from an impact."], "veer": ["To change direction of movement."], "niche": ["The relational position of a species or population in an ecosystem."], "indicator species": ["A species that provides unique an environmental indicator that offer a signal of the biological condition in an ecosystem."], "hypoxia": ["A phenomenon that occurs in aquatic environments as dissolved oxygen becomes reduced in concentration to a point detrimental to aquatic organisms living in the system.", "The reduction of oxygen in tissues below levels which are considered to be normal."], "credit card": ["A plastic card, with a magnetic strip or an embedded microchip, connected to a credit account and used to buy goods or services."], "dead zone": ["Hypoxic (low-oxygen) area in the world's oceans."], "basket": ["A lightweight container, generally round, open at the top, and tapering toward the bottom.", "A preassembled group of securities. Baskets allow individual investors to acquire a group of securities with a single trade while paying one commission."], "dream": ["Imaginary events seen in the mind while sleeping.", "An event imagined in the mind and which is hoped to be realised.", "To experience while sleeping.", "To have a daydream; to indulge in a fantasy."], "event": ["An occurrence of social or personal importance.", "Something that happens or has happened.", "Condition that which follows something on which it depends."], "front": ["The side or end of something that faces the direction it normally moves; the side of an object which usually faces the viewer.", "The line of contact of two opposing forces.", "The line of contact of air masses of different temperatures due varying density.", "To be oriented in a certain direction; to be opposite to."], "sneaker": ["An athletic shoe with a soft, rubber sole.", "One who sneaks."], "basketball": ["A sport in which two opposing teams of five players strive to throw a ball through a hoop."], "private": ["Not done in the view of or with the possibility of disturbance by others.", "The lowest rank of the army."], "soldier": ["The lowest rank of the army.", "A person who is actively engaged in battle, conflict or warfare."], "card": ["A flat, normally rectangular piece of stiff paper, plastic etc.", "An amusing person.", "A device to raise the nap on a fabric.", "A machine for disentagling the fibres of wool prior to spinning.", "A tabular presentation of the key statistics of an innings or match: batsmen's scores and how they were dismissed, extras, total score and bowling figures.", "To check IDs at a venue with a minimum age requirement to determine whether he or she is old enough to consume liquor.", "(Fabric) To use a card device or machine to separate the fibers of a fabric.", "A printed circuit that can be inserted into expansion slots in a computer to increase the computer's capabilities.", "Each one of the pieces in the playing deck used in social games such as Gin Rummy or Poker."], "substance": ["A piece of physical matter or material.", "The choicest, most essential or most vital part."], "substantie": ["A piece of physical matter or material."], "sometimes": ["On certain occasions, or in certain circumstances, but not always."], "surprise": ["Something unexpected.", "The feeling that something unexpected has happened.", "To cause someone to feel surprise.", "To discover unexpectedly."], "twice": ["Two times."], "soup": ["A cooked, liquid dish (made from meat or vegetables that are mixed with broth in a pot) that is often sold in tins."], "prevent": ["To avoid the occurrence of an event; to stop from doing something or being in a certain state.", "To keep from happening or arising; make impossible."], "female": ["An adult human member of the sex that produces ova and bears young.", "A member of the sex which is generally characterized as the one associated with the larger gametes (for species which have two sexes and for which this distinction can be made).", "Of, relating to, or denoting the sex which is generally characterized as the one associated with the larger gametes (for species which have two sexes and for which this distinction can be made).", "The sex which is generally characterized as the one associated with the larger gametes (for species which have two sexes and for which this distinction can be made).", "Having an internal socket, as in a connector or pipe fitting.", "The female grammatical gender of words."], "male": ["A member of the sex that begets young by fertilizing ova.", "Of, relating to, or denoting a member of the sex that begets young by fertilizing ova.", "An adult human member of the sex that begets young by fertilizing ova.", "The sex, the members of which beget young by fertilizing ova.", "(of a plug) Having pins that can be inserted into a matching socket to make an electrical connection."], "blue": ["The pure color of a clear sky; the primary color between green and violet in the visible spectrum, an effect of light with a wavelength between 450 and 500 nm.", "Low in spirits.", "Having the pure color of a clear sky; the primary color between green and violet in the visible spectrum, an effect of light with a wavelength between 450 and 500 nm.", "Making despondent or depressive."], "together": ["At the same time.", "In contact with each other or in proximity.", "With cooperation and interchange.", "Assembled in one place.", "Mentally and emotionally stable.", "With a common plan."], "yolk": ["The yellow, spherical part of an egg that is surrounded by the white albumen, and serves as nutriment for the growing young."], "start": ["The beginning of an activity or event.", "To begin an activity.", "To take the first step or steps in carrying out an action.", "To have a beginning, in a temporal, spatial, or evaluative sense.", "To set in motion, cause to start.", "To initiate the engine of a vehicle."], "similar": ["Having some particular qualities or characteristics in common, but not all of them."], "alike": ["Having some particular qualities or characteristics in common, but not all of them.", "In the same manner."], "tennis": ["A sport played by either two or four players with strung raquets, a 2-1/2\" (6.4 centimetres) ball, and a net approximately 3 feet high on a clay, grass, or cement court."], "money": ["An unspecified amount in a currency."], "heat wave": ["A period of unusually hot weather."], "face": ["The front part of the head, featuring the eyes, nose, and mouth and the surrounding area.", "The part of an animal or human that consists of the chin, the mouth and the main sensory organs.", "To deal with (something unpleasant) head on.", "To oppose, as in hostility or a competition.", "To be oriented in a certain direction; to be opposite to.", "To present somebody with something, e.g. to accuse or criticize."], "game": ["Wild animals, including birds and fish, hunted for sport, food or profit.", "An amusement or pastime; diversion.\\n(Source: CED)", "A pursuit or activity with rules performed either alone or with others, for the purpose of entertainment.", "The flesh of wild animals that is consumed as food."], "probably": ["In all likelihood; in a probable manner"], "pretty": ["Pleasant in sight.", "Pleasing or appealing to the senses.", "Pleasant to look at, especially as conforming to ideals of form and proportion."], "army": ["A large, military force concerned mainly with ground operations.", "A large number of people united for some specific purpose."], "about": ["In concern with; engaged in; intent on.", "Outside or on every side of.", "In the immediate neighbourhood of.", "Over or upon different parts of; through or over in various directions; back and forth in.", "[Said for a quantity (time, size, place, ...) that is given] in a imprecise way but close to the real value.", "On the point or verge of.", "[Expression of relation or connection.]", "In possession of.", "Around the outside.", "So as to face in the opposite direction."], "modern": ["Pertaining to the current time and style.", "Belonging to the present time.", "Actual, fashionable, up to date."], "mind": ["To have an unwanted negative influence on someone, to be distractive to or for someone, impress someone or something in a troublesome or uneasy way.", "The ability for rational thought.", "To perceive with the ear (paying attention to what is heard).", "To be in charge of or deal with.", "To be cautious, wary or careful; to be alert to.", "The complex of cognitive faculties, mostly characteristic of human beings, that enables consciousness, thinking, reasoning, perception, and judgement.", "To be offended or bothered by; take offense with.", "To be worried or concerned with or about something or somebody.", "To keep in mind."], "wit": ["The ability for rational thought."], "reason": ["The ability for rational thought.", "To exercise the rational faculty; to deduce inferences from premises; to perform the process of deduction or of induction; to ratiocinate; to reach conclusions by a systematic comparison of facts.", "A fact that logically justifies some premise or conclusion.", "A justification for something existing or happening."], "intellect": ["The ability for rational thought."], "lazy": ["Unwilling to do work or make an effort."], "heaven": ["Outer space visible from the Earth's surface, infinitely extending above us and\\nlimited by the horizon.", "The paradise of the afterlife in certain religions."], "correct": ["Without diversion from the desired or agreed specification; neither exceeding nor failling short in any way.", "That are in accordance with fact.", "To remove errors.", "To adapt something; to alter or regulate so as to achieve accuracy or conform to a standard."], "gun": ["A bullet firing weapon."], "pistol": ["A handgun, typically with a semi-automatic action and a clip magazine."], "gate": ["Total admission receipts at a sports event.", "A computer circuit with several inputs but only one output that can be activated by particular combinations of inputs.", "To supply with a gate.", "A passageway (as in an air terminal) where passengers can embark or disembark.", "To restrict (school boys') movement to the dormitory or campus as a means of punishment.", "To control with a valve or other device that functions like a gate.", "A moveable barrier that can be closed or open to control access to a building, a room, a car, an area, etc."], "structure": ["The whole of the different elements of a company organ.", "Something built up of distinct parts.", "To give structure to."], "restaurant": ["An establishment in which diners are served food at their tables."], "brave": ["Having or displaying courage.", "A male person having or displaying courage.", "A female person having or displaying courage.", "Strong in the face of fear.", "Having or characterized by courage.", "Not being daunted or intimidated."], "cheese": ["A curdled or cultured milk product."], "NGO": ["A non-profit group or association that acts outside of institutionalized political structures and pursues matters of interest to its members by lobbying, persuasion, or direct action."], "same": ["Having some particular qualities or characteristics in common, but not all of them.", "Having a specified quality that another has.", "Bearing full likeness by having precisely the same set of characteristics.", "Not different or other.", "[Used to express the unity of an object or person which has various different descriptions or qualities.]", "[A reply of confirmation of identity.]"], "Franco-Proven\u00e7al": ["Language spoken in France, near the Italian and Swiss borders. Also spoken in Italy and Switzerland."], "Patois": ["Language spoken in France, near the Italian and Swiss borders. Also spoken in Italy and Switzerland."], "Arpitan": ["Language spoken in France, near the Italian and Swiss borders. Also spoken in Italy and Switzerland."], "identical": ["Having some particular qualities or characteristics in common, but not all of them.", "Having a specified quality that another has.", "Bearing full likeness by having precisely the same set of characteristics.", "Not different or other.", "Of twins, sharing the same genetic code.", "Exactly equivalent.", "Approximating or approaching exact equivalence."], "equal": ["Having a specified quality that another has.", "One of the same age, rank, ability etc.", "To be the same in amount, value, size etc.", "To be equal to in quality or ability."], "sell": ["To provide goods or services in exchange for money."], "helicopter": ["An aircraft without wings that obtains its lift from the rotation of overhead blades."], "propellor": ["A mechanical device, with shaped blades that turn on a shaft, to push against air or water, especially one used for propelling an aircraft or boat."], "aileron": ["Hinged part on trailing edge of an airplane wing. Used to rotate the airplane about the longitudinal axis."], "neuron": ["A cell of the nervous system, which conducts nerve impulses; consisting of an axon and several dendrites. Neurons are connected by synapses"], "neurone": ["A cell of the nervous system, which conducts nerve impulses; consisting of an axon and several dendrites. Neurons are connected by synapses"], "nerve cell": ["A cell of the nervous system, which conducts nerve impulses; consisting of an axon and several dendrites. Neurons are connected by synapses"], "neurocyte": ["A cell of the nervous system, which conducts nerve impulses; consisting of an axon and several dendrites. Neurons are connected by synapses"], "Swadesh list": ["A list of basic vocabulary of a given language, developed by the linguist Morris Swadesh."], "fuselage": ["The part of an aerospace vehicle without the wings and stabiliser."], "airfield": ["A place where airplanes can take off and land but unlike an airport must not necessarily have terminals or paved runways."], "tie": ["To connect one or more pieces of flexible material to each other using only those materials.", "A long, thin piece of material that is tied around a person's neck (underneath their collar) to make them look smarter, politer or more successful.", "The result of a game in which neither side has won.", "To establish connection between two or more things.", "To confine by any ligature.", "To form a knot or bow in."], "nerve": ["A bundle of neurons with their connective tissue sheaths, blood vessels, and lymphatics."], "neurite": ["A projection from the soma of a neuron."], "dendrite": ["A branched projection from the soma of a neuron which conducts electrical stimulation received from other cells."], "axon": ["A long, slender projection of a neuron that conducts electrical impulses away from the soma."], "and": ["Used to connect two homogeneous words or phrases.", "Used at the end of a list to indicate the last item.", "Used to join sentences or sentence fragments in chronological order.", "Used to indicate causation."], "as well as": ["Used to connect two homogeneous words or phrases."], "together with": ["Used to connect two homogeneous words or phrases."], "in addition to": ["Used to connect two homogeneous words or phrases."], "are": ["The first-person plural of the present indicative of to be.", "The second-person singular of the present indicative of to be.", "The second-person plural of the present indicative of to be.", "The third-person plural of the present indicative of to be.", "Area measure, 1 square decametre or 1 dam\u00b2 or 100 m\u00b2", "The second-person singular of the present indicative of to be.", "The second-person singular of the present indicative of to be.", "The third-person plural of the present indicative of to be.", "The third-person plural of the present indicative of to be.", "The first-person plural of the present indicative of to be.", "The first-person plural of the present indicative of to be.", "The second-person plural of the present indicative of to be.", "The second-person plural of the present indicative of to be."], "as": ["To the same extent or degree.", "at the intensity or degree that", "At the same time that.", "Varying through time in the same proportion that.", "Considering that.", "[Introducing a basis of comparison, after 'as', 'so', or a comparison of equality.]"], "be": ["To occupy a place.", "To occur, to take place.", "To have existence.", "[Used to form the passive voice. (Indicates that the subject undergoes the action.)]", "[Used to form the subjunctive mode.]", "[Connects a noun to an adjective describing a transient characteristic of it.]", "[Connects a noun to an adjective describing an essential characteristic of it.]", "[Connects an expression, noun, or noun phrase to another expression, noun, or noun phrase describing that their meanings are essentialy the same.]", "To have or occupy a given position or time point.", "[used to indicate a period associated with an activity or process]", "[Used to indicate that the values on either side of an equation are the same.]", "[Used to indicate that the subject has the qualities described by a noun or noun phrase.]", "[Used to form the continuous forms of various tenses.]", "[Used to link a subject to a count or measurement.]", "[(With since) used to indicate passage of time since the occurrence of an event.]", "[(Often impersonal) Used to indicate weather, air quality, or the like.]", "To continue or remain as before.", "To have the age specified.", "To act the part of (a character) in a film or play.", "To constitute a group of (a specified number).", "To have the indicated price."], "but": ["not being the case [negation of an adverbial clause]", "Nothing more than.", "Except (for); excluding.", "[Phrase implying that the following clause is contrary to prior belief]."], "except": ["To exclude; to specify as being an exception."], "cannot": ["Can not; am/is/are unable to."], "can't": ["Can not; am/is/are unable to."], "can": ["A room or building equipped with one or more toilets.", "To be able to.", "To have permission to. Used in granting permission and in questions to make polite requests.", "A more or less cylindrical vessel for liquids, usually of steel or aluminium", "A tin-plate canister, often cylindrical, for preserved foods such as fruit, meat, or fish.", "A ceramic device used for depositing and removing human excrement with water through flushing.", "The fleshy part of the human body that one sits on.", "A small, round-shaped metal container, used for different purposes like storing food or liquids, or collecting money.", "To preserve in a can or tin."], "may": ["To have permission to. Used in granting permission and in questions to make polite requests."], "be able to": ["To be able to.", "To have the ability to do something"], "toilet": ["A room or building equipped with one or more toilets.", "A ceramic device used for depositing and removing human excrement with water through flushing.", "A room equipped with a toilet for urinating and defecating."], "water closet": ["A room or building equipped with one or more toilets.", "A room equipped with a toilet for urinating and defecating."], "lavatory": ["A room or building equipped with one or more toilets.", "A ceramic device used for depositing and removing human excrement with water through flushing.", "A bathroom or lavatory sink that is permanently installed and connected to a water supply and drainpipe."], "ye": ["The person addressed."], "yer": ["The person addressed."], "yous": ["The group of persons addressed."], "y'all": ["The group of persons addressed."], "thee": ["The second person singular masculine object pronoun.", "The person addressed."], "to": ["In the direction of, and arriving at (indicating destination).", "Used after certain adjectives to indicate a relationship.", "Used to indicate ratios.", "Used to indicate the indirect object.", "As a means of achieving the specified aim."], "tin": ["A metallic element with symbol Sn, occurring in cassiterite. It is a malleable silvery-white metal.", "A tin-plate canister, often cylindrical, for preserved foods such as fruit, meat, or fish.", "To preserve in a can or tin."], "brain": ["The ability for rational thought.", "The organ of the central nervous system of an animal located in the skull that controls the actions and thoughts of the animal.", "An intelligent person.", "By analogy with a human brain, the part of a machine or computer that performs calculations.", "The complex of cognitive faculties, mostly characteristic of human beings, that enables consciousness, thinking, reasoning, perception, and judgement."], "central nervous system": ["In vertebrates, the part of the nervous system comprising the brain, brainstem and spinal cord."], "brainstem": ["The lowest part of the brain which is continuous with the spinal cord. It comprises the medulla oblongata, midbrain and pons."], "brain stem": ["The lowest part of the brain which is continuous with the spinal cord. It comprises the medulla oblongata, midbrain and pons."], "spinal cord": ["A thick, whitish cord of nerve tissue which is a major part of the vertebrate central nervous system. It extends from the brainstem down through the spine, with nerves branching off to various parts of the body. It is enclosed in and protected by the vertebral column."], "exist": ["To have existence."], "false": ["Not according to the truth.", "Not the right one.", "Not in keeping with the reality or the facts."], "untrue": ["Not according to the truth."], "blood type": ["A classification of human blood according to substances on the surface of the erythrocytes (red blood cells). The two main blood group systems are AB0 and rhesus factor (Rh). (Source: Wikipedia)"], "itinerant": ["One who travels from place to place.", "Habitually travelling from place to place."], "Perugia": ["City in the region of Umbria, Italy.", "A province in the Umbria region of Italy."], "blister": ["A small bubble on the skin, that contains watery fluid and is caused by heat, pressure or infection."], "stink": ["An unpleasant smell.", "To have a very unpleasant smell."], "comma": ["A punctuation mark used to separate closely knitted parts of a sentence."], "Abkhazians": ["A Caucasian people, mainly living in Abkhazia."], "isle": ["A land mass, especially one smaller than a continent, entirely surrounded by water."], "wait": ["To refrain from acting or moving for some duration or until some event occurs.", "To look forward to, as to something that is believed to be about to happen or come.", "To serve in a restaurant."], "up": ["The direction that is away from the centre of the Earth.", "Towards the direction that is away from the centre of the Earth (indicates a movement)."], "beautiful": ["Having nice or positive properties (specifically with regard to the senses, and most commonly, that of sight).", "Delighting the senses or exciting intellectual or emotional admiration.", "(of weather) highly enjoyable.", "Pleasing or appealing to the senses.", "Pleasant to look at, especially as conforming to ideals of form and proportion."], "upwards": ["The direction that is away from the centre of the Earth."], "upward": ["The direction that is away from the centre of the Earth."], "ascending": ["The direction that is away from the centre of the Earth.", "Moving or going upward."], "chest": ["The portion of the body from the base of the neck to the top of the abdomen; the thorax.", "A generic large, strong container or box (most often made of wood or metal with a lid) that is commonly used to store clothes or toys."], "double": ["Twice the quantity of.", "A person who resembles another person perfectly.", "To multiply by two.", "To become twice as great; to increase twofold.", "Consisting of or involving two parts or components usually in pairs.", "Having more than one decidedly dissimilar aspects or qualities."], "deep": ["Having a bottom or base that is far away from the top."], "dish": ["A specific type of prepared food.", "A vessel such as a plate for holding or serving food, often flat with a depressed region in the middle.", "An activity that one likes or at which one is superior."], "direction": ["The management or direction of the affairs of a public or private office, business or organization.", "An indication of the point towards which an object is moving or is going to move.", "Something that provides direction or advice as to a decision or course of action."], "develop": ["To progress through a series of stages.", "Make visible by means of chemical solutions.", "To come to have or undergo a change of physical features or attributes.", "To teach by training."], "flour": ["Ground or milled grain or cereal.", "To sprinkle with flour."], "examination": ["A session in which a product or piece of equipment is placed under everyday and/or extreme conditions and is examined for its durability, etc.", "A series of questions (set by the teacher or professor), aiming to gauge how much students have learnt over a given academic module, term or year.", "(Law) Formal interrogation."], "south": ["One of the four major compass points, specifically 180\u00b0, directed toward the South Pole, and conventionally downwards on a map."], "title": ["A prefix or suffix added to a person's name to signify either veneration, official position or a professional or academic qualification.", "The name of a book, film, musical piece, etc.", "To assign someone or something a title.", "The words written at the beginning of any text indicating what the following text is about."], "desk": ["A table, frame, or case, usually with flat or slightly sloping top, for the use of writers and readers. It often has a drawer or repository underneath."], "lock": ["Something used for fastening, which can only be opened with a key or combination.", "A segment of a canal or other waterway enclosed by gates, used for raising and lowering boats between levels.", "To fasten or secure a door, a window, a building by the operation of a lock or locks.", "Any wrestling hold in which some part of the opponent's body is twisted or pressured.", "A firing mechanism that detonates the charge of a gun.", "To become rigid or immoveable.", "To hold in a locking position (e.g. in wrestling).", "To hold fast (in a certain state, e.g. a fit of laughing)."], "plane": ["A flat surface extending infinitely in all directions.", "A powered heavier-than-air aircraft with fixed wings that obtains lift by the Bernoulli effect and is used for transportation.", "A tool for shaping wood.", "A level of existence or development."], "north": ["One of the four major compass points, specifically 0\u00b0, directed toward the North Pole, and conventionally upwards on a map."], "word": ["A distinct unit of language (sounds in speech or written letters) with a particular meaning, composed of one or more morphemes, and also of one or more phonemes that determine its sound pattern."], "skirt": ["An article of clothing, usually worn by women and girls, that hangs from the waist and covers the lower part of the body.", "To extend on all sides simultaneously."], "useful": ["Having a practical or beneficial use.", "Being fit for a specific task."], "spell": ["A words or formula supposed to have magical powers.", "A relatively short period of time of indeterminate length.", "To say the letters that make up a word, one after the other."], "weak": ["Lacking in force or ability."], "wake": ["A period after a person's death before the body is buried, in some cultures accompanied by a party.", "To stop sleeping.", "To make someone stop sleeping."], "lonely": ["Dejected by feelings of loneliness.", "Without companions."], "solitary": ["Without companions.", "By one's self; apart from, or exclusive of, others; applied to a thing."], "attack": ["To apply violent force to someone or something.", "The application of violent force to someone or something.", "The sudden onset or occurrence of a disease condition.", "Intense adverse criticism.", "To intensely and adversely criticise in speech or writing.", "Close fighting during the culmination of a military attack.", "To attack someone physically or emotionally.", "The use or exploitation of a vulnerability. This term is neither malicious nor benevolent. A bad guy may attack a system, and a good guy may attack a problem. (Schneider)"], "me": ["The speaker or writer referring to himself or herself alone as the object of the action."], "myself": ["[Me, as direct or indirect object;] The speaker as the object of a verb or preposition, when the speaker is also the subject."], "time to market": ["The time it takes from the time a product is envisioned or defined until it is available to the customer."], "mosque": ["A place of worship for followers of the Islamic faith."], "synagogue": ["A place of worship for followers of the Jewish faith."], "cathedral": ["The principal church of a bishop's diocese (which contains an episcopal throne)."], "chapel": ["A place of worship, smaller than, or subordinate to a church."], "temple": ["The region of the skull on either side of the forehead.", "A house of worship and spiritual activities."], "skull": ["The main bone of the head; the cranium.", "The bony framework of the head."], "escape": ["The act of leaving a dangerous or unpleasant situation.", "Leaving a dangerous or unpleasant situation.", "To get free, to free oneself.", "To flee; to take to one's heels; to cut and run."], "increase": ["An amount by which a quantity is enlarged.", "(Of a quantity) to become bigger.", "To make bigger or more."], "gain": ["An amount by which a quantity is enlarged.", "To gain (success) through applied effort or work.", "To get a characteristic.", "The advantageous quality of being beneficial.", "To earn, to gain (money)."], "increment": ["An amount by which a quantity is enlarged.", "The increase of the quantity, of measurements.", "To make bigger or more."], "inside": ["Contained or encased by.", "Within the confines of a building.", "The side of a curved road, racetrack etc. that has the shorter arc length.", "Within the interior of something, closest to the center or to a specific point of reference.", "Originating from or arranged by someone inside an organisation.", "Nearer to the interior of a running track, horse racing course etc.", "Before the end of a time period."], "expect": ["To look forward to, as to something that is believed to be about to happen or come.", "To consider obligatory; request and expect.", "To look forward to the birth of a child."], "anticipate": ["To look forward to, as to something that is believed to be about to happen or come.", "To state, or make something known in advance, especially using inference or special knowledge."], "await": ["To look forward to, as to something that is believed to be about to happen or come."], "hate": ["To dislike intensely; to feel strong hostility towards.", "An object, person, idea, situation or ideology that a person feels strong dislike or hostility towards.", "A feeling of strong dislike or hostility."], "height": ["The distance from the base of something to the top."], "letter": ["A symbol in an alphabet.", "A text that is written to and for a specific person or set of people (and is most commonly sent to them by post)."], "listen": ["To perceive with the ear (paying attention to what is heard)."], "United States": ["A country and federal republic in North America located north of Mexico and south of Canada, including Alaska, Hawaii and overseas territories."], "United States of America": ["A country and federal republic in North America located north of Mexico and south of Canada, including Alaska, Hawaii and overseas territories."], "idea": ["Initial idea or element that inspires an artistic or literary work.", "A plan or notion that is formed and exists in the mind as a result of mental activity."], "invite": ["The request for the presence or participation of someone.", "To request or ask for the presence or participation of someone.", "To express willingness to have (one) in one's home or environment.", "To have as a guest.", "To ask to enter."], "invitation": ["The request for the presence or participation of someone."], "into": ["Going inside of (something)."], "Alaska": ["The 49th state of the United States of America, located West of Canada in North America."], "Queen Beatrix": ["Beatrix Wilhelmina Armgard (born in Baarn, 31 January 1938), Princess of Oranje-Nassau, Princess of Lippe-Biesterfeld and, from 1980, the Queen of the Netherlands."], "hatred": ["A feeling of strong dislike or hostility."], "congruence": ["The quality of agreeing; being suitable and appropriate."], "thought": ["A plan or notion that is formed and exists in the mind as a result of mental activity."], "Herbology": ["A fictional school subject that focuses on the study of magical plants, herbs and fungi (from the Harry Potter series by JK Rowling)."], "Defence Against the Dark Arts": ["A fictional school subject that teaches students techniques to block curses, and spells that are cast by other wizards, as well as methods of fighting various magical creatures (from the Harry Potter series by JK Rowling)."], "hall": ["A narrow hall or passage with rooms leading off it."], "supercalifragilisticexpialidocious": ["Fictional word used in the movie ''Mary Poppins'' that is supposed to be a miraculous way to talk oneself out of difficult situations."], "fact": ["A true observation."], "just": ["Nothing more than.", "The way it should be.", "Without someone or something else.", "Of moral excellence.", "Only a very short time before.", "Not wisely or sensibly, foolishly."], "fair": ["The way it should be.", "Characterized by equity or fairness."], "even": ["Equal in proportion, quantity, size etc.", "Having a surface without slope nor variations in altitude.", "Pertaining to an integer: multiple of two", "Implying an extreme example in the case mentioned, as compared to the implied reality.", "An adverb used in order to introduce what it is considered very close to the extreme limit but that can still be caught up.", "As an actual or existing fact.", "[used to emphasize a comparative]", "[Used to indicate the most important aspect of the subject mentioned.]"], "Saint Petersburg": ["The second-largest city and former capital of Russia."], "mutually assured destruction": ["A doctrine where it is assumed that two countries cannot go to war as the cost would be prohibitive."], "MAD": ["A doctrine where it is assumed that two countries cannot go to war as the cost would be prohibitive."], "Petrograd": ["The name of Saint Petersburg (Russia) from 1914 to 1924."], "Leningrad": ["The name of Saint Petersburg (Russia) from 1924 to 1991."], "an": ["A period between set dates that mark a year, from January 1 to December 31 by the Gregorian calendar.", "One; any indefinite example of [indefinite article].", "[The indefinite article, used in a negative construction.]"], "hotel": ["An establishment that provides accommodation and other services for paying guests; normally larger than a guest house, and often one of a chain."], "Zagreb": ["The capital city of Croatia."], "Yerevan": ["The largest city and capital of Armenia."], "Erevan": ["The largest city and capital of Armenia."], "Yaound\u00e9": ["The capital and second largest city of Cameroon."], "mountaintop": ["The highest point of a mountain."], "Copenhagen": ["The capital and largest city of Denmark."], "Yamoussoukro": ["The official capital of C\u00f4te d'Ivoire."], "Windhoek": ["The capital and largest city of Namibia."], "class": ["A group, collection, category or set sharing characteristics or attributes.", "A grouping based on shared characteristics.", "A social group of persons of the same economic and professional condition.", "A biological taxon, a group of species, part of a phylum and consisting of one or more orders.", "A category of seats in an airplane, train or other means of mass transportation.", "A group of students in a regularly scheduled meeting with a teacher.", "A meeting with a teacher to learn something.", "The training or instruction provided by a teacher or tutor.", "A programming construct that is used to define a distinct type and defines constituent members that enable its instances to have state and behavior.", "A modifier of an HTML element used as a way of classifying similar elements.", "In computational complexity theory, a set of problems of related resource-based complexity."], "cloth": ["A woven fabric such as used in dressing, decorating, cleaning or other practical use."], "common": ["Something that is routine, or is well known.", "Who is not of noble rank; pertaining to the great masses."], "ordinary": ["Something that is routine, or is well known."], "friendly": ["Generally warm, approachable and easy to relate with in character.", "In an friendly manner."], "doping": ["The use of illegal methods and substances in order to enhance athletic performance."], "grandchild": ["A child of someone\u2019s child."], "grandson": ["A son of someone's child."], "granddaughter": ["A daughter of someone's child.", "The daughter of someone's daughter."], "Willemstad": ["The capital of Cura\u00e7ao and until October 2010 of the Netherlands Antilles"], "type": ["To write by entering characters on a keyboard or a typewriter.", "A grouping based on shared characteristics.", "To identify as belonging to a certain type."], "Uzbek": ["A Turkic language spoken by the Uzbeks in Uzbekistan and elsewhere in Central Asia.", "A person who is of Uzbek origin or who is an Uzbek national."], "son": ["One's male child."], "Tosk": ["An Albanian language spoken in the south of Albania."], "Tosk Albanian": ["An Albanian language spoken in the south of Albania."], "Thai": ["A Tai-Kadai language spoken primarily in Thailand."], "vegetable juice": ["Juice from vegetable."], "meat juice": ["The liquids contained in meat, especially in the context of preparing meat for food."], "Telugu": ["A Dravidian language spoken mainly in India.", "The script in which the Dravidian language Telugu is written."], "Standard German": ["The standard language of German-speaking regions."], "suitable": ["Having sufficient or the required properties for a certain purpose or task; appropriate to the occasion.", "Meeting the conditions; worthy of being chosen."], "pre alpha": ["A version of software distributed when it is not yet \"feature complete\"."], "wonder": ["To think deeply about something.", "Incredible fact that causes amazement and astonishment.", "To overwhelm with surprise or sudden wonder."], "shirt": ["An article of clothing that is worn on the upper part of the body, and often has sleeves, either long or short, that cover the arms."], "signal": ["An indication given to another person."], "speak": ["To communicate by the use of sounds that are interpreted as language; to communicate verbally.", "To exchange thoughts; talk with."], "summer lightning": ["The faint lightning flashes of distant thunderstorms on the horizon, without audible thunder."], "heat lightning": ["The faint lightning flashes of distant thunderstorms on the horizon, without audible thunder."], "flag": ["A piece of cloth, often decorated with an emblem, used as a visual signal or symbol."], "empty": ["Without content.", "To make empty.", "To become empty."], "dead": ["Not alive; lacking life.", "No longer living."], "explain": ["To inform about the reason for something, how something works, or how to do something.", "To give the meaning or intention of.", "To make plain and comprehensible.", "To define or present (e.g. a plan of action)."], "authentication": ["The act of establishing or confirming something or someone is what or who he or it is."], "chain": ["A series of interlocked rings or links forming a flexible length.", "A collection of business locations (e.g. restaurants or hotels) all related to the same company.", "A unit of length generally equal to between 60 and 100 feet.", "To fasten or secure with chains."], "once": ["at the time following immediately the time when", "As soon as.", "One and only one time."], "cover": ["A shielding or protection against the unpleasant, unwanted, or dangerous.", "The top sheet of a bed.", "To include completely; to describe fully or comprehensively.", "To place something over or upon to conceal or protect.", "The page on the outside of a magazine or book.", "To go beyond, to pass here.", "To include in scope; To include as part of something broader.", "To copulate with (of male animals)."], "cupboard": ["An enclosed, non \"walk-in\" storage space with a door as a means of access. Usually to be found in a kitchen"], "evening": ["That part of the day in which daylight decreases and the night falls.", "A period of time near the end of something."], "fast": ["Occurring or happening within a short time; brief.", "Fixed; closely compressed.", "Characterized by speed; acting or moving quickly.", "To refrain from eating."], "substitute": ["Someone appointed as the substitute of another, and empowered to act for him, in his name or on his behalf.", "To use in place of something else, with the same function."], "substitution": ["The act of replacing or substituting.", "The act of putting one thing or person in the place of another."], "Time passes and the situation has changed": ["A statement that expresses or emphasises that circumstances change with the passage of time."], "novel": ["A major form of literature. Usually, it denotes a continued fictional narrative written by a single author, rendered in prose.", "New, original, especially in an interesting way."], "funny": ["Arousing laughter.", "Out of the ordinary."], "Harry Potter": ["A series of books written by JK Rowling that focus on the adventures of three young wizards: Harry Potter, Ron Weasley and Hermione Granger.", "The main character in the \"Harry Potter\" series of books by JK Rowling."], "floor": ["The bottom or lower part of any room; the supporting surface of a room.", "A level, usually consisting of several rooms, in a building that consists of several levels."], "flat": ["Having a surface without slope nor variations in altitude.", "A musical notation indicating one half step lower than the note named.", "A level tract of land.", "Having lost effervescence.", "Having a relatively broad surface in relation to depth or thickness.", "Not modified or restricted by reservations.", "Stretched out and lying at full length along the ground."], "Accio": ["A fictional spell from the Harry Potter series that causes the indicated object to move to the person who cast the spell."], "dog days": ["A period of unusually hot weather."], "Tagalog": ["An Austronesian language spoken mainly in the Philippines."], "join": ["To join or unite, as one thing to another, or as several particulars, so as to increase the number, augment the quantity, enlarge the magnitude, or so as to form into one aggregate; to sum up; to put together mentally, as, to add numbers; to add up a column.", "To become part of; to become a member of a group or organization.", "To cause to become joined or linked.", "An operation that combines records from two tables in a relational database, resulting in a new, temporary table, sometimes called a \"joined table\".", "To come into the company of."], "jump": ["An instance of jumping.", "To propel oneself rapidly upward such that momentum causes the body to become airborne."], "hundred": ["The cardinal number occurring after ninety-nine and before one hundred one, represented in Roman numerals as C and in Arabic numerals as 100."], "obey": ["To do as you are told.", "To act in accordance with someone's rules, commands, or wishes."], "middle": ["The point on a segment that is midway between the ends.", "Being in the midway between the ends."], "centre": ["The point on a segment that is midway between the ends."], "Sundanese": ["An Austronesian language spoken primarily in the western part of the Indonesian island of Java."], "Upper Sorbian": ["A West Slavic language spoken in the historical province of Upper Lusatia, today part of Saxony."], "tattletale": ["Someone who does tell what another does wrong."], "Wendish": ["A group of West Slavic languages spoken in Lusatia."], "Lower Sorbian": ["A West Slavic language spoken in the historical province of Lower Lusatia, today part of Brandenburg."], "tattle": ["To tell what others do wrong."], "headset": ["A pair of headphones or earphones including a microphone and meant to be worn on the head.", "On a bicycle, the system of bearings that connects the fork to the frame."], "Sindhi": ["An Indic language spoken mainly in Pakistan and India."], "Punjabi": ["An Indic language spoken mainly in the Punjab regions of India and Pakistan."], "Pashto": ["A macro language that consists of Northern, Central and Southern Pashto dialects, spoken in Afghanistan, Pakistan and Iran."], "Avestan": ["An extinct Iranian language once used to compose among others the hymns of the Zoroastrian holy book, the Avesta."], "pope": ["The bishop of Rome; the head of the Roman Catholic church."], "federation": ["An array of nations or states that are unified under one central authority which is elected by its members.", "The process of a user's authentication across multiple IT systems or even organizations."], "token": ["An entity that signifies the authority or identity of something."], "authority": ["Stucture that has been organised for a certain scope (that can be for nor not for profit), which the legislation attributes a incorporated status.", "The power to enforce rules or give orders.", "One who is accepted as a source of reliable information on a subject."], "course": ["A single dish in a row of subsequently served dishes constituting a menu.", "The intended route of a voyage.", "The passage of time in a connected series of events or actions.", "The direction of movement, line or route of a vessel at any given moment.", "A learning program, as in a school.", "To move along, of liquids."], "truth": ["That which conforms to reality."], "offer": ["To present something for a person's acceptance or rejection.", "Availability to sell goods or services for a certain price and under certain conditions.", "To give as a present.", "To state to someone that one is willing to pay a certain amount of money and/or perform a set of services for something."], "plague": ["Any large scale calamity.", "A deadly infectious disease caused by the enterobacteria Yersinia pestis.", "To cause physical pain; to infect with a contagious disease.", "To cause, inflict or threaten with suffering, need, distress, or pain."], "bar": ["A business licensed to sell intoxicating beverages for consumption on the premises, or the premises themselves", "With the exception of.", "A musical designation consisting of all notes and or rests delineated by two vertical bars; an equal and regular division of the whole of a composition.", "A unit of pressure equal to 100,000 pascals.", "To render passage impossible by physical obstruction.", "A rigid piece of metal or wood, usually used as a fastening or obstruction or weapon.", "To accept no longer in a community, group or country, e.g. by official decree.", "To prevent from entering; to keep out (e.g. of membership).", "A single piece of a grid, railing, grating, pailing, fence, etc.", "A block of solid substance (such as soap, wax or chocolate).", "A horizontal rod used by gymnasts as a support to perform their physical exercises.", "A counter where you can obtain food or drink.", "An obstruction (usually metal) placed at the top of a goal."], "public house": ["A business licensed to sell intoxicating beverages for consumption on the premises, or the premises themselves"], "Battle": ["A small town in East Sussex, England, known as the site where William, Duke of Normandy, defeated King Harold II to become William I."], "beer": ["An alcoholic beverage commonly fermented from barley malt, with hops or some other substance to impart a bitter flavor."], "pub": ["A business licensed to sell intoxicating beverages for consumption on the premises, or the premises themselves"], "piglet": ["A young pig."], "grey": ["To become grey.", "Having a colour between black and white, like ash or stone."], "Amharic": ["A Semitic language spoken mainly in in Ethiopia."], "Amuzgo": ["An Oto-Manguean language spoken in the eastern Guerrero and western Oaxaca states of Mexico."], "Aragonese": ["A Romance language spoken in some valleys of the Pyrenees in Spain.", "A person whose ancestors are from Aragon or who resides in Aragon, an autonomous community in Spain.", "Of or pertaining to Aragon, an autonomous community in Spain, or its inhabitants (present or past)."], "typo": ["A spelling or typographical error."], "Aramaic": ["Semitic language which dates back to the 10th century BCE."], "Assamese": ["An Indic language spoken as the official language of the state of Assam in India, and by small communities in Bangladesh and Bhutan.", "A variant of the Eastern Nagari script also used for Bengali and Bishnupriya Manipuri."], "Asturian": ["A Romance language spoken in various parts of Spain.", "A person from Asturias, or of Asturian ancestry.", "Of or relating to Asturias, Asturians, or the Asturian language."], "Astur-Leonese": ["A Romance language spoken in various parts of Spain."], "Asturian-Leonese": ["A Romance language spoken in various parts of Spain."], "toast": ["Bread that has been cooked with a dry heat (usually in a toaster); a common breakfast food.", "To cook (food, commonly bread) using a dry heat.", "To raise one's glass and touch it against another person's (usually at a celebration meal, etc. and usually with the word, \"cheers\").", "A raising and touching of glasses (usually at a celebration meal, etc. and usually with the word, \"cheers\")."], "sibling": ["A person who has the same parents as another person."], "ecstatic": ["Having feelings of intense pleasure."], "nephew": ["A son of someone's sister.", "A son of someone's brother.", "A son of someone's brother or sister.", "A child of someone's brother or sister."], "niece": ["A daughter of someone\u2019s sister.", "A daughter of someone\u2019s brother.", "A daughter of someone\u2019s brother or sister."], "cousin": ["The daughter of a sibling of a person's parent.", "The child of the sibling of a parent of a person.", "A son of the sibling of a parent of a person.", "Father's sister's daughter.", "Father's sister's son.", "Mother's brother's son.", "Mother's brother's daughter.", "Mother's sister's daughter.", "Mother's sister's son.", "Father's brother's son.", "Father's brother's daughter."], "euphoric": ["Having feelings of intense pleasure."], "homosexual": ["A person who is sexually attracted solely or primarily to other members of the same sex.", "Sexually attracted to members of his/her own sex."], "relative": ["A person that is considered to be of the same family due to shared ancestors, marriage or adoption.", "A member of the family.", "Not absolute; connected to or depending on something else."], "relation": ["A person that is considered to be of the same family due to shared ancestors, marriage or adoption.", "An abstraction belonging to or characteristic of two entities or parts together.", "The association of two defined meanings through a specific relation type."], "homosexuality": ["The sexual preference characterised by a romantic or sexual attraction to people of the same sex."], "Avar": ["A Northeast Caucasian language, spoken mainly in the eastern and southern parts of the Republic of Dagestan and the Zakatala region of Azerbaijan."], "Transfiguration": ["A fictional school subject from the Harry Potter series that focuses on changing the appearance and form of an object (or sometimes making objects appear or disappear)."], "Chocolate Frog": ["A fictional magical sweet that is shaped like a frog made from chocolate that hops (from the Harry Potter series by JK Rowling)."], "Hausa": ["An Afro-Asiatic language spoken mainly in West Africa."], "Javanese": ["An Austronesian language spoken mainly in the central and eastern part of the island of Java, in Indonesia."], "girl": ["A young female person, usually a child or teenager."], "Department of Mysteries": ["A fictional department on the bottom floor of the Ministry of Magic, where the main action at the end of \"Harry Potter and the Order of the Phoenix\" occurs (from the Harry Potter series by JK Rowling)."], "Kannada": ["A Dravidian language spoken mainly in the state of Karnataka in India."], "nanny": ["A woman who watches over someone else's kids usually as a full-time job."], "Swede": ["A person from Sweden."], "Nauruan": ["A person from Nauru.", "A Malayo-Polynesian language spoken in Nauru.", "Of or relating to Nauru, Nauruans, or the Nauruan language."], "Australian": ["A person from Australia.", "Of or relating to Australia or Australians."], "Norway": ["A country in Northern Europe, and part of Scandinavia."], "Sweden": ["A country in Northern Europe, and part of Scandinavia."], "Dark Lord": ["The name that the Death Eaters give Lord Voldemort (from the Harry Potter series by JK Rowling)."], "Hogwarts": ["The fictional school that Harry Potter goes to (in the Harry Potter series by JK Rowling)."], "Common Room": ["A fictional room where students of a particular house relax and congregate (from the Harry Potter series by JK Rowling)."], "Gryffindor": ["A fictional house that values courage, boldness and chivalry (from Harry Potter by JK Rowling). It's emblem is the lion."], "Slytherin": ["A fictional house that values ambition, cunning and resourcefulness (from Harry Potter by JK Rowling). It's emblem is the snake."], "pinkie": ["The smallest finger of a hand."], "Hufflepuff": ["A fictional house that values hard work, friendship and fair play (from Harry Potter by JK Rowling). It's emblem is the badger."], "Ravenclaw": ["A fictional house that values intelligence, knowledge, and wit (from Harry Potter by JK Rowling). It's emblem is the eagle."], "foal": ["A juvenile horse, especially one which is not yet weaned."], "anvil": ["A heavy iron block used by a blacksmith as a surface upon which metal can be struck and shaped.", "A bone in the middle ear, in between the malleus and the stapes."], "malleus": ["A bone in the middle ear, in between the eardrum and the anvil."], "stirrup": ["A bone in the middle ear, between the anvil and the inner ear.", "A ring that holds the foot of a rider, attached to the saddle by a strap."], "chasm": ["A deep, steep-sided rift."], "gap": ["A deep, steep-sided rift.", "A considerable disparity or difference as between two figures."], "fissure": ["A deep, steep-sided rift.", "A thin and usually jagged space opened in a previously solid material."], "gorge": ["A deep, steep-sided rift.", "To eat by swallowing large bits of food with little or no chewing."], "abyss": ["A deep, steep-sided rift."], "Dravidian language": ["A language spoken by one of several aboriginal peoples of India and Sri Lanka."], "Doha": ["The capital of Qatar."], "private bank": ["A bank which is not incorporated, and hence the entirety of its assets is available to meet the liabilities of the bank."], "Switzerland": ["A sovereign country in south central Europe. In the West it borders on France, in the East on Austria and Liechtenstein, in the North on Germany, and in the South on Italy. Its capital is Bern."], "hydrogen bomb": ["A thermonuclear bomb which derives its destructive power from the fusion of isotopes of hydrogen."], "akuaba": ["A wooden ritual fertility doll from Ghana and nearby areas."], "\u00e5terst\u00e4llande": ["A conservation measure involving the correction of past abuses that have impaired the productivity of the resources base.\\n(Source: MGH)"], "anarchism": ["The belief that all forms of rulership are undesirable and should be abolished."], "giraffe": ["An African even-toed ungulate mammal, the tallest of all land-living animal species."], "operation": ["The method by which a device performs its function.", "A surgical procedure.", "The execution of its own function."], "drug test": ["A chemical test administered to determine the use of banned substances."], "archive": ["A place for storing important and historical material.", "To place in an archive in a logical place and order."], "heartbeat": ["A rhythmic pulsation of the heart."], "drug": ["A substance which specifically promotes healing.", "A substance that alters the way the mind or body works.", "To administer intoxicating drugs to, generally without the recipient's knowledge or consent.", "To add intoxicating drugs to something with the intention of drugging someone."], "view": ["To have one's eyes, one's attention on something or someone.", "What can be seen.", "A stored query accessible as virtual table composed of the result set of a query.", "To see or watch."], "look at": ["To have one's eyes, one's attention on something or someone."], "observe": ["To have one's eyes, one's attention on something or someone.", "To make mention of.", "To see, discover or determine something, unclear, distant or hidden, by looking carefully.", "To conform one's action or practice to.", "To look after; be the keeper of; have charge of."], "tear": ["A drop of liquid produced from the eyes by crying or irritation.", "A tug given with force in order to remove something.", "A clear, salty liquid produced by the lacrimal gland in the eye, whose normal function is to clean and lubricate the eyes; its production is increased when the eye is irritated, or when yawning, laughing or crying."], "instead": ["As a replacement for."], "blind": ["Unable to see.", "To make temporarily or permanently blind."], "funnel": ["A conically shaped pipe, employed as a device to channel liquid or fine-grained substances into containers with a small opening.", "The metal chimney of an engine, steamboat, etc."], "phlegm": ["A sticky fluid secreted by the mucous membranes of animals."], "lightning": ["The flash of light caused by the discharge of atmospheric electrical charge."], "doubt": ["Challenge about the truth or accuracy of a matter.", "To lack confidence in; to disbelieve, question, or suspect."], "blink": ["To make a quick wink of one or both eyelids, often repeatedly.", "To close and reopen both eyes quickly."], "never": ["At no time."], "corruption": ["The destruction of data as a result of imperfections in software, storage or transmission processes.", "The practice of unlawful or improper use of influence or power."], "true": ["Concurring with a given set of facts."], "area": ["A particular geographic region.", "A measure of the extent of a two-dimensional object.", "A particular environment or walk of life."], "be seated": ["To be in a position with the upper body upright and the legs resting."], "basil": ["An annual plant of the Lamiaceae (or Labiate) family, grown as a herb and used in cooking to add flavour."], "Malay": ["An Austronesian language spoken mainly in Malaysia and its neighbouring countries.", "A citizen of Malaysia or someone who is originally from Malaysia."], "founder": ["A person that has founded or originated, as in ''the father of our country''"], "Father": ["The Superior Being, the Creator, the Spirit because of which and in whom everything is, as He is being named by monotheists, mostly Jews and Christians."], "Vader": ["An evil fictional character in the Star Wars universe, Dark Lord of the Sith."], "Malayalam": ["A Dravidian language spoken mainly in the state of Kerala, in southern India."], "Mapudungun": ["A language isolate spoken in southern and central Chile and west central Argentina by the Mapuche people."], "Darth Vader": ["An evil fictional character in the Star Wars universe, Dark Lord of the Sith."], "Marathi": ["An Indic language spoken mainly in western and southern India."], "Chhattisgarhi": ["An Indic language spoken primarily in the Indian state of Chhattisgarh and adjacent areas.", "An Indic language spoken primarily in the Indian state of Chhattisgarh and adjacent areas."], "lose": ["To cause (something) to cease to be in one's possession or capability due to unfortunate or unknown circumstances, events or reasons.", "To be beaten or to fail to win in an event."], "Oromo": ["A group of Afro-Asiatic languages spoken primarily in Ethopia."], "Oriya": ["An Indic language spoken mainly in the Indian state of Orissa.", "Dialect of Turi spoken.", "A script used to write the Oriya language and several other Indian languages, for example, Sanskrit."], "Old English": ["An early form of the English language that was spoken in parts of what is now England and southern Scotland between 450 and 1100."], "Anglo-Saxon": ["An early form of the English language that was spoken in parts of what is now England and southern Scotland between 450 and 1100."], "brown out": ["A partial power outage, a disruption in electric power supply that reduces the voltage available causing lights to dim.", "A dimming of the vision caused by loss of blood pressure or hypoxia."], "Afro-Asiatic": ["A language family spoken throughout the northern part of Africa and the Middle East, including amongst others the Semitic, Cushitic, Chadic, and Berber languages."], "black out": ["Amnesia caused by an overabundant use of alcohol.", "The sudden (and generally momentary) loss of consciousness due to a lack of sufficient blood and oxygen reaching the brain."], "syncope": ["The deletion of phonemes from a word, or from a phrase treated as a unit."], "text mining": ["Extracting interesting and non-trivial information and knowledge from unstructured text stored in electronic form."], "topic modelling": ["Identifying patterns of words that tend to occur together in documents, then automatically categorizing these words into topics."], "knowledge management": ["The science and the practical skills that concern themselves with the control of the production factor knowledge."], "slang": ["Language that is higly informal, considered below what is considered standard educated speech, and consisting of new words, old words used with new meanings, or words considered taboo by people of a higher social status.", "Terminology which is especially defined in relationship to a specific activity, profession, group, or event."], "murder": ["To purposely end the life of another human being.", "To deliberately and purposely end the life of a political, public or other significant figure, usually publically.", "The intentional or premeditated killing of another person.", "To unlawfully and intentionally kill another human being."], "disambiguation": ["Selecting from the possible interpretations of a word or a sentence which interpretation was intended in a particular context."], "ambiguity": ["Something liable to more than one interpretation, explanation or meaning, if that meaning cannot be determined from its context.", "The use of equivocal or ambiguous expressions, esp. in order to mislead."], "bed": ["A piece of furniture, made for a person to sleep on.", "A plot of ground in which plants are growing.", "A depression forming the ground under a body of water.", "A stratum of rock (especially sedimentary rock)."], "broken": ["Containing one error or several errors.", "Bent to the point of coming apart, but not necessarily in separate pieces.", "Not capable of working."], "raft": ["a collection of logs, planks, casks, etc., fastened together for floating on water.", "A great number or large amount of things not placed in a pile."], "beat": ["A rhythmic pulsation of the heart.", "A pulsation or throb.", "To strike or pound repeatedly, usually in some sort of rhythm.", "To exceed in quality, capacity and virtue.", "To end in success a struggle or contest.", "Speed degree during a certain part of a song rhythm.", "To give a beating to; subject to a punishment or an act of aggression.", "The sound of stroke or blow."], "mute": ["Not making a sound."], "hole": ["A, often round, piece of nothingness in some solid."], "sorrow": ["Mental suffering or pain caused by injury, loss, bereavement, or despair.", "To express deep sorrow for.", "Something that causes great unhappiness."], "lament": ["To express grief.", "A vocal or audible expression of grief or sorrow.", "To express deep sorrow for.", "A cry of sorrow and grief."], "taboo": ["An inhibition or ban that results from social custom or emotional aversion."], "ancestor": ["Person from whom a person is descended, whether on the father's or mother's side, at any number of generations."], "progenitor": ["Person from whom a person is descended, whether on the father's or mother's side, at any number of generations.", "An ancestral form of a species."], "chronic": ["(Of disease) Persisting over a long period."], "ailment": ["An injury, disorder or disease that causes physical or mental suffering to the affected person or animal."], "intelligence quotient": ["The unit used to show the result of an intelligence test."], "intelligence": ["The problem solving ability."], "witchcraft": ["The use of certain kinds of supernatural or magical powers."], "busy": ["Having many things that need to be done.", "To make oneself or someone to have a lot of things to do.", "(For a telephone line) Not available at the moment because it is being used.", "Crowded with or characterized by much activity."], "ethernet": ["A large and diverse family of frame-based computer networking technologies for local area networks."], "brand": ["A name, symbol, logo, or other item used to distinguish a product or manufacturer from its competitors."], "capital": ["A city designated as a legislative seat by the government or some other authority, often the city in which the government is located; otherwise the most important city within a country or a subdivision of it.", "The financial means to acquire goods and services, especially in a non-barter system.", "First-rate.", "Of primary importance.", "Uppercase."], "whereabouts": ["Location or place."], "circuit judge": ["A senior judge in England and Wales who sits in the Crown Courts, County Courts or certain specialised sub-divisions of the High Court of Justice."], "London": ["The capital city of the United Kingdom and of England."], "sign language": ["A language in which the communication occurs through gestures and facial expressions."], "emperor": ["The head of state of an empire."], "empire": ["A state ruled by an emperor.", "Any vast area under the power of one person, most commonly used in business.", "A group of states or other territories that owe allegiance to a foreign power."], "promulgate": ["To put a regulation into effect.", "To make known or public.", "To make known by stating or announcing."], "chromatophore": ["A pigment-containing and light-reflecting cell found in amphibians, fish, reptiles, crustaceans and cephalopods."], "alliance": ["Any union resembling that of families or states; union by relationship in qualities; affinity."], "orbit": ["A circular or elliptical path of one object around another object.", "A particular environment or walk of life.", "The path, usually elliptical, described by one celestial body in its revolution about another.", "The path of an electron around the nucleus of an atom.", "The bony cavity in the skull containing the eyeball.", "To move in an orbit."], "loyal": ["Firm in allegiance to a person or institution.", "Steadfast in allegiance or affection."], "tower": ["Structure, usually taller than it is wide, often used as a lookout.", "To increase the height significantly.", "To go forward vigourously."], "write": ["To form (letters, words or symbols) on a surface in order to communicate.", "To record (a computer file) on a computer storage medium.", "To compose and send a letter to someone.", "To create code, to write a computer program."], "GDP": ["The total output of goods and services produced by a national economy in a given period, usually a year, valued at market prices. It is gross, since no allowance is made, for the value of replacement capital goods."], "Boston": ["The capital of the Commonwealth of Massachusetts in the United States."], "arm": ["The upper limb, extending from the shoulder to the wrist and sometimes including the hand.", "A part of an object (usually rigid and relatively long) that extends from the centre or main section.", "To prepare oneself for a military confrontation.", "A division of some larger or more complex organization.", "To supply with arms."], "image": ["A representation of visible reality produced by drawing, painting, printing, photography, etc.", "The visual representation of a person or an object."], "poor": ["With little or no possessions or money.", "Inappropriate for a particular purpose or aim.", "Of low quality.", "To be pitied."], "promise": ["A transaction between two persons whereby the first person undertakes in the future to render some service or gift to the second person or devotes something valuable now and here to his use.", "To make a promise.", "To state, or make something known in advance, especially using inference or special knowledge."], "painting": ["An illustration or artwork done with the use of paints.", "The practice of applying color to a surface (support base) such as, e.g. paper, canvas, wood, glass, lacquer or concrete."], "Kituba": ["A widely used lingua franca in Central Africa and an official language in Congo-Brazzaville and Congo-Kinshasa.", "A language of Democratic Republic of the Congo"], "always": ["At all times.", "Constantly during a certain period, or regularly at stated intervals."], "Vandals": ["An East Germanic tribe that entered the late Roman Empire during the 5th century."], "vandal": ["A person who needlessly destroys or damages other people's property."], "in vitro fertilisation": ["A technique in which egg cells are fertilised outside the woman's body."], "IVF": ["A technique in which egg cells are fertilised outside the woman's body."], "Cherokee": ["An Iroquoian language spoken in Oklahoma and North Carolina in North America.", "The syllabary for the Cherokee language invented by Sequoyah.", "An indigenous North American people."], "syllabary": ["A set of written symbols that represent (or approximate) syllables, which make up words."], "syllable": ["A unit of human speech that is interpreted by the listener as a single sound, although syllables usually consist of one or more vowel sounds, either alone or combined with the sound of one or more consonants."], "Swabian": ["A language spoken in middle and southern Baden-W\u00fcrttemberg, but also in parts of Bavaria."], "Tswana": ["A Bantu language spoken in Southern Africa."], "baptism by fire": ["The first time a person does something, where it is unexpectedly challenging or difficult."], "Japan": ["An East Asian island country located in the Pacific Ocean, to the east of China, Korea, and Russia, stretching from the Sea of Okhotsk in the north to the East China Sea in the south."], "State of Japan": ["An East Asian island country located in the Pacific Ocean, to the east of China, Korea, and Russia, stretching from the Sea of Okhotsk in the north to the East China Sea in the south."], "foundation": ["The lowest and supporting part or member of a wall.", "A type of philanthropic organization, set up by either individuals or institutions as a legal entity with the purpose of supporting causes in line with the goals of the foundation.", "A relation that provides the foundation for something.", "The lowest support of a structure.", "Education or instruction in the fundamentals of a field of knowledge.", "The fundamental assumptions from which something is begun or developed or calculated or explained."], "fundament": ["The lowest and supporting part or member of a wall.", "The lowest support of a structure.", "The fleshy part of the human body that one sits on.", "The fundamental assumptions from which something is begun or developed or calculated or explained."], "train station": ["A building in or at which trains stop."], "bus stop": ["A place at which busses stop to let passengers get on and off."], "hit the nail on the head": ["To arrive at exactly the right answer."], "you lot": ["The group of persons addressed."], "tailplane": ["A small wing that provides positive or negative lift to stabilize an aircraft in flight."], "firewall": ["A service which functions in a networked computing environment to prevent the communications forbidden by a security policy.", "A type of fire separation of noncombustible construction that subdivides a building or separates adjoining buildings to resist the spread of fire."], "cream": ["A dairy product that is composed of the higher-butterfat layer skimmed from the top of milk before homogenization. In un-homogenized milk, the fat, which is less dense, will eventually rise to the top. In the industrial production of cream this process is accelerated by using centrifuges called \"separators\".", "To strike or hit somebody heavily and repeatedly."], "baptism of fire": ["The first time a person does something, where it is unexpectedly challenging or difficult."], "headland": ["A strip of land left at the end of a furrow in a field in order to facilitate the turning of the plough.", "A cape or promontory jutting seawards from a coastline, usually with a significant sea cliff.", "A piece of land extending into water."], "chart": ["A formal written record of transactions, proceedings, etc., as of a society, committee, or legislative body.", "A map for navigation that delineates a portion of the sea, indicating the outline of the coasts and the position of rocks, sandbanks and other parts of a sea.", "To visually represent by means of a graph."], "jungle": ["An area of wilderness, usually large, usually covered by thick vegetation, mainly untouched by humans.", "Thick and intricate forest typical of monsoon regions like India and Malaysia"], "forrest": ["An area where trees grow, where there are, no streets, no buildings, no agriculture beyond growing trees."], "woods": ["An area where trees grow, where there are, no streets, no buildings, no agriculture beyond growing trees."], "bush": ["A plant resembling a small tree, but has no, and will never develop, a stem.", "A collection of something bundled, almost always flowers or decorative twigs, etc."], "tuft": ["A collection of, mostly quite many, small, thin, long, bendable, identical items, growing, standing, or being held parallel, such as grass, hair, herbs, feathers, etc."], "brown": ["A red-orange colour, including the colour of wood, chocolate or coffee.", "Having a red-orange colour, including the colour of wood, chocolate or coffee.", "To assume a brown-red-orange colour, similar the colour of chocolate or coffee.", "To cook something until it assumes a brown-red-orange colour, similar to the colour of chocolate or coffee."], "truce": ["A temporary suspension of hostilities by mutual agreement of the warring parties."], "cease-fire": ["A temporary suspension of hostilities by mutual agreement of the warring parties."], "Berlin": ["The capital city and a state of Germany, the country's largest city in area and population, and the second most populous city in the European Union."], "after": ["Following (someone or something).", "Subsequent; following in time; later than.", "At the back of.", "In pursuit of, seeking.", "In allusion to, in imitation of; following or referencing.", "Next in importance or rank."], "behind": ["Following (someone or something).", "At the back of.", "The fleshy part of the human body that one sits on.", "In or into an inferior position."], "again": ["Already happened before.", "Once more.", "Over and above a factor of one.", "[Used metalinguistically, with the repetition being in the discussion, or in the linguistic or pragmatic context of the discussion, rather than in the subject of discussion.]", "[used in asking a question to which one may have already received the answer, but cannot remember it.]", "[Used in repeating a question or statement.]", "[Used in applying a previously made point to a new instance.]", "Once more, in a different manner, on a new basis."], "alone": ["By one's self; apart from, or exclusive of, others; applied to a person.", "By one's self; apart from, or exclusive of, others; applied to a thing.", "Without any others being included or involved."], "already": ["Prior to some specified time, either past, present, or future.", "Sooner or more quickly than expected.", "An addition used to emphasize impatience."], "now": ["At present; at this time.", "Indicates this very moment in time.", "[A way of introducing a sentence, especially with a new topic.]", "In an immediate manner; instantly or without delay.", "In the time directly preceding the present moment.", "In the time directly following on the present moment.", "At the time spoken of or referred to.", "[Used to strengthen a rebuke, command, entreaty, or the like.]", "[Used at the beginning or end of a question or a clause, for rhetorical strength.]", "As a consequence of.", "Of or belonging to the present time.", "Actual, fashionable, up to date.", "[Indicates a signal to begin. ]"], "any": ["A guaranteed selection from (a set). At least one, sometimes more (of a set).", "[The plural indefinite article, used in a negative construction.]", "[The indefinite article, used in a negative construction.]"], "set": ["A matching collection of things of the same kind.", "A collection of various objects for a particular purpose.", "An object made up several parts.", "(set theory) A well-defined collection of mathematical objects (called elements or members) often having a common property.", "An association or group of people, usually meeting socially.", "To cause (as an end result, not a process) an object to be in a new place.", "To adapt something; to alter or regulate so as to achieve accuracy or conform to a standard.", "[Of a heavenly body, essentially the Sun and the Moon] To disappear below the horizon of a planet or another heavenly body (most often the Earth).", "Fixed and unmoving."], "accept": ["To receive, especially with a consent, with favour or with approval, something given or offered.", "To agree in opinion or sentiment; to consider or hold as true.", "To take on as one's own the expenses or debts of another person.", "To give an affirmative reply to; respond favorably to.", "To tolerate or accommodate oneself to.", "To admit into a group or community."], "March": ["The third month of the Gregorian calendar, having 31 days."], "January": ["The first month of the Gregorian calendar, having 31 days."], "February": ["The second month of the Gregorian calendar, having 29 days in a leap year and 28 in other years."], "April": ["The fourth month of the Gregorian calendar, having 30 days."], "May": ["The fifth month of the Gregorian calendar, having 31 days.", "ISO 639-6 entity"], "June": ["The sixth month of the Gregorian calendar, having 30 days."], "July": ["The seventh month of the Gregorian calendar, having 31 days."], "August": ["The eighth month of the Gregorian calendar, having 31 days."], "September": ["The ninth month of the Gregorian calendar, having 30 days."], "October": ["The tenth month of the Gregorian calendar, having 31 days."], "November": ["The eleventh month of the Gregorian calendar, having 30 days."], "December": ["The twelfth month of the Gregorian calendar, having 31 days."], "headache": ["A common (and sometimes acute) pain of the head and head area."], "migraine": ["A neurological disease that most often takes the form of very acute, disabling headaches, hypersensitivity to light and sound and nausea."], "megrim": ["A neurological disease that most often takes the form of very acute, disabling headaches, hypersensitivity to light and sound and nausea."], "paracetamol": ["The active substance in a group of common drugs, that are used for relief of headaches and other aches and pains."], "aspirin": ["A common drug that is often used against headaches, fever and other ailments."], "lasagna": ["An Italian oven dish with pasta and some filling (such as ricotta cheese, tomato sauce, etc.)"], "Friday": ["The fifth day of the week in Europe and in systems using the ISO 8601 norm; the sixth day of the week in the United States of America."], "Thursday": ["The fourth day of the week in Europe and in systems using the ISO 8601 norm; the fifth day of the week in the United States of America."], "Wednesday": ["The third day of the week in Europe and in systems using the ISO 8601 norm; the fourth day of the week in the United States of America."], "Tuesday": ["The second day of the week in Europe and in systems using the ISO 8601 norm; the third day of the week in the United States of America."], "Monday": ["The first day of the week in Europe and in systems using the ISO 8601 norm; the second day of the week in the United States of America."], "Sunday": ["The seventh day of the week in Europe and in systems using the ISO 8601 standard, or the first day of the week in the United States of America, the Sabbath for most Christians."], "Saturday": ["The sixth day of the week in Europe and in systems using the ISO 8601 norm; the seventh day of the week in the United States of America."], "Wayuu": ["An indigenous language spoken in Venezuela and Colombia."], "quarter": ["Any of the four equal parts into which something has been divided.", "A period of three months.", "A part of a town with its own particular features and distinctive characteristics which give it a certain unity and identity.", "To divide into four (equal) parts.", "To provide housing for military personnel or other equipment.", "A coin worth 25 cents."], "fourth": ["Any of the four equal parts into which something has been divided.", "The ordinal form of the cardinal number, four; that which comes after the third."], "then": ["At a given time in the past.", "Soon after this; following in chronological order.", "[Used to indicate something that happens if or when something else happens.]", "Next in order.", "[Introducing a statement contrasted with the preceding.]", "The time referred to.", "Being so at that time.", "[Used as a particle of inference.]"], "Bambara": ["The language spoken in Mali, Burkina Faso and the Ivory Coast."], "Limburgish": ["A group of Franconian dialects spoken mainly in Belgian and Dutch Limburg."], "six": ["The cardinal number occurring after five and before seven, represented in Roman numerals as VI, in Arabic numerals as 6.", "The digit \"6\".", "The sixth of the natural numbers (6)"], "seven": ["The cardinal number occurring after six and before eight, represented in Roman numerals as VII, in Arabic numerals as 7.", "The digit \"7\".", "The seventh natural number (7)."], "eight": ["The cardinal number occurring after seven and before nine, represented in Roman numerals as VIII, in Arabic numerals as 8.", "The digit \"8\".", "The eigth natural number (8)."], "eleven": ["The cardinal number occurring after ten and before twelve, represented in Roman numerals as XI, in Arabic numerals as 11."], "twelve": ["The cardinal number occurring after eleven and before thirteen, represented in Roman numerals as XII and in Arabic numerals as 12."], "thirteen": ["The cardinal number occurring after twelve and before fourteen, represented in Roman numerals as XIII and in Arabic numerals as 13."], "fourteen": ["The cardinal number occurring after thirteen and before fifteen, represented in Roman numerals as XIV and in Arabic numerals as 14."], "fifteen": ["The cardinal number occurring after fourteen and before sixteen, represented in Roman numerals as XV and in Arabic numerals as 15."], "sixteen": ["The cardinal number occurring after fifteen and before seventeen, represented in Roman numerals as XVI and in Arabic numerals as 16."], "seventeen": ["The cardinal number occurring after sixteen and before eighteen, represented in Roman numerals as XVII and in Arabic numerals as 17."], "twenty": ["The cardinal number occurring after nineteen and before twenty-one, represented in Roman numerals as XX and in Arabic numerals as 20."], "eighteen": ["The cardinal number occurring after seventeen and before nineteen, represented in Roman numerals as XVIII and in Arabic numerals as 18."], "nineteen": ["The cardinal number occurring after eighteen and before twenty, represented in Roman numerals as XIX and in Arabic numerals as 19."], "quince": ["A hard, acid-tasting and astringent fruit of the quince tree (Cydonia oblonga), used to make preserves, jellies and puddings."], "thirty": ["The cardinal number occurring after twenty-nine and before thirty-one, represented in Roman numerals as XXX and in Arabic numerals as 30."], "forty": ["The cardinal number occurring after thirty-nine and before forty-one, represented in Roman numerals as XL and in Arabic numerals as 40."], "fifty": ["The cardinal number occurring after forty-nine and before fifty-one, represented in Roman numerals as L and in Arabic numerals as 50."], "sixty": ["The cardinal number occurring after fifty-nine and before sixty-one, represented in Roman numerals as LX and in Arabic numerals as 60."], "seventy": ["The cardinal number occurring after sixty-nine and before seventy-one, represented in Roman numerals as LXX and in Arabic numerals as 70."], "eighty": ["The cardinal number occurring after seventy-nine and before eighty-one, represented in Roman numerals as LXXX and in Arabic numerals as 80."], "ninety": ["The cardinal number occurring after eighty-nine and before ninety-one, represented in Roman numerals as XC and in Arabic numerals as 90."], "hundred and one": ["The cardinal number occurring after hundred and before hundred and two, represented in Roman numerals as CI and in Arabic numerals as 101."], "one hundred and one": ["The cardinal number occurring after hundred and before hundred and two, represented in Roman numerals as CI and in Arabic numerals as 101."], "wet": ["Covered with or impregnated with liquid.", "(Of the air) Containing a high quantity of water vapor."], "heterosexual": ["Sexually attracted to members of the opposite gender."], "Novara": ["Capital of the Province of Novara, in Piedmont, Italy", "A province in the Piedmont region of Italy."], "general affairs": ["The usual daily proceedings of a company or agency. General issues without a specific significance."], "cheek": ["The soft skin on each side of the face, between the eyes and the chin; the outer surface of the sides of the oral cavity.", "Nearly arrogant courage; utter audacity, effrontery or impudence; supreme self-confidence."], "Association of Southeast Asian Nations": ["Association of Southeast Asian Nations. Regional organization of states of Southeast Asia created on august 8th, 1967."], "recyclable material": ["Recyclable material from any manufacturing process or discarded consumer products."], "Bonn": ["City in Germany, from 1949 to 1990 capital of West Germany, until 1999 seat of the government, now seat of several ministries bearer of the title \"Bundesstadt\". Located in the south of Northrhine-Westphalia on both sides of the Rhine river."], "Amsterdam": ["The capital city of the Netherlands."], "sky": ["Outer space visible from the Earth's surface, infinitely extending above us and\\nlimited by the horizon.", "The part of the earth's atmosphere and space outside it that is visible from earth's surface. During the day it is perceived as blue, and at night as black.", "The space above the earth's surface where planes fly."], "pebble": ["A small (and usually irregular) piece of mineral, approximately 20-200 mm in diameter.", "Small stone abraded by water."], "rainbow": ["A multicoloured arc in the sky caused by the refraction of light within droplets of rain in the air."], "Veneto": ["A region in the North East of Italy; it borders Austria to the North, Friuli-Venezia Giulia to the East, Emilia-Romagna to the South, Lombardia and Trentino-Alto Adige to the West."], "Madrid": ["The capital city of Spain.", "ISO 639-6 entity"], "twenty-one": ["The cardinal number occurring after twenty and before twenty-two, represented in Roman numerals as XXI and in Arabic numerals as 21."], "twenty-two": ["The cardinal number occurring after twenty-one and before twenty-three, represented in Roman numerals as XXII and in Arabic numerals as 22."], "twenty-three": ["The cardinal number occurring after twenty-two and before twenty-four, represented in Roman numerals as XXIII and in Arabic numerals as 23."], "twenty-four": ["The cardinal number occurring after twenty-three and before twenty-five, represented in Roman numerals as XXIV and in Arabic numerals as 24."], "twenty-five": ["The cardinal number occurring after twenty-four and before twenty-six, represented in Roman numerals as XXV and in Arabic numerals as 25."], "twenty-six": ["The cardinal number occurring after twenty-five and before twenty-seven, represented in Roman numerals as XXVI and in Arabic numerals as 26."], "twenty-seven": ["The cardinal number occurring after twenty-six and before twenty-eight, represented in Roman numerals as XXVII and in Arabic numerals as 27."], "twenty-eight": ["The cardinal number occurring after twenty-seven and before twenty-nine, represented in Roman numerals as XXVIII and in Arabic numerals as 28."], "twenty-nine": ["The cardinal number occurring after twenty-eight and before thirty, represented in Roman numerals as XXIX and in Arabic numerals as 29."], "thirty-one": ["The cardinal number occurring after thirty and before thirty-two, represented in Roman numerals as XXXI and in Arabic numerals as 31."], "thirty-two": ["The cardinal number occurring after thirty-one and before thirty-three, represented in Roman numerals as XXXII and in Arabic numerals as 32."], "thirty-three": ["The cardinal number occurring after thirty-two and before thirty-four, represented in Roman numerals as XXXIII and in Arabic numerals as 33."], "thirty-four": ["The cardinal number occurring after thirty-three and before thirty-five, represented in Roman numerals as XXXIV and in Arabic numerals as 34."], "thirty-five": ["The cardinal number occurring after thirty-four and before thirty-six, represented in Roman numerals as XXXV and in Arabic numerals as 35."], "thirty-six": ["The cardinal number occurring after thirty-five and before thirty-seven, represented in Roman numerals as XXXVI and in Arabic numerals as 36."], "thirty-seven": ["The cardinal number occurring after thirty-six and before thirty-eight, represented in Roman numerals as XXXVII and in Arabic numerals as 37."], "thirty-eight": ["The cardinal number occurring after thirty-seven and before thirty-nine, represented in Roman numerals as XXXVIII and in Arabic numerals as 38."], "thirty-nine": ["The cardinal number occurring after thirty-eight and before forty, represented in Roman numerals as XXXIX and in Arabic numerals as 39."], "above": ["In or to a higher place; higher than; on or over the upper surface.", "Figuratively, higher than; superior to, in any respect; higher in measure or degree than.", "Surpassing in number or quantity; more than.", "At the top.", "At an earlier place.", "Appearing earlier in the same text.", "An earlier section of a written text."], "add": ["To state in addition; to say further.", "To join or unite, as one thing to another, or as several particulars, so as to increase the number, augment the quantity, enlarge the magnitude, or so as to form into one aggregate; to sum up; to put together mentally, as, to add numbers; to add up a column.", "To apply a quality on (a person).", "To perform the arithmetical operation of addition.", "To constitute an addition."], "punctuation mark": ["A written sign used to mark the structure of a written text; either in between sentences or within sentences."], "agree": ["Come to a mutual understanding or agreement or a common plan, to create an appointment, harmonize mutual ideas about a presumed future.", "To be in accord in opinion, statement, or action; to be in unison or concord; to be united or consistent.", "To achieve harmonized in opinion, feeling, statement, or action; to get in unison or concord; to get united or consistent.", "To correspond in gender, number, case, or person.", "To be compatible, similar or consistent; coincide in their characteristics.", "To be in accord.", "To consent or assent to a condition, or agree to do something."], "take": ["To grasp with the hands.", "To grab and move to oneself.", "To get into one's possession", "To gain a position by force.", "To carry, particularly to a particular destination.", "To make a choice from a number of alternatives.", "Soutenir ou porter sans \u00e9chouer ou se casser.", "(baseball) To not swing at a pitch.", "To ingest food, medicine, drugs, etc.", "To interpret something in a certain way; convey a particular meaning or impression.", "To transport toward somewhere; to take something or somebody with oneself somewhere.", "To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly.", "To accept without verification or proof.", "To point or cause to go (blows, weapons, or objects such as photographic equipment) towards", "To receive, especially with a consent, with favour or with approval, something given or offered.", "To acquire or catch (a disease, something noxious, bad condition).", "To travel or go by means of a certain kind of transportation (e.g. a bus), or a certain route (e.g. Route 1)."], "Tokyo": ["A city in Japan, seat of the Japanese government and de facto capital of Japan."], "Tokyo Prefecture": ["One of the Prefectures of Japan. It consists of the 23 \"special wards\" that make up Tokyo city, the Tama region west of them, and the Izu and Ogasawara Islands to the south."], "power cut": ["A large-scale disruption in electric power supply."], "malady": ["A definite pathological process having a characteristic set of signs and symptoms which are detrimental to the well-being of the individual.", "An injury, disorder or disease that causes physical or mental suffering to the affected person or animal."], "leave": ["To give up control of, to surrender.", "To move away from a place, a situation or a talk.", "To move out of or depart from.", "To give the custody, care, use etc., to leave in the hands of.", "To go away from a place; to leave."], "take a walk": ["To walk around on foot without a specific goal, just for breathing fresh air or excercise."], "Beijing": ["The capital of the People's Republic of China. Literally \"Northern Capital\". The political and cultural center of China, with a history of more than 3000 years."], "go for a walk": ["To walk around on foot without a specific goal, just for breathing fresh air or excercise."], "go for a stroll": ["To walk around on foot without a specific goal, just for breathing fresh air or excercise."], "acquaintance": ["A person that someone has met repeatedly, and has a superficial knowledge of."], "German Democratic Republic": ["A German socialist state, founded on October 7th 1949 in the Soviet sectors of Germany. It acceded to the Federal Republic of Germany on October 3rd, 1990, the German reunification."], "GDR": ["A German socialist state, founded on October 7th 1949 in the Soviet sectors of Germany. It acceded to the Federal Republic of Germany on October 3rd, 1990, the German reunification."], "knight": ["A piece in the game of chess often shaped to resemble the head of a horse.", "A title of nobilty or gentility applied exclusively to males, originating in the Middle Ages. Their principal duty was to fight as heavy cavalry."], "whinge": ["To complain or protest in an excessive, annoying or persistent way."], "whine": ["To complain or protest in an excessive, annoying or persistent way."], "forty-nine": ["The cardinal number occurring after forty-eight and before fifty, represented in Roman numerals as XLIX and in Arabic numerals as 49."], "forty-eight": ["The cardinal number occurring after forty-seven and before forty-nine, represented in Roman numerals as XLVIII and in Arabic numerals as 48."], "forty-seven": ["The cardinal number occurring after forty-six and before forty-eight, represented in Roman numerals as XLVII and in Arabic numerals as 47."], "forty-six": ["The cardinal number occurring after forty-five and before forty-seven, represented in Roman numerals as XLVI and in Arabic numerals as 46."], "forty-five": ["The cardinal number occurring after forty-four and before forty-six, represented in Roman numerals as XLV and in Arabic numerals as 45."], "forty-four": ["The cardinal number occurring after forty-three and before forty-five, represented in Roman numerals as XLIV and in Arabic numerals as 44."], "forty-three": ["The cardinal number occurring after forty-two and before forty-four, represented in Roman numerals as XLIII and in Arabic numerals as 43."], "forty-two": ["The cardinal number occurring after forty-one and before forty-three, represented in Roman numerals as XLII and in Arabic numerals as 42."], "forty-one": ["The cardinal number occurring after forty and before forty-two, represented in Roman numerals as XLI and in Arabic numerals as 41."], "fifty-nine": ["The cardinal number occurring after fifty-eight and before sixty, represented in Roman numerals as LIX and in Arabic numerals as 59."], "fifty-eight": ["The cardinal number occurring after fifty-seven and before fifty-nine, represented in Roman numerals as LVIII and in Arabic numerals as 58."], "fifty-seven": ["The cardinal number occurring after fifty-six and before fifty-eight, represented in Roman numerals as LVII and in Arabic numerals as 57."], "fifty-six": ["The cardinal number occurring after fifty-five and before fifty-seven, represented in Roman numerals as LVI and in Arabic numerals as 56."], "fifty-five": ["The cardinal number occurring after fifty-four and before fifty-six, represented in Roman numerals as LV and in Arabic numerals as 55."], "fifty-four": ["The cardinal number occurring after fifty-three and before fifty-five, represented in Roman numerals as LIV and in Arabic numerals as 54."], "fifty-three": ["The cardinal number occurring after fifty-two and before fifty-four, represented in Roman numerals as LIII and in Arabic numerals as 53."], "fifty-two": ["The cardinal number occurring after fifty-one and before fifty-three, represented in Roman numerals as LII and in Arabic numerals as 52."], "fifty-one": ["The cardinal number occurring after fifty and before fifty-two, represented in Roman numerals as LI and in Arabic numerals as 51."], "handpicked": ["Very carefully and cautiously selected."], "tired": ["In need of some rest or sleep, usually as a result of hard work or physical activity.", "Repeated too often; overfamiliar through overuse."], "Germany": ["A central European country, with capital Berlin."], "Oslo": ["The capital and largest city of Norway."], "Kyoto": ["A city in the Kansai region of Japan, with a population close to 1.5 million. Until 1868 the imperial capital of Japan. The capital of Kyoto Prefecture."], "UNESCO World Heritage Site": ["A specific site (such as a forest, mountain range, lake, desert, building, complex, or city) that has been nominated and confirmed for inclusion on the list maintained by the international World Heritage Programme administered by the UNESCO World Heritage Committee, composed of 21 State Parties (countries) which are elected by the General Assembly of States Parties for a fixed term (similar to the United Nation's Security Council)."], "World Heritage Site": ["A specific site (such as a forest, mountain range, lake, desert, building, complex, or city) that has been nominated and confirmed for inclusion on the list maintained by the international World Heritage Programme administered by the UNESCO World Heritage Committee, composed of 21 State Parties (countries) which are elected by the General Assembly of States Parties for a fixed term (similar to the United Nation's Security Council)."], "UNESCO World Heritage": ["All sites and immaterial culture that has been nominated and confirmed for inclusion on the list maintained by the international World Heritage Programme administered by the UNESCO World Heritage Committee."], "moe": ["A slang word used within anime fandom originally referring to fetish for or love for characters in video games or anime and manga."], "Mo\u00e9": ["A slang word used within anime fandom originally referring to fetish for or love for characters in video games or anime and manga."], "Hokkaido": ["The northernmost of the four Japanese main islands and one of the prefectures of Japan."], "older sister": ["A female with more years of age than one or more of her siblings."], "elder sister": ["A female with more years of age than one or more of her siblings."], "big sister": ["A female with more years of age than one or more of her siblings."], "big brother": ["A male with more years of age than one or more of his siblings."], "older brother": ["A male with more years of age than one or more of his siblings."], "elder brother": ["A male with more years of age than one or more of his siblings."], "younger brother": ["A male with fewer years of age than one or more of his siblings."], "little brother": ["A male with fewer years of age than one or more of his siblings.", "A male with fewer years of age than all of his siblings."], "little sister": ["A female who is younger than one or more of her siblings."], "younger sister": ["A female who is younger than one or more of her siblings."], "hazel": ["The plant that produces the hazelnut. Botanical name: Corylus avellana.", "A deep red-orange colour, including the colour of hazelnuts; RAL Code 8011."], "door": ["An opening, or passage in a fence or wall; the entrance through which you enter or leave a room or building.", "A moveable barrier that can be closed or open to control access to a building, a room, a car, an area, etc."], "vulnerable species": ["A species that is likely to become endangered in the near future."], "absorption": ["The taking in of fluids or other substances by cells or tissues.", "The process in which radiant energy is retained by a substance."], "administrative court": ["An independent, specialized judicial tribunal in which judges or officials are authorized by a government agency to conduct hearings and render decisions in proceedings between the government agency and the persons, businesses or other organizations that it regulates.\\n(Source: BLD)"], "Munich": ["The capital of the German Federal State of Bavaria and Germany's third largest city."], "Bavaria": ["A Free State (German: Freistaat), with an area of 70,553 km\u00b2 and 12.4 million inhabitants, the southernmost state of today's Germany. Its capital is Munich."], "agreement": ["The coming together in accord of two minds on a given proposition. In law, a concord of understanding and intention between two or more parties with respect to the effect upon their relative rights and duties, of certain past or future facts or performances. The consent of two or more persons concerning respecting the transmission of some property, right, or benefits, with the view of contracting an obligation, a mutual obligation.\\n(Source: WESTS)", "A convention, or promise of two or more parties, by deed in writing, signed, and delivered, by which either of the parties pledges himself to the other that something is either done, or shall be done, or shall not be done, or stipulates for the truth of certain facts.\\n(Source: WESTS)", "The oral or written statement of an exchange of promises.", "In agreement with."], "insulation": ["The process of preventing or reducing the transmission of electricity, heat, or sound to or from a body, device, or region by surrounding it with a nonconducting material.\\n(Source: CED)"], "bigger": ["Comparative of big."], "obscure": ["Known vaguely or incompletely, if at all.", "To hide from view.", "Marked by difficulty of style or expression.", "Expressed in an unclear fashion.", "Difficult to find."], "mayor": ["The leader of a city or municipality.", "The female leader of a city or municipality.", "The male leader of a city or municipality."], "mayoress": ["The female leader of a city or municipality."], "older": ["Comparative of old."], "ringing": ["Attachment of a numbered ring to the leg of a bird so that its movements can be recorded.", "Loud and clear."], "empathy": ["The sympathetic identification and understanding of someone else's feelings or motives."], "finish": ["To end something, to bring something to a conclusion.", "The end of something; a goal that is / was to accomplish (noun)", "A protective coating applied to a surface to shield it from moisture and scratches", "To apply a treatment to (a surface, etc).", "To have an end, in a temporal, spatial, or quantitative sense; either spatial or metaphorical."], "dichloro-diphenyl-trichloroethane": ["A persistent organochlorine insecticide, also known as dichlorodiphenyltrichloroethane, that was introduced in the 1940s and used widely because of its persistence (meaning repeated applications were unnecessary), its low toxicity to mammals and its simplicity and cheapness of manufacture. It became dispersed all over the world and, with other organochlorines, had a disruptive effect on species high in food chains, especially on the breeding success of certain predatory birds. DDT is very stable, relatively insoluble in water, but highly soluble in fats. Health effects on humans are not clear, but it is less toxic than related compounds. It is poisonous to other vertebrates, especially fish, and is stored in the fatty tissue of animals as sublethal amounts of the less toxic DDE. Because of its effects on wildlife its use in most countries is now forbidden or strictly limited.\\n(Source: MGH / ALL)"], "EU": ["The 27 nations (Austria, Belgium, Bulgaria, Cyprus, Czechia, Denmark, Estiona, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Luxembourg, Malta, the Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden and the UK) that have joined together to form an economic community with common monetary, political and social aspirations."], "IMF": ["An international organization established in 1944, affiliated with the United Nations that acts as an international bank facilitating the exchange of national currencies and providing loans to member nations."], "energy cell": ["The basic building block of a battery. It is an electrochemical device consisting of an anode and a cathode in a common electrolyte kept apart with a separator. This assembly may be used in its own container as a single cell battery or be combined and interconnected with other cells in a container to form a multicelled battery."], "cell": ["The microscopic functional and structural unit of all living organisms, consisting of a nucleus, cytoplasm, and a limiting membrane.", "The basic building block of a battery. It is an electrochemical device consisting of an anode and a cathode in a common electrolyte kept apart with a separator. This assembly may be used in its own container as a single cell battery or be combined and interconnected with other cells in a container to form a multicelled battery."], "Galvanic cell": ["The basic building block of a battery. It is an electrochemical device consisting of an anode and a cathode in a common electrolyte kept apart with a separator. This assembly may be used in its own container as a single cell battery or be combined and interconnected with other cells in a container to form a multicelled battery."], "electrochemical cell": ["The basic building block of a battery. It is an electrochemical device consisting of an anode and a cathode in a common electrolyte kept apart with a separator. This assembly may be used in its own container as a single cell battery or be combined and interconnected with other cells in a container to form a multicelled battery."], "scrape": ["To move an object against another object such that abrasion or minor cutting occurs.", "A broad, shallow injury left by scraping."], "foam": ["A mass of adjacent small pockets of air or bubbles with solid or liquid boundaries.", "To create foam."], "resolution": ["A formal expression of the opinion of an official body or a public assembly, adopted by vote, as a legislative resolution.", "The conclusion or end to which any course or condition of things leads.", "The act of intending to do something.", "The degree of fineness with which an image can be recorded or produced, often expressed as the number of pixels per unit of length (typically an inch)."], "low-cost construction": ["A way to construct houses and other buildings in a cost-effective way."], "corn on the cob": ["An ear of sweetcorn that is cooked and served whole and eaten from its cob (usually with butter)."], "Honshu": ["The largest island of Japan, called the Mainland; it is south of Hokkaido across the Tsugaru Strait, north of Shikoku across the Inland Sea, and northeast of Kyushu across the Kanmon Strait. It is the seventh largest island, and the second most populous island in the world."], "mainland": ["A large and continuous mass of land representing most of a region or a country but excluding outlying islands.", "A large piece of land as seen from the outlying islands belonging to the same political entity."], "Padua": ["Capital of the Province of Padua, in the Region Veneto, Italy.", "Province of the region Veneto, Italy."], "both": ["One and the other of two people or things."], "Firenze": ["The fictional centaur that teaches Divination at Hogwarts (from the Harry Potter series by JK Rowling)."], "Florence": ["The capital city of Tuscany, a region in Italy.", "A province in the Tuscany region of Italy."], "digestion": ["The reduction in volume and the decomposition of highly putrescible organic matter to relatively stable or inert organic and inorganic compounds. Sludge digestion is usually done by aerobic organisms in the absence of free oxygen.", "The process, in the gastrointestinal tract, by which food is converted into substances that can be utilized by the body."], "cutting": ["The act or process of felling or uprooting standing trees.", "In plant propagation, young shoots or stems removed for the purpose of growing new plants by vegetatively rooting the cuttings."], "quill": ["A writing implement, made from a bird's feather.", "Part of the central axis of a feather, which bears no barbs and which is implanted in the skin."], "quill pen": ["A writing implement, made from a bird's feather."], "hearing": ["The general perceptual behaviour and the specific responses made in relation to sound stimuli."], "Kingdom of the Netherlands": ["A country in Europe, north of Belgium, officially the Kingdom of the Netherlands. Also existing of the Netherlands Antilles and Aruba, with capital Amsterdam."], "axle": ["The central part of a wheel, that usually does not turn."], "remains": ["That which is left behind of a body, especially after cremation or decay.", "The physical structure of a dead animal or person."], "carcass": ["The body of a dead animal, on which other animals have begun to feed.", "A dead body.", "The dead body of an animal."], "recipe": ["A set of instructions (typically consisting of ingredients and a method) for creating something (usually a food product or dish)."], "speculaas": ["A set of spices (predominantly cinnamon) that are used in the making of certain types of shortbread biscuits.", "A type of shortbread biscuit (typically made for consumption on December 5 - St. Nicholas' Eve) that is traditionally stamped with an image or figure on the front."], "translation": ["The act of converting words and texts from one language to another.", "The result of converting words and texts from one language to another.", "Move of an object to a new location without change in the size or orientation of an object.", "The process during which the information in mRNA molecules is used to construct proteins.", "The process of transforming all or part of a source program into a program image that contains all the information needed for the program to run."], "interpretation": ["An explanation of something that is not immediately obvious."], "dummy": ["A rubber or plastic nipple that is put into a baby's mouth in order to comfort or quiet.", "A person, especially a large male, who is clumsy or a simpleton; an idiot."], "drainage basin": ["An area of land where all rainwater and melting snow naturally moves to the same body of water."], "balance": ["An equality between the sums total of the two sides of an account, or the excess on either side.", "A tool to measure the weight of something.", "A state of equilibrium."], "database": ["A computerised compilation of data, facts and records that is organised for convenient access, management and updating."], "Cinderella": ["A popular fairy tale, best known is the version by Charles Perrault and the later Disney movie."], "Thunderball": ["The title of a 1965 James Bond movie starring Sean Connery."], "grave": ["A place (commonly marked with a headstone) where one or more people are buried (usually in a coffin underneath the ground).", "(Very) serious.", "Causing fear or anxiety by threatening great harm."], "sponge cake": ["A light, soft, baked dessert (commonly layered with cream and jam) that is typically made with flour, sugar, baking powder and eggs."], "sponge": ["An member of any of the species belonging to the phylum Porifera. They are marine porous animals.", "A piece of porous material used for washing."], "spotted dick": ["A sweet steamed pudding (made mainly from eggs, flour, spices, dried fruit and suet) that is especially popular in the United Kingdom."], "continue": ["To restart a previously terminated action.", "To maintain an action, state or condition without interruption.", "To continue talking."], "table": ["A piece of furniture that generally consists of a hard, flat, horizontal surface, which is elevated and stabilised by 3 or more legs (usually 4).", "A systematic arrangement of data, usually in rows and columns.", "A company of people assembled at a table for a meal or game.", "A piece of furniture with tableware for a meal laid out on it.", "Flat tableland with steep edges.", "Food or meals in general.", "To arrange or enter in tabular form.", "A set of data elements (values) that is organized using a model of columns (which are identified by their name) and rows."], "nautical chart": ["A map for navigation that delineates a portion of the sea, indicating the outline of the coasts and the position of rocks, sandbanks and other parts of a sea."], "fireball": ["A magic spell that creates a hot explosion of fire (in Fantasy and Roleplaying games).", "A very bright meteor which can be much brighter than any star."], "jet lag": ["Physiological ailments like headache and nausea, caused by the readjustment of the inner clock of the body to the time difference after a long-distance flight."], "hangover": ["The sickness, nausea and headaches that occur the morning after a person drinks too much alcohol."], "Hanover": ["The capital of the federal state of Lower Saxony (Niedersachsen), Germany, situated on the river Leine. Seat of CeBIT, Hannover Messe (Hannover exposition) and Expo 2000."], "xylophone": ["Musical instrument made of wooden bars each shaped to resonate at a given pitch when struck."], "sleeping bag": ["A padded or insulated bag large enough to surround the whole body and which keeps the user warm while sleeping, used as a substitute for a bed."], "immortal": ["Not able to die (in terms of a person or creature).", "A person or creature that is not able to die.", "Not susceptible to death or aging, never dying or growing older."], "mortal": ["Having to die eventually (in terms of a person or creature).", "A person that will die eventually."], "has": ["The third person singular present indicative of the verb \"to have\"."], "have": ["To ingest food, medicine, drugs, etc.", "To be in possession (of an object).", "To be in a given relationship to a person.", "Auxiliary verb used in forming the perfect aspect.", "To release an offspring from one's own body; to cause to be born.", "To have specific characteristics.", "To hold or possess either in an abstract or concrete sense.", "To contain as parts of itself.", "To be affected with, to be possessed by.", "To be under the obligation to.", "To hold in the mind.", "To experience, to attain, to enjoy.", "To assert, to phrase.", "To possess by obtaining or receiving.", "To engage in sexual intercourse with.", "To catch someone in an argument.", "To trick someone.", "To wish, or require that something be done.", "To possess, as an educational achievement; to understand; to be versed in.", "To partake of a particular substance (especially a food or drink) or action.", "To allow, bear, or suffer.", "[Used to express preference, when the past subjunctive form (had) is combined with an adjective in the comparative or superlative]", "Used as interrogative auxiliary verb with a following pronoun to form tag questions.", "To go through (mental or physical states or experiences)."], "raindrop": ["A single droplet of rainwater that has just fallen or is falling from the sky."], "wheel arch": ["The recess at the side of a car's body that the wheels are in."], "chip": ["An area of an object (such as a mug or plate) where a small piece has broken off, rendering the object damaged.", "A small fragment of something broken off from the whole."], "crisp": ["A thin slice of potato (baked until firm and brittle, then seasoned) that is commonly sold in packets and comes in various flavours.", "Abruptly or brusquely short."], "air sac": ["A tiny, thin-walled, capillary-rich sac in the lungs where the exchange of oxygen and carbon dioxide takes place."], "everybody": ["All of the people in a group.", "Every person."], "dewdrop": ["A single droplet of dew while it remains on the object it formed upon."], "further": ["To help to advance (in terms of knowledge).", "In addition to what has been said.", "More or continued.", "At a more advanced or later point in a trajectory (such as a journey).", "(The quantity) Whereby things are increased.", "To promote the growth of."], "farther": ["At a more advanced or later point in a trajectory (such as a journey)."], "tomb": ["A place (commonly marked with a headstone) where one or more people are buried (usually in a coffin underneath the ground)."], "hammer home": ["To repeatedly or continually emphasise (an opinion or idea) until or so that a person or group of people understands it."], "drive home": ["To repeatedly or continually emphasise (an opinion or idea) until or so that a person or group of people understands it.", "To move (in a car or other vehicle) to the place where one lives or is staying."], "impact": ["To impact with another object, resulting in a change of direction and/or velocity of one or both objects.", "Impression, consequence or effect.", "The striking of one body against another."], "bump": ["To impact with another object, resulting in a change of direction and/or velocity of one or both objects.", "A local swelling on the skin caused by illness or injury.", "To encounter something by accident or after searching for it.", "A hard and loud hit received by someone when falling."], "lapidate": ["To kill or excecute (a person) by throwing rocks or boulders at and on them."], "Hamburger": ["A person who is originally from Hamburg or who currently lives in Hamburg"], "snowflake": ["An agglomeration of ice crystals falling from the sky."], "am": ["The first person singular present indicative of the verb \"to be\"."], "hailstone": ["A small pellet of ice falling from the sky."], "12-acetylactein": ["Actein with an acetyl group on the 12th carbon atom of the main chain."], "non governmental organisation": ["A non-profit group or association that acts outside of institutionalized political structures and pursues matters of interest to its members by lobbying, persuasion, or direct action."], "sodium": ["A soft silvery metallic element with the symbol Na and atomic number 11, occurs principally as table salt (sodium chloride) and as the minerals amphibole, cryolite, halite, zeolite."], "storage": ["A series of actions undertaken to deposit or hold goods, materials or waste in some physical location, as in a facility, container, tank or dumping site.", "Computer components, devices and recording media that retain data for some interval of time."], "stock": ["A group of individuals of one species within a specified area.\\n(Source: LBC)", "The descendants of one individual."], "substitutability": ["The capability of being replaced by another substance or object, for example, sweeteners being used in the place of sugar."], "thumb": ["To try to get a ride in a passing vehicle while standing at the side of a road. Generally by either sticking out ones thumb or holding a sign with one's stated destination.", "The shortest and thickest of the fingers that can be placed against the others in order to create a firm grip."], "long finger": ["The middle and the longest of the fingers."], "ring finger": ["The finger between the long finger and the little finger."], "little finger": ["The smallest finger of a hand."], "potassium": ["A silvery-white metallic alkali metal element with the symbol K and atomic number 19, occurs principally as component of sea water and in several minerals like carnallite, polyhalite and sylvite. It is being used as fertilizer as either the chloride, sulfate or carbonate."], "honey bee": ["A stinging, social, domesticated insect (Apis mellifera) kept by humans for the creation of beeswax and honey."], "pain": ["An unpleasant, usually localised physical sensation that is often the result of an injury, disease or other ailment.", "Something which annoys."], "want": ["To have a strong desire for something."], "harp": ["A stringed musical instrument (part of the classic symphony orchestra) that is stroked or plucked with the fingers and consists of an upright frame strung with multiple strings."], "lot": ["Anything that is used to determine a result randomly, by chance or without man's choice or will (such as a die, stone or slip of paper).", "A great number or large amount of things not placed in a pile.", "The part, or outcome, that falls to one, as it were, by chance, or without his planning.", "A large quantity or number.", "A number of things taken collectively; any collection in its entirety.", "One or more items auctioned or sold as a unit, separate from other items.", "A portion or plot of land with defined borders, usually smaller than a field.", "A motion-picture studio and its surrounding property.", "A distinct portion or parcel of something, usually merchandise.", "Kind of person.", "To divide or distribute by lot.", "To assign to someone as his or her lot.", "To divide a piece of land into lots.", "A number of people of the same kind, or associated in some way, taken collectively.", "That which is assigned to a person as his share or portion.", "A method of deciding something (like the winner of a prize or the person who will do a task) by casting or drawing a lot [object used to determine a result randomly].", "All members of a set."], "score": ["The final or running total of points gained or won (by an individual or team) in a game, sports match or other competitive event.", "To remember or count the final or running total of points gained or won (by an individual or team) in a game, sports match or other competitive event.", "To earn one or more points in a game, sports match or other competitive event.", "To scratch (usually paper or cardboard) along a line or curve in order that folding it is easier; to make small marks into the surface of.", "The paper representation (usually including all of the musical parts in the piece) of a piece of music or musical composition or work.", "To take part in sexual activity (most commonly sexual intercourse) with another person for the purposes of sexual pleasure.", "To induce (a person) to consent to sexual relation."], "partition": ["To divide an object, area or space into sections or parts.", "A separately formatted section of a hard drive."], "brainbox": ["An intelligent person."], "have sex": ["To take part in sexual intercourse with a member of the opposite gender for the purposes of reproduction.", "To take part in sexual activity (most commonly sexual intercourse) with another person for the purposes of sexual pleasure.", "To take part in sexual intercourse.", "To have sex with."], "make love": ["To take part in sexual intercourse with a member of the opposite gender for the purposes of reproduction.", "To take part in sexual intercourse.", "To have sex with."], "shag": ["To take part in sexual activity (most commonly sexual intercourse) with another person for the purposes of sexual pleasure."], "assassinate": ["To deliberately and purposely end the life of a political, public or other significant figure, usually publically."], "salient": ["Immediately noticeable or standing out."], "prominent": ["Immediately noticeable or standing out."], "wealth": ["An abundance, plenty or great amount of something (usually money).", "Feeling well with a high standard of living."], "conspicuous": ["Immediately noticeable or standing out.", "Without any attempt at concealment; completely obvious."], "vent": ["To talk about or express a person's angers, grievances or worries, without necessarily expecting a response.", "The opening at the Earth's surface through which volcanic materials (lava, tephra, and gases) erupt.", "To give expression or utterance to.", "To expose to cool or cold air so as to cool or freshen."], "loom": ["A frame or machine (made of wood or other material) in which a weaver forms cloth out of thread; a machine for interweaving yarn or threads into a fabric."], "hunger pang": ["A sudden realisation (usually linked to one's tummy rumbling) that a person is very hungry or needs to eat."], "pang of hunger": ["A sudden realisation (usually linked to one's tummy rumbling) that a person is very hungry or needs to eat."], "run a mile": ["To escape, flee or leave a situation or relationship, usually as a result of a shocking or sudden announcement or revelation."], "spinning wheel": ["A device for making yarn or thread; having a single spindle and a wheel driven by hand or foot."], "boo": ["An exclamation that is said in order to scare or surprise a person.", "(Interjection) An exclamation used by a member of an audience, as at a stage play or sports game, to indicate derision or disapproval.", "An exclamation used by a member of an audience, as at a stage play or sports game, to indicate derision or disapproval.", "To shout extended exclamations of disapproval and derision at.", "To shout extended exclamations of disapproval and derision."], "fast food": ["A type of meal that is often pre-prepared and served quickly."], "junk food": ["A broad group of foods with unbalanced nutritional values."], "yarn": ["A twisted strand of fiber used for knitting.", "A retelling or account of events, especially a fictional or exaggerated one."], "pronunciation": ["The way words are made to sound when spoken."], "translation dictionary": ["A dictionary that informs how a word in one language is called in another."], "gnu": ["A large hooved (ungulate) mammal of the genus Connochaetes, which includes two species, both native to Africa."], "wildebeest": ["A large hooved (ungulate) mammal of the genus Connochaetes, which includes two species, both native to Africa."], "helium": ["A colorless, odorless, tasteless, nearly inert noble gas with the symbol He and atomic number 2. It is after hydrogen the second most abundant element in the universe. It is a component of air and is being used for balloon and airship fillings, as well as for deep-sea breathing systems in combination with oxygen."], "weaving": ["The process of making woven material on a loom"], "concept": ["Something understood, and retained in the mind, from experience, reasoning or/and imagination; a generalisation (generic, basic form), or abstraction (mental impression), of a particular set of instances or occurances."], "lexeme": ["The fundamental unit of vocabulary of a language."], "xerophyte": ["A plant that is adapted to circumstances where little water is available."], "cactus": ["Any member of the family Cactaceae, a family of New World succulent plants suited to a hot, semi-desert climate."], "Paris": ["The capital and largest city of France."], "grapheme": ["A fundamental unit of a writing system."], "glyph": ["A single formed character or symbol, usually representing a letter in a font"], "font": ["A grouping of consistently-designed glyphs, having the same size, and style.", "An ornamental water feature consisting of one or more streams of water originating from a statue or other structure.", "A basin for holy water."], "typeface": ["A grouping of consistently-designed glyphs, having the same size, and style."], "manuscript": ["A work that was written by hand."], "script": ["A written document containing the dialogue and action for a drama, a stage play, movie, or other performance.", "The text of a film or a television program.", "A system of characters used to write one or several languages.", "A - usually small - computer program or program fragment written in an interpreted computer language."], "Turkey": ["Country at the intersection of Europe and Asia on the Mediterranean, with capital Ankara."], "turkey": ["Either of two species of bird in the family Meleagrididae with fan-shaped tail and wattled neck."], "Chad": ["A country in Central Africa whose capital is N'Djamena.", "A Afroasiatic language belonging to a language family spoken across northern Nigeria, Niger, Chad, Central African Republic and Cameroon, belonging to the Afroasiatic phylum."], "Security Council": ["The United Nations Security Council, the organ of the United Nations charged with maintaining peace and security among nations"], "ceasefire": ["A temporary suspension of hostilities by mutual agreement of the warring parties."], "convoy": ["A group of vehicles or ships travelling in formation for mutual support, such as resisting attacks by an enemy."], "supply": ["The willingness and ability to sell a range of quantities of a good at a range of prices, during a given time period. Supply is one half of the market exchange process; the other is demand.\\n(Source: AMOS2)", "To state in addition; to say further.", "To give what is needed or desired.", "To give in order to satisfy a necessity.", "An amount of something supplied."], "delivery": ["Transportation and/or handing over of ordered goods to the orderer."], "perjury": ["The deliberate giving of false or misleading testimony under oath."], "yield": ["Compensation for the selling of goods and services.", "Profit or income created through an investment or a business transaction.", "The accumulated volume or biomass remaining from gross production after accounting for losses due to respiration during production, herbivory, litterfall, and other factors that decrease the remaining available biomass.\\n(Source: DUNSTE)", "To stop to oppose or resist.", "To be the cause or source of (feeling, effect, etc.)", "(Economics) The quantity produced, created, or completed.", "To produce as return, as from an investment; to give or supply.", "To end resistance, as under pressure or force.", "To bring in (e.g. interests, money, etc.)."], "Genoa": ["A city and the capital of the province of Genoa, and also the capital of Liguria.", "A province in the Liguria region of Italy"], "senior": ["Comparative of old.", "Being of a high rank.", "An older person (usually considered to be above the age of 60).", "A student in his/her final year of high school or university."], "photo": ["An image captured by a camera or some other device and reproduced as a picture, usually on a sensitized surface and formed by the chemical action of light or of radiant energy."], "Pluto": ["Dwarf planet in Solar system, formerly was considered the ninth planet.", "Dog of Mickey Mouse.", "A figure of the Roman mythology, god of the Underworld."], "Huey, Dewey, and Louie": ["The nephews of Donald Duck."], "Donald Duck": ["A fictional duck with a short temper that was created by Walt Disney."], "Gone with the Wind": ["An American novel by Margaret Mitchell, published in 1936 and won the Pulitzer Prize in 1937.", "A film from 1939, adapted from Margaret Mitchell's 1936 novel of the same name."], "Pulitzer Prize": ["An annual American award given for journalism, literature, and music."], "ontology": ["The branch of metaphysics that addresses the nature or essential characteristics of existence and of things that exist.", "A hierarchical structure of concepts or entities within a domain, organised by relationships."], "bat": ["A small, nocturnal, flying mammal of the order Chiroptera, which navigates by means of echolocation. It looks like a mouse with membranous wings extending from the forelimbs to the hind limbs or tail.", "A piece of brick cut along the narrow dimension.", "Half a brick when it is cut across.", "A saddle created to secure and carry goods on an animal."], "perfidy": ["The act of violating faith or allegiance; violation of a promise or vow, or of trust reposed."], "faithlessness": ["The act of violating faith or allegiance; violation of a promise or vow, or of trust reposed."], "treachery": ["The act of violating faith or allegiance; violation of a promise or vow, or of trust reposed.", "The breaking or violation of a presumptive social contract, trust, or confidence that produces moral and psychological conflict within a relationship amongst individuals, between organizations or between individuals and organizations."], "Curious George": ["A small monkey known for his curiosity with a friend in a big yellow hat, created by H.A. Rey."], "opening": ["A, often round, piece of nothingness in some solid.", "An unoccupied employment position.", "The first few moves in a game of chess.", "The first period of a game or play,"], "beak": ["External anatomical structure of birds which is used for taking food and for eating.", "To hit lightly with a picking motion."], "competition": ["The simultaneous demand by two or more organisms or species for an essential common resource that is actually or potentially in limited supply.", "A struggle to outperform others in order to win a prize or award."], "spit the dummy": ["To overreact (as an adult) to a situation childishly, in an angry or frustrated manner."], "extinct species": ["Animal or plant species which has completely disappeared from the planet."], "teen": ["A male juvenile between the onset of puberty and maturity; in the state of development between puberty and maturity.", "A female juvenile between the onset of puberty and maturity; in the state of development between puberty and maturity.", "A person between 13 and 19 years old.", "A juvenile between the onset of puberty and maturity; in the state of development between puberty and maturity."], "teenager": ["A male juvenile between the onset of puberty and maturity; in the state of development between puberty and maturity.", "A female juvenile between the onset of puberty and maturity; in the state of development between puberty and maturity.", "A person between 13 and 19 years old.", "A juvenile between the onset of puberty and maturity; in the state of development between puberty and maturity."], "small square": ["Small square."], "coppersmith": ["A person who forges things out of copper."], "grooming": ["Caring for horses or other animals by brushing and cleaning them."], "cement mixer": ["Device that uses cement, aggregate and water to produce concrete."], "concrete mixer": ["Device that uses cement, aggregate and water to produce concrete."], "sparkling water": ["Still water into which carbon dioxide gas has been dissolved."], "carbonated water": ["Still water into which carbon dioxide gas has been dissolved."], "soda water": ["Still water into which carbon dioxide gas has been dissolved."], "seltzer water": ["Still water into which carbon dioxide gas has been dissolved."], "notebook": ["A book in which notes or memoranda are written.", "A portable computer that is small enough and light enough to be used on one's lap."], "homework": ["Work that is done at home, especially school exercises set by a teacher.", "Preliminary or preparatory work."], "case": ["A judicial examination and determination of issues between parties to action; whether they need issues of law or of fact. A judicial examination, in accordance with law of the land, of a cause, either civil or criminal, of the issues between the parties, whether of law or fact, before a court that has proper jurisdiction.", "Something that is representative of all such things in a group; an occurrence of something.", "One of several similar instances or events which are being studied and compared.", "(Grammar) An instance of grammatical case; a category of nouns, pronouns, or adjectives, specialized (usually by inflection) to indicate a particular syntactic relation to other words in a sentence.", "(Grammar) (uncountable) A set of grammatical cases or their meanings in a particular language collectively.", "A box that contains or can contain a number of identical items of manufacture.", "A piece of luggage that can be used to transport an apparatus such as a sewing machine.", "Large (usually rectangular) piece of luggage used for carrying clothes, and sometimes suits, when travelling.", "A piece of furniture, Constructios partially of transparent glass or plastic, within which items can be displayed.", "The outer covering or framework of a piece of apparatus such as a computer.", "In typography, the nature of a piece of alphabetic type, whether a \u201ccapital\u201d (upper case) or \u201csmall\u201d (lower case) letter.", "To place (an item or items of manufacture) into a box, as in preparation for shipment.", "To survey (a building or other location) surreptitiously, as in preparation for a robbery.", "The grammaticalic case in which a noun is used.", "A comprehensive term for any proceeding in a court of law whereby an individual seeks a legal remedy."], "lawsuit": ["A judicial examination and determination of issues between parties to action; whether they need issues of law or of fact. A judicial examination, in accordance with law of the land, of a cause, either civil or criminal, of the issues between the parties, whether of law or fact, before a court that has proper jurisdiction.", "Legal act\u0131on that has as a goal to have a judge take a decision.", "A comprehensive term for any proceeding in a court of law whereby an individual seeks a legal remedy."], "suitcase": ["Large (usually rectangular) piece of luggage used for carrying clothes, and sometimes suits, when travelling."], "skinny": ["(Of a person or animal) Narrow in size, and usually indicating carrying little fat."], "scrawny": ["Very thin."], "meagerly": ["In a meager way."], "thinness": ["The property of being thin."], "leanness": ["The property of being thin."], "lose weight": ["To lose weight."], "metabolomics": ["The systematic study of the unique chemical fingerprints that specific cellular processes leave behind."], "yuk": ["An expression of disgust."], "Batman": ["A DC Comics fictional character and superhero who first appeared in Detective Comics #27 in May 1939."], "practice": ["Repetition of an activity to improve skill.", "The ongoing pursuit of a craft or profession, particularly in the fine arts.", "The observance of religious duties which a Church requires of its members.", "A customary action, habit, or behavior; a manner or routine.", "To repeat an activity as a way of improving one's skill.", "To perform or execute a craft or skill.", "A pattern of behavior inherited or acquired through frequent repetition.", "To avail oneself to (e.g. a principle, a religion, common sense, etc.)."], "perseverance": ["Persistent determination to adhere to a course of action."], "insistence": ["Persistent determination to adhere to a course of action."], "assiduity": ["Steady diligence to a job."], "Scrooge McDuck": ["The rich uncle of Donald Duck."], "patience": ["The quality of being patient."], "protagonist": ["The principal character in a work of fiction."], "however": ["[Phrase implying that the following clause is contrary to prior belief].", "In spite of that.", "in opposition to this fact (Re. restriction, opposition)", "From another point of view."], "nevertheless": ["In spite of that."], "etymology": ["The science dealing with the origin and historical development of words."], "silly": ["Lacking in intelligence.", "Showing a lack of good sense, wisdom or forethought.", "A state in which a group of people is continuously making silly jokes, that can nevertheless lead to laughing fits as a reaction. Under the right circumstances, the state can maintain itself or be induced in others contageously. The use of weed (Cannabis sativa) promotes the state in some individuals, but it can also be induced by a joke or reference to an (earlier) funny event.", "Marked by lack of intellectual acuity or somewhat mentally limited."], "foolish": ["Showing a lack of good sense, wisdom or forethought.", "Marked by lack of intellectual acuity or somewhat mentally limited."], "airstrike": ["A military strike by air forces on an enemy ground position."], "air strike": ["A military strike by air forces on an enemy ground position."], "on": ["Preposition, on something.", "Having the position over a given place, location or object."], "of": ["Containing, comprising or made from."], "bomb": ["A device filled with explosives used for destroying things.", "A very attractive woman.", "A failure; an unpopular entertainment production.", "A success; an enjoyable event.", "To fail spectacularly.", "To attack by using one or more bombs."], "bombshell": ["A very attractive woman."], "bombard": ["To attack by using one or more bombs."], "flash flood": ["A rapid flooding of low-lying areas."], "google": ["To search the Internet using Google."], "horny": ["Being in a state of sexual arousal.", "Possessing horns, like a goat (a member of the Caprinae subfamily of the Bovidae family) or the devil.", "Having calluses; having skin made tough and thick through wear."], "horned": ["Possessing horns, like a goat (a member of the Caprinae subfamily of the Bovidae family) or the devil."], "sexy": ["Sexually attractive."], "through": ["With the use of; by means of.", "From one side of an opening to the other."], "shrine": ["Originally a container, especially for a relic and often a cult image, and/or a holy or sacred place containing the same."], "Lithuania": ["A baltic European country with a northern border with Latvia, eastern border with Belarus, southern border with Poland, southwestern border with the Russian enclave of Kaliningrad, and western border with the Baltic Sea."], "armchair": ["A chair with supports for the arms or elbows."], "relic": ["A part of the body of a saint or something that was owned by a saint, kept for veneration."], "begin": ["To begin an activity.", "To take the first step or steps in carrying out an action.", "To have a beginning, in a temporal, spatial, or evaluative sense.", "To set in motion, cause to start.", "To start to speak or say."], "kick the bucket": ["To cease to live."], "afternoon": ["A greeting that is said when meeting or departing in the afternoon.", "The part of the day which follows noon, between noon and evening."], "danger": ["A situation that constitutes an immediate risk for injury on a person or property."], "recent": ["Happening a short while ago."], "morning": ["The period of time from the start of the day (midnight) until midday (12:00).", "A greeting that is said when meeting or departing in the morning.", "The part of the day between dawn and midday."], "fresh": ["Not canned or frozen (e.g. vegetables).", "Not showing due respect.", "Recently made, produced, or harvested (e.g. bread, scent, etc.).", "(of a cycle) beginning or occurring again (e.g. a fresh start or idea)."], "elegant": ["Characterized by or exhibiting refinement, grace and beauty."], "chic": ["Characterized by or exhibiting refinement, grace and beauty."], "try": ["To put to the test, as for its quality, or give experimental use to.", "A score in rugby (worth 5 points) which is made by touching the ball on the ground behind the touchline.", "Earnest and conscientious activity intended to do or accomplish something.", "To exert oneself to do or effect something; to make an effort or attempt.", "To test the limits of.", "To put on trial, hear the case and act as the judge.", "To examine or hear (evidence or a case) by judicial process.", "To give pain or trouble to."], "mirror": ["A surface that reflects light.", "A smooth surface, usually made of glass with reflective material painted on the underside, that reflects light so as to give an image of what is in front of it."], "reproduction": ["Any of various processes, either sexual or asexual, by which an animal or plant produces one or more individuals similar to itself.", "Creating an exact duplicate of an original using a photographic method."], "accent": ["A mark or symbol (found in the written text of various languages) that changes the sound of the letter or the emphasis within the word when spoken.", "The way of pronouncing or annunciating words and phrases that is characteristic of a particular region or area.", "A musical mark or symbol (written above a note or chord) which indicates that the player should play it louder.", "To stress, single out as important.", "To put stress on; to utter with an accent."], "lithium": ["A soft silver white alkali metallic element with the symbol Li and atomic number 3, occurs principally as the minerals lepidolite, spodumene, and amblygonite. It is being used in a lithium ion battery."], "Lebanon": ["A country in Southwest Asia with capital Beirut."], "aye": ["A word used to show agreement or affirmation of something."], "bench": ["Seat for more than one person, narrow and long, with or without back support, made of hard materials (wood, metal), that is normally found in public places (churches, parks, etc.)."], "shoal": ["Group of a large number of fish (or other sea animals, such as dolphins or whales), normally from the same species, that swim together.", "A somewhat linear landform within or extending into a body of water, typically composed of sand, silt or small pebbles."], "Greenland": ["A self-governing island that is a territory of Denmark."], "Middle East": ["The region comprising southwest Asia and northeast Africa."], "Florida": ["A southeast state of the United States of America"], "spike": ["The fruiting body of a grain plant.", "A spike-shaped metal fastener used for joining wood or similar materials.", "A sharp peak in a graph.", "To add a drug or alcoholic liquor (to a person's drink) without the owner's consent or knowledge.", "A hard, sharp object made of wood or metal.", "Add alcohol to (beverages)"], "lemma": ["A canonical form of a term, particularly in the context of highly inflected languages.", "Proven mathematical theorem that is primarily used as a tool to prove another theorem."], "architect": ["A professional who designs buildings or other structures, or who prepares plans and superintends construction."], "house band": ["A musical group that have a permanent contract with a certain establishment, for example a restaurant."], "manatee": ["Any of several plant-eating marine mammals, of family Trichechidae, found in tropical regions."], "gorilla": ["The largest of the great apes (Hominidae), native to the forests of central Africa."], "sardonic": ["Marked by or displaying scornful or disdainful irony or mocking."], "cynical": ["Marked by or displaying scornful or disdainful irony or mocking.", "Inclined to believe the worst about people."], "athlete": ["A person trained to compete in sports."], "performer": ["A person who exhibits and executes a skill or talent (often in music or drama) in front of an audience, in order to entertain them."], "uncertainty": ["A state or condition of uncertainty.", "Challenge about the truth or accuracy of a matter."], "disbelief": ["Challenge about the truth or accuracy of a matter."], "wiki": ["Any website based on any kind of Wiki software which enables users to add to, edit and delete from the site's content quickly."], "interrogate": ["To examine by asking (a witness, for example)."], "Pulcinella": ["A classical character that originated in the Commedia dell'arte of the 17th century and became a stock character in Neapolitan puppetry."], "Punch": ["A classical character that originated in the Commedia dell'arte of the 17th century and became a stock character in Neapolitan puppetry."], "Somaliland": ["An unrecognized de facto sovereign state located in northwest Somalia in the Horn of Africa."], "victim": ["Anyone who is harmed by another person or by an accident", "A living creature which is slain and offered as human or animal sacrifice, usually in a religious rite.", "A person who is wounded or killed in a battle, accident etc."], "Bali": ["An Indonesian island, one of the Lesser Sunda Islands.", "A language spoken on the island of Bali.", "A language spoken in the Democratic Republic of Congo.", "A dialect of the Hadza language.", "A language spoken in the city of Numan, Adamawa, Nigeria."], "Ewe": ["A Kwa language spoken in Ghana and Togo by approximately three million people."], "spaghetti": ["A variety of long, thin pasta, originally from Italy, which consists mostly of semolina."], "be right": ["To say something that is true."], "Sri Lanka": ["An island country in the Indian Ocean near the southern tip of India with ca. 20 million inhabitants and the capital Colombo."], "safe": ["Free from risk; harmless, riskless.", "A reinforced case that is used to secure its contents.", "A contraceptive device consisting of a thin rubber or latex sheath worn over the penis during intercourse."], "duty": ["That which one is morally or legally obligated to do."], "Mexico City": ["The capital of Mexico."], "west": ["One of the four principal compass points, specifically 270\u00b0, conventionally directed to the left on maps. The direction of the setting sun."], "jump rope": ["A game, mainly for children, but also played as a game with a world championship, in which the player jumps, if possible quickly, over a rope with the feet, of which the ends are held with both hands and which is propelled over the head.", "The primary tool used in the game where one or more participants jump over a rope swung so that it passes under their feet and over their heads."], "author": ["Person who wrote the content of a published novel, book or text."], "writer": ["Person who wrote the content of a published novel, book or text."], "plot": ["The series of actions, situations and events that make up a novel or story."], "storyline": ["The series of actions, situations and events that make up a novel or story."], "mystery": ["Something secret or unexplainable.", "A pastime, in the form of a statement or question or phrase having a double or veiled meaning, put forth as a puzzle to be solved."], "mysterious": ["That contains mysteries, secrets or has an hidden meaning."], "mercy": ["The switch between a ruled death sentence and a milder one."], "Litani": ["River in South Lebanon."], "look": ["To attempt to find something or someone, within a specific region or area.", "To have a given outward appearance.", "To look forward to, as to something that is believed to be about to happen or come.", "To actively use one's eyes.", "An expression or appearance indicating a certain state of mind.", "The outward or visible aspect of a person or thing.", "To be in charge of or deal with.", "To be oriented in a certain direction; to be opposite to.", "The act of directing the eyes toward something and perceiving it visually."], "bear": ["A large beast of prey of the family Ursidae, related to the dog and raccoon, having shaggy hair, a very small tail, and flat feet.", "To move while holding up from the ground by supporting its weight.", "To have a tolerance for.", "Market characterized by falling prices.", "To contain or hold; have within.", "To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly.", "To have a right, title, or office.", "To take upon oneself a charge or a compromise.", "To release an offspring from one's own body; to cause to be born.", "To have (e.g. a resemblance, a signature).", "To take on as one's own the expenses or debts of another person.", "To bring in (e.g. interests, money, etc.)."], "amount": ["Quantity or consistency of something.", "The total of two or more quantities.", "To add up in number or quantity.", "A unit that expresses a mass or number.", "A quantity of money.", "The complete sum."], "brush": ["A spring-loaded electrical contact that connects the rotor and armature of a motor or generator.", "An implement with a handle, and a head with multiple more or less flexible bristles, used for painting.", "An implement with a handle, and a head with multiple more or less flexible bristles, used for arranging hair.", "To clean with a brush.", "To clean teeth with a brush.", "To apply with a brush.", "To touch with a sweeping motion.", "To remove with a sweeping motion.", "To untangle or arrange (hair) with a brush."], "borrow": ["To receive (something) from somebody temporarily, expecting to return it.", "To take up (an idea) as one's own.", "In a subtraction, to deduct (one) from a digit of the minuend and add ten to the following digit, in order that the subtraction of a larger digit in the subtrahend from the digit in the minuend to which ten is added gives a positive result."], "loo": ["A ceramic device used for depositing and removing human excrement with water through flushing."], "WC": ["A room or building equipped with one or more toilets."], "synonym": ["A word or phrase that has exactly or nearly exactly the same meaning as another word or phrase."], "antonym": ["A word or phrase that has exactly or nearly exactly the opposite meaning to another word or phrase."], "umpteenth": ["Ocurring at an unspecified, yet relatively high, position in a series."], "complain": ["To state complaints, discontent, displeasure, or unhappiness.", "To make a formal accusation."], "you're welcome": ["A conventional response to thanks indicating that the action was granted freely."], "it was nothing": ["A conventional response to thanks indicating that the action was granted freely."], "no problem": ["A conventional response to thanks indicating that the action was granted freely."], "don't worry about it": ["A conventional response to thanks indicating that the action was granted freely."], "rabble": ["A disorderly and often noisy group of people."], "hot cross bun": ["A sweet, fruited, spiced bun (with a white cross on top) that is often eaten at Easter."], "tag": ["A popular children's game in which one person (known as \"it\") tries to catch and touch any of a group of others, in order that they should become \"it\".", "To catch and touch another player in the game of \"tag\".", "Signature of graffiti artists.", "A small flat metal identification label attached to the collar of a dog.", "A keyword or term associated with or assigned to a piece of information.", "Writing or drawings scribbled, scratched, or sprayed illicitly on a wall or other surface in a public place.", "A label written or printed on paper, cardboard, or plastic that is attached to something to indicate its owner, nature, price, etc."], "it": ["The masculine inanimate object previously mentioned. 3rd person singular masculine subject pronoun.", "In the children's game of \"tag\": the role of the player whose task it is to run after and touch any other player; the first person who is touched (usually with the exclamation of \"tag, you're it!\") then takes over this role.", "An inanimate object, an animate object of unspecified sex, or a subject that is previously mentioned."], "sardines": ["A popular childrens game in which one player must try to find a group of others hiding together in a small space."], "British Bulldogs": ["A popular childrens game in which players must try to get from one side of an area to another, without getting caught (and either touched or taken down) by the catcher. Players who are caught then become catchers themselves."], "Bulldogs": ["A popular childrens game in which players must try to get from one side of an area to another, without getting caught (and either touched or taken down) by the catcher. Players who are caught then become catchers themselves."], "snuggle": ["To curl up in a comfortable position.", "To move close to somebody for affection or comfort."], "enchantment": ["A words or formula supposed to have magical powers."], "hex": ["A words or formula supposed to have magical powers.", "An evil spell."], "incantation": ["A words or formula supposed to have magical powers.", "A ritual recitation of words or sounds believed to have a magical effect."], "afraid": ["Having fear of or for something."], "scold": ["To hurl complaints or abuse in a loud and harsh voice.", "Someone (especially a woman) who annoys people by constantly finding fault.", "to rebuke"], "date": ["A time specification consisting of year, month and day.", "Edible fruit of the date palm tree (Ph\u0153nix dactylifera, L.). It is fleshy, oval-cylindrical, 4\u20136 cm long, with an elongated seed.", "To go on a date with."], "cowbell": ["A small bell with clappers, commonly made of sheet-metal or wood, especially one that is fastened around the neck of a cow or other domestic animal in order to make it easier to locate the animal in question."], "word of the day": ["A word that receives special or specific mention on a particular day."], "UN": ["A voluntary association of around 180 state signatory to the UN charter (1945), whose primary aim is to maintain international peace and security, solve economic, social, and political problems through international co-operation, and promote respect for human rights.", "Relating to the United Nations."], "iffy": ["Of dubious, doubtful or uncertain legitimacy, legality or authenicity.", "Subject to accident or chance or change."], "dodgy": ["Of dubious, doubtful or uncertain legitimacy, legality or authenicity."], "caf\u00e9": ["A business that sells various non-alcoholic drinks, and usually snacks and simple meals (such as breakfasts and lunches) with facilities to consume them."], "coffee shop": ["A business that sells various non-alcoholic drinks, and usually snacks and simple meals (such as breakfasts and lunches) with facilities to consume them."], "tea shop": ["A business that sells various non-alcoholic drinks, and usually snacks and simple meals (such as breakfasts and lunches) with facilities to consume them."], "coffee-shop": ["A business that sells various non-alcoholic drinks, and usually snacks and simple meals (such as breakfasts and lunches) with facilities to consume them."], "coffee house": ["A business that sells various non-alcoholic drinks, and usually snacks and simple meals (such as breakfasts and lunches) with facilities to consume them."], "caff": ["A business that sells various non-alcoholic drinks, and usually snacks and simple meals (such as breakfasts and lunches) with facilities to consume them."], "be afraid": ["To be scared of; to have an uncontrollable emotion of anxiety about something that causes a scared reaction or frightening impression."], "have fear": ["To be scared of; to have an uncontrollable emotion of anxiety about something that causes a scared reaction or frightening impression."], "scared": ["Having fear of or for something."], "jigsaw": ["A game where a person or group of people are to reconstruct an image that has been cut into many interlocking pieces.", "An electric saw, used for cutting arbitrary curves and shapes freehand."], "jigsaw puzzle": ["A game where a person or group of people are to reconstruct an image that has been cut into many interlocking pieces."], "La Loggia": ["A city in the Turin province of Italy."], "hand saw": ["A generic manual saw used for cutting shapes from materials."], "tenon saw": ["A rigid, manual saw used for cutting straight lines."], "fretsaw": ["A saw with a thin blade that is used for cutting out curves with tight radii."], "Apache": ["Any of several Athabascan-speaking peoples of the American Southwest excluding the Navajo.", "A popular webserver available under an Open license."], "Navajo": ["A people of the southwestern United States who call themselves the Din\u00e9.", "An Athabaskan language (of Na-Den\u00e9 stock) spoken in the southwest United States by the Navajo people (Din\u00e9). (Source: Wikipedia)"], "Navaho": ["A people of the southwestern United States who call themselves the Din\u00e9.", "An Athabaskan language (of Na-Den\u00e9 stock) spoken in the southwest United States by the Navajo people (Din\u00e9). (Source: Wikipedia)"], "D'ni": ["A fictional language from the Myst franchise, spoken by the D'ni people.", "The most prominent fictional culture, race and civilisation from the Myst franchise."], "angry": ["Irritated, in a temper, feeling or displaying anger.", "(of the elements) as if showing violent anger."], "gearbox": ["That part of an vehicle's transmission containing the train of gears, and to which the gear lever is connected."], "backsaw": ["A rigid, manual saw used for cutting straight lines."], "yeah": ["A word used to show agreement or affirmation of something."], "yep": ["A word used to show agreement or affirmation of something."], "enjoy your meal": ["A phrase said at the beginning of a meal to the other diners, wishing them a good meal."], "grub's up": ["Expresses that one (commonly the cook) wishes for people (usually family or friends) to come and eat their food."], "dinner's ready": ["Expresses that one (commonly the cook) wishes for people (usually family or friends) to come and eat their food."], "have a nice meal": ["A phrase said at the beginning of a meal to the other diners, wishing them a good meal."], "soup's on": ["Expresses that one (commonly the cook) wishes for people (usually family or friends) to come and eat their food."], "profusely": ["In great or large quantities or abundance.", "In an abundant manner."], "a lot": ["In great or large quantities or abundance."], "loads": ["In great or large quantities or abundance."], "use": ["To employ an object, often to reach a certain goal; to put into service.", "The act of using something.", "Act through which a subordinated work contract starts.", "A pattern of behavior inherited or acquired through frequent repetition.", "To take or consume (regularly or habitually).", "To seek or achieve an end by using to one's advantage.", "To consume fully.", "To avail oneself to (e.g. a principle, a religion, common sense, etc.).", "(only in the past tense) to do something habitually."], "employ": ["To employ an object, often to reach a certain goal; to put into service.", "To give someone work or a job."], "ask": ["To ask (a question) to somebody; to seek an answer to.", "To examine by asking (a witness, for example).", "To set a certain price on that which one is selling.", "To desire a service or physical goods, often without returning the favor in kind.", "To approach someone to do something.", "To ask for information, a reply or response on a given subject.", "To consider obligatory; request and expect."], "portable": ["Easy or manageable for a person to carry or move comfortably.", "Able to run or work on various or multiple operating systems or hardware."], "sleep well": ["A greeting or wish before going to sleep."], "good night": ["A greeting or wish when parting, after the evening has ended and before the morning has started."], "Georgia": ["A country in West Asia or East Europe, with capital Tbilisi.", "A state of the United States of America."], "crane": ["A large bird of the order Gruiformes and the family Gruidae having long legs and a long neck which it extends when flying.", "To stretch (the neck) so as to see better.", "A machine that lifts and moves heavy objects; a lifting tackle is suspended from a pivoted boom that rotates around a vertical axis.", "Lifting tool for very heavy loads."], "good morning": ["A greeting that is said when meeting or departing in the morning."], "good afternoon": ["A greeting that is said when meeting or departing in the afternoon."], "good evening": ["A greeting that is said when meeting or departing in the evening."], "good day": ["A parting statement; used when one or more people in a situation, dialogue or location are leaving, while others remain.", "Salutation being used in the daytime."], "cheerio": ["A parting statement; used when one or more people in a situation, dialogue or location are leaving, while others remain."], "behead": ["To cut the head from a person's body."], "decapitate": ["To cut the head from a person's body."], "congregate": ["To collect in one place, usually for a purpose."], "accumulate": ["To collect in one place, usually for a purpose.", "To get or gather together."], "amass": ["To collect in one place, usually for a purpose.", "To get or gather together.", "To heap up; to collect or gather (e.g. work, magazines, etc.)."], "assemble": ["To collect in one place, usually for a purpose.", "To put together components of a product to create a final product or a subgroup of it.", "To call or bring together."], "congregation": ["A group of people who adhere to a common faith and habitually attend a given church.", "An assemblage of people or animals or things collected together.", "The act of congregating."], "girlfriend": ["A person with whom one has a love affair.", "Female person with whom someone has a relationship."], "boyfriend": ["A person with whom one has a love affair."], "terrorist": ["A person who uses violence and intimidation to push a political agenda.", "Of or relating to the use of violence or intimidation to push a political agenda."], "dinner": ["A meal that is eaten in the late afternoon or evening daily."], "afternoon tea": ["A snack consisting of tea, scones, jam and cream that is eaten in the early or mid afternoon."], "supper": ["A meal that is eaten in the late afternoon or evening daily."], "evening meal": ["A meal that is eaten in the late afternoon or evening daily."], "Englishman": ["A male person of English nationality."], "Englishwoman": ["A female person of English nationality."], "favicon": ["An icon that is associated with a website."], "Catalan": ["The language of Catalonia, an autonomous region in the northeast of Spain.", "Of or relating to Catalonia, its inhabitants or the Catalan language", "A person from Catalonia, or of Catalan ancestry."], "bluetongue disease": ["A non-contagious viral disease, transmitted by midges, that predominantly occurs in sheep and is caused by a dsRNA virus from the family Reoviridae. It is characterised by high fevers and the blue color of the tongue."], "catarrhal fever": ["A non-contagious viral disease, transmitted by midges, that predominantly occurs in sheep and is caused by a dsRNA virus from the family Reoviridae. It is characterised by high fevers and the blue color of the tongue."], "she": ["Another person; the person previously mentioned.", "A female other; the female previously mentioned. 3rd person singular feminine subject pronoun."], "license": ["Legal terms under which a person is allowed to use a product or a service or is authorised to do specific things."], "Oxford": ["A city in England famous for its university."], "transvestite": ["Someone who adopts the clothing, manner or sexual role of the opposite gender.", "Receiving sexual gratification from wearing clothing of the opposite gender."], "transvestic": ["Receiving sexual gratification from wearing clothing of the opposite gender."], "cross-dresser": ["Someone who adopts the clothing, manner or sexual role of the opposite gender."], "bisexual": ["Sexually attracted to both sexes.", "Having an ambiguous sexual identity.", "A person who is sexually attracted to both sexes."], "epicene": ["Having an ambiguous sexual identity.", "Having unsuitable feminine qualities."], "bisexual person": ["A person who is sexually attracted to both sexes."], "androgen": ["A male sex hormone that is produced in the testes and responsible for typical male sexual characteristics."], "estrogen": ["A general term for female steroid sex hormones that are secreted by the ovary and responsible for typical female sexual characteristics."], "oestrogen": ["A general term for female steroid sex hormones that are secreted by the ovary and responsible for typical female sexual characteristics."], "marrow": ["Any of various squash plants grown for their elongated fruit with smooth dark green skin and whitish flesh.", "The choicest, most essential or most vital part.", "The soft tissue found in the hollow interior of long bones and in some spongy bones which produces new blood cells."], "bone marrow": ["The soft tissue found in the hollow interior of long bones and in some spongy bones which produces new blood cells."], "marrow squash": ["Any of various squash plants grown for their elongated fruit with smooth dark green skin and whitish flesh."], "vegetable marrow": ["Any of various squash plants grown for their elongated fruit with smooth dark green skin and whitish flesh."], "kernel": ["The choicest, most essential or most vital part.", "The central part of many computer operating systems which manages the system's resources and the communication between hardware and software components."], "core": ["The choicest, most essential or most vital part.", "The middle part, that can be clearly discerned from the enveloping part.", "To remove the core (for example of a fruit).", "The central somewhat harder part that surrounds the seeds in some fruits, such as apples."], "center": ["The choicest, most essential or most vital part.", "The middle part, that can be clearly discerned from the enveloping part."], "essence": ["The choicest, most essential or most vital part.", "Industrial product, made from flowers, or produced by some chemical process, from which a pleasant smell exhales."], "condom": ["A contraceptive device consisting of a thin rubber or latex sheath worn over the penis during intercourse."], "prophylactic": ["A contraceptive device consisting of a thin rubber or latex sheath worn over the penis during intercourse."], "intercourse": ["The act of sexual procreation between a man and a woman; the man's penis is inserted into the woman's vagina and excited until orgasm and ejaculation occur.", "Communication between individuals."], "sexual intercourse": ["The act of sexual procreation between a man and a woman; the man's penis is inserted into the woman's vagina and excited until orgasm and ejaculation occur."], "social intercourse": ["Communication between individuals."], "copulation": ["The act of sexual procreation between a man and a woman; the man's penis is inserted into the woman's vagina and excited until orgasm and ejaculation occur."], "coitus": ["The act of sexual procreation between a man and a woman; the man's penis is inserted into the woman's vagina and excited until orgasm and ejaculation occur."], "vagina": ["The lower part of the female reproductive tract; a moist canal in female mammals extending from the labia minora to the uterus."], "labium": ["Any of the four lip-shaped folds of the female vulva."], "vulva": ["The external parts of the female genitalia, in human beings this consists of the labia, clitoris, opening of the urethra (meatus), and the opening of the vagina."], "clitoris": ["A female sexual organ homologous to the penis, located at the upped side of the vulva, between the labia majora."], "clit": ["A female sexual organ homologous to the penis, located at the upped side of the vulva, between the labia majora."], "button": ["A female sexual organ homologous to the penis, located at the upped side of the vulva, between the labia majora.", "A fastener consisting of a knob or disc that is passed through a slit in the adjacent material.", "A mechanical switch meant to be pressed with a finger in order to open or close an electric circuit or to activate a mechanism.", "In computer software, an on-screen control that can be selected as an activator of an attatched function.", "A badge worn on clothes, fixed with a pin through the fabric.", "In curling it is the center (bullseye) of the house.", "To fasten with a button or buttons."], "urethra": ["A duct through which urine is discharged in most mammals and which serves as the male genital duct."], "navel": ["A scar where the umbilical cord was attached."], "umbilicus": ["A scar where the umbilical cord was attached."], "bellybutton": ["A scar where the umbilical cord was attached."], "omphalos": ["A scar where the umbilical cord was attached."], "omphalus": ["A scar where the umbilical cord was attached."], "umbilical cord": ["A membranous duct connecting the fetus with the placenta."], "fetus": ["An unborn or unhatched vertebrate in the later stages of development showing the main recognizable features of the mature animal."], "foetus": ["An unborn or unhatched vertebrate in the later stages of development showing the main recognizable features of the mature animal."], "placenta": ["That part of the ovary of a flowering plant where the ovules form.", "The vascular structure in the uterus of most mammals providing oxygen and nutrients for and transferring wastes from the developing fetus."], "anyone": ["One person chosen without thought, anybody", "Any one out of an indefinite number of persons."], "duct": ["A bodily passage or tube lined with epithelial cells and conveying a secretion or other substance.", "A continuous tube formed by a row of elongated cells lacking intervening end walls.", "An enclosed conduit for a fluid.", "Duct for conveying water to a given place."], "Furhac": ["'abc\u2026' in Runic, the alphabet of Runes."], "North Atlantic Treaty Organization": ["An international organization created in 1949 by the North Atlantic Treaty for purposes of collective security."], "NATO": ["An international organization created in 1949 by the North Atlantic Treaty for purposes of collective security."], "international": ["Concerning or belonging to at least two nations.", "From or between other countries."], "external": ["From or between other countries.", "Outside of something.", "Coming from the outside."], "outside": ["From or between other countries.", "In the open, not within a building.", "Coming from the outside."], "nation": ["A people permanently occupying a fixed territory bound together by common law, habits and custom into one body politic exercising, through the medium of an organized government, independent sovereignty and control over all persons and things within its boundaries, unless or until authority is ceded to a federation or union of other states.", "A political entity asserting ultimate authority over a geographical area.", "A federation of tribes (especially native American tribes)."], "cry": ["To speak with a loud, excited voice.", "To shed tears due to the impact of an emotion."], "build": ["To form by combining materials or parts.", "To create something by combining or assembling materials or parts or by changing it.", "The physical structure of a human body.", "To build or establish something abstract."], "if you can't stand the heat, stay out of the kitchen": ["If the pressure or stress is too great, leave or give up."], "a wolf in sheep's clothing": ["A dangerous person that creates a harmless appearance."], "have made one's pile": ["Having enough financial security to be able to to live off one's investments."], "interfere": ["To involve oneself causing disturbance."], "inch": ["A unit of length equal to 2.54 centimetres."], "suspect": ["To imagine or suppose (something) to be true without evidence.", "A person who is suspected of something, in particular of committing a crime.", "Raising suspicion.", "To imagine something evil, wrong or undesirable based on insufficient evidence; to believe to be guilty.", "To imagine that something is possible or likely."], "antiskid system": ["Technical system in a motor vehicle that prevents wheelspin during acceleration."], "bag": ["A flexible container made of cloth, paper, plastic, leather, etc., to put something in or to carry away.", "To take possession of property belonging to another without the consent of this owner; most typically when not observed, rather than by force.", "An ugly or ill-tempered woman.", "An activity that one likes or at which one is superior.", "A object used for carrying money and small personal items or accessories (especially by women).", "To put (something) into a bag.", "A small bag, purse or pocket worn at one's belt during medieval times."], "alkaline": ["Of, relating to, or containing an alkali."], "corner": ["The point where two or more edges of an geometrical body meet.", "A predicament from which a skillful or graceful escape is impossible.", "The point where three areas or surfaces meet or intersect.", "The edge where two converging walls meet."], "pilgrimage": ["A journey made to a sacred place or a religious journey."], "hem": ["A folded and stitched cloth border on items of clothing.", "To fold and stitch the border of the cloth on items of clothing; creating a hem."], "make dog-eared": ["To fold over at the corner a page of a book."], "bizarre": ["Strangely unconventional in style or appearance.", "Out of the ordinary.", "Of strange or extraordinary character."], "uneventful": ["With no event."], "belly button": ["A scar where the umbilical cord was attached."], "infrequently": ["Not often, not frequently."], "rarely": ["Not often, not frequently."], "seldom": ["Not often, not frequently."], "stubborn": ["Tenaciously unwilling or marked by tenacious unwillingness to yield.", "Difficult to treat or deal with.", "Not responding to treatment.", "Persisting in a reactionary stand.", "Resisting vigorously and stubbornly to the last."], "refractory": ["Not responding to treatment.", "Not affected by great heat.", "Obstinate and unruly."], "obstinate": ["Persisting in a reactionary stand.", "Resistant to guidance or discipline."], "unregenerate": ["Persisting in a reactionary stand."], "Wanggamala": ["An extinct language of Australia formerly spoken in the Northern Territory, Hay River, south of Andegerebinha."], "Uradhi": ["An aboriginal language of Queensland, Australia."], "Wageman": ["A near-extinct indigenous Australian language spoken in and around Pine Creek, in the Katherine Region of the Northern Territory."], "Yinggarda": ["An Australian Aboriginal language of the Kartu languages of the large South-West branch of the Pama-Nyungan family formerly spoken in the Yinggarda country."], "Yawuru": ["A Nyulnyulan language spoken by the Yawuru people, an indigenous people of Western Australia."], "Wunambal": ["An aboriginal language of Western Australia spoken in the regions of Kalumburu, Wyndham and Mowanjum."], "Wilawila": ["A language of Australia."], "Yanyuwa": ["A language of Australia."], "Wiradhuri": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Yawarawarga": ["An Australian Aboriginal language."], "Wambaya": ["An Australian Aboriginal language spoken by the Wambaya people of the Barkly Tablelands region of the Northern Territory."], "Yankunytjatjara": ["An Australian Aboriginal language."], "thousand": ["Ten times hundred."], "hi": ["Expression of greeting used by two or more people who meet each other."], "hey": ["Expression of greeting used by two or more people who meet each other.", "Exclamation of amazement."], "howdy": ["Expression of greeting used by two or more people who meet each other."], "Madura": ["A language of Indonesia."], "Igbo": ["A language spoken in Nigeria."], "Ladin": ["A Rhaeto-Romance language which is spoken in the Dolomite valleys in Northern Italy."], "Lombard": ["A language of Italy and Switzerland. In Italy it's mostly spoken in Lombardy and western Piedmont."], "Yakut": ["A Turkic language with around 363,000 speakers that is spoken in the Sakha Republic in the Russian Federation."], "Sakha": ["A Turkic language with around 363,000 speakers that is spoken in the Sakha Republic in the Russian Federation.", "A republic of Russia with an area of 3,103,200 km\u00b2 located in the East Russia. Its borders are the Arctic Ocean by sea and the Federal subjects of Chukotka (E), Magadan (E/SE), Khabarovsk Krai (SE), Amur (S), Chita (S), Irkutsk (S/SW), Evenk (W), Taymyr (W/NW)."], "Lak": ["The language of the Lak people from the Russian autonomous republic of Dagestan."], "Yankuntatjara": ["An Australian Aboriginal language."], "Jangkundjara": ["An Australian Aboriginal language."], "Kulpantja": ["An Australian Aboriginal language."], "Hermione Granger": ["A fictional, intelligent student at Hogwarts, friend of Harry Potter (from the Harry Potter series by JK Rowling)."], "skeleton crew": ["The minimal number of people keeping something operational."], "Vlax Romani": ["A language of the Gypsies."], "Maori": ["The language of the original inhabitants of New Zealand, the Maori."], "Lingala": ["A Bantu language spoken throughout the northwestern part of Congo-Kinshasa, the northern part of Congo-Brazzaville and to a certain degree in Angola, Central African Republic and Cameroon."], "bean": ["A common name for large edible plant seeds of several genera of ''Fabaceae''.", "Any of various leguminous plants grown for their edible seeds and pods."], "cricket": ["A game played outdoors with bats and a ball between two teams of eleven, popular in England and many Commonwealth countries.", "An insect in the order Orthoptera that makes a chirping sound by rubbing its wing casings against combs on its hind legs."], "boat": ["A craft used for transportation of goods, fishing, racing, recreational cruising, or military use on or in the water, propelled by oars or outboard motor or inboard motor or by wind.", "To traverse or travel by ship on a body of water.", "A dish (often boat-shaped) for serving gravy or sauce.", "A watercraft designed to float or plane on, and provide transport over water."], "Pakistan": ["A country in South Asia with capital Islamabad."], "chewing gum": ["A sweetened flavoured preparation of chicle, made for chewing."], "Yangman": ["An extinct language of Australia"], "Kalkutung": ["An extinct language of Australia."], "Biri": ["An extinct language of Australia."], "Kalarko": ["An extinct language of Australia."], "ball": ["Round three-dimensional body whose surface has at each point the same distance from the center.", "An object, generally spherical, used for playing games.", "The male sex gland that produces sperm and male hormones, found in some types of animals.", "To form into a ball by winding or rolling.", "A lavish formal dance.", "A compact mass.", "A projectile, usually of metal, shot from a gun at high speed.", "A hard ball being used for playing billards."], "Manangkari": ["An extinct language of Australia."], "edible": ["That can be eaten without harm, non-toxic to humans; suitable for consumption."], "globe": ["The third planet (counted from the center) of our solar system.", "Round three-dimensional body whose surface has at each point the same distance from the center.", "Small sphere which represents the planet Earth.", "A sphere on which a map (especially of the earth) is represented."], "orb": ["Round three-dimensional body whose surface has at each point the same distance from the center.", "To move in an orbit."], "in love": ["Feeling love for someone or something."], "lover": ["A person who loves someone or is loved by someone.", "A sexual partner.", "A follower or admirer who likes, knows about, and appreciates a particular interest or activity."], "forfeit": ["To suffer the loss of something by wrongdoing or non-compliance."], "umpire": ["An official appointed to rule on plays and procedure.", "To act as an umpire in a game."], "referee": ["An official appointed to rule on plays and procedure."], "collision": ["An often violent body impact with another.", "The situation that occurs when two or more devices attempt to send a signal along the same channel at the same time.", "An accident resulting from violent impact of a moving object."], "monarch": ["The person at the head of a hereditary form of government.", "A migratory butterfly, Danaus plexippus, found in North America."], "master": ["To know well a field of knowledge.", "Someone who has control over something or someone; the owner of an animal or slave or someone who employs others."], "Uzbekistan": ["Country in Central Asia, with the capital Tashkent."], "Uganda": ["Country in Eastern Africa whose capital is Kampala."], "ill": ["Whose health is altered."], "everywhere": ["At all places; in all directions.", "At all places.", "In all directions, to all places."], "string": ["A cord used in some musical instruments to produce sound.", "An ordered sequence of symbols.", "A long, thin and flexible structure made from threads twisted together."], "row": ["A series of persons or objects placed in a line, one behind the other, usually at regular intervals.", "A loud or noisy verbal confrontation between two or more people.", "A series of cells or entries in a table, going horizontally or left-to-right.", "To pull oars through water in order to make a water vehicle (such as a boat) move.", "A single instance, act or occurrance of pulling oars through water in order to make a water vehicle (such as a boat) move.", "A continuing loud, harsh or strident noise.", "A tool used for pushing against liquid, generally for the propulsion of a boat."], "argument": ["A loud or noisy verbal confrontation between two or more people.", "A fact or assertion offered as evidence that something is true."], "argue": ["To take part in a loud or angry verbal confrontation with one or more other people.", "To present (a viewpoint or an argument therefor)."], "racket": ["Sound which is unwanted, either because of its effects on humans, its effect on fatigue or malfunction of physical equipment, or its interference with the perception or detection of other sounds.", "A continuing loud, harsh or strident noise.", "An implement with a handle connected to a round frame strung with wire, sinew, or plastic cords, and used to hit a ball, such as in tennis or a birdie in badminton.", "A loud noise."], "din": ["A continuing loud, harsh or strident noise."], "bucket": ["A container (made of rigid material with a handle) that is used to carry liquids or small items.", "To rain heavily."], "dream about": ["To be lost in phantasies or be carried away by some internal vision, having temorarily lost (part of) contact to reality."], "pocket": ["A kind of pouch, which is accessible by an opening in an article of clothing and serves for storage; usually large enough in order to accommodate at least one hand.", "To take into possession by putting it somewhere into the clothing one is wearing", "An opening suitable or meant to receive something", "To take possession of property belonging to another without the consent of this owner; most typically when not observed, rather than by force."], "aviation accident": ["An accident happening during a voyage by plane, resulting in damage, injury or death."], "plane crash": ["The uncontrolled landing of an airplane resulting in structural damage to the plane and potentially injury or death to passengers."], "pin": ["The limb of an animal (including humans) that extends from the groin to the ankle.", "Pivoting part in a stringed instrument, around which the string is wound and is used to adjust its tension.", "An item that is placed on the end of a bowling alley, and which one can then try to strike and topple with a bowling ball.", "In golf, a stick w\u0131th a flag on it, inserted in a target hole, enabling the hole to be seen from a distance.", "A small piece of steel wire with one end sharpened and the other flattened or rounded into a head.", "A wrestling move in which a wrestler's shoulders are forced to the mat.", "A rod used to fasten two overlapping parts.", "Any of the individual connecting elements of a multipole electrical connector.", "A piece of jewellery that is attached to clothing with a pin.", "A simple accessory that can be attached to clothing with a pin or fastener, often round and bearing a design, logo or message, and used for decoration, identification or to show political affiliation, etc.", "(chess) A situation in which moving a lesser piece to escape from attack would expose a more valuable piece to attack.", "A small nail with a head and a sharp point.", "To fasten or attach (something) with a pin.", "(chess) To cause (a piece) to be in a pin.", "(wrestling) To pin down (someone).", "To attach something to another item with a pin.", "To determine precisely.", "To fix blame or responsibility on a person or thing.", "To force (a person) to be specific or make a commitment.", "To hold down so as to restrict movement.", "To hold (a person) to a course of action.", "To entrust (one's hope, faith, reputation, etc.) entirely to a particular person or thing.", "One of multiple rods inside a cylindrical lock that allow only the correct key to turn the mechanism."], "badge": ["A simple accessory that can be attached to clothing with a pin or fastener, often round and bearing a design, logo or message, and used for decoration, identification or to show political affiliation, etc."], "dichotomy": ["A cutting in two; a division."], "chimera": ["An organism with at least two genetically distinct types of cells.", "An impossible or foolish fantasy or project."], "sex bomb": ["A very attractive woman."], "plop": ["Sound (used in cartoons) of something dropping into water and sinking fast."], "plonk": ["Sound (used in cartoons) of something dropping into water and sinking fast.", "A cheap or everyday alcoholic drink (usually wine)."], "comment": ["To state one's personal opinion or beliefs on a particular subject.", "A statement that expresses a personal opinion or belief.", "To make or write a comment on."], "remark": ["To state one's personal opinion or beliefs on a particular subject.", "A statement that expresses a personal opinion or belief.", "To make mention of.", "To make or write a comment on."], "often": ["Many times, with short intervals between occasions."], "frequently": ["Many times, with short intervals between occasions."], "channel": ["A specific radio frequency or band of frequencies used for transmitting television."], "frequency": ["Number of occurrences of a repeated event per unit of time (e. g. oscillations per second)."], "encompass": ["To form a circle around.", "To include within its scope; to go round so as to surround.", "To include completely; to describe fully or comprehensively.", "To travel completely around somewhere or something.", "To include in scope; include as part of something broader; have as one's sphere or territory."], "encircle": ["To form a circle around.", "To extend on all sides simultaneously."], "circumscribe": ["To include within its scope; to go round so as to surround.", "To limit narrowly."], "circumnavigate": ["To travel completely around somewhere or something.", "To avoid an obstacle by going around it."], "bypass": ["To avoid an obstacle by going around it.", "To avoid something unpleasant or laborious."], "restrict": ["To limit narrowly.", "To make more specific."], "socialist": ["A man who practices or advocates socialism.", "A woman who practices or advocates socialism.", "A person who practices or advocates socialism."], "socialism": ["Refers to a broad array of doctrines or political movements that envisage a socio-economic system in which property and the distribution of wealth are subject to social control."], "Bangladesh": ["A country in South Asia. It is surrounded by India on all sides except for a small border with Myanmar to the far southeast and the Bay of Bengal to the south."], "Belarus": ["A country in Eastern Europe whose capital is Minsk."], "Bolivia": ["A country in South America, with administrative capital La Paz and official capital Sucre."], "Guinea": ["Country in Western Africa whose capital is Conakry."], "zebra": ["An African animal, closely related to a horse, with black and white stripes."], "zebra crossing": ["A pedestrian crossing featuring broad white stripes painted parallel to the street."], "its": ["Belonging to it."], "irrigate": ["To supply land with water so that crops and plants will grow or grow stronger.", "To rinse out a wound or bodily cavity."], "igneous rock": ["A rock formed when molten rock (magma) cools and solidifies, with or without crystallization."], "poliomyelitis": ["Acute infection by the poliovirus, especially of the motor neurons in the spinal cord and brainstem, leading to muscle weakness, paralysis and sometimes deformity."], "polio": ["Acute infection by the poliovirus, especially of the motor neurons in the spinal cord and brainstem, leading to muscle weakness, paralysis and sometimes deformity."], "skype": ["To phone via the Internet using the software Skype."], "El Salvador": ["Country in Central America, with capital San Salvador."], "Portugal": ["Country in Europe, with capital Lisbon."], "cloudy": ["Covered with clouds."], "Lisbon": ["The capital of Portugal, Europe.", "District of Portugal, located in the South Central region."], "different": ["Not the same.", "Other than supposed."], "left-handed": ["Using the left hand more skillfully than the right hand."], "lefthanded": ["Using the left hand more skillfully than the right hand."], "right-handed": ["Using the right hand more skillfully than the left hand."], "righthanded": ["Using the right hand more skillfully than the left hand."], "pair of scissors": ["A tool used for cutting thin material, consisting of two crossing blades attached at a pivot point in such a way that the blades slide across each other when the handles are closed."], "skyper": ["A user of the internet telephony software named \"Skype\"."], "group": ["(Military term) To distribute and to order the troops in units.", "A number of things or persons that have some relation to one another.", "Ensemble of elements which belong to the same column of the periodic table", "Set of things or people between which exists cohesion or agreement.", "To put together to form a group."], "foggy": ["With a diffuse meaning; nebulously said; unclear and uncertain; unfactual; unpointedly expressed.", "Filled with fog."], "bletheringly": ["With a diffuse meaning; nebulously said; unclear and uncertain; unfactual; unpointedly expressed."], "behind closed doors": ["Away from public view."], "annunciate": ["To pronounce (individual sounds or words) correctly and with good or true diction.", "To give public or first notice or mention of (a future event)."], "proclaim": ["To make known by stating or announcing.", "To declare formally; of titles.", "To affirm or declare as an attribute or quality of.", "To praise, glorify, or honor (e.g. a virtue)."], "announce": ["To give public or first notice or mention of (a future event).", "To give public notice, or first notice of the arrival of someone or something.", "To make known by stating or announcing."], "homing pigeon": ["A variety of domestic pigeon (Columba livia domestica) selectively bred to find its way home over extremely long distances."], "carrier pigeon": ["A variety of domestic pigeon (Columba livia domestica) selectively bred to find its way home over extremely long distances."], "easy mark": ["Someone who easily believes anything."], "firefighter": ["A male person who is trained to put out fires.", "A person who is trained to put out fires."], "slice": ["To cut something into slices.", "A cut piece whose thickness is small compared to its length and width or its diameter.", "To make a clean cut through."], "roughage": ["Food that is high in fibre and low in digestible nutrients.", "The portion of plant products that moves through the human digestive system without being digested."], "pigeon": ["One of several birds of the family Columbidae."], "sparrow": ["A small song bird, in the family Passeridae.", "A small bird with a short bill, and brown, white and gray feathers."], "conference": ["An event organized to discuss an issue with a range of speakers."], "seminar": ["A meeting held for the exchange of useful information by members of a community."], "diminutive": ["A word that is formed with a suffix (such as -let or -kin) to indicate smallness.", "Very small in size."], "each": ["Every individual or anything of the given class, with no exceptions.", "Evenly distributed to; identical instances of; mapped to any of."], "birch": ["A tree of the genus Betula, with small leaves and a trunk that is white with darker blotches.", "Wood of the birch tree."], "for \u2026 each": ["Evenly distributed to; identical instances of; mapped to any of."], "each for": ["Evenly distributed to; identical instances of; mapped to any of."], "each at": ["Evenly distributed to; identical instances of; mapped to any of."], "at \u2026 each": ["Evenly distributed to; identical instances of; mapped to any of."], "decease": ["To cease to live."], "demise": ["To cease to live."], "pass on": ["To cease to live.", "To divide or distribute something in an even way."], "cease to be": ["To cease to live."], "go to meet ones maker": ["To cease to live."], "ring down the curtain": ["To cease to live."], "join the choir invisible": ["To cease to live."], "fireman": ["A person who is trained to put out fires."], "firefighters": ["Two or more persons trained to put out fires."], "firemen": ["Two or more persons trained to put out fires."], "firewoman": ["A female person who is trained to put out fires."], "non-starch polysaccharide": ["The portion of plant products that moves through the human digestive system without being digested."], "giddy": ["A state in which a group of people is continuously making silly jokes, that can nevertheless lead to laughing fits as a reaction. Under the right circumstances, the state can maintain itself or be induced in others contageously. The use of weed (Cannabis sativa) promotes the state in some individuals, but it can also be induced by a joke or reference to an (earlier) funny event."], "soft": ["A state of consistency allowing alterations of form with ease, no big force required, to bring things into something of this state (such as e.g. soaked loam or clay soil).", "(Of a cloth, skin, etc.) Smooth and agreeable to the touch."], "sushi": ["A type of Japanese food, consisting of vinegared rice, seafood and pickled vegetables. Its origin lies in the south-east asian technique of pickling fish in rice to preserve it."], "immigrant": ["A person who settles in a country coming from abroad.", "Who settles in a country coming from abroad."], "emigrant": ["Someone who leaves one country to settle in another."], "wheelbarrow": ["Small vehicle with one wheel (more rarely two), to carry heavy loads on construction sites or in a garden, and that is usually pushed ahead.", "A small, two-wheeled vehicle to be drawn or pushed by a boy or man."], "vortex": ["A whirlwind, whirlpool, or similarly moving matter in the form of a spiral or column."], "expurgate": ["To edit out rude, incorrect, offensive, or useless information from a book, CD or other publication.", "To remove those parts of a text considered offensive, vulgar, or otherwise unseemly."], "infix": ["A morpheme inserted inside a word."], "haunch": ["The area encompassing the upper thigh, hip and buttocks on one side of a human, primate, or quadruped animal, especially one that is able to sit on its hindquarters."], "prefix": ["A morpheme that is placed at the start of a word."], "fruit juice": ["The juice obtained by squeezing, crushing or centrifuging fruit."], "suffix": ["A morpheme that is placed at the end of a word."], "coma": ["A state of unconsciousness from which one may not wake up, usually induced by some form of trauma.", "A cloud of dust surrounding the nucleus of a comet.", "An optical aberration in an astronomical telescope which causes a V-shaped flare to the image of a star."], "fisherman": ["A person whose profession is catching fish."], "Ivory Coast": ["A country in Western Africa whose capital is Abidjan."], "Cambodia": ["A country in Southeast Asia. The country shares a border with Thailand to its west and northwest, with Laos to its northeast, and with Vietnam to its east and southeast. In the south it faces the Gulf of Thailand. Its capital is Phnom Penh."], "Montenegro": ["A country located in southeastern Europe with capital city Podgorica."], "Palestine": ["The territories under the jurisdiction of the Palestinian Authority."], "South Africa": ["Country in southern region of the African continent."], "Pompeii": ["Ruined Roman city near Naples in the Italian region of Campania which was destroyed by the eruption of the volcano Mount Vesuvius in 79 CE."], "progressively": ["In a progressive manner."], "hindrance": ["Something which hinders; something which obstructs, holds back or causes problems.", "The act of hindering or obstructing or impeding."], "dwarf planet": ["A celestial body orbiting the Sun that is massive enough to be rounded by its own gravity but which has not cleared its neighbouring region of planetesimals and is not a satellite."], "swimsuit": ["A tight-fitting garment worn for swimming."], "Nicaragua": ["Country in Central America, bounded by Costa Rica to the south and Honduras to the north, located between the Pacific Ocean and the Caribbean sea, with capital Managua."], "planet": ["A large, heavy body, which does not produce energy by nuclear fusion, moving in a stable elliptical orbit around a star."], "embargo": ["A ban on trade with another country.", "A temporary ban on making certain information public."], "personal computer": ["A small computer, built around a microprocessor, for use by one person at a time."], "PC": ["A small computer, built around a microprocessor, for use by one person at a time.", "The intention to provide a minimum of offense to other people, particularly to ethnic and religious groups, social minorities, women and aged or disabled people. It is usually attributed to language or behavior."], "laptop": ["A portable computer that is small enough and light enough to be used on one's lap."], "laptop computer": ["A portable computer that is small enough and light enough to be used on one's lap."], "Red Sea": ["A long, narrow sea between Africa and the Arabian peninsula."], "Pacific Ocean": ["The world's largest body of water, to the east of Asia and Australasia and to the west of the Americas."], "Atlantic Ocean": ["The ocean lying between the Americas to the west and Europe and Africa to the east."], "farce": ["A low style of comedy or a dramatic composition marked by low humour & broad improbabilities and often written with little regard to regularity or method.", "Text or story abounding with ludicrous incidents and expressions.", "A ridiculous or empty show."], "stuffing": ["The matter used to stuff flexible hollow objects such as pillows and saddles.", "A mixture of seasoned ingredients used to stuff meats and vegetables.", "Something filling up a gap or covering up a (small) distance."], "France": ["Country in Western Europe having borders with Belgium, Luxembourg, Germany, Switzerland, Italy, Monaco, Andorra and Spain."], "Finland": ["One of the Nordic countries having borders with Sweden, Norway and Russia."], "Fiji": ["A country in Oceania comprising over 300 islands."], "Greece": ["Country in southeastern Europe having borders with Albania, the Former Yugoslav Republic of Macedonia, Bulgaria, and Turkey."], "Jordan": ["A country in the Middle East, with capital Amman.", "A river of the Middle East that empties into the Dead Sea."], "Jamaica": ["Country in the Caribbean whose capital is Kingston."], "North Sea": ["An inlet of the Atlantic Ocean between Britain (in the west), Scandinavia (in the east) and Germany, Netherlands, Belgium and France (in the south)."], "dark matter": ["Matter that cannot be detected by their radiation but whose presence is inferred from gravitational effects."], "Spain": ["Country in Western Europe."], "Saudi Arabia": ["Country on the Arabian Peninsula, with capital Riyadh."], "iris": ["The contractile membrane perforated by the pupil, which adjusts to control the amount of light reaching the retina.", "A flower of any of the species belonging to the genus Iris; the flowers occur in many colours, have long and slender pointed leaves, and either a corm or a rhizome."], "retina": ["The thin layer of cells at the back of the eyeball where light is converted into neural signals sent to the brain.", "The thin layer of cells at the back of the eyeball where light is converted into neural signals sent to the brain."], "joke": ["Something said or done for amusement.", "To say or do something for amusement; to speak humorously."], "trick": ["Something said or done for amusement.", "Male client of a prostitute.", "An act of prostitution."], "corkscrew": ["A tool to pull corks out of bottles."], "polysemy": ["Capacity, for a word, to have multiple meanings."], "polysemic": ["Having multiple meanings."], "joker": ["A person in bright garb and fool's cap who amused a mediaeval royal court.", "Someone who makes jokes.", "A playing card that features a picture of a joker (that is, a jester) and that may be used as a wild card in some card games.", "One who jokes."], "ordinal number": ["A number used to denote position in a sequence."], "third": ["The ordinal form of the cardinal number three.", "One of three equal parts of a whole."], "cardinal number": ["A number used to denote a quantity."], "Namibia": ["A country in southern Africa having common borders with Angola, South Africa, Botswana, Zimbabwe and Zambia. Its capital is Windhoek."], "Mercury": ["The smallest and innermost planet of our solar system."], "Ghana": ["Country in Western Africa whose capital is Accra."], "Guatemala": ["Country in Central America, with capital Guatemala City."], "Kenya": ["A country in Eastern Africa whose capital is Nairobi."], "Kiribati": ["Country in Oceania with capital Tarawa.", "A language of Kiribati."], "pariah": ["Someone who is despised or rejected."], "outcast": ["Someone who is despised or rejected."], "jester": ["A person in bright garb and fool's cap who amused a mediaeval royal court.", "Someone who makes jokes."], "Liberia": ["Country in Western Africa whose capital and largest city is Monrovia."], "Laos": ["A country in Southeast Asia whose capital is Vientiane."], "Cameroon": ["Country in Central Africa whose capital is Yaound\u00e9."], "Chile": ["A country in South America, with capital Santiago de Chile."], "Colombia": ["A country in northwestern South America, with capital Bogot\u00e1."], "anecdote": ["A short account of an incident, often humorous."], "Denmark": ["Country in western Europe whose capital is Copenhagen."], "Cyprus": ["Country between Europe and the Middle East, in the Mediterranean Sea, with capital Nicosia.", "ISO 639-6 entity", "Island between Europe and the Middle East, in the Mediterranean Sea."], "emergency contraceptive pill": ["Pill that a woman can take within three days after having intercourse to prevent that a fertilised egg will implant itself in the uterus."], "morning-after pill": ["Pill that a woman can take within three days after having intercourse to prevent that a fertilised egg will implant itself in the uterus."], "Slovenia": ["A coastal Alpine country in southern Central Europe bordering Italy on the west, the Adriatic Sea on the southwest, Croatia on the south and east, Hungary on the northeast, and Austria on the north."], "choose": ["To make a choice from a number of alternatives.", "To choose; to select as an alternative to another."], "Suriname": ["A country in South America, with capital Paramaribo."], "Belize": ["A country in Central America, with capital Belmop\u00e1n."], "Estonia": ["One of the Baltic countries that has land borders to the south with Latvia and to the east with Russia. It is separated from Finland in the north by the Gulf of Finland and from Sweden in the west by the Baltic Sea."], "Tanzania": ["Country in Eastern Africa."], "T-Shirt": ["A lightweight shirt without buttons, with short sleeves and no collar."], "atheism": ["The position that no God or gods exist."], "decade": ["A period of ten years."], "millennium": ["A period of 1000 years."], "Cuba": ["A country and the largest island in the Caribbean with capital Havana."], "active": ["Engaged in or ready for military or naval operations.", "Disposed to take action or effectuate change.", "Taking part in an activity.", "Characterized by energetic activity.", "Exerting influence or producing an effect.", "In operation.", "Of the sun; characterized by a high level activity in sunspots and flares and radio emissions.", "Expressing action rather than a state of being.", "Erupting or liable to erupt.", "Tending to become more severe or wider in scope.", "Full of activity or engaged in continuous activity (e.g. of seaport, market, etc.).", "(of e.g. volcanos) capable of erupting."], "combat-ready": ["Engaged in or ready for military or naval operations."], "fighting": ["Engaged in or ready for military or naval operations."], "participating": ["Taking part in an activity."], "dynamic": ["Expressing action rather than a state of being.", "In motion usually as the result of an external force."], "Miskito": ["Language spoken by the Miskito people in northeastern Nicaragua and in eastern Honduras."], "Norway Spruce": ["A coniferous tree of the family Pinaceae with straight trunk and conical crown, which is found mainly in the mountains of Europe"], "donkey": ["A domesticated animal, Equus asinus."], "barrier": ["A structure that bars passage.", "A bar with hinge that blocks passage in a horizontal position and allows passage in a vertical position."], "obstacle": ["A structure that bars passage.", "Something immaterial that stands in the way and must be circumvented or surmounted.", "A reason that keeps someone from doing something."], "calamity": ["An event resulting in great loss and or distress."], "altitude sickness": ["A pathological condition that is caused by acute exposure to high altitudes."], "acute mountain sickness": ["A pathological condition that is caused by acute exposure to high altitudes."], "AMS": ["A pathological condition that is caused by acute exposure to high altitudes."], "altitude illness": ["A pathological condition that is caused by acute exposure to high altitudes."], "precaution": ["A measure taken beforehand to ward off evil or secure good or success."], "asthma": ["A chronic inflammatory disease of the airways."], "incontinence": ["The inability of any of the physical organs to restrain discharges of their contents."], "hunger": ["A need of food.", "To suffer from hunger, to not get enough to eat for an extended amount of time; to feel the need to eat.", "A strong desire for something (not food or drink).", "To have a craving, appetite, or great desire for."], "buzzard": ["Diurnal bird of prey belonging to the Accipitridae family."], "hesitate": ["To be in suspense or uncertainty as to a determination.", "To have problems articulating the words, repeting sometimes some syllables."], "stammer": ["To have problems articulating the words, repeting sometimes some syllables."], "falter": ["To have problems articulating the words, repeting sometimes some syllables."], "stutter": ["To have problems articulating the words, repeting sometimes some syllables."], "halogen": ["Any of the elements of the halogen family, consisting of fluorine, chlorine, bromine, iodine, and astatine."], "lady": ["Historically polite address for a female person", "A woman of breeding or higher class.", "The wife of a lord."], "nucleus": ["The massive, positively charged central part of an atom made up of protons and neutrons."], "chain reaction": ["(physics) A nuclear reaction in which particles produced by the fission of one atom trigger fissions of other atoms.", "A series of events, each one causing the next."], "precipitation": ["The settling out of water from cloud in the form of rain, hail, snow, etc.", "The process of producing a separable solid phase within a liquid medium; represents the formation of a new condensed phase, such as a vapour or gas condensing to liquid droplets; a new solid phase gradually precipitates within a solid alloy as a result of slow, inner chemical reaction; in analytical chemistry, precipitation is used to separate a solid phase in an aqueous solution.\\n(Source: MGH)"], "crucian carp": ["(Carassius carassius) a member of the family Cyprinidae."], "coin": ["A piece of currency, usually metallic and in the shape of a disc, but sometimes polygonal, or with a hole in the middle.", "To form by stamping, punching, or printing.", "To make up (e.g. new words or phrases)."], "ventriloquist": ["A performer who can speak without moving his lips, often projecting the voice into a wooden dummy."], "invisible": ["That can not be seen."], "unseeable": ["That can not be seen."], "visible": ["That one can see."], "buy": ["The acquisition or the act of buying something by payment of money or its equivalent.", "To accept as true.", "To obtain in exchange for money or goods.", "To give, or offer a bribe."], "Balochistan": ["An arid region located in the Iranian Plateau in Southwest Asia and South Asia, between Iran, Pakistan and Afghanistan.", "Province in Pakistan which has Lahore as its capital.", "Province in Iran which has Zahedan as its capital."], "bleed": ["To emit or lose blood."], "Nasta'liq script": ["A calligraphy style for mainly Persio-Arabic and has been more popular in the Persian and Turkic spheres of influence."], "purse": ["A small bag for carrying money.", "A object used for carrying money and small personal items or accessories (especially by women).", "A small bag, purse or pocket worn at one's belt during medieval times."], "European": ["A person living in Europe / a person living in the European Union.", "Of or pertaining to Europe or its inhabitants."], "camel": ["A beast of burden, much used in desert areas, of the genus Camelus."], "Ido": ["An artificial language; a reform of Esperanto."], "Serbia": ["A country in southeastern Europe whose capital is Belgrade."], "Mauritania": ["Country in Northern Africa with capital Nuakchott."], "biome": ["A major regional group of distinctive plant and animal communities best adapted to the region's physical natural environment, latitude, altitude, and terrain."], "migration": ["The act, for living things, of moving from one biome to another."], "tugboat": ["(nautical) a small, powerful boat used to push or pull barges or to help maneuver larger vessels ; a small towboat."], "Moldova": ["Country in eastern Europe located between Romania to the west and Ukraine to the north, east and south."], "Monaco": ["A small princedom in Europe that borders only on France.", "The capital of the principality of Monaco."], "Oman": ["A country in the Middle East, in the south-east corner of the Arabian peninsula, with capital Muscat."], "Kabul": ["The capital of Afghanistan."], "Panama": ["A country in Central America, with capital Panama City."], "Oporto": ["The second-largest city of Portugal, capital of the District of Oporto.", "District of Portugal, located on the north west coast, in which the city of the same name is located (Oporto)."], "Poland": ["A country in Europe."], "Paraguay": ["Country in South America, with capital Asunci\u00f3n."], "Lesotho": ["A country in Southern Africa, entirely surrounded by the Republic of South Africa. Its capital is Maseru."], "bower anchor": ["(nautical) each of the two main anchors of a ship, carried permanently attached to their chains on each side of the bow, always ready to be let go in case of an emergency."], "giant": ["A mythical human of very great size.", "Very large."], "Peru": ["A country in South America, with capital Lima."], "Palau": ["A country in Oceania with capital Melekeok.", "ISO 639-6 entity"], "truffle": ["Any of various edible fungi, of the genus Tuber, that grow in the soil."], "cat o' nine tails": ["(nautical) a whip having nine knotted cords, formerly used for flogging as naval punishment."], "lammergeier": ["An Old World vulture, the only member of the genus Gypaetus."], "bearded vulture": ["An Old World vulture, the only member of the genus Gypaetus."], "sunny": ["Featuring a lot of sunshine.", "Exposed to the sun."], "kip": ["To rest in a state of decreased consciousness and reduced metabolism.", "A short period of sleep, especially one during the day time."], "nap": ["A short period of sleep, especially one during the day time.", "To sleep for a short period of time, especially during the day time."], "snooze": ["A short period of sleep, especially one during the day time."], "forty winks": ["A short period of sleep, especially one during the day time."], "doze": ["A short period of sleep, especially one during the day time."], "siesta": ["A short period of sleep, especially one during the day time.", "A short nap after lunch."], "elm": ["A tree of the genus Ulmus of the family Ulmaceae, large deciduous trees with alternate stipulate leaves and small apetalous flowers."], "virgin": ["A woman who has never had sexual intercourse."], "only child": ["A person that has no siblings."], "regret": ["The wish something had not happened.", "To wish that a past event had not happened."], "orangutan": ["One of two species of great apes with long arms and reddish, sometimes brown, hair native to Malaysia and Indonesia."], "chick": ["A woman that is considered sexually attractive by a man, or many men.", "A young of any of the bird species in the order Galliformes, especially from the species domesticated chicken (Gallus gallus domesticus).", "A young bird of any species, nestling."], "Croatia": ["A country in Europe with capital Zagreb."], "Djibouti": ["A country in Eastern Africa whose capital is Djibouti.", "Capital of Djibouti."], "homeopathy": ["(medicine) a system of treating diseases with small amounts of substances which, in larger amounts, would produce the observed symptoms."], "cop": ["A male police officer."], "policeman": ["A male police officer."], "policewoman": ["A female police officer."], "chess": ["A board game for two players with each beginning with sixteen chess pieces moving according to fixed rules across a chessboard with the objective to checkmate the opposing king."], "east": ["One of the four principal compass points, specifically 90\u00b0, conventionally directed to the right on maps. The direction of the rising sun."], "hormonal": ["Pertaining to hormones."], "antidote": ["A remedy to counteract the effects of poison.", "Expedient to remedy a difficult or critical situation."], "whole": ["With everything included.", "Not divided in parts.", "The whole of buildings, machines and necessary devices to carry out an activity.", "Set of elements constituting something complete.", "The result of the union of two or more elements.", "In a whole or complete manner.", "The totality of.", "Acting together as a single undiversified whole."], "dance": ["To move with rhythmic steps or movements, especially in time to music.", "A sequence of rhythmic steps or movements performed to music, for pleasure or as a form of social interaction."], "co-op": ["A form of housing where the residents are co-owners of a housing complex, usually an apartment block or a group of multi-familiy homes, where the co-ownership grants the right to inhabit one housing unit and the obligation to maintain that unit. Common facilities and outer maintenance is funded by a set monthly fee that is paid by all co-owners."], "atom": ["(chemistry and physics), is the smallest possible particle of a chemical element that retains its chemical properties."], "condo": ["A form of housing where the residents are co-owners of a housing complex, usually an apartment block or a group of multi-familiy homes, where the co-ownership grants the right to inhabit one housing unit and the obligation to maintain that unit. Common facilities and outer maintenance is funded by a set monthly fee that is paid by all co-owners."], "boiling fowl": ["A usually old and large chicken that is generally used in the preparation of soup."], "hyponym": ["An entry in a thesaurus that has a smaller semantic scope than the headword itself."], "hypernym": ["A term that has a more comprehensive or more general semantic scope than an other."], "hypochlorite": ["The negative ion of hypochlorous acid with the chemical formula [OCl]-. A five percent solution of the sodium salt in water is used as bleaching agent."], "salivary gland": ["Gland that produces the saliva."], "xerostomia": ["Dryness of the mouth, because of a lack of saliva."], "dry mouth": ["Dryness of the mouth, because of a lack of saliva."], "lingual nerve": ["Nerve on the tongue that transmits the taste to the brain."], "legal entity": ["A legal construct through which the law allows a group of natural persons to act."], "natural person": ["In jurisprudence a human being perceptible through the senses and subject to physical laws."], "ISO 639-3 codes": ["OmegaWiki collection of ISO 639-3 language codes"], "stroke": ["The loss of brain function arising when the blood supply to the brain is suddenly interrupted.", "To touch or kiss lovingly.", "An event that happens suddenly or by chance without an apparent cause."], "cerebrovascular accident": ["The loss of brain function arising when the blood supply to the brain is suddenly interrupted."], "Sicilian": ["The language of Sicily."], "go away": ["To move away from a place, a situation or a talk.", "To tell someone to go away.", "To go away from a place; to leave."], "enough": ["All that is required, needed, or appropriate."], "before": ["At a time before that.", "In front of in space", "In front of, according to system of ordering items.", "Earlier than (in time).", "Under consideration, judgment, authority of (someone).", "In the future of (someone).", "At a higher or greater position in a subjective ranking."], "nearly": ["All, but not quite; slightly short of ; close to entirely.", "In an intimate manner."], "measure": ["The quantity, size, weight, distance or capacity of a substance compared to a designated standard.", "An (unspecified) quantity or capacity", "The precise designated distance between two objects or points.", "The act of measuring.", "A musical designation consisting of all notes and or rests delineated by two vertical bars; an equal and regular division of the whole of a composition.", "A tactic, strategy or piece of legislation.", "A function that assigns a non-negative number to a given set following the mathematical nature that is common among length, volume, probability and the like.", "To ascertain the quantity of a unit of material via calculated comparison with respect to a standard.", "To estimate the unit size of something.", "To place a value on."], "Balinese": ["A language spoken on the island of Bali."], "hard": ["Resistant to pressure.", "Requiring a lot of effort to do or understand.", "Demanding a lot of effort to endure.", "Of a person, severe, unfriendly.", "Absolutely not open for interpretation.", "Of an alcoholic beverage, containing a high percentage of alcohol.", "Of water, high in dissolved calcium compounds.", "Very strong or vigorous (e.g. of a punch or blow)."], "Yandruwandha": ["An nearly extinct or extinct language of south Australia."], "decrease": ["(Of a quantity) to become smaller.", "An amount by which a quantity is diminished.", "Act of reducing a quantity or a number.", "To make smaller.", "The act of abating or the state of being abated."], "proton": ["A positively charged subatomic particle forming part of the nucleus of an atom and determining the atomic number of an element."], "cheap": ["Low in price.", "Of very poor quality."], "sea otter": ["A large otter (Enhydra lutris) of the Mustelids family that is the only otter that can live permenantly in the sea."], "pair": ["Two similar or identical things taken together.", "(followed by of) Two; a couple of.", "Used in the names of some objects and garments that have two similar parts or halves", "To bring two objects, ideas, or people together.", "In mathematics, an ordered list of two elements."], "Konkani": ["A language of India.", "An Indo-Aryan language group belonging to the Indo-European family of languages spoken in the Konkan coast of India, consisting of two individual languages: Konkani and Goan Konkani."], "rain cats and dogs": ["To rain heavily."], "rain dogs and cats": ["To rain heavily."], "infringement": ["A crime less serious than a felony."], "neutron": ["(physics) a subatomic particle having no charge and almost the same mass such as proton; forming part of the nucleus of an atom."], "Min Nan": ["The language of the southern Fujian province of China."], "Oruzgan": ["One of the 34 provinces of Afhanistan."], "rape": ["A Eurasian cruciferous plant, Brassica napus, that is cultivated for its seeds, which yield a useful oil, and as a fodder plant.", "To force sexual intercourse or other sexual activity upon another person, without their consent.", "The act of forcing sexual intercourse or other sexual activity upon another person against their will."], "Pampangan": ["A regional language spoken by the Pampangan (also named Kapampangan) people of the Philippines. It is a Northern Philippine language within the Austronesian language family.", "People inhabitating a part of the North of area belonging to the state of the Philipines. Their mother tongue is the language Pampangan (also called Kapampangan)"], "Kapampangan": ["A regional language spoken by the Pampangan (also named Kapampangan) people of the Philippines. It is a Northern Philippine language within the Austronesian language family.", "People inhabitating a part of the North of area belonging to the state of the Philipines. Their mother tongue is the language Pampangan (also called Kapampangan)"], "atomic number": ["The number of protons found in the nucleus of a atom."], "obituary": ["A brief notice of a person's death, as published in a newspaper", "A biography of a recently deceased person, written by a journalist and published in a newspaper"], "discover": ["To find something for the first time.", "(chess) To create by moving a piece out of another piece's line of attack.", "(somewhat dated) To expose something previously covered", "To see, discover or determine something, unclear, distant or hidden, by looking carefully."], "blockade": ["The isolation of something, especially a port, in order to prevent commerce and traffic in or out.", "To render passage impossible by physical obstruction."], "siege": ["A prolonged military assault on a blockade of a city or fortress with the intent of conquering by force or attrition."], "Piedmontese": ["A language spoken by over 2 million people in Piedmont, northwest Italy"], "pandemic": ["Epidemic over a wide geographical area (several countries, continents or worldwide) and affecting a large proportion of the population.", "(Of a disease) occurring over a wide geographic area and affecting a large proportion of the population."], "CFC": ["Gases formed of chlorine, fluorine, and carbon whose molecules normally do not react with other substances; they are therefore used as spray can propellants because they do not alter the material being sprayed."], "alphabet": ["A complete standardized set of letters each of which roughly represents a phoneme of a spoken language."], "puma": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "cougar": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "mountain lion": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "panther": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail.", "A big cat of the genus Panthera."], "catamount": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "painter": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail.", "A person (usually a professional) who brushes paint onto surfaces (such as paper or canvas), in order to create a creative piece or work."], "American lion": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "Mexican lion": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "Florida panther": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "silver lion": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "red lion": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "red panther": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "red tiger": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "brown tiger": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "deer tiger": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "ghost cat": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "mountain screamer": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "Indian devil": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "sneak cat": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "king cat": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "painted cat": ["Species of feline (Puma concolor) tawny-colored with black-tipped ears and tail."], "artist": ["A person (usually a professional) who brushes paint onto surfaces (such as paper or canvas), in order to create a creative piece or work.", "A person with creative talent who produces artworks."], "elementary particle": ["(physics) any of the subatomic particles that does not consist of other, smaller particles."], "interactive fiction": ["A computer game genre (most popular in the 1970s and 1980s) where the player directs the character by typing commands. Games of this genre commonly involve solving puzzles and exploring environments."], "text adventure": ["A computer game genre (most popular in the 1970s and 1980s) where the player directs the character by typing commands. Games of this genre commonly involve solving puzzles and exploring environments."], "IF": ["A computer game genre (most popular in the 1970s and 1980s) where the player directs the character by typing commands. Games of this genre commonly involve solving puzzles and exploring environments."], "sunshine": ["The direct light of the sun.", "A location on which the sun's rays fall.", "A source of cheerfulness or happiness."], "sunlight": ["The electromagnetic radiation and particles emitted by the sun.", "The direct light of the sun."], "sunbeam": ["A narrow ray of sunlight."], "sunray": ["A narrow ray of sunlight."], "sun-ray": ["A narrow ray of sunlight."], "particle physics": ["(physics) a branch of physics that studies the elementary particle constituents of matter and radiation, and the interactions between them."], "Frosinone": ["City in the region Lazio, Italy.", "A province in the Lazio region of Italy"], "mention": ["To refer briefly to; to make reference to.", "To make mention of.", "A short note recognizing a source of information or of a quoted passage."], "touch": ["To be of (some) importance, to influence something or someone (enough), to impress, to touch.", "To be in physical contact with.", "To perceive via the tactile sense, especially with a hand.", "To be relevant or of importance to.", "To affect emotionally."], "marry": ["To take as husband or wife; to take in marriage.", "To perform a wedding ceremony.", "To enter marriage; to take a husband or a wife."], "Finn": ["A person of Finnish nationality."], "million": ["The cardinal number 1,000,000."], "monastery": ["The habitation and workplace of a community of monks or nuns.", "A convent for men."], "moderate": ["To make less fast or intense.", "Refers to the development of a economical variable and simil.", "To lessen the intensity of; temper; hold in restraint; hold or keep within limits.", "Being of average amount, intensity, quality, degree.", "To make less strong or intense; soften."], "Stone Age": ["A period of history that encompasses the first widespread use of technology in human evolution and the spread of humanity from the savannas of East Africa to the rest of the world."], "Etruscan": ["Of or pertaining to the region and culture of Etruria, a pre-Roman civilization in Italy.", "The extinct language of Etruria, which has no known relation to any other language."], "herb": ["Any green, leafy plant, or parts thereof, used to flavour or season food.", "A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect."], "ivy": ["Genus of about ten species of climbing or ground-creeping evergreen woody plants in the family Araliaceae."], "exclude": ["To refuse to accept as valid.", "To bar someone from entering; to keep out.", "To prevent from entering; to keep out (e.g. of membership)."], "execution": ["The act of commiting capital punishment against someone for a certain crime or action", "The carrying out of an instruction by a computer."], "homonym": ["A word that sounds and/or is spelled the same as another word but has a different meaning."], "clothes": ["All coverings designed to be worn on a person's body."], "neoplasm": ["Any new and abnormal growth, specifically one in which cell multiplication is uncontrolled and progressive.", "An abnormal new growth of disorganized tissue in animals or plants."], "ccTLD": ["An Internet top-level domain generally used or reserved for a country or a dependent territory."], "International Atomic Energy Agency": ["Autonomous organization created on July 29, 1957 who seeks to promote the peaceful use of nuclear energy and to inhibit its use for military purposes."], "IAEA": ["Autonomous organization created on July 29, 1957 who seeks to promote the peaceful use of nuclear energy and to inhibit its use for military purposes."], "abbey": ["The habitation and workplace of a community of monks or nuns.", "The church of a monastery."], "absurd": ["Contrary to reason or propriety."], "matter": ["(physics) is commonly defined as the substance of which physical objects are composed.", "To be important.", "A vaguely specified subject, question, situation, etc. that is or may be an object of consideration or action."], "ludicrous": ["Contrary to reason or propriety."], "nunnery": ["The habitation and workplace of a community of monks or nuns.", "A convent for women."], "role model": ["A person who serves as a example of positive behavior, especially in some specific field."], "hero": ["The principal character in a work of fiction.", "A person who serves as a example of positive behavior, especially in some specific field.", "A man distinguished by exceptional courage, nobility and strength.", "A being of great strength and courage celebrated for bold exploits; often the offspring of a mortal and a god."], "castle": ["Historical building or group of building used for defense by military forces, whose main structures are walls and towers.", "A piece of chess commonly shaped like a tower. Each player has two, and they move in straight horizontal or vertical lines across the board."], "wild": ["Not controlled or not in compliance with the norms of good education or decency.", "Not domesticated or tamed.", "not domesticized; living on their own (almost) without human interference"], "boisterous": ["Not controlled or not in compliance with the norms of good education or decency.", "Noisy and lacking in restraint or discipline."], "ranting": ["Not controlled or not in compliance with the norms of good education or decency.", "A loud bombastic declamation expressed with strong emotion."], "savage": ["Living outside of civilized societies.", "A person living an uncivilized life, in an original state viewed from a standpoint of the development of mankind from their infestation til today, having had no education in the narrow sense of modern civilisation's education.", "Marked by extreme and violent energy."], "unruly": ["Not neat or regular; uneven.", "Noisy and lacking in restraint or discipline."], "rugged": ["Not neat or regular; uneven."], "fierce": ["Marked by extreme and violent energy."], "furious": ["Marked by extreme and violent energy."], "illegal": ["Contrary to or forbidden by law, especially criminal law.", "Not conforming to, permitted by, or recognised by law or rules."], "unofficial": ["Not in accord with the usual regulations.", "Not officially established."], "tousled": ["Not neat or regular; uneven."], "crazy": ["Mentally ill; affected with madness or insanity."], "mad": ["Irritated, in a temper, feeling or displaying anger.", "Mentally ill; affected with madness or insanity.", "Showing symptoms of mental illness.", "Extremely foolish or unwise."], "in a rant": ["Not controlled or not in compliance with the norms of good education or decency."], "mischivous": ["Not controlled or not in compliance with the norms of good education or decency."], "living wild": ["not domesticized; living on their own (almost) without human interference"], "wildliving": ["not domesticized; living on their own (almost) without human interference"], "Nigeria": ["A country in Western Africa. Nigeria shares land borders with the Republic of Benin in the west, Chad and Cameroon in the east, Niger in the north, and borders the Gulf of Guinea in the south."], "Dinka": ["A group of tribes of south Sudan."], "Sudan": ["A country in Northern Africa."], "Libya": ["A country in Northern Africa whose capital is Tripoli."], "Turkmen": ["A language spoken in Central Asia.", "A person from or a citizen of Turkmenistan.", "Of, from or pertaining to Turkmenistan, the Turkmen people or the Turkmen language."], "particle accelerator": ["A device that uses electric fields to propel electrically charged particles to high speeds."], "Darfur": ["Region in the West of Sudan consisting of three states."], "falafel": ["A fried ball or patty made from spiced fava beans and/or chickpeas."], "Turkmenistan": ["Country in Central Asia."], "impudent": ["Not showing due respect."], "impertinent": ["Not showing due respect.", "Not pertinent to the matter under consideration."], "brazen-faced": ["Not showing due respect.", "Unrestrained by convention or propriety."], "atomic mass": ["The mass of an atom at rest, most often expressed in unified atomic mass units \"u\"."], "Greenbelt": ["An annual Christian music and performing arts festival that is currently held in Cheltenham in the United Kingdom."], "photon": ["The elementary particle responsible for electromagnetic interactions and light."], "do": ["To put to death; to end a life.", "To take part in sexual activity (most commonly sexual intercourse) with another person for the purposes of sexual pleasure.", "To act, to behave.", "To perform a theatrical role.", "To meet the need.", "(For an act or situation) To be reasonable or acceptable.", "To prepare (an article of food or drink) for consumption.", "[With verbal nouns, forming phrases approximately equivalent to the source verb]", "To cause by one's action (a person) to have (something).", "To perform (with obj. being the action).", "To perform as required (with obj. expressing command, duty, etc.).", "To perform as required (a ceremony, an act, etc.).", "To bring to a conclusion.", "To operate upon or deal with (an object) in any way.", "To act the part of.", "To accomplish (a given distance) in travelling.", "To visit (a location) as a tourist, or attend (an entertainment).", "To spend (time) in jail or, sometimes, in office.", "To use (a hallucinogenic or other drug).", "To exert activity of any kind.", "To succeed in achieving a task (despite difficulties).", "[In the context of health or condition] to be (as specified).", "To grow or develop well and vigorously.", "[A syntactic marker in questions.]", "[A syntactic marker in negations.]", "[A syntactic marker for emphasis.]", "To act this way. [A pro-verb: word replacing any recent earlier, or implied verb.]", "[Used to add force to entreaty, exhortation, or command.]", "To have as one's job.", "To meet (for a specified meal).", "To engage in.", "A syllable used in solf\u00e8ge to represent the first and eighth tonic of a major scale.", "The style in which a person's hair is cut, arranged, and worn.", "A social function of modest size and formality."], "hobgoblin": ["A mischievous creature in British and Scottish folklore.", "An object of dread or apprehension."], "United Kingdom": ["A country in Western Europe (comprising Wales, Scotland, England and Northern Ireland) with the capital London."], "Brazil": ["A country in South America with the capital Brazilia."], "Bhutan": ["A country in South Asia whose capital is Thimphu."], "Brunei": ["A country in Southeast Asia whose capital is Bandar Seri Begawan.", "A language spoken in Brunei and Malaysia"], "Benin": ["A country in Western Africa whose capital is Porto Novo."], "Burundi": ["A country in Eastern Africa, whose capital is Bujumbura."], "Thailand": ["A country in Southeast Asia."], "Winnie-the-Pooh": ["A fictional golden-coloured bear who is known for being lovable but slow-witted (from the Winnie-the-Pooh series by AA Milne)."], "Pooh Bear": ["A fictional golden-coloured bear who is known for being lovable but slow-witted (from the Winnie-the-Pooh series by AA Milne)."], "Winne the Pooh": ["A fictional golden-coloured bear who is known for being lovable but slow-witted (from the Winnie-the-Pooh series by AA Milne)."], "quantum": ["(physics) the smallest possible unit of a given quantity.", "Of a change, sudden or discrete, without intermediate stages."], "drift away": ["To be lost in phantasies or be carried away by some internal vision, having temorarily lost (part of) contact to reality."], "illegally": ["In a manner contrary to law."], "unofficially": ["In a manner contrary to law."], "C": ["A musical note.", "A general-purpose computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system."], "perfume": ["Industrial product, made from flowers, or produced by some chemical process, from which a pleasant smell exhales.", "Pleasant and aromatic smell that usually comes from flowers.", "To spray or dab with perfume."], "duration": ["The weighted average life of a security."], "hedonism": ["(philosophy) The belief that pleasure or happiness is the highest good in life."], "security": ["The state of being secure from harm, injury, danger or risk.", "The investment of money in assets."], "glasses": ["A pair of lenses in a frame that are worn in front of the eyes and are used to correct faulty vision or protect the eyes."], "spectacles": ["A pair of lenses in a frame that are worn in front of the eyes and are used to correct faulty vision or protect the eyes."], "pancake": ["A delicacy made of flour, eggs and milk, baked in a frying pan."], "star system": ["A huge gravitationally bound system of relatively close stars."], "hedonistic": ["Of or pertaining to hedonism or hedonists."], "United Kingdom of Great Britain and Northern Ireland": ["A country in Western Europe (comprising Wales, Scotland, England and Northern Ireland) with the capital London."], "tanker": ["A very large ship which carries crude oil or other petroleum products in big tanks.", "A ship designed for bulk shipment of liquids or gases."], "anyway": ["Something that's going to happen, independent of whatever will be"], "unhappy": ["That is not happy.", "Feeling mentally uncomfortable because something is missing or wrong."], "unsatisfied": ["Not satistied."], "satisfied": ["In a state of satisfaction."], "atomic line filter": ["Optical narrow band-pass filter, used for filtering electromagnetic radiation."], "black hole": ["Object predicted by general relativity with a gravitational field so strong that nothing can escape it, not even light."], "professional": ["Somebody who earns his living by doing a job.", "Done by a professional.", "A highly skilled person.", "Relating to a profession, characterized by or conforming to the technical or ethical standards of a profession."], "culture": ["The body of customary beliefs, social forms, and material traits constituting a distinct complex of tradition of a racial or social group."], "Ukraine": ["A country in Eastern Europe, with the capital Kiev."], "Mongolia": ["Country in Central Asia."], "cleanliness": ["The state of being clean and keeping healthy conditions.\\n(Source: PHCa)"], "Mali": ["A country in Western Africa whose capital is Bamako.", "A language in Papua New Guinea."], "law": ["One of the rules making up the body of law.", "Science that studies the complex of rules fixed by law or custom which regulate social relations.", "A body of rules of action or conduct prescribed by a legislative authority, and having binding legal force."], "building related illness": ["A set of symptoms, including headaches, fatigue, eye irritation, and dizziness, typically affecting workers in modern airtight office buildings and thought to be caused by indoor pollutants, such as formaldehyde fumes, particulate matter, microorganisms, etc."], "rhinoceros": ["A large herbivorous pachyderm of the family Rhinocerotidae, with thick, gray skin and one or two horns on their snouts."], "rhino": ["A large herbivorous pachyderm of the family Rhinocerotidae, with thick, gray skin and one or two horns on their snouts."], "Bahrain": ["A country in the Middle East."], "quark": ["Elementary particle which forms protons and neutrons.", "Fresh unripened cheese of a smooth texture made from pasteurized milk and rennet."], "Barbados": ["A country in the Caribbean with capital Bridgetown."], "sleigh": ["A vehicle moved on runners, used to transport persons or goods on snow or ice."], "Bahamas": ["A country in the Caribbean with capital Nassau."], "Botswana": ["A country in Southern Africa whose capital is Gaborone."], "Venezuela": ["A country in South America, with capital Caracas."], "Vietnam": ["A country in Southeast Asia."], "Uruguay": ["A country in South America, with capital Montevideo."], "Togo": ["A country in Western Africa whose capital is Lom\u00e9."], "Egypt": ["A country in North Africa."], "Eritrea": ["Country in Eastern Africa whose capital is Asmara."], "Ecuador": ["A country in South America, with capital Quito."], "Dominica": ["A country in the Caribbean."], "Latvia": ["One of the Baltic countries, whose capital is Riga."], "Morocco": ["A country in Northern Africa whose capital is Rabat."], "Malta": ["A country in Europe, an island nation between Italy, Tunisia and Libya. Its capital is Valletta."], "Malawi": ["A country in Southern Africa whose capital is Lilongwe."], "Costa Rica": ["A country in Central America, with capital San Jos\u00e9."], "Ethiopia": ["A country in Eastern Africa, bordered by Eritrea, Djibouti, Somalia, Kenya and Sudan. Its capital is Addis Ababa."], "mass": ["The total amount of matter in an object, determined by the gravity or the inertia of that object.", "A body of matter without definite shape.", "A great number or large amount of things not placed in a pile.", "The celebration of the Eucharist by the Roman Catholic Church and Protestant Churches.", "People of the lower classes.", "A large body of individuals, especially persons.", "A palpable or visible abnormal globular structure.", "Concerning a large quantity or number.", "Involving a large number of people."], "Kazakhstan": ["A country in Central Asia whose capital is Astana."], "shovel": ["A tool consisting of a stick (usually out of wood) and a bigger, slightly humped surface (usually out of metal), which is used to move material such as earth, snow, grain, etc. from one place to another.", "Small shovel used for instance by children to play with the sand.", "A machine used to dig the ground and to lift and carry dirt and debris.", "To dig with or as if with a shovel."], "Mauritius": ["A country in the Indian Ocean with capital Port-Louis."], "Macedonia": ["A country in Europe."], "hippopotamus": ["A massive thick-skinned herbivorous quadruped living in Africa."], "hippo": ["A massive thick-skinned herbivorous quadruped living in Africa."], "false friend": ["A word in one language bearing a deceptive resemblance to a word in another language."], "cognate": ["A word derived from the same roots as another word.", "Genealogy: A blood relative in the female line.", "One related by blood or origin with another, especially a person sharing an ancestor with another."], "blush": ["To redden in the face from shame, excitement or embarrassment.", "A cosmetic consisting of red powder which is applied to the cheeks so as to provide a more youthful appearance and to emphasise the cheekbones."], "Gabon": ["A country in Western Africa whose capital is Libreville."], "Mozambique": ["A country in southeastern Africa with capital Maputo."], "Niger": ["A country in Western Africa whose capital is Niamey."], "Nepal": ["A country in South Asia, located in the Himalaya between India and China (Tibet)."], "Malaysia": ["A country in Southeast Asia that consists of two parts that are seperated by the South Chinese Sea."], "Myanmar": ["A country in Southeast Asia that is located partially on the Indian subcontinent and has borders with Bangladesh, China, India, Laos and Thailand."], "Kuwait": ["A country on the Arabian peninsula in Asia on the coast of the Persian Gulf, with Saudi Arabia in the South and Iraq in the North; Its capital is Kuwait City."], "redden": ["To become red.", "To make red."], "periodic table": ["A table which presents of all chemical elements sorted by their atomic number and divided into groups according to the structure of their electron shell."], "Athens": ["The capital city of Greece, named after the Greek goddess."], "lemon yellow": ["A colour resembling that of the lemon; RAL-1012."], "bee's knees": ["The very best of something; the height of excellence."], "mole": ["Spy under deep cover.", "A benign growth on the skin (usually tan, brown, or flesh-colored) that contains a cluster of melanocytes and may form a slight relief.", "Small insectivorous mammal, especially of the family Talpidae, living chiefly underground, and having velvety fur, very small eyes, and strong forefeet."], "abdication": ["The voluntary renunciation of sovereign power."], "cream of the crop": ["The very best of something; the height of excellence."], "overlook": ["To have within ones range of physical sight or vision, likely from an elevated position; to be in a position of oversight; to visually control.", "To fail to notice or recognize (usually a detail).", "To purposely not notice or recognize, or pretend to not notice; having seen or recognized something, to willfullly not take an appropriate or required action.", "To look down on."], "points": ["Entities that have a location in space but no extent."], "bigotry": ["The characteristic qualities of a bigot; intolerance or prejudice, especially religious or racial."], "bigot": ["One strongly loyal to one's own social group, and irrationally intolerant or disdainful of others."], "Frankfurt": ["Short for Frankfurt-am-Main, a city in central Germany.", "Short for Frankfurt-an-der-Oder a city in eastern Germany."], "Collection membership": ["An OmegaWiki term to indicate an expression is part of the indicated collections. There should not be synonyms for this term, only translations."], "Relations": ["An OmegaWiki term to indicate an expression is related to the indicated expressions. There should not be synonyms for this term, only translations."], "stingray": ["Any of various large, venomous rays, of the orders Rajiformes and Myliobatiformes, having a barbed, whiplike tail."], "Taiwan": ["A partially recognised state in East Asia which governs a number of islands claimed by the People's Republic of China, including the island of Taiwan."], "Tuvalu": ["A country in Oceania."], "filibuster": ["Delaying tactics, especially long, often irrelevant speeches given in order to delay progress or the making of a decision."], "gerrymandering": ["The practice of redrawing electoral districts to gain an electoral advantage for a political party."], "Tunisia": ["A country in Northern Africa with capital Tunis."], "life": ["The sequence of physical and mental experiences that make up the existence of an individual.", "The quality that distinguishes a vital and functional plant or animal from a dead body.", "A state of living characterized by capacity for metabolism, growth, reaction to stimuli, and reproduction.", "The period during which an entity (a person, an animal, a plant, a star) is alive.", "The span of time during which an object operates.", "The period of time during which an object is recognizable.", "A status given to any entity including animals, plants, fungi, bacteria, etc. \u2014 and sometimes viruses \u2014 having the properties of replication and metabolism.", "The essence of the manifestation and the foundation of the being.", "The subjective and inner manifestation of the individual.", "The state of being.", "A worthwhile existence.", "The most worthwhile component or participant.", "Something which is inherently part of a person's existence, such as job, family, a loved one, etc.", "A term of imprisonment of a convict until his or her death.", "One of the player's chances to play, lost when a mistake is made (e.g. in a video game)."], "usually": ["Under normal conditions."], "sublimate": ["To change state from a solid to a gas (or from a gas to a solid) without passing through the liquid state.", "To modify the natural expression of a sexual or primitive instinct in a socially acceptable manner."], "silliness": ["The quality or state of being silly."], "violet": ["The resultant colour of the junction of the flesh-color with blue. Colour of the amethyst.", "A plant of the genus Viola having two upswept petals and three pointing downward."], "Cancer": ["One of the twelve constellations of the zodiac.", "The fourth sign of the zodiac; the sun is in this sign from about June 21 to July 22.", "A person who is born while the sun is in Cancer.", "A genus of marine crabs of the family Cancridae."], "gold medal": ["The award presented after being victorious in a sporting event."], "conducive": ["Tending to bring about."], "nightmare": ["An unpleasant dream which evokes feelings of fear or horror.", "A situation resembling a terrifying dream."], "ultimatum": ["Final demand made without intent of negotiation. It is usually the last step before a confrontation."], "nightmarish": ["Resembling a nightmare."], "Madagascar": ["An island country in the Indian Ocean off the southeastern coast of Africa"], "Maldives": ["A country in South Asia, more particularly an island nation in the Indian Ocean, located about 700 kilometers southwest of Sri Lanka. Its capital is Male."], "amnesty": ["An act of the sovereign power granting a pardon."], "spy": ["A person in charge of illegally gathering information to be kept secret."], "secret agent": ["A person in charge of illegally gathering information to be kept secret."], "sprawl": ["To spread out in a disorderly fashion."], "straggle": ["To spread out in a disorderly fashion."], "electron configuration": ["The distribution of electrons of an atom or molecule in atomic or molecular orbitals."], "chemist": ["A scientist who practises chemistry.", "Somebody who professionally prepares and sells pharmaceuticals."], "cheers": ["[An interjection of gratitude or politeness, used in response to something done or given.]"], "tiger": ["A large carnivorous animal (Panthera tigris) of the cat family indigenous to Asia."], "roadkill": ["An animal killed by traffic."], "Qatar": ["A country in the Middle East with capital Doha."], "gravity": ["Physics: the force of mutual attraction between all masses in the universe."], "gravitation": ["Physics: the force of mutual attraction between all masses in the universe."], "scaffolding": ["A temporary modular system of metal, wooden or bamboo tubes forming a framework used to support people and material in the construction or repair of buildings and other large structures."], "vegetarian": ["A person who does not consume meat, with or without the use of other animal derivatives, such as dairy products or eggs.", "A woman who does not eat meat.", "Of or pertaining to vegetarianism or vegetarians.", "Consisting only of fruit, vegetables, nuts etc; not containing meat."], "Russia": ["The largest country in the world, partially located in Europe and partially in Asia."], "degeneration": ["A gradual deterioration from natural causes."], "fantasise": ["To have a daydream; to indulge in a fantasy."], "Czechia": ["A country in Central Europe, with capital Prague."], "Czech Republic": ["A country in Central Europe, with capital Prague."], "Yemen": ["A country in the Middle East located at the most Southern point of the Arabic peninsula, with capital San\u2018a\u2019."], "bistro": ["A small informal restaurant."], "soup kitchen": ["An institution that tries to help in times of hunger and need by providing free food."], "voyeurism": ["The act of spying on people engaged in intimate behaviors."], "give birth": ["To release an offspring from one's own body; to cause to be born."], "like": ["To find (something) agreeable with one's taste .", "As an example. [Used to introduce an example or list of examples.]", "In the way of.", "To find attractive.", "To have an affection for.", "To enjoy, be in favor/favour of.", "In a manner suggesting.", "To prefer or wish to do something."], "vein": ["A blood vessel that transports blood from the capillaries back to the heart."], "explanation": ["The act or process of describing how something works or the reasons why something happened."], "artery": ["A blood vessel transporting blood away from the heart.", "A major transit corridor."], "amateur": ["Someone who pursues something as a hobby."], "tsunami": ["A large seismically generated sea wave which is capable of considerable destruction in certain coastal areas, especially where submarine earthquakes occur."], "heavenly body": ["A natural objects in the universe which is visible in the sky."], "documentary": ["A film, TV program, book etc. that presents in a factual or informative manner."], "crown prince": ["A prince who in a monarchy is the first in line to succeed the legitimate monarch at his abdication or death."], "coronation": ["The act of investing a monarch with the insignia of royalty, on his succeeding to the throne.", "The act of enthroning or the state of being enthroned."], "sceptre": ["An ornamental staff held by a ruling monarch as a symbol of power."], "mane": ["The long hair in the neck of horses and lions."], "knowledge": ["The psychological result of perception and learning and reasoning.", "General understanding or familiarity with a subject, place, situation etc.", "Awareness of a particular fact or situation.", "The state of appreciating truth or information.", "The total of what is known.", "Something that can be known."], "communicate": ["To transmit information and make known.", "To be in verbal contact; to interchange information or ideas."], "receive": ["To be handed something; to come into possession of.", "To express willingness to have (one) in one's home or environment.", "To convert a signal into sounds or pictures.", "To salute with kindness, as a newcomer; to bid welcome to; to greet upon arrival.", "To go through (mental or physical states or experiences).", "To receive as a retribution or punishment."], "pertain": ["To have to do with or to be relevant to ...", "To be a part or attribute of.", "To be relevant or of importance to."], "systematic": ["Characterized by order and planning."], "study": ["A detailed critical inspection.", "To apply the mind to learning and understanding a subject (especially by reading).", "A written document describing the findings of some individual or group.", "A composition intended to develop one aspect of the performer's technique.", "To consider in detail and subject to an analysis in order to discover essential features or meaning.", "To follow a course of study; to be enrolled at an institute of learning.", "To think intently and at length, as for spiritual purposes.", "To acquire, or attempt to acquire knowledge or an ability to do something.", "Continued attention of the mind to a particular subject.", "A room in a house intended for reading and writing."], "canvass": ["To consider in detail and subject to an analysis in order to discover essential features or meaning.", "An inquiry into public opinion conducted by interviewing a random sample of people."], "meditate": ["To think intently and at length, as for spiritual purposes."], "physical": ["Involving the body as distinguished from the mind or spirit.", "Relating to the sciences dealing with matter and energy; especially physics.", "Having substance or material existence.", "Impelled by physical force especially against resistance.", "A medical check-up undertaken by a physician; usually done on a regular basis on apparently healthy individuals in order to discover any illnesses or ailments."], "tangible": ["Having substance or material existence."], "touchable": ["Having substance or material existence."], "global": ["Involving the entire earth; not limited or provincial in scope."], "planetary": ["Of, or relating to planets, or the orbital motion of planets."], "universe": ["Everything that exists anywhere.", "An entity similar to our Universe; one component of a larger entity known as the multiverse.", "Everything under consideration.", "An imaginary collection of worlds.", "Intense form of world in the sense of perspective or social setting."], "mechanical": ["Using (or as if using) mechanisms or tools or devices.", "Relating to or concerned with machinery or tools."], "industrial": ["Of or relating to or resulting from industry."], "mud": ["A mixture of clay and/or silt with water to form a plastic mass with a particle size preponderantly below 0.06 mm diameter. It is deposited in low-energy environments in lakes, estuaries and lagoons. It may also be deposited in deep-sea environments.\\n(Source: WHIT)", "Soaked clay or soil; very soft ground.", "To soil with mud, muck, or mire.", "(oil extraction) A mixture of base substance and additives used to lubricate the drill bit and to counteract the natural pressure of the formation."], "arts": ["Studies intended to provide general knowledge and intellectual skills (rather than occupational or professional skills)."], "artwork": ["Photographs or other visual representations in a printed publication."], "nontextual matter": ["Photographs or other visual representations in a printed publication."], "graphics": ["Photographs or other visual representations in a printed publication."], "mass transport": ["The movement of matter in a medium.\\n(Source: MGH)"], "steam engine": ["An external combustion engine that makes use of the thermal energy that exists in steam, converting it to mechanical work."], "concentration": ["In solutions, the mass, volume, or number of moles of solute present in proportion to the amount of solvent or total solution.\\n(Source: MGH)", "The process of increasing the quantity of a component in a solution. The opposite of dilution.\\n(Source: CED)", "Complete attention."], "guess": ["To have as opinion, belief, or idea.", "To succeed to know, or discover, by way of surmises.", "A prediction made without factual evidence.", "To suppose with contestable premises."], "permafrost": ["Soil that stays in a frozen state for more than two years in a row."], "improve": ["To make better.", "To get better.", "To make better, more useful, more beautiful through modification."], "ameliorate": ["To make better.", "To get better.", "To make better, more useful, more beautiful through modification."], "Rwanda": ["A country in Eastern Africa whose capital is Kigali.", "A language of Rwanda, the Democratic Republic of the Congo and Uganda."], "Tajikistan": ["A country in Central Asia."], "Zimbabwe": ["A country in Southern Africa. Its capital city is Harare."], "Zambia": ["A country in southern Africa. Its capital is Lusaka."], "inhabitants": ["All humans, officially inhabitating a given area having well defined, and precise, borders - usually seen from a standpoint of census, government, register, etc."], "Samoa": ["A country in Oceania."], "Slovakia": ["A country in Central Europe. Borders with Poland, Czechia, Austria, Hungary and Ukraine."], "residency": ["The abstract property of a human, of living in a specific area given by precise, and well defined, borders. (This may be part of, or include, citizenship, but not necessarily so, e.g. for people having several places of residence, for foreigners, or ones officially being accepted on long-term transient living terms)"], "toxoplasmosis": ["Parasitic disease affecting primarily the felid family."], "Maiori": ["City in the province of Salerno, region Campania, Italy."], "compound": ["An enclosure of residences and other buildings.", "A word formed by combining other words.", "A chemical substance consisting of two or more different chemical elements chemically bonded together, with a fixed ratio determining the composition."], "doctrine": ["A rule, principle, theory, or tenet of the law, as the doctrine of merger, the doctrine of relation, etc.\\n(Source: WESTS)"], "Vatican City": ["A sovereign city-state in Rome."], "Vanuatu": ["A country in Oceania with the capital Port Vila."], "East Timor": ["A republic in Southeast Asia whose capital is Dili."], "Singapore": ["A country in Southeast Asia.", "ISO 639-6 entity"], "Philippines": ["An island nation located in Southeast Asia, with Manila as its capital city."], "rising": ["Collective violent action against an established power or arbitrary authority."], "Syria": ["A country in the Middle East, with capital Damascus."], "pound": ["The currency of the United Kingdom.", "The currency of Egypt.", "To strike hard with the hand, fist, or some heavy instrument, usually repeatedly.", "The official currency of the United Kingdom of Great Britain and Northern Ireland and some of its territories, with the symbol \"\u00a3\".", "To break down and crush by beating, as with a pestle."], "sterling": ["The currency of the United Kingdom."], "pound sterling": ["The currency of the United Kingdom.", "The official currency of the United Kingdom of Great Britain and Northern Ireland and some of its territories, with the symbol \"\u00a3\"."], "suspension": ["An interruption in the intensity or amount of something."], "piano sonata": ["A sonata written for unaccompanied piano."], "machine translation": ["The act of translating something by means of a machine, especially a computer."], "Sierra Leone": ["A country in Western Africa whose capital is Freetown."], "Somalia": ["A country in Eastern Africa whose capital is Mogadishu."], "lace": ["A openwork, patterned thin fabric, made through sewing or the use of bobbins.", "A cord or ribbon passed through eyelets in a shoe or garment, pulled tight and tied to fasten the shoe or garment firmly.", "Add alcohol to (beverages)"], "spitz": ["A dog from any of a set of breeds, originating in arctic areas, that are characterized by very thick, often white fur, pointed muzzles and ears and a tail that is rolled back over the back; and that are often used for hunting, herding or pulling sleds."], "vacuum": ["(physics) A volume of space that is substansively empty of matter.", "To clean (something) with a vacuum cleaner."], "New Zealand": ["A country in Oceania, to the east of Australia\u00f6 whose capital is Wellington."], "Micronesia": ["A country in Oceania."], "Comoros": ["A country in Eastern Africa whose capital is Moroni. Comoros consists of four islands in the Indian Ocean located between northern Madagascar and northeastern Mozambique."], "foreseeable": ["That can be foreseen."], "Cape Verde": ["An island country located in the Atlantic about 500 kilometers off the coast of Western Africa. Its capital is Praia."], "attempt": ["Criminal or illegal enterprise against persons or things.", "Earnest and conscientious activity intended to do or accomplish something.", "To exert oneself to do or effect something; to make an effort or attempt."], "Big Bang": ["Popular-scientific name of the cosmological theory, which describes how the universe came into existence in consequence of an enormous explosion 13.7 thousand million years ago"], "Swaziland": ["A country in Southern Africa whose capital is Mbabane."], "spaceship": ["A vehicle that can travel in outer space."], "midget": ["A normally proportioned person with small stature, usually defined as reaching an adult height less than 4'10\".", "Very small in size."], "steam boiler": ["A pressurized system in which water is vaporized to steam by heat transferred from a source of higher temperature, usually the products of combustion from burning fuels."], "sorbet": ["A kind of frozen dessert made from sugar and fruit puree, and that is different from ice cream in the absence of dairy product and by it not being light from whipping."], "stork": ["A large wading bird with long legs and a long beak of the family Ciconiidae."], "soft ice cream": ["A kind of semiliquid ice cream that is squirted out into cones or cups."], "Seychelles": ["A country of 158 islands 1,000 miles off the coast of East Africa, northeast of Madagascar. Its capital is Victoria."], "San Marino": ["A country in Europe within Italy.", "The capital city of San Marino."], "anger": ["A feeling of very strong irritation.", "Belligerence aroused by a real or supposed wrong (personified as one of the deadly sins)."], "wrath": ["A feeling of very strong irritation.", "Belligerence aroused by a real or supposed wrong (personified as one of the deadly sins)."], "Saint Lucia": ["A country in the Caribbean.", "Island nation in the Caribbean north of Saint Vincent and the Grenadines and south of Martinique"], "Solomon Islands": ["A country in Melanesia, Oceania. Its capital city is Honiara."], "South Korea": ["A country in East Asia whose capital is Seul."], "Luxembourg": ["A country (Grand Duchy) in north west Europe, bordered by Belgium, Germany and France. The capital of the same name is Luxembourg.", "The capital of Luxembourg."], "Liechtenstein": ["A small, doubly landlocked country in Central Europe whose capital is Vaduz."], "Burkina Faso": ["A country in Western Africa whose capital is Ouagadougou."], "Republic of the Congo": ["A country of Central Africa whose capital is Brazzaville."], "Congo-Brazzaville": ["A country of Central Africa whose capital is Brazzaville."], "Central African Republic": ["A country in Central Africa whose capital is Bangui."], "People's Republic of China": ["Official name of the East-Asian country popularly known as China (since 1949).", "A country in East Asia which borders the Yellow Sea, the East Chinese Sea, and the South Chinese Sea. Furthermore it borders in the east with Russia, and North Korea, in the north with Russia, and Mongolia, in the west with Tajikistan, Kyrgyzstan, Kazakhstan, Pakistan, and Afghanistan, and in the south with India, Nepal, Bhutan, Myanmar, Laos, and Vietnam."], "Dominican Republic": ["A country in the Caribbean with capital Santo Domingo."], "Equatorial Guinea": ["A country in Western Africa whose capital is Malabo."], "Grenada": ["A country in the Caribbean whose capital is Saint George's."], "Guyana": ["A country in South America, with capital Georgetown."], "Kyrgyzstan": ["A country in Central Asia whose capital is Bishkek."], "Nauru": ["A country in Oceania."], "Romania": ["A country in Europe."], "United Arab Emirates": ["A country in the Middle East, with capital Abu Dhabi."], "Trinidad and Tobago": ["A country in the Caribbean."], "S\u00e3o Tom\u00e9 and Pr\u00edncipe": ["A country in Western Africa."], "Saint Kitts and Nevis": ["A country in the Caribbean."], "Marshall Islands": ["A country in Oceania with capital Majuro."], "smorgasbord": ["A buffet style table prepared with many small dishes."], "Gambia": ["A country in Western Africa whose capital is Banjul."], "note": ["A writing symbol used to denote a tone in music.", "A comment pertaining to a certain section of a text and that is given by this text in the form of a marker and where the comment text is given at another place in the text, for example at the bottom of the page or at the end of the section.", "To pay attention and perceive something.", "A communication that is written, spoken or signalled.", "A commercial document issued by a seller to the buyer, indicating products or services already provided to the buyer as well as the corresponding price that the buyer has to pay.", "A comment or instruction.", "To make mention of.", "A short personal letter.", "A tone of voice that shows what the speaker is feeling."], "seine": ["A piece of fishing equipment consisting of net with small meshes, which is dragged through the water towards land or a boat."], "North Korea": ["A country in East Asia whose capital is Pyeongyang."], "storey": ["A level, usually consisting of several rooms, in a building that consists of several levels."], "tall tale": ["A retelling or account of events, especially a fictional or exaggerated one."], "rollback": ["An operation which returns a database, or group of records in a database, to a previous state."], "dress": ["A one-piece garment for a woman that has a skirt and a body section.", "To put clothes on something or somebody.", "To clothe oneself; to put on clothes."], "filling": ["Food intended to be eaten on top of or inbetween bread, and together with the bread and most commonly butter or margarine creates a sandwich (double or open-faced).", "Something filling up a gap or covering up a (small) distance."], "water vole": ["A semi-aquatic mammal (Arvicola amphibius or A. terrestrisis) that resembles a rat."], "elastomer": ["(Materials); A polymer with rubber-like properties."], "actuary": ["A person who calculates financial values associated with uncertain events subject to risk, such as insurance premiums or pension contributions."], "contempt": ["The feeling or attitude of regarding someone or something as inferior, base, or worthless."], "boil": ["To cook briefly by boiling.", "To heat (a liquid) to the point where it begins to turn into a gas.", "To be at a temperature (as a liquid) where it moves into the gaseous phase.", "A painful, local inflammation of the skin, caused by infection of a hair follicle. Usually, a hard core and pus are present.", "To be agitated.", "To prepare by submerging in a liquid (usually water) at 100 degrees Celsius or more."], "bless you": ["An expression said to someone that has just sneezed."], "cup": ["A concave vessel for holding liquid, generally adorned with either a handle or a stem", "A decorative cup-shaped vessel awarded as a prize or trophy."], "late": ["Near the end of a period of time.", "Being dead, particularly when speaking of the person's actions while alive.", "After the expected or usual time.", "Occurring after the expected or usual time.", "No longer living."], "lip": ["Either of the two fleshy protrusions around the opening of the mouth."], "grow": ["(For a living being) To become bigger.", "To come to have or undergo a change of physical features or attributes."], "size": ["A number of edges in a graph.", "An article of a particular dimension.", "How big something is, how much space is occupied by it.", "A symbol or number that indicates the dimensions of a garment."], "rent": ["A payment made at intervals in order to secure the exclusive use of a property.", "To hold under a lease or rental agreement of goods and services.", "A payment made by a user at intervals for the use of an equipment.", "To let for money."], "largeness": ["Volume of something, how large it is."], "tallness": ["How tall something is."], "plate": ["Metal sheet for alphanumerical identification of vehicles, on their front and/or rear parts.", "A dish on which food is served or from which food is eaten.", "To coat a surface with a metal sheet, in general of a precious kind."], "news": ["New information.", "Reports of current events broadcast via media such as newspapers or television."], "noble": ["Having honorable qualities; having moral eminence and freedom from anything petty, mean or dubious in conduct and character", "Someone of aristocratic blood."], "aristocrat": ["Someone of aristocratic blood."], "net": ["A mesh of string, cord, or rope generally used for catching fish or trapping something.", "A network of connected computers, ranging from a small home LAN to the world-spanning Internet.", "Income following the deduction of all expenses, taxes, and the like.", "A fine, often elastic net worn over long hair to hold it in place."], "life insurance": ["A transaction whereby either until the end date of the insurance an amount will be payed when someone dies or where on the end date an amount will be payed when someone is still alive."], "queenside": ["The side of a chessboard nearest to the queen at the opening position."], "kingside": ["The side of a chessboard nearest to the king at the opening position."], "gullible": ["Easily deceived or duped.", "Disposed to believe on little evidence."], "fleeceable": ["Easily deceived or duped."], "republic": ["A state where sovereignty rests with the people or their representatives, rather than with a monarch or emperor; a country with no monarchy."], "monarchy": ["A government with a hereditary head of state."], "position": ["An interest in the market, either long or short, in the form of open contracts.", "The ideal, unilateral solution to a dispute.", "To put something in a position.", "A rationalized mental attitude.", "A job in an organization."], "unilateral": ["Affecting or relating to only one side."], "Prague": ["The capital of the Czech Republic."], "pyrectic": ["Any substance that produces fever, or a rise in body temperature."], "Brasilia": ["The capital of Brazil."], "quarrel": ["A loud or noisy verbal confrontation between two or more people.", "To take part in a loud or angry verbal confrontation with one or more other people."], "dispute": ["A loud or noisy verbal confrontation between two or more people.", "A contentious dispute.", "To attack as false or wrong.", "An argument or disagreement, a failure to agree."], "Gulf of Mexico": ["A gulf to the south of the USA and to the east and north of Mexico."], "dove": ["One of several birds of the family Columbidae."], "lawnmower": ["A device that cuts grass with the help of rotating blades."], "Tenerife": ["A Spanish island and the largest of the seven Canary Islands"], "bespectacled": ["Wearing glasses."], "spectacled": ["Wearing glasses."], "pen name": ["A pseudonym used by an author."], "nay-sayer": ["A person who consistently denies, rejects, criticises or doubts an idea or proposal."], "naysayer": ["A person who expects the worst and looks on the downside of things.", "A person who consistently denies, rejects, criticises or doubts an idea or proposal."], "Saint Vincent and the Grenadines": ["A country in the Caribbean."], "Andes": ["Mountain range in South America."], "conspire": ["To engage in plotting or enter into a conspiracy."], "complot": ["To engage in plotting or enter into a conspiracy."], "conjure": ["To engage in plotting or enter into a conspiracy.", "The art of entertaining an audience by performing illusions that baffle and amaze."], "machinate": ["To engage in plotting or enter into a conspiracy.", "To arrange by systematic planning and united effort (e.g. a plot, a strike, a plan)."], "insurrection": ["Collective violent action against an established power or arbitrary authority."], "rebellion": ["Collective violent action against an established power or arbitrary authority."], "arrest": ["To seize and keep prisoner.", "The act of depriving a person of his or her liberty usually in relation to the purported investigation or prevention of crime and presenting to a procedure as part of the criminal justice system.", "To cause to stop (e.g. an engine or a machine).", "To hold back, as of a danger or an enemy; check the expansion or influence of.", "To attract and fix (e.g. someone or his/her eyes)."], "apprehend": ["To seize and keep prisoner.", "To get the meaning of something."], "seize": ["To seize and keep prisoner.", "To take possession of by force or authority.", "To take possession of by force.", "Seize and take control without authority and possibly with force.", "To affect (e.g. of pain, fear, etc.).", "To capture the attention or imagination of."], "condemn": ["To declare, after a judgement, that somebody is guilty of commiting a crime."], "obsessed": ["Having an idea that one always think about."], "conquest": ["Act of conquering."], "unique": ["That is the only one of its kind.", "Being the only one of its kind."], "evidence": ["Something that establishes the truth of a proposition or a fact.", "A perceptible indication of something not immediately apparent, as a visible clue that something has happened."], "spoor": ["Vestige that a man or an animal leaves at a place where it has been."], "disappear": ["To cease to appear, to not be visible anymore.", "To end up in an unknown place, to be not to be found again, to get lost, to irrecoverably slip away."], "monk": ["A man who is member of a religious order and lives under community rules separated from the world."], "vestige": ["The mark or visible sign left by something which is lost, has perished, or is no longer present."], "Tonga": ["A country in Oceania.", "A Bantu language spoken in Zambia around the lake Kariba and in Zimbabwe.", "A language of Malawi.", "A language of Mozambique", "A language of Thailand and Malaysia."], "China": ["A country in East Asia which borders the Yellow Sea, the East Chinese Sea, and the South Chinese Sea. Furthermore it borders in the east with Russia, and North Korea, in the north with Russia, and Mongolia, in the west with Tajikistan, Kyrgyzstan, Kazakhstan, Pakistan, and Afghanistan, and in the south with India, Nepal, Bhutan, Myanmar, Laos, and Vietnam."], "Mexico": ["A country in North America, to the south of the United States and to the north of Guatemala and Belize."], "kingdom": ["A monarchy having as it's supreme ruler a king and/or queen.", "A taxon in either (historically) the highest rank, or (in the new three-domain system) the rank below domain. Each kingdom is divided into smaller groups called phyla (or in some contexts these are called \"divisions\")."], "Guinea-Bissau": ["A country in Western Africa whose capital is Bissau."], "Papua New Guinea": ["A country in Oceania."], "minister": ["A person appointed to a high office in the government."], "remittance": ["A payment to a remote recipient."], "expatriate": ["A person who lives outside his own country.", "To force a person from his own country.", "Living outside his own country."], "reign": ["The period during which a monarch rules.", "To emerge; to be visible or larger in number, quantity, power, status or importance.", "The exercise of sovereign power in a monarchy."], "gibberish": ["A language that is not understood, possibly not intelligeable or comprehensible at all, possibly a mixture of many languages, possibly a made up or play language, possibly a real language mispronounced to the extreme, possibly speaking attempts of a severely impaired or injured person, etc.", "Something said, which noone can understand."], "dissent": ["To express opposition through action or words."], "metallurgy": ["A domain of materials science and of materials engineering that studies the physical and chemical behavior of metallic elements, their intermetallic compounds, and their mixtures, which are called alloys."], "mandarin": ["The fruit of a small citrus tree (Citrus reticulata), resembling the orange."], "protest": ["To express opposition through action or words."], "cosmology": ["The science that studies the origin and the development of the universe."], "childhood": ["Period of time when a person is a child."], "Abuja": ["The capital city of Nigeria."], "shy": ["(For a personality) characterized by being uncomfortable with having attention drawn to them, for example when introducing oneself or when speaking in front of an audience.", "Lacking self-confidence."], "being shy": ["To need a number or amount of something, but not having enough or any at all.", "To have a certain amount or number of something, but not enough."], "lack": ["To need a number or amount of something, but not having enough or any at all.", "To need a number or amount of something, but not having any at all.", "A deficiency or need (of something desirable or necessary).", "A shortage or absence of what is needed."], "way": ["A way of proceeding or doing something, especially a systematic or regular one.", "Way of performing or effecting anything.", "A pattern of behavior inherited or acquired through frequent repetition.", "A particular means of accomplishing something."], "manner": ["Way of performing or effecting anything.", "An expression or appearance indicating a certain state of mind.", "A pattern of behavior inherited or acquired through frequent repetition.", "Customary way of acting.", "The style of writing or thought of an author", "Quality, way of being."], "kidney": ["An organ in the body that produces urine."], "bryology": ["The study of Bryophytes (non-vascular plants including mosses and liverworts)."], "bryologist": ["Someone who studied bryophytes (non-vascular plants including mosses and liverworts)."], "buoyant": ["Able to float.", "Courteous, gracious, and having a sophisticated charm."], "calciphile": ["Plant that grows on ground rich in chalc."], "calcicole": ["Plant that grows on ground rich in chalc."], "descendant": ["One who is the progeny of someone at any distance of time.", "Those who descend from a biological ancestor, through any number of generations."], "pace": ["The rate of changing."], "rust": ["Brown-reddish substance which forms a corrosive layer on the surface of iron or steel which is in contact with humid air or water.", "To become destroyed by water, air, or an etching chemical such as an acid.", "To cause to deteriorate due to the action of water, air, or an acid."], "barbecue": ["To cook food, often meat or fish, over glowing charcoal."], "americium": ["Chemical element with symbol Am and atomic number 95."], "antimony": ["Chemical element with symbol Sb and atomic number 51."], "aromatic": ["Producing aromas."], "spice": ["A dried seed, fruit, root, bark or vegetative substance used in nutritionally insignificant quantities as a food additive for the purpose of flavoring."], "nut brown": ["A deep red-orange colour, including the colour of hazelnuts; RAL Code 8011."], "gist": ["The choicest, most essential or most vital part."], "argon": ["Chemical element with symbol Ar and atomic number 18."], "theory": ["A scientific model or statement that attempts to explain observed phenomena.", "An unproven conjecture."], "astatine": ["Chemical element with symbol At and atomic number 85, radioactive halogen."], "pulley": ["A tool, consisting of a set of wheels around which a rope is led, meant to lift or move a load more lightly."], "Western Farsi": ["An Indo-European language spoken mainly in Iran."], "Maria": ["A Dravidian language spoken by the Maria people in the State of Madhya Pradesh in India.", "A language spoken in Papua New Guinea."], "beauty": ["The quality of being beautiful."], "predecessor": ["One whom another follows or comes after, in any office or position."], "Papiamentu": ["A language spoken in the Netherlands Antilles and Aruba."], "Papiamento": ["A language spoken in the Netherlands Antilles and Aruba."], "precursor": ["A substance from which another substance is formed."], "pontificate": ["To speak at length or be unnecessarily wordy, often in a patronizing or pompous manner."], "alphabet soup": ["A type of soup that contains noodles in the shape of various alphabetical letters", "An over-abundance of acronyms and abbreviations."], "Mandarin": ["The official language of China and Taiwan."], "high rising terminal": ["A type of speech that sounds like questions, used frequently by North American teenage girls."], "chicken coop": ["A building in which poultry is housed."], "vengeance": ["Action taken to respond to an insult, injury or other wrong by trying to harm its perpetrator.", "Desire for revenge."], "reprisal": ["Action taken to respond to an insult, injury or other wrong by trying to harm its perpetrator."], "retaliation": ["Action taken to respond to an insult, injury or other wrong by trying to harm its perpetrator."], "retribution": ["Action taken to respond to an insult, injury or other wrong by trying to harm its perpetrator."], "revenge": ["Action taken to respond to an insult, injury or other wrong by trying to harm its perpetrator.", "To take revenge for a perceived wrong.", "Pain caused to the offender for the personal satisfaction of the offended.", "A win by the previous loser."], "pianist": ["A person who plays the piano."], "poppy": ["Any plant of the species Papaver, with crumpled often red petals and a milky juice."], "onomasiology": ["The science of how exactly words are build, constructed, developed in a language, according to certain rules."], "obsessive-compulsive disorder": ["A brain disorder that is most commonly characterized by a subject's obsessive drive to perform a particular task or set of tasks, compulsions commonly termed as rituals."], "banjo": ["A stringed musical instrument with a round body and fretted neck, played by plucking or strumming the strings."], "civil war": ["Armed conflict between different factions on the territory of a single state or region, often with interventions of a foreign power."], "expanse": ["A wide stretch, usually of sea, sky, or land."], "remote control": ["A device used to operate an appliance or mechanical toy from a short distance away."], "remote": ["A device used to operate an appliance or mechanical toy from a short distance away.", "Not likely to happen; not to be reasonably expected.", "Distant or otherwise inaccessible."], "reassurance": ["The feeling of having confidence restored."], "cucumber": ["The edible fruit of the cucumber plant, having a green rind and crisp white flesh."], "scar": ["A permanent mark on the skin resulting from a wound.", "To mark with a scar."], "berkelium": ["Chemical element with symbol Bk and atomic number 97, actinide."], "Mary": ["The mother of Jesus Christ."], "Bavarian": ["A language spoken in and around Bavaria."], "Kashubian": ["A Lechitic language, subgroup of the Slavic languages, spoken in some communes of Pomeranian Voivodeship, Poland.", "Of or relating to the Kashubian people and their language."], "bismuth": ["Chemical element with symbol Bi and atomic number 83, reddish lustrous main group metal."], "Yue": ["A Chinese language mainly spoken in the south-eastern part of Mainland China."], "piston": ["A mechanical device that has a plunging or thrusting motion."], "Baltic Sea": ["A sea in northern Europe, connected to the Atlantic."], "gadolinium": ["A metallic chemical element (symbol Gd) with an atomic number of 64."], "piston ring": ["A ring or seal that fits around a piston, sealing between the piston and the bore in which it slides."], "calf": ["The fleshy backside of the lower part of the leg.", "Young cattle.", "Young moose."], "bet": ["A deal that the person whose guess on the outcome of an event is correct will receive money or another prize from the other.", "To agree that payment be made to the successful forecaster of the result of an event."], "ford": ["A shallow stretch of a river where it is possible walk over.", "To cross a stream at a ford."], "heal": ["To get healthy again.", "To remedy an illness using medical or medicamentous treatment; to provide a cure for.", "Heal or recover, e.g. by forming a scar."], "bohrium": ["Chemical element with symbol Bh and atomic number 107, transition metal"], "elevator": ["Trademark for a type of shoe having an insert lift to make the wearer appear taller.", "A silo used for storing wheat, corn or other grain.", "A mechanical device consisting of a compartment that may move vertically up and down, and that is used to convey people and cargo between floors of a building."], "Dutch treat": ["An occasion, such as a restaurant visit, in which each one pays his own expenses."], "heterochronous": ["Formed at different periods."], "lift": ["A mechanical device consisting of a compartment that may move vertically up and down, and that is used to convey people and cargo between floors of a building.", "Transportation of a person in a vehicle, usually without monetary or other compensation and with a given location as the goal.", "To cause an object to have a higher location than previously.", "An upward force, such as the force that keeps aircraft aloft."], "nail": ["The hard, flat, translucent covering near the tip of a human finger, useful for scratching and fine manipulation.", "A spike-shaped metal fastener used for joining wood or similar materials.", "(For a man) To have sexual intercourse with a woman.", "Hard keratin part growing at the end of a finger, toe or leg.", "To hit extremely hard.", "To attach something somewhere using nails."], "Asian tiger mosquito": ["A mosquito of the Aedes albopictus species, characterized by its black and white striped legs and small, black and white body."], "tank": ["A heavy armoured fighting vehicle, armed with a large gun and moving on caterpillar tracks.", "A container for liquids or gases, typically with a volume of several cubic metres."], "californium": ["Chemical element with symbol Cf and atomic number 98. It is probably a gray or silverly actinide."], "grain elevator": ["A silo used for storing wheat, corn or other grain."], "elevator shoe": ["Trademark for a type of shoe having an insert lift to make the wearer appear taller."], "cerium": ["Chemical element with symbol Ce and atomic number 58, silvery white lanthanide."], "nuclear explosion": ["An unintentional release of energy from a rapid reaction of atomic nuclei yielding high temperatures and radiation potentially harmful to human health and the environment."], "addition": ["(arithmetic) the mathematical operation of increasing one amount by another. The result of adding two quantities is their sum."], "private enterprise number": ["A unique number as assigned by IANA to identify unique objects that are defined by an enterprise, developed to give objects a common naming system via the more common language of numbers."], "curium": ["Chemical element with symbol Cm and atomic number 96, silvery actinide."], "mankind": ["All human beings."], "perforation": ["A series of holes created to facilitate the separation of two or more parts."], "delegate": ["A person authorized to act as a representative.", "To authorise someone to act on his/her behalf.", "To give something to (a person), or assign a task to (a person)."], "delegation": ["A group of people authorised to represent a person or organisation."], "represent": ["To stand in the place of someone or something.", "To portray by pictoral or plastic art.", "To be the material or components of.", "To perform a theatrical role."], "learn": ["To acquire, or attempt to acquire knowledge or an ability to do something."], "functionality": ["The set of tasks something can perform.", "The ability to perform a certain task."], "mete": ["The quantity, size, weight, distance or capacity of a substance compared to a designated standard.", "To dispense (punishment or suffering)."], "groin": ["The fold that in humans are found between the thighs and the abdomen.", "Each of the sunken panels in a ceiling, soffit or vault."], "melon": ["A fruit of any of the species from the family Cucurbitaceae that has relatively hard inedible shells and plenty of sweet flesh. The fruits may vary in size but is usually not smaller than one decimeter in diameter."], "rowing boat": ["An open boat propelled by pulling oars through the water."], "darmstadtium": ["Chemical element with symbol Ds and atomic number 110, transition metal"], "row-boat": ["An open boat propelled by pulling oars through the water."], "spouse": ["A married woman.", "The male partner in a marriage.", "A married person; A married woman or a married man."], "soil pipe": ["A pipe that carries off liquid wastes from a toilet."], "discotheque": ["A nightclub where dancing takes place."], "disco": ["A nightclub where dancing takes place."], "besiege": ["To beset or surround with armed forces, for the purpose of compelling to surrender."], "beleaguer": ["To beset or surround with armed forces, for the purpose of compelling to surrender."], "beset": ["To beset or surround with armed forces, for the purpose of compelling to surrender."], "chirp": ["A short, sharp or high note or noise, as of a bird or insect.", "The short weak cry of a young bird."], "certain": ["Without any doubt or possibility of deviation.", "Having been determined but unspecified."], "undoubted": ["Without any doubt or possibility of deviation."], "positive": ["Without any doubt or possibility of deviation.", "Greater than zero.", "The uncompared form of an adjective or adverb."], "sure": ["Without any doubt or possibility of deviation.", "The expression of a positive affirmation.", "With certainty."], "Ramadan": ["The holy ninth month of the Islamic lunar calendar (the Hijra), during which Muslims fast between sunrise and sunset; they also refrain from smoking and sexual relations."], "confidential": ["Meant to be kept secret within a certain circle of persons; not intended to be known publicly."], "GEMET": ["GEneral Multilingual Environmental Thesaurus (GEMET)"], "hither": ["The direction towards here."], "eager beaver": ["A person, ranked lower in a hierarchy, who tries to be seen as the best among his peers and/or to gain the recognition of people in higher ranks. This behaviour sometimes earns this person a bad reputation, because looking (too) good makes others look bad."], "vicarious": ["Experienced or gained through someone else; done by watching or reading rather than through personal experience."], "delicious": ["Pleasing to the taste."], "tasty": ["Pleasing to the sense of taste.", "Pleasing to the taste."], "torch song": ["A song, often sentimental, lamenting an unrequited love."], "I love you": ["An affirmation of romantic feeling, to a lover or spouse."], "I hate you": ["An affirmation of extreme dislike directed at someone."], "leg up": ["The act of assisting another's progress over a wall or other obstacle by forming a step for one of their feet with one's hands."], "rapier": ["A slender, straight, sharply pointed sword."], "floret": ["The practice version of the rapier, named after the ball at the top that prevents injuries."], "dubnium": ["Chemical element with symbol Db and atomic number 105, transition metal."], "dysprosium": ["Chemical element with symbol Dy and atomic number 66, silvery grey lanthanide."], "acre": ["A limited area of land with grass or crops growing on it, which is usually surrounded by fences or closely planted bushes when it is part of a farm.", "A unit of surface area equal to 43,560 square feet, approximately 0.4 hectares."], "S\u00e9n\u00e9gal River": ["A river in Africa."], "Senegal": ["A country in Western Africa whose capital is Dakar."], "intrusion": ["A body of magma that solidifies underground before it reaches the surface.", "Any entry into an area not previously occupied."], "einsteinium": ["Chemical element with symbol Es and atomic number 99, actinide."], "bearing": ["A movement with any part of one\u2019s body (head, hands etc).", "The part of a machine on which a rotating shaft is placed.", "An expression or appearance indicating a certain state of mind.", "The contact area over which one structural element, such as a truss, is supported on another structural element such as a wall.", "Manner of behaving oneself; manner of acting."], "layer": ["An amount of a certain material spread out relatively even over a surface; often seen as part of a structure composed of several similar or dissimilar such.", "Worker assigned to the installation of floor tiles, cables, etc.", "Part that is cut from a plant when applying a layering propagation method.", "A hen that is kept for its eggs."], "warehouse": ["Building or room used to store the stored goods of a company, both such intended for direct sale and such that will be used as raw material in further processing."], "storage room": ["Building or room used to store the stored goods of a company, both such intended for direct sale and such that will be used as raw material in further processing."], "runway": ["A strip of land kept clear and set aside for airplanes to take off from and land on."], "alkaline earth metal": ["Any of the elements in the group of the alkaline earth metals in the periodic table."], "extinction": ["The complete disappearance of a species of plant or animal from the planet.", "Attenuation of electromagnetic radiation emitted by astronomical objects by matter (dust and gas) between the emitting object and the observer."], "condensation": ["Transformation from a gas to a liquid.\\n(Source: MGH)", "A liquid that is the product of condensation.", "Shortened form of something."], "flora": ["The plant life characterizing a specific geographic region or environment.", "Any living organism that synthesizes its food from inorganic substances, possesses cellulose cell walls, responds slowly and often permanently to a stimulus, lacks specialized sense organs and nervous system, and has no powers of locomotion.", "A work systematically describing the flora of a particular region, listed by species and considered as a whole.\\n(Source: RHW)"], "resistance": ["Physics: Measure of the degree to which an object (e. g. electronic part, wire) opposes the passage of an electric current."], "kiss": ["A touch with the lips as a sign of love or affection.", "To touch with the lips to express love or affection."], "best": ["Superlative form of good.", "The person who is most outstanding or excellent; someone who tops all others."], "wolf": ["A large wild canid (Canidae), closely related to the dog."], "goal": ["What one wants to achieve.", "Place where a ball or puck needs to be entered into to score points in a game.", "To score a point in a game.", "A successful attempt at scoring."], "howl": ["The protracted, mournful cry of a dog or a wolf."], "pom-pom": ["A decorative ball of fluff."], "mailbox": ["Object or slot where letters of parcels can be left behind for delivery.", "A box into which mail is delivered."], "how much": ["Which quantity?", "In what amount."], "Shavian alphabet": ["A simple, phonetic orthography for the English language."], "vote": ["A binding declaration by a person competent to make decisions, within a decision-making process, on which of a number of predetermined alternatives that he or she prefers.", "To express one's preference for a candidate in a public consultation; to cast a vote."], "boozer": ["A person who is addicted to drinking alcohol excessively."], "erbium": ["Chemical element with symbol Er and atomic number 68, silvery white lanthanide."], "deuterium": ["An isotope of hydrogen where the nucleus contains a neutron and a proton, instead of only one proton. Instead of the ordinary symbol 2H, the symbol D is more commonly used for the isotope."], "dandruff": ["Small portion of dead skin cells shedding from the scalp."], "rubidium": ["A metallic chemical element with the symbol Rb and atomic number 37."], "saw": ["To cut (something) by means of a tool with sharp theeth.", "A tool with a toothed blade used for cutting hard substances, in particular wood or metal."], "nag": ["To remind or urge constantly.", "To worry persistently.", "To bother persistently with trivial complaints.", "Someone (especially a woman) who annoys people by constantly finding fault.", "An old or worthless horse."], "magnesium": ["A chemical element with the symbol Mg and atomic number 12, a light, flammable, silvery metal."], "kindergarten": ["School for children from three to six years old."], "Day care": ["An institution where children are taken care of during the day, outside of their families, with the exception of the school, the boarding school and the orphanage."], "foster home": ["A family where an orphaned or delinquent child is placed."], "pink": ["A colour obtained when mixing red and white paint.", "Whose colour between red and white."], "nursery": ["Place where plants are grown until they are large enough to be planted in their final positions.\\n(Source: PHC)", "An educational institution for young children, usually before they go to primary school"], "preschool": ["An educational institution for young children, usually before they go to primary school"], "europium": ["Chemical element with symbol Eu and atomic number 63, silvery white lanthanide."], "mourning": ["The state of emotions of a person to whom something irreversible happened that leads to a feeling of sadness or regret; most often occurring e.g. after a beloved one died, or a long relationship split up."], "battle": ["An instance of combat in warfare between two or more parties wherein each group will seek to defeat the others.", "Struggle for superiority."], "fermium": ["Chemical element with symbol Fm and atomic number 100. It is probably a grey or silvery actinide."], "horseman": ["A man who rides a horse.", "A person who rides horses."], "chess set": ["The game consisting of the chess board and the chess pieces."], "chess match": ["One game of playing chess."], "chess game": ["One game of playing chess."], "chessboard": ["The square board used in the game of chess, subdivided into eight rows of eight squares each, the squares in each row and column being of alternating colours."], "topical": ["Applied directly to the skin; applied externally to a particular part of the body.", "Something that is of interest at the present time.", "Pertaining to, referring to, or treating a specific subject (usually of a collection, selection, or presentation, etc.)"], "reconnoiter": ["To survey something (generally an enemy's land and position)."], "pommel horse": ["An artistic gymnastics apparatus, consisting of a horizontal bar 160 x 35 cm in dimension, elevated 115 cm from the ground, and with two grips on top, between 40 and 45 cm apart. It is used only by male athletes. (Source: enwiki)"], "the apple doesn't fall far from the tree": ["The child shows behaviour comparable to that of its parent(s)."], "scout": ["To survey something (generally an enemy's land and position)."], "sausage": ["A length of intestine, stuffed with ground (organ) meat, and other ingredients. Instead of intestines, a different kind of wrapper can be used."], "peach tree": ["A species of tree, native to China, that bears juicy fruits, usually with a red or orange skin, yellow flesh and a large, wrinkled stone."], "return": ["To go there where one was before.", "The arrival at a place where one was before.", "To bring something in order to put it back where it was.", "To produce as return, as from an investment; to give or supply.", "To transfer a good to the person or people it came from, or to their legal successors.", "To drive, ride, or go back; to return."], "francium": ["Chemical element with symbol Fr and atomic number 87, alkali metal."], "triangle": ["A geometric figure that consists of three straight limiting lines (sides) and three corners that are the intersection points of two sides", "An idiophone type of musical instrument in the percussion family."], "lend": ["To apply a quality on (a person).", "To put an item or resource at the disposal of another, with the requirement to have the same or its equivalent returned eventually."], "nice": ["Generally warm, approachable and easy to relate with in character.", "Possessing charm and attractiveness."], "charming": ["Possessing charm and attractiveness.", "Courteous, gracious, and having a sophisticated charm.", "Capable of arousing desire."], "delightful": ["Possessing charm and attractiveness."], "lovely": ["Possessing charm and attractiveness."], "pleasant": ["Possessing charm and attractiveness.", "Enjoying or affording comforting warmth and shelter especially in a small space."], "sweet": ["Possessing charm and attractiveness.", "Having the taste characteristic of sugar or honey.", "A food item that is rich in sugar."], "chess piece": ["A token that is used for playing chess."], "neon": ["The chemical element with symbol Ne and atomic number 10, a colorless noble gas."], "spiritual world": ["A mythological metaphysical plane of existence parallel to the material world and occupied by spirits and other unearthly forces.", "Life after death."], "afterlife": ["Life after death."], "putsch": ["The sudden overthrow of a government."], "coup d'\u00e9tat": ["The sudden overthrow of a government.", "The sudden overthrow of a government, often through illegal means by a part of the state establishment \u2014 mostly replacing just the high-level figures."], "Libido": ["A language spoken in Ethiopia.", "An East Cushitic language spoken in the Gurage Zone in Ethiopia."], "gallium": ["Chemical element with symbol Ga and atomic number 31, silvery white main group element."], "gaffe": ["A foolish error, especially one made in public."], "walkthrough": ["A peer group review of a product or service created during the systems development process."], "funeral": ["A ceremony to bury or cremate a deceased person."], "memorial service": ["A service honoring a deceased person, especially one that does not adhere to the traditional customs of a funeral."], "difficult": ["Requiring a lot of effort to do or understand.", "Not easy, which needs hard work, patience and effort."], "guinea pig": ["(Cavia porcellus) Small rodent."], "Luna": ["The sole natural satellite of the Earth.", "A language of the Democratic Republic of the Congo."], "yuan": ["The Chinese currency.", "The official currency of China."], "internecine": ["Mutually destructive, most often applied to warfare causing bloodshed and carnage.", "Struggling within a group, usually applied to an ethnic or familial relationship or an organization."], "superficial": ["At face value.", "Close to the surface."], "shallow": ["At face value.", "Close to the surface.", "Having little depth."], "instep": ["A section of any footwear covering that part of the foot.", "The upper surface of the human foot between the ankle and the toes."], "journalist": ["A person who makes a living reporting on news and current events."], "contango": ["The amount by which prices for future delivery are higher than prices for near deliver."], "missing link": ["A primate likely to bridge a evolutionary gap between the anthropoid apes and humanoids."], "espresso": ["Strong black coffee brewed by forcing hot water under pressure through finely ground coffee beans."], "coffee percolator": ["A kind of pot used to brew coffee."], "espresso coffee pot": ["A type of pot which is placed on a heat source used to brew coffee."], "moka pot": ["A type of pot which is placed on a heat source used to brew coffee."], "ditto": ["The same as what was said previously."], "urgence": ["The quality or condition of a need for immediate attention."], "urgency": ["The quality or condition of a need for immediate attention."], "crossbow": ["A mechanised weapon, based on the bow and arrow, which fires bolts at high speed and accuracy."], "reanimate": ["To restore to animation or life."], "resuscitate": ["To cause to regain consciousness."], "germanium": ["Chemical element with the symbol Ge and atomic number 32. It is a grey-white metalloid."], "zebrafish": ["A tropical fish belonging to the minnow family (Cyprinidae), commonly kept in aquaria and used for scientific research."], "E": ["A spoken language in China", "A chemically modified amphetamine that has hallucinogenic as well as stimulant properties.", "Musical note between D and F."], "minnow": ["Any fish of the family Cyprinidae.", "A fish (Phoxinus phoxinus) of the family Cyprinidae."], "Eurasian minnow": ["A fish (Phoxinus phoxinus) of the family Cyprinidae."], "thaumaturgy": ["The working of miracles."], "Kado": ["A language spoken in Myanmar, China and Laos."], "violence": ["The property of having extreme force or being wild or turbulent.", "Aggressive behaviour, often an act of aggression."], "putschist": ["Person participating in a putsch."], "shipwreck": ["The loss of a ship in sea because of an accident."], "reconcile": ["To accept unwillingly.", "To put back in good terms people that weren't anymore.", "To make things compatible.", "To bring to an agreement.", "To accept as inevitable."], "make up": ["To put back in good terms people that weren't anymore.", "To be the material or components of.", "To make up something artificial or untrue."], "stock option": ["The right to buy or sell stock for a certain price in the future."], "call option": ["Right to buy stock for a certain price in the future."], "put option": ["Right to sell stock for a certain price in the future."], "ineligibility": ["State of being ineligible due to a lack of the required conditions to be elected."], "infield": ["In cricket the region of the field roughly bounded by the wicket keeper, slips, gully, point, cover, mid off, mid on, midwicket and square leg.", "In baseball the region of the field roughly bounded by the home plate, first base, second base and third base."], "oyster": ["Acephalous marine mollusk, with an irregular bivalve shell."], "obese": ["Who is too fat."], "barn doors": ["Four hinged metal slats that come (or are attachable) on the front of cinema lights. They are used for shaping light and fastening light gels."], "prosthesis": ["An artificial device that replaces a missing body part."], "airbag": ["A protective system in automobiles in which when a crash occurs, a bag quickly inflates in front of the driver or passenger, preventing injury to the head."], "mannequin": ["Person whose job is to wear clothes in order to present them."], "xenophobic": ["Hating foreigners or what comes from abroad."], "krypton": ["A chemical element with symbol Kr and atomic number of 36; a colorless noble gas."], "xenon": ["A chemical element with symbol Xe and atomic number of 54, a heavy colorless noble gas."], "semi-detached": ["A house joined to another one on one side, having one wall shared."], "acoustically": ["In an acoustic manner, or using an acoustic musical instrument."], "hafnium": ["Chemical element with symbol Hf and atomic number 72, steel grey transition metal."], "freedom of speech": ["The right of every person to speak and publish their opinion freely."], "lanthanide": ["Any of the 15 chemical elements from lanthanum (atomic number 57) to lutetium (atomic number 71) with very similar chemistry."], "globular cluster": ["A spherical collection of stars that orbits a galaxy core as a satellite."], "cluster": ["A group of stars that appear near each other.", "A significant subset within a population.", "A group of contiguous sectors on a disk.", "A group of linked computers that work together as if they were a single computer, for high availability and/or load balancing."], "nadir": ["The point of the celestial sphere, directly opposite the zenith.", "The lowest point; time of greatest depression."], "hassium": ["Chemical element with symbol Hs and atomic number 108, radioactive transition metal."], "mollify": ["To cause to be more favourably inclined."], "Chickasaw": ["The language spoken by the Chickasaw, a member of the Muskogean language family."], "sailplane": ["An aircraft with fixed wings, but no engine."], "tellurium": ["A chemical element with symbol Te and atomic number 52, a silver grey metalloid.", "A model that shows the movements of Earth, Moon and Sun and illustrates the phenomena of day and night change, the seasons, the lunar phases and eclipses."], "polonium": ["A chemical element with symbol Po and atomic number 84, a silver gray poor metal."], "indium": ["A chemical element with symbol In and atomic number 49, a silver gray poor metal."], "yo-yo": ["A toy consisting of two weighted discs as a weight, connected with an axle, around which string is wound. There is a loop at the end of the string; the toy is played by putting the loop around a finger, grasping the weight, and throwing it in a smooth motion. Some tricks may be performed before letting the weight return to the hand."], "ant": ["Any of the black, red, brown, or yellow insects of the family Formicidae characterized by a large head and by living in organized colonies."], "Baghdad": ["The largest city and capital of Iraq."], "Bulgaria": ["A country in southeastern Europe. It borders five countries: Romania to the north mostly along the Danube, Serbia and the Republic of Macedonia to the west, and Greece and Turkey to the south, as well as the Black Sea, which comprises its entire eastern border. Its capital is Sofia."], "boot": ["Storage compartment for luggage in a car.", "A shoe that covers part of the leg.", "A physical strike using the foot, leg, or knee.", "To cause to load and start (an operating system)."], "Chechen": ["A north-central Caucasian language spoken in Chechnya."], "Chuvash": ["A Turkic language spoken in the federal subject of Chuvashia, located in central Russia."], "Kyrgyz": ["A Northwestern Turkic language, and, together with Russian, an official language of Kyrgyzstan."], "out of service": ["In or into a state of non-operation."], "closed": ["Inaccessible."], "nude": ["Without clothing."], "world war": ["War in which many countries throughout the world are involved."], "address": ["An address or form of oral communication in which a speaker makes his thoughts and emotions known before an audience, often for a given purpose.\\n(Source: RHW)", "Direction or superscription of a letter, or the name, title, and place of residence of the person addressed.", "To give a speech to.", "To apply oneself to something."], "Mars": ["The fourth planet (counted from the center) of our solar system.", "Roman god of war."], "ninety-nine": ["The cardinal number occurring after ninety-eight and before hundred, represented in Roman numerals as XCIX and in Arabic numerals as 99."], "urinate": ["To allow urine to flow from the bladder out of the body."], "pee": ["To allow urine to flow from the bladder out of the body.", "Liquid excrement consisting of water, salts and urea, which is made in the kidneys, stored in the bladder, then released through the urethra."], "piss off": ["To tell someone to go away."], "fuck off": ["To tell someone to go away.", "To ask in an insulting way to another person to go away from you, to stop contact with to stop bothering the person to who the insult is addressed."], "stop it": ["Tell someone to stop the undesirable thing he/she is doing."], "holmium": ["Chemical element with symbol Ho and atomic number 67, silvery white lanthanide."], "games": ["Plural of game."], "primary care": ["A health care provider who acts as a first point of consultation for all patients."], "heart attack": ["The sudden occurrence of coronary thrombosis which obstructs the blood supply to the heart, resulting in necrosis of heart muscle."], "thrombus": ["A blood clot formed from platelets and other elements; that forms in a blood vessel in a living organism."], "iridium": ["Chemical element with symbol Ir and atomic number 77, silvery white transition metal."], "blood clot": ["A blood clot formed from platelets and other elements; that forms in a blood vessel in a living organism."], "parhelion": ["Optical phenomenon associated with the refraction of sunlight by ice crystals which appears at a position of circa 22\u00b0 to the left and/or right of the sun."], "sun dog": ["Optical phenomenon associated with the refraction of sunlight by ice crystals which appears at a position of circa 22\u00b0 to the left and/or right of the sun."], "sundog": ["Optical phenomenon associated with the refraction of sunlight by ice crystals which appears at a position of circa 22\u00b0 to the left and/or right of the sun."], "typhoid fever": ["An illness caused by the bacterium Salmonella typhi. It is transmitted by ingestion of food or water contaminated with feces from an infected person. Typical symptoms include stomach pains, high fevers, headaches, and sometimes diarrhea or constipation."], "Northern Europe": ["A geographic region in the north of Europe, consisting of the Scandinavian and Baltic countries."], "mashed potatos": ["A dish made with boiled potatoes which are mashed and mixed with milk."], "dozen": ["A set of twelve."], "watt": ["The derived SI unit of power defined as one joule of energy transferred per second with symbol \"W\"."], "piece": ["A part of a larger whole.", "A large artillery gun.", "A single item belonging to a class of similar items.", "One of the figures used in playing chess.", "An amount of gold, silver, etc. made into a coin.", "A musical creation.", "An artillery gun.", "A toupee or wig, usually when worn by a man.", "A small portion of food."], "baker's dozen": ["A set of thirteen."], "nix": ["To make something become nothing.", "To tell not to do something."], "lanthanum": ["Chemical element with symbol La and atomic number 57. It is a silvery white metallic element that belongs to group 3 of the periodic table and is a lanthanide."], "boxes": ["Plural form of box."], "Jerusalem artichoke": ["Helianthus tuberosus, a kind of sunflower that is grown as a perennial plant."], "peanut": ["A nutlike fruit from the plant Arachis hypogaea that grows on long stems under ground.", "A plant native to America which produces an edible fruit."], "groundnut": ["A nutlike fruit from the plant Arachis hypogaea that grows on long stems under ground.", "A plant native to America which produces an edible fruit."], "earthnut": ["A nutlike fruit from the plant Arachis hypogaea that grows on long stems under ground."], "goober": ["A nutlike fruit from the plant Arachis hypogaea that grows on long stems under ground."], "pinda": ["A nutlike fruit from the plant Arachis hypogaea that grows on long stems under ground."], "jack nut": ["A nutlike fruit from the plant Arachis hypogaea that grows on long stems under ground."], "monkey nut": ["A nutlike fruit from the plant Arachis hypogaea that grows on long stems under ground."], "elephantiasis": ["A syndrome that is characterized by the thickening of the skin and underlying tissues, especially in the legs and genitals."], "elephant disease": ["A syndrome that is characterized by the thickening of the skin and underlying tissues, especially in the legs and genitals."], "peanut butter": ["A spread made from ground peanuts."], "opportunity": ["A favorable circumstance or occasion."], "strawberry": ["Fruit of several species of plants of the genus Fragaria."], "lawrencium": ["Chemical element with symbol Lr and atomic number 103, artificially produced actinide."], "despair": ["To lose hope.", "Loss of hope."], "actor": ["A person that plays a designated role in a film or play.", "A male person that plays a designated role in a film or play."], "actress": ["A female person that plays a designated role in a film or play."], "Gen": ["A Gbe language spoken in the southeast of Togo in the Maritime Region, and in the Mono Department of Benin."], "dissuade": ["To convince not to try or do."], "stamp": ["A piece of paper that is affixed to letters or packages to pay for their delivery.", "To affix a stamp to."], "doctor": ["A person who has completed a study of medicine, and as such tries to diagnose and cure diseases in patients.", "A person who has obtained a doctorate degree.", "To change the state of an item (e.g. which was torn or broken) to a working condition again.", "To alter or make obscure, as with the intention to deceive.", "To provide medical treatment to."], "physician": ["A person who has completed a study of medicine, and as such tries to diagnose and cure diseases in patients."], "plant nursery": ["Place where plants are grown until they are large enough to be planted in their final positions.\\n(Source: PHC)"], "pilot light": ["A small gas flame, usually natural gas or liquefied petroleum gas, which is kept alight in order to provide an ignition source for a more powerful gas burner."], "shell": ["A hard outer covering of an animal, as the hard case of a mollusk.", "To end in success a struggle or contest.", "What covers on the outside, for example, a package or a box.", "An operating system software user interface, whose primary purpose is to launch other programs and control their interactions."], "furrow": ["The cut made in a field by a plough."], "ground": ["Node of an electrical system that is used as reference potential for all other nodes of the system.", "A mixture of sand and organic material, used to support plant growth.", "To use as a basis for.", "To connect (an electrical conductor or device) to a ground."], "result": ["The conclusion or end to which any course or condition of things leads.", "Having a specific result, a logical consequence.", "Condition that which follows something on which it depends.", "The result or evidence of students' learning experience."], "nape of the neck": ["The back part of the neck.", "The part of the human or animal body between the back and the backhead; the rear side of the neck of a human, the upper side of the neck of most animals."], "driver": ["A female person who can drive a car.", "A person who can drive a car.", "A program that manages the interaction between the operating system and a hardware device.", "A person who drives a car professionally."], "motorist": ["A person who can drive a car."], "strange": ["Out of the ordinary.", "Out of the ordinary.", "Out of the ordinary."], "odd": ["Out of the ordinary.", "For an integer: not a multiple of two.", "Out of the ordinary.", "Of strange or extraordinary character."], "electric": ["Utilising electricity.", "By means of electricity"], "call": ["To contact someone using the telephone.", "A conversation by a connection over a telephone network.", "To order or summon by using one's voice.", "To give a name to.", "To state, or make something known in advance, especially using inference or special knowledge.", "To give a name or designation of a common noun that, e.g., reflects a quality.", "To pay a short visit.", "To call a meeting; to invite or order to meet.", "To read aloud to check for omissions or absentees.", "To utter a characteristic note or cry (e.g. for birds).", "To order or request or give a command for (e.g. a strike)."], "hope": ["The belief that a desire can be obtained in the future.", "To want something to happen."], "hurt": ["To be of (some) importance, to influence something or someone (enough), to impress, to touch.", "To be painful.", "To cause (somebody) pain."], "hide": ["To put something in a place where it will be harder to discover or out of sight.", "To prevent from being seen or discovered.", "Skin of an animal."], "sick": ["Whose health is altered."], "coat": ["An outer garment covering the upper torso and arms."], "bell": ["An object made of metal or other hard material, typically but not always in the shape of an inverted cup with a flared rim, which resonates when struck.", "A push button at an outer door that gives a ringing or buzzing signal when pushed.", "The sound of a bell being struck."], "lutetium": ["Chemical element with symbol Lu and atomic number 71, silvery white lanthanide."], "shit": ["A product made from cannabis plants as a kind of cake, pieces of which are usually smoked so as to create a state of inebriation or euphoria in men.", "Substance that human and animal bodies release from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon.", "To excrete feces from one's body through the anus.", "A strongly disliked person who behaves disgustingly, underhandedly, or nastily, etc.", "Interjection expressing disgust, negative astonishment, possibly sudden regret, or similar, or related feelings.", "Something being said without sense, utterly wrong, of no use at all.", "Of poor quality.", "To shit little lumps of feces."], "bellwether": ["Anything that indicates future trends.", "A sheep, with a bell around its neck, that leads a flock."], "early": ["Before the expected time."], "entrance": ["The place of entering, as a gate or doorway.", "A way or means of approaching or entering.", "To attract, arouse and hold attention and interest, as by charm or beauty."], "googol": ["The number 10100, written as 1 followed by 100 zeros."], "anytime": ["At any time."], "shipping": ["The transport and movement of goods, people and animals over water."], "serious": ["(Very) serious.", "Of great impact (e.g. for a decision of great impact).", "Not laughing."], "spark plug": ["Device causing the ignition of the gas mixture contained in the cylinders of a spark-ignition engine by the creation of an electric arc between two electrodes."], "candlelight": ["Light that is emitted by a burning candle."], "nonsense": ["Something said, which noone can understand.", "Some information or idea or something said of questionable value or no value at all."], "mister": ["A title of respect used when addressing a man, sometimes with a surname added."], "sandwich": ["A snack made of various ingredients (typically meat, cheese, and condiments) placed between two slices of bread."], "hamburger": ["A hot sandwich typically consisting of a patty of cooked ground beef placed inside a bun along with various vegetables and condiments.", "A kind of flat patty of cooked ground beef that typically is placed inside a bun along with various vegetables and condiments."], "manganese": ["Chemical element with symbol Mn and atomic number 25, silvery transition metal."], "toaster": ["A device intended to roast slices of bread through the application of dry heat."], "condiment": ["Ingredient used to enhance the flavor of food; salt or pepper for example."], "holy shit": ["Interjection expressing disgust, negative astonishment, possibly sudden regret, or similar, or related feelings."], "dogpile": ["What a dogs body releases from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon."], "dog shit": ["What a dogs body releases from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon."], "shipwrecked person": ["A male victim of shipwreck.", "A female victim of shipwreck.", "The victim of a shipwreck."], "industrial plant": ["Buildings where the operations related to industrial productive processes are carried out.\\n(Source: ZINZAN)", "The whole of buildings, machines and necessary devices to carry out an activity."], "shipwrecked female": ["A female victim of shipwreck."], "shipwrecked male": ["A male victim of shipwreck."], "mean": ["To have in mind as one's purpose or intention.", "Characterized by malice.", "Having or showing an ignoble lack of honor or morality.", "In mathematics, a measure of the \"middle\" of a data set.", "To assign for a specific end, use, or purpose; to design or destine.", "To have as a logical consequence.", "To intend to express or convey."], "spread": ["To divide or distribute something in an even way.", "An item in a newspaper or magazine that occupies more than one column or page.", "To spread out or open from a closed or folded state.", "To cause to become widely known.", "To become widely known and passed on.", "The process or result of diffusion, dispersal, expansion, extension, etc.", "A considerable disparity or difference as between two figures.", "To spread across or over (e.g. of liquid spots).", "To move outward (e.g. soldiers).", "To distribute or disperse widely.", "To distribute over a surface in a layer."], "keyboard": ["An electromechanical device with keys affixed to a base used to enter information and interact with a computer.", "A component of many instruments including the piano, organ, and harpsichord consisting of usually black and white keys that cause different tones to be produced when struck.", "A device with keys of a musical keyboard, used to control electronic sound-producing devices which may be built into or separate from the keyboard device."], "ampere": ["The standard SI unit of electrical current with symbol \"A\"."], "ohm": ["The derived SI unit of electrical resistance with symbol \"\u03a9\"; the electrical resistance of a device across which a potential difference of one volt causes a current of one ampere."], "volt": ["The derived SI unit of electrical potential and voltage with symbol \"V\"; the potential difference across a conductor when a current of one ampere uses one watt of power."], "unbreakable": ["Difficult or impossible to break."], "voltmeter": ["An instrument used for measuring the voltage between two points in an electric circuit."], "ohmmeter": ["An electrical measuring instrument that measures electrical resistance."], "ammeter": ["An instrument used to measure the flow of electric current."], "multimeter": ["An electronic instrument that typically combines the functions an ammeter, voltmeter, and ohmmeter."], "hertz": ["The SI unit of frequency with symbol \"Hz\"."], "tesla": ["The SI derived unit of magnetic flux density equal to one weber per square metre, with symbol \"T\"."], "joule": ["The SI unit of energy, which is defined as the potential to do work, with symbol \"J\"."], "calorie": ["The amount of energy needed to raise the temperature of one gram of water by one degree Celsius, equal to about 4.19 joules.", "The amount of energy needed to raise the temperature of one kilogram of water by one degree Celsius."], "specific heat capacity": ["The measure of the heat energy required to raise the temperature of one gram of a substance by one degree celsius, with symbol \"C\" or \"c\"."], "specific heat": ["The measure of the heat energy required to raise the temperature of one gram of a substance by one degree celsius, with symbol \"C\" or \"c\"."], "kelvin": ["The SI unit of temperature with symbol \"K\"."], "axe": ["A tool for felling trees or chopping wood consisting of a heavy, most commonly metallic head flattened to a blade on one side, and which is attached to a usually wooden handle."], "ax": ["A tool for felling trees or chopping wood consisting of a heavy, most commonly metallic head flattened to a blade on one side, and which is attached to a usually wooden handle."], "another": ["One more, in addition to the current one."], "meitnerium": ["Chemical element with symbol Mt and atomic number 109. It's colour is probably silvery white or metallic gray."], "ago": ["In the past."], "better": ["To make better.", "Comparative form of good or well.", "To surpass in excellence.", "To get better."], "kumquat": ["Small citrus fruit with yellow-orange skin, size 2 to 5 cm; fruit of a tree in the plant family Rutaceae"], "along": ["By the length; in a line with the length; lengthwise."], "sedimentation": ["The separation of an insoluble solid from a liquid in which it is suspended by settling under the influence of gravity or centrifugation.", "The act or process of forming or accumulating sediment in layers, including such processes as the separation of rock particles from the material from which the sediment is derived, the transportation of these particles to the site of deposition, the actual deposition or settling of the particles, the chemical and other changes occurring in the sediment, and the ultimate consolidation of the sediment into solid rock.\\n(Source: BJGEO)"], "control": ["To exercise influence over, to suggest or dictate the behavior of.", "To handle and cause to function.", "To perform surgery on."], "beard": ["Facial hair of humans on the chin, cheeks and jaw."], "compare": ["To assess the similarities between two things.", "To be comparable.", "To consider or describe as similar, equal, or analogous."], "bright": ["Of high or especially quick cognitive capacity.", "Visually dazzling.", "Describing the particular astute intellect of a person.", "Bright of colour."], "intelligent": ["Of high or especially quick cognitive capacity."], "luminous": ["Visually dazzling."], "radiant": ["Visually dazzling."], "assuage": ["To bring peace to a place or situation.", "To lessen the intensity of a situation.", "To make easier to endure; provide physical relief, as from pain."], "pacify": ["To bring peace to a place or situation."], "soothe": ["To bring peace to a place or situation."], "calm": ["To lessen the intensity of a situation.", "Showing no trouble or agitation.", "(For a person) Serenely self-possessed and free from agitation especially in times of stress.", "Smooth or having only gentle waves.", "(of weather) free from storm or wind."], "mitigate": ["To lessen the intensity of a situation."], "relieve": ["To lessen the intensity of a situation.", "To make easier to endure; provide physical relief, as from pain.", "To grant relief or an exemption from a rule or requirement to."], "careless": ["Not giving sufficient attention or thought, especially concerning the avoidance of harm or mistakes."], "break": ["Destroy in two or more pieces, which can't easily be reassembled.", "To surpass in excellence.", "To stop functioning properly or altogether.", "To cause to stop functioning properly or altogether.", "The breaking of hard tissue such as bone.", "To hold back, as of a danger or an enemy; check the expansion or influence of.", "To prevent completion (e.g. of a project, of negotiations, etc.).", "To break a hard tissue such as a bone."], "destroy": ["To damage beyond use or repair.", "To cause the destruction of."], "lately": ["In a time in the recent past."], "recently": ["In a time in the recent past."], "page": ["One side of a leaf of a book or manuscript.", "A sheet of a book, magazine, etc (consisting of two pages, one on each face of the leaf)."], "person": ["A human being."], "punish": ["To administer disciplinary action.", "As an authority, to impose an undesirable condition on a person who has performed an unacceptable behavior.", "To cause great harm to.", "To return harm for a good act."], "castigate": ["To administer disciplinary action."], "own": ["To have rightful possession of property, goods or capital.", "To be in possession (of an object).", "Belonging to."], "decide": ["To reach, make, or come to a decision about something.", "To bring to an end; to settle conclusively.", "To influence or determine."], "phobia": ["An irrational or obsessive fear or anxiety, usually of or about something particular."], "everyone": ["Every person."], "easy": ["Requiring little skill or effort; posing no difficulty."], "wish": ["To hope for a particular outcome; to have a wish.", "The expression of a need or desire.", "To prefer or wish to do something.", "To invoke upon (e.g. farewell, a nice evening, etc.)."], "neither": ["Not one of two.", "To not do or be something in a similar manner."], "nothing": ["Not any thing."], "none": ["Not any of previously mentioned things."], "cargo ship": ["A ship which is exclusively intended for the transport of goods."], "freighter": ["A ship which is exclusively intended for the transport of goods."], "sailing ship": ["A vessel that is powered by the wind."], "lung": ["A biological organ that extracts oxygen from the air."], "behave": ["Act in a polite or proper way.", "To act in a (specified or unspecified) way, in a social context."], "between": ["In the location or interval between two or among more objects, sides.", "In the position or interval that separates two things."], "born": ["Given birth to", "Being talented through inherited qualities."], "bottom": ["The part furthest in the direction toward which an unsupported object would fall.", "A depression forming the ground under a body of water.", "The fleshy part of the human body that one sits on.", "Situated at the bottom or lowest position."], "besides": ["In addition to what has been said.", "In addition to."], "bring": ["Participation in building a capital, particpation in a payment.", "To apply a quality on (a person).", "To transport toward somewhere; to take something or somebody with oneself somewhere.", "To go or come after and bring or take back.", "To be accompanied by.", "To advance or set forth in court (e.g. charges or proceedings)."], "around": ["In the immediate neighbourhood of.", "Over or upon different parts of; through or over in various directions; back and forth in.", "[Said for a quantity (time, size, place, ...) that is given] in a imprecise way but close to the real value.", "Following a path which curves near an object, with the object on the inside of the curve"], "anything": ["Any object, act, state, event, or fact whatever.", "In any way."], "away": ["Not where something or someone usually is.", "In a direction away from the speaker or object.", "At a distance in space or time.", "At the opponent's ground; in the opposing team's stadium."], "absent": ["Not where something or someone usually is.", "Inattentive to what is passing."], "gone": ["Not where something or someone usually is."], "Gilaki": ["Language of Gils people who live in Gilan, Iran."], "half-moon": ["The lunar phase between new moon and full moon during which only half of the moon is visible."], "half moon": ["The lunar phase between new moon and full moon during which only half of the moon is visible."], "crescent-shaped": ["Having the shape of a crescent."], "go": ["To cease to live.", "A board game, originally from China.", "To move from a place to another that is further away."], "great": ["Very big.", "Title referring to an important leader.", "Very good.", "Deserving praise; worth to be praised."], "Black Forest": ["A mountain area in Baden-W\u00fcrttemberg in south-western Germany."], "from": ["Indicates the source or provenance.", "Starting from the moment that ...", "Starting from the place where."], "provenance": ["The place and time where some artifact or object originated from."], "procure": ["To get or obtain an item; to come into the possession of something.", "To succeed obtaining."], "obtain": ["To get or obtain an item; to come into the possession of something.", "To get a characteristic."], "amputation": ["A surgical operation consisting of the removal of all or part of a limb."], "mix": ["To stir two or more substances together.", "To mix together different elements."], "chase": ["To follow at speed with the intent to catch.", "Try to reach a goal which is difficult to reach craving for it."], "pursue": ["To follow at speed with the intent to catch.", "Trying to achieve or to reach something."], "chance": ["A favorable circumstance or occasion."], "possibility": ["A favorable circumstance or occasion."], "contain": ["To contain or hold; have within.", "To hold back, as of a danger or an enemy; check the expansion or influence of."], "enclose": ["To contain or hold; have within."], "wise": ["Not showing due respect.", "Showing good judgement or the benefit of experience."], "sad": ["Feeling mentally uncomfortable because something is missing or wrong."], "physicist": ["Scientist who studies or practices physics."], "park": ["Area of ground or a building where there is space for vehicles to be parked.", "A public place or area set aside for recreation or preservation of a cultural or natural resource.", "To bring (something such as a vehicle) to a halt or store in a specified place."], "partner": ["Someone who is associated with another in a common activity or interest.", "A person who joins with others in some activity.", "Participating in a society with an economic goal."], "mendelevium": ["Chemical element with symbol Md and atomic number 101, artificially manufactured actinide."], "curfew": ["A regulation requiring people to be off the streets and in their homes during a certain period.", "A signal (usually a bell) announcing the start of curfew restrictions.", "The time that the curfew signal is sounded."], "care": ["Treatment done for a patient in order to alleviate his pain and to heal him.", "Feeling and exhibiting concern and empathy for others.", "To feel concern or interest.", "To provide care for.", "To prefer or wish to do something."], "close": ["At a little distance.", "To make something end.", "To move (a door, a window, etc.) so that it closes its opening.", "Not far distant in time or space or degree or circumstances.", "To become closed.", "To cease to operate or cause to cease operating (e.g. a business or a shop).", "To complete a business deal, negotiation, or an agreement.", "To be priced or listed when trading stops.", "To cause a window or an application to disappear on a computer desktop."], "careful": ["Giving attention.", "Characterized by caution."], "carry": ["To contain or hold; have within.", "To lift and bring to somewhere else while supporting, either in a vehicle or on one's body; to transport by lifting.", "(For a flow of water, air, etc.) To transport with the flow."], "slow": ["With low speed.", "Reduce the velocity.", "To become slower."], "catch": ["To take hold of, especially in the hands, so as to seize or restrain or stop the motion of.", "To discover unexpectedly.", "To succeed in catching or seizing, especially after a chase.", "To attract and fix (e.g. someone or his/her eyes).", "To perceive by hearing.", "To apprehend and reproduce accurately.", "To perceive with the senses quickly, suddenly, or momentarily (e.g. an aroma, an allusion, etc.).", "To attract, arouse and hold attention and interest, as by charm or beauty.", "A drawback or difficulty that is not readily apparent.", "To reach with a blow or hit in a particular spot.", "To hook or entangle.", "To capture as if by hunting, snaring, or trapping.", "To get or regain something necessary (e.g. sleep or breathe), usually quickly or briefly.", "To catch up with and possibly overtake (e.g. cars in a race).", "The quantity (e.g. of fish) that was caught."], "capture": ["To take possession of by force.", "To take control of.", "To remove or take control of from the opponent in a game.", "To store (as in sounds or image) for later revisitation.", "To succeed in catching or seizing, especially after a chase.", "To attract, arouse and hold attention and interest, as by charm or beauty.", "To capture as if by hunting, snaring, or trapping."], "soon": ["at the time following immediately the time when", "In a near future."], "children": ["Plural form of child."], "crash": ["The occurrence when two object forcefully impact on each other.", "A computer malfunction that makes the system either partially or totally inoperable.", "Sudden dramatic decline of stock prices at stock markets.", "To collide with something destructively, fall or come down violently.", "To attend a social event without invitation.", "To undergo damage or destruction on impact."], "clean": ["Not dirty.", "To remove dirt, dust or foreign matter from.", "To remove unwanted substances from (e.g. food), such as feathers, peels or pits."], "clear": ["To eliminate ambiguity or doubt about something.", "Free of ambiguity or doubt.", "Without fog.", "To settle, as of a debt.", "To earn, to gain (money)."], "clarify": ["To eliminate ambiguity or doubt about something.", "To make clear or obvious.", "To make clear or bright by freeing from foreign substances."], "polite": ["Good mannered."], "climb": ["To ascend; to go up.", "To mount to a high or little accessible place using feet and hands."], "dark": ["Having an absolute or (more often) relative lack of light.", "Marked by difficulty of style or expression.", "Making despondent or depressive.", "Moody and melancholic.", "(For a color) Having a lower brightness."], "fuel cell": ["An electrochemical device that directly converts chemical energy into electric energy in a continuous reaction, and that needs continuous fuel supply from outside, different from a battery or an accumulator"], "board game": ["A game played on a specially designed board."], "remember": ["To recall from memory."], "shine": ["To emit light.", "To reflect light.", "To do something well; to distinguish oneself.", "To clean a surface to the point of reflectiveness.", "The quality of being bright and sending out rays of light.", "To touch or seem as if touching visually or audibly."], "glow": ["To emit light."], "gleam": ["To reflect light."], "excel": ["To do something well; to distinguish oneself."], "polish": ["To clean a surface to the point of reflectiveness."], "buff": ["A follower or admirer who likes, knows about, and appreciates a particular interest or activity.", "A change to a video game that increases the desirability or effectiveness of a particular game element.", "To increase, in a video game, the desirability or effectiveness of a particular game element."], "in case": ["In the event; should there be a need."], "recall": ["To recall from memory."], "recollect": ["To recall from memory."], "downplay": ["To deemphasize; to lessen the importance, emphasis, or force of something, as in a presentation."], "teach": ["To pass on knowledge and skills."], "deemphasize": ["To deemphasize; to lessen the importance, emphasis, or force of something, as in a presentation."], "surname": ["A family name or last name."], "last name": ["A family name or last name."], "wheel": ["A circular object that spins around a central axe thereby allowing relatively low-friction movement.", "A circular object used to steer certain types of vehicles."], "tall": ["Having a vertical extent greater than the average; Having the upper end, tip, top, head, etc. a long way up; Having a great vertical extent (often greater than the horizontal extent); High.", "Having a vertical extent greater than the average, said about a person.", "Hard to believe (a story, a tale)."], "trouble": ["To have an unwanted negative influence on someone, to be distractive to or for someone, impress someone or something in a troublesome or uneasy way.", "A source of difficulties.", "An event causing distress or pain.", "A strong feeling of anxiety.", "To cause annoyance in; disturb, especially by minor irritations.", "To disturb in mind or make uneasy or cause to be worried or alarmed."], "special": ["Of particular interest.", "A dish or meal given prominence in e.g. a restaurant."], "rich": ["Possessing in abundance a particular trait.", "For a color or a light: particularly strong and attracting gaze.", "Abundant, fully sufficient or more than adequate in supply for the purpose or needs.", "Having a lot of money and possessions.", "Having a fatty, intense flavour.", "[Used to form adjectives when combined with common nouns for things considered desirable in the context. The resulting adjectives usually mean \"abounding in (common noun)\".]", "Elaborate, having complex formatting, multimedia, or depth of interaction.", "Of a fuel-air mixture, having less air than is necessary to burn all of the fuel.", "Having a lot of natural resources.", "Of great value or worth.", "Expensive and elegant.", "Made with expensive materials and elaborate workmanship.", "Strongly fragrant.", "Producing abundantly.", "Having many components in large quantities.", "Highly entertaining.", "Musically powerful and varied, using various combinations of chords, various instrumental combinations.", "(of food) Very spicy.", "(of food) Sweet and full of butter or cream.", "(Of vine) Strong and finely flavored."], "steal": ["To take possession of property belonging to another without the consent of this owner; most typically when not observed, rather than by force.", "The act of taking illegitimatly possession of something that belongs to others."], "newton": ["The SI unit of force with symbol \"N\", equal to 1 kilogram-metre per second squared."], "coulomb": ["The SI unit of electrical charge with symbol \"C\", equal to the charge carried by a current of one ampere for one second."], "shout": ["To speak with a loud, excited voice.", "A vehement and sudden outcry.", "To utter a sudden and loud outcry.", "To utter aloud; often with surprise, horror, or joy."], "groan": ["a low, guttural sound of frustration"], "grunt": ["a low, guttural sound of frustration"], "pay": ["To give money in exchange for goods or services.", "To bear (a cost or penalty) for his own mistakes or someone else's.", "To convey, as of a compliment, regards, attention, etc.", "To render (e.g. a visit).", "To cancel or discharge a debt.", "To bring in (e.g. interests, money, etc.)."], "sheet": ["A cloth covering for a bed, intended to be in contact with the sleeping person.", "A single rectangular piece of paper.", "A smooth and rectangular piece, that is thin relative to its length and width, made of firm substance, like metal, glass, wood, stone, steel etc."], "ICAO radiotelephony spelling alphabet": ["A collection of 26 names of countries or cities with international airports which are capitals of their respecive countries, having different initial letters, set forth by the International Civil Aviation Organization (OACI), an agency of the United Nations, to be used to code the letters of the Latin alphabet with their initials for all sorts of spelling in international radio transmissions and similar communications about and in connection with civil aviation."], "ISO 3166-1 codes": ["OmegaWiki collection of ISO 3166-1 alpha-2 country codes."], "worry": ["A strong feeling of anxiety.", "To produce responsibility and desire of taking care of.", "To be anxious about something.", "To be on the mind of."], "win": ["An individual victory, as in a race or competition.", "To achieve a victory.", "To attain a desired goal.", "To get as a price from a lottery or other competition."], "pragmatic": ["Aiming towards utility and usability."], "find": ["To spot, detect, recognize, capture, or see something or someone having been unknown, invisible, obscured, too distant, or otherwise not found before.", "To encounter something by accident or after searching for it.", "An object which has been found during an archaeological excavation.", "To see, discover or determine something, unclear, distant or hidden, by looking carefully.", "To come upon after searching; find the location of something that was missed or lost.", "To establish after a calculation, investigation, experiment, survey, or study.", "To make a discovery, to make a new finding."], "must": ["A period in which male elephants display aggressive and dominant behaviour.", "To be required to do something."], "less": ["To a smaller extent."], "toy": ["An object designed for amusement or play, usually intended for children to use."], "low": ["In a position comparatively close to the ground.", "Severely despondent and unhappy.", "Low in spirits.", "Speaking quietly: to talk in a low voice."], "depressed": ["Severely despondent and unhappy.", "Low in spirits."], "will": ["A person's intent, volition, decision.", "A legal document that states who is to receive a person's estate and assets after their death.", "The capability of conscious choice and decision and intention."], "molybdenum": ["Chemical element with symbol Mo and atomic number 42, grey transition metal."], "Z\u00fcrich": ["The capital of the Swiss canton of Z\u00fcrich and the largest city of Switzerland, Switzerland's main economic and cultural centre.", "A canton in the north of Switzerland."], "Zurich": ["The capital of the Swiss canton of Z\u00fcrich and the largest city of Switzerland, Switzerland's main economic and cultural centre."], "solar panel": ["A panel that converts solar energy into electricity."], "hopefully": ["It is hoped that; I hope."], "instrument": ["A mechanical device intended to perform a task.", "A device constructed or modified with the purpose of making music."], "place": ["A position or area in a space.", "To put something in a position.", "To cause (as an end result, not a process) an object to be in a new place.", "To bring something in a specific place or in a specific position.", "To put one thing over another.", "To put in a certain position.", "To use a resource (money, time, energy, etc.) with the expectation of obtaining something of greater value.", "A space reserved for sitting (as in a theater or on a train or airplane)."], "read": ["To interpret something in a certain way; convey a particular meaning or impression.", "To look at and interpret letters or other information that is written.", "To obtain data from storage devices, like magnetic tapes or hard disks.", "To have or contain a certain wording or form."], "afghani": ["The official currency of Afghanistan."], "euro": ["The currency of the European Monetary Union, with symbol \"\u20ac\"."], "dram": ["The official currency of Armenia."], "dollar": ["The official currency of the United States of America, with symbol \"$\".", "The currency of Suriname.", "The currency of Trinidad and Tobago."], "peso": ["The currency of Chile.", "The currency of Cuba.", "The currency of Uruguay."], "franc": ["The currency of Switzerland and Liechtenstein.", "The currency of Benin, Burkina Faso, C\u00f4te d'Ivoire, Guinea-Bissau, Mali, Niger, Senegal and Togo.", "The official currency of the Democratic Republic of Congo since 1997.", "The currency of Cameroon, Central African Republic, Chad, Republic of the Congo, Equatorial Guinea and Gabon.", "The currency used in the French overseas possessions of French Polynesia, New Caledonia and Wallis and Futuna."], "kuna": ["The official currency of Croatia."], "krone": ["The official currency of Denmark."], "ruble": ["The official currency of Belarus, Russia, and Transnistria as well as other countries just before Soviet rule."], "rouble": ["The official currency of Belarus, Russia, and Transnistria as well as other countries just before Soviet rule."], "hryvnia": ["The official currency of Ukraine."], "nightgown": ["A garment mainly worn by women for sleeping in."], "nightdress": ["A garment mainly worn by women for sleeping in."], "night sky": ["The sky at night."], "Belarussian": ["A person of Belarusian nationality."], "Bielorussian": ["A person of Belarusian nationality."], "White Russian": ["A person of Belarusian nationality."], "White Ruthenian": ["A person of Belarusian nationality."], "starry sky": ["The sky at night with stars being visible."], "starlit": ["Lit by the stars."], "Moldavia": ["A geographical and historical region in north-eastern Romania."], "Alabama": ["The 22nd state of the United States of America, located in the southeast.", "A Native American language, spoken by the Alabama-Coushatta tribe of Texas."], "Arizona": ["The 48th state of the United States of America, located in the south west."], "Arkansas": ["The 25th state of the United States of America, located in the mideast.", "A language of the USA."], "California": ["The 31st state of the United States of America, located in the west."], "Colorado": ["The 38th state of the United States of America, located in the midwest.", "A language of Ecuador."], "Connecticut": ["The 5th state of the United States of America, located in the northeast."], "Delaware": ["The 1st state of the United States of America, located in the northeast.", "A river on the Atlantic coast of the United States."], "Hawaii": ["The 50th state of the United States of America, located in the Pacific Ocean."], "Idaho": ["The 43rd state of the United States of America, located in the northwest."], "spam": ["A canned meat product made of 100 % pure pork and ham.", "An unsolicited electronic message sent in bulk, e.g. by email or newsgroups."], "while": ["A certain duration of time, a period of time", "During a time"], "open": ["Not closed, something that has been opened.", "To make something accessible or removing an obstacle to something being accessible.", "To spread out or open from a closed or folded state.", "The act of something that automatically opens.", "Straightforward and direct without reserve or secretiveness.", "To make a hole or a passage unobstructed by removing a cover (like a window sash, door, etc.) from it.", "To make the opening move, e.g. in chess.", "To make available.", "To begin or set in action, of meetings, speeches, recitals, etc.", "To start to operate or function or cause to start operating or functioning (e.g. a business).", "To cause to open or to become open.", "To become open."], "which": ["What, of those mentioned or implied (used interrogatively).", "What one or ones (of those mentioned or implied)."], "neodymium": ["Chemical element with symbol Nd and atomic number 60, yellowish silvery white lanthanide."], "eviction": ["The expulsion of someone (such as a tenant) from the possession of land by process of law."], "first": ["Having no predecessor. The ordinal number corresponding to one.", "Female or feminine object having no predecessor.", "At first."], "OLPC-dictionary": ["A collection of words and definitions for the \"One Laptop Per Child\" (OLPC) initiative."], "twilight": ["A period of time at the end of the day shortly after sunset during which the light fades gradually.", "Time period between complete darkness and sunrise or sunset."], "ribonucleic acid": ["A nucleic acid polymer containing ribose rings, transcribed from DNA by enzymes and used for the translation of genes into proteins."], "RNA": ["A nucleic acid polymer containing ribose rings, transcribed from DNA by enzymes and used for the translation of genes into proteins."], "omnipotent": ["Having unlimited power, ruling over everyone and everything."], "almighty": ["Having unlimited power, ruling over everyone and everything."], "deoxyribonucleic acid": ["The principal material of inheritance. It is found in chromosomes and consists of molecules that are long unbranched chains made up of many nucleotides. Each nucleotide is a combination of phosphoric acid, the monosaccharide deoxyribose and one of four nitrogenous bases: thymine, cytosine, adenine or guanine. The number of possible arrangements of nucleotides along the DNA chain is immense. Usually two DNA strands are linked together in parallel by specific base-pairing and are helically coiled. Replication of DNA molecules is accomplished by separation of the two strands, followed by the building up of matching strands by means of base-pairing, using the two halves as templates. By a mechanism involving RNA, the structure of DNA is translated into the structure of proteins during their synthesis from amino acids.\\n(Source: ALL)"], "extremely": ["To an extreme degree."], "reality": ["Interaction between entities in the material world measured by time space stardards.", "An actual condition or circumstance."], "every": ["Every individual or anything of the given class, with no exceptions.", "All of a countable group, without exception."], "niobium": ["Chemical element with symbol Nb and atomic number 41, shiny grey transition metal."], "earn": ["To gain (success) through applied effort or work.", "To earn, to gain (money)."], "make": ["To allow urine to flow from the bladder out of the body.", "To excrete feces from one's body through the anus.", "To create something by combining or assembling materials or parts or by changing it.", "To cause someone to do something.", "To cause to be or become.", "To be the material or components of.", "To be the cause of.", "To calculate roughly, often from imperfect data.", "To be or constitute a general essence of, to be in the broadest sense identified with or part of, to often come with, to make something or someone special.", "(Of God, also of Nature personified) To bring into existence (a material or spiritual object).", "(in passive form) To be naturally fitted or destined.", "To put materials together for (a fire) and light it.", "To produce the material or physical existence of by some action.", "To give certain properties to someone or something.", "To come to the sum of; to add up to.", "(Of a person) To become by development or training; to favor the development of.", "To make official a document, law, rule, rate, etc.", "To write out (a legal document, especially one's will) in due form.", "To prepare (an article of food or drink) for consumption.", "To perform or carry out (e.g. a bodily movement or a decision).", "To enter into or conclude a legal agreement.", "To deliver (a lecture, a sermon, etc.) orally.", "[With verbal nouns, forming phrases approximately equivalent to the source verb]", "To eat (a meal).", "To incur (a loss, an expense, etc.).", "To accomplish (a distance, or speed) by travelling, using a vehicle, etc.", "To reach (a place) in travelling.", "To achieve (a point, a goal, an honor, etc.).", "To recognize (a person, etc.).", "To induce (a person) to consent to sexual relation.", "To achieve a place in (a list).", "To receive prominent attention in (the news, etc.)", "(Of a river, road, etc.:) to undergo (a turn or bend) in its course.", "To prepare (a bed) for sleeping in.", "To attempt, offer, or start to do something.", "To proceed (in a direction).", "To enable somebody the holder of a title or member of a group .", "To earn, to gain (money).", "To be able to pay for (an expense).", "(Of the flood, or ebb tide, or wind) to be in progress. (Also, of the wind: to increase in strength.)", "To prepare (a meal, a feast).", "To transform from one state, condition, category, etc., to another.", "To assure the success of.", "To be sufficient to constitute.", "To achieve (an objective).", "To succeed in catching (a plane, boat, bus, train, etc.).", "To shuffle (playing cards).", "To produce (a substance).", "To create artistically.", "To organize or be responsible for (e.g. a party, a course, etc.)", "To institute or enact (e.g. laws)."], "owl": ["An owl characterised by the presence of ear tufts.", "An owl characterised by the absence of ear tufts.", "A solitary, mainly nocturnal bird of prey, belonging to the order Strigiformes; it has large forward-facing eyes and ears and a hawk-like beak, and it can turn its head 180 degrees around."], "emergency power unit": ["A aggregate that starts automatically by power failure."], "coolant": ["A fluid which serves to transport heat."], "phrase": ["Group of words whose meaning is different from the sum of its parts."], "waiter": ["A server in a restaurant, cafe or similar.", "A servant (in a private house) whose particular duty it is to wait upon those seated at table.", "A person who waits or awaits."], "Illinois": ["The 21st state of the United States of America, located in the midwest."], "Indiana": ["The 19th state of the United States of America, located in the midwest."], "farad": ["The SI unit of capacitance with symbol \"F\"."], "Iowa": ["The 29th state of the United States of America, located in the midwest."], "Kansas": ["The 34th state of the United States of America, located in the central US."], "firkin": ["An old English unit of volume equal to about nine Imperial gallons when dealing with beer/ale and one third of a tun when dealing with wine."], "yard": ["A unit of length used throughout many systems equal to three feet (0,914 m), with symbol \"yd\".", "A small, usually uncultivated area adjoining or within the precincts of a house or other building."], "mile": ["A unit of length used by several systems equal to 5,280 feet, with symbol \"m\"."], "kindle": ["To start (a fire)."], "debate": ["An argument, or discussion, usually in an ordered or formal setting, often with more than two people, generally ending with a vote or other decision.", "To participate in a formal debate.", "The act of disputing.", "To discuss by arguing for and against."], "discussion": ["Conversation concerning a particular topic."], "thing": ["All coverings designed to be worn on a person's body.", "That which is considered to exist as a separate entity, quality or concept.", "An object or abstraction that is referred to but not precisely named.", "Whatever can be owned.", "The sexual organs: the testicles and penis of a male; or the labia, clitoris, and vagina of a female."], "nobelium": ["Chemical element with symbol No and atomic number 102, artificially produced actinide"], "server": ["A computer that provides services to other interconnected computers (the clients).", "An attendant who offers or distributes food and drink to those in an eating place (at a restaurant, a refectory, etc.)."], "draw": ["To produce traces or marks with a solid colour on a hard surface or with a solid object on softer surface.", "To apply a force to (an object) such that it comes toward the one applying the force.", "To determine the result of a lottery.", "To reach a conclusion by applying rules of logic to given premises.", "The result of a game in which neither side has won.", "To draw by a physical force causing or tending to cause to approach, adhere, or unite.", "To cause to move along the ground by pulling."], "feed": ["To feed a bird from beak to beak.", "To give food.", "Encapsulated online content that you can subscribe to with a feed reader. Used often for reading blog and news updates.", "To profit from in an exploitatory manner.", "To introduce continuously (e.g. ingredients into a food processor).", "To support or promote (e.g. vanity, self-esteem, etc.).", "To move along, of liquids."], "zigzag": ["A line or path that proceeds by sharp turns in alternating directions; A line created by moving back and forth sideways, and at the same time forward in one direction; A line similar to serpentines.", "One of the turns in a line or path that proceeds by sharp turns in alternating directions.", "Moving in a zigzag, proceeding like a zigzag, or having a zigzag.", "In a zigzag manner or pattern.", "To move in a zigzag, to proceed like a zigzag, to bend like a moving snake body."], "serpentines": ["A line or path that proceeds by sharp turns in alternating directions; A line created by moving back and forth sideways, and at the same time forward in one direction; A line similar to serpentines."], "serpentine": ["One of the turns in a line or path that proceeds by sharp turns in alternating directions."], "Zigzag": ["A small town in Oregon, USA."], "still": ["Continuously, during all time up to this or that time.", "In addition to something else previously mentioned.", "In spite of that.", "A device for distilling liquids.", "A non-moving photograph.", "Not in physical motion.", "Not moving.", "As in the preceding time."], "winter day": ["A day in winter."], "summer day": ["A day in summer."], "spring day": ["A day in spring."], "peck": ["An Imperial unit of dry volume equal to eight dry quarts.", "To bother persistently with trivial complaints.", "A British imperial capacity measure (liquid or dry) equal to 2 gallons.", "To kiss lightly.", "(For a bird) To eat by small pieces with one's beak or bill.", "To eat by small pieces like a bird.", "To hit lightly with a picking motion."], "pint": ["A unit of volume equal to 473 millilitres (wet) and 551 millilitres (dry)."], "furlong": ["A measure of distance within Imperial units and U.S. customary units, and is equal to 660 feet or 201.168 metres."], "league": ["An obsolete unit of length and area equal to 3 nautical miles (5.56 kilometres) and 4428.4 acres, respectively.", "An obsolete unit of length equal to 3 nautical miles (5.56 kilometres)."], "weber": ["The SI unit of magnetic influx with symbol \"Wb\"."], "radian": ["A unit of plane angle with symbol \"rad\"."], "z\u0142oty": ["The official currency of Poland."], "yen": ["The official currency of Japan."], "rand": ["The official currency of South Africa."], "rupee": ["The currency of Nepal.", "The currency of India.", "The currency of Mauritius."], "dinar": ["The official currency of Algeria.", "The currency of Jordan.", "The currency of Libya.", "The currency of Kuwait.", "The currency of Serbia"], "dirham": ["The official currency of Morocco."], "Luxembourgish": ["A West Germanic language mainly spoken in Luxembourg where it is an official language along with French and German."], "Luxemburgish": ["A West Germanic language mainly spoken in Luxembourg where it is an official language along with French and German."], "Luxembourgian": ["A West Germanic language mainly spoken in Luxembourg where it is an official language along with French and German."], "Kalaallisut": ["An Eskimo-Aleut language spoken in Greenland."], "Moldavian": ["A person of Moldovan nationality.", "Of or relating to Moldova, Moldovans, or the Moldovan language.", "The Romanian language in the Republic of Moldova and in the territory of Transnistria.", "Of or relating to Moldavia, Moldavians, or the Moldavian dialect.", "A variety of the Romanian language spoken in the Republic of Moldova."], "Moldovan": ["The Romanian language in the Republic of Moldova and in the territory of Transnistria.", "A person of Moldovan nationality.", "Of or relating to Moldova, Moldovans, or the Moldovan language.", "A variety of the Romanian language spoken in the Republic of Moldova."], "Kirghiz": ["A Northwestern Turkic language, and, together with Russian, an official language of Kyrgyzstan."], "osmium": ["Chemical element with symbol Os and atomic number 76, grey blue transition metal."], "terrible": ["Dreadful; causing alarm and fear.", "Intensely or extremely bad or unpleasant in degree or quality."], "drive": ["To operate a (motorized) vehicle (with wheels).", "To herd (animals) in a particular direction.", "To move something by hitting it with great force; to push, propel, or press with force.", "The act of applying force to propel something.", "A series of actions advancing a principle or tending toward a particular end.", "To compel or force or urge relentlessly or exert coercive pressure on, or motivate strongly.", "To compel somebody to do something, often against his own will or judgment.", "To travel or be transported in a vehicle.", "To excavate horizontally.", "To cause to function by supplying the force or power for or by controlling."], "either": ["One or the other of two.", "Each of two."], "end": ["Extreme part.", "The last or final part.", "To reach oneself's end.", "To make something end.", "To have an end, in a temporal, spatial, or quantitative sense; either spatial or metaphorical.", "To put an end to."], "terminate": ["To make something end.", "To have an end, in a temporal, spatial, or quantitative sense; either spatial or metaphorical."], "though": ["In spite of that.", "Despite the fact that.\\n[Expression to indicate that something occurs or is done in the opposite way than what is required or sensible.]"], "than": ["A grammatical particle and preposition in the English language. It introduces a comparison, and as such is associated with comparatives, and with words such as more, less, and fewer. Typically, it seeks to measure the force of an adjective or similar description between two predicates."], "enjoy": ["To receive pleasure or satisfaction from something.", "To derive or receive pleasure from; get enjoyment from; take pleasure in."], "shelf": ["A flat, rigid, rectangular structure, fixed at right angles to a wall, and used to support, store or display objects."], "therefore": ["[A word that expresses that something is or should be the consequence of something else]."], "hence": ["[A word that expresses that something is or should be the consequence of something else]."], "thus": ["[A word that expresses that something is or should be the consequence of something else].", "In the way or manner described, indicated, or suggested"], "electromagnetism": ["The physics of the electromagnetic field: a field which exerts a force on particles that possess the property of electric charge, and is in turn affected by the presence and motion of those particles."], "scarf": ["A long and narrow cloth that is worn around the neck."], "pseudonym": ["A fictitious name, often used by writers."], "enter": ["To come or go into.", "To insert and to record data in an electronic computer in permanent form.", "To have one's name formally recorded as a participant or member."], "drop": ["The event of moving to a lower position due to the effect of gravity.", "To fall in globules or small portions, as water or other liquid.", "A very small quantity of a liquid that has taken the form of a sphere."], "veracity": ["The quality of being truthful."], "truthfulness": ["The quality of being truthful."], "store": ["An establishment, either physical or virtual, that sells goods or services to the public.", "To keep something for later use in a certain location.", "To copy (data) into memory or onto a storage device, such as a hard disk."], "tidy": ["Arranged neatly or in an organised fashion.", "To make neat or organised.", "Having a systematic arrangement."], "pupil": ["A student under the supervision of a teacher or professor.", "Someone who attends a class.", "Contractile aperture in iris."], "pascal": ["The SI derived unit of pressure or stress, with symbol \"Pa\"."], "excited": ["Having great enthusiasm.", "Very emotional or excited, positively or negatively, regarding something.", "(Physics) Having an energy level above an arbitrary baseline energy state."], "hurry": ["To move or do something at a fast pace.", "To speed up the rate of doing something."], "fail": ["To not achieve a particular goal.", "A grade given to a student with extremely below average performance."], "several": ["An arbitrary amount of persons or objects, usually not much more than two."], "these": ["The (things) here. [Used to indicate some things that are nearby.]"], "litas": ["The currency of Lithuania."], "lira": ["The former official currency of Italy, San Marino and the Vatican City.", "The currency of Malta until the end of 2007 when it was replaced by the euro"], "becquerel": ["The SI derived unit of radioactivity, with symbol \"Bq\"."], "lux": ["The SI unit of illuminance, with symbol \"lx\"."], "steradian": ["The SI unit of solid angle, with symbol \"sr\"."], "lumen": ["The SI unit of luminous flux, with symbol \"lm\".", "The inside space of a tubular structure."], "disavow": ["To refuse strongly and solemnly to own or acknowledge."], "abjure": ["To refuse strongly and solemnly to own or acknowledge."], "disclaim": ["To refuse strongly and solemnly to own or acknowledge."], "disown": ["To refuse strongly and solemnly to own or acknowledge."], "deny": ["To refuse strongly and solemnly to own or acknowledge.", "To reject the truth or validity of something."], "reject": ["To refuse strongly and solemnly to own or acknowledge.", "The person or thing that is rejected or set aside as inferior in quality."], "depend": ["To have faith or confidence in.", "To rely on for support; to be conditioned or contingent; to be connected with anything, as a cause of existence, or as a necessary condition."], "lower": ["To reduce in value, amount, etc.", "To move something to a less elevated position.", "To port down, to move down."], "shorten": ["To make shorter."], "abbreviate": ["To make shorter.", "To bring information in fewer words; to describe roughly or briefly.", "To shorten a word or phrase by omitting letters."], "their": ["Belonging to them. (genitive of third person plural)"], "successful": ["Resulting in success; assuring, or promotive of, success; accomplishing what was proposed; having the desired effect"], "ever": ["At any time, particularly used as an intensifier."], "forever": ["For all time, for all eternity; for an infinite amount of time.", "For a very long or seemingly endless time."], "palladium": ["Chemical element with symbol Pd and atomic number 46, silvery white transition metal."], "much": ["A large amount of.", "To a considerably larger extent."], "happen": ["(For an event) Have a real existence.", "(For an event) To occur by chance.", "To encounter by chance.", "To come to pass."], "habeas corpus": ["A common law writ, or order, used to challenge the legality of imprisonment."], "for": ["[Indicates that a reason or cause follows].", "Over the time of; Having a duration of; [indicates that a time frame or duration follows].", "Directed at, intended to belong to."], "since": ["Starting from the moment that ...", "As a consequence of.", "[Used to introduce a known or obvious fact that justifies a proposition in the same sentence.]", "[Used to indicate that the speaker considers the two propositions to be obligatorily connected.]"], "switch on": ["To cause to operate an electronic device by flipping a switch.", "To cause to operate by flipping a switch."], "lettuce": ["A green, leafy vegetable (Lactuca sativa) commonly eaten in salads, burgers and tacos."], "her": ["Belonging or associated with a female.", "\"Her\", \"hers\", the genitive form of \"she\"."], "odious": ["Arousing or meriting strong dislike, aversion, or intense displeasure.", "Provoking hate, aversion, disaproval."], "detestable": ["Arousing or meriting strong dislike, aversion, or intense displeasure."], "hated": ["Arousing or meriting strong dislike, aversion, or intense displeasure."], "reviled": ["Arousing or meriting strong dislike, aversion, or intense displeasure."], "unsavory": ["Arousing or meriting strong dislike, aversion, or intense displeasure.", "Unpleasant to the taste."], "button up": ["Refuse to talk or stop talking.", "To fasten with a button or buttons.", "To fasten the buttons on a coat, or similar item of clothing."], "close up": ["To render passage impossible by physical obstruction.", "Refuse to talk or stop talking.", "To cease to operate or cause to cease operating (e.g. a business or a shop)."], "fall silent": ["Refuse to talk or stop talking."], "praseodymium": ["Chemical element with symbol Pr and atomic number 59, silvery white lanthanide."], "heron": ["A long-legged, long-necked wading bird of the family Ardeidae."], "hers": ["That which belongs to her; the possessive case of she, used without a following noun."], "him": ["He, when used after a preposition or as the object of a verb. 3rd person singular masculine object pronoun."], "his": ["Belonging to him."], "knot": ["A loop of string or any other long flexible material which cannot be untied without pulling part of the string through the loops.", "A unit of speed, equal to one nautical mile per hour.", "To tie with knots."], "scientist": ["Expert in at least one area of science who uses the scientific method to do research."], "peer review": ["The process by which articles are chosen to be included in a refereed publication.", "A systematic examination of computer source code."], "genocide": ["The systematic murder of a certain people or race."], "sorry": ["An interjection expressing regret, remorse, or sorrow.", "Used as a request for someone to repeat something not heard or understood clearly."], "neuroanatomy": ["The study of the nervous system\u2019s structure."], "soma": ["The cell body of an axon.", "Leafless East Indian vine; its sour milky juice formerly used to make an intoxicating drink."], "matelot": ["A sailor of the lowest rank."], "high": ["Being elevated in position or status, a state of being above many things.", "Tall, lofty, at a great distance above the ground.", "Who is under the influence of a mood affecting drug.", "(Of a quantity or value) That is above the average, or above what is considered as normal."], "adolescence": ["Period of human life between childhood and adulthood."], "teenhood": ["Period of human life between childhood and adulthood."], "off": ["In a direction away from the speaker or object.", "Into a state of non-operation; into a state of non-existence.", "At a distance in space or time.", "To unlawfully and intentionally kill another human being."], "out": ["Outside of an enclosed space."], "salad": ["Any of a broad variety of dishes, consisting of (usually raw) chopped vegetables, most commonly including lettuce."], "shoelace": ["A lace used for fastening a shoe."], "fruit salad": ["A dessert (served in fruit juice) consisting of various raw, chopped fruits."], "feel": ["To become aware of through the skin; to use the sense of touch.", "To have a sensation of something without the use of touch, sight, hearing, smell, or taste.", "To be in some emotional state.", "An intuitive awareness.", "A property perceived by touch.", "To be felt or perceived in a certain way.", "To examine by touch."], "summary": ["A condensed presentation of the substance of a body of material.", "Regarding a process: That is performed in an expeditious manner without observing the course normally planned.", "Original draft made in an office of each order or communication issued."], "fit": ["Having sufficient or the required properties for a certain purpose or task; appropriate to the occasion.", "(Of an object) To be of the right size and shape so as to match another object.", "To be compatible, similar or consistent; coincide in their characteristics.", "To furnish with whatever is needed for use or for any undertaking.", "In good physical condition to perform a physical task, as a result of exercise.", "To test the look or fit of (a garment) by wearing it.", "To be agreeable or acceptable to.", "To satisfy a condition or restriction."], "help": ["Action given to provide assistance.", "A person or persons who provide assistance with some task.", "To give assistance or aid to.", "To be of use or help.", "To improve the condition of.", "To abstain from doing; always used with a negative."], "promethium": ["Chemical element with symbol Pm and atomic number 61, silvery white radioactive lanthanide."], "abbreviation": ["The form to which a word or phrase is reduced by contraction and omission."], "anathema": ["A ban or curse pronounced with religious solemnity by ecclesiastical authority, and accompanied by excommunication.", "Any person or thing anathematized, or cursed by ecclesiastical authority."], "move": ["To change the location of an object.", "To change house, to move themselves to an other room.", "(game) A player's turn to move a piece or take some other permitted action.", "To cause to move to a new place.", "To change one's domicile or place of business.", "To be in motion, to go from one place to another.", "To have an emotional or cognitive impact upon."], "shortly": ["In a near future."], "threat": ["An expression or declaration of intent to injure or punish another.", "A situation or a person who is regarded as a source of danger.", "An adversary who is capable and motivated to exploit a vulnerability. (Schneider)"], "menace": ["A situation or a person who is regarded as a source of danger.", "To put in danger."], "period": ["A period of time in history seen as a single coherent entity.", "The period in the menstrual cycle when the endometrium is shed when conception did not take place.", "A length of time."], "epoch": ["A period of time in history seen as a single coherent entity.", "A designated instant in time.", "Moment in history which is usually marked by some significant event."], "era": ["A period of time in history seen as a single coherent entity."], "retinue": ["A group of servants or attendants."], "corpse": ["A dead body."], "cadaver": ["A dead body.", "The physical structure of a dead animal or person."], "lunch": ["Meal usually eaten at midday."], "Indo-European": ["A major language family which includes many of the languages between Europe and India, with notable Indic, Iranian and European sub-branches."], "Romance": ["The group of languages which are derived from Latin.", "Of or dealing with languages or cultures derived from Roman influence and Latin.", "A branch of the Indo-European language family, comprised of all the languages that descend from Latin, the language of the Roman Empire."], "West Germanic": ["The largest branch of the Germanic family of languages and includes languages such as German, English and Dutch."], "North Germanic": ["A subgroup of the Germanic languages, spoken in the three Scandinavian countries (Denmark, Norway, and Sweden), the Faroe Islands and Iceland."], "parsley": ["A soft bright green, biennial herb with the name Petroselinum Crispum from the Apiaceae family. It is being used in European, North-American and Middle Eastern cooking."], "chives": ["A herbaceous perennial plant with the name allium schoenoprasum, part of the allium family; native to Northern Asia, Europe and North America. The leaves are used as a herb for cooking."], "onion": ["A plant of the genus Allium used as a vegetable and spice.", "The edible bulb of the onion plant which is used in many dishes."], "meet": ["To collect in one place, usually for a purpose.", "To come together with someone by accident.", "To get together socially or for a specific purpose at a given place and time.", "To satisfy or fulfill (e.g. a job or a need).", "To contend against an opponent in a sport, game, or battle.", "To satisfy a condition or restriction."], "member": ["The male sexual organ for copulation and urination; the tubular portion of the male genitalia (excluding the scrotum).", "One who officially belongs to a group.", "An arm or leg."], "Wikipedia": ["An open-content encyclopedia, collaboratively developed on the World Wide Web."], "roof": ["The structure covering a building.", "To cover with a roof."], "language isolate": ["A natural language with no demonstrable genetic relationship with other living languages."], "constructed language": ["A language of which the phonology, grammar and/or vocabulary has been specifically devised by an individual or small group."], "Uralic language": ["A language family which suggested Urheimat (homeland) is often placed close to the Ural mountains, which includes Estonian, Finnish and Hungarian."], "such": ["similar to this [Used to make a comparison with something implied by context.]", "[Used as an intensifier, with omission of an indication of comparison] So extreme a kind of."], "earring": ["A piece of jewelry worn on the ear.", "A ringformed piece of jewelry worn in the ear."], "breathe in": ["To draw air into the lungs."], "inhale": ["To draw air into the lungs."], "breathe out": ["To expel air from the lungs."], "hat": ["An item of clothing intended to cover the head made from material hard enough to have a shape independant of the skull, and most commonly with a rim."], "exhale": ["To expel air from the lungs."], "belt": ["A clothing accessory, usually made of leather or heavy cloth, worn around the waist and used to support trousers or other articles of clothing."], "umbrella": ["A portable, foldable, waterproof, bell-shaped device which is held above the head in order to be shielded from the rain.", "Large portable shelter used as protection from the sun on porches, in gardens or on the beach."], "repair": ["To change the state of an item (e.g. which was torn or broken) to a working condition again.", "To correct or amend something; set straight or right.", "The act of putting something in working order again."], "piano": ["A musical instrument, which produces sound through the vibrations of strings struck by felt hammers."], "pianoforte": ["A musical instrument, which produces sound through the vibrations of strings struck by felt hammers."], "clarinet": ["A musical instrument in the woodwind family."], "cabbage": ["An edible plant, Brassica oleracea, with many varieties."], "cauliflower": ["A variety of the cabbage (Brassica oleracea), of which the cluster of young flower stalks and buds is eaten as a vegetable."], "trumpet": ["A musical instrument in the brass family.", "A musician that plays the trumpet.", "To blow a trumpet.", "To emit a loud, trumpetlike sound."], "luggage": ["The bags and other containers that hold a traveller's belongings."], "baggage": ["The bags and other containers that hold a traveller's belongings."], "trunk": ["Storage compartment for luggage in a car.", "The nose of an elephant.", "The part of the body from the neck to the groin excluding the head and limbs."], "torso": ["The part of the body from the neck to the groin excluding the head and limbs."], "sufficient": ["All that is required, needed, or appropriate."], "tuba": ["The largest musical instrument of the low-brass family."], "trombone": ["A musical instrument in the brass family."], "Limburgian": ["A group of Franconian dialects spoken mainly in Belgian and Dutch Limburg."], "saxophone": ["A conical-bored musical instrument of the woodwind family."], "flute": ["A musical instrument of the woodwind family."], "bass clarinet": ["A musical instrument of the clarinet family. It plays notes an octave below the more common soprano B flat clarinet."], "contrabass clarinet": ["One of the largest members of the clarinet family. It plays notes two octaves lower than the more common soprano B flat clarinet."], "octave": ["The interval between one musical note and another with half or double the frequency."], "tempo": ["The speed or pace of a given musical piece."], "fix": ["To change the state of an item (e.g. which was torn or broken) to a working condition again.", "To prepare (a meal, a feast).", "To make something fixed or stable; to cause to be firmly attached.", "To take revenge on or get even."], "clef": ["A symbol used in musical notation that assigns the pitch of notes to lines and spaces on the musical staff."], "pitch": ["The perceived fundamental frequency of a musical note or sound.", "To be at an angle; to move downwards.", "An angle indicating the amount of rotation of an object around its longitudinal axis. For an airplane, it indicates whether its nose points up or down."], "videocassette recorder": ["A device that can record broadcast television programmes, or the images and sounds from a video camera for subsequent playback through a television set."], "VCR": ["A device that can record broadcast television programmes, or the images and sounds from a video camera for subsequent playback through a television set."], "audio": ["Sound that can be heard."], "attention": ["The process whereby a person concentrates on some features of the environment.", "Selective allocation of mental processing resources to one aspect of the environment.", "An action or remark expressing concern for or interest in someone or something."], "apparatus": ["A complex machine or instrument."], "magic": ["The art of entertaining an audience by performing illusions that baffle and amaze.", "The use of rituals or actions, especially based on supernatural or occult knowledge, to manipulate or obtain information about the natural world, especially when seen as falling outside the realm of religion; also the forces allegedly drawn on for such practices. A specific ritual or procedure associated with supernatural magic or with mysticism; a spell."], "part": ["A seperate unit of a larger whole.", "A separate melody within polyphonic music.", "To leave a person or a place.", "To create a gap between parts of a whole, thus creating two sections.", "In figurative sense a certain amount of a bigger whole.", "Something determined in relation to something that includes it.", "In part; in some degree; not wholly.", "A line dividing the hair on top of the head."], "swimming pool": ["A basin used for swimming."], "postcard": ["A rectangular piece of paper intended for mailing; it contains a picture on one side and a place for a message and a post stamp on the other side", "A rectangular piece of thick paper or thin cardboard intended to be written on and mailed without an envelope."], "only": ["Nothing more than.", "Singular; part of a relatively small number", "Without someone or something else.", "Without any others being included or involved.", "Having none other in a category."], "our": ["Belonging to us; of us"], "appointment": ["The arrangement for a meeting."], "shower": ["A brief fall of rain.", "An area in which one bathes underneath a spray of water.", "To bathe oneself using a shower.", "To bathe someone or something using a shower."], "feat": ["An action that requires great skills to be performed successfully."], "accomplishment": ["The capacity to do something well. They are usually acquired or learned, as opposed to abilities, which are often thought of as innate.", "An action that requires great skills to be performed successfully.", "That which is accomplished.", "Getting a result by exertion."], "defeat": ["An end to a struggle or contest that did not end in success.", "To end in success a struggle or contest."], "victory": ["An end to a struggle or contest that did end in success.", "A conclusive success following an effort, conflict, or confrontation of obstacles."], "protactinium": ["Chemical element with symbol Pa and atomic number 91. It is a silvery actinide."], "strong": ["Capable of producing great physical force.", "Having or wielding force or authority.", "Having a strong physiological or chemical effect.", "Of verbs not having standard (or regular) inflection."], "firing squad": ["A squad of soldiers or paramilitaries detailed to execute someone, usually by rifle shot."], "rifle": ["A firearm with a rifled barrel for improved accuracy.", "To add a spiral to the interior of a gun bore."], "shoot": ["To fire a bullet from a firearm.", "To kill a person or an animal with a shot from a firearm.", "To execute a condemned by firing squad.", "To give an injection to."], "straight on": ["Forward in a straight direction."], "arrange": ["To give structure to.", "To change to reach a certain scope or condition."], "this morning": ["In the morning of this day."], "sail": ["A vessel that is powered by the wind.", "A large piece of fabric (as canvas) by means of which wind is used to propel a sailing vessel.", "To traverse or travel by ship on a body of water.", "To travel in a boat propelled by wind."], "perfect": ["Without fault or shortcomings.", "Exactly suited for a person or purpose."], "plenty": ["A sufficient amount.", "Sufficiently or very.", "An overflowing fullness."], "people": ["A body of human beings considered generally or collectively; a group of two or more persons.", "A group of persons forming or belonging to a particular nation, class, ethnic group, country, family, etc.", "A cultural community connected by the same language and ancestory.", "The mass of a community as distinguished from a special class (elite).", "The mass of a community as distinguished from a special class (elite)."], "prize": ["Something of value given to the winner of a competition.", "Something of value given to the winner of a game of chance.", "Something taken by an attacker from the enemy.", "A ship or its contents captured at sea.", "Something worth striving for."], "unit of time": ["A measure of periods of time like second, hour, day, year or century."], "moonlight": ["The light reflected from the moon."], "Moonlight Sonata": ["Surname of the piano sonata No. 14 in C-sharp minor, Op. 27, No. 2 by Ludwig van Beethoven."], "underwrite": ["The process whereby a new issue of securities from an issuing corporation or government entity are bought to resell them to the public."], "underwriter": ["An investment firm that purchases a security directly from its issuer for resale or sells it for the issuer."], "schizophrenia": ["A group of psychiatric problems that can be categorized as a dopamine dysregulation disorder."], "ready": ["Prepared or in condition for immediate action or use.", "Mentally disposed."], "henry": ["The SI unit of inductance with symbol \"H\"."], "siemens": ["The SI derived unit of electric conductance, with symbol \"S\"."], "sievert": ["The SI derived unit that measures the radiation dose absorbed by living tissue, where the biological effects possibly produced have been corrected."], "katal": ["The SI unit of catalytic activity, with symbol \"kat\"."], "sex": ["Either of two main divisions (either male or female) into which many organisms can be placed, according to reproductive function or organs.", "The act of sexual intercourse."], "Los Angeles": ["The most populous city in the state of California and the second-most in the United States of America."], "City of Angels": ["The most populous city in the state of California and the second-most in the United States of America."], "Tehran": ["The largest city and capital of Iran."], "harangue": ["To give a forceful and lengthy lecture or criticism to another person."], "admonish": ["To give a forceful and lengthy lecture or criticism to another person.", "To scold or rebuke; to counsel in terms of someone's behavior.", "To warn strongly; put on guard.", "To take to task."], "berate": ["To give a forceful and lengthy lecture or criticism to another person."], "lecture": ["An address or form of oral communication in which a speaker makes his thoughts and emotions known before an audience, often for a given purpose.\\n(Source: RHW)", "To give a forceful and lengthy lecture or criticism to another person.", "A spoken lesson about a particular subject."], "beaker": ["A large cup used without a saucer."], "understanding": ["The ability to think about something and use concepts to be able to deal adequately with this.", "The cognitive condition of someone who understands."], "comprehension": ["The ability to think about something and use concepts to be able to deal adequately with this."], "almost": ["All, but not quite; slightly short of ; close to entirely.", "In such a way that it is very close to being something or happening."], "mug": ["A large cup usually with a handle and used without a saucer.", "A person who is gullible and easy to take advantage of."], "extreme": ["Far beyond the norm."], "block": ["A tool, consisting of a set of wheels around which a rope is led, meant to lift or move a load more lightly.", "A chopped piece of wood, usually small enough to put on a fire.", "To render passage impossible by physical obstruction.", "An educational unit, such as a set of courses.", "To use one's influence or rights to prevent something from being done.", "A building or set of buildings, surrounded on all sides by relatively wide streets in a roughly square or rectangular manner.", "A compact piece of substantial material, usually solid, especially when to be further processed and worked upon.", "A sector or group of sectors that function as the smallest data unit permitted to be operated on.", "A metal casting containing the cylinders and cooling ducts of an engine.", "An obstruction in a pipe or tube.", "To be unable to remember.", "Polyhedron with six rectangular faces.", "To impede the movement of (an opponent or a ball)."], "genuine": ["Free of forgery or counterfeiting.", "Being or reflecting the essential or genuine character of something."], "authentic": ["Free of forgery or counterfeiting."], "veto": ["To use one's influence or rights to prevent something from being done.", "To tell not to do something."], "past": ["The period of time that has already happened.", "Having taken place or existed in the past."], "stranger": ["Someone who is not known."], "radium": ["Chemical element with symbol Ra and atomic number 88, silvery white alkaline earth metal."], "slice of bread": ["A slice cut of from a bread."], "pen": ["A utensil, usually tubular in form, containing ink used to write or make marks.", "An enclosure for confining livestock.", "Female swan.", "A portable piece of furniture in which an infant or young child is confined for safety reasons."], "jogging": ["The practice of running at the pace of a jog for exercise."], "sunrise": ["The ascent of the sun above the eastern horizon in the morning."], "sunup": ["The ascent of the sun above the eastern horizon in the morning."], "sunset": ["The descent of the sun below the western horizon in the evening."], "sundown": ["The descent of the sun below the western horizon in the evening."], "captain": ["The person lawfully in command of a sea-going vessel."], "pie": ["A quantity of meat, fruit, or other food baked within or under a crust of prepared pastry."], "trout": ["Fresh water salmon."], "currency": ["A unit of exchange (such as money) used to facilitate transactions."], "hut": ["A simple roofed shelter, often with one open side.", "A small crude shelter used as a dwelling."], "certificate": ["An award offered to recognize the work performed and skills or learning acquired."], "enthusiasm": ["A lively interest for something.", "A feeling of excitement."], "Slavic language": ["One of the closely related languages of the Slavic peoples and a subgroup of Indo-European languages, having speakers in most of Eastern Europe, in much of the Balkans, in parts of Central Europe, and in the northern part of Asia."], "piece of furniture": ["A movable article in a room designed to support human activities, for example a bed or a table."], "yearning": ["A deep and aching desire for someone or something.", "Full of yearning.", "Ardent desire or craving."], "longing": ["A deep and aching desire for someone or something."], "trophy": ["A memento for a specific accomplishment."], "princess": ["The daughter of a king, queen, emperor, empress, prince, or princess."], "transparent": ["Where light can pass through, so one can clearly see through it."], "suddenly": ["In a sudden and unexpected way."], "dandy": ["An excessively conceited man."], "don": ["The head of an organized crime family.", "To move or place (anything) so as to get it into or out of a specific location or position."], "God": ["The Superior Being, the Creator, the Spirit because of which and in whom everything is, as He is being named by monotheists, mostly Jews and Christians."], "against": ["On the opposing side to.", "In opposition of something."], "shrapnel": ["The metal fragments and debris thrown out by any exploding object."], "nipple": ["The projection of a mammary gland from which, on female mammals, milk can be secreted."], "testicle": ["The male sex gland that produces sperm and male hormones, found in some types of animals."], "pancreas": ["An organ in the digestive and endocrine system that serves the functions of exocrine and endocrine."], "jaw": ["Either of the two opposable structures forming, or near the entrance to, the mouth."], "thyroid": ["A large endocrine gland present in all vertebrates and located in the neck of humans."], "strike": ["In bowling, the act of knocking down all ten pins in on the first roll of a frame.", "A collective stopping of work.", "An old English measure of corn equal to the bushel.", "To collectively stop working.", "To hit or come into contact against something.", "To deliver a sharp blow, as with the hand, fist, or weapon.", "To have an emotional or cognitive impact upon.", "To make a strategic, offensive, assault against an enemy, opponent, or a target.", "To touch or seem as if touching visually or audibly.", "To affect or afflict suddenly, usually adversely (e.g. of bad weather or illness)."], "wrist": ["The flexible and narrower connection between the forearm and the hand."], "thigh": ["The area between the pelvis and buttocks and the knee."], "pelvis": ["The bony structure found in most vertebrates located at the base of the spine."], "rib": ["One of the long curved bones which form the rib cage.", "Architectural element consisting of a side of stone placed in support of a vault or a dome."], "Adam's apple": ["A lump at the front of the neck."], "laryngeal prominence": ["A lump at the front of the neck."], "scrotum": ["A bag of skin and muscle containing the testicles."], "ankle": ["A joint formed where the foot and the leg meet."], "talocrural joint": ["A joint formed where the foot and the leg meet."], "uterus": ["The major female reproductive organ of most mammals, including humans. It is a large muscle enveloping the phoetus during pregnancy."], "womb": ["The major female reproductive organ of most mammals, including humans. It is a large muscle enveloping the phoetus during pregnancy."], "rhenium": ["Chemical element with symbol Re and atomic number 75, grayish white transition metal."], "spine": ["The body part that consists of a row of vertebrae, that support the head and torso and that forms a canal for nerves."], "race": ["Sport contest of speed.", "To cause (something or someone) to move in an unusually fast pace.", "Competition when someone is running one against others.", "To move fast."], "blanket": ["A large cloth used for warmth and for sleeping.", "Anything that covers or conceals something else.", "Broad in scope or content; affecting every part of a situation."], "skilled": ["Experienced and clever, profesional."], "sweetheart": ["Someone that one loves."], "syndrome": ["A collection of symptoms that characterize a specific disease or condition."], "Baltic language": ["A language belonging to the Indo-European language family and spoken mainly in areas extending east and southeast of the Baltic Sea."], "farrow": ["A litter of piglets", "To give birth to a litter of piglets."], "violin": ["A musical instrument of the strings family with four strings tuned in perfect fifths."], "viola": ["A stringed musical instrument played with a bow which serves as the middle voice of the violin family.", "Plant belonging to the genus Viola."], "cello": ["A stringed musical instrument and a member of the violin family."], "violoncello": ["A stringed musical instrument and a member of the violin family."], "guitar": ["A fretted and stringed musical instrument."], "electric guitar": ["A type of guitar that uses electromagnetic pickups to convert the vibration of its steel-cored strings into electrical signals."], "lute": ["A plucked string instrument with a fretted neck and a deep round back."], "balalaika": ["A stringed instrument of Russian origin, with a characteristic triangular body and three strings."], "rhodium": ["Chemical element with symbol Rh and atomic number 45, silvery white transition metal."], "labour dispute": ["Conflict between employer and employee."], "bit": ["Mouthpiece to assist the guiding of a horse.", "Small quantity.", "A small fragment of something broken off from the whole.", "A unit of measurement of information; the amount of information in a system having two equiprobable states.", "A small amount of solid food; a mouthful."], "ersatz": ["Something made in imitation; typically of an inferior quality."], "for example": ["As an example. [Used to introduce an example or list of examples.]"], "trousers": ["An item of clothing worn on the lower part of the body and covering both legs separately."], "malicious": ["Characterized by malice."], "nasty": ["Characterized by malice.", "Causing a sensation as of things crawling on your skin."], "spiteful": ["Characterized by malice."], "sink": ["To fall or drop to a lower place or level.", "A bowl for washing hands, dishwashing or other purposes, often affixed to a wall.", "To cause a boat to go down in the water.", "A natural depression or hole in the surface topography caused by the chemical dissolution of carbonate rocks.", "To fall heavily or suddenly; decline markedly.", "To go under, as of a boat."], "kitchen sink": ["A sink in a kitchen.", "A way of indicating that possibly everything is included."], "lid": ["Top or cover of a container."], "locust": ["Migratory grasshoppers of the order Orthoptera of warm regions having short antennae."], "booth": ["A stall, or light structure for the sale of goods or for display purposes, as at a market, exhibition, or fair."], "stall": ["A stall, or light structure for the sale of goods or for display purposes, as at a market, exhibition, or fair."], "notary": ["Someone who can administer oaths and statutory declarations, witness and authenticate documents and perform certain other acts varying from jurisdiction to jurisdiction."], "soul": ["In philosophical or religious belief the immaterial and immortal part of a human being which lives on after death.", "The entirety of thought, feeling and emotion in a human being."], "passport": ["A gouvernment issued proof of identity, with which one is allowed to cross a nation's borders."], "trench": ["A type of ditch used in warfare."], "machine gun": ["A firearm that fires bullets in rapid succession while the firing mechanism is activated."], "ping": ["A packet which a remote host is expected to echo, thus indicating its presence."], "neologism": ["A word or phrase which has recently been coined."], "posterity": ["All future generations.", "All of the offspring of a given progenitor."], "preference": ["A greater interest or desirability in somebody/something than other things.", "Something that is liked more than other things, something that is preferred.", "A certain way software, a webpage or an electronic device reacts, displays certain information or activates certain functions as selected by the user (note: usually plural)."], "quote": ["A passage or expression that is quoted or cited.", "To repeat the exact words of a person as they were said or written.", "Price information that allows a prospective buyer to see what costs would be involved for the work they would like to have done or the product they would like to buy."], "quotation": ["A passage or expression that is quoted or cited.", "A short note recognizing a source of information or of a quoted passage.", "A statement of the current market price of a security or commodity."], "citation": ["A passage or expression that is quoted or cited.", "A short note recognizing a source of information or of a quoted passage."], "basically": ["By one's or its very nature.", "In a fundamental, essential or basic manner."], "essentially": ["By one's or its very nature.", "In a fundamental, essential or basic manner."], "malice": ["The intention to do injury to another party."], "ethnic cleansing": ["A purposeful policy designed by one ethnic or religious group to remove by violent and terror-inspiring means the civilian population of another ethnic or religious group from certain geographic areas."], "rob": ["To illegally take something from, especially using force or violence.", "To deprive of something valuable by force.", "To ask an unreasonable price."], "slave": ["A person who is owned and forced to work, usually without pay, by another."], "ballerina": ["A female ballet dancer."], "gallon": ["A unit of volume equal to about 3.79 litres in the United States and 4.55 litres in the United Kingdom."], "lawyer": ["A professional person who advises or represents others in legal matters as a profession."], "endowment": ["Money received of which only the interest earned on it may be spent.", "A talent or quality which is or seems innate or natural."], "donation": ["A voluntary gift or contribution for a specific cause.", "Money, which is given away."], "mathematics": ["The science that deals with concepts such as quantity, structure, space and change."], "calculus": ["A central branch of mathematics, which relies critically on the concept of limits.", "A form of hardened dental plaque."], "algebra": ["A branch of mathematics concerning the study of structure, relation and quantity."], "roentgenium": ["Chemical element with symbol Rg and atomic number 111, transition metal."], "overhaul": ["A major repair, renovation, or revision.", "To modernize, repair, renovate, or revise completely.", "To travel past another road user."], "overtake": ["To travel past another road user.", "To catch up with and possibly overtake (e.g. cars in a race)."], "pass": ["To cease to live.", "To travel past another road user.", "To obtain the formal sanction of, as a legislative body.", "To go through any inspection or test successfully.", "Of time, to elapse, to be spent.", "To pass time in a specific way.", "Act of sending the ball or puck to a player of the same team.", "To send the ball or puck to a player of the same team."], "traffic light": ["A signaling device to control the flow of traffic."], "liquorice": ["A usually black sweet, made of an extract of licorice."], "produce": ["To create something by combining or assembling materials or parts or by changing it.", "To sponsor and present (a motion picture) to an audience or to the public.", "To come to have or undergo a change of physical features or attributes.", "To make something happen."], "United Nations Secretary-General": ["The head of the United Nations Secretariat."], "clothe": ["To put clothes on something or somebody.", "To clothe oneself; to put on clothes."], "geometry": ["One of the two fields of pre-modern mathematics, dealing with spatial relationships."], "trigonometry": ["A branch of mathematics dealing with the purely arithmetic relations between specific geometric characteristics of right angled triangles."], "government": ["A body that has the authority to make and the power to enforce laws within a civil, corporate, religious, academic, or other organization or group."], "physical education": ["A school course which teaches physical skills to pupils."], "PE": ["A school course which teaches physical skills to pupils."], "gym": ["A school course which teaches physical skills to pupils.", "A building that is designed for indoor sports.", "A large room designed for indoor sports."], "cinematography": ["The discipline of making lighting and camera choices when recording photographic images for the cinema."], "journalism": ["The discipline of collecting, analyzing, verifying, and presenting news regarding current events, trends, issues and people."], "nazism": ["The ideology of the German Nazi Party under Adolf Hitler."], "National Socialism": ["The ideology of the German Nazi Party under Adolf Hitler."], "fascism": ["A political ideology usually characterised by a very high degree of nationalism, economic corporatism, a powerful, dictatorial leader who portrays the nation, state or collective as superior to the individuals or groups composing it."], "communism": ["A political ideology that seeks to establish a future classless, stateless social organization, based upon common ownership of the means of production."], "bid": ["Availability to sell goods or services for a certain price and under certain conditions.", "To top the standing bid at an auction.", "An offer or proposal for goods and/or services submitted in response to a government agency\u2019s invitation.", "To invoke upon (e.g. farewell, a nice evening, etc.)."], "microcredit": ["The extension of very small loans to those who are generally considered not to be bankable."], "lexicology": ["A speciality in linguistics dealing with the study of the lexicon, i.e. the words and phrases in a language."], "divot": ["A torn up piece of turf."], "fatalism": ["The doctrine that all things are subject to fate, or that they take place by inevitable necessity."], "ruthenium": ["Chemical element with symbol Ru and atomic number 44, silvery white transition metal."], "half": ["One of the two equal parts of a whole.", "Consisting of a half (1/2, 50%) of."], "calculator": ["An electronic device that performs mathematical calculations.", "An expert at calculation"], "popular": ["Beloved or approved by the people.", "Of the people."], "remove": ["To take something away.", "To unlawfully and intentionally kill another human being.", "To move something from one place to another, especially to take away.", "To take (an article of clothing) away from one's body."], "donor": ["Someone who donates."], "benefactor": ["Someone who donates."], "accredit": ["To give credit for.", "To ascribe an achievement to."], "hardboard": ["Building material of boards of pressed fibres."], "occurrence": ["Something that happens or has happened."], "willow": ["Any of various deciduous trees or shrubs in the genus Salix."], "dachshund": ["A breed of dog having short legs and a long trunk."], "ceiling": ["An overhead surface that bounds the upper limit of a living space."], "lamb": ["Young sheep.", "(Of a sheep) To give birth.", "The flesh of a lamb used as food."], "snack": ["A small meal.", "To eat small things in between meals."], "symphony": ["An extended composition usually for orchestra and usually comprising four movements."], "opera": ["An art form consisting of a dramatic stage performance set to music.", "A building designed for the performance of opera works.", "A single work of the art form opera.", "A company dedicated to performing operas.", "That that has been made; a product produced or accomplished through the effort or activity or agency of a person or thing."], "opium den": ["A place where opium is smoked."], "opera house": ["A building designed for the performance of opera works."], "formal": ["Being in accord with established forms and conventions and requirements.", "(Of spoken and written language) Adhering to traditional standards of correctness and without casual, contracted, and colloquial forms.", "Characteristic of or befitting a person in authority."], "informal": ["Not in accord with the usual regulations."], "nationalism": ["An ideology that holds that a nation is the fundamental unit for human social life, and takes precedence over any other social and political principles."], "authoritarianism": ["A form of government characterized by strict obedience to authority, usually by oppressive measures.", "The rule of a despot."], "totalitarianism": ["A form of government which regulates nearly every aspect of public and private behavior."], "dictatorship": ["An autocratic form of government which is ruled by a dictator.", "The rule of a despot."], "dictator": ["An absolute ruler with unbounded power."], "nightclub": ["An entertainment venue which does its primary business after dark.", "Drinking, dancing, and entertainment venue which does its primary business after dark."], "rush": ["To move or do something at a fast pace.", "To cause (something or someone) to move in an unusually fast pace.", "To move fast.", "To do something quickly."], "soviet democracy": ["A form of democracy in which workers elect representatives in the organs of power called soviets."], "direct democracy": ["A form of democracy where an assembly of citizens can control government policies and actions."], "participatory democracy": ["A form of democracy which stresses the involvement of constituents in the direction and operation of political systems."], "representative democracy": ["A form of democracy founded on the exercise of popular sovereignty by the people's representatives."], "social democracy": ["A form of democracy aimed to reform the capital system in order to remove its perceived injustices and to bring about a more equal distribution of wealth."], "federalism": ["A system of government in which power is divided between a central government and local governments (e.g. states and provinces)."], "tyrrany": ["A regime in which absolute power is held one individual, called a tyrant."], "matriarchy": ["A form of society in which power is with the women and especially with the mothers of a community."], "patriarchy": ["The sociological condition where fathers have supreme authority within families and male members of a society tend to predominate in positions of power."], "French fries": ["A dish of fried strips of potatoes."], "reticent": ["Keeping one's thoughts and opinions to oneself."], "restrained": ["Keeping one's thoughts and opinions to oneself."], "reserved": ["Keeping one's thoughts and opinions to oneself."], "poplar": ["Any of various deciduous trees of the genus Populus."], "rutherfordium": ["Chemical element with symbol Rf and atomic number 104, assumedly a grey or silvery transition metal."], "how many": ["Which quantity?"], "wizard": ["A person who practices magic or sorcery.", "A man who performs witchcraft; performer of the black arts."], "sorcerer": ["A person who practices magic or sorcery.", "A man who performs witchcraft; performer of the black arts."], "magician": ["A person who practices magic or sorcery.", "Someone who performs magic tricks to amuse an audience."], "tense": ["Showing signs of stress or strain; not relaxed.", "The grammatical construct of the time in which a sentence acts.", "To cause to be tense and uneasy or nervous or anxious.", "To become stretched or tense or taut."], "broadcast": ["To send data over the airwaves, as in radio or television.", "A performance of a show or other broadcast on radio or television.", "A transmission of a radio or television programme.", "To cause to become widely known."], "transmit": ["To carry, particularly to a particular destination.", "To send data over the airwaves, as in radio or television.", "To spread or pass on something such as a disease or a signal.", "To communicate news or information.", "To convey energy or force through a mechanism."], "send": ["To make something (an object, a message) go from one place to another."], "ventilate": ["To expose to fresh air.", "To expose to the circulation of fresh air so as to retard spoilage.", "To give expression or utterance to.", "To expose to cool or cold air so as to cool or freshen."], "witch": ["A female person who uses magic.", "A woman who has evil magic powers.", "To cast a spell on someone or something."], "solution": ["The conclusion or end to which any course or condition of things leads.", "The successful act or process of explaining or proposing an approach to solving a problem.", "A homogeneous mixture, which may be liquid, gas or solid, formed by dissolving one or more substances.", "Satisfaction of a claim or debt."], "awake": ["To stop sleeping.", "To make someone stop sleeping.", "Not sleeping.", "Able to use one's senses and mental abilities to perceive one's surroundings and understand the current situation."], "ar": ["Area measure, 1 square decametre or 1 dam\u00b2 or 100 m\u00b2"], "sphere": ["Round three-dimensional body whose surface has at each point the same distance from the center.", "A particular environment or walk of life."], "domain": ["A particular environment or walk of life.", "The defined framework in which one carries out his tasks.", "Land that is controlled by a specific country or ruler.", "The highest taxonomic category of organisms, higher than a kingdom.", "In mathematics, the set of values for which a function is defined.", "A geographic area owned or controlled by a single person or organization.", "A group of related subjects.", "An open and connected set in some topology.", "A group of computers and devices on the internet that share a common element of their IP address (such as .org or .omegawiki.org).", "A group of computers on the Internet or other network which are under the control of a particular organization or individual.", "A region within a magnetic material that has uniform magnetization.", "In the classification of organisms, the taxonomic rank above kingdom.", "In the three-domain system, one of three taxa at the rank of domain: Bacteria, Archaea, or Eukaryota.", "A folded section of a protein molecule that has a discrete function."], "arena": ["A particular environment or walk of life.", "A large structure for open-air sports or entertainments."], "contributor": ["Someone who donates."], "migrant": ["A man who moves from one region or country to another.", "A woman who moves from one region or country to another.", "Person who moves from one region or country to another."], "infertile": ["Not yielding much.", "Unable to reproduce."], "fortify": ["To prepare oneself for a military confrontation.", "Make strong or stronger.", "Enclose by or as if by a fortification.", "To add nutrients to.", "Add alcohol to (beverages)"], "gird": ["To prepare oneself for a military confrontation."], "Kafkaesque": ["In the manner of the literary works by Franz Kafka.", "Marked by bizarreness and a sense of impending danger."], "crowd": ["A large number of people united for some specific purpose.", "A crowd of people pressed close together in a small space.", "6-string musical instrument of Welsh or Irish origin and played with a bow.", "A large group of people.", "To cause to herd, drive, or crowd together.", "To fill or occupy in a small space to the point of overflowing.", "To gather together in large numbers."], "Orwellian": ["Pertaining to or characteristic of the literary work of George Orwell, especially the dystopian novel Nineteen Eighty-Four and his picture of a future totalitarian state."], "arrive": ["To come to a destination.", "To succeed in a big way; to get to the top."], "beer parlour": ["A business licensed to sell intoxicating beverages for consumption on the premises, or the premises themselves"], "equally": ["To the same extent or degree."], "every bit": ["To the same extent or degree."], "climbing plant": ["A plant that lacks rigidity and grows upwards by twining, scrambling, or clinging with tendrils and suckers."], "att": ["A subdivision of the Laotian kip, 100 att=1 kip."], "aunty": ["A woman with one or more siblings who have one or more children; a sister of someone's father or mother."], "auntie": ["A woman with one or more siblings who have one or more children; a sister of someone's father or mother."], "marshal": ["A military officer of the highest rank."], "endorse": ["To give support or one's approval to; to be behind; to approve of.", "To be in favour of or be behind; to approve of."], "indorse": ["To give support or one's approval to; to be behind; to approve of."], "trait": ["Characteristic quality of a being or thing."], "nuclear power": ["A state which possesses nuclear weapons."], "badly": ["With great intensity."], "immoral": ["Characterized by wickedness or immorality.", "Not adhering to ethical or moral principles."], "bestow": ["To apply a quality on (a person)."], "trademark": ["A word or mark that distinctly indicates the ownership of a product or service, and that is legally reserved for the exclusive use of that owner."], "Marxism": ["A philosophy and social theory stating that the class in control of the economy is also in control of politics."], "carpet": ["A fabric used as a floor covering."], "old bag": ["An ugly or ill-tempered woman."], "cup of tea": ["An activity that one likes or at which one is superior."], "handbag": ["A object used for carrying money and small personal items or accessories (especially by women)."], "nut": ["Device that can be screwed on a bolt.", "The male sex gland that produces sperm and male hormones, found in some types of animals.", "A hard-shelled seed."], "testis": ["The male sex gland that produces sperm and male hormones, found in some types of animals."], "orchis": ["The male sex gland that produces sperm and male hormones, found in some types of animals."], "ballock": ["The male sex gland that produces sperm and male hormones, found in some types of animals."], "bollock": ["The male sex gland that produces sperm and male hormones, found in some types of animals."], "clod": ["A compact mass."], "glob": ["A compact mass."], "lump": ["A compact mass."], "clump": ["A compact mass."], "chunk": ["A compact mass."], "roll": ["To tip laterally.", "A flight maneuver; the aircraft tips laterally about its longitudinal axis (especially in turning).", "To flatten or spread with a roller.", "To arrange or coil around.", "To begin operating or running.", "To move by turning over or rotating.", "To shape (e.g. a cigarette) by rolling."], "trust": ["To have confidence or faith in.", "A group of organisations in an industry which agree on maintaining high prices and effectively killing competition.", "To confer a trust upon."], "swear": ["To have confidence or faith in.", "To take an oath.", "To use offensive language.", "To make a deposition; to declare under oath.", "To declare or affirm solemnly and formally as true."], "rely": ["To have confidence or faith in."], "build up": ["To prepare oneself for a military confrontation."], "tolerate": ["To have a tolerance for.", "To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly.", "To allow the presence of or allow without opposing or prohibiting."], "raccoon": ["(Procyon lotor) An omnivorous nocturnal mammal native to North America and Central America."], "Svalbard": ["An archipelago lying in the Arctic Ocean north of mainland Europe, about midway between Norway and the North Pole."], "Union of Soviet Socialist Republics": ["The constitutionally socialist state that existed in Eurasia from 1922 to 1991."], "Soviet Union": ["The constitutionally socialist state that existed in Eurasia from 1922 to 1991."], "USSR": ["The constitutionally socialist state that existed in Eurasia from 1922 to 1991."], "autonomous oblast": ["An autonomous entity within the state which is on the oblast (province) level of the overall administrative subdivision."], "rampart": ["An embankment built around a space for defensive purposes."], "AO": ["An autonomous entity within the state which is on the oblast (province) level of the overall administrative subdivision."], "bulwark": ["An embankment built around a space for defensive purposes.", "A fence-like structure around the deck of a vessel, to protect it from the waves."], "schoolbag": ["A bag for carrying school supplies and textbooks."], "account": ["To account; to esteem; to think; to judge; to hold in opinion; to regard. (Source Webster 1913)", "A formal contractual relationship established to provide for regular banking or brokerage or business services.", "To keep an account of.", "The whole of procedures and bookings to register the active and passive economical operations.", "To give an account or representation in words.", "To have as an opinion."], "ununoctium": ["The temporary name for a synthetic superheavy element in the periodic table with symbol Uuo and atomic number 118."], "rafter": ["One of several parallel sloping beams that extend from the ridge to the wall-plate, to support the roof and its associated loads; the sloping top member of a roof truss, which carries the purlins."], "malt": ["A cereal grain that is kiln-dried after having been germinated by soaking in water; used especially in brewing and distilling.", "A milkshake made with malt powder.", "A lager of high alcohol content; by law it is considered too alcoholic to be sold as lager or beer."], "Bosnia and Herzegovina": ["A country on the Balkan peninsula of southern Europe whose capital is Sarajevo."], "Serbia and Montenegro": ["The confederated union of Serbia and Montenegro, which existed between 2003 and 2006."], "Austria-Hungary": ["A dual-monarchic union state in Central Europe from 1867 to 1918, dissolved at the end of World War I."], "hops": ["Twining perennials having cordate leaves and flowers arranged in conelike spikes.", "The dried flowers of the plant with the same name; used in brewing to add the characteristic bitter taste to beer."], "beginning": ["The beginning of an activity or event.", "The place where something begins, where it springs into being."], "commencement": ["The beginning of an activity or event."], "among": ["In the location or interval between two or among more objects, sides.", "At somebody's home.", "[Denotes a mingling or intermixing with distinct or separable objects.]"], "translator": ["A person who translates written text from one language to another."], "unethical": ["Not adhering to ethical or moral principles."], "meanspirited": ["Having or showing an ignoble lack of honor or morality."], "interpreter": ["Someone who mediates between speakers of different languages.", "A program which executes another program written in a programming language other than machine code."], "base of operations": ["An installation from which a military force initiates operations."], "establish": ["To use as a basis for.", "To give a proof that something is true.", "To prove and cause to be accepted as true.", "To set up or lay the groundwork for.", "To set up or found; to begin something, to undertake a plan, to give life to an institution, enterprise, etc.", "To determine something in a firm way, durably.", "To build or establish something abstract.", "To place.", "To institute or enact (e.g. laws).", "To bring about (e.g. depth in a picture)."], "found": ["To use as a basis for.", "To start some type of organization, company, city, etc.", "To set up or lay the groundwork for.", "To build the foundations of a construction.", "To set up or found; to begin something, to undertake a plan, to give life to an institution, enterprise, etc."], "free-base": ["To use purified cocaine by burning it and inhaling the fumes."], "groundwork": ["The lowest support of a structure.", "Work preparing or laying the ground for something that is planned to come later.", "The fundamental assumptions from which something is begun or developed or calculated or explained."], "substructure": ["The lowest support of a structure."], "understructure": ["The lowest support of a structure."], "university": ["An institution of higher education and of research, which grants academic degrees."], "handbasket": ["A lightweight container, generally round, open at the top, and tapering toward the bottom."], "bathe": ["Submerging of the body into water either for washing or for recreation.", "To immerse oneself in a liquid.", "To clean oneself by immersion in water."], "bathing tub": ["A tub or pool which is used for bathing."], "tub": ["A tub or pool which is used for bathing."], "faculty": ["A division of a university.", "Power, means or right to do something."], "john": ["A room or building equipped with one or more toilets.", "Male client of a prostitute."], "lav": ["A room or building equipped with one or more toilets."], "bean plant": ["Any of various leguminous plants grown for their edible seeds and pods."], "digest": ["To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly.", "To convert food into absorbable substances for the body.", "To arrange and integrate in the mind.", "To make more concise (e.g. the contents of a book or an article)."], "endure": ["To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly.", "To endure, continue over time."], "stick out": ["To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly.", "To extend out or project in space."], "support": ["To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly.", "To help, particularly financially.", "To keep from falling.", "Moral support, protection and aid.", "Aid, above all financial.", "Any device that bears the weight of another thing.", "To be in favour of or be behind; to approve of.", "To be the physical support of; carry the weight of.", "To establish or strengthen with new evidence or facts.", "To believe or agree with a theory or an idea."], "abide": ["To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly."], "suffer": ["To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly.", "To physically feel a damage, a pain, a disease or a punishment.", "To experience or suffer an injury, a disease, etc."], "user": ["Someone who uses an object, an application, a process or a service.", "A drugs addict, someone using drugs."], "drugs addict": ["A drugs addict, someone using drugs."], "volume": ["The magnitude of the physiological sensation produced by a sound, which varies directly with the physical intensity of sound but also depends on frequency of sound and waveform.", "Part of a larger published work.", "The amount of threedimensional space occupied by an object."], "omasum": ["A compartment of the stomach in ruminants."], "manyplies": ["A compartment of the stomach in ruminants."], "rumen": ["Larger part of the reticulorumen, which is the first chamber in the alimentary canal of ruminant animals."], "fardingbag": ["Larger part of the reticulorumen, which is the first chamber in the alimentary canal of ruminant animals."], "paunch": ["Larger part of the reticulorumen, which is the first chamber in the alimentary canal of ruminant animals.", "A protruding abdomen of an animal or human."], "samarium": ["Chemical element with symbol Sm and atomic number 62, silvery white lanthanide."], "sleeping room": ["A room in a house (usually containing at least a bed and a wardrobe) where a person sleeps."], "chamber": ["A room in a house (usually containing at least a bed and a wardrobe) where a person sleeps."], "bedchamber": ["A room in a house (usually containing at least a bed and a wardrobe) where a person sleeps."], "earlier": ["At a time before that."], "ahead": ["In front of in space"], "in front": ["In front of in space"], "get down": ["To take the first step or steps in carrying out an action."], "get": ["To come to a destination.", "To get or obtain an item; to come into the possession of something.", "To take the first step or steps in carrying out an action.", "To experience or suffer an injury, a disease, etc.", "To acquire or catch (a disease, something noxious, bad condition).", "To achieve (a point, a goal, an honor, etc.).", "To go through (mental or physical states or experiences).", "To take revenge on or get even.", "To succeed in catching or seizing, especially after a chase.", "To come to have or undergo a change of physical features or attributes.", "To attract and fix (e.g. someone or his/her eyes).", "To reach (e.g. an arithmetic result) by calculation.", "To purchase.", "To perceive by hearing.", "To receive as a retribution or punishment.", "To reach and board.", "To irritate.", "To apprehend and reproduce accurately.", "To go or come after and bring or take back.", "To reach with a blow or hit in a particular spot."], "start out": ["To take the first step or steps in carrying out an action."], "set about": ["To take the first step or steps in carrying out an action.", "To begin to deal with, e.g., a task, a problem, etc."], "set out": ["To take the first step or steps in carrying out an action."], "commence": ["To take the first step or steps in carrying out an action.", "To set in motion, cause to start."], "lead off": ["To set in motion, cause to start."], "comport": ["Act in a polite or proper way."], "buttocks": ["The fleshy part of the human body that one sits on."], "nates": ["The fleshy part of the human body that one sits on."], "arse": ["The fleshy part of the human body that one sits on.", "An insulting exclamation directed at a vile, stupid or a worthless person."], "butt": ["The fleshy part of the human body that one sits on.", "The unsmoked part of a cigarette or cigar."], "backside": ["The fleshy part of the human body that one sits on."], "bum": ["The fleshy part of the human body that one sits on.", "A person abandoned by society, esp. a person without a permanent home and means of support.", "Of very poor quality.", "A person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne, having a specifically obscene and offensive way to express oneself. Someone bumming about in the city not having an acceptable or decent place to stay or for living or housing.", "A female person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne, having a specifically obscene and offensive way to express herself. A female bumming about in the city not having an acceptable or decent place to stay or for living or housing.", "A male person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne; one having a specifically obscene and offensive way to express himself. A male bumming about in the city not having an acceptable or decent place to stay or for living or housing."], "buns": ["The fleshy part of the human body that one sits on."], "hindquarters": ["The fleshy part of the human body that one sits on."], "hind end": ["The fleshy part of the human body that one sits on."], "keister": ["The fleshy part of the human body that one sits on."], "posterior": ["The fleshy part of the human body that one sits on.", "Coming at a subsequent time or stage."], "prat": ["The fleshy part of the human body that one sits on."], "rear": ["The fleshy part of the human body that one sits on.", "To bring up to maturity, as offspring; to educate; to instruct; to foster."], "rear end": ["The fleshy part of the human body that one sits on."], "rump": ["The fleshy part of the human body that one sits on."], "stern": ["The fleshy part of the human body that one sits on.", "The rear part of a ship or a boat."], "tail end": ["The fleshy part of the human body that one sits on."], "tooshie": ["The fleshy part of the human body that one sits on."], "tush": ["The fleshy part of the human body that one sits on."], "derriere": ["The fleshy part of the human body that one sits on."], "fanny": ["The fleshy part of the human body that one sits on."], "ass": ["A domesticated animal, Equus asinus.", "A strongly disliked person who behaves disgustingly, underhandedly, or nastily, etc.", "The fleshy part of the human body that one sits on."], "doorbell": ["A push button at an outer door that gives a ringing or buzzing signal when pushed."], "buzzer": ["A push button at an outer door that gives a ringing or buzzing signal when pushed."], "toll": ["The sound of a bell being struck."], "in any case": ["Whatever the case may be"], "topper": ["The person who is most outstanding or excellent; someone who tops all others.", "Man's silk hat with high cylindrical crown."], "ace": ["The person who is most outstanding or excellent; someone who tops all others.", "A highly skilled person.", "A playing card with a single suit symbol located in the middle of the card."], "A-one": ["The person who is most outstanding or excellent; someone who tops all others."], "first-rate": ["The person who is most outstanding or excellent; someone who tops all others."], "super": ["The person who is most outstanding or excellent; someone who tops all others."], "tiptop": ["The person who is most outstanding or excellent; someone who tops all others."], "topnotch": ["The person who is most outstanding or excellent; someone who tops all others."], "tops": ["The person who is most outstanding or excellent; someone who tops all others."], "agnosticism": ["The view that the existence of any god is unknown at present."], "meliorate": ["To make better.", "To get better."], "amend": ["To make better.", "To correct or amend something; set straight or right."], "dame": ["A woman that is considered sexually attractive by a man, or many men."], "doll": ["A woman that is considered sexually attractive by a man, or many men.", "A model of a human, a humanoid, an animal or a fictional character, usually made of cloth or plastic."], "wench": ["A woman that is considered sexually attractive by a man, or many men."], "shuttlecock": ["Badminton equipment consisting of a ball of cork or rubber with a crown of feathers."], "birdie": ["Badminton equipment consisting of a ball of cork or rubber with a crown of feathers.", "A small bird."], "shuttle": ["Badminton equipment consisting of a ball of cork or rubber with a crown of feathers.", "Device used in weaving to carry the weft, moving continuously to-and-fro."], "nativity": ["The moment at which someone is being born."], "nascency": ["The moment at which someone is being born."], "nascence": ["The moment at which someone is being born."], "natal day": ["The date on which a person was born."], "flake": ["A small fragment of something broken off from the whole.", "A loose filmy mass or a thin chiplike layer of anything."], "fleck": ["A small fragment of something broken off from the whole.", "To make a spot or mark onto."], "scrap": ["A small fragment of something broken off from the whole."], "morsel": ["A small amount of solid food; a mouthful."], "chapter": ["A part of a book, a literary work etc. with a distinct content, set apart using typography."], "total darkness": ["The total absence of light."], "lightlessness": ["The total absence of light."], "blackness": ["The total absence of light."], "pitch blackness": ["The total absence of light."], "Black": ["A person with dark skin who comes from Africa (or whose ancestors came from Africa).", "An African-American male.", "The largest left tributary of the Amazon and the largest blackwater river in the world. It has its sources along the watershed between the Orinoco and the Amazon basins, and also connects with the Orinoco by way of the Casiquiare canal. In Colombia, where their sources are, it is called the Guain\u00eda River."], "Black person": ["A person with dark skin who comes from Africa (or whose ancestors came from Africa)."], "blackamoor": ["A person with dark skin who comes from Africa (or whose ancestors came from Africa)."], "Negro": ["A person with dark skin who comes from Africa (or whose ancestors came from Africa)."], "Negroid": ["A person with dark skin who comes from Africa (or whose ancestors came from Africa)."], "city block": ["A building or set of buildings, surrounded on all sides by relatively wide streets in a roughly square or rectangular manner."], "cube": ["A three-dimensional polyhedron, bounded by six square sides of equal size; one of the five Platonic solids"], "pulley-block": ["A tool, consisting of a set of wheels around which a rope is led, meant to lift or move a load more lightly."], "engine block": ["A metal casting containing the cylinders and cooling ducts of an engine."], "cylinder block": ["A metal casting containing the cylinders and cooling ducts of an engine."], "blockage": ["An obstruction in a pipe or tube."], "closure": ["An obstruction in a pipe or tube."], "occlusion": ["An obstruction in a pipe or tube."], "stoppage": ["An obstruction in a pipe or tube."], "obstruct": ["To render passage impossible by physical obstruction."], "obturate": ["To render passage impossible by physical obstruction."], "impede": ["To render passage impossible by physical obstruction."], "occlude": ["To render passage impossible by physical obstruction."], "jam": ["To render passage impossible by physical obstruction.", "A difficult situation.", "A crowd of people pressed close together in a small space.", "Preserve of crushed fruit.", "To press tightly together or cram."], "blank out": ["To be unable to remember."], "draw a blank": ["To be unable to remember."], "screwdriver": ["A hand tool used for driving screws.", "A drink made of vodka and orange juice."], "certainly": ["The expression of a positive affirmation.", "With certainty."], "lineage": ["The descendants of one individual."], "line of descent": ["The descendants of one individual."], "descent": ["The descendants of one individual.", "A downward slope or bend.", "A sudden decline in strength or number or importance.", "A movement downward."], "bloodline": ["The descendants of one individual."], "blood line": ["The descendants of one individual."], "pedigree": ["The line of descent of a pure-bred animal."], "ancestry": ["A line of ancestors coming down to one's parents."], "origin": ["The point of intersection of the horizontal and vertical axis of a graph."], "parentage": ["The descendants of one individual."], "bloodshed": ["The shedding of blood during a violent conflict.", "A ruthless killing of a great number of people."], "cuboid": ["Polyhedron with six rectangular faces.", "(geometry) A solid figure bounded by six rectangular faces."], "nose candy": ["A street name for cocaine."], "fellate": ["To provide sexual gratification to a man through oral stimulation."], "go down on": ["To provide sexual gratification to a man through oral stimulation.", "To perform oral sex on a female."], "azure": ["The colour of the clear sky or the deep sea, between green and violet in the visible spectrum, and one of the primary additive colours for transmitted light; the colour obtained by subtracting red and green from white light using magenta and cyan filters."], "cerulean": ["The colour of the clear sky or the deep sea, between green and violet in the visible spectrum, and one of the primary additive colours for transmitted light; the colour obtained by subtracting red and green from white light using magenta and cyan filters."], "sky-blue": ["The colour of the clear sky or the deep sea, between green and violet in the visible spectrum, and one of the primary additive colours for transmitted light; the colour obtained by subtracting red and green from white light using magenta and cyan filters."], "bright blue": ["The colour of the clear sky or the deep sea, between green and violet in the visible spectrum, and one of the primary additive colours for transmitted light; the colour obtained by subtracting red and green from white light using magenta and cyan filters."], "dispirited": ["Low in spirits."], "downcast": ["Low in spirits."], "downhearted": ["Low in spirits."], "down in the mouth": ["Low in spirits."], "low-spirited": ["Low in spirits."], "display panel": ["A screen on which information can be displayed to public view."], "display board": ["A screen on which information can be displayed to public view."], "control panel": ["An electrical device consisting of an insulated panel containing switches and dials and meters for controlling other electrical devices.", "Instrument panel on an automobile or airplane containing dials and controls."], "instrument panel": ["An electrical device consisting of an insulated panel containing switches and dials and meters for controlling other electrical devices."], "control board": ["An electrical device consisting of an insulated panel containing switches and dials and meters for controlling other electrical devices."], "panel": ["A surface that reflects light.", "An electrical device consisting of an insulated panel containing switches and dials and meters for controlling other electrical devices.", "A smooth surface, usually made of glass with reflective material painted on the underside, that reflects light so as to give an image of what is in front of it.", "A (usually) rectangular section of a surface, or of a covering or of a wall, fence etc.", "A set of icons or other computer visual elements inside a common area of geometrical shape (usually a rectangle), each one corresponding to a software tool.", "A colleection of persons that were assigend a specific task, most often for a predetermined time, or to be completed within a given time frame, that is to find or determine something, make decisions, or steer towards a settlement that other are looking for and/or are going to use.", "Something filling up a gap or covering up a (small) distance.", "Something put around something else, usually in order to give it another look or to protect it from its environment.", "A painting that was not made on a wall but a movable thing such as a wood, canvas, metal sheet or similar.", "A group of people engaging in a discussion.", "A piece or part made or designed for fitting very precisely into something else, typically supplementing it, when in place.", "A part of the outermost covering of an automobile.", "A group of suporters or being consulted on a high but not the highest hierarchy position, corroborating closely usually assisting in solving specific problems or questions in a certain field."], "circuit board": ["A printed circuit that can be inserted into expansion slots in a computer to increase the computer's capabilities."], "circuit card": ["A printed circuit that can be inserted into expansion slots in a computer to increase the computer's capabilities."], "get on": ["To enter trains, buses, ships, aircraft, etc."], "gravy boat": ["A dish (often boat-shaped) for serving gravy or sauce.", "A small recipient with a handle and a spout that is used to serve sauce and gravy at the table."], "gravy holder": ["A dish (often boat-shaped) for serving gravy or sauce."], "sauceboat": ["A dish (often boat-shaped) for serving gravy or sauce."], "organic structure": ["The physical structure of a human or animal."], "physical structure": ["The physical structure of a human or animal."], "dead body": ["The physical structure of a dead animal or person."], "stiff": ["The physical structure of a dead animal or person.", "Incapable of or resistant to bending.", "A forbidden written message of one prisoner to another or to a person outside of prison.", "Marked by firm determination or resolution; not shakable."], "furuncle": ["A painful, local inflammation of the skin, caused by infection of a hair follicle. Usually, a hard core and pus are present."], "churn": ["To be agitated.", "The process through which cream is separated into butter and buttermilk through repeated stirring.", "A vessel intended for the separation of cream into butter and buttermilk."], "moil": ["To be agitated."], "roil": ["To be agitated."], "talk": ["An address or form of oral communication in which a speaker makes his thoughts and emotions known before an audience, often for a given purpose.\\n(Source: RHW)", "To communicate by the use of sounds that are interpreted as language; to communicate verbally.", "An exchange of ideas via conversation.", "To exchange thoughts; talk with."], "flabbergast": ["To cause to be overcome with astonishment."], "flabbergasted": ["As if struck dumb with astonishment and surprise."], "dumbfounded": ["As if struck dumb with astonishment and surprise."], "dumfounded": ["As if struck dumb with astonishment and surprise."], "stupefied": ["As if struck dumb with astonishment and surprise."], "thunderstruck": ["As if struck dumb with astonishment and surprise."], "England": ["One of the constituent nations of the United Kingdom, occupying most of the southern two-thirds of the island of Great Britain, with capital London."], "masturbation": ["The manual excitation of one's own sexual organs, most often to the point of orgasm."], "Sarajevo": ["The largest city and capital of Bosnia and Herzegovina."], "Podgorica": ["The largest city and capital of Montenegro.", "The largest city and capital of Montenegro."], "Titograd": ["The former name (1952-1992) of Podgorica, the capital of Montenegro."], "Ribnica": ["The former name (1326-1952) of Podgorica, the capital of Montenegro.", "A municipality in Slovenia.", "A town in the Kraljevo municipality (Ra\u0161ka District) of Serbia."], "Belgrade": ["The largest city and capital of Serbia."], "Reykjav\u00edk": ["The largest city and capital of Iceland."], "Andorra la Vella": ["The capital and largest city of Andorra."], "Dijon": ["A city in eastern France, the pr\u00e9fecture (administrative capital) of the C\u00f4te-d'Or d\u00e9partement and of the Bourgogne r\u00e9gion."], "Russian Federation": ["The largest country in the world, partially located in Europe and partially in Asia."], "err": ["To make a mistake."], "element": ["A substance made up of atoms with the same atomic number; common examples are hydrogen, gold, and iron.", "A smaller, self-contained part of a larger entity. Often refers to a manufactured object that is part of a larger device.", "An abstract part of something."], "scandium": ["Chemical element with symbol Sc and atomic number 21. It is a silvery white transition metal."], "cormorant": ["Medium sized, black water bird from the family of the cormorants (Phalacrocoracidae), scientific name: Phalacrocorax carbo"], "stage": ["The area, in a theatre, generally raised, where plays or other public ceremonies are performed.", "Part or phase of a video game as the total space available to the player during the course of completing a certain objective.", "To perform a play, usually on a stage.", "To plan, organize or carry out (an event).", "To exhibit as a scene."], "cavalcade": ["A procession of people traveling on horseback."], "drive shaft": ["A rotating shaft that transmits power from the engine to the point of application."], "driving axle": ["A rotating shaft that transmits power from the engine to the point of application."], "harpoon": ["A spearlike weapon with a barbed head used in hunting whales and large fish."], "fridge": ["A household appliance used for keeping food fresh by refrigeration."], "freezer": ["A refrigerator in which food is frozen and stored for long periods of time."], "unquestionable": ["Absolutely not open for interpretation."], "hard liquor": ["Alcoholic beverage containing more than 20 percent alcohol."], "liquor": ["Alcoholic beverage containing more than 20 percent alcohol."], "spirits": ["Alcoholic beverage containing more than 20 percent alcohol."], "booze": ["To consume a liquid containing alcohol.", "Alcoholic beverage containing more than 20 percent alcohol."], "hard drink": ["Alcoholic beverage containing more than 20 percent alcohol."], "John Barleycorn": ["Alcoholic beverage containing more than 20 percent alcohol."], "strong drink": ["Alcoholic beverage containing more than 20 percent alcohol."], "innate": ["A trait that is inborn- genetically inherited.", "Being talented through inherited qualities.", "Present at birth but not necessarily hereditary."], "Solanales": ["An order of flowering plants, included in the asterid group of dicotyledons."], "Asterales": ["An order of dicotyledonous flowering plants which include the composite family Asteraceae (sunflowers, daisies, thistles etc.) and its related families."], "Asparagales": ["(Asparagales) An order of flowering plants, including the family Asparagaceae."], "Brassicales": ["An order of flowering plants that can produce mustard oil compounds."], "bric-a-brac": ["Miscellaneous small ornamental objects which may be of sentimental value, but have little monetary value."], "bric-\u00e0-brac": ["Miscellaneous small ornamental objects which may be of sentimental value, but have little monetary value."], "broccoli": ["A vegetable; of this variety of the Brassica oleracea the green flowers and their stalk is eaten."], "Cucurbitales": ["An order of flowering plants, included in the rosid group of dicotyledons."], "Piperales": ["An order of flowering plants including the family Piperaceae."], "Apiales": ["An order of flowering plants including well-known members carrots, celery, parsley, and ivy."], "variety": ["A subdivision of a species which occurs through natural hybridization.", "A form that differs from other forms of the language systematically and coherently.", "A principle of design concerned with diversity or contrast.", "A collection of different things, generally related between them.", "The class of all algebraic structures of a given signature satisfying a given set of identities.", "A show with a variety of acts, often including music and comedy skits, especially on television."], "Fabales": ["An order of flowering plants, included in the rosid group of eudicots."], "rummage": ["Old, useless and valueless objects."], "practical": ["Concerned with actual use or practice."], "Sapindales": ["An order of flowering plants, well-known members include citrus; maples and horse-chestnuts; mangos and cashews; frankincense and myrrh; and mahogany."], "part of speech": ["The category a word is assigned to based on its syntactic function within a specified language."], "Mickey Mouse": ["A comic animal cartoon character who has become a symbol for The Walt Disney Company."], "seaborgium": ["Chemical element with symbol Sg and atomic number 106, probably a silvery\\nwhite or gray transition metal."], "vitriolic": ["Being harsh or corrosive in tone."], "caustic": ["Being harsh or corrosive in tone."], "connection": ["Joint point for two or more elements."], "kind": ["Possessing charm and attractiveness.", "A category of things distinguished by a common characteristic or quality."], "homicide": ["The intentional or premeditated killing of another person."], "plus": ["Arithmetic: increased by", "In addition to.", "A useful or valuable quality that helps a person succeed."], "charge": ["An accusation of wrongdoing.", "A duty that involves fulfilling a request.", "To blame for, make a claim of wrongdoing against.", "To demand payment.", "To provide (a device or weapon) with something necessary."], "logo": ["A symbol or emblem that acts as a means of identification."], "thirst": ["A physiological need to drink.", "To feel the need to drink."], "apricot": ["Fruit of the apricot tree (Prunus armeniaca)."], "algorithm": ["Any well-defined procedure describing how to carry out a particular task."], "thirsty": ["Feeling the need to drink."], "personal pronoun": ["A pronoun that refers to previous mentioned person."], "canticle": ["A hymn (excluding the Psalms) taken from the Bible."], "baptism": ["The Christian sacrament in which one is annointed with or submerged in water and sometimes given a name."], "priest": ["A minister of the Catholic church empowered to administer the sacraments, most particularly that of the Eucharist or Holy Communion, as well as those of confession and extreme unction."], "pastor": ["The head minister or priest of a Christian church."], "bishop": ["The priest who acts as the highest religious official in a diocese.", "A chess piece that may be moved only diagonally."], "layman": ["A person who has not been consecrated as a priest.", "A person who is not an expert."], "cardinal": ["A high priest in the hierarchy of the Roman Catholic church, he can take part in the election of a new pope."], "tantalum": ["Chemical element with symbol Ta and atomic number 73, grey blue transition metal."], "rook": ["A piece of chess commonly shaped like a tower. Each player has two, and they move in straight horizontal or vertical lines across the board.", "A bird, similar to crow and raven."], "mummy": ["An embalmed corpse."], "pharaoh": ["The supreme ruler of ancient Egypt."], "sphinx": ["A mythical creature with the head of a human and the body of a lion."], "pyramid": ["An ancient massive construction with a square or rectangular base and four triangular sides meeting in an apex.", "Geometry: a solid with N triangular lateral faces and a N-angular base."], "altar": ["Table for religious ceremonies.", "Structure higher than the floor level and used to offer one or several sacrifices."], "inflation": ["The expansion in the money supply beyond the increase in available goods and services."], "deflation": ["A decrease in the general price level, that is, in the nominal cost of goods and services as well as wages."], "money supply": ["The total amount of money in a particular economy."], "almond": ["Fruit of the almond tree (Prunus dulcis)."], "kettle": ["A metal container used to boil water.", "A metal container used to boil any kind of liquid.", "A metal container used for boiling water for tea."], "teakettle": ["A metal container used for boiling water for tea."], "tea kettle": ["A metal container used for boiling water for tea."], "married": ["Being in a state of matrimony."], "Rosales": ["An order of flowering plants, including the rose family Rosaceae."], "introspection": ["The process of self-observation of one's thoughts and feelings."], "portal": ["A website that acts as an entrance to other websites on the Internet."], "Irish Gaelic": ["A Celtic language spoken primarily in Ireland."], "Riga": ["The capital of Latvia."], "Budapest": ["The capital of Hungary."], "Vilnius": ["The capital of Lithuania."], "Tallinn": ["The capital of Estonia."], "Minsk": ["The largest city and capital of Belarus."], "Chi\u015fin\u0103u": ["The largest city and capital of Moldova."], "Vaduz": ["The capital of Liechtenstein."], "Brussels": ["The largest city and capital of Belgium."], "Skopje": ["The largest city and capital of Macedonia.", "Turkish dialect."], "Ljubljana": ["The largest city and capital of Slovenia."], "Kiev": ["The largest city and capital of Ukraine."], "Kyiv": ["The largest city and capital of Ukraine."], "Bucharest": ["The largest city and capital of Romania."], "Bratislava": ["The capital of Slovakia."], "Warsaw": ["The capital of Poland."], "Sofia": ["The capital of Bulgaria."], "Dublin": ["Capital of the Republic of Ireland."], "Tirana": ["The capital and largest city of Albania."], "judiciary": ["The court system and judges considered collectively, the judicial branch of government."], "confiscate": ["To take possession of by force or authority."], "iconoclast": ["Someone who opposes orthodoxy and religion."], "correspondence": ["Postal or other written communications."], "letter of intent": ["Any letter expressing an intention to take (or forgo) some action."], "discrimination": ["Treatment or consideration based on class or category rather than individual merit."], "ambulance": ["Vehicle used to bring the sick or injured to a hospital."], "maintenance": ["The upkeep of industrial facilities and equipment.", "Financial support provided after a separation or divorce by the financial stronger partner to the ex-partner."], "superior": ["Someone who is of greater rank or station.", "Of a higher quality or performance"], "sketch": ["To bring information in fewer words; to describe roughly or briefly.", "Drawing or other composition that is not intended as a finished work.", "To make a quick drawing or composition.", "To describe or illustrate roughly or briefly or give the main points or summary of.", "To make a drawing or other composition that is not intended as a finished work."], "conquer": ["To take possession of by force."], "open source": ["A term to describe software distributed in source under licenses guaranteeing anybody rights to freely use, modify, and redistribute, the code."], "technetium": ["Chemical element with symbol Tc and atomic number 43. It is a synthetic, radioactive transition metal."], "anchorite": ["A person who lives alone and in seclusion."], "acrobat": ["An athlete who performs acts requiring skill, agility and coordination."], "diet": ["A controlled regimen of food and drink, as to gain or lose weight or otherwise influence health.", "The sum of food consumed by a person or other organism.", "To modify one's food and beverage intake so as to decrease or increase body weight or influence health."], "downtime": ["The amount of time lost due to forces beyond one's control, as with a computer crash."], "renege": ["To break a promise or commitment."], "developer": ["A person who creates or modifies computer software."], "master plan": ["The principal plan which outlines the methods and procedures that need to be followed in order to accomplish the long term goals of a program."], "openly": ["In an open manner."], "cause": ["That which brings about any condition or produces any effect.", "To be the cause of.", "Any entity that produces an effect or is responsible for events or results.", "A justification for something existing or happening.", "A series of actions advancing a principle or tending toward a particular end.", "A comprehensive term for any proceeding in a court of law whereby an individual seeks a legal remedy.", "To make something happen."], "terbium": ["Chemical element with symbol Tb and atomic number 65, silvery white lanthanide."], "abbess": ["A female superior or governess of a nunnery, or convent of nuns, having the same authority over the nuns which the abbots have over the monks."], "abduction": ["The wrongful, and usually the forcible, carrying off of a human being.", "The contraction of a muscle whose function is to move away from the central line of the body the part to which it is connected.", "A form of logical inference that predicts a probable cause to a given observation."], "Vienna": ["The largest city and capital of Austria."], "log file": ["A text file that records activity on a server."], "Valletta": ["The capital of Malta."], "Berne": ["The capital of Switzerland.", "A large canton in Switzerland."], "foresee": ["To think of ahead of time."], "difference": ["A characteristic of something that makes it different from something else.", "The result of a subtraction."], "rondo": ["A musical composition, commonly of a lively, cheerful character, in which the first strain recurs after each of the other strains."], "minaret": ["A tall, graceful spire with onion-shaped crowns distinctive to Islamic mosques."], "trio": ["A piece of music written for three musicians."], "quartet": ["A piece of music written for four musicians."], "duet": ["A piece of music written for two musicians."], "performance": ["An act where somebody performs music, theater or a similar art in a live show or concert.", "That which is accomplished.", "The performance of a machine."], "go out": ["To stop burning or shining.", "To move out of or depart from.", "To go out of fashion; become unfashionable.", "To leave one's home for a lmited period of time, usually for a leisure."], "fade": ["To diminish or disappear along the way.", "To get weaker, to lose in intensity."], "oversensitive": ["Excessively sensitive."], "hypersensitive": ["Excessively sensitive."], "sensitive": ["Having the ability to perceive stimuli and pain.", "Having acute emotional sensibility.", "Appreciating and responsive to the feelings of others.", "Able to measure small changes."], "Wyoming": ["The 44th state of the United States of America, located in the western US."], "Wisconsin": ["The 30th state of the United States of America, located in the Midwest."], "judge": ["To account; to esteem; to think; to judge; to hold in opinion; to regard. (Source Webster 1913)", "A person who decides the fate of someone or something that has been called into question.", "To express an opinion or a valuation, especially on esthetics, morality or the like.", "To put on trial, hear the case and act as the judge."], "Texas": ["The 28th state of the United States of America, located in the southern US."], "thorium": ["Chemical element with symbol Th and atomic number 90. It is a silvery white actinide."], "aberrant": ["Deviating from the ordinary or natural type."], "exceptional": ["Deviating from the ordinary or natural type.", "Surpassing what is common or usual or expected.", "Not easily found."], "abnormal": ["Deviating from the ordinary or natural type.", "Contrary to the usual structure, position, behaviour, or rule."], "abhorrence": ["Extreme hatred or detestation; the feeling of utter dislike."], "Venetian": ["A Romance language spoken mostly in the North East of Italy and in some states of Brazil, and to a lesser extent in other countries including Mexico, Slovenia, Croatia, and Romania.", "The variety of Venetan language spoken in Venice and nearby.", "A person from Venice, or of Venetian ancestry."], "abrasive": ["Producing abrasion; rough enough to wear away the outer surface.", "Harsh or rough in manner."], "marionette": ["A string puppet, usually made of wood, which is animated by the pulling of strings."], "abscess": ["A cavity caused by tissue destruction, usually because of infection, filled with pus and surrounded by inflammed tissue."], "absence": ["A state of being absent or withdrawn from a place or from companionship.", "In medicine, momentary loss of consciousness."], "absentee": ["One who absents himself from his country, office, post, or duty."], "Frisian": ["A West Germanic language spoken in Friesland in the northwestern Netherlands."], "absent-minded": ["Inattentive to what is passing."], "abstainer": ["One who abstains; especially, one who abstains from the use of alcoholic drinks."], "absurdity": ["That which is absurd; an absurd action; a logical contradiction.", "The quality of being valueless or futile."], "Montgomery": ["The capital of the state of Alabama, USA."], "medieval": ["Of or pertaining to the Middle Ages."], "meteorite": ["A meteorite is an extraterrestrial body that survives its impact with a planet's surface without being destroyed."], "meteor": ["A streak of light in the sky at night that results when a meteoroid hits the earth's atmosphere."], "debone": ["To remove the bones from."], "cram": ["To study intensively, as before an exam."], "grind away": ["To study intensively, as before an exam."], "drum": ["To study intensively, as before an exam.", "A percussion instrument consisting of at least one membrane that is stretched over a shell and struck directly with the player's hands or with a drumstick.", "To produce sound with a drum."], "bone up": ["To study intensively, as before an exam."], "swot": ["To study intensively, as before an exam.", "An insignificant student who is ridiculed as being affected or boringly studious."], "get up": ["To study intensively, as before an exam.", "To arrange by systematic planning and united effort (e.g. a plot, a strike, a plan)."], "mug up": ["To study intensively, as before an exam."], "swot up": ["To study intensively, as before an exam."], "Utah": ["The 45th state of the United States of America, located in the western US."], "surround": ["To beset or surround with armed forces, for the purpose of compelling to surrender.", "To extend on all sides simultaneously."], "margin": ["The boundary line or the area immediately inside the boundary."], "perimeter": ["The boundary line or the area immediately inside the boundary."], "edge": ["The boundary of a surface."], "natural": ["Being talented through inherited qualities."], "adopt": ["To take up (an idea) as one's own.", "The act of approving something.", "To take into one's family.", "To choose and follow; as of theories, ideas, policies, strategies or plans.", "To take on titles, offices, duties, responsibilities.", "To take on a certain form, attribute, or aspect.", "To put into dramatic form."], "take over": ["To take up (an idea) as one's own.", "Seize and take control without authority and possibly with force.", "To take on as one's own the expenses or debts of another person.", "To take on titles, offices, duties, responsibilities."], "take up": ["To take up (an idea) as one's own."], "bottleful": ["The contents of a container called bottle."], "poodle": ["A French breed of dog with curly hair."], "stadium": ["A large structure for open-air sports or entertainments."], "sports stadium": ["A large structure for open-air sports or entertainments."], "loge": ["A private area in a theater or grandstand where a small group can watch the performance."], "package": ["To put into a box."], "rise": ["To awake.", "To get up from a lying, sitting, or kneeling position.", "(Of a heavenly body) To appear to move upwards from behind the horizon of a planet as a result of the planet's rotation."], "pumpkin": ["A squash fruit of the Cucurbita genus, most commonly orange in colour when ripe and traditionally used during Halloween.", "The colour of pumpkin fruit, with hexadecimal code #FF8127."], "Europa": ["Fourth largest moon of Jupiter's moons.", "In Greek mythology, the daughter of the Phoenician king Agenor who was abducted by Zeus in form of a bull."], "bookshelf": ["A piece of furniture, almost always with horizontal shelves, used to store books."], "bookcase": ["A piece of furniture, almost always with horizontal shelves, used to store books."], "diary": ["A daily log of experiences, especially those of the writer."], "Columbia": ["The capital of the state of South Carolina, United States of America."], "Juneau": ["The capital of the U.S. state of Alaska."], "Phoenix": ["The largest city and capital of the state of Arizona."], "Little Rock": ["The capital of the state of Arkansas, USA."], "Sacramento": ["The capital of the state of California."], "Denver": ["The capital and the most populous city of the U.S. state of Colorado."], "Hartford": ["The capital of the state of Connecticut, USA."], "Dover": ["The capital of the state of Delaware."], "Tallahassee": ["The capital of the state of Florida."], "Atlanta": ["The capital of the state of Georgia."], "Honolulu": ["The capital of the state of Hawaii, USA."], "Boise": ["The capital of the state of Idaho, USA."], "Springfield": ["The capital of the state of Illinois, USA."], "Indianapolis": ["City of the United States of America and the capital of the state of Indiana."], "Des Moines": ["The capital of the state of Iowa."], "Topeka": ["The capital of the state of Kansas, USA."], "Frankfort": ["The capital of the state of Kentucky."], "Baton Rouge": ["The capital of the state of Louisiana, USA."], "Augusta": ["The capital of the state of Maine, United States of America."], "Annapolis": ["The capital of the state of Maryland of the United States of America."], "Lansing": ["The capital of the state of Michigan."], "St. Paul": ["The capital of the state of Minnesota."], "Jackson": ["The capital of the state of Mississippi.", "A bill having a value of 20 American dollars."], "Jefferson City": ["The capital of the state of Missouri."], "Helena": ["The capital of the state of Montana."], "Lincoln": ["The capital of the state of Nebraska."], "Carson City": ["The capital of the state of Nevada."], "Concord": ["The capital of the state of New Hampshire."], "Trenton": ["The capital of the state of New Jersey."], "Santa Fe": ["The capital of the state of New Mexico."], "Albany": ["The capital of the state of New York."], "Raleigh": ["The capital of the state of North Carolina."], "Bismarck": ["The capital of the state of North Dakota."], "Columbus": ["The capital of the state of Ohio."], "Oklahoma City": ["The capital of the state of Oklahoma."], "Salem": ["The capital of the state of Oregon."], "Harrisburg": ["The capital of the state of Pennsylvania."], "Providence": ["The capital of the state of Rhode Island."], "Pierre": ["The capital of the state of South Dakota."], "Nashville": ["The capital of the state of Tennessee, USA."], "Austin": ["The capital of the state of Texas."], "Salt Lake City": ["The capital of the state of Utah."], "Montpelier": ["The capital of the state of Vermont."], "Richmond": ["The capital of the state of Virginia."], "Olympia": ["The capital of the state of Washington, USA."], "Charleston": ["The capital of the state of West Virginia, United States of America."], "Madison": ["The capital of the state of Wisconsin."], "Cheyenne": ["The capital of the state of Wyoming.", "A language of the USA."], "derivative": ["In mathematics, the instantaneous rate of change of a function.", "(Chemistry) A substance or compound obtained from, or regarded as derived from, another substance or compound.", "In linguistics, a word that derives from another one."], "parabola": ["A conic section generated by the intersection of a right circular conical surface and a plane parallel to a generating straight line of that surface."], "mathematical": ["Of, or relating to mathematics."], "conic section": ["A curve that can be formed by intersecting a cone with a plane."], "conic": ["A curve that can be formed by intersecting a cone with a plane.", "Of, relating to, or in the shape of a cone."], "conical": ["Of, relating to, or in the shape of a cone."], "Danish pastry": ["A sweet pastry (a speciality of Denmark) popular throughout the industrialized world."], "Dane": ["A person of Danish nationality."], "arithmetic progression": ["In mathematics, a sequence of numbers such that the difference of any two successive members of the sequence is a constant."], "arithmetic sequence": ["In mathematics, a sequence of numbers such that the difference of any two successive members of the sequence is a constant."], "geometric progression": ["In mathematics, a sequence of numbers such that the quotient of any two successive members of the sequence is a constant called the common ratio of the sequence."], "geometric sequence": ["In mathematics, a sequence of numbers such that the quotient of any two successive members of the sequence is a constant called the common ratio of the sequence."], "division": ["In mathematics, an arithmetic operation which is the inverse of multiplication.", "A biological taxon in botany, mycology and microbiology, a group of species, part of a kingdom and consisting of one or more classes", "A section of a large company."], "renown": ["The state or quality of having a positive reputation."], "zeitgeist": ["The spirit characteristic of an age or generation."], "thulium": ["Chemical element with symbol Tm and atomic number 69, silvery white lanthanide."], "abundance": ["An overflowing fullness."], "prairie dog": ["(Cynomys) A small, stout-bodied burrowing wild rodent with shallow cheek pouches, native to North America and Central America."], "acacia": ["A shrub or tree of a species that belongs to the genus Acacia."], "acceleration": ["The amount by which a speed or velocity increases.", "The change of velocity with respect to time (including deceleration and change of direction).", "The act of increasing the speed of an object.", "The state of having an increasing speed."], "accomplice": ["An associate in the commission of a crime."], "antiparticle": ["Particle having the same mass, spin, isospin as a particle, but having all additive quantum numbers opposite to those of its respective particle."], "spirit of the age": ["The spirit characteristic of an age or generation."], "altruism": ["The unselfish concern for the welfare of others."], "altruistic": ["Not selfish, concerned for the welfare of others."], "intend": ["To have in mind as one's purpose or intention.", "To assign for a specific end, use, or purpose; to design or destine.", "To intend to express or convey."], "arithmetic": ["The oldest and simplest branch of mathematics, used for everything from simple counting to advanced scientific calculations.", "Relating to or involving arithmetic."], "milestone": ["A scheduled event for which some individual is accountable and that is used to measure progress."], "arithmetics": ["The oldest and simplest branch of mathematics, used for everything from simple counting to advanced scientific calculations."], "multiplication": ["An elementary arithmetic operation where a number is added to itself for a specified amount of times."], "subtraction": ["An elementary arithmetic operation that is the opposite of addition."], "integral": ["A numerical measure computed by a limiting process in which the domain of a function is divided into small subintervals and the value of the function at a point in each subinterval is multiplied by the measurement of that subinterval, all these products then being summed."], "antiderivative": ["A numerical measure computed by a limiting process in which the domain of a function is divided into small subintervals and the value of the function at a point in each subinterval is multiplied by the measurement of that subinterval, all these products then being summed."], "average": ["In mathematics, a measure of the \"middle\" of a data set.", "Neither very good nor very bad; rated somewhere in the middle of all others in the same category."], "central tendency": ["In mathematics, a measure of the \"middle\" of a data set."], "median": ["In mathematics, a number dividing the higher half of a from the lower half.", "A barrier on roads and highways between the opposing flows of traffic, usually covered with vegetation."], "center divider": ["A barrier on roads and highways between the opposing flows of traffic, usually covered with vegetation."], "median strip": ["A barrier on roads and highways between the opposing flows of traffic, usually covered with vegetation."], "least common multiple": ["The smallest positive integer that is a multiple of two integers a and b."], "lowest common multiple": ["The smallest positive integer that is a multiple of two integers a and b."], "lcm": ["The smallest positive integer that is a multiple of two integers a and b."], "smallest common multiple": ["The smallest positive integer that is a multiple of two integers a and b."], "lowest common denominator": ["The least common multiple of the denominators of a set of vulgar fractions."], "least common denominator": ["The least common multiple of the denominators of a set of vulgar fractions."], "LCD": ["The least common multiple of the denominators of a set of vulgar fractions.", "A thin, flat electronic visual display that uses the light modulating properties of liquid crystals."], "greatest common divisor": ["The largest positive integer that divides two non-zero integers without remainder."], "gcd": ["The largest positive integer that divides two non-zero integers without remainder."], "greatest common factor": ["The largest positive integer that divides two non-zero integers without remainder."], "gcf": ["The largest positive integer that divides two non-zero integers without remainder."], "highest common factor": ["The largest positive integer that divides two non-zero integers without remainder."], "hcf": ["The largest positive integer that divides two non-zero integers without remainder."], "percentage": ["Ratio expressed as a number between 0 and 100, often denoted with the sign \"%\"."], "percent": ["A ratio expressed as a number out of 100."], "ununbium": ["The temporary name for a synthetic superheavy element in the periodic table with symbol Uub and atomic number 112, transition metal"], "acceptable": ["Barely worthy, less than excellent."], "archeologist": ["Someone who studies or works in archeology."], "archaeologist": ["Someone who studies or works in archeology."], "accordion": ["A portable, keyed wind instrument, whose tones are generated by play of the wind from a squeezed bellows upon free metallic reeds."], "swamp gas": ["Gas that is formed in swamps as a result of natural decay of organic material; consists mainly of methane."], "glove": ["A garment for a hand, often extending to the wrist and sometimes up to the elbow, which either covers each finger individually, or separates the thumb from the other fingers."], "marsh gas": ["A colourless, odourless, and tasteless gas, lighter than air and reacting violently with chlorine and bromine in sunlight, a chief component of natural gas; used as a source of methanol, acetylene, and carbon monoxide."], "methyl hydride": ["A colourless, odourless, and tasteless gas, lighter than air and reacting violently with chlorine and bromine in sunlight, a chief component of natural gas; used as a source of methanol, acetylene, and carbon monoxide."], "Tennessee": ["The 16th state of the United States of America, located in the south of the United States of America."], "harmonica": ["A free reed musical wind instrument which produces notes according to the player's mouth placement over the different airways.", "A musical instrument that uses a series of glass bowls graduated in size to produce musical tones by means of friction."], "mouth organ": ["A free reed musical wind instrument which produces notes according to the player's mouth placement over the different airways."], "mouth harp": ["A free reed musical wind instrument which produces notes according to the player's mouth placement over the different airways.", "A musical instrument that consists of a flexible metal or bamboo tongue or reed attached to a frame."], "tungsten": ["Chemical element with symbol W and atomic number 74, grayish white, lustrous transition metal."], "adagio": ["A tempo mark directing that a passage is to be played rather slowly, liesurely and gracefully."], "avocado": ["The fruit of an avocado tree (Persea americana).", "A tree that is native to Mexico and produces a large edible fruit."], "banana": ["The fruit of the banana tree.", "The tropical treelike plant which bears clusters of bananas. The plant, of the genus Musa, has large, elongated leaves."], "kazoo": ["A simple musical instrument that adds a \"buzzing\" timbral quality to a player's voice when one hums into it."], "baseball": ["A bat-and-ball sport played between two teams usually of nine players each."], "Kentucky": ["The 15th state of the United States of America, located in the Midwest."], "Louisiana": ["The 18th state of the United States of America, located in the South."], "Maine": ["The 23rd state of the United States of America, located in the northeast."], "Maryland": ["The 7th state of the United States of America, located in the northeast."], "Massachusetts": ["The 6th state of the United States of America, located in the northeast."], "Michigan": ["The 26th state of the United States of America, located in the Midwest."], "Minnesota": ["The 32nd state of the United States of America, located in the Midwest."], "Mississippi": ["The 20th state of the United States of America, located in the South.", "The longest river in the United States."], "Missouri": ["The 24th state of the United States of America, located in the Midwest."], "Montana": ["The 41st state of the United States of America, located in the Pacific Northwest."], "Nebraska": ["The 37th state of the United States of America, located in the Midwest."], "Nevada": ["The 36th state of the United States of America, located in the west."], "New Hampshire": ["The 9th state of the United States of America, located in the northeast."], "New Jersey": ["The 3rd state of the United States of America, located in the northeast."], "New Mexico": ["The 47th state of the United States of America, located in the southwest."], "New York": ["The 11th state of the United States of America, located in the northeast.", "The largest city in the state of New York and the largest city in the United States."], "North Carolina": ["The 12th state of the United States of America, located in the South."], "North Dakota": ["The 39th state of the United States of America, located in the Midwest."], "Ohio": ["The 17th state of the United States of America, located in the Midwest."], "Oklahoma": ["The 46th state of the United States of America, located in the southern Great Plains."], "Oregon": ["The 33rd state of the United States of America, located in the Pacific. Northwest."], "Pennsylvania": ["The 2nd state of the United States of America, located in the northeast."], "Rhode Island": ["The 13th state of the United States of America, located in the northeast."], "South Carolina": ["The 8th state of the United States of America, located in the South."], "South Dakota": ["The 40th state of the United States of America, located in the Midwest."], "Vermont": ["The 14th state of the United States of America, located in the northeast."], "Virginia": ["The 10th state of the United States of America, located in the South."], "Washington": ["The 42nd state of the United States of America, located in the Pacific Northwest.", "The capital of the United States of America, located in the District of Columbia."], "West Virginia": ["The 35th state of the United States of America, located in Appalachia."], "Pacific Northwest": ["An area that includes part of the west coast of United States and Canada, including southeast Alaska, all of British Columbia, Washington, Oregon, Idaho, western Montana and northern California and Nevada."], "PNW": ["An area that includes part of the west coast of United States and Canada, including southeast Alaska, all of British Columbia, Washington, Oregon, Idaho, western Montana and northern California and Nevada."], "PacNW": ["An area that includes part of the west coast of United States and Canada, including southeast Alaska, all of British Columbia, Washington, Oregon, Idaho, western Montana and northern California and Nevada."], "volleyball": ["A sport in which two teams separated by a high net use their hands and arms to hit a ball back and forth over the net."], "blade": ["The flat, sharp-edged part of a tool."], "breath": ["A single act of breathing in and out.", "The air inhaled and exhaled through the lungs.", "The act or process of breathing."], "acrophobia": ["An irrational fear of great heights."], "altophobia": ["An irrational fear of great heights."], "quality": ["A characteristic trait that differentiates a thing or person.", "Level of excellence."], "ytterbium": ["Chemical element with symbol Yb and atomic number 70, silvery white lanthanide."], "barometer": ["An instrument used to measure atmospheric pressure."], "viper": ["European poison snake, Vipera berus."], "rattlesnake": ["Poisonous snake of the genus Crotalus, known by the rattling tail."], "acne": ["A skin condition, usually of the face, that is common in adolescents. It is characterised by red pimples, and is caused by the inflammation of sebaceous glands through bacterial infection."], "sauna": ["The act of staying in a room with dry heat in which steam is produced in certain intervals by pouring water over hot stones for the purpose of transpiration.", "A room, often with wooden walls, which is designed for heating dry air and where steam may be produced by pouring water over hot stones.", "To use a sauna."], "Jaguar": ["An automobile produced by the British Jaguar company."], "puzzle": ["A problem or enigma that challenges ingenuity, usually used for entertainment purposes."], "yttrium": ["Chemical element with symbol Y and atomic number 39, silvery white transition metal."], "locksmith": ["A person who makes locks and keys."], "acquittal": ["A setting free, or deliverance from the charge of an offense, by verdict of a jury or sentence of a court."], "grocer": ["A retail merchant who sells foodstuffs.", "A person who sells groceries (foodstuffs and household items) retail from a grocery"], "zirconium": ["A chemical element with the symbol Zr and atomic number 40, silvery white transition metal."], "daylight savings time": ["A widely used system of adjusting the official local time forward, usually by one hour from its official standard time, for the spring, summer, and early autumn periods."], "summer time": ["A widely used system of adjusting the official local time forward, usually by one hour from its official standard time, for the spring, summer, and early autumn periods."], "seal": ["A mammal belonging to the Pinnipedia, an order of aquatic placental mammals having a streamlined body and limbs specialized as flippers: includes seals, sea lions, and the walrus.", "Any device or system that creates a nonleaking union between two mechanical or process-system elements.\\n(Source: MGH)", "To fasten (something) so that it cannot be opened without visible damage."], "baker": ["One who bakes and sells bread, cakes or similar items.", "A baker's shop."], "gardener": ["A person who is employed to cultivate or care for gardens."], "Korea": ["A geographic area, civilization, and former state situated on the Korean Peninsula in East Asia."], "abbot": ["The head of a monastery of monks."], "nun": ["A female ascetic who chooses to live her life in prayer and contemplation in a monastery or convent."], "Sino-Tibetan language": ["A language family composed of Chinese and the Tibeto-Burman languages, including some 250 languages of East Asia."], "repeat": ["A television programme shown after its initial presentation.", "To do something again.", "To say again something that we have already said.", "To say again something that someone else has already said by reproducing the words, inflections, etc.", "To tell someone something that we have heard from someone else.", "To transmit again."], "rerun": ["A television programme shown after its initial presentation."], "single": ["Not divided in parts.", "Not accompanied by anything else.", "Not married; having no spouse.", "A popular song released and sold separately from a full album, usually accompanied by a bonus track.", "A hit in baseball where the batter advances to first base.", "In cricket, a score of one run.", "To identify or select one member of a group from the others.", "To get a single in baseball."], "unmarried": ["Not married; having no spouse."], "unwed": ["Not married; having no spouse."], "spouseless": ["Not married; having no spouse."], "single out": ["To identify or select one member of a group from the others."], "cocaine": ["A crystalline tropane alkaloid, used as a drug and stimulus of the central nervous system, that is obtained from the leaves of the coca plant."], "jack-o'-lantern": ["A pumpkin whose top and stem have been cut out and interior removed, leaving a hollow shell that is then decoratively carved, associated with Halloween."], "Jack O'Lantern": ["A pumpkin whose top and stem have been cut out and interior removed, leaving a hollow shell that is then decoratively carved, associated with Halloween."], "Halloween": ["A tradition celebrated on the night of October 31, most notably by children dressing in costumes and going door-to-door collecting sweets."], "treat": ["A food item that is rich in sugar.", "To care for medicinally or surgically; to apply medical care to.", "An especially delicious comestible.", "An occurrence that causes special pleasure or delight."], "bicycle repair man": ["Een person who sells and repairs bicycles."], "cabinetmaker": ["Craftsman, who makes furniture and others from wood."], "cobbler": ["A person whose profession is making and repairing footwear."], "chimney sweep": ["A person whose job is to clean soot from chimneys."], "sniper": ["A person using long-range small arms for precise attacks from a concealed position."], "electrician": ["Professional in the field of electric installations."], "Ma": ["A language spoken in Papua New Guinea.", "ISO 639-6 entity"], "zebra spider": ["Spider that belongs to the family of the jumping spiders (Salticidae) and has black and white stripes. Scientific name: Salticus scenicus."], "arch": ["An inverted U shape.", "An arch-shaped arrangement of trapezoidal stones, designed to redistribute downward force outward.", "An architectural element having the shape of an arch."], "mason": ["A craftsman who builds in stone or brick otherwise known as masonry."], "bricklayer": ["A craftsman who builds in stone or brick otherwise known as masonry."], "stonemason": ["A craftsman who builds in stone or brick otherwise known as masonry."], "purgatory": ["In Catholic theology, the stage of afterlife where souls suffer for their sins before entering heaven.", "A situation causing suffering."], "hell": ["In various religions, the place where sinners are said to go after death.", "A place of great suffering in life."], "Alpha and Omega": ["The beginning and the end, the first one and the last one."], "anal sex": ["A form of human sexual behavior where the erect penis is inserted into the rectum through the anus."], "anal intercourse": ["A form of human sexual behavior where the erect penis is inserted into the rectum through the anus."], "semen": ["The fluid, produced by the reproductive organs of a male animal, that contains the sperm cells."], "audacity": ["Fearless daring.", "Aggressive boldness or unmitigated effrontery."], "69": ["A sexual position which provides for simultaneous mutual oral sex."], "69 position": ["A sexual position which provides for simultaneous mutual oral sex."], "prostitution": ["The sale of sexual services for money or other kind of return."], "forefather": ["Person from whom a person is descended, whether on the father's or mother's side, at any number of generations."], "heterosexuality": ["The sexual preference characterised by a romantic or sexual attraction to people of the opposite sex."], "bisexuality": ["The sexual preference characterised by a romantic or sexual attraction to people of the either sex."], "beastiality": ["The sexual preference characterised by a romantic or sexual attraction by a human to a non-human animal."], "zoophilia": ["The sexual preference characterised by a romantic or sexual attraction by a human to a non-human animal.", "A form of pollination whereby pollen is transferred by animals."], "zoosexuality": ["The sexual preference characterised by a romantic or sexual attraction by a human to a non-human animal."], "asexuality": ["The lack of a sexual attraction or preference."], "autosexuality": ["The sexual stimulation of, or sexual desire toward, one's own body."], "autoeroticism": ["The sexual stimulation of, or sexual desire toward, one's own body."], "oral sex": ["All the sexual activities that involve the use of the mouth, tongue, and possibly throat to stimulate genitalia."], "construction worker": ["Worker in building sector"], "madrassa": ["An Islamic religious school."], "house painter": ["A person who is responsible for painting buildings."], "aptitude": ["The ability to acquire knowledge or skills.", "Natural inclination of someone to complete a determined activity."], "cleric": ["A member of the clergy of a religion, one that has trained or ordained as a priest, preacher, or as another religious professional."], "attitude": ["Manner of behaving oneself; manner of acting.", "A complex mental state involving beliefs and feelings and values and tendencies to act in certain ways.", "A position of the body; the arrangement of the body in a given position."], "fishmonger": ["A merchant specialised in selling fish."], "printer": ["An artist who designs and makes prints.", "A device allowing any information from the computer to be printed on paper."], "tautology": ["A use of redundant language in speech or writing."], "with bated breath": ["With great anticipation."], "frequent": ["Happening or occurring repeatedly with little time between occurances."], "automatic": ["Occurring spontaneously or without intervention."], "cough": ["To force air from the lungs out the mouth, sometimes involuntarily, accompanied by a rough sound.", "A sudden, often repetitive, spasmodic contraction of the thoracic cavity, resulting in violent release of air from the lungs, and usually accompanied by a distinctive sound."], "hollow": ["Empty in the middle.", "To make a hole in something."], "copy": ["A reproduction of a written record.", "A secondary representation of an original.", "To reproduce someone's behavior or looks."], "duplicate": ["A second, identical instance; a copy that corresponds to an original exactly.", "To make a duplicate or duplicates of.", "To make or do or perform again."], "Bagnara di Romagna": ["A city in the Ravenna province of Italy."], "Day of the Dead": ["An ancient Aztec celebration of the memory of deceased ancestors that is celebrated on November 1 and 2."], "snow globe": ["A transparent glass sphere, usually containing a landscape inside, filled with water and artificial snow, which falls when shaken."], "jargon": ["Terminology which is especially defined in relationship to a specific activity, profession, group, or event."], "phonology": ["In linguistics, the study of the sound systems of specific languages."], "pragmatics": ["In linguistics, creation of the explanatory gap between sentence meaning and speaker's meaning."], "syntax": ["In linguistics, the study of the rules that govern the way words combine to form phrases and phrases combine to form sentences."], "Scotland": ["A country in northwest Europe, and one of the four constituent countries of the United Kingdom, occupying the northern third of the island of Great Britain, with capital Edinburgh."], "turmeric": ["A spice commonly used in curries and other South Asian cuisine.", "An plant native to South Asia with aromatic rhizomes, part of the ginger family (Zingiberaceae)."], "hobby horse": ["A topic about which someone loves to talk at great length.", "A child's toy consisting of a (usually wooden or cloth) horse head mounted on a stick."], "Northern Ireland": ["A country in western Europe, in the northeast of the island of Ireland, with capital Belfast."], "Great Britain": ["An island lying off the northwestern coast of mainland Europe, comprising the main territory of the United Kingdom."], "British Isles": ["An archipelago consisting of Great Britain, Ireland and several thousand small islands off the northwest coast of continental Europe."], "provide": ["To give what is needed or desired."], "tailor": ["Someone who professionally manufactures clothing.", "To style and tailor in a certain fashion."], "parrot": ["Any bird of the order Psittaciformes, many species of which are colourful and able to mimic human speech."], "adoption": ["A juridical process where a parent-child relation is created between persons that are not related in the first line.", "The act of approving something.", "Selection and use of something."], "share": ["A financial instrument that shows that you own a part of a company.", "The cutting blade of an agricultural machine like a plough, a cultivator or a seeding-machine.", "To give part of what one has to somebody else to use or consume.", "To have something in common.", "To communicate (an idea, an emotion, etc.) to someone.", "To use jointly or in common."], "paediatrician": ["A doctor who specializes in the care of infants and children, usually until the age of sixteen."], "teetotaller": ["One who abstains; especially, one who abstains from the use of alcoholic drinks."], "Wales": ["One of the constituent nations of the United Kingdom, occupying part of the southwestern portion of the island of Great Britain, with capital Cardiff."], "Britannia": ["The original name given to the island of Great Britain by the Roman Empire."], "ice fog": ["A type of fog which forms when very cold air flows over relatively warm water. The steam arising from the water sublimates directly into ice crystals."], "Kinshasa": ["Capital of the Democratic Republic of the Congo (DRC)."], "Brazzaville": ["Capital of the Republic of the Congo."], "ophthalmologist": ["A medical specialist who practises ophthalmology."], "bah": ["An interjection used to express disdain or contempt."], "troponym": ["A word or phrase that denotes a way of doing what is expressed by another word or phrase."], "meronym": ["A word or phrase that denotes something that is a part of what another word or phrase denotes."], "holonym": ["A word for the whole, when another word only denotes a part of it."], "cohyponym": ["A word or phrase that shares the same hypernym as another word or phrase."], "Democratic Republic of the Congo": ["A country in Central Africa whose capital is Kinshasa."], "Congo-Kinshasa": ["A country in Central Africa whose capital is Kinshasa."], "linguistics": ["The scientific study of human language."], "grammar": ["The study of rules governing the use of language.", "A textbook describing the rules of grammar of a language.", "A precise description of a formal language.", "The classification, and the system or set of structural rules that governs the composition, gestalt, and form of sentences, phrases, and words in any given natural or artificial human language. General and descriptive linguistics are researching and documenting them."], "parakeet": ["Any of several slender species of parrot."], "cut and paste": ["To delete text or other data in one document and insert it in the same or a different one."], "sophisticated": ["Ahead in development; very well considered, refined, using complex or complicated methods.", "Having obtained worldly knowledge, experience and refinement, and lacking naivet\u00e9."], "false cognate": ["A word in one language bearing a deceptive resemblance to a word in another language.", "A word that is similar in form or meaning to another word but has different roots."], "conjugation": ["In linguistics, the creation of derived forms of a verb from its principal parts by inflection.", "The union of gametes to form a zygote.", "The act of pairing a male and female for reproductive purposes."], "declension": ["In linguistics, a paradigm of inflected nouns and adjectives."], "morpheme": ["The smallest lingual unit that carries a semantic interpretation, usually a distinctive collocation of phonemes having no smaller meaningful members."], "free morpheme": ["A morpheme that can stand alone as an actual word."], "bound morpheme": ["A morpheme that can occur only when attached to a root morpheme."], "bitter": ["Being harsh or corrosive in tone.", "Having an acrid taste.", "That cannot be altered any more, harsh or sincerely disappointing, often psychologically hard to cope with and connected with an enduring negative feeling."], "duduk": ["A traditional woodwind musical instrument of Armenian origins."], "recorder": ["A whistle-like woodwind musical instrument with holes for seven fingers and one for the thumb of the uppermost hand."], "poisonous": ["That acts like a poison."], "phoneme": ["The smallest unit of sound which distinguishes meaning in a language.", "A cognitive abstraction of a meaningless physical unit of a spoken or signed word."], "dentist": ["A doctor specialised in dentistry."], "smuggle": ["To import or export, illicitly or by stealth, without paying lawful customs charges or duties.", "The clandestine transportation of goods or persons in violation of applicable laws or other regulations."], "cardiologist": ["Medical specialist who deals with prevention, diagnosis and treatment of heart diseases."], "reply": ["To communicate a message of any form in reaction to something that has been asked or expressed, to the being who expressed it.", "A statement (either spoken or written) that is made in reaction to a question, a request, criticism or accusation"], "brass": ["Any of several alloys made of copper and zinc with possible addition of other metallic elements, with the zinc percentage from 3 to 46. It is a hard bright yellow metal with an appearance somewhat similar to gold."], "red herring": ["A clue that is misleading or that has been falsified, intended to divert attention."], "Lingua Franca": ["An extinct language of Tunisia."], "fertile": ["Capable of reproducing.", "Capable of growing abundant crops.", "Producing abundantly."], "fecund": ["Capable of reproducing."], "flight": ["A journey made by a plane or space shuttle.", "The act of fleeing.", "The act of flying.", "A series of stair steps between landings.", "A formation of aircraft in flight.", "A flock of flying birds."], "flame": ["A bright yellow, red or bluish light which emerges during combustion processes."], "wax": ["(For a living being) To become bigger.", "A yellowish or dark brown wax secreted by honeybees for constructing honeycombs."], "Brittany": ["One of the six Celtic Nations; a former independent kingdom and duchy, and a province of France."], "Celtic Nations": ["Areas of Europe that are inhabited by members of Celtic cultures, specifically speakers of Celtic languages; Brittany, Cornwall, Ireland, Isle of Man, Scotland and Wales."], "Celtic nations": ["Areas of Europe that are inhabited by members of Celtic cultures, specifically speakers of Celtic languages; Brittany, Cornwall, Ireland, Isle of Man, Scotland and Wales."], "Six Nations": ["Areas of Europe that are inhabited by members of Celtic cultures, specifically speakers of Celtic languages; Brittany, Cornwall, Ireland, Isle of Man, Scotland and Wales."], "Isle of Man": ["An island located in the Irish Sea between Great Britain and Ireland."], "Mann": ["An island located in the Irish Sea between Great Britain and Ireland.", "A language spoken in Liberia and Guinea"], "committee": ["A group of persons convened for the accomplishment of some specific purpose, typically with formal protocols.", "A colleection of persons that were assigend a specific task, most often for a predetermined time, or to be completed within a given time frame, that is to find or determine something, make decisions, or steer towards a settlement that other are looking for and/or are going to use."], "liquid": ["A fundamental state of matter. Liquid is a state between solid and gaseous. A liquid can usually be contained within a glass or a similar container without allowing escape. A liquid can freeze to become a solid or evaporate into a gas.", "Existing as or having characteristics of a liquid."], "OLPC Children's Dictionary": ["Dictionary for the OLPC project"], "dermatologist": ["Medical specialist for disorders of the skin, the nails and the hair."], "Scarlet Caterpillarclub": ["Fungus that is member of the division Ascomycota, scientific name: Cordyceps militaris."], "sweathouse": ["A room, often with wooden walls, which is designed for heating dry air and where steam may be produced by pouring water over hot stones."], "sudatory": ["A room, often with wooden walls, which is designed for heating dry air and where steam may be produced by pouring water over hot stones."], "steambath": ["A room, often with wooden walls, which is designed for heating dry air and where steam may be produced by pouring water over hot stones."], "sea of lights": ["Great number of lights situated closely together."], "cloudcuckooland": ["A fantasy world completely out of touch with reality which someone imagines."], "town twinning": ["A concept whereby towns or cities in geographically and politically distinct areas are paired with the goal of fostering human contact and cultural links."], "expectation": ["That which is expected or looked for."], "withdrawal symptom": ["Any physical or psychological disturbance (as sweating or depression) experienced by a addict when deprived of his addiction."], "illuminate": ["To give light to (something)."], "Zanzibar": ["Archipelago off the coast of Tanzania in the Indian Ocean."], "speech therapist": ["A therapist who treats speech defects and disorders."], "Venice": ["City and port in the province of Venice.", "A province in the Veneto region of Italy."], "Destination Italy": ["Collaboration with Uni Bamberg."], "urologist": ["A specialist in urology."], "mathematician": ["A scientist who practices mathematics."], "Marwari": ["An Indo-Aryan language spoken in the Indian state of Rajasthan, and also in the neighboring state of Gujarat and in Eastern Pakistan.", "A language spoken in Pakistan."], "death penalty": ["The judicially ordered execution of a person as a punishment for a serious crime."], "capital punishment": ["The judicially ordered execution of a person as a punishment for a serious crime."], "executioner": ["The person who carries out corporal punishments on a convict including the death penalty."], "skeleton": ["The structure that provides support to an organism, internal and made up of bones and cartilage in vertebrates, external in some other animals.", "A frame that provides support to a building or other structure."], "neptunium": ["A chemical element with symbol Np and atomic number 93, a silvery radioactive metallic actinide."], "hanging": ["A form of execution or suicide where one is suspended in air from a noose and, thus, suffocated.", "A public event at which a person is hanged."], "noose": ["An adjustable loop of rope."], "oncologist": ["A physician specializing in cancer diagnosis and treatment."], "brewer": ["Someone who makes beer."], "onager": ["Large mamal from Asia (Equus hemionus), belonging to the horse family."], "mule": ["The offspring of a male donkey and a female horse."], "fairy tale": ["A folktale featuring fairies or similar fantasy characters."], "apartment": ["Self-contained housing unit that occupies only part of a building. It may be owned or rented."], "prime number": ["A natural number which has exactly two natural number divisors, namely 1 and the prime number itself."], "ivory tower": ["A sheltered, overly-academic existence or perspective, implying a disconnection or lack of awareness of reality or practical considerations."], "alchemy": ["An early proto-scientific practice combining elements of chemistry, physics, astrology, art, semiotics, metallurgy, medicine, mysticism, and religion."], "forgiveness": ["Act of forgiving; act of stopping blaming someone for an offense."], "clemency": ["Leniency and compassion shown toward offenders by a person or agency charged with administering justice."], "Betta Kurumba": ["A language spoken in the Indian states of Karnataka, Kerala and Tamil Nadu."], "lascivious": ["Preoccupied with or exhibiting lustful desires."], "lewd": ["Preoccupied with or exhibiting lustful desires."], "wanton": ["Preoccupied with or exhibiting lustful desires.", "Stuffed dough wrap found in Chinese cuisine."], "Nagorno-Karabakh": ["A predominantly Armenian de facto independent republic in the South Caucasus, officially part of and wholly within the Republic of Azerbaijan"], "voting machine": ["A technical device that is used for casting or counting votes in an election."], "adjustment": ["A small change.", "The result of a modification."], "douche": ["A device used to introduce a stream of water into the body for medical or hygienic reasons."], "Sealand": ["A self-proclaimed micronation located off the coast of Suffolk, England."], "Principality of Sealand": ["A self-proclaimed micronation located off the coast of Suffolk, England."], "micronation": ["An entity that resembles an independent nation or state, unrecognized by them, and exists only on paper or on the Internet."], "de facto": ["(Of a common practice) That is well established, but not quite universal or defined by law."], "Kosovo": ["A province in southern Serbia governed by the United Nations Mission in Kosovo, not the Serbian government."], "enclave": ["A country or part of a country lying wholly within the boundaries of another."], "exclave": ["A part of a country politically attached to a larger piece but not actually contiguous with it."], "Kaliningrad": ["A Russian seaport on the Baltic Sea, an exclave between Poland and Lithuania."], "K\u00f6nigsberg": ["A Russian seaport on the Baltic Sea, an exclave between Poland and Lithuania."], "Kyonigsberg": ["A Russian seaport on the Baltic Sea, an exclave between Poland and Lithuania."], "landlocked country": ["A country that has no direct access to a sea or an ocean."], "landlocked sea": ["A sea that is either not at all or not directly connected to an ocean."], "doubly landlocked country": ["A landlocked country that is surrounded entirely by other landlocked countries."], "Principality of Liechtenstein": ["A small, doubly landlocked country in Central Europe whose capital is Vaduz."], "America": ["Continent which extends on a great part of the Occidental Hemisphere of the Earth, from the Artic Ocean in the North, to the Cape Horn in the South at the confluence of the Atlantic and Pacific Oceans, which delimits the continent on the East and West respectively.", "A country and federal republic in North America located north of Mexico and south of Canada, including Alaska, Hawaii and overseas territories."], "U.S.": ["A country and federal republic in North America located north of Mexico and south of Canada, including Alaska, Hawaii and overseas territories."], "U.S.A.": ["A country and federal republic in North America located north of Mexico and south of Canada, including Alaska, Hawaii and overseas territories."], "U.S. of A.": ["A country and federal republic in North America located north of Mexico and south of Canada, including Alaska, Hawaii and overseas territories."], "States": ["A country and federal republic in North America located north of Mexico and south of Canada, including Alaska, Hawaii and overseas territories."], "Gaza Strip": ["A narrow coastal strip of land along the Mediterranean, officially occupied by Israel but with a predominant Arab population."], "West Bank": ["A landlocked territory on the west bank of the Jordan River, officially occupied by Israel but with a predominant Arab population."], "Levant": ["An imprecise geographical term historically referring to a large area in the Middle East south of the Taurus Mountains, bounded by the Mediterranean Sea on the west, and by the northern Arabian Desert and Upper Mesopotamia to the east."], "Austrian German": ["All Austrian linguistical characteristic of the German standard language."], "French Swiss": ["The variety of French spoken in the in an area of Switzerland known as Romandy."], "Canadian French": ["The variety of French spoken in Canada and areas of French Canadian settlement in the United States."], "Belgian French": ["The variety of French spoken in Belgium.", "Variety of French spoken by the French speakers of Belgium.", "French as spoken in Belgium."], "American English": ["The dialect of the English language used mostly in the United States of America."], "AmE": ["The dialect of the English language used mostly in the United States of America."], "United States English": ["The dialect of the English language used mostly in the United States of America."], "U.S. English": ["The dialect of the English language used mostly in the United States of America."], "British English": ["The dialect of the English language used mostly in the British Isles."], "BrE": ["The dialect of the English language used mostly in the British Isles."], "Alemannic German": ["Any of the Alemannic dialects spoken in Switzerland, in Liechtenstein, in Vorarlberg, in Southern Baden, in Southern Allg\u00e4u, and in Alsace."], "cocktail": ["Style of mixed drink, usually containing two or more types of liquor and flavorings."], "pilot": ["A person who flies an aircraft."], "Breton": ["A Celtic language spoken by some of the inhabitants of Brittany and Loire-Atlantique."], "depression": ["An area that is lower in topography than its surroundings.", "An area of lowered air pressure that generally brings moist weather.", "State of physical and/or psychological dejectedness, which can lead to unhappiness, pessimism and mistrust.", "A period of time with economy at near standstill, characterized by high unemployment and low levels of investment."], "gild": ["To coat with a thin layer of gold.", "A formal association of people with similar interests."], "Yoruba": ["A sub-Saharan language. It belongs to the Benue-Congo branch of the Niger-Congo language family, and has nearly 30 million speakers in Nigeria, Benin, Togo and Sierra Leone, as well as communities in Brazil and Cuba."], "anaconda": ["Any of various large non-venomous snakes of the genus Eunectes, found mainly in northern South America."], "blood sedimentation": ["A medical test where the speed with which the red blood cells sink to the bottom of a test tube is measured."], "phishing": ["Sending email that falsely claims to be from a legitimate organisation."], "conversation": ["The back-and-forth play of the blades in a bout.", "The use of speech for informal exchange of views or ideas or information etc."], "time loop": ["A fictional situation in which time runs normally for a set period but then skips back and repeats again."], "bathing": ["The process of cleaning something in water.", "The act of swimming.", "The process of dipping an object in a pool of liquid."], "emoticon": ["A graphical representation, either in the form of an image or made up of ASCII characters."], "smiley": ["A graphical representation, either in the form of an image or made up of ASCII characters."], "percolate": ["To pass a liquid gradually through small spaces or a porous substance."], "constitution": ["A system, often a written document, which establishes the rules and principles by which an organization, or political entity, is governed.", "The set of legal rules that govern the basic structures of the state and its relations with citizens"], "Baltic country": ["A country in the general area surrounding the Baltic Sea."], "Baltic Sea country": ["A country in the general area surrounding the Baltic Sea."], "Baltic state": ["A country in the general area surrounding the Baltic Sea."], "substantive": ["A word that can be used to refer to a person, place, thing, quality, or idea; a part of speech. It can serve as the subject or object of a verb. For example, a table or a computer."], "dongle": ["A hardware device utilised by a specific application for purposes of copy protection."], "impunity": ["Exemption from punishment."], "Gagauz": ["A Turkic language spoken by the Gagauz people in Moldova, Ukraine, Bulgaria and Romania."], "wisent": ["A bison species, Bison bonasus, and the heaviest land animal in Europe."], "contagious": ["Having a disease that can be easily passed on to others."], "aid": ["Action given to provide assistance.", "To give assistance or aid to."], "ruffe": ["A freshwater fish (Gymnocephalus cernuus) found in temperate regions of Europe and northern Asia."], "gingerbread": ["Sweet whose main flavouring is ginger."], "email": ["Information or message that is transmitted or exchanged from one computer terminal to another, through telecommunication.", "To compose and send an electronic message."], "e-mail": ["Information or message that is transmitted or exchanged from one computer terminal to another, through telecommunication.", "To compose and send an electronic message."], "council": ["Consulting or decisive insititution, composed of more than one person, national or international, private or public, with different scopes.", "A group of people who usually possess some powers of governance."], "counsel": ["A person who gives advice, more particularly in legal matters.", "Something that provides direction or advice as to a decision or course of action."], "councilman": ["A male councillor."], "councilwoman": ["A female councillor."], "city council": ["A form of local government which proposes bills, holds votes, and passes laws to help govern a city."], "Nazi": ["An advocate of the ideologies of Nazism."], "nazi": ["An advocate of the ideologies of Nazism."], "national socialist": ["An advocate of the ideologies of Nazism."], "millisecond": ["One thousandth of a second."], "microsecond": ["One millionth of a second."], "annual": ["Occuring once every year.", "A book of which a new edition is published every year."], "yearly": ["Occuring once every year."], "per annum": ["Occuring once every year."], "biannual": ["Occuring twice every year.", "Occurring every two years."], "half-yearly": ["Occuring twice every year.", "Occuring every six months."], "semiannual": ["Occuring twice every year."], "biennial": ["Occurring every two years.", "Lasting two years."], "centennial": ["The 100th anniversary of an event or happening.", "Occuring every 100 years."], "bicentennial": ["The 200th anniversary of an event or happening.", "Occuring every 200 years."], "swimming": ["The act of swimming."], "semestral": ["Occuring every six months."], "nanosecond": ["One billionth of a second."], "picosecond": ["One millionth of one millionth of a second."], "femtosecond": ["One billionth of one millionth of a second."], "attosecond": ["One billionth of one billionth of a second."], "zeptosecond": ["One trillionth of one billionth of one second."], "yoctosecond": ["One trillionth of one trillionth of a second."], "improvisation": ["The act of inventing all or part of a process while it is being performed."], "thermometer": ["A device which measures temperature or temperature gradient."], "temperature gradient": ["A physical quantity that describes in which direction and at what rate the temperature changes the most rapidly around a particular location."], "thermostat": ["A device used to maintain the temperature of a system at a desired setpoint temperature."], "setpoint": ["The target value that an automatic control system will aim to reach."], "cohabitation": ["In semi-presidential systems of government, when the President and the Prime Minister come from different political parties.", "An emotionally and physically intimate relationship which includes a common living place and which exists without legal or religious sanction.", "The act of living together."], "geologist": ["A scientist who studies the origin, history, and structure of the earth."], "shampoo": ["A liquid soap product for washing hair or other fibres."], "shibboleth": ["A word, especially seen as a test, to distinguish someone as belonging to a particular nation, class, profession etc. It use derives from an account in the Bible (Judges 12:5-6)."], "sale": ["The sale of goods at reduced prices.", "An exchange of goods or services for currency or credit."], "anaesthesist": ["A medical specialist who deals with anesthetizing patients for operations or for pain."], "ney": ["An end-blown flute that figures prominently in Middle Eastern music."], "tombak": ["A goblet drum from Persia."], "golden": ["Having the color of gold.", "Made of gold."], "horror movie": ["A movie that is supposed to elicit feelings of fear, horror and disgust from the viewer."], "sod off": ["To tell someone to go away."], "horror film": ["A movie that is supposed to elicit feelings of fear, horror and disgust from the viewer."], "necrophilia": ["A paraphilia characterized by a sexual attraction to corpses."], "thanatophilia": ["A paraphilia characterized by a sexual attraction to corpses."], "necrolagnia": ["A paraphilia characterized by a sexual attraction to corpses."], "paraphilia": ["A family of philias that reference sexual arousal from objects or situations which may not have the capacity for reciprocal affectionate sexual activity."], "sexual deviation": ["A family of philias that reference sexual arousal from objects or situations which may not have the capacity for reciprocal affectionate sexual activity."], "pedophilia": ["A paraphilia characterized by a sexual attraction to prepubescent children."], "paedophilia": ["A paraphilia characterized by a sexual attraction to prepubescent children."], "p\u00e6dophilia": ["A paraphilia characterized by a sexual attraction to prepubescent children."], "crack": ["A thin and usually jagged space opened in a previously solid material.", "A narrow opening.", "A variety of cocaine, often a rock, usually smoked through a crack-pipe.", "To form cracks.", "The groove between the buttocks."], "crevice": ["A thin and usually jagged space opened in a previously solid material.", "A narrow opening."], "crack cocaine": ["A variety of cocaine, often a rock, usually smoked through a crack-pipe."], "cleft": ["A thin and usually jagged space opened in a previously solid material."], "president": ["The title of one who presides over an organisation, company, trade union, university, country, etc.", "The presiding officer of a meeting, organization, committee, or other deliberative body."], "ice skating": ["Activity consisting of moving on ice with skates."], "rhodopsin": ["Light-sensitive retinal photoreceptor molecule."], "cynology": ["Study of dogs and breeds of dogs."], "stormy": ["Prone to thunderstorms.", "Caused by a thunderstorm, in the manner of a thunderstorm.", "Very windy, with storm."], "philia": ["A psychological disorder characterized by an irrational favorable disposition towards something."], "empirical": ["Relying upon or derived from observation or experiment."], "adposition": ["A grammatical element that combines syntactically with a phrase and indicates how that phrase should be interpreted in the surrounding context."], "predicate": ["One of the two main parts of a sentence used as an expression that can be true of something.", "To affirm or declare as an attribute or quality of."], "Pole": ["A person of Polish nationality."], "Serb": ["A person of Serbian nationality."], "Montenegrin": ["The Ijekavian-\u0160tokavian dialect spoken in Montenegro, considered as a separate language by some and a dialect of the Serbian language by others.", "A person of Montenegrin nationality.", "Of or relating to Montenegro, Montenegrins, or the Montenegrin language."], "\u0160tokavian": ["The primary dialect of the Central South Slavic languages system, spoken in Serbia, Montenegro, Bosnia and Hercegovina, and the greater part of Croatia."], "Shtokavian": ["The primary dialect of the Central South Slavic languages system, spoken in Serbia, Montenegro, Bosnia and Hercegovina, and the greater part of Croatia."], "Kajkavian": ["One of the three dialects of Croatian language, spoken in the northwestern parts of Croatia and a few parts of Austria, Hungary and Romania."], "\u010cakavian": ["One of the three dialects of Croatian language, spoken in Istria, the Adriatic sea coast, Dalmatian littoral and the islands."], "Chakavian": ["One of the three dialects of Croatian language, spoken in Istria, the Adriatic sea coast, Dalmatian littoral and the islands."], "Torlakian": ["The Slavic dialects spoken in Southern and Eastern Serbia, Northwest Republic of Macedonia, and Northwest Bulgaria."], "Serbo-Croatian": ["An umbrella term for dialects spoken by Serbs and Croats, Bosniaks, and Montenegrins."], "Croato-Serbian": ["An umbrella term for dialects spoken by Serbs and Croats, Bosniaks, and Montenegrins."], "Serbo-Croat": ["An umbrella term for dialects spoken by Serbs and Croats, Bosniaks, and Montenegrins."], "Croat": ["A person of Croatian nationality."], "Bosniak": ["A person with nationality from Bosnia and Herzegovina or the Sand\u017eak region of Serbia and Montenegro."], "Herzegovina": ["A historical and geographical region in the Dinaric Alps that comprises the southern part of present-day Bosnia and Herzegovina."], "Bosnia": ["A historical and geographical region in the Dinaric Alps and the Pannonian plain that comprises the northern part of present-day Bosnia and Herzegovina."], "Gorani": ["A dialect spoken by Kurds in the Iranian provinces of Kurdistan and Kermanshah, the Halabja region of Iraqi Kurdistan, and the Hewraman mountains."], "Goran": ["A person with nationality originating from the Gora region of Kosovo."], "Yugoslavia": ["Three separate political entities that existed on the Balkan Peninsula in Europe during most of the 20th century."], "Yugoslav": ["A person of Yugoslav nationality.", "Of or relating to Yugoslavia or Yugoslavs."], "foreplay": ["A set of intimate acts, which takes place before sexual acts are performed, between two or more people meant to increase sexual arousal."], "Venus": ["The second planet (counted from the center) of our solar system.", "The Roman goddess of love, erotic desire and beauty."], "Earth": ["The third planet (counted from the center) of our solar system."], "Jupiter": ["The fifth planet (counted from the center) of our solar system.", "The chief deity of Roman state religion throughout the Republican and Imperial eras."], "Saturn": ["The sixth planet (counted from the center) of our solar system."], "Uranus": ["The seventh planet (counted from the center) of our solar system."], "Neptune": ["The eighth planet (counted from the centre) and outermost of our solar system.", "The god of water and the sea in Roman mythology."], "autumn storm": ["A storm in autumn."], "Markov property": ["The conditional probability distribution of the state in the future that, given the state of the process currently and in the past, depends only on its current state and not on its state in the past."], "Markov chain": ["Sequence of random variables (Xn) satisfying the Markov property, that is, such that Xn+1 (the future) depends only on Xn (the present) and not on Xk for k <= n-1 (the past)."], "upstage": ["Draw attention to oneself away from someone else."], "flagship": ["A ship led by the fleet commander.", "The most important one out of a related group."], "gamekeeper": ["A person who has to ensure that the hunting law is respected."], "intractable": ["Not easy to be drawn or guided by persuasion.", "Of a problem. Can be solved in theory (e.g., given arbitrarily long time), but which in practice takes too long for their solutions to be useful."], "reminiscent": ["Suggestive of an earlier event or earlier times."], "concise": ["Expressing much with little to no extraneous detail or words."], "angle": ["A figure formed by two rays which start from a common point (a plane angle) or by three planes that intersect (a solid angle).", "The edge where two converging walls meet.", "A way of looking at something."], "Lett": ["A person of Latvian nationality."], "Austrian": ["Of or relating to Austria, Austrians, or the collection of Austrian German dialects.", "A person of Austrian nationality.", "A woman of Austrian nationality of descent."], "Swiss": ["Of or relating to Switzerland, Swiss, or the Swiss dialects of German and French.", "A person of Swiss nationality."], "Belgian": ["A person of Belgian nationality.", "Of or relating to Belgium, Belgians, or the Belgian dialects of French and German."], "British": ["Of or relating to Great Britain, Brits, or the British English language."], "Brit": ["A person of British nationality."], "Icelander": ["A person of Icelandic nationality."], "Turk": ["A person of Turkish nationality."], "Greenlandic": ["An Eskimo-Aleut language spoken in Greenland.", "Of or relating to Greenland, Greenlanders, or the Kalaallisut language."], "Greenlander": ["A person of Greenlandic nationality."], "American": ["A female with American nationality.", "Of or pertaining to the United States of America, Americans, or the American English language.", "A person of American nationality."], "Mexican": ["A person of Mexican nationality.", "Of or pertaining to Mexico or Mexicans."], "same-sex marriage": ["The union of two people who are of the same biological sex or gender.", "Marriage between two persons of the same biological gender."], "gay marriage": ["The union of two people who are of the same biological sex or gender.", "Marriage between two persons of the same biological gender."], "homosexual marriage": ["The union of two people who are of the same biological sex or gender."], "Markoff chain": ["Sequence of random variables (Xn) satisfying the Markov property, that is, such that Xn+1 (the future) depends only on Xn (the present) and not on Xk for k <= n-1 (the past)."], "Bislama": ["A language spoken in Vanuatu and New Caledonia"], "chide": ["To censure severely or angrily."], "dress down": ["To censure severely or angrily."], "censure": ["Issuing a formal reprimand by an authoritative body or person."], "tow": ["To pull something behind one using a line or chain."], "target": ["A reference point to shoot at.", "A person who is the aim of an attack (especially a victim of ridicule or exploitation) by some hostile person or influence.", "The goal intended to be attained (and which is believed to be attainable)."], "Corsican": ["A language spoken in France and Italy."], "Walloon": ["A language spoken in Belgium."], "cappuccino": ["An Italian coffee-based beverage made from espresso and milk that has been steamed and/or frothed."], "latte": ["A drink of coffee prepared from one or two shots of espresso mixed with steamed milk and topped with foam."], "adobe": ["An unburnt brick dried in the sun made of clay and dried grasses.", "Made of adobe.", "The clay from which adobe bricks are made."], "adultery": ["Sex by a married person with someone other than their spouse."], "alfalfa": ["(Medicago sativa) A plant, grown as a pasture crop."], "angel": ["A divine and supernatural messenger from a deity, or other divine entity.", "In Christian angelology, the lowest order of angels, below virtues."], "unital ring": ["An algebraic structure with an addition operation constituting an abelian group and with a multiplication operation constituting a monoid and distributive over addition."], "unitary ring": ["An algebraic structure with an addition operation constituting an abelian group and with a multiplication operation constituting a monoid and distributive over addition."], "ring with unity": ["An algebraic structure with an addition operation constituting an abelian group and with a multiplication operation constituting a monoid and distributive over addition."], "associative unital ring": ["An algebraic structure with an addition operation constituting an abelian group and with a multiplication operation constituting a monoid and distributive over addition."], "associative unitary ring": ["An algebraic structure with an addition operation constituting an abelian group and with a multiplication operation constituting a monoid and distributive over addition."], "associative ring with unity": ["An algebraic structure with an addition operation constituting an abelian group and with a multiplication operation constituting a monoid and distributive over addition."], "nonassociative ring": ["An algebraic structure with an addition operation constituting an abelian group and with a multiplication operation distributive over addition."], "column": ["Anything having the form of a beam.", "An article in a publication giving the opinion of its author on a given topic or current event.", "A series of cells or entries in a table, going vertically.", "An upright supporting beam."], "editorial": ["An article in a publication giving the opinion of its author on a given topic or current event."], "yellow journalism": ["A type of journalism where news media organizations or individual journalists display unethical or unprofessional practices."], "news presenter": ["A person that presents a news show on television, radio or the Internet."], "newsreader": ["A news presenter whose role it is to read the news."], "newscaster": ["A presenter of a news bulletin who is a working journalist and news gatherer, participanting in compiling the script to be delivered in a news bulletin."], "news anchor": ["A television personality who presents material prepared for a news program and at times must improvise commentary for live presentation."], "anchor": ["A television personality who presents material prepared for a news program and at times must improvise commentary for live presentation.", "An object, usually a heavy piece of metal with points which dig into the sea-bed, used to hold a boat in one position."], "anchorperson": ["A television personality who presents material prepared for a news program and at times must improvise commentary for live presentation."], "anchorman": ["A television personality who presents material prepared for a news program and at times must improvise commentary for live presentation."], "anchorwoman": ["A television personality who presents material prepared for a news program and at times must improvise commentary for live presentation."], "associative ring": ["An algebraic structure with an addition operation constituting an abelian group and with a multiplication operation constituting a semigroup and distributive over addition."], "treason": ["The crime of disloyalty to one's nation or state.", "The breaking or violation of a presumptive social contract, trust, or confidence that produces moral and psychological conflict within a relationship amongst individuals, between organizations or between individuals and organizations."], "badger": ["Any of several carnivorous burrowing animals of the family Mustelidae."], "Santa Claus": ["Symbol of Christmas gift-giving."], "jurist": ["An expert in law."], "contention": ["Ratio of network connection users who share a set amount of bandwidth.", "Competition by users of a system for use of the same facility at the same time."], "oversubscription": ["Competition by users of a system for use of the same facility at the same time."], "contention ratio": ["Competition by users of a system for use of the same facility at the same time.", "Ratio of network connection users who share a set amount of bandwidth."], "anatomist": ["One who studies, teaches, writes on, or does research on anatomy."], "bowling pin": ["An item that is placed on the end of a bowling alley, and which one can then try to strike and topple with a bowling ball."], "emotion": ["A person's internal state of being, normally based in or tied to their internal (physical) and external (social) sensory feelings."], "sum": ["The total of two or more quantities."], "trivial": ["Of little significance or value."], "audiobook": ["A recording of the reading of a book."], "Koch": ["A language spoken in India and Bangladesh."], "doily": ["A small, decorative mat (made of cotton or lace) that is placed underneath objects to protect the surface."], "holy water": ["Water blessed by a priest that is used for symbolic purification."], "aspergillum": ["A tool used to sprinkle holy water."], "aspergill": ["A tool used to sprinkle holy water."], "holy water sprinkler": ["A tool used to sprinkle holy water."], "Roma": ["A language of Indonesia, spoken in the Roma Island, part of the Maluku Islands.", "A province in the Lazio region of Italy."], "sunless": ["Without sunshine."], "Wawonii": ["A language of Indonesia (Sulawesi)"], "aspen": ["A kind of poplar tree (genus Populus; section Populus)."], "berry": ["A soft fruit which develops from a superior ovary and contains seeds not encased in pits."], "Puma": ["A language of the Kiranti family of Tibeto-Burman, spoken in the south and south-east of the Everest region in Nepal.", "ISO 639-6 entity"], "Manx": ["An extinct language that was spoken on the isle of Man, currently experiencing a revival.", "Of or pertaining to the Isle of Man, its inhabitants or language."], "respond": ["To communicate a message of any form in reaction to something that has been asked or expressed, to the being who expressed it."], "crest": ["A tuft of fur present on the head of certain birds."], "dad": ["Children word for \"father\"."], "town hall": ["Mayor's office."], "riverside": ["Along the river."], "unfortunately": ["In an unfortunate manner."], "fortunately": ["By fortunate luck."], "coward": ["A person who lacks courage.", "Lacking courage."], "Gana": ["A language of Malaysia"], "resolve": ["To understand the meaning of.", "To bring to an end; to settle conclusively."], "boring": ["Causing boredom.", "A pit or hole which has been bored."], "Holy Spirit": ["In Christianity the third consubstantial person of God and part of the Holy Trinity."], "Holy Ghost": ["In Christianity the third consubstantial person of God and part of the Holy Trinity."], "Trinity": ["Representation in which God is considered as being three persons: the Father, The Son and the Holy Spirit."], "tiler": ["A person who lays tiles."], "intransitive verb": ["An action verb not taking a direct object."], "transitive verb": ["A verb that is accompanied (either clearly or implicitly) by a direct object in active sentences. It links the action taken by the subject with the object upon which that action is taken. Consequently, it may be used in a passive voice."], "ditransitive verb": ["A verb that requires (in the unmarked form) both a direct object and an indirect object so as to be grammatical."], "Akposo": ["A Kwa-language spoken in Ghana and Togo."], "Ikposo": ["A Kwa-language spoken in Ghana and Togo."], "plasterer": ["A person whose occupation is to plaster walls."], "midwife": ["A person, usually a woman, who is trained to assist women in childbirth, but who is not a physician.", "A woman who assists women in having their babies at home."], "old woman": ["An old woman."], "mother-in-law": ["The mother of someone's spouse."], "auxiliary verb": ["A verb that accompanies the main verb in a clause in order to make distinctions in tense, mood, voice or aspect."], "helping verb": ["A verb that accompanies the main verb in a clause in order to make distinctions in tense, mood, voice or aspect."], "irregular verb": ["A verb that does not follow the normal rules for its conjugation."], "regular verb": ["A verb whose conjugation can be predicted given a few verb forms (principal parts) and a few rules."], "pharmacist": ["Somebody who professionally prepares and sells pharmaceuticals."], "az": ["The first letter of the Glagolitic alphabet."], "facade": ["The face of a building.", "The terminal part of the facade of a building - especially the classical temples - usually triangular."], "telephone call": ["A conversation by a connection over a telephone network."], "phone call": ["A conversation by a connection over a telephone network."], "grenade": ["A small hand-held bomb designed to be thrown by hand or fired from a grenade launcher."], "hand grenade": ["A small hand-held bomb designed to be thrown by hand or fired from a grenade launcher."], "bookmark": ["A thin marker used to keep one's place in a printed work and to be able to return to it with ease.", "A user's reference to a document on the World-Wide Web or other hypermedia system, usually in the form of a URL and a title or comment string."], "lesbian": ["A homosexual female."], "syllogism": ["An inference in which one proposition (the conclusion) follows necessarily from two other propositions, known as the premises."], "biologist": ["A scientist who practises biology."], "diatribe": ["A speech or writing which bitterly denounces something."], "expos\u00e9": ["Publication of some disreputable facts."], "Standard Arabic": ["A Semitic language spoken primarily throughout the Arab world - North Africa and the Middle East - and as the liturgical language of the Islam."], "Guerrero Amuzgo": ["A language of Mexico"], "scientific": ["Of, or pertaining to science.", "Having the quality of being derived from, or consistent with, the scientific method."], "rubbish": ["Something being said without sense, utterly wrong, of no use at all.", "Unwanted or undesired material, usually discarded."], "trash": ["Some information or idea or something said of questionable value or no value at all."], "garbage": ["Worthless object of bad quality.", "Memory allocated by a program that will not be accessed in any future execution of a given program."], "refuse": ["Unwanted or undesired material, usually discarded.", "To not want to do what is being asked."], "Lusatia": ["A historical region between the B\u00f3br and Kwisa rivers and the Elbe river in the eastern German states of Saxony and Brandenburg, south-western Poland and the northern Czech Republic."], "Saxony": ["A federal state of Germany, located in the east, with capital Dresden."], "Santa Cruz": ["A language of the Solomon Islands."], "anthropologist": ["An specialist in anthropology or someone professionally dedicated to it."], "death": ["The end of life.", "The death of a person."], "Farsi": ["An Indo-European language spoken mainly in Iran.", "A macrolanguage consisting of Farsi and Dari."], "leftmost": ["Furthest to the left."], "rightmost": ["Furthest to the right."], "Bokm\u00e5l": ["One of two official writing standards of Norwegian, derived from Danish, the other being Nynorsk."], "Epidermolysis bullosa": ["Genetic skin disease characterized by the appearance of blisters on the skin, and a very delicate skin."], "censorship": ["The control and monitoring of content and suppression of unwanted content exercized by a government or another influential organisation."], "hangar": ["A structure designed to hold aircraft in protective storage."], "yardstick": ["A tool used to physically measure lengths of up to one yard."], "metrication": ["The introduction of the SI metric system as the international standard for physical measurements."], "metrification": ["The introduction of the SI metric system as the international standard for physical measurements."], "globular": ["Shaped like a sphere."], "hexagonal": ["Having six edges, or having a cross-section in the form of a hexagon."], "pentagonal": ["Having five edges, or having a cross-section in the form of a pentagon."], "octagonal": ["Having eight edges, or having a cross-section in the form of an octagon."], "heptagonal": ["Having seven edges, or having a cross-section in the form of a heptagon."], "decagonal": ["Having ten edges, or having a cross-section in the form of a decagon."], "dodecagonal": ["Having twelve edges, or having a cross-section in the form of a dodecagon."], "nonagonal": ["Having nine edges, or having a cross-section in the form of an enneagon."], "polygonal": ["Having multiple edges, or having a cross-section in the form of a polygon."], "assassination": ["The deliberate and usually public murder of a political, public or other significant figure."], "intimately": ["In an intimate manner."], "paternity test": ["A medical test used to determine whether a man is the biological father of a child."], "cedar": ["A coniferous tree of the genus Cedrus in the coniferous plant family Pinaceae."], "cottonwood": ["A number of species of tree in the genus Populus (poplars), typically growing along watercourses."], "coyote": ["(Canis latrans) A member of the Canidae family native to North America."], "crow": ["A bird, usually black, of the genus Corvus, having a strong conical beak, with projecting bristles; it has a harsh, croaking call.", "An instance of boastful talk.", "To utter the characteristic cry of a rooster."], "Thanksgiving": ["An annual one-day American holiday (taking place on the last Thursday of the month of November) to give thanks for the things one has at the close of the harvest season, traditionally celebrated with a turkey feast."], "Thanksgiving Day": ["An annual one-day American holiday (taking place on the last Thursday of the month of November) to give thanks for the things one has at the close of the harvest season, traditionally celebrated with a turkey feast."], "sculptor": ["a person who practices the art of sculpture."], "precede": ["To occur before something else, the fact that something occured earlier.", "To move ahead (of others) in time or space."], "Campania": ["Region in the South of Italy, bordering on Latium to the north-west, Molise to the north, Apulia to the north-east, Basilicata to the east, and the Tyrrhenian Sea to the west."], "Amalfi Coast": ["Geographical region in the region of Campania, province of Salerno, Italy."], "Salerno": ["City in the province of Salerno, region Campania, Italy.", "A province in the Campania region of Italy."], "hegemony": ["The dominance of one group, usually a nation, over other groups."], "attraction": ["A force that moves one object to another.", "The quality of arousing interest (being attractive or something that attracts)."], "basin": ["A bowl for washing hands, dishwashing or other purposes, often affixed to a wall.", "An area of water that drains into a river.", "A rock formation scooped out by water erosion.", "A natural depression in the surface of the land often covered with water (e.g. forming a lake).", "A bathroom or lavatory sink that is permanently installed and connected to a water supply and drainpipe."], "linen": ["A material made from the fibers of the flax plant."], "canvas": ["An extremely heavy-duty fabric popularly used as a painting surface."], "campus": ["The area in which a college or university and surrounding buildings are situated."], "myriagon": ["A polygon with 10,000 sides."], "chiliagon": ["A polygon with 1000 sides."], "hectagon": ["A polygon with 100 sides."], "pentacontagon": ["A polygon with 50 sides."], "tricontagon": ["A polygon with 30 sides."], "icosihenagon": ["A polygon with 21 sides."], "icosagon": ["A polygon with 20 sides."], "enneadecagon": ["A polygon with 19 sides."], "enneakaidecagon": ["A polygon with 19 sides."], "nonadecagon": ["A polygon with 19 sides."], "heptadecagon": ["A polygon with 17 sides."], "17-gon": ["A polygon with 17 sides."], "hexadecagon": ["A polygon with 16 sides."], "hexakaidecagon": ["A polygon with 16 sides."], "pentadecagon": ["A polygon with 15 sides."], "triskaidecagon": ["A polygon with 13 sides."], "dodecagon": ["A polygon with 12 sides."], "hendecagon": ["A polygon with eleven sides and eleven angles."], "decagon": ["A polygon with ten sides."], "enneagon": ["A polygon with nine sides."], "nonagon": ["A polygon with nine sides."], "octagon": ["A polygon with eight sides."], "hendecagonal": ["Having eleven sides, or having a cross-section in the form of a hendecagon."], "snowman": ["A manlike figure formed out of snow."], "snowball": ["Ball made of snow."], "arrogant": ["Having extreme self-confidence and overbearing pride.", "Having too high an opinion of oneself; showing superiority."], "presumptuous": ["Having extreme self-confidence and overbearing pride."], "cocksure": ["Having extreme self-confidence and overbearing pride."], "enneagonal": ["Having nine edges, or having a cross-section in the form of an enneagon."], "heptagon": ["A polygon with seven sides.", "(geometry) A polygon with seven sides and seven angles."], "hexagon": ["A polygon with six sides."], "pentagon": ["A polygon with five sides."], "triangular": ["Having three edges, or having a cross-section in the form of a triangle."], "quadrilateral": ["A polygon with four sides."], "kite": ["A flying tethered man-made object.", "A quadrilateral with two pairs of equal adjacent sides whose diagonals are perpendicular.", "A forbidden written message of one prisoner to another or to a person outside of prison."], "cabinet": ["A body of top government officials appointed to advise the President or the chief executive officer of a country, usually consisting of the heads of government departments or agencies.", "A body of high-ranking members of government, typically representing the executive branch.", "A storage closet either separate from, or built into, a wall."], "Austro-Bavarian": ["A language spoken in and around Bavaria."], "barbarism": ["A gross linguistic mistake."], "parallelogram": ["A quadrilateral that has two sets of opposite parallel sides."], "deltoid": ["A quadrilateral with two pairs of equal adjacent sides whose diagonals are perpendicular."], "rhombus": ["A parallelogram in which all of the sides are of equal length."], "rhomb": ["A parallelogram in which all of the sides are of equal length."], "moreover": ["In addition to what has been said."], "watchword": ["A prearranged reply to the challenge of a sentry."], "password": ["A prearranged reply to the challenge of a sentry.", "A string of characters, known only to a user, used, along with a user name, to log in to some computer or network etc."], "draughtsman": ["Someone employed in making mechanical drawings, as of machines, structures, etc."], "illuminance": ["Density of luminous flux received per unit of area, expressed in lux."], "Khmer": ["An austroasiatic language spoken primarily in Cambodia where it is an official language, and in the nearby regions of Vietnam."], "astrologer": ["Somone who practices astrology."], "Tajik": ["An Iranian language of the same group as Persian, spoken by more than four millions of people. It is the official language of Tajikistan."], "Tatar": ["A Turkic language spoken by the Tatars in some parts of Europe, Russia, Siberia, China, Turkey, Poland, Ukraine, Finland, and Central Asia."], "blinding": ["Causing blindness.", "Extremely bright."], "enhance": ["To make better, more useful, more beautiful through modification."], "nerd": ["Someone who is socially inept and unstylish; especially someone who is highly devoted to intellectual or academic pursuits.", "An insignificant student who is ridiculed as being affected or boringly studious.", "An intelligent but single-minded expert in a particular technical field or profession."], "ornament": ["A musical flourish that is used to decorate a melodic or harmonic line.", "An element of decoration.", "To make more attractive by adding ornament, colour, etc."], "tendency": ["A likelihood of behaving in a particular way or going in a particular direction."], "spade": ["Tool having a flat and sharp metal tip and a wooden handle used to break, dig and move the earth."], "Alemannisch": ["Any of the Alemannic dialects spoken in Switzerland, in Liechtenstein, in Vorarlberg, in Southern Baden, in Southern Allg\u00e4u, and in Alsace."], "astronomer": ["A scientist who studies astronomy or astrophysics."], "programmer": ["A person who creates or modifies computer software."], "crucifix": ["An ornamental or symbolic representation of Christ on a cross."], "first name": ["Name that is given to a person after birth and usually precedes the family name."], "given name": ["Name that is given to a person after birth and usually precedes the family name."], "eggnog": ["An alcoholic beverage based on milk, eggs, sugar, nutmeg and rum, brandy or whisky."], "nutmeg": ["Hard aromatic seed of the nutmeg tree (Myristica fragrans), used as spice when grated or ground."], "hip hop": ["Music genre typically consisting of a rhythmic vocal style called rap which is accompanied with backing beats."], "Sultan Ahmed Mosque": ["A mosque in Istanbul, Turkey."], "Evenki": ["The largest of the northern group of the Tungusic languages (or Manchu-Tungusic languages or Manchu-Tunguz languages). It is spoken by Evenkis in Russia, Mongolia and China."], "chili pepper": ["Any fruit of a plant of the botanical genus Capsicum, noted for their spicy and burning flavour due to presence of capsaicin."], "bell pepper": ["A mild fruit of the Capsicum."], "Sango": ["Language primary spoken in the Central African Republic, based on the language of the Sango tribe."], "Sangho": ["Language primary spoken in the Central African Republic, based on the language of the Sango tribe."], "muscle ache": ["Pain in the muscles after excercising which usually begins a few hours after the activity and subsides after a few days."], "Arab": ["A person of Arabic nationality."], "Madurese": ["A Malayo-Polynesian language of people from Madura island in Indonesia; also spoken on Kangean Islands, Sapudi Islands, and in northern part of province of East Java."], "Lao": ["Language of the Tai family, official language of Laos."], "Kinyarwanda": ["A language of Rwanda, the Democratic Republic of the Congo and Uganda."], "paradox": ["Statement that contains or implies a contradiction."], "Cebuano": ["Austronesian language spoken in the Philippines, subgroup of Bisaya, Visayan and Binisay\u00e2."], "Sugboanon": ["Austronesian language spoken in the Philippines, subgroup of Bisaya, Visayan and Binisay\u00e2."], "sugarcoat": ["To make something negative look better than it really is."], "Somali": ["East Cushitic language of the Afro-Asiatic family, spoken mostly in Somalia (including the break-away area of Somaliland) and adjacent parts of Djibouti (majority), Ethiopia and Kenya."], "Sinhala": ["Indo-Aryan language of the Indoeuropean languages, mother tongue of the Sinhalese, the largest ethnic group of Sri Lanka along with Tamil.", "An abugida script used to write the Sinhala language, spoken in Sri Lanka. It is also used to write Pali and Sanskrit."], "Shona": ["A Bantu language, a native language of Zimbabwe."], "ChiShona": ["A Bantu language, a native language of Zimbabwe."], "Sinhalese": ["Indo-Aryan language of the Indoeuropean languages, mother tongue of the Sinhalese, the largest ethnic group of Sri Lanka along with Tamil.", "An abugida script used to write the Sinhala language, spoken in Sri Lanka. It is also used to write Pali and Sanskrit."], "Singhalese": ["Indo-Aryan language of the Indoeuropean languages, mother tongue of the Sinhalese, the largest ethnic group of Sri Lanka along with Tamil."], "Quechua": ["Native American language of South America, language of the Inca Empire, and today spoken in various dialects by some 10 million people throughout South America, including Peru and Bolivia, southern Colombia and Ecuador, north-western Argentina and northern Chile."], "parboil": ["To cook briefly by boiling.", "To cook by dipping briefly into boiling water, then directly into cold water."], "definition": ["A concise explanation of the meaning of a word, phrase or symbol.", "A paraphrase describing a concept.", "One or more sentences UNIQUELY identifying a concept.", "Clarity of outline (e.g. of a body)."], "biochemist": ["Scientist who practices biochemistry."], "Sranan": ["A creole language spoken in Suriname."], "lemon": ["A yellow citrus fruit.", "A defective or inadequate item."], "grape": ["A small, round, smooth-skinned edible fruit, usually purple, red, or green, that grows in bunches on certain vines."], "demanding": ["Requiring much effort or expense."], "pear": ["A tree producing the pear fruit.", "A fruit produced by the pear tree."], "Sidamo": ["An Afro-Asiatic langugage, belonging to the Cushitic sub-phylum, spoken in Ethiopia.", "An Afro-Asiatic group of languages, belonging to the Cushitic sub-phylum.", "A type of Arabica coffee grown exclusively in the Sidamo Province of Ethiopia..", "An ethnic group whose homeland is in the Sidama Zone of the Southern Nations, Nationalities, and Peoples Region of Ethiopia."], "Acholi": ["A language primarily spoken by the Acholi people in the districts of Gulu, Kitgum and Pader, a region known as Acholiland in northern Uganda; also in the southern part of the Opari District of Sudan."], "Akoli": ["A language primarily spoken by the Acholi people in the districts of Gulu, Kitgum and Pader, a region known as Acholiland in northern Uganda; also in the southern part of the Opari District of Sudan."], "Acooli": ["A language primarily spoken by the Acholi people in the districts of Gulu, Kitgum and Pader, a region known as Acholiland in northern Uganda; also in the southern part of the Opari District of Sudan."], "Atscholi": ["A language primarily spoken by the Acholi people in the districts of Gulu, Kitgum and Pader, a region known as Acholiland in northern Uganda; also in the southern part of the Opari District of Sudan."], "Shuli": ["A language primarily spoken by the Acholi people in the districts of Gulu, Kitgum and Pader, a region known as Acholiland in northern Uganda; also in the southern part of the Opari District of Sudan."], "Gang": ["A language primarily spoken by the Acholi people in the districts of Gulu, Kitgum and Pader, a region known as Acholiland in northern Uganda; also in the southern part of the Opari District of Sudan."], "Lwoo": ["A language primarily spoken by the Acholi people in the districts of Gulu, Kitgum and Pader, a region known as Acholiland in northern Uganda; also in the southern part of the Opari District of Sudan."], "Lwo": ["A language primarily spoken by the Acholi people in the districts of Gulu, Kitgum and Pader, a region known as Acholiland in northern Uganda; also in the southern part of the Opari District of Sudan."], "Log Acoli": ["A language primarily spoken by the Acholi people in the districts of Gulu, Kitgum and Pader, a region known as Acholiland in northern Uganda; also in the southern part of the Opari District of Sudan."], "Dok Acoli": ["A language primarily spoken by the Acholi people in the districts of Gulu, Kitgum and Pader, a region known as Acholiland in northern Uganda; also in the southern part of the Opari District of Sudan."], "Chuwash": ["A Turkic language spoken in the federal subject of Chuvashia, located in central Russia."], "Chovash": ["A Turkic language spoken in the federal subject of Chuvashia, located in central Russia."], "Chavash": ["A Turkic language spoken in the federal subject of Chuvashia, located in central Russia."], "Adangme": ["A Kwa language, very closely related to Ga, and together they form the Ga-Dangme branch within Kwa. Spoken in south-eastern Ghana."], "Dangme": ["A Kwa language, very closely related to Ga, and together they form the Ga-Dangme branch within Kwa. Spoken in south-eastern Ghana."], "Adangbe": ["A Kwa language, very closely related to Ga, and together they form the Ga-Dangme branch within Kwa. Spoken in south-eastern Ghana.", "A language of Ghana and Togo"], "Gurumukhi": ["A script derived from the Later Sharada script that was standardized by the second Sikh guru, Guru Angad Dev."], "Ischia": ["Ischia is a volcanic island in the Tyrrhenian Sea, at the northern end of the Gulf of Naples, Italy.", "A city on the island of Ischia, province of Naples, region of Campania, Italy."], "Bangubangu": ["A language of the Democratic Republic of the Congo."], "Akkadian": ["Semitic language (part of the greater Afro-Asiatic language family) spoken in ancient Mesopotamia, particularly by the Assyrians and Babylonians."], "Abnaki": ["Cover term for a complex of dialects of one of the Eastern Algonquian languages, originally spoken in what is now Vermont, New Hampshire, and Maine in the United States."], "Middle English": ["Diverse forms of the English language spoken between the Norman invasion of 1066 and the mid-to-late 15th century, when the Chancery Standard began to become widespread."], "Kagulu": ["A Bantu language spoken in Tanzania"], "Yeyi": ["A Bantu language spoken in Botswana."], "quixotic": ["Acting with the desire to do noble and romantic deeds, without thought of realism or practicality."], "Baluchi": ["A Northwestern Iranian language, principal language of the Baloch of Balochistan, a region in western Pakistan, eastern Iran and southern Afghanistan."], "Basaa": ["A Bantu language spoken in Cameroon in Centre and Littoral provinces."], "Bashkir": ["A Turkic language spoken by the Bashkirs living in Russian republic of Bashkortostan, as well as in neighboring Tatarstan and Udmurtia.", "A Turkic people who lives in Russia, mostly in the republic of Bashkortostan."], "Beja": ["An Afro-Asiatic language of the southern coast of the Red Sea, spoken by about two million nomads, the Beja, in parts of Egypt, Sudan, and Eritrea.", "A Portuguese city in Alentejo, capital of the District of Beja.", "District of Portugal, located in the south."], "Bemba": ["A Bantu language spoken in Zambia and the Democratic Republic of the Congo by the Bemba people.", "A language of Democratic Republic of the Congo."], "Buginese": ["A language spoken by people mainly in the southern part of Sulawesi, Indonesia and in Malaysia (Sabah)"], "Bikol": ["An Austronesian language used in the Philippines particularly on the Bicol Peninsula on the island of Luzon. (Source: Wikipedia)"], "Bini": ["A Benue-Congo language spoken in Edo State, Nigeria."], "Blackfoot": ["Any of the Algonquian languages spoken by the Blackfoot tribe of Native Americans, who currently live in the northwestern plains of North America. (Source: Wikipedia)", "The collective name of three First Nations in Alberta and one Native American tribe in Montana, in North America. (Source: Wikipedia)"], "Braj": ["A Central Indo-Aryan language closely related to Hindi, usually considered to be a dialect of Hindi."], "Brij Bhasha": ["A Central Indo-Aryan language closely related to Hindi, usually considered to be a dialect of Hindi."], "Carolinian": ["An Austronesian language spoken in the Northern Mariana Islands, where it is an official language."], "Church Slavic": ["The first literary Slavic language, developed from the Slavic dialect of Thessaloniki (Solun) by Saints Cyril and Methodius."], "Old Church Slavonic": ["The first literary Slavic language, developed from the Slavic dialect of Thessaloniki (Solun) by Saints Cyril and Methodius."], "Old Bulgarian": ["The first literary Slavic language, developed from the Slavic dialect of Thessaloniki (Solun) by Saints Cyril and Methodius."], "Old Macedonian": ["The first literary Slavic language, developed from the Slavic dialect of Thessaloniki (Solun) by Saints Cyril and Methodius."], "Choctaw": ["A Muskogean language, traditionally spoken by the Native American Choctaw people of the southeastern United States. (Source: Wikipedia)"], "Chagatai": ["An extinct Turkic language which was once widely spoken in Central Asia and most of Khorasan region. (Source: Wikipedia)"], "Chamorro": ["The native language of the Chamoru of the Northern Mariana Islands and Guam."], "Chibcha": ["An extinct Chibchan language of Colombia, formerly spoken by the Chibcha people. (Source: Wikipedia)"], "Iban": ["A Malayo-Polynesian language spoken by the Iban in Kalimantan (the Indonesian part of Borneo) and the Sarawak state region of Malaysia."], "Ilokano": ["Austronesian language spoken in the Republic of the Philippines."], "Iloko": ["Austronesian language spoken in the Republic of the Philippines."], "Ilocano": ["Austronesian language spoken in the Republic of the Philippines."], "Iluko": ["Austronesian language spoken in the Republic of the Philippines."], "Iloco": ["Austronesian language spoken in the Republic of the Philippines."], "Interlingua": ["An international auxiliary language (IAL) published in 1951 by the International Auxiliary Language Association (IALA)."], "Yao": ["A Bantu language spoken by the Yao at the southern end of Lake Malawi."], "Chiyao": ["A Bantu language spoken by the Yao at the southern end of Lake Malawi."], "Jao": ["A Bantu language spoken by the Yao at the southern end of Lake Malawi."], "Sesotho": ["A Bantu language, belonging to the Niger-Congo language family spoken by the Basotho nation (modern Lesotho)."], "Kabyle": ["A Berber language spoken by the Kabyle people."], "Achang": ["A language spoken by the Achang people in China and Myanmar.", "An ethnic people living in China and Myanmar."], "Caddo": ["A Caddoan language of the Southern Plains in North America, spoken by the Caddo Nation of Oklahoma. (Source: Wikipedia)"], "Kikamba": ["A Bantu language spoken by the Akamba people of Kenya, also believed to be spoken by some Bantu people in Tanzania (Thaisu). (Source: Wikipedia)"], "Kanuri": ["A language continuum of the Western Saharan subphylum of Nilo-Saharan family, spoken by mainly in Nigeria, Niger, Chad and Cameroon."], "Kara-Kalpak": ["A Turkic language mainly spoken by Karakalpaks in Karakalpakstan (Uzbekistan), as well as by Kazakhs, Bashkirs and Nogay."], "Karen": ["A group of languages of the Tibeto-Burman group of the Sino-Tibetan family, spoken by the Karen people, in Myanmar."], "Kashmiri": ["A Dardic language of the Indo-Aryan branch of the Indo-European family, spoken primarily in valley of Kashmir, divided between India and Pakistan.", "A person from or living in Kashmir.", "Relating to or from Kashmir."], "Kawi": ["A language extinct as a spoken language from the islands of Java, Bali, and Lombok."], "Khoisan": ["Languages composing the smallest phylum of African languages, historically spoken by the Khoisan (Khoi and Bushmen or San) people. (Source: Wikipedia)", "ISO 639-6 entity"], "penultimate": ["Next to the last in a sequence."], "librarian": ["A curator of a library."], "leek": ["A vegetable (Allium ampeloprasum var. porrum) having a bulb and long leaves and with a milder flavour than the onion."], "goldsmith": ["A metalworker who creates juwellery and objects made of gold and other precious metals."], "dessert": ["A sweet confection served as the last course of a meal."], "cryptic": ["Having a hidden meaning."], "congratulations": ["An expression of approval and commendation."], "dead tired": ["Very tired."], "economist": ["An individual who studies, develops, and applies theories and concepts from economics, and writes about economic policy."], "cassava": ["A starchy pulp made with the roots of the cassava plant.", "Shrub (Manihot esculenta) whose roots are rich in starch."], "Maa": ["A language of Viet Nam"], "neurologist": ["Medical specialist in neurology (the function and disease of the nerves and brain)."], "extinct language": ["A language that no longer has any native speakers."], "Eton": ["A language of Vanuatu", "A language of Cameroon."], "rice grain": ["A seed (grain) from the rice plant (Oryza sativa)."], "Faroese": ["A West Nordic or West Scandinavian language spoken in the Faroe Islands and in Denmark."], "Faeroese": ["A West Nordic or West Scandinavian language spoken in the Faroe Islands and in Denmark."], "manioc": ["A starchy pulp made with the roots of the cassava plant.", "Shrub (Manihot esculenta) whose roots are rich in starch."], "mango": ["A tropical Asian fruit tree, Mangifera indica.", "The fruit of the mango tree."], "sea-urchin": ["Zoophyte with a calcareous shell ornated with mobile spines."], "bear cub": ["A young bear."], "orthopedist": ["A medical specialist in correcting deformities of the skeletal system."], "lychee": ["The fruit of a Chinese tree, Litchi chinensis, that has a bright red fruit with a single stone surrounded by a fleshy white aril."], "hug": ["To squeeze someone in one's arms.", "The act of squeezing someone in one's arms."], "aril": ["A tissue surrounding the seed in certain fruits."], "embrace": ["To squeeze someone in one's arms.", "The act of squeezing someone in one's arms.", "To enfold or include in a metaphorical way, principles or ideas for example.", "To intimate or close encircling with the arms.", "To include in scope; include as part of something broader; have as one's sphere or territory."], "hardware": ["The part of a computer that is fixed and cannot be altered without replacement or physical modification."], "Ossetian": ["A language spoken in Ossetia, a region on the slopes of the Caucasus mountains on the borders of Russia and Georgia."], "Ossetic": ["A language spoken in Ossetia, a region on the slopes of the Caucasus mountains on the borders of Russia and Georgia."], "moo": ["(Interjection) Sound made by a cow.", "Sound made by a cow.", "To make the sound of a cow."], "endometriosis": ["A benign growth of endomitrial tissue outside the womb which often causes pain and infertility."], "endocrinologist": ["A person who studies or practices endocrinology."], "sexology": ["The science of sexuality."], "physical quantity": ["A quantity within physics that can be measured."], "sexologist": ["Scientist who practises sexology."], "kiwi": ["A Chinese gooseberry vine fruit, having a hairy brown skin and dark green flesh with fine black seeds.", "A flightless bird of the genus Apteryx native to New Zealand."], "Christmas tree": ["A conifer used during the Christmas holiday season, typically decorated with lights and ornaments and often a star at its tip."], "Advent calendar": ["Symbol of the holy season of Advent."], "woodland": ["Land covered with trees and woods."], "candlestick": ["A device on which one or more candles can be attached."], "candleholder": ["A device on which one or more candles can be attached."], "Bethlehem": ["City in the West Bank territory of Palestine."], "broil": ["To cook food with high heat with the heat applied directly to the food,"], "steak": ["A slice of meat cut from the fleshy part of an animal or of a large fish.", "A slice of meat cut from the fleshy part of a cow."], "gooseberry": ["An additional person that is neither necessary nor wanted in a given situation.", "Spiny Eurasian shrub having greenish purple-tinged flowers and ovoid yellow-green or red-purple berries.", "Currant-like, yellow-green or red-purple berry used primarily in jams and jellies."], "onomatopoeia": ["A word intended to represent a sound."], "content": ["In a state of satisfaction.", "What a communication contains word by word.", "Everything that is included in a collection and that is held or included in something.", "To satisfy in a limited way.", "To make content."], "awkward": ["Lacking grace or skill in manner or movement or performance.", "Difficult to handle, because of shape."], "bumbling": ["Lacking grace or skill in manner or movement or performance."], "gauche": ["Lacking grace or skill in manner or movement or performance."], "arbitrary": ["Determined by impulse rather than reason."], "arbiter": ["A person appointed, or chosen, by parties to determine a controversy between them."], "gooseberry bush": ["Spiny Eurasian shrub having greenish purple-tinged flowers and ovoid yellow-green or red-purple berries."], "geriatrics": ["A medical specialization, particular for eldery people with complicated medical problems."], "geriatrician": ["A medical specialist who practises geriatrics."], "geriatrist": ["A medical specialist who practises geriatrics."], "freemasonry": ["Worldwide widespread movement for humanitarianism which gives its supporters an understanding of the ideal of the noble humanity."], "sandbox": ["A virtual container in which untrusted programs can be safely run."], "crib": ["Depiction of the birth or birthplace of Jesus."], "cr\u00e8che": ["Depiction of the birth or birthplace of Jesus."], "Christmas": ["Annual celebration commemorating the birth of Jesus."], "Toki Pona": ["A minmalist constructed language designed by Sonja Elen Kisa."], "maybe": ["Expresses that a statement is uncertain."], "perhaps": ["Expresses that a statement is uncertain."], "mayhap": ["Expresses that a statement is uncertain."], "perchance": ["Expresses that a statement is uncertain."], "possibly": ["Expresses that a statement is uncertain."], "peradventure": ["Expresses that a statement is uncertain."], "jealous": ["Bitterly disappointed not to have something that someone else owns.", "Fearing that a beloved person has feelings for someone else or is loved by someone else."], "envious": ["Bitterly disappointed not to have something that someone else owns."], "Knaanic": ["West Slavic Jewish language, formerly spoken in the Czech lands (now the Czech Republic), extinct in the Late Middle Ages. The name Knaanic applied mainly to Judeo-Czech, but also to other Judeo-Slavic languages. (Source: Wikipedia)", "ISO 639-6 entity"], "Canaanic": ["West Slavic Jewish language, formerly spoken in the Czech lands (now the Czech Republic), extinct in the Late Middle Ages. The name Knaanic applied mainly to Judeo-Czech, but also to other Judeo-Slavic languages. (Source: Wikipedia)"], "Leshon Knaan": ["West Slavic Jewish language, formerly spoken in the Czech lands (now the Czech Republic), extinct in the Late Middle Ages. The name Knaanic applied mainly to Judeo-Czech, but also to other Judeo-Slavic languages. (Source: Wikipedia)"], "Judeo-Slavic": ["West Slavic Jewish language, formerly spoken in the Czech lands (now the Czech Republic), extinct in the Late Middle Ages. The name Knaanic applied mainly to Judeo-Czech, but also to other Judeo-Slavic languages. (Source: Wikipedia)"], "fall in": ["To become part of; to become a member of a group or organization."], "get together": ["To become part of; to become a member of a group or organization.", "To get together socially or for a specific purpose at a given place and time.", "To call or bring together."], "prevaricate": ["To knowingly say something that is untrue.", "To evade the truth; to be intentionally ambiguous."], "waffle": ["To evade the truth; to be intentionally ambiguous."], "millet": ["A group of small-seeded species of cereal crops, widely grown around the world for food and fodder."], "conceit": ["An over-high esteem of oneself; vain pride.", "Feeling of excessive pride."], "browser": ["An animal that feeds itself by picking the choice leaves from what is available.", "A software application used to locate and display Web pages."], "zest": ["The outer skin of a citrus fruit, used for flavouring.", "To spice up a meal using the skin of a citrus fruit."], "surgery": ["A surgical procedure.", "The science and practice of performing surgical operations."], "radiology": ["The branch of medical science dealing with the medical use of X-rays or other penetrating radiation."], "misogynist": ["Someone with an exaggerated aversion towards women."], "misanthrope": ["Someone who dislikes people in general."], "radiologist": ["A person who is skilled in or practices radiology."], "armillary sphere": ["Astronomical device that is used to measure celestial coordinates and to display the motion of celestial bodies."], "spherical astrolabe": ["Astronomical device that is used to measure celestial coordinates and to display the motion of celestial bodies."], "tulip": ["Any of numerous perennial bulbous flowering plants of the genus Tulipa."], "barley": ["A strong cereal of the genus Hordeum, or its grains, often used as food or to make malted drinks."], "daffodil": ["A group of hardy, mostly spring-flowering, bulbs of the genus Narcissus."], "buckwheat": ["(Fagopyrum esculentum) An annual plant with clusters of small pinkish white flowers and small edible triangular seeds which are used whole or ground into flour."], "bowwow": ["Childish word for \"dog\"."], "bow-wow": ["Childish word for \"dog\"."], "blog": ["A frequent and chronological publication of comments and thoughts on the web.", "To post a message on a blog."], "weblog": ["A frequent and chronological publication of comments and thoughts on the web."], "plethora": ["An overflowing fullness."], "nephrologist": ["A doctor who specializes in nephrology."], "polemic": ["A strong verbal or written attack; the practice of engaging in controversial debate."], "hyperbole": ["An extreme exaggeration or overstatement; especially as a literary or rhetorical device."], "figure of speech": ["A word or phrase that departs from straightforward, literal language."], "digit": ["(arithmetic) A numeral that can be combined with others to write larger numbers, and that cannot itself be split into other numerals.", "One of the five extremities that can be found on a hand or a foot."], "Avaric": ["A Northeast Caucasian language, spoken mainly in the eastern and southern parts of the Republic of Dagestan and the Zakatala region of Azerbaijan."], "squeezable": ["Easily squeezed."], "injunction": ["A writ or process by a court of law, whereby a party is required to do or to refrain from doing certain acts."], "cherry": ["A small fruit, usually red, black or yellow, with a smooth hard seed and a short hard stem (Prunus avium and some other fruits of similar appearance in the Prunus genus).", "Wood of the cherry tree."], "polar bear": ["Big bear that is native to the northern polar region."], "white whale": ["(Delphinapterus leucas) An Arctic and sub-Arctic species of cetacean, all white in color with a distinctive melon-shaped head."], "beluga": ["(Delphinapterus leucas) An Arctic and sub-Arctic species of cetacean, all white in color with a distinctive melon-shaped head."], "white beluga": ["(Delphinapterus leucas) An Arctic and sub-Arctic species of cetacean, all white in color with a distinctive melon-shaped head."], "beluga whale": ["(Delphinapterus leucas) An Arctic and sub-Arctic species of cetacean, all white in color with a distinctive melon-shaped head."], "sea canary": ["(Delphinapterus leucas) An Arctic and sub-Arctic species of cetacean, all white in color with a distinctive melon-shaped head."], "bison": ["A wild heavy bison of the species Bison bison, having a broad massive horned head."], "optics": ["The branch of physics which describes the behaviour of light."], "essay": ["Short disquisition about a theme."], "Cologne": ["The fourth biggest city in Germany, which is located in Northrhine-Westphalia."], "lavender": ["Having the color of lavender."], "lavender oil": ["Essential oil made out of lavender flowers."], "St. Nicholas' Day": ["The evening of the \"Sinterklaas\" festivities with presents and treats like \"speculaas\" and \"banket\" traditionally on the fifth of December."], "optician": ["A person who makes or sells lenses and spectacles."], "psychiatry": ["A medical specialty which exists to study, prevent, and treat mental disorders in humans."], "stem cell": ["Primal cell that can renew indefinitely and differentiate into several kinds of specialized cells."], "choux pastry": ["Light pastry dough made \u200b\u200bfrom flour, butter and eggs and used to make cakes."], "zounds": ["A mild swear expressing surprise or indignation."], "gadzooks": ["A mild swear expressing surprise or indignation."], "thumbtack": ["A nail with a large head."], "chore": ["A task or piece of work that must be done, especially one that is routine, difficult, or unpleasant."], "inchoate": ["Recently started but not fully formed yet."], "stallion": ["An uncastrated male horse."], "pathologist": ["A specialized doctor who treats pathologies."], "psychiatrist": ["A doctor specialized in psychiatry."], "Wiktionary": ["A free online-dictionary created by voluntary writers."], "mare": ["An adult female horse.", "The darker parts of the moon's surface."], "gelding": ["A castrated male horse."], "inundate": ["To cover with large amounts of water."], "Nynorsk": ["One of two official writing standards of Norwegian, derived from dialects, the other being Bokm\u00e5l."], "entertainer": ["A person who tries or whose job is to please, entertain or amuse."], "task": ["A piece of work done as part of one\u2019s duties."], "music lover": ["Someone who is passionate about music."], "nursery web spider": ["Spider of the family Pisauridae which is common in all of Europe."], "agglomeration": ["An extended city or town area comprising the built-up area of a central place (usually a municipality) and any suburbs or adjacent satellite towns."], "Massa": ["A town and commune in Tuscany, Italy."], "meteorologist": ["Someone who studies the weather professional."], "whirlwind": ["The upward-whirling, moist air that can form in a thunderstorm."], "sovereign": ["Someone or something that has legal independence.", "Acting as the final authority."], "palindrome": ["A symmetrical word that read from left to right is the same as when read right to left."], "Christmas carol": ["A Christmas relating song."], "persuade": ["To cause somebody to adopt a certain position, belief, or course of action.", "To make someone believe, or feel sure about something, especially by using logic, argument or evidence."], "incandescent": ["Glowing white because of intense heat.", "Emitting light as a result of being heated.", "Showing intense emotion, as of a performance, etc."], "white-hot": ["Glowing white because of intense heat."], "red-hot": ["Glowing red with heat."], "persuasion": ["A strongly held conviction, opinion or belief."], "Pennsylvania Deitsch": ["A language spoken in the United States and Canada, it is a blending of several German dialects."], "Pennsylvania Dutch": ["A language spoken in the United States and Canada, it is a blending of several German dialects."], "Pennsylvania German": ["A language spoken in the United States and Canada, it is a blending of several German dialects."], "apocope": ["A figure in which the last syllable of a word is omitted, mainly used in poetry, in order to improve rhythm or rhyme."], "musicology": ["The scientific study of music at university level."], "chordophone": ["A musical instrument on which sounds are produced by setting strings in vibration."], "idiophone": ["A musical instrument (percussion instrument) made of material that is naturally rich of sound."], "menorah": ["A candelabrum with seven branches, a traditional symbol of Judaism"], "rabbi": ["A Jewish spiritual teacher."], "omega": ["The last letter of the modern and of the classical Greek alphabet. Uppercase version: \u03a9; lowercase: \u03c9."], "musician": ["A man who makes music, either by using his voice or by playing an instrument.", "A woman who makes music, either by using her voice or by playing an instrument.", "Somebody who makes music, either by using his voice or by playing an instrument."], "transverse flute": ["A transverse (or side-blown) woodwind instrument."], "bow": ["A slightly curved wooden object used in playing certain stringed instruments.", "A weapon made of a curved piece of wood or other flexible material whose ends are connected by a string, used for shooting arrows.", "The front of a boat or ship.", "To bend one's back forward."], "moonless": ["Without a visible moon, without moonshine."], "moonlit": ["Illuminated by the moon."], "vampire": ["Immortal being which drinks the blood of mortals to survive.", "Bat feeding on the blood (hematophagous) of large mammals such as horses or bovines."], "impale": ["To pierce with a pale."], "stake": ["Long piece of wood which is pointed at one end."], "pale": ["Bright of colour.", "Long piece of wood which is pointed at one end.", "Referred to a work of art and similar: poorly endowed with expressive power and low value.", "Deficient in color (especially of skin) as suggesting physical or emotional distress."], "Class attribute levels": ["Class attribute levels"], "DefinedMeaning": ["The combination of an expression and definition in one language defining a concept."], "SynTrans": ["A translation or a synonym that is equal or near equal to the concept defined by the defined meaning."], "alphorn": ["A wind instrument, consisting of a natural wooden horn of conical bore, having a cup-shaped mouthpiece, used by mountain dwellers in Switzerland and elsewhere."], "bubble policy": ["EPA policy that allows a plant complex with several facilities to decrease pollution from some facilities while increasing it from others, so long as total results are equal to or better than previous limits. Facilities where this is done are treated as if they exist in a bubble in which total emissions are averaged out.\\n(Source: EPAGLO)"], "lexical item": ["OmegaWiki class related to dictionary-like items.", "Linguistic unit that is a basic element of the lexicon and is stored and used by speakers of a particular language."], "example sentence": ["Usage example for a lexical item."], "Congolese": ["Of or pertaining to the Democratic Republic of the Congo (DRC), Congo-Kinshasa, or its people.", "A national of the Democratic Republic of the Congo"], "held for damages": ["Having the judicial or moral obligation to perform indemnification."], "liable for damages": ["Having the judicial or moral obligation to perform indemnification."], "liable to indemnify": ["Having the judicial or moral obligation to perform indemnification."], "liable to pay damages": ["Having the judicial or moral obligation to perform indemnification."], "counterpoint": ["In music, the combination of two or more melodic lines played against one another."], "ambitus": ["In music, the range or the distance between the highest and lowest note."], "archegonium": ["Multicellular structure of some plants that products and protects the eggs."], "day after": ["The following day."], "morrow": ["The period of time from the start of the day (midnight) until midday (12:00).", "The following day."], "bluish": ["Somewhat blue."], "blueish": ["Somewhat blue."], "reddish": ["Somewhat red."], "greenish": ["Somewhat green."], "lutescent": ["Somewhat yellow."], "yellowish": ["Somewhat yellow."], "flavescent": ["Somewhat yellow."], "bonsai": ["Miniaturized tree that grows in a container."], "strain": ["A stimulus or succession of stimuli of such magnitude as to tend to disrupt the homeostasis of the organism.", "To separate or isolate components from one another with the help of a filter.", "A succession of notes forming a distinctive sequence.", "A group of individuals derived by descent from a single individual within a species.", "Injury to a muscle due to overstretching of the muscle fibers.", "A population or type of organisms that is genetically different from others of the same species and possessing a set of defined characteristics.", "Nervousness resulting from mental stress.", "To separate by passing through a sieve or other straining device to separate out coarser elements.", "Deformation of a physical body under the action of applied forces.", "Difficulty that causes worry or emotional tension.", "The general meaning or substance of an utterance.", "An effortful attempt to attain a goal.", "An intense or violent exertion.", "The act of singing.", "To test the limits of.", "To exert much effort or energy on (e.g. ears, eyes, etc.).", "To use to the utmost; exert vigorously or to full capacity.", "To cause to be tense and uneasy or nervous or anxious.", "To rub through a strainer or process in an electric blender.", "To alter the shape of (something) by stress.", "To become stretched or tense or taut."], "filtrate": ["To separate or isolate components from one another with the help of a filter."], "earthling": ["An inhabitant of planet Earth."], "Martian": ["An inhabitant of planet Mars.", "Of or relating to the planet Mars.", "Of or relating to Martians."], "midnight": ["The middle of the night; twelve o'clock at night."], "warthog": ["African suid (Phacochoerus africanus) having two tusks."], "gong": ["A percussion instrument consisting of a metal plate that is struck with a softheaded drumstick."], "jazz": ["Musical style born in New Orleans from a combination of styles of folk music, blues, African, ragtime and traditional."], "timpani": ["A brass percussion instrument with a defined pitch."], "brownish": ["Somewhat brown."], "silvery": ["Glittering like silver, resembling silver.", "Having a clear, high-pitched sound."], "New Year": ["The first day of a calendar year, in particular, January 1 in the Julian and Gregorian calendar."], "New Year's Eve": ["The holiday (and parties) held on the evening of the last day of the year, December 31st."], "champagne": ["A sparkling white wine made from a blend of grapes, especially Chardonnay and pinot, produced in Champagne by the m\u00e9thode champenoise."], "firework": ["A device using gunpowder and other chemicals which, when lit, emits a combination of coloured flames, sparks, whistles or bangs for entertainment purposes."], "firecracker": ["A firework consisting of a string of bangers linked by a fuse designed to emit a series of loud bangs when lit."], "skyrocket": ["A type of firework that uses a solid rocket motor to rise quickly into the sky where it emits a variety of effects such as stars, bangs, crackles, etc."], "nutcracker": ["A mechanical device used for cracking nuts."], "solstice": ["Either of the two events of the year when the sun is at its greatest distance from the equatorial plane."], "mead": ["Wine made of honey."], "vowel": ["A sound of the voice produced by the vibration of the voice box modified by a more or less large opening of the mouth.", "A letter used to indicate a sound of the voice produced by the vibration of the voice box modified by a more or less large opening of the mouth."], "consonant": ["A sound of the voice produced by the different organs of the mouth, characterized by the obstruction of the passage of air.", "A letter of the alphabet that is not a vowel."], "Kosovar": ["An citizen of Kosovo.", "From, or relating to Kosovo."], "Kosovan": ["An citizen of Kosovo.", "From, or relating to Kosovo."], "bongo": ["A small drum, generally played in a pair that are designed to sound harmonically together."], "flugelhorn": ["A copper wind instrument in b flat or e flat, or sporadically also in C with three valves, which is an important instrument in brass bands."], "canon": ["A valley, especially a long, narrow, steep valley, cut in rock by a river.", "A generally accepted principle."], "chipmunk": ["Any squirrel of the genus Tamias."], "lethal": ["Causing death or having the ability to cause death."], "deadly": ["Causing death or having the ability to cause death.", "Exceedingly harmful."], "Christmas Eve": ["The evening of December 24th and in some European countries the traditional time for opening the presents."], "pun": ["A figure of speech which consists of a deliberate confusion of similar words or phrases for rhetorical effect, whether humorous or serious."], "paronomasia": ["A figure of speech which consists of a deliberate confusion of similar words or phrases for rhetorical effect, whether humorous or serious."], "chocolate bar": ["An oblong confectionery covered with chocolate."], "Egyptian": ["A person of Egyptian nationality or descent.", "Of or relating to Egypt or Egyptians.", "A woman of Egyptian nationality or descent."], "Syrian": ["Of or relating to Syria or Syrians.", "A person of Syrian nationality."], "Palestinian": ["Of or relating to Palestine or Palestinians.", "A person of Palestinian nationality."], "Israeli": ["Of or relating to Israel or Israelis."], "Lebanese": ["Of or relating to Lebanon or the Lebanese people.", "A person of Lebanese nationality."], "zither": ["A string instrument which is mainly used in the German-speaking part of Europe."], "cither": ["A string instrument which is mainly used in the German-speaking part of Europe."], "cittern": ["A string instrument which is mainly used in the German-speaking part of Europe."], "synchrotron": ["Cyclic particle accelerator in which the electromagnets, which control the speed and the trajectory of the particles being accelerated, are synchronized with the particle beam."], "bassoon": ["A wind instrument with a gentle bass tone."], "pan flute": ["A musical instrument, played by mouth, comprising tubes arranged in order of length."], "panpipes": ["A musical instrument, played by mouth, comprising tubes arranged in order of length."], "honey": ["A viscous, sweet substance produced from nectar or honeydew by bees."], "walnut": ["The fruit of the walnut tree.", "Large deciduous tree (Juglans regia) in the Walnut Family (Juglandaceae) which produces an edible fruit with a hard shell and oil-rich seed."], "hazelnut": ["The fruit of the hazel tree."], "Iranian": ["Of or relating to Iran, Iranians, or the Persian language.", "A person of Iranian nationality or of Iranian descent."], "Jewish": ["Of or relating to Jews or Judaism."], "Jew": ["A follower of Judaism."], "robin": ["A bird of the species Erithacus rubecula from the family of the Old World flycatchers (Muscicapidae) with bright red chest and gorge."], "European robin": ["A bird of the species Erithacus rubecula from the family of the Old World flycatchers (Muscicapidae) with bright red chest and gorge."], "robin redbreast": ["A bird of the species Erithacus rubecula from the family of the Old World flycatchers (Muscicapidae) with bright red chest and gorge."], "Judaism": ["A religion tracing its origin to the Hebrew people of the ancient Middle-East, as documented in their religious writings, the Torah or Old Testament."], "mullet": ["(Mugilidae) Family of ray-finned fish (Actinopterygii)."], "Serbian (Cyrillic script)": ["Serbian language written in the Cyrillic script."], "translate": ["To change a written or spoken text from one language to another."], "ocarina": ["A flute that is often made of baked clay."], "convert": ["To transform or change (something) into another form, substance, state, or product.", "To exchange something old or something that has become unusable for something else of the same kind.", "To cause to adopt a new or different religious belief or faith.", "To exchange a penalty for a less severe one.", "To change religious beliefs, or adopt a religious belief.", "To change the nature, purpose, or function of something.", "To change from one system to another or to a new plan or policy."], "convertible": ["A car whose roof can be removed."], "fetch": ["To go somewhere to bring back something.", "To go or come after and bring or take back."], "Dubai": ["City of the United Arab Emirates, main city of the Dubai emirate.", "One of the seven emirates of the United Arab Emirates."], "Dubai City": ["City of the United Arab Emirates, main city of the Dubai emirate."], "The Hague": ["The administrative capital of the Netherlands."], "motivate": ["To provide someone with an incentive to do something."], "bow tie": ["A ribbon of fabric tied around the collar which is worn with formal attire by men."], "mandolin": ["A stringed instrument and a member of the lute family."], "professor": ["A teacher or faculty member at a college or university."], "factorial": ["Mathematical function of a non-negative integer n given by the product of all positive integers less than or equal to n (denoted by n!)."], "slow down": ["Reduce the velocity.", "To become slower."], "decelerate": ["Reduce the velocity.", "To become slower."], "speed up": ["To go faster.", "To make faster.", "To move faster.", "To cause to move faster."], "accelerate": ["To go faster.", "To make faster.", "To move faster.", "To cause to move faster."], "camera": ["A device for taking still photographs.", "A device for recording moving pictures on to film or video."], "slow up": ["Reduce the velocity.", "To become slower."], "Christmas cookies": ["Sweet small cookies which are eaten at Christmas time."], "Gilbertese": ["A language of Kiribati."], "celebration": ["The joyous observation on the occasion of either something joyful that is happening or has just happened."], "ballpoint": ["A pen, similar in size and shape to a pencil, having an internal chamber filled with a viscous, quick-drying ink that is dispensed at the tip during use by the rolling action of a metal sphere."], "viscous": ["Having a thick, sticky consistency between solid and liquid."], "solid": ["Resistant to pressure.", "A fundamental state of matter that retains its size and shape without need of a container.", "In the solid state; not fluid.", "Acting together as a single undiversified whole."], "diesel": ["Heavy oil residue used as fuel for certain types of diesel engines."], "shortcut": ["A route shorter than the usual one."], "metaphor": ["A figure of speech in which an expression is used which refers to something that it does not literally denote in order to suggest a likeness or comparison."], "harbinger": ["A person or thing that foreshadows or foretells the coming of someone or something."], "Merry Christmas": ["A Christmas greeting."], "complement": ["Something added to complete or make perfect."], "supplement": ["Something added, especially to make up for a deficiency."], "high tension": ["Electric voltage of more than 1,000 Volt."], "high voltage": ["Electric voltage of more than 1,000 Volt."], "handy": ["Comfortable and easy to use."], "habile": ["Comfortable and easy to use."], "manageable": ["Capable of being managed or controlled.", "Capable of existing or taking place or proving true; possible to do."], "Inuktitut": ["Macrolanguage spoken in Canada by the Inuit people, containing two languages: Eastern Canadian Inuktitut, and Western Canadian Inuktitut.", "A language spoken in Canada by the Inuit people in most of Nunavut, and Nunavik, Quebec."], "pleased": ["In a state of satisfaction.", "Being satisfied with a situation and finding no fault with it."], "bulb": ["A filament surrounded by glass which is screwed into the socket of a lamp and which emits light when supplied with current."], "electric bulb": ["A filament surrounded by glass which is screwed into the socket of a lamp and which emits light when supplied with current."], "light bulb": ["A filament surrounded by glass which is screwed into the socket of a lamp and which emits light when supplied with current."], "tip": ["A site where garbage is collected and buried.", "Cue, advice or hint that helps someone or is meant to help", "A voluntary additional payment made for services rendered."], "irascible": ["Quickly provoked or inflamed to anger."], "choleric": ["Quickly provoked or inflamed to anger."], "irritable": ["Quickly provoked or inflamed to anger."], "kabuki": ["Traditional Japanese theatre, a combination of acting, dance and music."], "judo": ["A Japanese martial art and sport adapted from jujitsu."], "sole": ["The bottom of a shoe, footwear or boot.", "The underside of the human foot.", "A flatfish of the family Soleidae."], "anemometer": ["A device for measuring the velocity or the pressure of the wind."], "wise guy": ["A person who constantly corrects others."], "keyboard instrument": ["A class of musical instruments that is played using a musical keyboard. A musical keyboard consists of 7 white and 5 black keys per octave."], "Happy New Year": ["The traditional wish for New Year's Day."], "bureaucrat": ["Man, who is overly concerned with existent laws and formal aspects.", "Woman, who is overly concerned with existent laws and formal aspects.", "Person, who orientates overly at existent laws and formal aspects"], "paper-shuffler": ["Man, who is overly concerned with existent laws and formal aspects.", "Woman, who is overly concerned with existent laws and formal aspects.", "Person, who orientates overly at existent laws and formal aspects"], "disappointment": ["The emotion felt when a strongly held expectation is not met."], "second hand": ["Previously owned and used by another.", "The hand of a clock or watch that counts the seconds."], "secondhand": ["Previously owned and used by another."], "Unified Medical Language System": ["A controlled compendium of many medical vocabularies which also provides a mapping structure between them."], "UMLS": ["A controlled compendium of many medical vocabularies which also provides a mapping structure between them.", "Placeholder for the UMLS database."], "shepherd": ["A person who tends sheep."], "dromedary": ["A one-humped camel (Camelus dromedarius) of the hot deserts of northern Africa and south western Asia."], "mumps": ["An infectious disease which occurs mostly in childhood and is characterized by swelling of the face and parotid gland."], "astronaut": ["Member of the crew of a spacecraft."], "cosmonaut": ["Member of the crew of a spacecraft."], "spaceman": ["Member of the crew of a spacecraft."], "spationaut": ["Member of the crew of a spacecraft."], "taikonaut": ["Member of the crew of a spacecraft."], "bagpipes": ["A reed instrument whereby the reed is played indirectly through an airbag."], "Merry Christmas and a happy New Year": ["Usual way to wish each other happy holidays at the end of the year in the period between December 25 and the first of January."], "pseudo": ["Person, who wants to be more than he or she is."], "wannabe": ["Person, who wants to be more than he or she is."], "wanna-be": ["Person, who wants to be more than he or she is."], "would-be": ["Person, who wants to be more than he or she is."], "pony": ["Any of several small breeds of horse with less than 150 cm (14.2 hands 58 inches) at the withers."], "ponytail": ["A hairstyle where the hair is pulled back and tied into a single \"tail\" which hangs down behind the head."], "gift ribbon": ["Ribbon used to decorate packed gifts."], "theory of relativity": ["Theory of Albert Einstein, composed by two scientific theories in physics: special relativity and general relativity. These theories were conceived in order to explain the fact that electromagnetic waves do not conform to the Newtonian laws for motion (source: Wikipedia)."], "liberalism": ["A political movement founded on the autonomy and personal freedom of the individual, progress and reform, and government by law with the consent of the governed."], "mother tongue": ["The first language learnt; the language one grew up with.", "The language one first learned; the language one grew up with; one's native language."], "smart-alecky": ["Convinced to know everything better."], "native language": ["The first language learnt; the language one grew up with.", "The language of a Native or Aboriginal people."], "native tongue": ["The first language learnt; the language one grew up with."], "anarchist": ["An advocate of the ideologies of anarchy."], "anarchic": ["Of or relating to anarchy, anarchists, or the actions and ideas of anarchists."], "communist": ["A man who advocates the ideology of communism.", "A woman who advocates the ideology of communism.", "A person who advocates the ideology of communism."], "communistic": ["Of or relating to communism, communists, or the actions and ideas of communists."], "salmon": ["One of several species of fish of the Salmonidae family."], "flesh": ["The edible inner of fruit, as opposed to that of animals, fish or nuts."], "spear": ["a long, stabbing weapon for thrusting or throwing, consisting of a wooden shaft to which a sharp-pointed head, as of iron or steel, is attached.", "To penetrate or strike with, or as if with, any long narrow object. To make a thrusting motion that catches an object on the tip of a long device."], "thingamajig": ["Something whose name you forgot"], "superfluous": ["More than is needed, desired, or required."], "give in": ["To stop to oppose or resist."], "capitulate": ["To stop to oppose or resist."], "inn": ["Any establishment where travellers can procure lodging, food, and drink."], "Interlingue": ["A planned language created by the Baltogerman naval officer and teacher Edgar de Wahl and published in 1922."], "preposition": ["A word or phrase able to connect a following noun or noun phrase (and often other parts of the speech) as a complement to some other part of the sentence, expressing a relation between them."], "Occidental": ["A planned language created by the Baltogerman naval officer and teacher Edgar de Wahl and published in 1922."], "pronoun": ["A word that is used instead of a noun or noun phrase; a word used as a reference to another word."], "definite article": ["An article used before singular and plural nouns that refer to a particular member of a group."], "indefinite article": ["An article used before singular nouns that refer to any member of a group."], "timetable": ["A register of schedules of trains for a defined area and a defined period.", "Register of the public transport links and the times of arrivals and departures."], "schedule": ["Register of the public transport links and the times of arrivals and departures.", "A time-based plan of events. A plan of what is to occur, and at what time it is to occur."], "time table": ["Register of the public transport links and the times of arrivals and departures."], "time-table": ["Register of the public transport links and the times of arrivals and departures."], "relative pronoun": ["A word that introduces a subordinate relative clause within a larger sentence and refers to a previously used noun."], "possessive adjective": ["A word which indicates a possession; it is used with a noun."], "possessive determiner": ["A word which indicates a possession; it is used with a noun."], "possessive article": ["A word which indicates a possession; it is used with a noun."], "interrogative pronoun": ["A pronoun that is used to ask about something or somebody."], "reflexive pronoun": ["A pronoun that refers to the subject of the verb itself. It can happen if the action is done on the subject itself, or if the verb itself is reflexive."], "conjunction": ["Word or phrase grammatically connecting together words or phrases belonging to a same part of speech.", "The position of two celestial bodies such that they have the same geografical longitude.", "A logical operator that results in true when all of its operands are true."], "interjection": ["A word used to express feelings."], "Hannukah": ["An eight-day Jewish holiday commemorating the rededication of the Temple of Jerusalem in 165 BC"], "Dzongkha": ["A language of the Sino-Tibetan family, spoken in Bhutan, India and Nepal."], "comedy of errors": ["A theater play, movie, or the like, where mix-ups of persons or concepts, mistaken assumption, planned or accidental misunderstandings, betrayal, and confusion play a central role in the plot. Usually, the audience has most or all background knowledge, while acting characters remain confied to a limited individual sight. Both fun and excitement or thrill stem from these conflicting sights."], "proper name": ["Any word or phrase which designates a particular person, place, class or thing."], "sedate": ["To tranquilize by giving a sedative."], "proper noun": ["Any word or phrase which designates a particular person, place, class or thing."], "scream": ["To speak with a loud, excited voice.", "To utter a sudden and loud outcry."], "stream": ["A small river or large creek; a body of moving water confined by banks.", "Movement of political or artistic opinions or the whole of the people that are part of it."], "encounter": ["To encounter something by accident or after searching for it.", "To come together with someone by accident.", "To contend against an opponent in a sport, game, or battle."], "bauble": ["An ornament that is hung on a Christmas tree.", "An unsubstantial thing."], "Christmas ball": ["An ornament that is hung on a Christmas tree."], "bother": ["To cause annoyance in; disturb, especially by minor irritations.", "To make someone rather angry or impatient; to cause annoyance.", "Something which annoys.", "To have an unwanted negative influence on someone, to be distractive to or for someone, impress someone or something in a troublesome or uneasy way.", "To intrude or enter uninvited."], "thorny": ["Having thorns."], "copula": ["A verb that that links two parts of a sentence, indicating that one part is the property of the other. The part which indicates the property is the nominal part.", "A word (often but not always a verb) that links the subject of a sentence with a predicate."], "expansion": ["The act of increasing something in size or volume or quantity or scope.", "An increase in economic and industrial activity."], "repetition": ["The occurrence of an event which has occurred before."], "iteration": ["A single repetition of the code of a computer program within such a loop."], "Islam": ["A religion based on the teachings of the prophet Muhammad."], "Shi'a": ["A branch of Islam whose followers believe that Muhammad designated his son-in-law, Ali, to succeed him as leader, and that their leaders have special sacred wisdom."], "topic": ["The general category, often stated in a word or phrase, to which the ideas of a passage as a whole belong.", "The subject of discourse; the point at issue."], "augmentative": ["A noun which is provided with a suffix or a preposition to give to that word a greater intensity."], "gluten": ["A sticky substance composed of the proteins gliadin and glutenin. It is left when starch is removed from flour, especially wheat, rye, and barley flour."], "spidery": ["Like a spider.", "Like a spider's web.", "Full of spiders."], "bachelor": ["In Europe the first academic degree which can be got by students of an academy as a certificate of a scientifical education.", "An unmarried man."], "tom": ["The male of the domesticated cat."], "tomcat": ["The male of the domesticated cat."], "leech": ["A worm-like creature that lives in water and sucks blood from animals."], "truck": ["A large motor vehicle of more than 3,500 kilograms designed for carrying cargo.", "Any motor vehicle designed for carrying cargo, including vans and pickups.", "To convey (goods etc.) by truck."], "gull": ["A seabird of the genus Larus or of the family Laridae.", "A person who is gullible and easy to take advantage of."], "semantic drift": ["A gradual change in one of the meanings of a word."], "procrastination": ["Putting off or delaying or defering an action to a later time."], "South Ossetia": ["A self-proclaimed republic within the internationally recognized borders of Georgia."], "kitten": ["A young cat."], "eponym": ["A person, real or fictional, whose name is used to denote a certain object or activity.", "A word derived from the name of a person."], "Hajj": ["The Pilgrimage to Mecca in Islam, every able-bodied Muslim who can afford to do so is obliged to make the pilgrimage to Mecca at least once in his or her lifetime."], "journal": ["Print product for entertainment being informative, enjoyable and rich in pictures."], "mag": ["Print product for entertainment being informative, enjoyable and rich in pictures."], "magazine": ["Print product for entertainment being informative, enjoyable and rich in pictures."], "periodical": ["Print product for entertainment being informative, enjoyable and rich in pictures.", "A printed work that appears regularly."], "therapist": ["One who practices therapy, usually professionally."], "determiner": ["A noun modifier that expresses the reference of a noun or noun phrase in the context, including quantity, rather than attributes expressed by adjectives."], "buzz word": ["A word or phrase of general use, but not over a long period."], "contraction": ["A shortening of a word, syllable, or word group by omission of internal letters.", "Painful rhythmic motion of the muscles of the uterus before and during childbirth."], "misspell": ["To say the letters that make up a word, one after the other."], "respell": ["To say the letters that make up a word, one after the other."], "infusion": ["Water in which dried plant parts, other than tea leaves, are boiled or steeped."], "herbal tea": ["Water in which dried plant parts, other than tea leaves, are boiled or steeped."], "fatty": ["A cigarette rolled using cannabis.", "Made of fat.", "Containing fat.", "(Pejorative) A fat or overweight person."], "stout": ["(Concerning a person) He who carries a lot of fat.", "Very fat; pretty obese."], "greasy": ["Smeared or soiled with grease or oil."], "adversary": ["Man who is hostile to, feels hatred towards, opposes the interests of, or intends injury to someone else."], "antagonist": ["Man who is hostile to, feels hatred towards, opposes the interests of, or intends injury to someone else."], "foe": ["Man who is hostile to, feels hatred towards, opposes the interests of, or intends injury to someone else."], "intimidating": ["Instilling fear."], "vengeful": ["Desiring vengeance."], "revengeful": ["Desiring vengeance."], "euphemism": ["A word or figure of speech that makes something look prettier than it is."], "annotation": ["Characteristic information of a concept.", "A comment added to a text.", "A critical or explanatory note added to a text.", "A comment or instruction."], "connotation": ["The associated or secondary meaning of a word or expression in addition to its explicit or primary meaning."], "Mecca": ["A city of Saudi Arabia, the most important holy city of Islam."], "Erz Mountains": ["Low mountain range that is located part in Saxony, Germany, part in the Czech Republic."], "North Rhine-Westphalia": ["A federal state of Germany, which has the capital D\u00fcsseldorf."], "hapax legomenon": ["Word or linguistic form in a given language attested only once in a single text or by a single author."], "portmanteau": ["A blend of two meanings packed up into one word."], "Saxony-Anhalt": ["A federal state of Germany, whose capital is Magdeburg."], "Mecklenburg-Western Pomerania": ["Federal state of Germany, whose capital is Schwerin."], "Brandenburg": ["Federal State of Germany, whose capital is Potsdam."], "Hesse": ["Federal State of Germany, whose capital is Wiesbaden."], "OK": ["Colloquial expression of acceptance."], "ok": ["Colloquial expression of acceptance."], "okay": ["Colloquial expression of acceptance.", "An indication of agreement, surprise, skepticism or irony.", "In a satisfactory or adequate manner."], "hostage": ["A person or entity which is held by a captor in order to compel another party to act or refrain from acting in a particular way."], "durable": ["Able to resist wear, decay."], "lasting": ["Able to resist wear, decay."], "enduring": ["Able to resist wear, decay."], "handshake": ["The grasping and shaking of a person's hand, often used when being introduced or making an agreement.", "An exchange of predetermined signals between electronic devices in order to establish a connection."], "ethnonym": ["Name of an ethnic group, whether that name has been assigned by another group (ie. an exonym), or self-assigned (ie. an autonym)."], "semantics": ["The branch of linguistics which studies meaning in language."], "serenade": ["A musical greeting to a beloved or a person of rank.", "To sing or play a serenade."], "pilgrim": ["Someone who journeys to a sacred place as an act of religious devotion."], "musical": ["A stage performance, show or film which involves singing, dancing and musical numbers performed by the cast.", "Of or related to music."], "ouverture": ["The instrumental introduction to a dramatic, choral or, occasionally, instrumental composition."], "suite": ["An organized set of instrumental or orchestral pieces normally performed at a single sitting.", "A luxury accommodation in a hotel consisting of multiple rooms instead of only one."], "tarball": ["A backup file created by the tar command."], "Kwanzaa": ["A yearly, week-long festival (from December 26 to January 1) honoring African-American heritage, celebrated almost exclusively in the United States."], "Kwaanza": ["A yearly, week-long festival (from December 26 to January 1) honoring African-American heritage, celebrated almost exclusively in the United States."], "New Year's resolution": ["A commitment that one makes to a project or a habit, often a lifestyle change that is generally interpreted as advantageous, on New Year's Day and is meant to continue throughout the new year."], "artificial snow": ["Snow that is made artificially out of frozen water droplets."], "ISO 639-1 codes": ["OmegaWiki collection of ISO 639-1 language codes"], "pizza": ["An oven-baked flatbread covered with tomato sauce and additional toppings."], "ISO 639-2 bibliographic codes": ["OmegaWiki collection of ISO 639-2 bibliographic language codes"], "International Organization for Standardization": ["An international standard-setting body composed of representatives from national standards bodies."], "ISO 639-2 terminologic codes": ["OmegaWiki collection of ISO 639-2 terminologic language codes"], "ISO": ["An international standard-setting body composed of representatives from national standards bodies."], "mischief": ["Harm or evil caused by an agent or brought about by a particular cause."], "hard disk drive": ["Ferromagnetic computer storage device which writes binary data on the surface of a rotating platter."], "hard disk": ["Ferromagnetic computer storage device which writes binary data on the surface of a rotating platter."], "carriage": ["Manner of walking or stepping; bearing or carriage while moving. (Webster 1913)", "A railway vehicle that is drawn by a locomotive.", "Wire basket fastened to a frame with wheels which customers use for collecting purchases in a store.", "A railway vehicle without propulsion, equipped to carry passengers or goods.", "A movement with any part of one\u2019s body (head, hands etc)."], "wagon": ["A wheeled vehicle, generally drawn by horse power."], "araba": ["A carriage used in Turkey and Asia Minor drawn by horses or oxen."], "vinaigrette": ["A sauce, made of vinegar, oil, and other ingredients.", "A small, two-wheeled vehicle to be drawn or pushed by a boy or man."], "wheelchair": ["A chair mounted on large wheels for the transportation or use of a sick or disabled person."], "juggernaut": ["A literal or metaphorical force or object regarded as unstoppable."], "pluricentric language": ["A language with several standard versions."], "execute": ["To kill as a punishment for capital crimes.", "To perform an action, as in executing a program or a command.", "To satisfy, carry out, bring to completion (an obligation, a requirement, etc.)."], "phonetics": ["A branch of linguistics that comprises the study of the sounds of human speech."], "gallows": ["The wooden framework on which persons are put to death by hanging."], "last meal": ["The last meal that a condemned prisoner has before his or her execution."], "guillotine": ["A machine used for the application of capital punishment by decapitation.", "To execute using a guillotine."], "deplorable": ["Deserving strong condemnation."], "stroopwafel": ["Two round waffle-like wafers with a caramel filling in the middle."], "stroopwaffel": ["Two round waffle-like wafers with a caramel filling in the middle."], "distraught": ["Deeply agitated especially from emotion."], "milkshake": ["A thick beverage consisting of milk and ice cream mixed together, often with fruit, chocolate, or other flavouring."], "clothes hanger": ["A triangular device made of wire, wood or plastic with a hook on top that is used to store an item of clothing by hanging."], "semiotics": ["The study of sign processes, or signification and communication, signs and symbols, both individually and grouped into sign systems."], "aquamarine": ["A gemstone-quality transparent variety of beryl."], "diamond": ["A very hard native crystalline carbon.", "A transparent piece of diamond that has been cut and polished."], "swindle": ["To deceive someone deliberately in order to make a financial gain.", "A dishonest act."], "defraud": ["To deceive someone deliberately in order to make a financial gain."], "con": ["To deceive someone deliberately in order to make a financial gain.", "A person convicted of a crime by a judicial body.", "A negative or unwanted consequence or side effect of a solution."], "Moon": ["The sole natural satellite of the Earth."], "New Year's Day": ["The first day of a calendar year, in particular, January 1 in the Julian and Gregorian calendar."], "effervescent": ["Giving off bubbles."], "fizzy": ["Giving off bubbles."], "corporal punishment": ["A form of punishment achieved by inflicting physical injury to the victim's body."], "sparkling wine": ["Any wine that is fizzy because of dissolved carbon dioxide."], "stylistics": ["The study of the style used in spoken and written language, and what effect the writer or speaker would achieve with the reader or hearer."], "turn of the year": ["The change from one year to the next."], "Lower Saxony": ["Federal state of Germany, whose capital is Hannover."], "melody": ["A succession of notes forming a distinctive sequence."], "tune": ["A succession of notes forming a distinctive sequence.", "To correct or adjust the pitch created by a musical instrument.", "To adjust a mechanical, electric or electronic device (such as a radio or a car engine) so that it functions optimally."], "lexicography": ["The act of writing dictionaries."], "turning point": ["A decisive point at which a significant change or historical event occurs.", "A place to turn the driving direction for vessels, where the boats are longer than the river/canal is wide."], "tipping point": ["A term that refers to that moment when something unique becomes common."], "controversial": ["Contentiously disputed.", "Subject to nonconcordant interpretations."], "controversy": ["A contentious dispute."], "Abkhazia": ["A region in the Caucasus which is a de facto independent state of Georgia not recognized internationally."], "heel": ["Front and back slice of a loaf.", "The part of the foot on the backside where it becomes the leg."], "Addis Ababa": ["The capital of Ethiopia."], "Addis Abeba": ["The capital of Ethiopia."], "Amman": ["The capital of Jordan."], "Ankara": ["The capital of Turkey.", "Turkish dialect."], "Antananarivo": ["The capital of Madagascar."], "Asmara": ["The capital of Eritrea."], "Astana": ["The capital of Kazakhstan."], "Bamako": ["The capital of Mali."], "Bairiki": ["The capital of Kiribati."], "Banjul": ["The capital of Gambia."], "Belmopan": ["The capital of Belize."], "Beirut": ["The capital and the largest city of Lebanon.", "ISO 639-6 entity"], "Bishkek": ["The capital of Kyrgyzstan."], "Buenos Aires": ["The capital of Argentina."], "Bujumbura": ["The capital of Burundi."], "Gaborone": ["The capital of Botswana."], "Dhaka": ["The capital and largest city of Bangladesh."], "Damascus": ["The capital of Syria."], "Muscovite": ["A person from Moscow.", "From or pertaining to Moscow."], "Adygea": ["A republic of Russia located in the North Caucasus."], "Altai": ["A republic of Russia located in West Siberia."], "Bashkortostan": ["A republic of Russia located in the Urals."], "Buryatia": ["A republic of Russia located in East Siberia."], "Chechnya": ["A republic of Russia located in the North Caucasus."], "Chuvashia": ["A republic of Russia located in the Volga-Vyatka."], "Dagestan": ["A republic of Russia located in the North Caucasus.", "ISO 639-6 entity"], "Ingushetia": ["A republic of Russia located in the North Caucasus."], "Kabardino-Balkaria": ["A republic of Russia located in the North Caucasus."], "Kalmykia": ["A republic of Russia located in Povolzhye."], "Karachay-Cherkessia": ["A republic of Russia located in the North Caucasus."], "Karelia": ["A republic of Russia located in the northwest."], "Khakassia": ["A republic of Russia located in south central Siberia."], "Komi": ["A republic of Russia located west of the Urals."], "Mari El": ["A republic of Russia located in Volga-Vyatka."], "Mariy El": ["A republic of Russia located in Volga-Vyatka."], "Marii El": ["A republic of Russia located in Volga-Vyatka."], "Mordovia": ["A republic of Russia located in Volga-Vyatka."], "North Ossetia-Alania": ["A republic of Russia located in the North Caucasus."], "Yakutia": ["A republic of Russia with an area of 3,103,200 km\u00b2 located in the East Russia. Its borders are the Arctic Ocean by sea and the Federal subjects of Chukotka (E), Magadan (E/SE), Khabarovsk Krai (SE), Amur (S), Chita (S), Irkutsk (S/SW), Evenk (W), Taymyr (W/NW)."], "Tatarstan": ["A republic of Russia located in Povolzhye."], "Tuva": ["A republic of Russia located in south central Siberia."], "Udmurtia": ["A republic of Russia located in the Urals."], "aphasia": ["A loss of the ability to produce and/or comprehend language, due to injury to brain areas specialized for these functions, Broca's area, which governs language production, or Wernicke's area, which governs the interpretation of language. (source: Wikipedia)"], "onomastics": ["The study of the meaning, origin and distribution of names."], "tillage": ["The practice of growing and nurturing plants outside of their wild habitat (i.e., in gardens, nurseries, arboreta)."], "onomatology": ["The study of the meaning, origin and distribution of names."], "everyday life": ["The normal routine."], "dialect": ["A regional variant of a language."], "trepidation": ["A state of hesitation or concern."], "Central economic region": ["An economic region of Russia, located in the west, that contains the city of Moscow."], "Central Black Earth economic region": ["An economic region of Russia located in the west."], "Central Chernozem": ["An economic region of Russia located in the west."], "Central Chernozemic economic region": ["An economic region of Russia located in the west."], "East Siberian economic region": ["An economic region of Russia located in Russia's center."], "Far Eastern economic region": ["An economic region of Russia located in the east, bordering the Pacific Ocean."], "Northern economic region": ["An economic region of Russia located in the north, bordering the Arctic Ocean."], "Northwestern economic region": ["An economic region of Russia, located in the northwest, containing the city of St. Petersburg."], "Volga economic region": ["An economic region of Russia located in the south, bordering Kazakhstan."], "Povolzhsky economic region": ["An economic region of Russia located in the south, bordering Kazakhstan."], "Urals economic region": ["An economic region of Russia located in the Ural mountain range, bordering Kazakhstan."], "Volga-Vyatka economic region": ["An economic region of Russia located in the west."], "West Siberian economic region": ["An economic region of Russia located in the country's center."], "Kaliningrad economic region": ["An economic region of Russia located in the country's enclave between Lithuania and Poland."], "North Caucasus economic region": ["An economic region of Russia, located in the south, containing the city of Grozny."], "Chuvash Republic": ["A republic of Russia located in the Volga-Vyatka."], "Chechen Republic": ["A republic of Russia located in the North Caucasus."], "Kabardino-Balkar Republic": ["A republic of Russia located in the North Caucasus."], "Karachay-Cherkess Republic": ["A republic of Russia located in the North Caucasus."], "Khakasiya": ["A republic of Russia located in south central Siberia."], "Tataria": ["A republic of Russia located in Povolzhye."], "Tyva": ["A republic of Russia located in south central Siberia."], "Udmurt Republic": ["A republic of Russia located in the Urals."], "St. Petersburg": ["The second-largest city and former capital of Russia.", "A city in Pinellas County, Florida, United States."], "Jewish Autonomous Oblast": ["An autnomous oblast of Russia situated in the Far East, bordering China."], "Birobidzhan": ["The capital of the Jewish Autonomous Oblast of Russia."], "tickle": ["To cause an involuntary twitch and convulsive laughing by lightly touching certain body parts."], "genealogy": ["The study or investigation of ancestry and family histories."], "brake": ["A mechanical device used to slow a vehicle.", "Decelerate using a mechanical device."], "election": ["The act of selecting someone or something.", "A process by which members of a population vote to choose a person to hold public office."], "Altai Krai": ["A federal subject of Russia (a krai) in the Siberian Federal District. It borders with, clockwise from the south, Kazakhstan, Novosibirsk and Kemerovo Oblasts, and the Altai Republic. The krai's administrative center is the city of Barnaul."], "Central Federal District": ["A federal district of Russia located in the far west."], "Southern Federal District": ["A federal district of Russia located in the southwest."], "Northwestern Federal District": ["A federal district of Russia that consists of the country's northern European section."], "Far Eastern Federal District": ["A federal district of Russia that consists of the Russian Far East."], "Siberian Federal District": ["A federal district of Russia located in the country's center."], "Urals Federal District": ["A federal district of Russia located in the west of the country's Asian portion."], "Volga Federal District": ["A federal district of Russia located in the southeast of the country's European portion."], "Privolzhsky Federal District": ["A federal district of Russia located in the southeast of the country's European portion."], "Buryat Republic": ["A republic of Russia located in East Siberia."], "creationism": ["The doctrine that each species (or perhaps higher taxon) of organism was created separately in much its present form, by a supernatural creator."], "compromise": ["To settle by concession by finding a middle way between two extremes.", "A settlement reached by concessions from the involved parties.", "To cause the loss of normal function.", "The successful exploitation of a target by an attacker. (Schneider)"], "hairdresser": ["Person whose job is to treat the hair style of other people."], "barber": ["Person whose job is to treat the hair style of other people."], "serve": ["The first shot of a ball or a shuttle in a game like tennis or volleyball to contest the next point.", "To work for; to labor on behalf of.", "To perform duties attached to a particular office or place or function.", "To bring (food, drink) to a person for eating or drinking.", "To be a formal servant for (a god or deity); to worship in an official capacity.", "To be a servant for, to work for, to be employed by.", "To be a waiter for.", "To meet the needs of.", "To have a given use or purpose.", "To usefully take the place as, instead of something else.", "To officially deliver (a legal notice, summons etc.).", "To be in military service.", "To operate (a weapon).", "To copulate with (of male animals).", "To go through a term of service (as a prisoner, soldier, juror, senator, etc.)", "To lead off with the first delivery over the net in tennis, volleyball, ping pong, badminton etc.", "To put the ball into play."], "rotary": ["A type of circular intersection in which traffic must travel in one direction around a central island."], "traffic circle": ["A type of circular intersection in which traffic must travel in one direction around a central island."], "cancer cell": ["Malignant degenerated cell."], "save": ["To preserve, reserve or set aside for a period of time, in order to reuse it in the future.", "To rescue from danger, harm, or an injury that could be sustained; to bring into safety.", "To record (a computer file) on a computer storage medium.", "To refrain from harming.", "To set aside money for future use."], "acorn": ["Fruit of the oak tree."], "homo": ["A person who is sexually attracted solely or primarily to other members of the same sex.", "Any living or extinct member of the family Hominidae characterized by superior intelligence, articulate speech, and erect carriage."], "cigarette": ["A product manufactured out of cured and finely cut leaves, which are rolled or stuffed into a paper-wrapped cylinder for smoking."], "vote with your feet": ["To leave an organisation when the disagreements are too big."], "negotiation": ["A discussion intended to produce an agreement."], "dialogue": ["A discussion intended to produce an agreement."], "homeless": ["Having no housing."], "waste container": ["A container for the collection of waste."], "coconut": ["The large hard-shelled oval nut with a fibrous husk of the cocos palm.", "A tropical tree with feathery leaves which bears coconuts."], "logic": ["The study of the principles and criteria of valid inference and demonstration.", "A reasoned and reasonable judgment."], "financial": ["Relating to finances."], "noodle": ["A string or strip of pasta, especially as used in Chinese and Italian cookery."], "revelation": ["An enlightening or astonishing disclosure.", "A manifestation of divine truth.", "The speech act of making something evident."], "calligram": ["A word, phrase or longer text in which the typeface or the layout has some special significance."], "black eye": ["An eye which has been bruised and coloured, especially after receiving a blow."], "calligraphy": ["The art of beautiful writing."], "printing": ["The process of producing printed material by means of inked type and a printing press or similar technology.", "The business of producing printed material for sale or distribution."], "version": ["The result of converting words and texts from one language to another.", "A number or name indicating which revision something is.", "An account or description from a particular point of view, especially as contrasted with another account."], "snuff": ["To inhale through the nose.", "Ground or pulverized tobacco, which is generally inhaled through the nose."], "cigar": ["Tobacco, rolled and wrapped with an outer covering of tobacco leaves, intended to be smoked."], "genome": ["The whole hereditary information of an organism encoded in its DNA."], "flail": ["A tool used for separating grains from their husks."], "Anglicism": ["A word coming from the English language, being specific for this and being taken over by another language."], "anglicism": ["A word coming from the English language, being specific for this and being taken over by another language."], "spinach": ["An important leaf vegetable, grown throughout the temperate regions of the world."], "black market": ["The buying and selling, especially of illicit trade."], "underground market": ["The buying and selling, especially of illicit trade."], "EU enlargement": ["The accession of one or more countries to the European Union."], "wear": ["Fix clothes on your body and carry them.", "To become tired through overuse or great strain or stress."], "French kiss": ["A kiss where one touches the partner's tongue with one's own tongue."], "tongue kiss": ["A kiss where one touches the partner's tongue with one's own tongue."], "mantra": ["Expressions of enlightened speech."], "taste": ["One of the five senses: the physical ability to detect flavors.", "The sociological concept of expressing preferences.", "To try the flavor or quality of something.", "The sensory impression of a substance that is determined mainly by the chemical senses of taste and smell."], "varve": ["An annual layer of sediment or sedimentary rock."], "fatuous": ["Obnoxiously stupid, vacantly silly. (Refers especially to foolishness and disregard of reality)"], "arrow": ["Pointed projectile that is shot with a bow.", "A mark to indicate a direction or relation."], "aubergine": ["Violet oval-shaped vegetable, the fruit of Solanum melongena.", "An Asian plant, Solanum melongena, cultivated for its edible purple, green, or white ovoid fruit."], "delusive": ["Not in keeping with the reality or the facts."], "Elder Futhark": ["The oldest form of the runic alphabet, used by Germanic tribes for Proto-Norse and other Migration period Germanic dialects of the 2nd to 8th centuries."], "runic alphabet": ["One of a set of related alphabets using letters, known as runes, formerly used to write Germanic languages"], "ray": ["An animal of the superorder Batoidea of cartilaginous fishes, containing more than 500 described species in thirteen families.", "Stream of particles or electromagnetic waves.", "An idealized narrow beam of light.", "To emit as rays.", "To expose to radiation."], "Batoidea": ["An animal of the superorder Batoidea of cartilaginous fishes, containing more than 500 described species in thirteen families."], "guest room": ["A room in a home set aside for the use of visiting guests."], "guestroom": ["A room in a home set aside for the use of visiting guests."], "Rey": ["A historic city in the province of Tehran, Iran."], "Rayy": ["A historic city in the province of Tehran, Iran."], "Rhages": ["A historic city in the province of Tehran, Iran."], "Rages": ["A historic city in the province of Tehran, Iran."], "wave": ["A disturbance in an fluid medium.", "A computer file format, better known as WAV.", "A disturbance that propagates through space and time.", "To signal with the hands or nod.", "To move or swing back and forth.", "To move in a wavy pattern or with a rising and falling motion."], "WAV": ["A computer file format, better known as WAV."], "forbidden": ["That should not be done, because of moral constraints."], "Football": ["The ball used in the American and Canadian football.", "Form of football, also close to rugby, played mainly in Ireland."], "eloquence": ["Fluent, forcible, elegant or persuasive speaking in public."], "admiral": ["The highest military rank in most of the sea powers."], "butoxyethanol": ["An organic solvent with the formula C6H14O2. It is a colorless liquid with a sweet, ether-like odour."], "balcony": ["Kind of platform projecting from the wall of a building."], "Ray": ["A historic city in the province of Tehran, Iran.", "Ray was a town in Arizona. There was a huge copper mine there, which grew so big that all the people in the town had to leave.", "A city in Williams County in North Dakota in the United States.", "A male name."], "Older Futhark": ["The oldest form of the runic alphabet, used by Germanic tribes for Proto-Norse and other Migration period Germanic dialects of the 2nd to 8th centuries."], "Old Futhark": ["The oldest form of the runic alphabet, used by Germanic tribes for Proto-Norse and other Migration period Germanic dialects of the 2nd to 8th centuries."], "agrarian": ["A person who works the land or who keeps livestock, especially on a farm.", "Of, or relating to, the ownership, tenure and cultivation of land."], "farmer": ["A person who works the land or who keeps livestock, especially on a farm."], "unemployment benefit": ["Money that unemployed people receive from the government or an insurance."], "wide awake": ["Completely awake."], "half awake": ["Not entirely awake."], "Top": ["The first element in a set."], "dozy": ["Still dazed from sleep."], "top": ["A sleeveless lady's garment for the upper body part.", "A spinning Toy.", "A person who assumes the main/active role in sex.", "A person who assumes the dominant role in BDSM.", "The first element in a set.", "Something that is above all other.", "Highest and most elevated point.", "A toy that can be spun on an axis, balancing on a point."], "elbow": ["The joint between arm and forearm."], "visceral": ["Indicating an extreme degree of negative emotion.", "Pertaining to the internal organs."], "confuse": ["To mistake one thing for another."], "confound": ["To mistake one thing for another."], "mix up": ["To mistake one thing for another."], "postposition": ["Not inflectable words, that are\u2014contrary to prepositions\u2014after the word the case is given to."], "convey": ["To carry, particularly to a particular destination.", "To transmit information and make known.", "To transport toward somewhere; to take something or somebody with oneself somewhere.", "To go or come after and bring or take back."], "positron": ["Antiparticle of the electron. It has the same mass but reverse electric charge. Its symbol is e+."], "chain gang": ["A group of convicts chained together, to work outside the confines of a prison."], "convict": ["A person convicted of a crime by a judicial body.", "To find guilty of a crime as a result of legal proceedings."], "tempest": ["An atmospheric disturbance involving perturbations of the prevailing pressure and wind fields on scales ranging from tornadoes to extratropical cyclones; also the associated weather and the like.\\n(Source: MGH)"], "slipper": ["A low shoe that can be slipped on and off easily and is usually worn indoors."], "adhesion": ["The attraction of dissimilar particles to cling to one another."], "Art": ["The expression of creativity or imagination, or both."], "nominative used verb": ["A verb that gets used like a noun and therefore becomes a noun."], "bord": ["The outer sides of a ship that keeps the water out."], "nominative case": ["A grammatical case for a noun or pronoun, which generally marks the subject of a verb, as opposed to its object or other verb arguments."], "brine": ["Water saturated or strongly impregnated with salt."], "pickle": ["The male sexual organ for copulation and urination; the tubular portion of the male genitalia (excluding the scrotum).", "Vegetables preserved in brine or vinegar."], "dative case": ["The form of a noun, pronoun or adjective when it is the indirect object of a verb, (or part of it); used to indicate the noun to whom something is given (in a number of languages, for example Latin and German)"], "vinegar": ["A sour liquid formed by the fermentation of alcohol with acetic acid bacteria used as a condiment or preservative.", "To season with vinegar."], "genitive case": ["The case that marks a noun as being the possessor of another noun."], "possessive case": ["The case that marks a noun as being the possessor of another noun."], "second case": ["The case that marks a noun as being the possessor of another noun."], "grammatical case": ["The grammaticalic case in which a noun is used."], "collective name": ["Noun that summarizes several similar objects in one term."], "gherkin": ["A young cucumber, picked when 1 to 3 inches (3 to 8 cm) in length and pickled in jars or cans with vinegar or brine."], "touch illusion": ["An illusion based on the sense of touch."], "accusative case": ["The grammatical case to denote a direct object."], "tomato": ["The savoury fruit of the Solanum lycopersicum, red when ripe."], "exchange": ["To give something in return for something received.", "To exchange goods.", "To exchange something old or something that has become unusable for something else of the same kind.", "To convert a sum of money from one currency into another.", "The marketplace in which shares, options and futures on stocks, bonds, commodities and indices are traded.", "The act, process, or an instance of exchanging.", "The reciprocal transfer of equivalent sums of money, usually in currencies of different countries.", "Anything given or received as an equivalent, replacement, or substitute for something else.", "A mutual expression of views; an argument or quarrel; altercation.", "The act of putting one thing or person in the place of another.", "To exchange a penalty for a less severe one."], "greeting word": ["A word for the greetings one uses.\\n(Welcome! Bye!)"], "stay": ["To continue to be in the same place or state.", "To stay the same; to remain in a certain state.", "A period of time spent in a place.", "Something that supports or steadies another thing."], "remain": ["To continue to be in the same place or state.", "To stay the same; to remain in a certain state.", "To be left (of persons, questions, issues, results, evidence, etc.)."], "devour": ["To eat by swallowing large bits of food with little or no chewing."], "gobble": ["To eat by swallowing large bits of food with little or no chewing."], "perception": ["The conscious understanding of something."], "observation": ["The act of noting some event."], "profound": ["Demonstrating intellectual penetration or emotional depths.", "Descending far below the surface."], "trolley bus": ["A bus, powered via overhead electric cables, that does not run on tracks."], "trolleybus": ["A bus, powered via overhead electric cables, that does not run on tracks."], "transformation": ["The act of changing in form or shape or appearance."], "sandman": ["A fairy tale figure, which brings after the narration children to falling asleep, by strewing them sand into the eyes."], "modal verb": ["An auxiliary verb that is used to express in which modality the subject is linked to the verb."], "fractional number": ["A word that expresses a part of a whole (whole, half, third, fourth, ... th; etc.)"], "fractional numeral": ["A word that expresses a part of a whole (whole, half, third, fourth, ... th; etc.)"], "generic number": ["Generic numbers define the number of different kinds of something."], "local adverb": ["An adverb that defines a place or direction."], "adverb of place": ["An adverb that specifies a place, e. g. here there, ahead, nowhere"], "adverb of direction": ["An adverb that specifies a direction, e. g. there, down, anywhere"], "causal adverb": ["Indicates a cause, reason, condition, concession, consequence, purpose, or intention."], "gender": ["Either of two main divisions (either male or female) into which many organisms can be placed, according to reproductive function or organs.", "Arbitrarily specified category of a word as used in some languages, governing the agreement between words.", "To become pregnant."], "hackneyed": ["Repeated too often; overfamiliar through overuse."], "clich\u00e9d": ["Repeated too often; overfamiliar through overuse."], "banal": ["Repeated too often; overfamiliar through overuse."], "grammatical number": ["In linguistics, a morphological category characterized by the expression of quantity through inflection or agreement."], "phonetic alphabet": ["A writing system used for transcribing the sounds of human speech into writing."], "singular": ["By one's self; apart from, or exclusive of, others; applied to a thing.", "Grammatical number that is used for a single object."], "dual": ["In some languages, grammatical number related to precisely 2 objects of the same type (in general, for objects that naturally belong together), as opposed to singular and plural.", "Having more than one decidedly dissimilar aspects or qualities."], "plural": ["Grammatical number that is used for more that one (many) object of the same type."], "castrato": ["A male soprano, mezzo-soprano, or alto voice produced either by castration of the singer before puberty or who, because of an endocrinological condition, never reaches sexual maturity."], "discharge": ["The volume of water transported by a river in a certain amount of time.", "To pronounce not guilty of criminal charges.", "To free from obligations or duties."], "acquit": ["To pronounce not guilty of criminal charges."], "entrails": ["The internal organs of an animal."], "courage": ["The quality of not being afraid or intimidated easily without being incautious or inconsiderate."], "cowardice": ["The refusal to confront a reasonable degree of fear or anxiety."], "prudence": ["The exercise of sound judgement in practical affairs.", "Knowing how to avoid embarrassment or distress."], "woodlouse": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs."], "armadillo bug": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs."], "cheeselog": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs."], "doodlebug": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs."], "monkeypea": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs."], "pill bug": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs."], "roly-poly": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs."], "potato bug": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs.", "(Leptinotarsa decemlineata) Yellow and black striped beetle from the family of the Chrysomelidae which originates from America and feeds upon parts of the potato plant."], "roll up bug": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs."], "slater": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs."], "sow bug": ["A terrestrial crustacean that is a member of the suborder Oniscidea. It has a rigid, segmented, calcareous exoskeleton and fourteen jointed limbs. It is usually found in damp, dark places, such as under rocks and logs."], "Dutch courage": ["Courage induced by alcohol."], "proof of concept": ["A short and/or incomplete realization of a certain method or idea(s) to demonstrate its feasibility."], "colloquial": ["Characteristic of / belonging to informal spoken language or conversation."], "ballistics": ["The science that deals with the motion, behavior, and effects of projectiles, especially bullets, gravity bombs, rockets etc."], "acronym": ["An abbreviation that is formed using the initial letters of words or word parts in a phrase or name."], "initialism": ["A acronym based on the initials of the distinct Words. \\n(LASER -> \u201eLight Amplification by Stimulated Emission of Radiation\u201c)"], "backronym": ["An acronym or abbreviation to which a new meaning is assigned as a phrase or sentence associated with it."], "bacronym": ["An acronym or abbreviation to which a new meaning is assigned as a phrase or sentence associated with it."], "recursive acronym": ["A recursive acronym (or occasionally recursive initialism) is an abbreviation which refers to itself in the expression for which it stands.\\nARF -> Acronyme-Recursion-Finder\\nSARF -> \"Simple ARF\" or \"SARF-Acronyme-Recursion-Finder\""], "innuendo": ["A derogatory hint or reference to a person or thing."], "insinuation": ["A derogatory hint or reference to a person or thing."], "projectile": ["An object intended to be or having been fired from a weapon."], "prerogative": ["An exclusive legal right given from a government or state and invested in an individual or group."], "weekend": ["The break from work in a week, usually associated with a day of religious worship."], "demonstrative article": ["Article, which is set before a name."], "temporal preposition": ["Preposition used for the indication time."], "simple future": ["The grammatical tense (verb form) that describes events in the future."], "acquiesce": ["To concur, not heartily but so far as not to oppose."], "fraternity": ["A group of people associated for a common purpose.", "A formal association of people with similar interests.", "A group of people with a common interest."], "parse": ["To analyse and describe a sentence grammatically."], "fry": ["To cook in hot fat."], "create": ["To bring into existence.", "To pursue or be engaged in a creative activity."], "clitic": ["A morpheme that functions like a word, but appears not as an independent word but rather is always attached to a following or preceding word."], "enclitic": ["A clitic that follows its host."], "continuity": ["The quality of existing without interruption."], "Swiss ball": ["Large ball made out of elastic rubber which can be used for gymnastic exercise or as a seat."], "bubble chamber": ["A vessel used to detect electrically charged particles moving through it."], "wood pulp": ["The cellulosic material produced by reducing wood mechanically or chemically and used in making paper and cellulose products."], "cohesion": ["Intrinsic union of parts."], "tea bag": ["Small bag made out of filter paper and containing tea leaves which is put into hot water for a few minutes in order to prepare tea."], "computer display": ["Computer peripheral that allows to display information in the form of text or images."], "monitor": ["Computer peripheral that allows to display information in the form of text or images.", "To keep under surveillance.", "Someone who gives a warning so that a mistake can be avoided."], "computer monitor": ["Computer peripheral that allows to display information in the form of text or images."], "quarry-lice": ["Big woodlouse (Ligia oceanica) found on rocky shores"], "common sea slater": ["Big woodlouse (Ligia oceanica) found on rocky shores"], "sea slater": ["Big woodlouse (Ligia oceanica) found on rocky shores"], "countdown": ["A count backward indicating the time left before some event occurs.", "To count backward to indicate the time left before some event occurs."], "offensive": ["Causing anger or annoyance.", "A military attack.", "Used to attack."], "superconductivity": ["The phenomenon that the electrical resistance of some materials becomes zero below a certain (normally very low) temperature."], "demolition": ["The tearing down of buildings by mechanical means.", "Destruction of a building."], "sundial": ["A device used to tell the time with the help of the sun."], "rosary": ["Traditional Catholic devotion which combines prayer and meditation. It is based on reciting sequences consisting of the Lord's Prayer followed by ten Hail Mary and one Glory Be to the Father; each sequence, called a decade, is said while meditating a different mystery of redemption.", "A string of beads used for keeping count while reciting the prayers of rosary. Usually consisting of five sets of ten beads each, with a larger bead between sets, and including a small crucifix."], "heat of fusion": ["The amount of thermal energy which is absorbed by a solid material when melting."], "fascinating": ["Having a captivating, attractive effect."], "alarm clock": ["Clock that can be set to ring at a given time of the day."], "sapwood": ["Soft wood of a tree, between the bark and the heartwood."], "sap-wood": ["Soft wood of a tree, between the bark and the heartwood."], "alburnum": ["Soft wood of a tree, between the bark and the heartwood."], "exhibition": ["A large scale public showing of objects or products."], "Lagonegro": ["Town in the province of Potenza, region Basilicata, Italy."], "quiver": ["A container for arrows, crossbow bolts or darts, such as those fired from a bow, crossbow or blowgun."], "short term": ["In a short period of time, in the near future."], "crockery": ["Pottery of baked or hardened clay."], "dishes": ["Plates, dishes and other eating and serving tableware, usually made of some ceramic material."], "misapprehension": ["The understanding of something in a different way than it is meant."], "misconception": ["The understanding of something in a different way than it is meant."], "misunderstanding": ["The understanding of something in a different way than it is meant."], "flamboyant": ["Showy, bold or audacious in behaviour and appearance."], "accelerated": ["Made faster."], "in turn": ["When it is his/her/its turn."], "against payment": ["against transfer of a certain amount of money", "What requires the acceptation of costs."], "doppler effect": ["The doppler effect is the change of the received frequency of waves (e. g. light or sound), that occurs when sender and receiver move relatively to each other."], "overjoyed": ["Extremely happy."], "overhappy": ["Extremely happy."], "second person": ["The second Person in the grammatical manner defines a word, that references the person to which the speaker talks."], "first person": ["The first Person in the grammatical manner defines a word, that references the speaker."], "third Person": ["The second Person in the grammatical manner defines a word, that don't references the person to which the speaker talks nor the speaker, but another person, pet, or thing."], "functional group": ["In organic chemistry, a specific grouping of elements that is characteristic of a class of compounds, and determines some properties and reactions of that class"], "aldehyde": ["An organic compound containing a terminal carbonyl group, i.e., a O=CH- group attached to hydrogen or a carbon chain."], "grammatical gender": ["Arbitrarily specified category of a word as used in some languages, governing the agreement between words."], "carboxylic acid": ["An organic acid characterized by the presence of a carboxyl group with formula -(C=O)-OH, usually written as -COOH."], "Arzano": ["City of the province of Naples, region of Campania, Italy."], "graviton": ["Hypothetical elementary particle that mediates the force of gravity in most models of quantum gravity theory."], "track": ["A pair of parallel rails providing a runway for the wheels of, e.g., a train.", "To go beyond, to pass here.", "Unpaved or unsealed road for agricultural use; gravel road in the forest etc.", "The direction of movement, line or route of a vessel at any given moment.", "Circular data storage unit on a side of magnetic or optical disk, divided into sectors.", "To observe the (measured) state of an object over time."], "coherent": ["Orderly, logical and consistent."], "derail": ["To come off the tracks."], "conductor": ["A person who checks tickets on board of a public transport.", "A person who directs and guides a musical performance through visual language.", "Material that allows the flow of an electric charge."], "ester": ["An organic compound formed by a reaction of a carboxylic acid and an alcohol."], "ketone": ["An organic compound characterized by the presence of a carbonyl group (C=O) linked to two other carbon atoms."], "amide": ["An organic compound characterized by a carbonyl group (C=O) linked to a nitrogen atom (N)."], "alkene": ["An unsaturated chemical compound containing at least one carbon-to-carbon double bond. The simplest alkenes, with only one double bond and no other functional groups, form a homologous series of hydrocarbons with the general formula CnH2n."], "alkyne": ["A hydrocarbon that has at least one triple bond between two carbon atoms, with the formula CnH2n-2.", "Any organic compound having one or more carbon-carbon triple bond; an alkyne."], "vinyl chloride": ["A flammable, explosive gas with an ethereal aroma; soluble in alcohol and ether, slightly soluble in water; boils at -14\u00b0 C; an important monomer for polyvinyl chloride and its copolymers; used in organic synthesis and in adhesives."], "tetrachloroethene": ["Stable, colorless liquid, nonflammable and nonexplosive, with low toxicity; used as a dry-cleaning and industrial solvent, in pharmaceuticals and medicines, and for metal cleaning."], "dyslexia": ["A condition in which a person's ability to read and write is much lower than would be expected of someone of that person's intelligence."], "modest": ["Having a measured opinion of oneself and one's merits."], "deaf": ["Not having the faculty of hearing, or only having a restricted capability to hear."], "braille": ["A system of writing in which letters and some combinations of letters are represented by raised dots arranged in three rows of two dots each and are read by using the fingertips."], "Piemontese": ["A language spoken by over 2 million people in Piedmont, northwest Italy"], "Minnan": ["The language of the southern Fujian province of China."], "Min-nan": ["The language of the southern Fujian province of China."], "polyester": ["A condensation polymer (C10H8O4) which contain the ester functional group in their main chain."], "polyamide": ["A polymer containing monomers joined by amide bonds. They can occur both naturally, examples being proteins, and can be made artificially, examples being Nylon, Kevlar."], "polysaccharide": ["A polymer made up of many monosaccharides joined together by glycosidic links."], "glycan": ["A polymer made up of many monosaccharides joined together by glycosidic links."], "leap year": ["A year with 366 days instead of 365."], "whipped cream": ["Thick cream that has had air incorporated into it by rapid beating."], "surreptitious": ["Taking pains to avoid being observed."], "furtive": ["Taking pains to avoid being observed."], "granite": ["A rock consisting essentially of crystals of feldspar and mica in a mass of quartz."], "igneous": ["Formed from lava or magma."], "munificence": ["Liberality in bestowing gifts; extremely liberal and generous of spirit."], "generous": ["Very liberal in giving or bestowing."], "stool": ["To excrete feces from one's body through the anus.", "A chair without back and arm rests."], "baobab": ["Genus of big trees (Adansonia) from the mallow family, growing in tropical countries"], "consequently": ["[A word that expresses that something is or should be the consequence of something else]."], "as a result": ["[A word that expresses that something is or should be the consequence of something else]."], "divan": ["A couch usually without arm rests intended for laying on it."], "ambiguous": ["Containing multiple possible interpretations.", "Not clearly thought out.", "Expressed in an unclear fashion."], "excellent": ["Of the highest quality."], "olfactory": ["Of or pertaining to the sense of smell."], "kissable": ["Inviting to be kissed through attractiveness."], "olfaction": ["The sense of smell."], "obstruction": ["Something immaterial that stands in the way and must be circumvented or surmounted."], "fair use": ["A doctrine in United States copyright law that allows limited use of copyrighted material without requiring permission from the rights holders."], "abandoned": ["Left behind by the owner or keeper.", "Displaying the effect of excessive indulgence in sensual pleasure."], "forsaken": ["Left behind by the owner or keeper."], "downpour": ["An extreme heavy shower."], "amplify": ["To increase the strength or amount of."], "acquisition": ["The capacity to do something well. They are usually acquired or learned, as opposed to abilities, which are often thought of as innate.", "To get the possession of a right or an asset, like a property or a company."], "bedside table": ["A small table located next to the bed."], "acquirement": ["The capacity to do something well. They are usually acquired or learned, as opposed to abilities, which are often thought of as innate."], "reprieve": ["To stop blaming someone for an offense.", "An interruption in the intensity or amount of something."], "prosecutor": ["A lawyer who decides whether to charge a person with a crime and tries to prove in court that the person is guilty."], "jury": ["A group of individuals chosen from the general population to hear and decide a case in a court of law."], "allege": ["To make a claim, a plea or offer justification for an act, especially before proof is available.", "To report or maintain."], "Sanskrit": ["A classical language of India, a liturgical language of Hinduism, Buddhism, and Jainism."], "puke": ["To regurgitate the contents of the stomach.", "Matter ejected from the stomach through the mouth."], "put": ["To cause (as an end result, not a process) an object to be in a new place.", "To convey meaning.", "To use a resource (money, time, energy, etc.) with the expectation of obtaining something of greater value.", "To cause to be in a certain state.", "(Finance) To exercise a put option.", "To throw a heavy iron ball, as a sport.", "(Of a vessel or its occupants) to follow a course.", "To associate ownership of (something) to someone."], "referendum": ["A direct popular vote on a proposed law or constitutional amendment."], "plebiscite": ["A direct popular vote on a proposed law or constitutional amendment."], "debt restructuring": ["A process of debt rescheduling, debt refinancing and debt discounting in order to prevent insolvency and or bankruptcy."], "finance": ["To borrow or provide funding for a transaction or undertaking.", "The science that studies the management of money and other assets."], "misty": ["Filled with fog."], "brainwashing": ["Physical and psychological manipulation to change the beliefs or behavior of a person."], "ferry": ["A boat or a ship carrying passengers, and sometimes their vehicles, on short-distance, scheduled services."], "with one's hands tied behind one's back": ["Very easily."], "fogless": ["Without fog."], "propensity": ["A likelihood of behaving in a particular way or going in a particular direction."], "predilection": ["A likelihood of behaving in a particular way or going in a particular direction."], "proclivity": ["A likelihood of behaving in a particular way or going in a particular direction."], "predisposition": ["A likelihood of behaving in a particular way or going in a particular direction."], "placate": ["To cause to be more favourably inclined.", "Make calm and content."], "inclination": ["A likelihood of behaving in a particular way or going in a particular direction.", "At an angle relative to a level plane or to another plane of reference."], "penchant": ["A likelihood of behaving in a particular way or going in a particular direction."], "aptness": ["A likelihood of behaving in a particular way or going in a particular direction."], "proneness": ["A likelihood of behaving in a particular way or going in a particular direction."], "joint": ["The point where two components of a structure merge rigidly.", "Any part of the body where two bones join.", "Done by two or more people or organisations working together.", "A cigarette rolled using cannabis."], "articulation": ["Any part of the body where two bones join.", "A joint or place between two parts of a plant (like a leaf and a branch), where separation may take place spontaneously."], "Earth's atmosphere": ["A layer of gases that may surrounds the Earth."], "adapt": ["To change to reach a certain scope or condition."], "debit": ["In bookkeeping: make a negative movement on an account."], "adjust": ["To change to reach a certain scope or condition.", "To adapt something; to alter or regulate so as to achieve accuracy or conform to a standard.", "To make partial changes.", "To arrange in a straight line.", "To settle an insurance claim."], "perform": ["Carry something out to completion."], "conform": ["To change to reach a certain scope or condition.", "Corresponding to something else."], "update": ["News that updates the available knowledge or information.", "To bring up to date; to supply with the most recent available information.", "To make modern or bring up to date.", "To bring to the latest state of technology."], "dodge": ["Trying not to encounter a hurdle or to overcome a difficulty, a problem etc. without dealing directly with it.", "An elaborate or deceitful scheme contrived to deceive or evade."], "precedent": ["A legal case establishing a principle or rule that a court may need to adopt when deciding subsequent cases with similar issues or facts."], "purpose": ["What you want to achieve or do.", "An anticipated outcome that is intended to obtain or that guides your planned actions.", "The act of intending to do something.", "The subject of discourse; the point at issue."], "anxiety": ["An unpleasant complex combination of emotions that includes fear, apprehension and worry, and is often accompanied by physical sensations such as palpitations, nausea, chest pain and/or shortness of breath.", "Lack of calm, peace, or ease."], "avoid": ["Trying not to encounter a hurdle or to overcome a difficulty, a problem etc. without dealing directly with it.", "To do something in such a way that it does not happen."], "thaw": ["The melting of ice, snow, or other congealed matter.", "To become soft or liquefied by heat.", "To remove frost from.", "A period of lessening tension between rivals."], "windchill": ["The felt air temperature taking into account wind speed, which is lower than the actual temperature."], "platitude": ["A saying that is overused or used outside its original context, so that its original impact and meaning are lost."], "cliche": ["A saying that is overused or used outside its original context, so that its original impact and meaning are lost."], "clich\u00e9": ["A saying that is overused or used outside its original context, so that its original impact and meaning are lost."], "trite": ["Repeated too often; overfamiliar through overuse."], "binary star": ["Two stars that orbit each other."], "guitarist": ["A male person who plays the guitar.", "A female person who plays the guitar.", "A person who plays the guitar."], "recording": ["The registration and production of music for eventual playback."], "blacksmith": ["A craftsman expert in iron and other metals work."], "farrier": ["A person who maintains the health and balance of the horse\u2019s feet though trimming of the hoof and placement of horseshoes."], "burial": ["The ritual placing of a corpse in a grave."], "interment": ["The ritual placing of a corpse in a grave."], "safety engineering": ["An applied science that ensures that life-critical systems behave as needed even when pieces fail."], "contemporary": ["Belonging to the present time.", "From the same time period than another person or thing.", "Someone living at the same time."], "virtuoso": ["A person, especially a musician, with a masterly ability, technique, or personal style."], "album": ["A blank book specially designed to keep photographs, stamps, or autographs.", "A vinyl or CD record containing multiple pieces of music."], "Formula One": ["A class of auto racing whereby the cars have to conform to a set of FIA rules which all participants and cars must meet."], "statue": ["A three-dimension work of art, usually of a person or animal, usually created by sculpting, carving, moulding, or casting."], "additional": ["(The quantity) Whereby things are increased."], "extra": ["(The quantity) Whereby things are increased.", "More than is needed, desired, or required."], "abstract": ["A condensed presentation of the substance of a body of material.", "Art that looks as if it contains little or no recognizable or realistic forms from the physical world.", "Regarding abstractions, namely, concepts, ideas, thoughts etc.(Adj.; Re. Philosophy; Source: IPDF)", "Not applied, not practical.", "Difficult to understand.", "To consider a concept without thinking of a specific example; consider abstractly or theoretically."], "affordable": ["Having a price that can be paid with one's financial means."], "acquire": ["To acquire, or attempt to acquire knowledge or an ability to do something.", "To get or obtain an item; to come into the possession of something.", "To come to have or undergo a change of physical features or attributes.", "To take on a certain form, attribute, or aspect."], "airline": ["A company that flies aeroplanes to transport people and goods."], "advocate": ["To encourage support for something.", "One who supports something.", "A lawyer who pleads cases in court.", "To push for something."], "anonymous": ["Of unknown name; whose name is withheld or not acknowledged."], "anonymity": ["A condition in which an individual's true identity is unknown."], "supernova": ["Spectacular explosion of a star at the end of its lifetime"], "at the best": ["In the best manner."], "attachment": ["A document that is being added to the main document.", "A feeling that binds one to a person, thing, cause, ideal, or the like.", "A supplementary part or accessory."], "match": ["To satisfy or fulfill (e.g. a job or a need).", "A stick with inflammable substance on one end that can be set on fire by friction.", "To bring two objects, ideas, or people together.", "To be compatible, similar or consistent; coincide in their characteristics.", "A formal contest in which two or more persons or teams compete.", "A pair of people who live together.", "To be equal to in quality or ability."], "agency": ["A business that serves other businesses.", "An administrative unit of government.", "The way a result is obtained or an end is achieved."], "acting": ["Serving temporarily especially as a substitute.", "The art of representing a character, in a movie or a play."], "permit": ["Legal terms under which a person is allowed to use a product or a service or is authorised to do specific things.", "To approve a specific action.", "To consent to, to give permission.", "To allow the presence of or allow without opposing or prohibiting."], "allow": ["To approve a specific action.", "To consent to, to give permission.", "To let have (e.g. permission).", "To allow or plan for a certain possibility; concede the truth or validity of something.", "To grant as a discount or in exchange.", "To afford possibility.", "To allow the presence of or allow without opposing or prohibiting.", "To assign a resource to a particular person or cause."], "renaissance": ["In European history, a period of renaissance for art, science and literature based on the rediscovery of the achievements of classical antiquity."], "muscle": ["An organ formed by contractile tissue that moves other organs."], "apartheid": ["A system of racial segregation that was enforced in South Africa from 1948 to 1994."], "arbitration": ["A process through which two or more parties designate a third party whose ruling they will accept formally."], "hygrometer": ["Instrument used for measuring humidity."], "alert": ["The act of signalling an impending danger in order to call attention to some event or condition.", "Carefully observant and or attentive.", "Able to use one's senses and mental abilities to perceive one's surroundings and understand the current situation."], "piece of news": ["A recent fact."], "award": ["A tangible symbol signifying approval or distinction.", "To show appreciation for an accomplishment in a tangible way.", "The formal acceptance of a supplier's bid or proposal by a government agency. Following such acceptance, the agency usually issues a purchase order to the vendor reflecting the award.\\n(source: OAS)", "To give, especially as an honor or reward."], "ticket": ["A slip of paper that entitles the owner to use a means of public transport such as trains or buses.", "A slip of paper that entitles the owner to attend an event, such as a theatrical performance or an ice hockey game."], "identical twin": ["A twin with almost exact traits and physical appearances, originating from the same zygote."], "twin": ["A case of multiple birth in which the mother gives birth to two offspring from the same pregnancy.", "Relating to twins."], "ancient": ["Belonging to times long past, very old."], "windy": ["With wind, characterized by the presence of wind."], "acknowledge": ["To admit the knowledge of something.", "To concede as true.", "To admit to be true."], "commiserate": ["To express sympathy or compassion; to feel sorrow, pain, or regret.", "To feel regret and sorrow for someone else because of their suffering or misfortune."], "pity": ["To express sympathy or compassion; to feel sorrow, pain, or regret.", "Deep awareness of the suffering of another, coupled with the wish to relieve it.", "To feel regret and sorrow for someone else because of their suffering or misfortune."], "sympathize": ["To express sympathy or compassion; to feel sorrow, pain, or regret."], "belief": ["That which one holds to be true; the acceptance of a fact, opinion, or assertion as real or true despite a lack of strong evidence or knowledge.", "Religious faith; a persuasion of the truths of religion.", "A vague idea in which some confidence is placed."], "faith": ["Religious faith; a persuasion of the truths of religion."], "creed": ["Religious faith; a persuasion of the truths of religion.", "Any system of principles or beliefs.", "The written body of teachings of a religious group that are generally accepted by that group."], "cumbersome": ["Difficult to handle, because of shape."], "clumsy": ["Difficult to handle, because of shape.", "Lacking coordination in movement or action."], "unwieldy": ["Difficult to handle, because of shape."], "confirm": ["To admit the knowledge of something.", "To strengthen; to make firm.", "To assure the accuracy of previous statements.", "To confer the Catholic sacrament of confirmation."], "cow": ["To inspire fear or hesitation due to fear.", "Female bovine animal (Bos taurus) of the subfamily Bovinae of the family Bovidae.", "Any domestic bovine regardless of sex or age."], "faze": ["To inspire fear or hesitation due to fear."], "daunt": ["To inspire fear or hesitation due to fear.", "To produce fear or dread."], "overawe": ["To inspire fear or hesitation due to fear."], "rain gauge": ["An instrument to gather and measure the amount of liquid precipitation over a set period of time."], "intimidate": ["To inspire fear or hesitation due to fear.", "To instill fear."], "bull": ["Male bovine animal."], "a cappella": ["Without musical accompaniment.", "Sung without instrumental accompaniment."], "heifer": ["A young cow that has not as yet produced any offspring."], "end of the world": ["An event caused naturally or artificially which leads to the end of the world, i.e. of humanity or planet Earth."], "almond-tree": ["(Prunus dulcis) Deciduous fruit tree that can reach 10 m in height; it is grown mainly to exploit the seed of its fruit, almonds."], "part of sentence": ["Component of a sentence that can only be moved as a whole."], "analyst": ["A person with a primary function of analyzing information and data, generally with a more limited, practical and short term set of goals than a researcher."], "ambassador": ["A diplomatic official accredited to a foreign sovereign or government, or to an international organization, to serve as the official representative of his or her own country."], "abuse": ["Coarse, insulting speech or expression.", "Improper or excessive treatment or usage (e.g. alchool); application to a wrong or bad purpose (e.g. public funds).", "To put to a wrong use; to change the inherent purpose or function of something.", "Forcing of undesired sexual activity by one person on another."], "accuracy": ["The quality of being near to the true value."], "halve": ["To divide into two (equal) parts."], "attorney": ["A professional person who advises or represents others in legal matters as a profession."], "announcement": ["Act of giving notice about something."], "auction": ["A public event where goods or property are sold to the highest bidder.", "To sell at an auction."], "bureaucracy": ["An organization characterized by standardised procedure (rule-following), formal division of responsibility, hierarchy, and impersonal relationships."], "boundary": ["The dividing line or location between two areas."], "ballot": ["The process of voting, especially in secret."], "amulet": ["Any object whose characteristic is its alleged power to protect its owner from danger or harm."], "talisman": ["Any object whose characteristic is its alleged power to protect its owner from danger or harm."], "Executive Member of the Managing Board": ["Member of the board of directors of a corporate entity which has certain delegated power of the administrative board itself."], "bidder": ["Someone who makes an offer to buy."], "management board member": ["Member of the board of directors of a corporate entity."], "bullion": ["A bulk quantity of gold or silver, assessed by weight and typically cast as ingots."], "amplifier": ["Device which amplifies the intensity of an electrical signal in order to allow for tansmission and reception."], "animation": ["Film technology for which drawings and objects are recorded in such a way that it seems they move."], "preview": ["Presentaton of a film, theatre play etc. that is being performed for a special group of spectators and which takes place before the official performance."], "application software": ["Software that has the scope to solve a specific problem."], "applications software": ["Software that has the scope to solve a specific problem."], "situation puzzle": ["A pastime, in the form of a statement or question or phrase having a double or veiled meaning, put forth as a puzzle to be solved."], "enigma": ["A pastime, in the form of a statement or question or phrase having a double or veiled meaning, put forth as a puzzle to be solved.", "Any problem where the answer is very complex, possibly unsolvable without deep investigation."], "Nepal Bhasa": ["One of the major languages of Nepal"], "bottle-green": ["Of a deep green colour."], "fraud": ["An act of deception carried out for the purpose of unfair, undeserved, and/or unlawful gain.", "A person who acts dishonestly."], "insinuate": ["To subtly suggest something unpleasant."], "illiterate": ["A person who cannot read and write."], "asylum": ["A shelter from danger or hardship.", "A place of safety, refuge or protection."], "doorknob": ["A device attached to a door, the rotation of which permits the unlatching of a door."], "latch": ["A fastening for a door that has a bar that fits into a notch or slot, and is lifted by a lever or string from either side."], "audience": ["A group of people present at a performance.", "A formal interview with a sovereign, high officer of government, or other high-ranking person."], "anniversary": ["The date on which an event occurred in some previous year."], "apparel": ["Clothes considered as a group."], "annually": ["Once a year."], "eel": ["A snaky edible fish, which lives in freshwater and in the sea."], "eelpout": ["A predatory fish (Zoarces viviparus) whose young, which look like young eels, are born alive."], "abacus": ["A Greek and Latin board for calculating or playing.", "The cover plate of a column as an aid in supporting the architrave."], "figure": ["The visual representation of a person or an object.", "A drawing or diagram conveying information."], "illustration": ["The visual representation of a person or an object.", "An item of information that is representative of a type or class."], "portraiture": ["The visual representation of a person or an object."], "avenue": ["A broad, well-paved and landscaped thoroughfare."], "proponent": ["One who supports something."], "alley": ["A narrow street, especially one through the middle of a block giving access to the rear of lots or buildings."], "or": ["If that is not the case.", "[Conjunction that indicates an alternative.]"], "upstream": ["In the opposite direction of the flow of a river or stream.", "Toward or near the source of a river."], "downstream": ["In the same direction as the flow of a river or stream.", "Toward or near the mouth of a river."], "ubiquitous": ["Being present everywhere at once."], "omnipresent": ["Being present everywhere at once."], "adequate": ["Enough to meet the requirement."], "admission": ["A statement tending to establish the guilt or liability of the person making the statement."], "assumption": ["The act of taking for granted, or accepting a thing without proof.", "The act of taking possession of or power over something."], "supposition": ["That which one holds to be true; the acceptance of a fact, opinion, or assertion as real or true despite a lack of strong evidence or knowledge.", "The act of taking for granted, or accepting a thing without proof."], "eight-legged": ["Having eight legs."], "two legged": ["Having two legs."], "eight legged": ["Having eight legs."], "one-legged": ["Having only one leg."], "drizzle": ["Fine, light rain.", "To rain steadily in fine drops."], "mizzle": ["Fine, light rain."], "enchanted": ["Being under the influence of a magical spell."], "garlic": ["(Allium sativum) a perennial herbaceous plant of the Alliaceae family, cultivated for its eatable bulb very appreciated in gastronomy."], "voracious": ["Devouring or craving food in great quantities."], "edacious": ["Devouring or craving food in great quantities."], "ravenous": ["Devouring or craving food in great quantities."], "rapacious": ["Devouring or craving food in great quantities."], "instigation": ["Deliberate and intentional triggering of negative actions."], "flounder": ["Any of various flatfish of the family Pleuronectidae or Bothidae.", "To act clumsily or confused; to struggle or be flustered."], "musical instrument": ["A device constructed or modified with the purpose of making music."], "separatist": ["An advocate of secession or separation from a larger group."], "insurgency": ["Collective violent action against an established power or arbitrary authority."], "request": ["The expression of a need or desire.", "A formal message requesting something that is submitted to an authority."], "catchment basin": ["An area of land where all rainwater and melting snow naturally moves to the same body of water."], "approbation": ["Approbation; a sanctioning of an item.", "the act of expressing approval or admiration; commendation; laudation."], "provision": ["Something that is stated as a condition for an agreement."], "ambitious": ["Striving for power, honour, office, superiority, or distinction."], "appearance": ["An expression or appearance indicating a certain state of mind.", "The outward or visible aspect of a person or thing.", "A thing seen; a phenomenon.", "The act of appearing or coming into sight.", "The formal attendance (in court or at a hearing) of a party in an action.", "The act of appearing in public view.", "The pretending that something is the case in order to make a good impression."], "assembly": ["Meeting of people of an organised group of a company or an association etc. in order to take decisions.", "A set of pieces that work together in unison as a mechanism or device."], "trousseau": ["An amount paid by the parents of a bride to the groom and or his family."], "obvious": ["Clear or manifest to the understanding."], "apparent": ["Clear or manifest to the understanding.", "Appearing as such but not necessarily so.", "Capable of being seen, or easily seen; open to view; visible to the eye; within sight or view."], "evident": ["Clear or manifest to the understanding."], "ally": ["An associate who provides assistance.", "One united to another by treaty or league."], "teacup": ["A cup in which tea is served."], "approximation": ["An inexact representation of something that is still close enough to be useful."], "assistant": ["A person or persons who provide assistance with some task.", "Someone who is subordinate to another who assists the latter."], "adjunct": ["Someone who is subordinate to another who assists the latter."], "appreciation": ["The understanding of the nature or meaning or quality or magnitude of something.", "The understanding of the nature or meaning or quality or magnitude of something."], "lay-out": ["Organisation of the elements which are part of the whole."], "after-sales service": ["Service being offered to customers by resellers or producers of consumergoods when the same are broken or do not work properly."], "satisfy": ["To give pleasure to; to make happy or satisfied.", "To do what is asked for, requested; to meet the requirements or expectations of."], "range of products": ["Various things or products that are present in a shop or that shall be sold."], "memory": ["The ability of an organism to record information combined with the facility of recall.", "Computer components, devices and recording media that retain data for some interval of time."], "assortment": ["Various things or products that are present in a shop or that shall be sold."], "asynchronous": ["Occurring at different times."], "property": ["Something that is owned.", "An abstract quality associated with an object."], "asset": ["Something that is owned.", "A useful or valuable quality that helps a person succeed."], "ammunition": ["Projectiles to be fired from a weapon."], "chest of drawers": ["A piece of furniture with several horizontal drawers stacke one above each other."], "dresser": ["A piece of furniture with several horizontal drawers stacke one above each other."], "bureau": ["A piece of furniture with several horizontal drawers stacke one above each other."], "anagram": ["A word which results of the transposition or displacemente of letters in another word."], "array": ["A sequence of homogeneous elements of a specific data type."], "anticipation": ["Consideration of something beforehand."], "absolutely": ["Without question."], "abroad": ["Beyond the borders of a country."], "watchful": ["Carefully observant and or attentive."], "vigilant": ["Carefully observant and or attentive."], "convenor": ["The person that not only chairs a meeting but also organises it and calls people to the meeting."], "snow-free": ["Without snow."], "snowfree": ["Without snow."], "snowfall": ["Precipitation in form of snow."], "concert": ["An act where somebody performs music, theater or a similar art in a live show or concert."], "contraceptive": ["Means, practice or agent that prevents women to get pregnant.", "Preventing conception and pregnancy."], "attest": ["To admit the knowledge of something.", "To make something obvious or confirm it.", "To declare or affirm solemnly and formally as true."], "assets": ["The group of positive components of the economical ownership of a company."], "company agreement": ["Act which determines the legal relationships within a company."], "deed": ["Something done voluntarily by a person, and of such a nature that certain legal consequences attach to it.", "A document that is created by a notary or another authorised institution."], "experience": ["Knowledge and abilities gained by doing something for a certain time; the process of gaining it.", "Something that has happened to you, influencing your thoughts and behaviour; a special event in your life.", "To go or live through; to be affected by a certain situation, to have something happen to oneself.", "To have a distinct physical emotion, feeling or sensation.", "To go through (mental or physical states or experiences)."], "assault": ["To apply violent force to someone or something.", "To force sexual intercourse or other sexual activity upon another person, without their consent.", "The act of forcing sexual intercourse or other sexual activity upon another person against their will.", "Close fighting during the culmination of a military attack.", "To attack someone physically or emotionally."], "approximately": ["[Said for a quantity (time, size, place, ...) that is given] in a imprecise way but close to the real value."], "roughly": ["[Said for a quantity (time, size, place, ...) that is given] in a imprecise way but close to the real value."], "appropriate": ["Having sufficient or the required properties for a certain purpose or task; appropriate to the occasion.", "To take possession of by force.", "To assign a resource to a particular person or cause."], "bliss": ["A state of great joy or happiness."], "activation": ["When all or a portion of a plan is put into motion.", "The act of making active and effective."], "excruciating": ["Extremely painful."], "agonizing": ["Extremely painful."], "advantage": ["The quality of having a superior position or the chance for success greater than for others.", "(tennis) first point scored after deuce.", "Benefit resulting from some event or action."], "inverse": ["Reversed in order or nature or effect."], "handkerchief": ["A piece of cloth, usually square and often fine and elegant, carried for wiping the face, nose or hands."], "antiseptic": ["Method for treating or preventing infectious diseases using antiseptic methods such as sterilization."], "towel": ["Piece of absorbent fabric or paper used for drying or wiping."], "alternative": ["A choice between two or more possibilities.", "Serving or used in place of another.", "Necessitating a choice between mutually exclusive possibilities.", "Pertaining to unconventional choices, e.g. life style."], "activist": ["Someone who as a citizen is politically active."], "anybody": ["Any one out of an indefinite number of persons."], "acute": ["Requiring immediate attention.", "In geometry, of an angle, less than 90 degrees.", "Revealing insight and intelligence.", "(Of disease) Characterized by sudden onset of symptoms and short duration."], "urgent": ["Requiring immediate attention.", "Needing immediate action."], "usability": ["The ease with which people can employ a particular tool in order to achieve its particular goal."], "creativity": ["The ability of a person to create or invent something."], "implementation": ["Putting in execution (for instance, the execution of a reform, a plan).", "The act of the realisation of a plan or a program."], "start-up": ["The act of setting something in operation."], "health insurance plan": ["Institution that is subdivided in districts provides medial assistance."], "access": ["A way or means of approaching or entering.", "To reach or gain access to."], "passage": ["A way or means of approaching or entering.", "A way through or along which someone or something may pass."], "accommodate": ["To change to reach a certain scope or condition.", "To have room for; to hold without crowding.", "To be agreeable or acceptable to."], "suit": ["(Of an object) To be of the right size and shape so as to match another object.", "To change to reach a certain scope or condition.", "A comprehensive term for any proceeding in a court of law whereby an individual seeks a legal remedy.", "One of several classes of a pack of cards distinguished by color and/or specific emblems", "A set of men's clothes consisting of trousers and a jacket, traditionally worn with a shirt and a tie.", "To be agreeable or acceptable to."], "bandage": ["Any therapeutic material that is used to cover an injury."], "cover letter": ["Letter in which one expresses his/her interest for a specific job offer."], "accountant": ["A person who maintains the financial records of other people."], "evasive": ["Inclined or seeking to evade."], "modification": ["The process of becoming different.", "The act of making something different.", "The result of modifying."], "alteration": ["The act of contaminating.", "The process of becoming different.", "The act of making something different."], "accessory": ["An associate in the commission of a crime.", "Clothing that is worn or carried, but not part of your main clothing.", "That which belongs to something else deemed the principal; something additional and subordinate, an attachment."], "approve": ["To regard as good."], "testbed": ["Situation that refers to a relevant or decisive fact to check the accomplishments or the results of a certain situation."], "ban on": ["Request to stop doing something or to avoid something."], "U.S. dollar": ["Currency of the United States of America."], "action": ["Legal act\u0131on that has as a goal to have a judge take a decision.", "To satisfy, carry out, bring to completion (an obligation, a requirement, etc.).", "Something done so as to accomplish a purpose."], "loot": ["Profits from burglary, looting and raids.", "To take the goods of."], "sample": ["(In statistics) A part of a sum of chosen elements that allow for the representation of a phenomenon in order to study the same.", "A small quantity of a product, typically provided to test that product before obtaining a greater quantity of it.", "To take a sample of something for analysis."], "chancellery": ["Place of the public office of a juridical authority."], "arrangement": ["Music that has been adapted for performance with a different ensemble or musical style.", "The manner in which things or persons have been organized; the result of arranging.", "The manner in which objects or persons have been organized or arranged; the result of arranging."], "well-being": ["Feeling well with a high standard of living."], "apparently": ["From appearances alone."], "seemingly": ["From appearances alone."], "ostensibly": ["From appearances alone."], "agenda": ["A book or a program in which one fixes the planning of time.", "A sequence of items of business to be covered at a meeting."], "assistance": ["The contribution to the fulfilment of a need or the furthering of an effort or purpose."], "accelerator": ["A substance which speeds up chemical reactions.", "The mechanism by which an engine's power is increased or decreased.", "A device that uses electric fields to propel electrically charged particles to high speeds.", "Pedal which increases the speed of a vehicle when pushed."], "Martinique": ["Island of the Antilles in the Caribbean Sea"], "aggressive": ["Characteristic of an enemy or one eager to fight."], "backbone": ["The body part that consists of a row of vertebrae, that support the head and torso and that forms a canal for nerves."], "breathless": ["Without breath, having difficulty breathing."], "gasping": ["Without breath, having difficulty breathing."], "panting": ["Without breath, having difficulty breathing."], "stinger": ["In insects, a pointed instrument used for defense and attack and connected with a poison gland."], "sting": ["In insects, a pointed instrument used for defense and attack and connected with a poison gland.", "To hurt, usually by introducing poison or a sharp point, or both."], "vertebral column": ["The body part that consists of a row of vertebrae, that support the head and torso and that forms a canal for nerves."], "travel agency": ["Business that sells travel related products and services to end-user customers."], "turquoise": ["Having a colour between blue and green, similar to the mineral turquoise.", "A colour between blue and green, similar to the mineral turquoise.", "A mineral chiefly consisting of copper and aluminium with a colour varying between blue and bluegreen."], "addiction": ["A compulsive or chronic need.", "A dependence on a habit-forming substance such as a drug or alcohol."], "bargain": ["Anything bought cheap.", "To negotiate the terms of an exchange."], "dicker": ["To negotiate the terms of an exchange."], "banker": ["Someone who owns or is an executive in a bank."], "bankruptcy": ["A legally declared inability of an individual or organisation to pay their creditors."], "blend": ["A mixture of two or more things.", "To mix together different things.", "To mix together different elements.", "The creation of a new piece of music by combining several pre-existing sources."], "breakthrough": ["A productive insight.", "The penetration of a barrier."], "discovery": ["A productive insight."], "calendar": ["A tabular array of the days, usually for a year."], "pullover": ["A thick, warm piece of clothing with long sleeves which is put on over the head."], "suicide attack": ["An attack committed by a person who knows it will cause his or her own death."], "suicide": ["The act of a person killing himself intentionally.", "To end one's own life purposefully.", "Person who intentionally takes his or her own life.", "A woman who intentionally takes her own life.", "A female who intentionally takes her own life.", "A male who intentionally takes his own life."], "candidate": ["Someone who is considered for something like a price or a position."], "campaign": ["A series of operations undertaken to achieve a set goal.", "A series of military actions by a regular army.", "A series of actions advancing a principle or tending toward a particular end."], "characteristic": ["A distinguishing quality.", "Typical or distinctive."], "Cairo": ["The capital of Egypt."], "cash": ["Money in the form of bills and coins.", "To receive an amount due."], "incorrigible": ["Impossible to correct or set right."], "stub": ["An article in Wikipedia that is too short but has merit. It is a mark indicating a need for more work."], "death wish": ["A strong desire to die."], "dreamlike": ["Resembling a dream."], "oneiric": ["Resembling a dream."], "customer": ["Someone who pays for goods or services."], "client": ["Someone who pays for goods or services.", "An application or system that accesses a remote service on another computer system, known as a server, by way of a network."], "patron": ["Someone who pays for goods or services."], "comic": ["A magazine or book containing the sequential art form of a graphic novel.", "A professional performer who tells jokes and or performs comical acts."], "comedian": ["A professional performer who tells jokes and or performs comical acts."], "chairman": ["The presiding officer of a meeting, organization, committee, or other deliberative body."], "cholesterol": ["A lipid from the sterol family both made by the body and consumed in food products that come from animals."], "clinic": ["A place where people who are ill or injured are treated and taken care of by doctors and nurses."], "chassis": ["The base frame of a motor vehicle."], "evasively": ["In a evasive way."], "foreign minister": ["A government minister who helps form the foreign policy of a sovereign state."], "centerline": ["Imaginary line in a boat dividing the boat into two equal parts."], "character": ["A symbol used to represent a sound or a word.", "The inherent complex of attributes that determine a persons moral and ethical actions and reactions."], "associate": ["To join or unite, as one thing to another, or as several particulars, so as to increase the number, augment the quantity, enlarge the magnitude, or so as to form into one aggregate; to sum up; to put together mentally, as, to add numbers; to add up a column.", "A person who joins with others in some activity.", "To connect or to establish a relation."], "botch": ["To cause something to have an unsatisfying, irritating or unusable result."], "adequately": ["In a manner that is equal to some requirement."], "sufficiently": ["In a manner that is equal to some requirement."], "satisfactorily": ["In a manner that is equal to some requirement."], "admit": ["To concede as true.", "To allow to enter; to grant entrance.", "To admit to be true.", "To have room for; to hold without crowding.", "To allow participation in or the right to be part of; permit to exercise the rights, functions, and responsibilities of.", "To afford possibility.", "To admit into a group or community."], "achievement": ["An action that requires great skills to be performed successfully.", "Getting a result by exertion."], "desirous": ["Having or expressing desire for something."], "acceptance": ["The mental attitude that something is believable and should be accepted as true."], "credence": ["The mental attitude that something is believable and should be accepted as true."], "workshop": ["Ample industrial building with only one floor being used for the storage of materials and goods, the parking of vehicles or as place where industrial and artisan work is performed.", "A room or building in which work, especially mechanical work, is carried on."], "academy": ["An institution of higher education and of research, which grants academic degrees.", "A society of learned men united for the advancement of the arts and sciences.", "A school or place of training in which some special art is taught."], "real capital": ["Capital that consists of equipment and machines that are used to produce goods."], "eager": ["Full of yearning.", "Characterized by intense emotion.", "Having or showing keen interest, intense desire, or impatient expectancy.", "A wave caused by an incoming tide traveling up an estuary."], "distinctive feature": ["A defining characteristic."], "kamikaze": ["Japanese aircraft pilot who committed suicide by crashing his aircraft on enemy targets during the Second World War."], "focus": ["A special point used to define a conic section.", "To cause (rays of light, etc.) to converge at a single point.", "To concentrate one\u2019s attention.", "To put (an image) into focus."], "transfer": ["The act of transferring ownership.", "To move persons from one place to another.", "To move (objects or information) from one place to another."], "system": ["The whole of the structures and relations that allow for the passage of goods from the seller to the customer and of the money from the customer to the seller.", "A collection of organized things", "A whole composed of relationships among the members.", "An orderly combination of related parts."], "subject to civil law": ["What is subject to civil law."], "clientele": ["The group of all customers of a shop, a public local, an office etc."], "civil code": ["Organic and systematic collection of laws and codes that rule publicly the civil relationships."], "bonnet": ["The second chamber in the alimentary canal of a ruminant animal"], "involve": ["To cause an active participation."], "appreciate": ["To be grateful or thankful for.", "To view as valuable.", "to raise in value."], "stump": ["The short piece left over after cutting off the most part.", "A small remaining portion of the trunk of a tree with the roots still in the ground."], "diagnosis": ["The result of identifying the nature and cause of something."], "abhor": ["To shrink back with shuddering from something.", "To detest on a high degree; to hate completely."], "loathe": ["To shrink back with shuddering from something.", "To detest on a high degree; to hate completely."], "detest": ["To dislike intensely; to feel strong hostility towards.", "To shrink back with shuddering from something."], "repartee": ["A swift, witty retort."], "diagram": ["A plan, drawing, sketch or outline to show how something works, or show the relationships between the parts of a whole."], "designer": ["Someone who creates plans to be used in making something."], "supervisory board": ["Controlling body of corporations that controlls the administration for the associates."], "demonstration": ["Showing and explaining something.", "A public exhibition of the attitude of a group of persons toward a controversial issue."], "deposit": ["A place where something is deposited, as for storage, safekeeping, or preservation.", "Money placed in an account.", "To put into a bank account.", "Payment or depositing of a sum of money.", "Matter deposited by some natural process.", "A natural concentration of rocks, minerals or paleontological remains."], "cost component": ["Each of the elements that is part of the cost."], "components industry": ["Industry that produces the components of complex systems, that is for industries that produce the finished product."], "democratic": ["Constructed upon the principle of government by the people."], "diplomat": ["A person, such as an ambassador, who represents a government in its relations with other governments."], "invention": ["The act of creating something new, especially as a technical device."], "whip": ["A long piece of leather or rope attached to a handle, which is used to slash at animals to make them move, or to punish people.", "A political party official, whose responsibility it is to make sure that party members attend important parliamentary debates and cast their vote.", "A sweet dish made from cream, eggs, sugar and fruit mixed together.", "To hit a person or an animal with a whip or rod.", "To move quickly and suddenly or violently in a particular direction.", "To remove or pull something quickly and suddenly.", "To stir cream or egg white very quickly until it becomes stiff.", "To defeat thoroughly."], "flog": ["To punish somebody by hitting them repeatedly with a whip or stick."], "Deputy": ["A member of the D\u00e1il \u00c9ireann, or the title of a member of D\u00e1il \u00c9ireann."], "deputy": ["Someone appointed as the substitute of another, and empowered to act for him, in his name or on his behalf.", "A person appointed to represent or act on behalf of others."], "whistle": ["A small metal or plastic tube that produces a high and loud sound when blown. It is used as a signal or to attract attention.", "The sound made by the blowing of a whistle.", "The sound made by forcing air out between closed lips.", "The high loud sound made by air or steam when forced through a small aperture.", "To make a sound or a melody by forcing the breath out between closed lips.", "To produce a high sound by blowing through a whistle.", "To make a high (whistling) sound (a bird, a kettle, the wind etc.)."], "ebb": ["The tide at the point of maximum ebb."], "low tide": ["The tide at the point of maximum ebb."], "high tide": ["The level of water when the tide is at its highest level.", "The time when the tide is highest."], "overdose": ["The deliberate or accidental ingestion of an excessive dose of a pharmaceutically active substance.", "To take an excessive dose of a substance."], "incessant": ["Without interruption.", "Without break, cessation or interruption."], "for days": ["Lasting several days."], "for weeks": ["Lasting several weeks."], "for hours": ["Lasting several hours."], "for minutes": ["Lasting several minutes."], "for seconds": ["Lasting several seconds."], "for months": ["Lasting several months."], "for years": ["Lasting several years."], "for decades": ["Lasting several decades."], "for centuries": ["Lasting several centuries."], "for millennia": ["Lasting several millennia."], "yawn": ["To open the mouth widely and take a long, deep breath because of tiredness or boredom."], "gourmet": ["A person who enjoys choosing, eating and drinking high quality food and wines and who knows a lot about them."], "gastronome": ["A person who enjoys choosing, eating and drinking high quality food and wines and who knows a lot about them."], "epicure": ["A person who enjoys choosing, eating and drinking high quality food and wines and who knows a lot about them."], "epicurean": ["A person who enjoys choosing, eating and drinking high quality food and wines and who knows a lot about them."], "connoisseur": ["A person who enjoys choosing, eating and drinking high quality food and wines and who knows a lot about them.", "A person with superior, usually specialized knowledge or highly refined taste."], "foodie": ["A person who enjoys choosing, eating and drinking high quality food and wines and who knows a lot about them."], "oenophile": ["A person who enjoys choosing and drinking high quality wine and who knows a lot about it."], "wine connoisseur": ["A person who enjoys choosing and drinking high quality wine and who knows a lot about it."], "gourmet of wine": ["A person who enjoys choosing and drinking high quality wine and who knows a lot about it."], "oenophilist": ["A person who enjoys choosing and drinking high quality wine and who knows a lot about it."], "jewel": ["A precious stone such as a diamond, a sapphire or an agate.", "Pieces of jewellery or ornaments that contain precious stones.", "A small precious stone or piece of colored glass used in the machinery of a watch.", "A very important or valuable thing or person."], "treasure": ["A very important or valuable thing or person."], "gem": ["A valuable stone that has been cut and polished and is used in jewellery."], "gemstone": ["A valuable stone that has been cut and polished and is used in jewellery."], "necessary": ["Needed for a purpose or a reason.", "That cannot be avoided."], "essential": ["Needed for a purpose or a reason.", "Of basic importance."], "obligatory": ["Needed for a purpose or a reason."], "inevitable": ["That cannot be avoided."], "required": ["Needed for a purpose or a reason."], "unavoidable": ["That cannot be avoided."], "compulsory": ["Needed for a purpose or a reason."], "inescapable": ["That cannot be avoided."], "mandatory": ["Needed for a purpose or a reason."], "inexorable": ["That cannot be avoided."], "indispensable": ["Needed for a purpose or a reason."], "predetermined": ["That cannot be avoided."], "ineluctable": ["That cannot be avoided."], "vital": ["Needed for a purpose or a reason.", "Extremely important."], "conscious": ["Noticing something; aware of something.", "Able to use one's senses and mental abilities to perceive one's surroundings and understand the current situation.", "(doing or feeling something) in a deliberate or controlled way.", "Being particularly interested in something; caring about something a lot."], "aware": ["Able to use one's senses and mental abilities to perceive one's surroundings and understand the current situation."], "conscious of": ["Noticing something; aware of something."], "aware of": ["Noticing something; aware of something."], "alert to": ["Noticing something; aware of something."], "deliberate": ["(doing or feeling something) in a deliberate or controlled way."], "intentional": ["(doing or feeling something) in a deliberate or controlled way."], "intended": ["(doing or feeling something) in a deliberate or controlled way."], "calculated": ["Arrived at or determined by mathematical calculation.", "Carefully thought out or planned."], "volitional": ["(doing or feeling something) in a deliberate or controlled way."], "wilful": ["(doing or feeling something) in a deliberate or controlled way."], "on purpose": ["(doing or feeling something) in a deliberate or controlled way.", "With intention; in an intentional manner."], "terrain": ["Land or an area of a particular type.", "A tract of land of undefined size."], "determination": ["The quality of insisting to do or achieve something.", "The act of intending to do something."], "distinct": ["Very clear."], "demonstrate": ["To display the method of using an object.", "To give a proof that something is true.", "To prove and cause to be accepted as true.", "To take part in a public demonstration."], "prove": ["To give a proof that something is true."], "discount": ["A reduction of the selling price of something or of the total cost of an invoice.", "The act of abating or the state of being abated."], "moniker": ["An informal, often humorous name; a name that is either connected to the real name, the personality, the appearance or an anecdote."], "nickname": ["An informal, often humorous name; a name that is either connected to the real name, the personality, the appearance or an anecdote.", "To give a nickname to (a person or thing)."], "sobriquet": ["A descriptive term accompanying or occurring in place of a name.", "An informal, often humorous name; a name that is either connected to the real name, the personality, the appearance or an anecdote."], "byname": ["An informal, often humorous name; a name that is either connected to the real name, the personality, the appearance or an anecdote."], "epithet": ["An informal, often humorous name; a name that is either connected to the real name, the personality, the appearance or an anecdote.", "A descriptive term accompanying or occurring in place of a name."], "cognomen": ["An informal, often humorous name; a name that is either connected to the real name, the personality, the appearance or an anecdote."], "appellation": ["An informal, often humorous name; a name that is either connected to the real name, the personality, the appearance or an anecdote."], "crush": ["To press or squeeze something so hard that it causes damage or deforms the object; to press or squeeze someone so hard that it injures him or her.", "To push or press something into a small confined space.", "To break something into small pieces by pressing it flat, or grinding it to powder.", "To defeat an opponent overwhelmingly, using great force or violence.", "To destroy somebody's confidence or happiness; to humiliate.", "A crowd of people pressed close together in a small space.", "A strong feeling of love, often for just a short time, usually by an adolescent.", "A drink made from fruit juice.", "To end in success a struggle or contest.", "To tighten (something) so strongly that it loses the form and the original consistency"], "grind": ["To break something into small pieces by pressing it flat, or grinding it to powder.", "Hard monotonous routine work.", "An insignificant student who is ridiculed as being affected or boringly studious.", "To shape or form by grinding."], "quell": ["To defeat an opponent overwhelmingly, using great force or violence."], "mortify": ["To destroy somebody's confidence or happiness; to humiliate."], "infatuation": ["A strong feeling of love, often for just a short time, usually by an adolescent."], "squash": ["A squash fruit of the Cucurbita genus, most commonly orange in colour when ripe and traditionally used during Halloween.", "To press or squeeze something so hard that it causes damage or deforms the object; to press or squeeze someone so hard that it injures him or her.", "A drink made from fruit juice.", "A game played in a walled court with soft rubber balls and bats like tennis rackets.", "A concentrated beverage produced by boiling fruit juice with sugar for the purpose of prolonging the time it may be used, possibly with addition of preservatives. It is diluted with water prior to consumption."], "pulverize": ["To break something into small pieces by pressing it flat, or grinding it to powder."], "stamp out": ["To defeat an opponent overwhelmingly, using great force or violence."], "humiliate": ["To destroy somebody's confidence or happiness; to humiliate."], "throng": ["A crowd of people pressed close together in a small space.", "A large group of people.", "To press tightly together or cram."], "puppy love": ["A strong feeling of love, often for just a short time, usually by an adolescent."], "mash": ["To press or squeeze something so hard that it causes damage or deforms the object; to press or squeeze someone so hard that it injures him or her."], "crumble": ["To break something into small pieces by pressing it flat, or grinding it to powder.", "To reduce in small fragments."], "overpower": ["To defeat an opponent overwhelmingly, using great force or violence."], "demoralize": ["To destroy somebody's confidence or happiness; to humiliate."], "composition": ["The way in which a certain structure, organism etc. is built.", "The proportion of different parts to make a whole."], "configuration": ["The way in which a certain structure, organism etc. is built."], "conception": ["The whole of ideas and theories referring to a theme.", "The act of becoming pregnant (a female)."], "attainment": ["The capacity to do something well. They are usually acquired or learned, as opposed to abilities, which are often thought of as innate.", "Reach what was supposed to be reached."], "enable": ["To make something possible or allow for something."], "administrative board": ["Council which is in charge with the administration and management of a company (the term is in particular referred to corporations)."], "administrative council": ["Council which is in charge with the administration and management of a company (the term is in particular referred to corporations)."], "cost containment": ["In economical context, the limiation and reduction of costs."], "orthography": ["The study of correct spelling according to established usage."], "daily newspaper": ["A daily or twice daily published publication (usually printed on cheap, low-quality paper) that contains news and other articles."], "regular hexahedron": ["A three-dimensional polyhedron, bounded by six square sides of equal size; one of the five Platonic solids"], "hexahedron": ["A three-dimensional polyhedron, bounded by six square sides of equal size; one of the five Platonic solids"], "liquidated damages": ["A payment to which the contractual partner is entitled if the contractor does not or not adequately fulfill his contractual obligations."], "contractual penalty": ["A payment to which the contractual partner is entitled if the contractor does not or not adequately fulfill his contractual obligations."], "contract penalty": ["A payment to which the contractual partner is entitled if the contractor does not or not adequately fulfill his contractual obligations."], "devaluation": ["The deliberate lowering of a currency's value compared to another currency or a standard value."], "defendant": ["Any party who is required to answer the complaint of a plaintiff in a civil lawsuit before a court."], "accused": ["Any party who is required to answer the complaint of a plaintiff in a civil lawsuit before a court."], "directory": ["An alphabetical list of names and addresses.", "A structured listing of the names and characteristics of the files on a storage device."], "diluted": ["Reduced in strength or concentration or quality or purity."], "declaration": ["An emphatic and explicit announcement."], "tunic": ["Old Roman undergarment."], "statement": ["An emphatic and explicit announcement.", "What is being told in a clear and orderly manner."], "describe": ["To give an account or representation in words.", "To give a description of.", "To identify as in botany or biology, for example."], "data": ["Information expressed in bits and bytes or numbers; the raw material of information."], "bereave": ["To take away someone or something important or close."], "define": ["To give a definition for the meaning of a word."], "devastating": ["Being severely destructive.", "Brought to ruin or reduced to complete disorder."], "default": ["A value that is used when no value is specified.", "To fail to meet an obligation.", "Missing fulfillment of a certain obligation or a obligation by law or a contract.", "Failure of a debtor to meet his financial obligations.", "To fail to meet financial obligations; to fail to pay up."], "deficit": ["An excess of liabilities over assets.", "A shortage or absence of what is needed."], "depreciation": ["The falling of value, the reduction of worth."], "destination": ["The place set for the end of a journey, or to which something is sent.", "Defined usage or destination for something."], "desperate": ["Without hope or expectation.", "Fraught with extreme danger; nearly hopeless."], "full employment": ["A situation in which all people who are willing to work have a paid employment."], "lottery ticket": ["A purchasable slip of paper with a combination of numbers for which a winner is determined."], "deployment": ["The distribution of military forces prior to battle."], "deterioration": ["The process of changing to an inferior state."], "arrival": ["Act of reaching a certain place."], "Zacheus": ["A superintendent of customs; a chief tax-gatherer (publicanus) at Jericho (Luke 19:1-10)."], "extraordinary assembly": ["Assembly which can be called for at any time in order to decide about exceptional and very important points."], "extraordinary plenary meeting": ["Assembly that can be called any time to decide about very important and exceptional points, all members of a certain group are invited."], "breakable": ["Easy to break."], "fragile": ["Easy to break."], "alternate": ["Going back and forth between two states or conditions.", "Every second one of a series.", "Being or succeeding by turns."], "psychic": ["Of or pertaining to the soul."], "mental": ["Of or pertaining to the soul.", "Related to the mental or spiritual condition as opposed to the bodily or exterior phenomena."], "affable": ["Receiving others kindly and conversing with them in a free and friendly manner.", "Diffusing warmth and friendliness."], "courteous": ["Good mannered.", "Receiving others kindly and conversing with them in a free and friendly manner."], "amendment": ["An alteration made or proposed to be made in a bill or motion that adds, changes, substitutes, or omits."], "adverse": ["Contrary to one's interests or welfare."], "unfavourable": ["Contrary to one's interests or welfare."], "bylaws": ["Act which determines the legal relationships within a company."], "articles of association": ["Act which determines the legal relationships within a company."], "articles of incorporation": ["Act which determines the legal relationships within a company."], "articles of partnership": ["Act which determines the legal relationships within a company."], "contract of association": ["Act which determines the legal relationships within a company."], "memorandum of association": ["Act which determines the legal relationships within a company."], "allegation": ["A statement of a fact in a pleading, that will be attempted to be proven.", "A public statement, accusing someone of wrongdoing or illegal activities, without giving proof."], "medical insurance plan": ["Institution that is subdivided in districts provides medial assistance."], "contradiction": ["State that represents opposed aspects."], "testimony": ["An account of a first-hand experience.", "Statements made by a witness in court."], "tolerance": ["The ability to allow for the beliefs or practices of others.", "The variation or deviation from a standard, especially the maximum permitted variation."], "owner": ["One who owns.", "The owner of a company."], "construction": ["The process of constructing.", "Anything that has been constructed.", "OpenStreetMap tag for roads under construction, use with *=construction."], "stressed": ["Suffering from stress."], "terminal": ["A building in an airport where passengers transfer from ground transportation to the facilities that allow them to board aeroplanes.", "A device for entering data into a computer or a communications system and/or displaying data received; especially a device equipped with a keyboard and some sort of textual display.", "A computer program that emulates a terminal.", "A contact on an electrical device (such as a battery) at which electric current enters or leaves."], "unconstitutional": ["Violating the consitution."], "television advertisement": ["Short film used to advertise products, services, businesses or organisations on television."], "commercial": ["Short film used to advertise products, services, businesses or organisations on television.", "Of or pertaining to commerce."], "nullify": ["To declare invalid."], "annular": ["Pertaining to, or having the form of, a ring."], "elf": ["A mythical creature of Germanic mythology. In Norse mythology they were originally minor gods of nature and fertility. They are often pictured as youthful-seeming men and women of great beauty living in forests and other natural places, underground, or in wells and springs. They have been portrayed to be long-lived or immortal and they have magical powers attributed to them.", "One of the archetypal races of modern fantasy literature, most notably the \"Lord of the Rings\" cycle by J.R.R. Tolkien. Usually, they are conceived as beings similar in appearance to humans with pointy ears. Compared to humans, they are depicted as fairer and wiser, with greater spiritual powers, keener senses, and a closer empathy with nature.", "A playable race in the fantasy roleplaying game Dungeons and Dragons and similar games. They have a slighter build than humans and pointy ears, and are generally more agile. They have a reputation as good wizards and archers."], "contribute": ["To apply a quality on (a person).", "To take part in something, to take part in the achievment of something."], "convoke": ["Call a group of people that are part of a company organ to meet."], "roofing": ["Structure or material that covers an edifice."], "market coverage": ["Reaching of a certain geographical area with the own product or service."], "half-elf": ["A playable race in the fantasy roleplaying game Dungeons and Dragons and similar games. With both human and elven ancestry, they share some features of both races."], "magic spell": ["A words or formula supposed to have magical powers."], "short film": ["Film that does not last long, normally it takes not more than 15 minutes to finish."], "growth": ["Economical development that appears in case of higher occupation rates, capital, consume and production.", "The process by which an organism or any of its parts increases in size."], "lightning conductor": ["A metallic device that is attached to a high point and leads to the ground; protects the building from destruction by lightning."], "on the part of": ["As regards, what refers to."], "expiration": ["Point in time that is determined for the completion of an activity."], "deliberation": ["Decision of a committee."], "deduct": ["To take one thing from another.", "To deduct, to take off."], "referred to as": ["To be called in a certain way."], "declare": ["To make something officially known or to confirm something.", "To inform an authority about something that is subject to taxation such as incomes, goods one is importing, etc."], "assume": ["To interpret something in a certain way; convey a particular meaning or impression.", "To accept without verification or proof.", "Seize and take control without authority and possibly with force.", "To regard as a possible hypothesis.", "To take on as one's own the expenses or debts of another person.", "To take on titles, offices, duties, responsibilities.", "To take on a certain form, attribute, or aspect."], "loudspeaker": ["Device which transforms electrical signals into acoustical signals."], "autonomy": ["A situation of self government."], "accumulation": ["The collection or bringing together of things."], "Afghan": ["A person from Afghanistan or of Afghan descent.", "A woman of Afghan nationality or descent.", "Of, from, or pertaining to Afghanistan or Afghans.", "A citizen of the state Afghanistan"], "temporarily": ["For a relatively brief period of time."], "tournament": ["A series of games played competitively to determine a single winning team or individual."], "template": ["A model or pattern used for making multiple copies."], "throughput": ["The rate at which something can be processed."], "detonate": ["To expand suddenly with great force, a loud noise and release energy because of strong inner pressure due to a violent chemical or physical reaction."], "blow up": ["To expand suddenly with great force, a loud noise and release energy because of strong inner pressure due to a violent chemical or physical reaction."], "displode": ["To expand suddenly with great force, a loud noise and release energy because of strong inner pressure due to a violent chemical or physical reaction."], "flatterer": ["Making many and often exaggerrated compliments."], "taxpayer": ["A person or organisation who is subject to, liable for, or pays tax."], "traditional": ["Consisting of or derived from a story or a custom passed down from generation to generation."], "treasurer": ["The official entrusted with the funds and revenues of an organization."], "Toronto": ["The provincial capital of Ontario, Canada."], "Ontario": ["A province located in the east-central part of Canada."], "secretary": ["A person working in an office, assisting a higher-level employee, writing letters, taking phone calls, typing, keeping records, arranging the schedule etc.", "An official at a club, society etc., who is in charge of daily affairs such as writing letters, keeping records, and making arrangements.", "A desk used for writing.", "A person to whom a secret is entrusted."], "private secretary": ["A person working in an office, assisting a higher-level employee, writing letters, taking phone calls, typing, keeping records, arranging the schedule etc."], "impetuous": ["Causing blatant and strong emotions."], "discriminatinating": ["The way of treating something or someone differently."], "disengagement": ["The doing away with a responsibility or a liability."], "term": ["A word or phrase, especially one from a specialised area of knowledge.", "A duration of a set length; a period in office of fixed length."], "tourist": ["Someone who travels for pleasure rather than for business."], "teacher": ["A person who passes on knowledge, especially one employed in a school.", "A personified abstraction that teaches."], "technical": ["A pick-up truck with a gun or another relatively small weapons system mounted on it.", "Of or relating to proficiency in a practical skill."], "technique": ["A way of accomplishing a task that is not immediately obvious."], "coordinating conjunction": ["Word or phrase grammatically connecting two parts of same lexical category and same syntactic function."], "dispose of": ["To be in the position to use something or somebody freely."], "falsification": ["The negative alteration or falsification of something."], "terrorism": ["The calculated use of violence, or the threat of violence, against civilians or property to coerce or intimidate governments or societies in order to attain goals that are political or religious or ideological in nature."], "takeover": ["The purchase of one company by another."], "donate": ["To give away something of value to support or contribute towards something."], "taciturn": ["Temperamentally untalkative, silent."], "on impulse": ["In a spontaneous manner, driven by instinct."], "building trade": ["The technique of the production process referring to the planning, construction, modification and the demolition of buildings."], "taciturnly": ["In a taciturn way."], "actual": ["Real and not potential.", "Existing in act or fact.", "Being or existing at the present moment.", "Being or reflecting the essential or genuine character of something.", "Taking place in reality; not pretended or imitated."], "carry out": ["To bring something to fulfilment."], "effectiveness": ["The ability or the capability to produce the desired effect."], "efficiency": ["Ability to function properly."], "household appliance": ["Electric appliance or tool that is being used in the household."], "up-and-coming": ["Of something or somebody that is reaching a degree of popularity."], "institution": ["Stucture that has been organised for a certain scope (that can be for nor not for profit), which the legislation attributes a incorporated status."], "public authority": ["Incorporated institution that has the public interest as its purpose."], "display": ["Way in which the goods in a sales point are presented to the public.", "To have somebody see something.", "To show, make visible or apparent."], "scandal": ["A widely publicized incident involving allegations of wrong-doing, disgrace, or moral outrage."], "be understood as": ["Being understood in a certain way."], "talkative": ["Tending to talk or speak freely and or often.", "Full of trivial conversation.", "Inclined to communicate or impart."], "scalp hair": ["The collection or mass of hair on a person's head except the face."], "self service": ["Purchasing system without seller, in which the customer chooses himself the products in the store and brings them to the checkout."], "self-service": ["Purchasing system without seller, in which the customer chooses himself the products in the store and brings them to the checkout."], "furthermore": ["In addition to what has been said."], "lustrum": ["A period of five years."], "Dushanbe": ["The capital of Tajikistan, Asia."], "mellifluous": ["As sweet as honey."], "Dutch doughnut": ["A deep-fried yeast dough meal that has its roots in the Low Lands of Western Europe. It is traditionally eaten on New Year's Eve."], "Flemish": ["A Western Germanic language spoken mainly in Flanders, the Netherlands and France."], "fixed star": ["Any star, especially when seen as the centre of any single solar system."], "comet": ["A block of ice and dust that orbits the sun. Seen from the earth, it looks like a bright star with a tail."], "humankind": ["All human beings."], "florist": ["Person whose job is to sell flowers.", "A shop that sells flowers."], "flower shop": ["A shop that sells flowers."], "mechanics": ["Branch of physics concerned with the behaviour of physical bodies when subjected to forces or displacements, and the subsequent effect of the bodies on their environment."], "mechanical work": ["The amount of energy transferred by a force."], "semantic": ["Of or relating to the relationship between words and their meanings."], "technical term": ["Special expression from a specific special field."], "B": ["The musical note between A and C."], "extinguish": ["Treat something in such a way that it does not exist anymore.", "To remove or get rid of, as being in some way undesirable.", "To kill in large numbers.", "To make something stop burning.", "To totally stop something which is on fire from burning any more."], "highlight": ["Show something in a particular way."], "carpenter": ["Artisan who works with wood."], "failure": ["A negative result, not having success."], "sales proceeds": ["Se complete amount a company or similar has earned through sales in a certain period of time."], "refer expressly to": ["Refer to something explicitly."], "potato starch": ["Substance extracted from potatoes. It is white, floury and rich in starch and is used to produce flour and for baking."], "orientation": ["The focusing on a certain goal."], "equipped": ["Having at disposal what is needed."], "air cushion vehicle": ["Watercraft which is carried over the water by a hover cushion.", "Craft which is carried by a hover cushion."], "hover craft": ["Watercraft which is carried over the water by a hover cushion."], "hovercraft": ["Watercraft which is carried over the water by a hover cushion."], "supplier": ["Manufacturer that delivers certain goods to companies, shops or private people etc."], "pronounce": ["To express the sound of a syllable, a word or a group of words."], "panoply": ["A complete and impressive array."], "commons": ["A mutual good, shared by more than one, for example air, water, information."], "pillow": ["Cushion placed under the head for sleeping."], "hang out in bed": ["To stay in bed longer than necessary."], "aphorism": ["A short phrase conveying some principle or concept of thought."], "axiom": ["A self-evident and necessary truth."], "leverage": ["The mechanical advantage gained by being in a position to use a lever.", "Influence that is used to gain a strategic advantage.", "Any technique to multiply gains and losses."], "usufruct": ["The legal right to use and derive profit or benefit from property that belongs to another person, as long as the property is not damaged."], "migration into cities": ["The migration from the countryside to the city in the search of better conditions of life."], "range": ["Ample range of elements or phenomenons.", "Distance from the lowest to the highest pitch a musical instrument can play.", "The limit of capability.", "In mathematics, the set with all values a function can return on its domain."], "generation": ["The production or creation of something.", "A single step or stage in the succession of natural descent.", "All of the people born and living at about the same time, regarded collectively."], "certifiable": ["Fit to be legally certified as insane and to be treated accordingly."], "powdered sugar": ["Very finely ground sugar."], "hitherto": ["Up to the present.", "Continuously, during all time up to this or that time.", "Up to that time."], "so far": ["Up to the present."], "give an account of": ["To explain giving details."], "stapling": ["Temporary searn that is being created with long stitches before the definite searn is being sewn."], "impose": ["To enforce something, to constrain somebody to accept something."], "entrepreneur": ["Who starts and executes a business activity in order to distribute goods or services."], "entrepreneurial": ["Being part of the enterpreneur or referring to the enterpreneur."], "handicraft manufacturer": ["Company that does not produce industrially but with the means of relatively simple devices."], "industrial firm": ["Company that produces on a large scale with up-to-date technology."], "imputation": ["Attribution of a punishable act, a liability or similar to someone."], "ongoing": ["Happening in a certain moment and then goes ahead."], "before a court": ["At court, facing a lawsuit."], "in the field": ["Referring to a certain theme."], "concerning this matter": ["Referring to the theme one is talking about or wants to talk about."], "on one's own behalf": ["Oneself, assuming the complete responsibility."], "due": ["Going to lose validity."], "in view of": ["Considering that something will happen."], "merge": ["To unify an element with a larger structure.", "To join two parts into a single set or element; to become one.", "To mix together different elements."], "newbie": ["A new user or participant; someone who is extremely new and inexperienced."], "non-differentiated marketing": ["Marketing strategy that is based on the fact that the market being approached by the company is homogeneous and therefore not segmented."], "household appliance industry": ["Industry that produces appliances or tools that are being used in households."], "metallurgic industry": ["Industry that includes all branches that deal with the processing of metal and the production of metal goods."], "integration": ["Someone's insertion into a society or a group.", "A process that is usually used to find a measure of totality such as area, volume, mass, displacement, etc., when its distribution or rate of change with respect to some other quantity (position, time, etc.) is specified."], "introduction": ["The act or process of introducing.", "An initial section of a book or article, which introduces the subject material.", "A means or measure or an action taken in preparation of.", "The initial section; a foreword; a preface; a lead-in; a kind of beginning before something really starts, etc."], "supplementary": ["That is being added as integratory part.", "Functioning in a supporting capacity."], "poet": ["A person who writes poems.", "A man who writes poems."], "dagger": ["A short knife with a pointed blade used for piercing or stabbing."], "unicycle": ["A vehicle similar to a bicycle, but with only one wheel."], "fully paid": ["Refers to the completely paid capital of a company."], "broker": ["The person being the intermediary among more people to facilitate the creation and conclusion of a contract."], "middleman": ["The person being the intermediary among more people to facilitate the creation and conclusion of a contract.", "An intermediate dealer between a manufacturer and a retailer or customer."], "about-turn": ["Change of the direction of a movement into the opposed direction.", "Act of pivoting 180 degrees, especially in a military formation."], "irrigational": ["What is needed to irrigate."], "large land holdings": ["Huge estate property which is not being cultivated or on which extensive agriculture is being operated."], "authorised": ["Being allowed to carry out a legal act."], "lever": ["Bar on which manual action is carried out to move a mechanical device, to open or close an electrical circuit."], "liquidate": ["To turn funds into cash."], "majority": ["More than half (50%) of some group.", "Legal adulthood."], "shut": ["To move (a door, a window, etc.) so that it closes its opening.", "To become closed."], "mouthful": ["A portion of food that can fit comfortably in the mouth.", "A small amount of solid food; a mouthful."], "badminton": ["A racquet sport played by two to four players on a rectangular court divided in two halves by a net over which must pass a shuttlecock (a semispherical cork with feathers attached to it)."], "by means of": ["Using one thing to reach another one.", "By means of; through."], "deserving": ["Being worth the appreciation and the prises."], "financial means": ["The sum of receivables, money on bank accounts, goods and securities that are part of the liquidity of a company and which can be converted into cash easily."], "historical development": ["the past events concerned in the development of a particular place, object, subject etc."], "orthogonal": ["Not pertinent to the matter under consideration.", "At an angle of exactly 90 degrees."], "extraneous": ["Not pertinent to the matter under consideration.", "Not belonging to that in which it is contained; introduced from an outside source.", "Not essential.", "Coming from the outside."], "monetary": ["Concerning the money understood as currency used in a certain country."], "negligence": ["Ignoring of the obligation to diligence that is foreseen by law in order to carry out a task.", "The act of abandoning something."], "retailer": ["Merchant who owns or administrates a reatail shop."], "in the sign of": ["With the main characteristic."], "niche market": ["Market segment in which there is not much competition."], "appoint": ["To choose someone for an office or a charge assigning duties and responsibilities with an act of authority."], "obligation": ["Juridical liability based on which a person, called debitor, must carry out a service of economical value for another person, called creditor."], "business purpose": ["Goal a company targets."], "standardization": ["Adaptation and uniformation following a predominant model."], "interest payable": ["Interests that need to be paid."], "overhead": ["The expense of a business not directly assigned to goods or services provided."], "centaur": ["A mythical being that is half man and half horse."], "unicorn": ["A mythical animal in the form of a horse, with a single twisted horn on the forehead."], "computer science": ["Science and technique of data elaboration and of automatic treatment of information."], "curious": ["Having the desire to see new, interesting, rare things, and the like.", "Wanting to discover a secret.", "Out of the ordinary."], "inquisitive": ["Wanting to discover a secret."], "Nature": ["An international weekly journal of science."], "go through": ["To go or live through; to be affected by a certain situation, to have something happen to oneself.", "To bring something to fulfilment.", "To pass a phase, begin and take to the end an operation phase."], "liabilities": ["The part of the balance sheet in which the debts are written down."], "market penetration": ["Level of market presence of a company with its products or services."], "opponent": ["Person or group of people that is the adversary part in a lawsuit.", "Characterized by active hostility."], "opposing party": ["Person or group of people that is the adversary part in a lawsuit."], "on behalf of a third party": ["On behalf of someone who is not directly involved in a transaction."], "for just cause": ["Because of a severe misconduct."], "so far as": ["at the intensity or degree that"], "perceive": ["To understand with the means of the senses or subconsciously.", "To see, discover or determine something, unclear, distant or hidden, by looking carefully."], "misfire": ["Not having any more the same performance."], "matching concept": ["Pirnciple that refers to the belonging of the costs to the past accounting year and the future one."], "gratuitous": ["Given freely."], "setting": ["A certain way software, a webpage or an electronic device reacts, displays certain information or activates certain functions as selected by the user (note: usually plural)."], "POTS": ["Voice-grade analog telephone service; the basic form of residential and small business service connection to the telephone network now gradually replaced by more advanced forms of telephony such as ISDN, mobile phones and VoIP"], "plain old telephone service": ["Voice-grade analog telephone service; the basic form of residential and small business service connection to the telephone network now gradually replaced by more advanced forms of telephony such as ISDN, mobile phones and VoIP"], "Post Office Telephone Service": ["Voice-grade analog telephone service; the basic form of residential and small business service connection to the telephone network now gradually replaced by more advanced forms of telephony such as ISDN, mobile phones and VoIP"], "Post Office Telephone System": ["Voice-grade analog telephone service; the basic form of residential and small business service connection to the telephone network now gradually replaced by more advanced forms of telephony such as ISDN, mobile phones and VoIP"], "plain old telephone system": ["Voice-grade analog telephone service; the basic form of residential and small business service connection to the telephone network now gradually replaced by more advanced forms of telephony such as ISDN, mobile phones and VoIP"], "public switched telephone network": ["Fixed and mobile telephone network constructed by public companies, in which the client is wired in pairs to the network."], "public circuit-switched telephone network": ["Fixed and mobile telephone network constructed by public companies, in which the client is wired in pairs to the network."], "juridical personality": ["The characteristic of an entity that is not a person, but is regarded by law to have the status of a person."], "PSTN": ["Fixed and mobile telephone network constructed by public companies, in which the client is wired in pairs to the network."], "telephone network": ["Fixed and mobile telephone network constructed by public companies, in which the client is wired in pairs to the network."], "estate": ["Rural territory made up of land that can be cultivated and where a farmer's house can be built on."], "weighted average cost": ["Cost to be incurred by a company for the collection of financial resources from partners and third-party lenders."], "bearer": ["Carrying or bearing."], "temporary": ["For a limited and prefixed period of time.", "A means or measure or an action taken in preparation of."], "live show": ["An act where somebody performs music, theater or a similar art in a live show or concert."], "oyster sauce": ["A dark brown sauce commonly used in Chinese and Filipino cuisine; it is prepared from oysters, brine and umami flavour enhancers such as MSG."], "Sichuan vegetable": ["A type of pickled mustard stem originating from Sichuan, China. The pickle is made from the knobby, fist-sized, swollen green stem of Brassica juncea subsp. tatsai. The stem is first salted, pressed, and dried before being rubbed with hot chile paste and allowed to ferment in an earthenware jar."], "Szechwan vegetable": ["A type of pickled mustard stem originating from Sichuan, China. The pickle is made from the knobby, fist-sized, swollen green stem of Brassica juncea subsp. tatsai. The stem is first salted, pressed, and dried before being rubbed with hot chile paste and allowed to ferment in an earthenware jar."], "jar choy": ["A type of pickled mustard stem originating from Sichuan, China. The pickle is made from the knobby, fist-sized, swollen green stem of Brassica juncea subsp. tatsai. The stem is first salted, pressed, and dried before being rubbed with hot chile paste and allowed to ferment in an earthenware jar."], "zha cai": ["A type of pickled mustard stem originating from Sichuan, China. The pickle is made from the knobby, fist-sized, swollen green stem of Brassica juncea subsp. tatsai. The stem is first salted, pressed, and dried before being rubbed with hot chile paste and allowed to ferment in an earthenware jar."], "rice congee": ["A type of rice porridge (rice cooked until it becomes soft and thick), that is eaten in many Asian countries. In some cultures, congee is eaten primarily as a breakfast food, while in others, it is eaten as a substitute for rice in other meals. Congee can be made in a pot, or in a rice cooker."], "motion": ["A change in location; the opposite of standing still."], "movement": ["A large number of people united for some specific purpose.", "A change in location; the opposite of standing still.", "A major self-contained part of a symphony or sonata.", "The elimination of fecal waste through the anus.", "A series of actions advancing a principle or tending toward a particular end."], "culinary": ["Related to or used in cooking."], "chromosome": ["Components in a cell that contain genetic information."], "rose": ["A flower of the rose plant (Rosa)."], "polearm": ["A close combat weapon with the main fighting part of the weapon placed on the end of a long shaft, typically of wood."], "pole weapon": ["A close combat weapon with the main fighting part of the weapon placed on the end of a long shaft, typically of wood."], "Dungeons and Dragons": ["A fantasy tabletop role-playing game (RPG) currently published by Wizards of the Coast. The original edition, designed by Gary Gygax and Dave Arneson, was first published in 1974 by Gygax's company Tactical Studies Rules (TSR). Originally derived from tabletop games (such as Chainmail) played with paper, pencil, and dice, D&D's publication is widely regarded as the beginning of modern role-playing games."], "Dungeons & Dragons": ["A fantasy tabletop role-playing game (RPG) currently published by Wizards of the Coast. The original edition, designed by Gary Gygax and Dave Arneson, was first published in 1974 by Gygax's company Tactical Studies Rules (TSR). Originally derived from tabletop games (such as Chainmail) played with paper, pencil, and dice, D&D's publication is widely regarded as the beginning of modern role-playing games."], "D&D": ["A fantasy tabletop role-playing game (RPG) currently published by Wizards of the Coast. The original edition, designed by Gary Gygax and Dave Arneson, was first published in 1974 by Gygax's company Tactical Studies Rules (TSR). Originally derived from tabletop games (such as Chainmail) played with paper, pencil, and dice, D&D's publication is widely regarded as the beginning of modern role-playing games."], "fleeting": ["Passing quickly."], "ISO 3166-1 alpha-2": ["Two-letter country codes in the ISO 3166-1 standard to represent countries and dependent territories."], "Haussmannian": ["Built in the style of Georges Eug\u00e8ne Haussmann."], "prevailing": ["Most frequent or common.", "Generally accepted, used or practiced at the moment."], "faultless": ["Without fault.", "Without fault or error."], "information science": ["Science and technique of data elaboration and of automatic treatment of information."], "alimony": ["Financial support provided after a separation or divorce by the financial stronger partner to the ex-partner."], "tradition": ["A specific practice of long standing."], "transaction": ["A procedure that is guaranteed to perform completely or not at all.", "An agreement between a vendor and a consumer for provision of a good or service."], "turnaround": ["The time required to carry out a task.", "A reversal of policy."], "tentative": ["Subject to change; not final or fully worked out.", "A means or measure or an action taken in preparation of."], "theoretical": ["Concerned primarily with theories or hypotheses rather than with practical considerations.", "Concerned with theories or hypotheses rather than with practical matters."], "line segment": ["A straight line defined by two points. It provides the shortest connection between two endpoints."], "dot": ["A dot-shaped punctuation mark.", "A small spot, mark or feature which does not bear any details.", "A powerful hallucinogenic drug manufactured from lysergic acid."], "as soon as": ["at the time following immediately the time when"], "the minute": ["at the time following immediately the time when"], "endodontics": ["The branch of dentistry that deals with diseases of the tooth root, dental pulp, and surrounding tissue."], "dentistry": ["A branch of medicine that involves diagnosis, prevention, and treatment of any disease concern about teeth, oral cavity, and associated structures."], "palpable": ["Easily perceived."], "palpation": ["The feeling or pushing on various parts of a patient's body to determine medical condition such as the normality of organs or the presence or absence of tumours, swelling, muscle tension, etc."], "Aruba": ["A 32 km-long island of the Lesser Antilles in the Caribbean Sea."], "residual-current device": ["An electrical wiring device that disconnects a circuit whenever it detects that the electric current is not balanced between the energized conductor and the return neutral conductor."], "earth leakage circuit breaker": ["An electrical wiring device that disconnects a circuit whenever it detects that the electric current is not balanced between the energized conductor and the return neutral conductor."], "satellite dish": ["A receiver on a communications satellite."], "roleplaying game": ["A type of game that is a form of interactive and collaborative storytelling. The participants assume the roles of fictional characters and collaboratively create or follow stories. Participants determine the actions of their characters based on their characterization, and the actions succeed or fail according to a formal system of rules and guidelines."], "RPG": ["A type of game that is a form of interactive and collaborative storytelling. The participants assume the roles of fictional characters and collaboratively create or follow stories. Participants determine the actions of their characters based on their characterization, and the actions succeed or fail according to a formal system of rules and guidelines."], "role-playing game": ["A type of game that is a form of interactive and collaborative storytelling. The participants assume the roles of fictional characters and collaboratively create or follow stories. Participants determine the actions of their characters based on their characterization, and the actions succeed or fail according to a formal system of rules and guidelines."], "pen-and-paper roleplaying game": ["A type of game that is a form of interactive and collaborative storytelling. The participants assume the roles of fictional characters and collaboratively create or follow stories. Participants determine the actions of their characters based on their characterization, and the actions succeed or fail according to a formal system of rules and guidelines."], "tabletop role-playing game": ["A type of game that is a form of interactive and collaborative storytelling. The participants assume the roles of fictional characters and collaboratively create or follow stories. Participants determine the actions of their characters based on their characterization, and the actions succeed or fail according to a formal system of rules and guidelines."], "obnoxious": ["Provoking hate, aversion, disaproval."], "erg": ["A large, relatively flat area of desert covered with wind-swept sand and with little to no vegetation cover."], "nefarious": ["Extremely wicked."], "treatment": ["Medical care for an illness or injury."], "fontanelle": ["A soft membranous spot on the head of a baby due to incomplete fusion of the cranial bones."], "promotion": ["The action of drawing public attention to goods, services or events, often through paid announcements in newspapers, magazines, television or radio.\\n(Source: C / RHW)", "An advancement in rank or position."], "option privilege": ["The right to buy or sell a specified quantity of a security at a set strike price at some time on or before expiration; after a certain period the option becomes invalid."], "skier": ["Someone who skis."], "aim": ["To point or cause to go (blows, weapons, or objects such as photographic equipment) towards", "An anticipated outcome that is intended to obtain or that guides your planned actions.", "The goal intended to be attained (and which is believed to be attainable)."], "retail outlet": ["An establishment, either physical or virtual, that sells goods or services to the public."], "situation": ["A position or area in a space.", "Position or status with regard to conditions and circumstances.", "The way in which something is positioned vis-\u00e0-vis its surroundings."], "qualification": ["A title belonging to a person by virtue of studies completed or social condition.", "The process by which racers race against the clock to determine whether they will qualify for a race, and if so in what qualifying position."], "ski": ["To glide over snow on skis, especially as a sport."], "sigh": ["To inhale a larger quantity of air than usual, and immediately expel it; to make a deep single audible respiration, especially as the result or involuntary expression of fatigue, exhaustion, grief, sorrow, frustration, or the like."], "hunter": ["A person who hunts game."], "toothbrush": ["An implement with a handle, and a head with multiple more or less flexible bristles, used for cleaning teeth."], "vaccination": ["Inoculation with a vaccine in order to protect a particular disease or strain of disease."], "smallpox": ["A highly contagious viral disease characterized by fever and weakness and skin eruption with pustules that form scabs that slough off leaving scars."], "bugfix": ["A piece of replacement program code that is used to remove errors in a software; the act of creating code to remove errors."], "patch": ["An update or code modification."], "dwarf": ["A short, stocky humanoid creature in Norse mythology as well as other Germanic mythologies, fairy tales, fantasy fiction and role-playing games. In many sources they are described to prefer living underground and/or in mountainous areas and are famed miners and smiths."], "Vistula": ["The longest river in Poland"], "distortion": ["The negative alteration or falsification of something.", "Anything that is distorted, as a sound, image, fact, etc.", "A phenomenon in optics where straight lines in a scene do not appear as straight lines when seen through a lens."], "Istanbul": ["Largest city in Turkey.", "Turkish dialect."], "father-in-law": ["The father of someone's spouse."], "son-in-law": ["The husband of someone's daughter."], "daughter-in-law": ["The wife of someone's son."], "stepdaughter": ["The daughter of one's spouse and his or her previous partner."], "stepson": ["The son of one's spouse and his or her previous partner."], "stepchild": ["The child of one's spouse and his or her previous partner."], "child-in-law": ["The spouse of someone's child."], "mail": ["A batch of letters and parcels received via post."], "hauberk": ["A shirt made of mail armour, i.e. small metal rings linked together in a pattern. The shirt reaches at least to mid-thigh and includes sleeves."], "chain shirt": ["A shirt made of mail armour, i.e. small metal rings linked together in a pattern. The shirt reaches at least to mid-thigh and includes sleeves."], "boiled egg": ["An egg (usually from a chicken) boiled in water with its shell unbroken."], "egg cup": ["A small cup used for serving boiled eggs within their shell."], "egg server": ["A small cup used for serving boiled eggs within their shell."], "field of operation": ["Area within which the effectiveness and the effects of an activity extends."], "scrambled eggs": ["A dish made from the lightly beaten combined whites and yolks of two or more (usually chicken's) eggs, sometimes with a little milk or water added, and stirred while cooking."], "banister": ["The balustrade of a staircase."], "chicken's egg": ["An egg laid by a hen."], "compile": ["To get or gather together.", "To use a compiler to process source code and produce executable code.", "To put together out of existing material (e.g. a list)."], "render": ["To give what is needed or desired.", "To cause to be or become.", "To represent or show in, or as in, a picture.", "To render something by means of a certain material.", "To produce as return, as from an investment; to give or supply."], "The Lord of the Rings": ["An epic high fantasy novel written by English academic J. R. R. Tolkien. In his setting, Middle-earth, the story concerns peoples such as Hobbits, Elves, Men, Dwarves, Wizards, and Orcs and centres on the Ring of Power made by the Dark Lord Sauron."], "Lord of the Rings": ["An epic high fantasy novel written by English academic J. R. R. Tolkien. In his setting, Middle-earth, the story concerns peoples such as Hobbits, Elves, Men, Dwarves, Wizards, and Orcs and centres on the Ring of Power made by the Dark Lord Sauron."], "Milky Way": ["Spiral galaxy in which the Solar System is located."], "orc": ["Tough and warlike humanoid creatures in various fantasy settings, particularly in the stories of Middle-earth written by J. R. R. Tolkien. They are commonly portrayed as misshapen humanoids with brutal, warmongering, sadistic, yet cowardly tendencies."], "Orc": ["Tough and warlike humanoid creatures in various fantasy settings, particularly in the stories of Middle-earth written by J. R. R. Tolkien. They are commonly portrayed as misshapen humanoids with brutal, warmongering, sadistic, yet cowardly tendencies."], "chickpea": ["A seed of Cicer arietinum, in the pea family, often used as a food.", "An annual Asian plant (Cicer arietinum) in the pea family, widely cultivated for the edible seeds in its short inflated pods."], "guide": ["To carry, particularly to a particular destination.", "To serve as a guide for someone or something.", "Someone charged to show people around a place or an institution and offer information and explanation.", "A model or standard for making comparisons."], "service": ["That which is produced, then traded, bought or sold, then finally consumed and consists of an action or work.", "In a client-server model, the functionality that responds to the requests of the client program.", "A road generally for access to a building, motorway service station, beach, campsite, industrial estate, business park, etc. This is also commonly used for access to parking and trash collection. Sometimes called an alley, particularly in the US."], "endeavour": ["An assiduous or persistent activity.", "To exert oneself to do or effect something; to make an effort or attempt.", "To attempt through application of effort (to do something); to try strenuously."], "great-uncle": ["The brother of one of the four of someone's grandparents."], "great-aunt": ["The sister of one of the four of someone's grandparents."], "stepbrother": ["The son of one's stepfather or stepmother."], "stepsister": ["The daughter of one's stepfather or stepmother."], "bias": ["A partiality that prevents objective consideration of an issue or situation."], "prejudice": ["A partiality that prevents objective consideration of an issue or situation."], "preconception": ["A partiality that prevents objective consideration of an issue or situation."], "remand prison": ["A place where people accused of a crime are being held while waiting for their trial."], "extended sample": ["In market research it refers to a extended group of the original sample and identifies the composition and number of the present participants who are going to be contacted in order to have a high security that the dimension of the original sample is going to be reached."], "pork": ["The meat of a pig."], "residual": ["Of, relating to, or remaining as a residue."], "Philadelphia": ["The largest city in Pennsylvania, located in south-eastern part of the state along the Delaware and Schuylkill rivers."], "pickup": ["A light truck with an open body and low sides and a tailboard.", "A phrase beginning that comes before the beginning of the first bar."], "predominantly": ["Much greater in number or influence."], "predominant": ["Most frequent or common."], "prevalent": ["Most frequent or common.", "Generally accepted, used or practiced at the moment."], "revenue": ["Compensation for the selling of goods and services."], "lure": ["Qualities that attract by seeming to promise some kind of reward.", "To attract or provoke someone to do something through (often false or exaggerated) promises or persuasion."], "potential": ["Anything that may be possible."], "reference": ["Reference to something else.", "A person or thing that is adopted for guidance.", "A short note recognizing a source of information or of a quoted passage."], "impugn": ["To attack as false or wrong."], "challenge": ["To attack as false or wrong.", "An invitation to measure oneself against others, to confront them in a competition.", "To invite someone to take part in a competition."], "contest": ["To attack as false or wrong.", "Struggle for superiority.", "An occasion on which a winner is selected from among two or more contestants."], "albuminuria": ["A pathological condition where albumin is present in the urine."], "bilingual": ["Written in two languages, using two languages (e.g. a text).", "A person who grew up using two languages and speaks both at native level.", "Able two speak two languages at native level."], "creative": ["Having the skill and power of the mind to produce something new, especially a work of art; (an ability of a person)", "Involving the use of skill and imagination to create something new and unique, such as a work of art."], "inspired": ["Having the skill and power of the mind to produce something new, especially a work of art; (an ability of a person)", "Artistic, beautiful, imaginative and showing deep feeling; characterized by romantic imagery."], "artistic": ["Having the skill and power of the mind to produce something new, especially a work of art; (an ability of a person)", "Aesthetically pleasing.", "Relating to or characteristic of art or artists."], "inventiveness": ["The ability of a person to create or invent something."], "fantasy": ["A genre of literature and art that uses magic and other supernatural forms as a primary element of plot and theme. The storyline is often set in a fictional, historically oriented setting.", "A situation imagined by an individual that expresses certain desires or aims on the part of its creator. Fantasies sometimes involve situations that are highly unlikely; or they may be quite realistic. Another, more basic meaning of fantasy is something which is not 'real,' as in perceived explicitly by any of the senses, but exists as an imagined situation of object to subject."], "claim": ["The aggregate of operative facts giving rise to a right enforceable by a court/tribunal (source OAS).", "To demand as being one's due or property; to assert one's right or title to.", "A geographically limited area in which a miner, prospector, or mining company has the exclusive right to mine.", "Demand for something as rightful or due.", "An assertion of a right (as to money or property).", "An established or recognized right, which was previously denied.", "The expression of an informal right to something."], "null": ["The cardinal number that denotes no quantity or amount at all."], "shield": ["A large plate made of metal or wood, held in the left hand during melee combat to protect the body from incoming attacks.", "To protect, hide, or conceal from danger or harm.", "A shielding or protection against the unpleasant, unwanted, or dangerous."], "escutcheon": ["A large plate made of metal or wood, held in the left hand during melee combat to protect the body from incoming attacks."], "microscope": ["An optical instrument used for observing small objects."], "telescope": ["An optical instrument for observing distant objects.", "To extend or contract in the manner of a telescope."], "telescopic": ["Relating to a telescope"], "microscopic": ["Of, or relating to microscopes or microscopy."], "macroscopic": ["Visible to the unassisted eye; as opposed to microscopic."], "cobweb": ["A fine net of threads woven by a spider to catch insects."], "lobster": ["A marine crustacean of the Nephropidae family, normally red in colour, with claws, which is used as a seafood."], "dative": ["The form of a noun, pronoun or adjective when it is the indirect object of a verb, (or part of it); used to indicate the noun to whom something is given (in a number of languages, for example Latin and German)"], "hand-kiss": ["A kiss on the hand of a person (usually a woman) as greeting and as a sign of deference."], "nominative": ["A grammatical case for a noun or pronoun, which generally marks the subject of a verb, as opposed to its object or other verb arguments."], "accusative": ["The grammatical case to denote a direct object."], "genitive": ["The case that marks a noun as being the possessor of another noun."], "Integrated Services Digital Network": ["A circuit-switched telephone network system, designed to allow digital transmission of voice and data over ordinary telephone copper wires, resulting in better quality and higher speeds than that available with the PSTN system."], "ISDN": ["A circuit-switched telephone network system, designed to allow digital transmission of voice and data over ordinary telephone copper wires, resulting in better quality and higher speeds than that available with the PSTN system."], "potato in the skin": ["A not too small potato, as a whole, ready cooked with its skin in boiling salted water. It is served unpeeled in the skin."], "an apple a day keeps the doctor away": ["A balanced diet is needed to stay healthy."], "usage": ["The act of using something.", "A pattern of behavior inherited or acquired through frequent repetition.", "Explanation of the use of an expression."], "spotlight": ["A persistent and marked attention and interest that focus on one person, one problem, etc."], "cybercrime": ["Any crime that involves a computer and a network."], "blogger": ["A person who writes a blog.", "Woman who writes a blog."], "priority": ["An item's relative importance.", "In road traffic: right of a vehicle to pass in priority to another one.", "A person's personal goals."], "greeting": ["A conventional phrase used to start a conversation or otherwise to acknowledge a person's arrival or presence.", "A conventional phrase used to start a letter or other written communication."], "troll": ["A person who writes in online forums or the usenet with the sole purpose of starting heated discussions and annoying people."], "spiny lobster": ["A marine crustacean of the Palinuridae family, large and edible, having a spiny carapace and no pincers."], "guarantee": ["A written declaration that a certain product will be fit for a purpose and work correctly.", "To assure that something will get done right."], "Nairobi": ["The capital of Kenya."], "gunfire": ["The act of shooting a gun."], "Kigali": ["The capital of Rwanda."], "Dodoma": ["The capital of Tanzania."], "Kampala": ["Tha capital of Uganda."], "generic": ["Applicable to an entire class or group.", "Relating to or common to or descriptive of all members of a genus or kind.", "Not protected by trademark.", "Any product that can be sold without a brand name."], "Mogadishu": ["The capital of Somalia."], "graduate": ["A person who has received a degree from a school.", "To obtain an academic degree upon completion of one's studies."], "alumnus": ["A person who has received a degree from a school."], "gradual": ["Proceeding in small stages."], "gesture": ["Something done as an indication of intention.", "The use of movements, especially of the hands, to communicate familiar or prearranged signals", "To show, express or direct through movements."], "gallery": ["The uppermost seating area projecting from the rear or side walls of a theater, concert hall or auditorium.", "A covered corridor.", "An institution, building, or room for the exhibition and conservation of works of art."], "Krakow": ["City in Poland."], "Cracow": ["City in Poland."], "good luck": ["Something positive that happens to someone by chance.", "Interjection, which expresses that one wishes someone success or luck.", "A difficult task that you can do thanks to a stroke of luck."], "Chicago": ["City in the USA, in the state of Illinois, along the southwestern shore of Lake Michigan."], "Canberra": ["The capital of Australia."], "reimbursement": ["The act of compensating someone for an expense."], "give an account": ["To communicate to someone else something that we know."], "economic revival": ["New phase of development and economic expansion after a period of crisis."], "Mumbai": ["Capital of the state of Maharashtra in India."], "Bombay": ["Capital of the state of Maharashtra in India."], "Caracas": ["The capital of Venezuela."], "adrenoleukodystrophy": ["One of a group of genetic disorders called the leukodystrophies that cause damage to the myelin sheath, an insulating membrane that surrounds nerve cells in the brain."], "Montevideo": ["The capital of Uruguay."], "Paramaribo": ["The capital of Suriname."], "La Paz": ["The administrative capital of Bolivia."], "Sucre": ["The constitutional capital of Bolivia."], "smothering": ["The mechanical obstruction of the flow of air from the environment into the mouth and/or nostrils."], "Asunci\u00f3n": ["The capital of Paraguay."], "Georgetown": ["The capital of Guyana."], "Quito": ["The capital of Ecuador."], "Bogot\u00e1": ["The capital of Colombia."], "Santiago": ["The capital of Chile.", "The capital of the autonomous community of Galicia, located in the north west of Spain in the Province of A Coru\u00f1a.", "The capital city of Santiago de Cuba Province in the south-eastern area of the island nation of Cuba."], "clam": ["A marine or freshwater mollusks belonging to the class Bivalvia, whose body is protected by two symmetrical shells."], "blue mussel": ["Shelled marine edible mollusks (Mytilus edulis) belonging to the class Bivalvia. Their shell is purple, blue or sometimes brown in color."], "cockle": ["Common name for bivalve mollusks of the family Cardiidae. Their rounded shells are symmetrical, heart-shaped and feature strongly pronounced ribs."], "squid": ["Large, diverse group of marine cephalopods. They have a distinct head, bilateral symmetry, a mantle, and arms."], "cuttlefish": ["A marine mollusk (cephalopod), able to throw a black liquor and having in the back a brittle bone."], "octopus": ["A cephalopod mollusc of the Octopodidae family, characterized by its eight tentacles."], "paella": ["Dish made of rice, saffron, and olive oil, which can be garnished with shellfish, fish or different meats."], "Guatemala City": ["The capital of Guatemala."], "Panama City": ["The capital of Panama."], "San Salvador": ["Tha capital of El Salvador."], "Tegucigalpa": ["The capital of Honduras."], "Managua": ["The capital of Nicaragua."], "San Jos\u00e9": ["The capital of Costa Rica."], "Standard Mandarin": ["The official language of China and Taiwan."], "couverture": ["A chocolate rich in cocoa butter. It is used to give cookies and cakes a chocolate coating."], "air force": ["The branch of the military devoted to air warfare."], "navy": ["A country's entire sea force, including ships and personnel."], "marine": ["Of or, or pertaining to, the sea."], "General Multilingual Environmental Thesaurus": ["GEneral Multilingual Environmental Thesaurus (GEMET)"], "GEneral Multilingual Environmental Thesaurus": ["GEneral Multilingual Environmental Thesaurus (GEMET)"], "Adriatic Sea": ["Sea separating the Italian peninsula from the Balkan peninsula."], "Yellow Sea": ["The northern part of the East China Sea. It is located between mainland China and the Korean peninsula."], "Arabian Sea": ["A region of the Indian Ocean between India, Pakistan and the Arabian Peninsula."], "Sargasso Sea": ["An elongated region in the middle of the North Atlantic Ocean, surrounded by ocean currents. On the west it is bounded by the Gulf Stream; on the north, it is bounded by the North Atlantic Current; on the east, it is bounded by the Canary Current; and on the south, it is bounded by the North Atlantic Equatorial Current."], "South China Sea": ["A part of the Pacific Ocean, located between Singapore and the Strait of Taiwan."], "East China Sea": ["Marginal sea of the Pacific which borders on mainland Chine in the West, South Korea in the North, the southern parts of Japan in the East and Taiwan in the South."], "watermelon": ["The fruit of the watermelon plant (Citrullus vulgaris, Citrullus lanatus), having a green rind and watery flesh that is bright red when ripe and contains black pips.", "A vine-like plant of the species Citrullus lanatus."], "mamoncillo": ["A fruit with a thin and rigid green skin, yelow pulp and a large seed of the same ovoid shape as the fruit itself.", "Fruit-bearing tree in the soapberry family Sapindaceae, native or naturalised over a wide area of the American tropics."], "island nation": ["A sovereign country whose territory consists of one or more islands, that means it is not on the mainland of a continent."], "sovereign state": ["A political entity asserting ultimate authority over a geographical area."], "i-type adjective": ["A type of adjective in the Japanese language. Its dictionary form ends with i (\u3044)."], "i-adjective": ["A type of adjective in the Japanese language. Its dictionary form ends with i (\u3044)."], "na-adjective": ["A type of adjective in the Japanese language. Its dictionary form ends in na (\u306a)."], "na-type adjective": ["A type of adjective in the Japanese language. Its dictionary form ends in na (\u306a)."], "ADSL modem": ["A device that connects a PC or a local network to the ADSL network of an internet provider."], "copper wire": ["A piece of insulated wire made of copper. It is used to carry an electrical current or to transmit data."], "power cord": ["A cable that is used to connect an electrical device to a power source. Therefore it usually ends in a power plug."], "mains cable": ["A cable that is used to connect an electrical device to a power source. Therefore it usually ends in a power plug."], "power cable": ["A cable that is used to connect an electrical device to a power source. Therefore it usually ends in a power plug."], "mains lead": ["A cable that is used to connect an electrical device to a power source. Therefore it usually ends in a power plug."], "prie-dieu": ["A bench designed to kneel on, primarily intended for devotional use, often found in churches."], "Bantu languages": ["An African language group belonging to the Niger-Congo family. They are spoken in a large area east and south of the present day nation of Nigeria; i.e. in central Africa, east Africa, and southern Africa."], "microstate": ["A country that has a very small population and land area."], "Baku": ["The capital and the largest city of Azerbaijan.", "ISO 639-6 entity"], "Tbilisi": ["The capital and largest city of Georgia."], "horseshoe": ["A piece of metal designed to be attached to a horse's foot as a means of protection."], "humanitarian": ["Concerned with people's welfare"], "heterogeneous": ["Consisting of elements that are not of the same kind or nature."], "homogeneous": ["That are all of the same or similar kind or nature."], "harassment": ["The act of tormenting by continued persistent attacks and criticism."], "Hampshire": ["A maritime county in the south of England bordered by Berkshire, Surrey, Sussex, Dorset, Wiltshire and the English Channel; also includes the Isle of Wight."], "San\u2018a\u2019": ["The capital of Yemen."], "Sanaa": ["The capital of Yemen."], "Sana'a": ["The capital of Yemen."], "Muscat": ["the capital and largest city in Oman."], "Manama": ["The capital and largest city in Bahrain."], "Kuwait City": ["The capital of Kuwait."], "Riyadh": ["The capital and largest city of Saudi Arabia,"], "Jerusalem": ["The de facto capital and largest city of Israel, located in the Judean Mountains, between the Mediterranean Sea and the northern edge of the Dead Sea."], "Abu Dhabi": ["The capital of the emirate of the same name, largest of the seven emirates that compose the United Arab Emirates."], "hook": ["A sharp metal hook.", "A rod bent into a curved shape, for catching, holding, or sustaining anything.", "A metal hook for catching fish.", "A device for catching and holding animals.", "A punch in boxing delivered with the arm bent.", "A baseball pitch resulting in motion downward and usually to the left when thrown with the right hand and to the right when thrown with the left hand.", "Features, definitions, or codings that enable future enhancements to happen compatibly or more easily.", "To fasten with a hook.", "To ask an unreasonable price.", "To make a piece of needlework."], "numeral": ["[A word that indicates a number or a rank.]", "Of or pertaining to numbers."], "postpositional particle": ["One-syllable suffixes or short words in Japanese and Korean grammar that immediately follow the modified noun, verb, adjective, or sentence. They have a wide range of grammatical functions, including the indication of a question or the speaker's assertiveness, certitude, or other feelings."], "sentence-final particle": ["One type of particle in Japanese and Korean grammar. They are attached to the end of a sentence and express things like doubt, a question, a prohibition, emphasis, or a strong emotion."], "gizzard": ["A specialized stomach with a thick, muscular wall used for grinding up food. It is found in birds, reptiles, earthworms, some fish, insects, mollusks, and other creatures."], "ventriculus": ["A specialized stomach with a thick, muscular wall used for grinding up food. It is found in birds, reptiles, earthworms, some fish, insects, mollusks, and other creatures."], "gastric mill": ["A specialized stomach with a thick, muscular wall used for grinding up food. It is found in birds, reptiles, earthworms, some fish, insects, mollusks, and other creatures."], "gigerium": ["A specialized stomach with a thick, muscular wall used for grinding up food. It is found in birds, reptiles, earthworms, some fish, insects, mollusks, and other creatures."], "prisoner": ["A person confined in a prison, while on trial or serving a sentence.", "A person held against his will."], "journey": ["The act of traveling from one place to another."], "voyage": ["The act of traveling from one place to another."], "Nicosia": ["The largest city of the island of Cyprus and the capital of Cyprus and of the Turkish Republic of Northern Cyprus."], "Turkish Republic of Northern Cyprus": ["A de facto independent republic located in northern Cyprus."], "verbiage": ["Over abundance of words."], "fishhook": ["A metal hook for catching fish."], "power line": ["Wires conducting electric power from one location to another."], "compendium": ["A short but comprehensive compilation of a body of knowledge.", "Shortened form of something."], "United Nations Security Council": ["The United Nations Security Council, the organ of the United Nations charged with maintaining peace and security among nations"], "UNSC": ["The United Nations Security Council, the organ of the United Nations charged with maintaining peace and security among nations"], "Stuttgart": ["The sixth-largest city of Germany and the capital of the federal state Baden-Wurtemberg."], "Greenland Sea": ["Area of the Arctic Ocean, between Greenland, Jan Mayen and Iceland, spanning some 465,000 square miles (1,205,000 square km)."], "Java Sea": ["A large, shallow sea at the south of the Pacific Ocean, between the Indonesian islands of Borneo to the north, Java to the south, Sumatra to the west, and Sulawesi to the east."], "Sea of Japan": ["A marginal sea of the western Pacific Ocean between Japan to the east and Asia to the west."], "Philippine Sea": ["A part of the western Pacific Ocean bordered by the Philippines and Taiwan to the west, Japan to the north, the Marianas to the east and Palau to the south."], "Dead Sea": ["A salty lake at 418 m (1371 feet) below sea level between Israel, the West Bank and Jordan."], "marginal sea": ["A part of ocean partially enclosed by land such as islands, archipelagos, or peninsulas. Unlike mediterranean seas, it has ocean currents caused by ocean winds."], "fear of heights": ["An irrational fear of great heights."], "myriad": ["Ten to the power of four.", "Big undetermined number."], "ten thousand": ["Ten to the power of four."], "Ajax": ["A methodology based on Java-script, providing widgets for asynchronous client server communication.", "A hero of the Trojan wars."], "yuck": ["An expression of disgust."], "AJAX": ["A methodology based on Java-script, providing widgets for asynchronous client server communication."], "insolvency": ["Failure to make payments on time."], "delinquent": ["Guilty of a minor delict."], "Asturias": ["Autonomous community within the Kingdom of Spain."], "IQ": ["The unit used to show the result of an intelligence test."], "Catalonia": ["Autonomous community in the north-east of the kingdom of Spain."], "Galicia": ["Autonomous community within the kingdom of Spain."], "Galiza": ["Autonomous community within the kingdom of Spain."], "Aragon": ["Autonomous community within the kingdom of Spain."], "Basque Country": ["Autonomous community within the kingdom of Spain."], "The Last Unicorn": ["A fantasy novel written by Peter S. Beagle. The story is about a unicorn who realizes that she is the last of her kind and then sets off on a quest to find out what became of all the other unicorns."], "evitable": ["Possible to avoid."], "avoidable": ["Possible to avoid."], "evacuate": ["To withdraw from (a place)."], "evacuation": ["Withdrawal of people from a place."], "alcoholic": ["One who abuses alcohol.", "Containing alcohol.", "A person who regularly consumes a lot of alcohol and is addicted to it.", "A woman who regularly consumes a lot of alcohol and is addicted to it.", "Suffering from alcoholism."], "legendary creature": ["A creature from myth or folklore. Some have their origin in traditional mythology and have at one time been believed to be real creatures. Others were based on garbled travellers' tales of real creatures."], "mythic creature": ["A creature from myth or folklore. Some have their origin in traditional mythology and have at one time been believed to be real creatures. Others were based on garbled travellers' tales of real creatures."], "legendary animal": ["A creature from myth or folklore. Some have their origin in traditional mythology and have at one time been believed to be real creatures. Others were based on garbled travellers' tales of real creatures."], "folkloric creature": ["A creature from myth or folklore. Some have their origin in traditional mythology and have at one time been believed to be real creatures. Others were based on garbled travellers' tales of real creatures."], "dragon": ["A mythical creature typically depicted as a large horned serpent (Asia) or a winged, fire-breathing reptile (Europe), with magical or spiritual qualities."], "glad": ["Having a feeling of satisfaction, enjoyment or well-being, often arising from a positive situation or set of circumstances."], "containment": ["The reinforced steel or concrete vessel that encloses a nuclear reactor."], "charm": ["To attract, arouse and hold attention and interest, as by charm or beauty."], "trap": ["A device for catching and holding animals.", "To catch in a trap, to immobilize.", "The act of concealing yourself and lying in wait to attack by surprise."], "snare": ["A device for catching and holding animals."], "manual": ["A booklet that instructs on the usage of a particular machine.", "Done or made by hand."], "galaxy": ["A huge gravitationally bound system of relatively close stars."], "extroverted": ["Comfortable in social interactions."], "mermaid": ["A mythological woman with a fish's tail in place of her legs."], "introverted": ["Lacking interest or comfort in social interactions."], "semantic relation": ["Relation that exists between the meanings of words."], "related term": ["Term or concept that has a direct or indirect relationship with the article concerned."], "part of theme": ["An entry in a thesaurus or dictionary that is associated with a theme"], "faux ami": ["A word in one language bearing a deceptive resemblance to a word in another language."], "Light Amplification by Stimulated Emission of Radiation": ["A device that produces a powerful, highly directional, monochromatic, coherent beam of light."], "marijuana": ["A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect.", "The cannabis plant."], "curveball": ["A baseball pitch resulting in motion downward and usually to the left when thrown with the right hand and to the right when thrown with the left hand."], "marketplace": ["Place of commercial activity in which articles are bought and sold."], "turn out to be": ["To become evident, to appear to the sight."], "deadline": ["Chronological limit set within which a task, a job, etc. is to be carried out."], "way out": ["Gimmick or ploy to escape a situation that is unfavorable, difficult or dangerous.", "A passage or gate from inside someplace to the outside, that permits escape or release."], "entry": ["An act of coming in or going in.", "A place of ingress or entrance, esp. an entrance hall or vestibule.", "The thing which has been submitted."], "adjectival noun": ["A type of adjective in the Japanese language. Its dictionary form ends in na (\u306a).", "Substantive that is used as an adjective (in some languages that have that feature)."], "elder": ["Comparative of old.", "Person respected and listened to for being old in age or in membership."], "sir": ["A polite form of address for a man."], "prenominal adjective": ["A part of speech type comprised of words that are used as attributes to a noun only."], "adnominal": ["A part of speech type comprised of words that are used as attributes to a noun only."], "subsidiary verb": ["A verb that accompanies the main verb in a clause in order to make distinctions in tense, mood, voice or aspect."], "linking verb": ["A verb that that links two parts of a sentence, indicating that one part is the property of the other. The part which indicates the property is the nominal part."], "contrast": ["To show differences when compared; be different", "To set in opposition in order to show the difference or differences between.", "The opposition or dissimilarity of things that are compared."], "emerge": ["To become known or apparent.", "To come out into view, as from concealment.", "To come out of (e.g. water)."], "final particle": ["One type of particle in Japanese and Korean grammar. They are attached to the end of a sentence and express things like doubt, a question, a prohibition, emphasis, or a strong emotion."], "commit": ["To assume a obligation or a engagement.", "To perform an act, usually with a negative connotation.", "To use a resource (money, time, energy, etc.) with the expectation of obtaining something of greater value.", "To give entirely to a specific person, activity, or cause.", "To confer a trust upon.", "Add some changes to a repository of a revision control system."], "verbal noun": ["A type of speech that is specific to the Japanese language. It describes words, usually kanji compounds, that are not used as independent words. They form verbs when combined with -suru.", "Any noun that is derived from a verb and that still can have a subject and/or an object.", "A noun that is derived from a verb by a defined grammatical process."], "pickpocket": ["Thief who steals money and objects from clothes or pockets.", "To steal money and objects from clothes or pockets."], "cooperative": ["An autonomous association of persons who voluntarily cooperate for their mutual social, economic, and cultural benefit."], "host": ["Organism that harbors a virus, parasite, or other pathogen, typically providing nourishment and shelter.", "A person or organization responsible for running an event.", "A moderator or master of ceremonies for a performance.", "To run software made available to a remote user or process.", "Thin disk of unleavened bread used in a religious service, especially in the celebration of the eucharist."], "unicellular": ["Having, or consisting of, but a single cell."], "bacteriophage": ["A virus that infects bacteria."], "defensin": ["Small cysteine-rich cationic proteins found in both vertebrates and invertebrates. They are active against bacteria, fungi and enveloped viruses."], "immunodeficiency": ["A state in which the immune system's ability to fight infectious disease is compromised or entirely absent."], "vaccine": ["An antigenic preparation used to establish immunity to a disease."], "HIV": ["Retrovirus that causes acquired immunodeficiency syndrome (AIDS), a condition in humans in which the immune system begins to fail, leading to life-threatening opportunistic infections."], "Human immunodeficiency virus": ["Retrovirus that causes acquired immunodeficiency syndrome (AIDS), a condition in humans in which the immune system begins to fail, leading to life-threatening opportunistic infections."], "autoimmunity": ["The failure of an organism to recognize its own constituent parts which results in an immune response against its own cells and tissues."], "rheumatoid arthritis": ["Inflammatory autoimmune disorder that causes the immune system to attack the joints."], "diabetes mellitus type 1": ["Disease characterized by decreases in, or the complete absence of, the production of insulin."], "lupus": ["A chronic autoimmune disease that is potentially debilitating and sometimes fatal as the immune system attacks the body\u2019s cells and tissue, resulting in inflammation and tissue damage."], "lupus erythematosus": ["A chronic autoimmune disease that is potentially debilitating and sometimes fatal as the immune system attacks the body\u2019s cells and tissue, resulting in inflammation and tissue damage."], "exoskeleton": ["External anatomical feature that supports and protects an animal's body. All arthropods (such as insects, spiders and crustaceans) and many other invertebrate animals (such as shelled mollusks) have exoskeletons."], "star cluster": ["A group of stars that appear near each other."], "urogenital system": ["The sex organs and the urinary system of vertebrates."], "EMS": ["An organization established in Europe in 1979 to coordinate financial policy and exchange rates for the continent by running the Exchange Rate Mechanism (ERM) and assisting movement toward a common European currency and a central European bank.\\n(Source: ODE)"], "food production": ["The process of making food, including farming, ranching and fishing, and the industrial processing of raw materials to create manufactured food."], "madam": ["A polite form of address for a woman."], "rich man": ["A man who is wealthy."], "wealthy man": ["A man who is wealthy."], "man of means": ["A man who is wealthy."], "merry": ["Giving fun, gaiety, joy, and cheerful spirit.", "In good spirits."], "corporation": ["A commercial association of two or more persons, especially when incorporated."], "geodesic": ["The locally shortest connection between two points.", "A geometric form basic to structures using short sections of lightweight material joined into interlocking polygons.", "A structural system developed by R. Buckminster Fuller to create domes using geodesic forms."], "threshold": ["Limit under or above which, a certain event can or can not occur.", "The bottom-most part of a doorway that one crosses to enter; a sill."], "missile": ["Object intended to be launched into the air."], "occur unexpectedly": ["Referred to an event or circumstance: to occur in a unpredictable and changing way, especially unfavorably."], "obelisk": ["A tall, square, tapered, stone monolith topped with a pyramidal point, frequently used as a monument."], "network": ["A system of interconnected nodes. The connecting lines can be anything from railway lines, data links, personal relationships to nerves of the human body.", "A network of connected computers, ranging from a small home LAN to the world-spanning Internet."], "computer network": ["A network of connected computers, ranging from a small home LAN to the world-spanning Internet."], "dental technician": ["Someone who makes dental appliances and restorative devices, to the specifications of a dentist."], "factory": ["In architecture, a term used as a synonym for \"building\".", "An establishment where products are manufactured using industrial methods.", "Single building or group of buildings and installations destined to industrial activities."], "atchoo": ["Onomatopoeia representing the sound someone emits when sneezing."], "Sun King": ["Surname of king Louis XIV of France."], "undergo": ["To undergo or be subjected to a treatment leading to a change in some feature or characteristic.", "To be subject to the action of.", "To tolerate or put up with something unpleasant."], "puddle": ["An accumulation of water in a small deepening on the ground which forms during a rainfall and dries out after some time."], "upper ontology": ["An ontology limited to concepts that are meta, generic, abstract and philosophical, and therefore general enough to address (at a high level) a broad range of domain areas."], "ISBN": ["A unique identifier for books, intended to be used commercially."], "ISSN": ["A unique eight-digit number used to identify a print or electronic periodical publication."], "booty": ["Profits from burglary, looting and raids.", "Something taken by an attacker from the enemy."], "spoils": ["Profits from burglary, looting and raids."], "boodle": ["Profits from burglary, looting and raids."], "principal": ["The most important element."], "main": ["The most important element.", "Duct for conveying water to a given place."], "specify": ["To state explicitly, or in detail, or as a condition.", "To select something or someone for a specific purpose."], "pasta": ["A type of Italian food made from flour, eggs and water and shaped in different forms. Usually, they are cooked and served with a sauce.", "A dish that contains pasta as its main ingredient."], "ramen": ["A Japanese noodle dish of Chinese origins. It consists of long, originally hand-pulled noodles, a soup based on miso, soy sauce or salt, and toppings like sliced pork (chashu), seaweed (nori), kamaboko or green onions."], "level of language": ["Levels of a language that differ in vocabulary, grammar and style. The choice of the level depends on outside factors, such as the relationship between the speakers, the medium of communication (talk, letter, phone, e-mail) and the situation the communication takes place in."], "level of speech": ["Levels of a language that differ in vocabulary, grammar and style. The choice of the level depends on outside factors, such as the relationship between the speakers, the medium of communication (talk, letter, phone, e-mail) and the situation the communication takes place in."], "stylistic level": ["Levels of a language that differ in vocabulary, grammar and style. The choice of the level depends on outside factors, such as the relationship between the speakers, the medium of communication (talk, letter, phone, e-mail) and the situation the communication takes place in."], "vulgar": ["Rude and likely to offend, using allusions on the sexual level.", "Who is not of noble rank; pertaining to the great masses."], "obscene": ["Rude and likely to offend, using allusions on the sexual level."], "here you are": ["Informal way of being polite when you give something."], "presume": ["Hypothesize that something can happen (or happened in the past) in a definite way."], "soaked": ["Covered with or impregnated with liquid.", "Very wet."], "such a": ["Of a kind specified or understood."], "interest rate": ["The percentage of a sum of money charged for its use."], "magnitude": ["The absolute or relative size, extent or importance of something."], "megabyte": ["One million bytes."], "manager": ["A person whose job is to be in charge of something.", "An administrator, for a singer or group.", "A person who oversees and directs the work of others."], "tension": ["Difficulty that causes worry or emotional tension."], "gerund": ["A verbal form that functions as a verbal noun."], "paprika": ["Spicy powder of Capsicum annuum"], "hygroscopy": ["The ability of a substance to attract water molecules from the surrounding environment through either absorption or adsorption."], "glacial acetic acid": ["Water-free acetic acid."], "provender": ["Bulk feed for livestock, especially hay, straw, etc.\\n(Source: CED)"], "huge": ["Of an excessive extent; of much greater extent than the average; being above standard concerning width, height, or thicknes, etc."], "following": ["Following in a sequence.", "Moving along the trajectory of [another moving being] a bit later than it."], "national": ["Having to do with a nation.", "A person who is a citizen of a nation."], "link": ["A connection between places, persons, events, or things.", "A reference or navigation element in a document to another section of the same document, another document, or a specified section of another document, that automatically brings the referred information to the user when the navigation element is selected by the user.", "To establish connection between two or more things."], "personage": ["A famous and important person."], "role": ["The expected behaviour of an individual in a society."], "regular assembly": ["Assembly that is being organised regularly or that takes place regularly on certain days."], "quarterly": ["Occurring or relating to or consisting of a quarter."], "poetic": ["Connected with poets or poetry (attribute of a thing or person).", "Being poetry or like poetry (attribute of a literary work).", "Artistic, beautiful, imaginative and showing deep feeling; characterized by romantic imagery."], "poetical": ["Connected with poets or poetry (attribute of a thing or person).", "Being poetry or like poetry (attribute of a literary work).", "Artistic, beautiful, imaginative and showing deep feeling; characterized by romantic imagery."], "barefoot": ["Without shoes nor socks."], "poetic justice": ["An unlucky event that happens to someone else, and you consider it a deserved punishment for a bad thing they did before."], "romantic": ["Artistic, beautiful, imaginative and showing deep feeling; characterized by romantic imagery."], "baklava": ["Sweet pastry found in the cuisines of the Middle East and the Balkan which is made out of phyllo dough with nuts and is sweetened with sugar syrop or honey."], "baklawa": ["Sweet pastry found in the cuisines of the Middle East and the Balkan which is made out of phyllo dough with nuts and is sweetened with sugar syrop or honey."], "forage": ["Bulk feed for livestock, especially hay, straw, etc.\\n(Source: CED)"], "standard language": ["A particular variety of a language that has been standardized by an academy or other institution. This is the version of a language that is taught in schools, to native and foreign language learners. Most texts written in that language follow its spelling and grammar norms."], "standard dialect": ["A particular variety of a language that has been standardized by an academy or other institution. This is the version of a language that is taught in schools, to native and foreign language learners. Most texts written in that language follow its spelling and grammar norms."], "standardized dialect": ["A particular variety of a language that has been standardized by an academy or other institution. This is the version of a language that is taught in schools, to native and foreign language learners. Most texts written in that language follow its spelling and grammar norms."], "European country": ["A country in Europe."], "currently": ["At this moment; at this time."], "presently": ["In a near future.", "At this moment; at this time."], "common gender": ["A word gender that is a merge of female and male used by some languages."], "plurale tantum": ["A noun that appears only in the plural form."], "pluperfect": ["Grammatical tense (verb form), that is used for events that happen before a point of reference in the past. The reference is given in the context of the story."], "future perfect": ["Grammatical tense of a verb that describes an action that will be completed in the future."], "grammatical tense": ["The grammatical construct of the time in which a sentence acts."], "future tense": ["A grammatical tense (verb form) that marks an event as not having happened yet, but expected to in the future."], "past tense": ["The grammatical tense expressing actions which took place in the past."], "interrogative word": ["A function word used to introduce an interrogative clause, i.e. a question, by replacing the part that is asked for . In English, most of them start with wh-."], "question word": ["A function word used to introduce an interrogative clause, i.e. a question, by replacing the part that is asked for . In English, most of them start with wh-."], "interrogative particle": ["A sentence-final particle that marks a question. For example, the Japanese \"ka\"."], "question particle": ["A sentence-final particle that marks a question. For example, the Japanese \"ka\"."], "motherese": ["A way of speech used by parents, particularly mothers, when talking to toddlers and infants. It uses a higher-pitched, warm voice, slow speed, and simplified vocabulary and grammar.", "A non-standard form of language used by adults when talking to toddlers and infants which is characterized by high pitch, reduced syntactic complexity and simplified vocabulary."], "parentese": ["A way of speech used by parents, particularly mothers, when talking to toddlers and infants. It uses a higher-pitched, warm voice, slow speed, and simplified vocabulary and grammar.", "A non-standard form of language used by adults when talking to toddlers and infants which is characterized by high pitch, reduced syntactic complexity and simplified vocabulary."], "child-directed speech": ["A way of speech used by parents, particularly mothers, when talking to toddlers and infants. It uses a higher-pitched, warm voice, slow speed, and simplified vocabulary and grammar.", "A non-standard form of language used by adults when talking to toddlers and infants which is characterized by high pitch, reduced syntactic complexity and simplified vocabulary."], "CDS": ["A way of speech used by parents, particularly mothers, when talking to toddlers and infants. It uses a higher-pitched, warm voice, slow speed, and simplified vocabulary and grammar.", "A contract where the buyer of the swap makes regular payments to the seller and in return receives a payoff in case the debtor of the underlying financial instrument defaults."], "register": ["To record in a register.", "Levels of a language that differ in vocabulary, grammar and style. The choice of the level depends on outside factors, such as the relationship between the speakers, the medium of communication (talk, letter, phone, e-mail) and the situation the communication takes place in."], "abstract noun": ["A noun that denotes something immaterial."], "particle of agreement or disagreement": ["Short words that mark agreement or disagreement, such as \"yes\" or \"no\"."], "subjunction": ["A word that connects a main clause to a subclause."], "measure word": ["Word (or morpheme) that is used in combination with a numeral to indicate the count of nouns. Most are tied to a semantic class, such as \"animals\" or \"long things\". They are used in most East Asian languages, plus Bengali, as well as many Indigenous languages of the Americas near the Pacific coast."], "counter": ["Word (or morpheme) that is used in combination with a numeral to indicate the count of nouns. Most are tied to a semantic class, such as \"animals\" or \"long things\". They are used in most East Asian languages, plus Bengali, as well as many Indigenous languages of the Americas near the Pacific coast."], "count word": ["Word (or morpheme) that is used in combination with a numeral to indicate the count of nouns. Most are tied to a semantic class, such as \"animals\" or \"long things\". They are used in most East Asian languages, plus Bengali, as well as many Indigenous languages of the Americas near the Pacific coast."], "counter word": ["Word (or morpheme) that is used in combination with a numeral to indicate the count of nouns. Most are tied to a semantic class, such as \"animals\" or \"long things\". They are used in most East Asian languages, plus Bengali, as well as many Indigenous languages of the Americas near the Pacific coast."], "counting word": ["Word (or morpheme) that is used in combination with a numeral to indicate the count of nouns. Most are tied to a semantic class, such as \"animals\" or \"long things\". They are used in most East Asian languages, plus Bengali, as well as many Indigenous languages of the Americas near the Pacific coast."], "baby talk": ["A way of speech used by parents, particularly mothers, when talking to toddlers and infants. It uses a higher-pitched, warm voice, slow speed, and simplified vocabulary and grammar.", "A non-standard form of language used by adults when talking to toddlers and infants which is characterized by high pitch, reduced syntactic complexity and simplified vocabulary."], "location": ["A position or area in a space.", "A small area of a place."], "sentence adverb": ["Adverb that serves as evaluation of a statement, e. g. unfortunately"], "economic": ["Pertaining to an economy."], "river catchment": ["An area of land where all rainwater and melting snow naturally moves to the same body of water."], "bay laurel": ["(Laurus nobilis) A shrub of the family Lauraceae."], "bay tree": ["(Laurus nobilis) A shrub of the family Lauraceae."], "true laurel": ["(Laurus nobilis) A shrub of the family Lauraceae."], "sweet bay": ["(Laurus nobilis) A shrub of the family Lauraceae."], "Grecian laurel": ["(Laurus nobilis) A shrub of the family Lauraceae."], "laurel": ["(Laurus nobilis) A shrub of the family Lauraceae."], "original": ["First in a series.", "An object from which all later copies and variations are derived."], "barefooted": ["Without shoes nor socks."], "complaint": ["An expression of grievance, resentment or displeasure."], "gripe": ["An expression of grievance, resentment or displeasure."], "sales": ["The department of a company that deals with selling the company's products to the customer."], "Khartoum": ["Capital of Sudan."], "maple syrup": ["Syrup made from the sap of the sugar maple (Acer saccharum) or, less frequently, the black maple (Acer nigrum)."], "historiography": ["Study of the practice of writing history."], "historiographical": ["Related to historiography."], "Aral Sea": ["A middle-Asian salt lake without an outflow."], "still life": ["A subject in art consisting of inanimate objects and/or dead animals.", "A work of art depicting inanimate objects and/or dead animals.", "A style of art dedicated to the depiction of inanimate objects and/or dead animals."], "air guitar": ["A pantomimic played imaginary electric guitar."], "message in a bottle": ["A written message, put in a bottle and thrown into the sea, in the hope that somebody finds it."], "magnetic": ["Having the properties of a magnet; i.e. of attracting iron or steel."], "medical": ["Relating to the study or practice of medicine."], "meeting": ["An agreed upon event which happens at a specified time and place."], "merchant": ["A businessperson engaged in trade."], "Mediterranean": ["The largest inland sea between Europe, Africa and Asia, linked to the Atlantic Ocean at its western end by the Strait of Gibraltar, including the Tyrrhenian, Adriatic, Aegean and Ionian seas, and major islands such as Sicily, Sardina, Corsica, Crete, Malta and Cyprus.", "Of, relating to, characteristic of or located near the Mediterranean Sea."], "mess": ["A state of confusion and disorderliness.", "A great number or large amount of things not placed in a pile."], "disorder": ["A state of confusion and disorderliness.", "A definite pathological process having a characteristic set of signs and symptoms which are detrimental to the well-being of the individual.", "To disturb in mind or make uneasy or cause to be worried or alarmed.", "A condition in which things are not in their expected places.", "A disturbance of the peace or of public order."], "mainframe": ["A powerful multi-user computer capable of supporting many hundreds or thousands of users simultaneously or intensive computational tasks."], "alcohol dehydrogenase": ["Group of dehydrogenase enzymes that occur in many organisms and facilitate the interconversion between alcohols and aldehydes or ketones."], "spring roll": ["Fried Chinese pastry consisting of a vegetable mix wrapped in a covering made out of rice."], "DNA polymerase": ["An enzyme that assists in DNA replication catalyzing the polymerization of deoxyribonucleotides alongside a DNA strand, which they \"read\" and use as a template."], "mortgage": ["The pledge of a property to the lender as security for payment of a debt."], "modular": ["A set of modules that allow flexibility in the way that they can be combined."], "membership": ["The state of being a member of an organisation or group."], "merchandise": ["Commodities available for sale."], "demonstrative": ["A deictic word (it depends on a frame of reference) that indicates what a speaker refers to. It can either point to an object in the physical surroundings, but also to words, phrases and propositions previously mentioned.", "That serves to demonstrate, show or prove."], "militia": ["A private force, not under government control."], "formal noun": ["A noun that is used to form a grammatic structure. This part of speech type is found in the Japanese language, among others."], "women's speech": ["Words, phrases and grammatical forms used by women, or by men trying to sound female."], "feminism": ["Words, phrases and grammatical forms used by women, or by men trying to sound female.", "A political, cultural, and social movement seeking equality for women and girls."], "language register": ["Levels of a language that differ in vocabulary, grammar and style. The choice of the level depends on outside factors, such as the relationship between the speakers, the medium of communication (talk, letter, phone, e-mail) and the situation the communication takes place in."], "masculine": ["A male specific gender of a word as used by some languages.", "Belonging to the masculine grammatical gender.", "Associated with men and his features, in contrast to those of women."], "neuter": ["The neutrally determined gender of a kind of word as used by some languages.", "A noun of the neuter gender.", "Belonging to the neuter grammatical gender."], "feminine": ["The female grammatical gender of words.", "Possessing qualities and behaviours deemed to be typical for women and girls.", "Belonging to the feminine grammatical gender."], "menu": ["A printed list of dishes offered in a restaurant.", "A list from which a computer user may select an operation to be performed."], "Medellin": ["The capital and largest city of the Antioquia Department in Colombia"], "macro": ["Very large in scope or scale.", "A shortcut key combination that executes a few consecutive commands."], "measurement": ["The action of measuring a quantity, a size, a weight, a distance or a capacity relative to a standard."], "Milwaukee": ["The largest city within the state of Wisconsin USA."], "merit": ["Any admirable quality or attribute.", "To earn or merit a reward."], "deserve": ["To earn or merit a reward."], "message": ["A communication that is written, spoken or signalled.", "What a communication contains word by word."], "major": ["A military rank between captain and lieutenant-colonel.", "The main area of study of a student working toward a degree at a college or university."], "elucidate": ["To make clear or obvious."], "pertinence": ["A measurement for how important something is for something."], "relevance": ["A measurement for how important something is for something."], "modem": ["A device that modulates an analog carrier signal, to encode digital information, and that also demodulates such a carrier signal to decode the transmitted information."], "significance": ["A measurement for how important something is for something."], "remarkableness": ["A measurement for how important something is for something."], "importance": ["A measurement for how important something is for something.", "The quality or condition of being important."], "elect": ["To choose (a candidate) in an election."], "include": ["To bring into a group as a (new) member.", "To allow participation in or the right to be part of; permit to exercise the rights, functions, and responsibilities of.", "To incorporate in a price for which one asks."], "follow": ["To go or come after (in physical space) someone or something.", "To perform an accompanying part or parts in a composition.", "To choose and follow; as of theories, ideas, policies, strategies or plans.", "To be the successor of.", "To be the product or result."], "erase": ["To remove markings or information.", "To rub or wipe out."], "launch": ["To give a start to (something); to put in operation.", "To perform an action, as in executing a program or a command.", "To set aflot for the first time as on a maiden voyage.", "The act of launching.", "To propel with force, e.g. a missile."], "former": ["First of a list of two items.", "Occurring before something else, either in time or order."], "previous": ["Occurring before something else, either in time or order."], "latter": ["Second of a list of two items."], "direct": ["To point or cause to go (blows, weapons, or objects such as photographic equipment) towards", "Marked by straightforward manner, behavior, language or action.", "Straight, constant, without interruption.", "To guide the actors, as in plays and movies.", "To act as the leader (e.g. of an orchestra), as in the performance of a composition.", "To be in charge of.", "To give directions to; point somebody into a certain direction."], "communication": ["A communication that is written, spoken or signalled."], "piece of information": ["A communication that is written, spoken or signalled."], "WTF": ["Exclamation of amazement."], "solar year": ["The time it takes the Earth to complete one revolution of the Sun (between 365.24 and 365.26 days depending on the point of reference)."], "Valencia": ["Capital city of the province of Valencia in Spain.", "Capital city of the state of Carabobo in Venezuela."], "Barcelona": ["Spanish city, capital of the autonomous community of Catalonia.", "Capital city of the state of Anzo\u00e1tegui in Venezuela."], "Montreal": ["A seaport and the largest city in southern Quebec."], "illness": ["A definite pathological process having a characteristic set of signs and symptoms which are detrimental to the well-being of the individual."], "affliction": ["A state of pain, suffering, distress or agony."], "Le\u00f3n": ["The capital of Le\u00f3n province in the autonomous community of Castile and Le\u00f3n, in northwest Spain.", "A province of northwestern Spain, in the northwestern part of the autonomous community of Castile and Le\u00f3n."], "medium": ["Someone who serves as an intermediary between the living and the dead.", "(Of meat) cooked until there is just a little pink meat inside.", "The nature of the surrounding environment, e.g. solid, liquid, gas, vacuum, or a specific substance such as a solvent.", "A nutrient solution for the growth of cells in vitro."], "Andalusia": ["The most populated autonomous community of Spain. Its capital is Seville."], "Seville": ["The capital of Seville province and of the autonomous community of Andalusia, in the south of Spain."], "C\u00f3rdoba": ["Capital of C\u00f3rdoba province in the autonomous community of Andalusia, in the south of Spain.", "Capital of the C\u00f3rdoba province of Argentina.", "A province of southern Spain, in the north-central part of the autonomous community of Andalusia.", "A province of Argentina, located in the center of the country, with capital, C\u00f3rdoba."], "euthanasia": ["The practice of ending the life of a person or an animal in a painless manner in order to prevent suffering."], "metric": ["A system of related measures that facilitates the quantification of some particular characteristic.", "Of or relating to the metric system of measurement.", "A measure for something."], "transform": ["To change greatly the appearance or form of something or someone."], "manifest": ["To show plainly; to make to appear distinctly,"], "UK": ["A country in Western Europe (comprising Wales, Scotland, England and Northern Ireland) with the capital London."], "dust off": ["To remove solid material divided in particles of very small size to clean something."], "African-American": ["An African-American male."], "nigger": ["An African-American male."], "cruciverbalist": ["A creator of crosswords.", "A fan of crosswords."], "crossword": ["Word puzzle consisting of a grid of black and white squares, where the goal is to fill the white squares with letters, to form words in horizontal and vertical directions that should cross consistently."], "malpractice": ["Improper or unethical conduct by a professional or official person."], "Easter": ["A Christian feast commemorating the Resurrection of Christ; the first Sunday following the full moon that occurs on or next after the vernal equinox."], "entity": ["That which is perceived or known or inferred to have its own distinct existence.", "An organized array or set of individual elements or parts.", "The most generic concept."], "executable": ["A program that can be run standalone without need for any third-party applications."], "insertion": ["The addition or inclusion of a new element."], "summit": ["The highest point of a mountain.", "A meeting between heads of state or high-ranked managers.", "Highest and most elevated point."], "item": ["Each element that can be specified separately in a group of things that could be enumerated on a list."], "vault": ["Structure of cover with surface curve and concavity turned towards the inside of the space to cover.", "A temperature and humidity-controlled environment with fire suppression that will protect the media stored within.", "A secure room or rooms in a financial institution where cash on hand is stored and safe deposit boxes are located."], "brights": ["A powerful lighting device in front of a vehicle used to illuminate the road far ahead."], "bird song": ["The singing of birds."], "Seine": ["The third longest river in France which originates in Burgundy, flows through Troyes, Paris and Rouen and flows into the English Channel."], "Jakarta": ["Capital and largest city of Indonesia, located on the island of Java."], "Djakarta": ["Capital and largest city of Indonesia, located on the island of Java."], "DKI Jakarta": ["Capital and largest city of Indonesia, located on the island of Java."], "emphasis": ["Special importance or significance."], "eligible": ["Meeting the conditions; worthy of being chosen."], "encryption": ["The process of obscuring information to make it unreadable without special knowledge."], "explicit": ["Expressed clearly."], "expression": ["The process of translating a gene into a protein.", "A facial appearance usually associated with an emotion.", "A set of symbols denoting values and operations performed on them.", "A particular way of phrasing an idea."], "spring equinox": ["Moment of the astronomical beginning of spring (northern hemisphere: around March 20th, southern hemisphere: September 23rd) when day and night have approximately the same duration."], "March equinox": ["Moment around March 20th (spring in the northern hemisphere and autumn in the southern hemisphere) when day and night have approximately the same duration."], "vernal equinox": ["Moment of the astronomical beginning of spring (northern hemisphere: around March 20th, southern hemisphere: September 23rd) when day and night have approximately the same duration."], "September equinox": ["Moment around September 23rd (Autum in the northern hemisphere and Spring in the southern hemisphere), when day and night have approximately the same duration."], "exterior": ["Relating to the outside."], "interior": ["Within the confines of a building.", "Relating to the inner part.", "Away from the ocean or from open water.", "What is inside."], "occidental": ["Of, pertaining to, or situated in, the occident."], "western": ["Of, pertaining to, or situated in, the occident."], "oriental": ["Of, pertaining to, or situated in, the orient."], "Mount Fuji": ["The highest mountain in Japan and a well-known symbol of the country."], "calque": ["A compound word or phrase borrowed from another language by literal, \"word-for-word\" or root-for-root translation."], "loan translation": ["A compound word or phrase borrowed from another language by literal, \"word-for-word\" or root-for-root translation."], "equilibrium": ["The condition of a system in which competing influences are balanced.", "The state of being calm, stable and composed, especially under stress."], "eventual": ["Expected to follow in the indefinite future from causes already operating."], "exclusive": ["Excluding items or members that do not meet certain conditions."], "nuclear waste": ["Any waste that emit radiation in excess of normal background level, including the toxic by-products of the nuclear energy industry."], "expense": ["An outgoing payment made by a business or individual."], "Modern Standard Arabic": ["The contemporary, standardized and formal version of the Arabic language, which is used in media and taught in schools all over the Arab world."], "Classic Arabic": ["The liturgical language of the Islam and the language the Qur'an is written in."], "outer space": ["Relatively empty regions (with very small densities) of the universe outside the atmospheres of celestial bodies."], "abolish": ["To cancel or eliminate officially.", "To annul or rescend."], "abortion": ["The interruption of pregnancy (induced or for natural causes).", "The induced termination of a pregnancy, for example through medication or a surgical procedure."], "entertainment": ["A source of amusement, enjoyment or pleasure.", "An activity that is diverting and that holds the attention."], "conceive": ["To become pregnant.", "To have or develop the idea for."], "procreate": ["To become pregnant.", "(especially of a male parent) to procreate or generate."], "convince": ["To make someone believe, or feel sure about something, especially by using logic, argument or evidence."], "estimate": ["A rough calculation or guess.", "To calculate roughly, often from imperfect data."], "Christian": ["Professing the religion that originated in the teachings of Jesus of Nazareth, called Jesus Christ. That belongs to or is characteristic of Christianity.", "A religious person who believes Jesus is the Christ and who is a member of a Christian denomination."], "give up": ["To stop to oppose or resist.", "To put an end to a state or an activity.", "To give up or agree to forgo to the power or possession of another.", "To relinquish possession or control of to another because of demand or compulsion.", "To stop consuming (e.g. alcohol)."], "car wreck": ["A vehicle that has been discarded in the environment, urban or otherwise, often found wrecked, destroyed, damaged or with a major component part stolen or missing."], "politically correct": ["To be intended to provide a minimum of offense to other people, particularly to ethnic and religious groups, social minorities, women and aged or disabled people. It is usually an attribute of language or behavior."], "pc": ["To be intended to provide a minimum of offense to other people, particularly to ethnic and religious groups, social minorities, women and aged or disabled people. It is usually an attribute of language or behavior."], "political correctness": ["The intention to provide a minimum of offense to other people, particularly to ethnic and religious groups, social minorities, women and aged or disabled people. It is usually attributed to language or behavior."], "be fond of": ["To feel affection, tenderness and good for someone or something."], "politically correct language": ["Language that is politically correct, i.e. intended to provide a minimum of offense to other people, particularly to ethnic and religious groups, social minorities, women and aged or disabled people."], "politically-correct language": ["Language that is politically correct, i.e. intended to provide a minimum of offense to other people, particularly to ethnic and religious groups, social minorities, women and aged or disabled people."], "inclusive language": ["Language that is politically correct, i.e. intended to provide a minimum of offense to other people, particularly to ethnic and religious groups, social minorities, women and aged or disabled people."], "afflict": ["To cause great unhappiness for; distress.", "To cause physical pain; to infect with a contagious disease."], "sociolinguistics": ["The scientific study of the way language is used regarding all aspects of society, including cultural norms, expectations, and context. It also studies sociolects, language variants separated by certain social variables, such as ethnicity, religion, status, gender and level of education."], "sociology of language": ["The scientific study of the way language is used regarding all aspects of society, including cultural norms, expectations, and context. It also studies sociolects, language variants separated by certain social variables, such as ethnicity, religion, status, gender and level of education."], "myopic": ["Unable to see distant objects clearly.", "Having restricted or rigid views, and being unreceptive to new ideas."], "enterprise": ["A commercial association of two or more persons, especially when incorporated.", "An organization created for business ventures.", "Willingness to undertake new ventures."], "establishment": ["The ruling class or authority group in a society.", "A place where an activity is accomplished, whether actual, as a pub, or virtual, as a website."], "elite": ["A group or class of persons enjoying superior intellectual or social or economic status."], "equity": ["The ownership interest of shareholders in a corporation.", "Justice, impartiality and fairness.", "A legal tradition that deals with remedies other than monetary relief."], "UTC": ["\"Coordinated Universal Time\" (UTC). A high-precision atomic time standard."], "sugary": ["Containing sugar."], "salty": ["Containing salt.", "Tasting of salt."], "occur": ["(For an event) Have a real existence.", "To meet or come to the mind; to suggest itself;", "To come to pass."], "low-salt": ["Containing few salt."], "low-fat": ["Containing few fat."], "later": ["Afterward in time.", "Coming at a subsequent time or stage."], "volunteer": ["Someone who performs or offers to perform a service out of his own free will, often without payment.", "To do work as a volunteer."], "voltage": ["The amount of electrostatic potential between two points in space. Unit: volt."], "citron": ["The fruit of \"Citrus medica\", a large lemonlike fruit with thick greenish-yellow rind.", "The \"Citrus medica\" tree, a small evergreen tree or shrub."], "citron-water": ["A liquor distilled with the rind and other parts of citrons."], "citron oil": ["An essential oil made from the rind of citrons."], "citrine": ["A translucent yellow variety of quartz resembling topaz."], "tackle": ["To deal with (something unpleasant) head on."], "clutch": ["To grab or take something with a hook, with claws, etc..", "The act of grasping.", "To affect (e.g. of pain, fear, etc.)."], "agricultural": ["Referring to agriculture."], "visitor": ["Someone who pays a visit to a specific place or event."], "series": ["A number of things that follow on one after the other or are connected one after the other.", "A television or radio program which consists of several episodes that are broadcast in regular intervals."], "sequence": ["A number of things that follow on one after the other or are connected one after the other.", "To arrange in an order.", "To determine the order of things."], "sort": ["To arrange in an order.", "Kind of person."], "fasten": ["Tighten and close, for example a belt.", "To make something fixed or stable; to cause to be firmly attached.", "To confine by any ligature."], "loosen": ["To make less tight.", "To make undone or untied; to free from any fastening."], "identify": ["To establish the identity of someone or something.", "To consider two or more things to be equal or the same; to equate two or more things.", "To identify as in botany or biology, for example.", "To consider (oneself) as similar to somebody else.", "To give the name or identifying characteristics of; to refer to by name or some other identifying characteristic property."], "digress": ["To turn aside from the main subject in writing or speaking."], "orangery": ["A building used to store citrus trees in winter."], "chump": ["A person with poor judgment or little intelligence.", "A person who is gullible and easy to take advantage of."], "swing": ["Suspended seat to ropes or chains, on which one can swing for game."], "top-level ontology": ["An ontology limited to concepts that are meta, generic, abstract and philosophical, and therefore general enough to address (at a high level) a broad range of domain areas."], "foundation ontology": ["An ontology limited to concepts that are meta, generic, abstract and philosophical, and therefore general enough to address (at a high level) a broad range of domain areas."], "dutch": ["Relating to the Dutch language"], "elementary": ["Relating to the basic, essential or fundamental part of something."], "band": ["A group of musicians, especially wind and percussion players", "Frequency interval between to defined limits that form part of radio spectrum."], "let": ["To approve a specific action.", "To consent to, to give permission."], "be worth": ["To have a price assigned."], "release": ["To give freedom; to release from confinement or restraint.", "To make publicly available."], "unite": ["To join or unite, as one thing to another, or as several particulars, so as to increase the number, augment the quantity, enlarge the magnitude, or so as to form into one aggregate; to sum up; to put together mentally, as, to add numbers; to add up a column.", "To cause to become joined or linked.", "To bring two or more things or activities together."], "edition": ["The process of printing a number of books struck from one plate, usually at the same time."], "development": ["The act and result of developing.", "An increase in economic and industrial activity."], "speak on the phone": ["To speak with a person by telephone."], "mobile telephony": ["Sound transmission at a great distance by the aid of a mobile phone."], "level": ["A level, usually consisting of several rooms, in a building that consists of several levels.", "A tool for finding whether a surface is level, or for creating a horizontal or vertical line of reference.", "Part or phase of a video game as the total space available to the player during the course of completing a certain objective.", "The same height at all places; parallel to the ground.", "To make a surface level or straight.", "To aim at.", "To tear down so as to make flat with the ground.", "To direct into a position for use (e.g. a gun)."], "death by hanging": ["A death sentence that is to be executed by hanging."], "death sentence": ["The judicially ordered execution of a person as a punishment for a serious crime."], "official language": ["A language that is given legal status in a country. It is the language or one of the languages used in a nation's legislative bodies and official documents."], "entrepreneurship": ["The practice of starting new organizations, particularly new businesses generally in response to identified opportunities."], "song": ["A musical piece with lyrics (or \"words to sing\"); prose that one can sing.", "The act of singing."], "air traffic control": ["A service provided by ground-based controllers who direct aircraft on the ground and in the air."], "ATC": ["A service provided by ground-based controllers who direct aircraft on the ground and in the air."], "get laid": ["To take part in sexual activity (most commonly sexual intercourse) with another person for the purposes of sexual pleasure."], "fuck": ["To take part in sexual activity (most commonly sexual intercourse) with another person for the purposes of sexual pleasure."], "sleep with": ["To take part in sexual intercourse."], "light source": ["Object, natural or artificial, that produces light."], "medical prescription": ["A written description by a physician of medicine and dosage."], "annexation": ["The permanent acquisition and incorporation of some territory into another geo-political entity."], "devastate": ["To destroy completely.", "To cause extensive destruction or ruin utterly."], "striving": ["Strong desire or craving.", "An effortful attempt to attain a goal."], "anteroom": ["Waiting room from which you can enter directly into the reception (in public offices, professional offices, mansions, etc.)."], "peak": ["The most extreme possible amount or value of a condition, feeling, etc.", "Highest and most elevated point."], "strand": ["Each of the strings which, twisted together, make up a rope or cord."], "decode": ["To inversely apply a code to transform something coded into its original, ordinary version.", "To figure out something difficult to interpret."], "decipher": ["To inversely apply a code to transform something coded into its original, ordinary version.", "To figure out something difficult to interpret."], "employee": ["An individual who provides labour to a company or another person for a salary."], "envelope": ["A paper or cardboard wrapper used to enclose small, flat items, especially letters, for mailing."], "editor": ["A person who edits or makes changes to documents, or who has edited a particular document.", "A person at a newspaper or similar institution who edits stories and decides which ones to publish."], "emergency": ["A situation such as a natural or man-made disaster requiring urgent assistance."], "publish": ["To issue a publication."], "emotional": ["Determined or actuated by emotion rather than reason."], "electromagnetic": ["Pertaining to or exhibiting magnetism produced by electric charge in motion."], "literary language": ["A register (style) of a language that is used in writing only. It often differs in lexicon (choice of words) and syntax from the language used in speech."], "written language": ["Language that is written down, as opposed to spoken language."], "enhancement": ["A change that makes something better or more agreeable."], "improvement": ["A change that makes something better or more agreeable."], "spoken language": ["Human natural language, in which the words are uttered through the mouth. The opposites are written language, sign language and nonverbal communication."], "extent": ["The distance or area or volume over which something extends.", "The point or degree to which something extends."], "OmegaWiki": ["A collaborative project to produce a free, multilingual resource in every language, with lexicological, terminological and thesaurus information. It is also the first implementation of Wikidata technology."], "equation": ["A mathematical statement of equality between two expressions."], "algebraic": ["Of, or relating to algebra"], "algebraic equation": ["A mathematical equation in which one or both sides is an algebraic expression."], "mononucleosis": ["Disease caused by the Epstein-Barr virus."], "infectious mononucleosis": ["Disease caused by the Epstein-Barr virus."], "Pfeiffer's disease": ["Disease caused by the Epstein-Barr virus."], "glandular fever": ["Disease caused by the Epstein-Barr virus."], "digression": ["A departure from the subject, course, or idea at hand; an exploration of a different or unrelated concern."], "i18n": ["The process of developing a software product whose core design does not make assumptions based on a locale."], "exotic": ["Strikingly strange or unusual.", "Being or from or characteristic of another place or part of the world."], "embassy": ["A group of people from one nation state present in another nation state to represent the sending state in the receiving state."], "diplomatic mission": ["A group of people from one nation state present in another nation state to represent the sending state in the receiving state."], "equanimity": ["The state of being calm, stable and composed, especially under stress."], "Troy": ["A historic and legendary city and center of the Trojan War, as described in the Iliad."], "Iliad": ["One of two ancient Greek epic poems attributed to Homer. The poem concerns events during the tenth and final year in the siege of the city of Troy."], "extradition": ["A formal process by which a criminal suspect held by one government is handed over to another government for trial or to serve a sentence."], "Odyssey": ["One of two ancient Greek epic poems attributed to Homer. The poem concerns the events that befall the Greek hero Odysseus (or Ulysses) in his long journeys after the fall of Troy and when he at last returns to his native land of Ithaca."], "abandon": ["To give up control of, to surrender.", "To leave behind definitively or with serious consequences or risks.", "To leave someone who needs or counts on you."], "extension": ["A written engagement on the part of a creditor, allowing a debtor further time to pay a debt.", "A computer program that is not useful in its own right but designed to be incorporated in another piece of software.", "The act of extending or the state of being extended"], "resign": ["To accept unwillingly.", "To give up from a job or position.", "To accept as inevitable."], "extend": ["To draw out to greater length.", "To use to the utmost; exert vigorously or to full capacity."], "beg": ["To plead with someone for help or for a favor; to request urgently or persistently.", "To make a request in a humble manner; to call upon in supplication.", "To ask to obtain free."], "implore": ["To humbly plead with someone for help or for a favor."], "weigh": ["To determine the weight of an object."], "camel case": ["The practice of writing compound words or phrases (in Latin script) in which the words are joined without spaces and are capitalized within the compound."], "CamelCase": ["The practice of writing compound words or phrases (in Latin script) in which the words are joined without spaces and are capitalized within the compound."], "medial capitals": ["The practice of writing compound words or phrases (in Latin script) in which the words are joined without spaces and are capitalized within the compound."], "camelBack": ["The practice of writing compound words or phrases (in Latin script) in which the words are joined without spaces and are capitalized within the compound."], "camel caps": ["The practice of writing compound words or phrases (in Latin script) in which the words are joined without spaces and are capitalized within the compound."], "BiCapitalization": ["The practice of writing compound words or phrases (in Latin script) in which the words are joined without spaces and are capitalized within the compound."], "InterCaps": ["The practice of writing compound words or phrases (in Latin script) in which the words are joined without spaces and are capitalized within the compound."], "InfixCaps": ["The practice of writing compound words or phrases (in Latin script) in which the words are joined without spaces and are capitalized within the compound."], "MixedCase": ["The practice of writing compound words or phrases (in Latin script) in which the words are joined without spaces and are capitalized within the compound."], "PolyCaps": ["The practice of writing compound words or phrases (in Latin script) in which the words are joined without spaces and are capitalized within the compound."], "cuisine": ["A specific set of cooking traditions and practices, often associated with a specific culture."], "Japanese cuisine": ["Food items associated with Japanese culture and tradition, and the way of preparing them."], "engineer": ["A person who uses scientific knowledge to solve practical problems."], "endorsement": ["Formal and explicit approval.", "A promotional statement (as found on the dust jackets of books)."], "effective": ["Producing a decided or decisive effect."], "reproach": ["To express criticism towards (someone)."], "Vatican": ["The official residence of the Pope within Vatican City."], "ingredient": ["A food item that is used for cooking a particular dish.", "An abstract part of something.", "Component of other things."], "cooking ingredient": ["A food item that is used for cooking a particular dish."], "cooking": ["The act of preparing a meal."], "cookery": ["A specific set of cooking traditions and practices, often associated with a specific culture.", "The act of preparing a meal."], "power-hungry": ["Having a great desire for power.", "Excessively pursuing power, obsessed with power.", "Consuming a lot of electricity."], "power hunger": ["A great desire for power."], "culinary art": ["A specific set of cooking traditions and practices, often associated with a specific culture.", "The art of creating delicious food that is also pleasing to the eye."], "culinary arts": ["The art of creating delicious food that is also pleasing to the eye."], "excess": ["A quantity much larger than is needed.", "Excessive indulgence in sensual pleasures."], "craving for power": ["A great desire for power."], "rusty": ["Covered with rust."], "artificial": ["Obtained or produced imitating the nature by means of a technical procedure."], "ascribe": ["To attribute or credit to."], "ascend": ["To go up, e.g. by flying or gliding; to travel up.", "To go up to a higher degree or the highest degree."], "otherwise": ["If that is not the case.", "In another way.", "In all other respects.", "Other than supposed."], "cheapen": ["To make cheaper.", "To become cheaper.", "To lower the grade or worth of something."], "shrug": ["A lifting of the shoulders to signal indifference.", "To raise the shoulders to express a lack of knowledge or certainty."], "sacrifice": ["A living creature which is slain and offered as human or animal sacrifice, usually in a religious rite.", "Something surrendered or lost in order to gain an objective.", "To force a serious deprivation.", "To Immolate victims to a deity."], "vicinity": ["A surrounding or nearby region."], "native": ["Characteristic of or relating to people inhabiting a region from the beginning.", "Species that evolved in a particular region or that evolved nearby and migrated to the region without help from humans.", "A descendant of the first known human inhabitants of a region or country.", "Born in a particular place or country."], "negotiate": ["To confer with others in order to come to terms or reach an agreement."], "nurse": ["A woman who watches over someone else's kids usually as a full-time job.", "A person trained to provide care for the sick.", "To maintain (a theory, thoughts, or feelings)."], "nationwide": ["Affecting the whole of a nation."], "program": ["A scheme of action, a method of proceeding, or a series of steps, thought out in advance to accomplish a goal.", "A software application, or a collection of software applications, designed to perform a specific task.", "To enter a program or other instructions into a computer (or other electronic device) to instruct it to do a particular task.", "To arrange the schedule of an event."], "signify": ["To convey (a certain sense), when using some word, sentence, or significant action."], "vegetable garden": ["A patch of land used for the cultivation of vegetables."], "military camp": ["A place where tents, cabins, or other temporary structures are erected for the use of military troops, for training soldiers, etc."], "fall asleep": ["To go to sleep; to change from waking state to sleeping state."], "lottery": ["A form of gambling which involves the drawing of lots for a prize."], "leak": ["An accidental hole that allows something to enter or escape.", "To have an opening allowing a fluid to enter or escape where it shouldn't.", "To reveal information that is supposed to be kept secret.", "A person who reveals information that is supposed to be kept secret.", "To accidentally lose liquid because of, for example, a hole or crack or fissure.", "Unauthorized (especially deliberate) disclosure of confidential information."], "exit": ["To cease to live.", "Gimmick or ploy to escape a situation that is unfavorable, difficult or dangerous.", "To move out of or depart from.", "To go away from a place; to leave.", "A passage or gate from inside someplace to the outside, that permits escape or release.", "To go out of a closed place.", "The act of going out."], "reveal": ["To have somebody see something.", "To uncover; to show and display that which was hidden.", "To make known something heretofore kept secret."], "divulge": ["To make known or public.", "To uncover; to show and display that which was hidden."], "turn out": ["Having a specific result, a logical consequence."], "bearded": ["Having a beard."], "logical": ["Capable of or reflecting the capability for correct and valid reasoning."], "liberal": ["Generous in quantity.", "Favoring social freedom; permissive."], "literally": ["In the direct, word for word sense."], "lucrative": ["Producing a sizeable profit."], "profitable": ["Producing a sizeable profit.", "Productive, conducive, helpful or good to something or someone."], "exception": ["An instance that does not conform to a rule or generalization."], "experimental": ["Relating to or based on experiments."], "ethical": ["In accordance with the accepted principles of right and wrong."], "extraordinary": ["Highly unusual or exceptional or remarkable."], "emulation": ["Technique of one machine or program to obtain the same results as another."], "excitement": ["The feeling of lively and cheerful joy.", "The state of being emotionally aroused and worked up."], "exhilaration": ["The feeling of lively and cheerful joy."], "executive": ["A person responsible for the administration of an organisation.", "The Cabinet and the Government Departments and agencies for which they are responsible and which carry out the day-to-day functions of Government.", "Someone who manages a government agency or department."], "Positano": ["City on the Amalfi Coast, province of Salerno, region Campania, Italy."], "Amalfi": ["City on the Amalfi Coast, province of Salerno, region Campania, Italy."], "workstation": ["A personal computer, normally more powerful than a normal PC and often dedicated to a specific task, such as graphics."], "dengue fever": ["A viral infection cause by a virus of the genus Flavivirus, transmitted to humans by the Aedes aegypti mosquito, and endemic to tropical countries."], "worksheet": ["A single spreadsheet that contains rows and columns of data.", "A piece of paper recording work planned or done on a project."], "wound": ["A type of injury in which in skin or tisue is torn, cut, punctured or otherwise hurt.", "To cause physical harm to a living creature."], "legitimate": ["Accordant with law.", "To make in accordance with the law.", "Born of legally married parents.", "Conforming to, permitted by, or recognised by law or rules."], "earning": ["Payment accrued over a period."], "illegitimate": ["Born of parents not legally married to each other."], "Cetara": ["City on the Amalfi Coast, province of Salerno, region Campania, Italy."], "tunafish": ["Several species of ocean-dwelling fish in the family Scombridae, mostly in the genus Thunnus."], "shark": ["A scaleless fish with a cartilaginous skeleton that has 5 to 7 gill slits on each side of its head."], "northern bluefin tuna": ["(Thunnus thynnus) Species of tuna fish, living in both the Western and the Eastern Atlantic Ocean and extending into the Mediterranean Sea and the Black Sea."], "influence": ["To be of (some) importance, to influence something or someone (enough), to impress, to touch.", "The power to affect, control or manipulate something or someone.", "A cognitive phenomenon that tends to affect the nature, the magnitude, and/or the timing of a consequence.", "The effect of one thing (or person) on another.", "To have and exert influence or effect."], "wiring": ["A circuit of wires for the distribution of electricity."], "wealthy": ["Having a lot of material wealth.", "Having a lot of money and possessions."], "influenza": ["An acute contagious disease of the upper airways and lungs, caused by a virus, which rapidly spreads around the world in seasonal epidemics."], "flu": ["An acute contagious disease of the upper airways and lungs, caused by a virus, which rapidly spreads around the world in seasonal epidemics."], "identification": ["A document or documents serving as evidence of a person's identity."], "incumbent": ["Being the current holder of an office.", "The official who holds an office."], "officeholder": ["The official who holds an office."], "ration": ["A portion designated to a person or group."], "vanishing point": ["In a perspective drawing the point where all straight lines which run parallel in reality intersect."], "engender": ["To become pregnant.", "To bring into existence."], "invoke": ["To conjure up with incantations.", "To cause a program or subroutine to execute.", "To summon into action or bring into existence."], "adhere": ["To be a member o a political party or a social group.", "To be consistent or coherent; to be compatible or in accordance (e.g. with rules); to agree.", "To follow through or carry out a plan without deviation.", "To come or be in close contact with; to stick or hold together and resist separation.", "To stick to firmly."], "fundamental": ["Involving basic facts or principles."], "festival": ["An organised series of acts and performances.", "Manifestation of collective joy, lasting longer than a few minutes."], "military": ["The military units of a state, typically divided by their differing contexts of operations, such as the army, navy, air force and marines.", "Concerning war or army."], "fracture": ["The separation of a body into two, or more, pieces under the action of stress.", "The breaking of hard tissue such as bone.", "To break a hard tissue such as a bone."], "franchise": ["The authorisation granted by a company to sell or distribute its goods or services in a certain area."], "benchmark": ["A standard by which something is evaluated or measured."], "Brazilian": ["A person from Brazil or of Brazilian descent.", "Of or pertaining to Brazil or its inhabitants."], "iron rod": ["A bar or rod made of iron. May constitute a part of an object, a tool, a machine, etc."], "bomb attack": ["An attempt to harm someone or something with a violent act using dynamite or bombs."], "subtract": ["To take one thing from another.", "To find the difference between two quantities."], "speed camera": ["Device that is used to control the speed of vehicles, consisting of a radar which measures the speed and a photo camera"], "canny": ["Wise and considered."], "institute": ["An organization founded to promote a cause.", "To set up or lay the groundwork for.", "To set up or found; to begin something, to undertake a plan, to give life to an institution, enterprise, etc.", "To advance or set forth in court (e.g. charges or proceedings)."], "individual": ["A human being.", "A person considered alone, rather than as belonging to a group of people.", "Relating to a single person or thing as opposed to more than one."], "indication": ["A symptom or condition that indicates a necessity of a specific medical treatment or procedure.", "Anything serving to indicate or point out, as a sign or token."], "independence": ["Freedom from control or influence of another or others."], "participate": ["To join in, to take part, to involve oneself."], "monosemous": ["Having only one meaning."], "polysemous": ["Having multiple meanings."], "succeed": ["To attain a desired goal.", "To be the successor of."], "gloss": ["An explanation or definition of an obscure word in a text."], "wrap": ["To surround on all sides by creating a cover or protection."], "gamble": ["Participate in games of chance, betting of money in doing so", "A risky venture with an uncertain outcome."], "stronghold": ["An embankment built around a space for defensive purposes."], "precipice": ["The inclined surface of any part of the Earth's surface, as a hillslope; also, a broad part of a continent descending toward an ocean, as the Pacific slope.\\n(Source: BJGEO)", "A deep, steep-sided rift.", "Very precarious and risky situation."], "Birmingham": ["A city and metropolitan borough in the West Midlands, England."], "bilateral": ["Involving both sides equally."], "bonus": ["A payment in addition to the amount contracted for."], "bullet": ["A projectile, usually of metal, shot from a gun at high speed."], "briefing": ["Detailed instructions given ahead of an operation."], "maintain": ["To keep in good condition.", "To say definitely and categorically.", "To stay faithful to (an opinion, a belief, etc.).", "To remain in a certain state, position, or condition."], "orchestra": ["A large group of musicians who play together on various instruments."], "obsolete": ["No longer in use.", "No longer in use by preference because of something newer, which has replaced the subject."], "self-portrait": ["Portrait which depicts the artist himself."], "make an appointment with": ["To set a rendezvous."], "ruling party": ["A party that is in power in a given country, usually through a majority in parliament, or as part of the ruling coalition."], "notable": ["Worthy of notice."], "party in power": ["A party that is in power in a given country, usually through a majority in parliament, or as part of the ruling coalition."], "governing party": ["A party that is in power in a given country, usually through a majority in parliament, or as part of the ruling coalition."], "opposition party": ["A political party that is not in power and that follows an agenda opposed to the government or ruling party."], "bird brain": ["A person with poor judgment or little intelligence."], "not the sharpest tool in the shed": ["A person with poor judgment or little intelligence."], "idiot": ["A person with poor judgment or little intelligence."], "foolishness": ["The quality or state of being silly."], "Taiwanese": ["A dialect of Min Nan Chinese (or Fujian dialect), spoken by about 70% of Taiwan's population."], "Fujian dialect": ["The language of the southern Fujian province of China."], "Holo language": ["A dialect of Min Nan Chinese (or Fujian dialect), spoken by about 70% of Taiwan's population."], "Taiwanese language": ["A dialect of Min Nan Chinese (or Fujian dialect), spoken by about 70% of Taiwan's population."], "gene pool": ["The total number of genes or the amount of genetic information possessed by all the reproductive members of a population of sexually reproducing organisms."], "aviation": ["Flying using aircraft (machines designed by humans for atmospheric flight), as well as the activities, industries, and regulatory bodies associated with aircraft."], "implication": ["The associated or secondary meaning of a word or expression in addition to its explicit or primary meaning.", "Something that is inferred."], "claustrophobia": ["An irrational or obsessive fear of enclosed or confined spaces."], "indeed": ["As an actual or existing fact.", "In truth.", "An indication of agreement, surprise, skepticism or irony."], "obviously": ["In a obvious manner; clearly apparent."], "\u00e9clair": ["Oblong cream puff."], "grass snake": ["Non-poisonous snake of the genus Natrix (Natrix natrix) common near waters."], "IT": ["The systems, equipment, components and software required to ensure the retrieval, processing and storage of information in all centres of human activity (home, office, factory, etc.), the application of which generally requires the use of electronics or similar technology."], "crossroads": ["A place where several roads meet."], "armoured car": ["An armor-plated vehicle with strong doors and locks used to transport money or valuables."], "technical support": ["A range of services providing assistance with computer hardware, software, or other electronic or mechanical goods. They help the user solve specific problems with a product."], "bubble": ["A hollow globule of gas (e.g., air or carbon dioxide) produced in a liquid.", "To form, produce, or emit bubbles."], "bill": ["Sum owed in a restaurant, or the relative bill.", "A commercial document issued by a seller to the buyer, indicating products or services already provided to the buyer as well as the corresponding price that the buyer has to pay.", "Proposed law presented to the parliament for approval.", "External anatomical structure of birds which is used for taking food and for eating.", "Credit account, e.g., in a shop or bar.", "To demand payment."], "tech support": ["A range of services providing assistance with computer hardware, software, or other electronic or mechanical goods. They help the user solve specific problems with a product."], "telecommunication": ["The conveyance of images, speech and other sounds, usually over great distances, through technological means, particularly by television, telegraph, telephone or radio."], "feral": ["(For a domesticated animals) Having returned to the wild."], "shred": ["A small or barely detectable amount."], "company": ["A commercial association of two or more persons, especially when incorporated."], "venture": ["A commercial association of two or more persons, especially when incorporated.", "To make a resolution to do something and to begin to do it."], "rein": ["Each of the two leather straps that attach to the bite of the horse to lead it."], "design": ["The visual representation of a person or an object.", "To lay out or plan.", "To make or work out a plan for; devise.", "To assign for a specific end, use, or purpose; to design or destine.", "To make a (graphic) design of.", "The way in which something is composed, shaped, or made."], "buzz": ["Indefinite and subdued noise."], "drone": ["Indefinite and subdued noise.", "A male bee or wasp, which does not work but can fertilise the queen.", "A remotely controlled, unmanned aircraft."], "excavation": ["The removal of earth from its natural position.\\n(Source: HARRIS)"], "earthworks": ["The removal of earth from its natural position.\\n(Source: HARRIS)"], "plumbing equipment": ["Plumbing equipment in a building.\\n(Source: RRDA)"], "eye ball": ["The part of the eye having a spherical shape."], "bolt": ["To leave suddenly and as if in a hurry."], "plumbing fixtures": ["Plumbing equipment in a building.\\n(Source: RRDA)"], "common sense": ["Sound practical judgment."], "invasion": ["A military action consisting of armed forces of one geopolitical entity entering territory controlled by another such entity.", "Any entry into an area not previously occupied.", "The spread of pathogenic microorganisms or malignant cells to new sites in the body."], "callous": ["Having calluses; having skin made tough and thick through wear."], "skullcap": ["The top part of the skull."], "championship": ["A sport contest or series of contests in which the aim is to decide which individual or team is the champion."], "digging": ["The removal of earth from its natural position.\\n(Source: HARRIS)"], "personify": ["To be an example of; to have all the attributes of."], "interpret": ["To change a written or spoken text from one language to another.", "To explain or tell the meaning of.", "To give the meaning or intention of."], "archbishopric": ["Diocese administered by an archbishop."], "value": ["Any admirable quality or attribute.", "To view as valuable.", "The appreciation of something.", "To place a value on.", "The amount (of money or goods or services) that is considered to be a fair equivalent for something else"], "thank": ["To express gratitude or appreciation to someone."], "lay off": ["To terminate the employment of one or more employees.", "To put an end to a state or an activity."], "computer course": ["A series of training classes on how to use a computer"], "PC course": ["A series of training classes on how to use a computer"], "PC lessons": ["A series of training classes on how to use a computer"], "computer lessons": ["A series of training classes on how to use a computer"], "PC tutorial": ["A series of training classes on how to use a computer"], "computer tutorial": ["A series of training classes on how to use a computer"], "network installation": ["The creation of a computer network by running cables, placing routers and switches, setting up servers, installing software etc."], "web browser": ["A software application used to locate and display Web pages."], "troubleshooting": ["A form of problem solving; the systematic search for the source of a problem so that it can be solved, eliminating potential causes of a problem (in IT system administration and electronics)"], "problem solving": ["A form of problem solving; the systematic search for the source of a problem so that it can be solved, eliminating potential causes of a problem (in IT system administration and electronics)"], "ISP": ["A business or organization that supplies connections to a part of the Internet, often through telephone lines."], "Internet access provider": ["A business or organization that supplies connections to a part of the Internet, often through telephone lines."], "graphic": ["Written, drawn or engraved.", "Any illustrative element in a page layout, such as a photograph, illustration, icon, ruled line, or any other non-text element."], "insufficient": ["Inappropriate for a particular purpose or aim."], "grocery": ["Retail foodstuffs and other household supplies.", "A shop or store that sells groceries."], "say goodbye": ["a conventional action used at leave-taking or parting with people."], "Internet connection": ["The connection of a PC or other device to the Internet."], "guerrilla": ["A soldier in a small independent group fighting against the government or regular forces by surprise raids."], "Internet service provider": ["A business or organization that supplies connections to a part of the Internet, often through telephone lines."], "homepage creation": ["The creation of a homepage to represent oneself on the World Wide Web, for private purposes or a small business"], "assail": ["To hit with violence.", "To attack someone physically or emotionally."], "garage": ["A building, or a section of a building, used to store a car, tools and other miscellaneous items."], "web design": ["The design of web pages, websites and web applications using HTML, CSS, images, and other media; the creation of web content."], "website design": ["The design of web pages, websites and web applications using HTML, CSS, images, and other media; the creation of web content."], "cartilage": ["A type of dense connective tissue."], "web development": ["A broad term that incorporates all areas of developing a web site for the World Wide Web."], "network administration": ["Maintaining the hardware and software that comprises a computer network, monitoring traffic and ensuring data security."], "dedicate": ["To set apart for a special use", "To give entirely to a specific person, activity, or cause.", "To commit (oneself) to a particular course of thought or action."], "guidance": ["Something that provides direction or advice as to a decision or course of action."], "blindness": ["The condition of being unable to see."], "Tramonti": ["City in the province of Salerno, region Campania, Italy."], "determine": ["To spot, detect, recognize, capture, or see something or someone having been unknown, invisible, obscured, too distant, or otherwise not found before.", "To reach, make, or come to a decision about something.", "To set the limits of.", "To establish after a calculation, investigation, experiment, survey, or study."], "infer": ["To reach a conclusion by applying rules of logic to given premises.", "To conclude by reasoning or deduction, as from premises or evidence."], "deteriorate": ["To put a thing in bad condition by making it suffer some damage.", "To make inferior in quality or value."], "belong": ["Being the legitimate property of someone, regardless of whether or not the thing is in the owner's possession.", "To be a part of..."], "accustom": ["To make psychologically or physically used (to something)."], "narrate": ["To relate a story or series of events by speech or writing.", "To talk about a story giving its details; to give a detailed account of."], "contradict": ["To declare someone's opinion untrue; to assert the opposite."], "unified": ["Associated to make into a unit or coherent whole."], "utility": ["An enterprise concerned with the provision to the public of essentials, such as electricity or water.\\n(Source: CED)", "The ability of a commodity to satisfy needs or wants."], "oblige": ["To exert force or authority to force someone to do something."], "divide": ["To divide fully or partly along a more or less straight line.", "To split or separate something into two or more parts."], "constitute": ["To set up or lay the groundwork for.", "To be the material or components of.", "To set up or found; to begin something, to undertake a plan, to give life to an institution, enterprise, etc."], "celebrate": ["To behave as expected during holidays or rites.", "To have a celebration."], "IT introduction": ["Bringing an information technology system into use for the first time at a certain place, such as a company."], "Asymmetric Digital Subscriber Line": ["A form of DSL, a data communications technology that enables fast data transmission over copper telephone lines. It does this by utilizing frequencies higher than normal human hearing, that are not used by a voice telephone call. Contrary to other forms of DSL the volume of data flow is greater in one direction than the other, i.e. it is asymmetric."], "ADSL": ["A form of DSL, a data communications technology that enables fast data transmission over copper telephone lines. It does this by utilizing frequencies higher than normal human hearing, that are not used by a voice telephone call. Contrary to other forms of DSL the volume of data flow is greater in one direction than the other, i.e. it is asymmetric."], "Asymmetric Digital Subscriber Loop": ["A form of DSL, a data communications technology that enables fast data transmission over copper telephone lines. It does this by utilizing frequencies higher than normal human hearing, that are not used by a voice telephone call. Contrary to other forms of DSL the volume of data flow is greater in one direction than the other, i.e. it is asymmetric."], "PRC": ["Official name of the East-Asian country popularly known as China (since 1949)."], "clobber": ["To strike or hit somebody heavily and repeatedly."], "lick": ["To pass the tongue over (something), typically for tasting, moistening, or cleaning.", "Passing the tongue over."], "Berbice Creole Dutch": ["A creole language spoken on the coast of Guyana based on Sealandish."], "heroin": ["A powerful and addictive drug derived from opium producing intense euphoria classed as a narcotic in most of the world."], "heroine": ["A feminine person who serves as a example of positive behavior, especially in some specific field."], "web server": ["A computer that is responsible for accepting HTTP requests from clients, which are known as Web browsers, and serving them HTTP responses along with optional data contents, which usually are Web pages such as HTML documents and linked objects (images, etc.)."], "Web server": ["A computer that is responsible for accepting HTTP requests from clients, which are known as Web browsers, and serving them HTTP responses along with optional data contents, which usually are Web pages such as HTML documents and linked objects (images, etc.)."], "WWW server": ["A computer that is responsible for accepting HTTP requests from clients, which are known as Web browsers, and serving them HTTP responses along with optional data contents, which usually are Web pages such as HTML documents and linked objects (images, etc.)."], "WWW": ["A graphical, interactive, hypertext information system that is cross-platform and can be run locally or over the global Internet. The Web consists of Web servers offering pages of information to Web browsers who view and interact with the pages. Pages can contain formatted text, background colors, graphics, as well as audio and video clips."], "hierarchy": ["Any group of objects ranked so that every one but the topmost is subordinate to a specified one above it.", "The organization of people at different ranks in an administrative body."], "honest": ["Not disposed to cheat or defraud."], "Hispanic": ["Pertaining to a Spanish-speaking people or culture.", "A person residing in the United States of Spanish descent, generally but not always exclusive of Portuguese-speaking Brazilians."], "harm": ["Psychological or emotional damage or injury caused to a person, animal or other entity."], "human": ["A member of the human species.", "Any living or extinct member of the family Hominidae characterized by superior intelligence, articulate speech, and erect carriage."], "Japanese food": ["Food items associated with Japanese culture and tradition, and the way of preparing them."], "secret": ["Being or kept hidden from public perception.", "Expressly designed to elude detection.", "Something that shall remain unknown or unseen to others."], "Volap\u00fck": ["An artificial language created in 1880 by Johann Martin Schleyer."], "upright": ["In an angle of 90\u00b0 to the ground.", "Of moral excellence."], "vertical": ["In an angle of 90\u00b0 to the ground."], "perpendicular": ["In an angle of 90\u00b0 to the ground."], "gateway": ["An entrance capable of being blocked by use of a gate.", "A node that serves as an entrance to another network."], "salary": ["A fixed amount of money paid to a worker, usually measured on a monthly or annual basis."], "submit": ["To accept unwillingly.", "To refer for judgement or consideration.", "To put somebody under one's authority.", "To put before.", "To accept as inevitable."], "melee weapon": ["A weapon that is held in the hand of the combatant and that is used to hit the enemy in close combat; a weapon that is not thrown and that does not fire a projectile."], "m\u00eal\u00e9e weapon": ["A weapon that is held in the hand of the combatant and that is used to hit the enemy in close combat; a weapon that is not thrown and that does not fire a projectile."], "cold weapon": ["A weapon that does not involve fire or explosions, as in firearms and cannons. The category includes all melee weapons and some ranged weapons such as bows."], "edged weapon": ["A melee weapon that uses an edge or point to increase the user's pressure by concentrating the applied force onto a smaller surface area. Examples are swords, spears, axes and knives."], "hunting weapon": ["A weapon that is used for hunting animals."], "blunt weapon": ["A melee weapon that relies solely on mass and raw impact energy to disable opponents through broken bones, internal trauma or concussions. Examples are clubs, maces and flails."], "political": ["Part of or related to politics."], "political science": ["The scientific field concerned with theory and practice of politics and the description and analysis of political systems and political behaviour."], "operating system": ["A set of computer programs that provides basic functionality, manages the hardware and software resources of a computer, and serves as a platform for all application software."], "OS": ["A set of computer programs that provides basic functionality, manages the hardware and software resources of a computer, and serves as a platform for all application software."], "human resources": ["The department of a firm that deals with hiring, firing, and training employees, and other personnel issues."], "department": ["A section of a large organization, such as a government, a company, a university etc."], "HR": ["The department of a firm that deals with hiring, firing, and training employees, and other personnel issues."], "personnel department": ["The department of a firm that deals with hiring, firing, and training employees, and other personnel issues."], "node": ["A point at which two lines of a network cross, or which connects two networks.", "Any computer that is hooked up to a computer network.", "The small swelling that is the part of a plant stem from which one or more leaves emerge.", "A connecting point at which several lines come together.", "Any thickened enlargement.", "The point of minimum displacement in a periodic system.", "A point where an orbit crosses a plane.", "Any bulge or swelling of an anatomical structure or part.", "The source of lymph and lymphocytes."], "stringent": ["Demanding a precise attention to rules and procedures.", "Manifesting, exercising, or favoring rigor."], "strict": ["Demanding a precise attention to rules and procedures.", "Severe and unremitting in making demands.", "Incapable of compromise or flexibility.", "Rigidly accurate; allowing no deviation from a standard.", "(of rules) stringently enforced."], "suspend": ["To discontinue or interrupt a function, task, position, event or service."], "social class": ["A social group of persons of the same economic and professional condition."], "faggot": ["Offensive term for an openly, often effeminate, homosexual man."], "buttock": ["One of the two fleshy body parts, which are located at the upper end of the limbs at the rear part of the body."], "HD": ["Ferromagnetic computer storage device which writes binary data on the surface of a rotating platter.", "A chronic infectious disease caused by the bacteria Mycobacterium leprae and Mycobacterium lepromatosis which causes permanent damage to the skin, nerves, limbs and eyes if left untreated."], "swan": ["A large aquatic bird with white feathers and a long, sinuous neck.", "To declare or affirm solemnly and formally as true."], "safety belt": ["A belt or a set of belts used to secure the passengers of a car or a plane to their seat."], "video card": ["A piece of PC hardware whose function it is to generate and output images to a display. It has the form of an expansion card that is plugged into the motherboard."], "graphics accelerator card": ["A piece of PC hardware whose function it is to generate and output images to a display. It has the form of an expansion card that is plugged into the motherboard."], "graphics card": ["A piece of PC hardware whose function it is to generate and output images to a display. It has the form of an expansion card that is plugged into the motherboard."], "computer storage": ["Computer components, devices and recording media that retain data for some interval of time."], "computer memory": ["Computer components, devices and recording media that retain data for some interval of time."], "motherboard": ["The primary circuit board making up a complex electronic system, such as a modern computer."], "mainboard": ["The primary circuit board making up a complex electronic system, such as a modern computer."], "system board": ["The primary circuit board making up a complex electronic system, such as a modern computer."], "logic board": ["The primary circuit board making up a complex electronic system, such as a modern computer."], "consonant verb": ["One of the verb types of the modern Japanese language. When they are conjugated, the flexible stem ending can take all of the five columns of the Hiragana 50-sounds-table (a-e-i-o-u). In Latin script, these verbs have a fixed stem that ends in a consonant."], "vowel verb": ["One of the verb types in the modern Japanese language. When conjugated, their stem always ends in -e or -i, and instead of inflecting forms are built with the suffixes -ra, -ru, -re or -ro."], "computer virus": ["Computer program that is designed to damage a computer and that is able to spread itself to other computers."], "application": ["Software that has the scope to solve a specific problem.", "The action of applying something, such as paint on a surface."], "app": ["Software that has the scope to solve a specific problem."], "software application": ["Software that has the scope to solve a specific problem."], "World Day for Water": ["A United Nations observance that occurs each year on March 22 since 1993 and that is designated to raise awareness for worldwide problems concerning water."], "World Water Day": ["A United Nations observance that occurs each year on March 22 since 1993 and that is designated to raise awareness for worldwide problems concerning water."], "optimum": ["Most favourable condition or greatest degree or amount possible under given circumstances."], "outline": ["To bring information in fewer words; to describe roughly or briefly.", "What is being told in a clear and orderly manner.", "A general description of some subject.", "A line marking the boundary of an object figure.", "A schematic or preliminary plan.", "To draw up an outline or sketch for something.", "To trace the shape of."], "undertake": ["To make a resolution to do something and to begin to do it."], "officer": ["Any person in the armed services who holds a position of authority or command."], "objective": ["Not influenced by the emotions or prejudices.", "The lens of an optical instrument that is the closest to the object being observed.", "The goal intended to be attained (and which is believed to be attainable)."], "resignation": ["A written or oral declaration that one resigns.", "The act of voluntarily quitting one's job."], "overtime": ["The working time outside of one's regular hours."], "opposition": ["A contestant that you are matched against.", "The relative position of two celestial bodies when they have an angular distance of 180 degrees"], "Orleans": ["One of the most important families in the history of France.", "A city and commune in north-central France, about 130 km (80 miles) southwest of Paris."], "central processing unit": ["The central component in a computer that interprets program instructions and processes data."], "processor": ["The central component in a computer that interprets program instructions and processes data."], "CPU": ["The central component in a computer that interprets program instructions and processes data."], "IT security": ["The field dealing with security issues connected to computers, such as privacy protection and measures against manipulation, data theft and sabotage."], "computer security": ["The field dealing with security issues connected to computers, such as privacy protection and measures against manipulation, data theft and sabotage."], "protection": ["A thing that protects somebody or something against harm, injury or danger.", "The act of protecting somebody or something.", "Kindly endorsement and guidance.", "The state of being safe.", "A measure against contraception or sexually transmitted disease.", "Money paid for a guarantee against threatened violence by the person or organization receiving the payment.", "Restrictions on foreign competitors that limit their ability to compete with domestic producers of goods or services.", "An instance of a security token associated with a resource (such as a file.)", "The action of attempting to preserve certain species or habitats through rules or laws governing access, collecting, hunting, etc.", "An amount of money by which something or someone is protected from a loss through an insurance contract.", "Introducing a group into a molecule to protect a part of that molecule in a chemical reaction.", "A shielding or protection against the unpleasant, unwanted, or dangerous."], "device driver": ["A program that manages the interaction between the operating system and a hardware device."], "software driver": ["A program that manages the interaction between the operating system and a hardware device."], "write a program": ["To enter a program or other instructions into a computer (or other electronic device) to instruct it to do a particular task."], "hack": ["To enter a program or other instructions into a computer (or other electronic device) to instruct it to do a particular task."], "write code": ["To enter a program or other instructions into a computer (or other electronic device) to instruct it to do a particular task."], "programming language": ["An artificial language that is used to control the behavior of a machine, particularly a computer."], "software developer": ["A person who creates or modifies computer software."], "proxy server": ["A server that allows clients to make indirect connections to other servers and networks. It provides the resource either by connecting on its own or by serving data from a cache."], "proxy": ["A server that allows clients to make indirect connections to other servers and networks. It provides the resource either by connecting on its own or by serving data from a cache."], "WAN": ["A system of interrelated computer and telecommunications devices linking two or more computers separated by a great distance for the exchange of electronic data.\\n(Source: WIC)"], "local area network": ["A computer network covering a small geographic area, like a home, office, or group of buildings."], "LAN": ["A computer network covering a small geographic area, like a home, office, or group of buildings."], "local network": ["A computer network covering a small geographic area, like a home, office, or group of buildings."], "official": ["Made or communicated by virtue of authority.", "An employee of the public authorities who acts in an official capacity and with certain powers and authorities.", "Characteristic of or befitting a person in authority."], "oral": ["Spoken rather than written."], "outdoor": ["Located, suited for, or taking place in the open air."], "boiling": ["The action of heating a liquid to a temperature where it becomes a gas.", "That boils (e.g. of a container or liquid)."], "semantic web": ["A net of interdependent concepts where the dependencies are classified into distinct types with specific interpretations."], "ufology": ["Study of unidentified flying objects (UFO)."], "ufologist": ["A person who studies unidentified flying objects (UFO)."], "metropolitan": ["Relating to or characteristic of a metropolis.", "In the Eastern Orthodox Church a title given to a position between bishop and patriarch; equivalent to archbishop in western Christianity.", "Related to the (any) city."], "Pulaar": ["A Fula language spoken in Western Africa primarily as a first language by the Fula people and Tukulor in the Senegal River valley area."], "fresh snow": ["Freshly fallen snow."], "sleet": ["Precipitation that consists in a mix of snowflakes and raindrops."], "sahara": ["The largest arid desert on Earth, situated in Africa"], "frugal": ["Avoiding waste."], "economical": ["Avoiding waste."], "promote": ["To help to advance (in terms of knowledge).", "To attempt to popularize or sell a product by advertising or publicity.", "To advocate or urge the adoption of something.", "To raise someone to a more important, responsible or better paid job or rank."], "pregnant": ["Carrying developing offspring within the body."], "expecting": ["Carrying developing offspring within the body."], "gravid": ["An animal carrying developing offspring within the body."], "slavery": ["A state characterized by lack of freedom and rights and complete dependency on another person.", "The practice of keeping slaves."], "slave owner": ["Someone who owns slaves."], "slaveholder": ["Someone who owns slaves."], "smoking pipe": ["A device consisting of a mouthpiece, a long pipe stem and a pipe bowl, that is used to smoke tobacco."], "bald": ["Without hair on the head.", "To lose one's hair on the head."], "sociolect": ["The language spoken by a social group, social class or subculture."], "paranormal": ["Unexplainable by science or reason; seeming to involve mysterious forces."], "supernatural": ["Unexplainable by science or reason; seeming to involve mysterious forces."], "gastric juice": ["The acidic secretion of the stomach; mostly hydrochloric acid."], "cod liver oil": ["An oil extracted from cod livers."], "High German": ["A linguistic general term for the High German languages and dialects, as opposed to Lower German."], "arithmetician": ["An expert at calculation", "Someone who specializes in arithmetic."], "isogloss": ["The geographical boundary of a certain linguistic feature, e.g. the pronunciation of a vowel, the meaning of a word, or use of some syntactic feature."], "dialectology": ["A sub-field of linguistics that studies variations in language based primarily on geographic distribution."], "current account": ["A bank account which relates to the everyday financial transactions of an individual."], "typography": ["The art and techniques of printing, particularly type design, modifying type glyphs, and arranging type."], "action committee": ["A collection of persons united to address specific sociopolitical or socioeconomic concerns."], "line-fishing": ["The art or sport of catching fish with a rod and line and a baited hook or other lure, such as a fly."], "deduce": ["To reach a conclusion by applying rules of logic to given premises."], "impartial": ["Treating all rivals or disputants equally."], "tubular": ["Of or pertaining to a tube; formed by tubes.", "Shaped like a tube"], "Californian": ["Of or pertaining to California or its inhabitants."], "Canadian": ["Of or pertaining to Canada or its inhabitants.", "A person of Canadian nationality."], "acquired immunity": ["The body's ability to fight or prevent a specific infection. This\\nability can be acquired either actively (by having and recovering from an infection or by being vaccinated against an infec\\ntion) or passively (by receiving antibodies from an outside\\nsource, such as from breast milk or donated blood components). (Source: AIDSinfo)"], "active immunity": ["Protection from a specific infection that develops after having and recovering from the infection or being vaccinated against the infection."], "cell-mediated immunity": ["Immune protection provided by the direct action of immune cells. The main role of cell-mediated immunity is to fight viral infections."], "cellular immunity": ["Immune protection provided by the direct action of immune cells. The main role of cell-mediated immunity is to fight viral infections."], "cerebrospinal fluid": ["A clear, colorless fluid that fills the spaces in the brain and the\\ncentral canal of the spinal cord, as well as the spaces between\\nnerve cells."], "antigen": ["Any substance that can stimulate the body to produce antibodies against it. Antigens include bacteria, viruses, pollen, and other foreign materials. (source AIDSinfo)"], "cervix": ["The lower, narrow end of the uterus that forms a canal between the uterus and vagina."], "chemotherapy": ["Treatment using anti-cancer drugs, which kill or prevent the growth and division of cells."], "AIDS-defining condition": ["Any of a list of illnesses that, when occuring in an HIV-infected\\nperson, leads to a diagnosis of AIDS, the most serious stage\\nof HIV infection.\\n(source AIDSinfo)"], "alkaline phosphatase": ["An enzyme normally present in certain cells within the liver,\\nbone, kidney, intestine, and placenta. When cells are destroyed\\nin those tissues, the enzyme leaks into the blood, and levels rise\\nin proportion to the severity of the condition. Measurement of\\nthis enzyme is one way to evaluate the health of the liver.\\n(source: AIDSinfo)"], "anaphylactic shock": ["A rare but life-threatening whole-body allergic reaction. Symptoms may appear quickly and include difficulty breathing, swelling of the throat or\\nother parts of the body, rapid drop in blood pressure, dizzi\\nness, or unconsciousness. Anaphylaxis can be triggered by\\nfoods, drugs, insect stings, or exertion.\\n(source: AIDSinfo)"], "anaphylaxis": ["A rare but life-threatening whole-body allergic reaction. Symptoms may appear quickly and include difficulty breathing, swelling of the throat or\\nother parts of the body, rapid drop in blood pressure, dizzi\\nness, or unconsciousness. Anaphylaxis can be triggered by\\nfoods, drugs, insect stings, or exertion.\\n(source: AIDSinfo)"], "anemia": ["A lower than normal number of red blood cells."], "anorexia": ["Lack or loss of appetite.", "A psychiatric diagnosis that describes an eating disorder characterized by low body weight and body image distortion with an obsessive fear of gaining weight."], "antifungal": ["A natural or man-made substance that can kill or stop the\\ngrowth of a fungus.\\n(source: AIDSinfo)"], "antineoplastic": ["A natural or man-made substance that can kill or stop the growth or spread of cancer cells."], "antiprotozoal": ["A natural or man-made substance that can kill or stop the\\ngrowth of single-celled micro-organisms called protozoa.\\n(fuente: AIDSinfo)"], "antiretroviral": ["A medication that interferes with the ability of a retrovirus\\n(such as HIV) to make more copies of itself.\\n(source: AIDSinfo)"], "antiretroviral therapy": ["Treatment with drugs that inhibit the ability of retroviruses\\n(such as HIV) to multiply in the body.\\n(source: AIDSinfo)"], "antiviral": ["A natural or man-made substance that can kill or stop the\\ngrowth of a virus.\\n(source: AIDSinfo)"], "aphthous ulcer": ["A painful shallow sore in the mouth.\\n(source: AIDSinfo)"], "agammaglobulinemia": ["Absence or low levels of antibodies in the blood. This condi\\ntion leaves a person vulnerable to infections.\\n(source: AIDSinfo)"], "apoptosis": ["The deliberate, programmed death of a cell. Apoptosis occurs\\nas a normal part of life and helps the body stay healthy. If cells\\nare damaged (for example, cancerous cells or cells infected\\nwith HIV), the body orders those cells to die in order to contain the disease.\\n(source AIDSinfo)"], "artralgia": ["Joint pain with symptoms such as heat, redness, tenderness to touch, loss of motion, or swelling."], "aspergillosis": ["An infection of the lungs caused by the fungus Aspergillus. The infection may also spread through the blood to other organs."], "ataxia": ["Partial or complete loss of coordination of voluntary muscular movements. This can interfere with a person's ability to walk, talk, eat, and perform other tasks of daily living.\\n(source: AIDSinfo)"], "attenuated": ["A term used to describe a bacterium or virus that has been changed in the laboratory so that it is not harmful to people."], "autoantibody": ["An antibody directed against the body's own tissue."], "avascular necrosis": ["Death of bone (osteonecrosis) caused by a loss of blood supply to the bone tissue.\\n(source: AIDSinfo)"], "hepatic necrosis": ["Death of liver cells."], "hepatic": ["Pertaining or relating to the liver."], "hemophilia": ["A hereditary blood defect that occurs almost exclusively in males and is characterized by delayed clotting of the blood. This leads to difficulty in controlling bleeding, even after minor injuries.\\n(source: AIDSinfo)", "Heredity disease where blood clotting is impaired."], "hemoglobin": ["A protein in red blood cells that transports oxygen from the lungs to the tissues of the body.\\n(source: AIDSinfo)"], "hemolysis": ["Rupture of red blood cell membranes, causing a release of\\nhemoglobin."], "hematotoxic": ["Toxic or destructive to the blood or bone marrow."], "fatty liver": ["Accumulation of too much fat inside liver cells."], "hepatic steatosis": ["Accumulation of too much fat inside liver cells."], "hepatitis": ["Inflammation of the liver. This condition can lead to liver damage and liver cancer."], "hepatomegaly": ["Enlargement of the liver."], "basal metabolism": ["The energy exchange of an animal at rest."], "anabolism": ["Biosynthesis of molecules in cells and part of metabolism."], "catabolism": ["The breaking down by organisms of complex molecules into simpler ones with the liberation of energy."], "bull's eye": ["A difficult task that you can do thanks to a stroke of luck."], "commander-in-chief": ["Person who commands of all the operating units."], "generalissimo": ["Person who commands of all the operating units."], "shop assistant": ["An employee in a shop."], "compensate": ["To establish an equilibrium situation."], "kanji": ["The Chinese characters that are used in the Japanese writing system along with kana."], "Kanji": ["The Chinese characters that are used in the Japanese writing system along with kana."], "history of Japan": ["The past events and the development of Japan."], "Japanese history": ["The past events and the development of Japan."], "Battle of Sekigahara": ["A decisive battle in the history of Japan, in which Tokugawa Ieyasu's forces defeated those of Ishida Mitsunari, who was loyal to Toyotomi Hideyori. It took place on October 21, 1600, at Sekigahara."], "mycosis": ["Any disease caused by a fungus."], "microbe": ["Microscopic living organism, which is the agent of fermentation, putrefaction of animals or plants, and especially a large number of diseases."], "presentation": ["The process of presenting the content of a topic to an audience."], "microbicide": ["A natural or man-made substance that kills microbes. Researchers are studying the use of microbicides to prevent the transmission of sexually transmitted diseases (STDs), including HIV infection.\\n(source: AIDSinfo)"], "mitochondria": ["Rod-like structure that produce energy for a cell."], "meningitis": ["Inflammation of the membranes surrounding the brain or spinal cord. Meningitis can be caused by a bacterium, fungus, or virus."], "interplanetary space": ["Space extending between the sun and the planets of the solar system. Interplanetary space is not empty, but contains dust, particles with an electric charge, and the magnetic field of the sun (also called the IMF, or Interplanetary Magnetic Field)."], "cryptococcal meningitis": ["A life-threatening infection of the membranes surrounding the brain and the spinal cord caused by the fungus Cryptococcus neoformans.\\n(fuente: AIDSinfo)"], "cryptococcosis": ["An infection caused by the fungus Cryptococcus neoformans. This fungus typically enters the body through the lungs and usually spreads to the brain, causing cryptococcal meningitis. In some cases, it can also affect the skin, skeletal system, and urinary tract. It is considered an AIDS-defining condition in people with HIV.\\n(source: AIDSinfo)"], "cryptosporidium": ["The protozoan that causes cryptosporidiosis.\\n(source: AIDSinfo)"], "cryptosporidiosis": ["A diarrheal disease caused by the protozoa Cryptosporidium. Symptoms include abdominal cramps and severe chronic diarrhea. It is considered an AIDS-defining condition in people with HIV.\\n(source: AIDSinfo)"], "proverb": ["A widely known, fixed sentence, that expresses a maxim or a wisdom in a short and concise way."], "waiting": ["The act of waiting (remaining inactive in one place while expecting something)."], "overflowing": ["An overflowing; an inundation or flood, especially when the water is charged with much suspended material.\\n(Source: BJGEO)"], "inundation": ["An overflowing; an inundation or flood, especially when the water is charged with much suspended material.\\n(Source: BJGEO)"], "molecule": ["A group of atoms in a definite arrangement held together by chemical bonds."], "account number": ["Number of a bank account."], "peel": ["The outer skin of a citrus fruit, used for flavouring.", "To remove the skin from food or vegetables."], "orange peel": ["The zest of an orange."], "orange zest": ["The zest of an orange."], "lemon peel": ["The peel of a lemon."], "lemon zest": ["The peel of a lemon."], "outer rind": ["The outer skin of a citrus fruit, used for flavouring."], "yuzu": ["A citrus fruit native to East Asia, with the scientific name Citrus ichangensis x Citrus reticulata var. austera. It is mainly grown for its aromatic skin, which is used as a spice."], "yuzu zest": ["The zest of a yuzu (a citrus fruit native to East Asia), used as a spice or aromatic."], "yuzu peel": ["The zest of a yuzu (a citrus fruit native to East Asia), used as a spice or aromatic."], "citrus": ["The genus Citrus, flowering plants in the family Rutaceae, originally from Southeast Asia. It comprises many plants grown for their juicy and fragrant fruits, such as lemon, orange, lime, and grapefruit."], "Citrus": ["The genus Citrus, flowering plants in the family Rutaceae, originally from Southeast Asia. It comprises many plants grown for their juicy and fragrant fruits, such as lemon, orange, lime, and grapefruit."], "citrus fruit": ["The fruits of a plant in the citrus genus. They have a leathery rind surrounding segments filled with pulp vesicles."], "banana peel": ["The peel of a banana."], "summertime": ["The time during the summer months."], "summer season": ["The time during the summer months."], "apple peel": ["The peel of an apple."], "tangerine peel": ["The peel of a tangerine."], "wintertime": ["The time during the winter months."], "winter season": ["The time during the winter months."], "B-cell lymphoma": ["A type of cancer of the lymphatic tissue.\\n(source AIDSinfo)"], "candidiasis": ["Infection caused by a species of the yeast-like fungus Candida, usually C. albicans."], "desert fever": ["An infectious disease of lungs and skin caused by the inhalation of spores of Coccidioides immitis.\\n(source: AIDSinfo)"], "coccidioidomycosis": ["An infectious disease of lungs and skin caused by the inhalation of spores of Coccidioides immitis.\\n(source: AIDSinfo)"], "histoplasmosis": ["A lung disease caused by the fungus Histoplasma capsulatum with symptoms similar to those of influenza."], "Kaposi's sarcoma": ["A type of cancer caused by an overgrowth of blood vessels, which causes pink or purple spots or small bumps on the skin."], "lymphoid interstitial pneumonitis": ["A lung disorder that causes hardening of the parts of the lung that aid in oxygen absorption.\\n(source: AIDSinfo)"], "mycobacterium avium complex": ["(MAC) An infection caused by two bacteria found in soil and dust particles.\\n(source: AIDSinfo)"], "MAC": ["(MAC) An infection caused by two bacteria found in soil and dust particles.\\n(source: AIDSinfo)"], "pneumocystis jiroveci pneumonia": ["A lung infection caused by Pneumocystis jiroveci, a fungus related to Pneumocystis carinii (the species for which PCP was originally named).\\n(source: AIDSinfo)"], "PCP": ["A lung infection caused by Pneumocystis jiroveci, a fungus related to Pneumocystis carinii (the species for which PCP was originally named).\\n(source: AIDSinfo)"], "progressive multifocal leukoencephalopathy": ["A rare brain and spinal cord disease caused by a virus and usually seen only in immunocompromised individuals, such as those with HIV. Symptoms vary, but include loss of muscle control, paralysis, blindness, speech problems, and an altered mental state. This disease often progresses rapidly and may be fatal. PML is considered an AIDS-defining condition in people with HIV.\\n(source: AIDSinfo)"], "PML": ["A rare brain and spinal cord disease caused by a virus and usually seen only in immunocompromised individuals, such as those with HIV. Symptoms vary, but include loss of muscle control, paralysis, blindness, speech problems, and an altered mental state. This disease often progresses rapidly and may be fatal. PML is considered an AIDS-defining condition in people with HIV.\\n(source: AIDSinfo)"], "tuberculosis": ["An infection caused by the bacterium Mycobacterium tuberculosis.", "A common and deadly infectious disease that is caused by mycobacteria, primarily Mycobacterium tuberculosis."], "TB": ["An infection caused by the bacterium Mycobacterium tuberculosis."], "wasting syndrome": ["The involuntary loss of more than 10 percent of body weight, plus more than 30 days of either diarrhea or weakness and fever. Wasting refers to the loss of muscle mass, although part of the weight loss may also be due to loss of fat. HIV-associated wasting syndrome is considered an AIDS-defining condition.\\n(source: AIDSinfo)"], "cervical cancer": ["A condition in which a cancerous growth (also called a malignancy) develops on the lower portion of the uterus (cervix)."], "papilloma": ["A tumor that grows on the skin, such as a wart or polyp."], "human papillomavirus": ["Viruses that cause various warts, including plantar and genital warts. Some strains of HPV can also cause cervical cancer."], "Pap smear": ["A method for the early detection of cancer and other abnormalities of the female genital tract. A Pap smear is done by placing a speculum in the vagina, locating the cervix, and then scraping a thin layer of cells from the cervix. The cells are placed on a slide, sent to a laboratory, and analyzed for abnormalities."], "compose": ["To produce or create a literary or musical work.", "To make something by merging parts.", "To put together out of existing material (e.g. a list).", "To calm (someone, especially oneself); to make quiet."], "organize": ["To arrange by systematic planning and united effort (e.g. a plot, a strike, a plan)."], "sign": ["To write one's signature on.", "Feature element which permits to refer to anything or any person.", "Metal sheet for written communication (warning, instruction etc) on roadsides or streets.", "Approve and express assent, responsibility, or obligation.", "A perceptible indication of something not immediately apparent, as a visible clue that something has happened.", "One of 12 equal areas into which the zodiac is divided."], "inscribe": ["To write or cut a text or design onto something, especially a hard surface.", "To draw a circle, sphere, etc. inside a polygon, polyhedron, etc. and tangent to all its sides.", "To have one's name formally recorded as a participant or member."], "engrave": ["To write or cut a text or design onto something, especially a hard surface.", "To write or cut a text or design onto something, especially a hard surface."], "tape": ["To record, particularly onto magnetic tape.", "A tape coated with an adhesive substance."], "sustain": ["To keep something in existence.", "To experience or suffer an injury, a disease, etc.", "To admit something as valid.", "To be the physical support of; carry the weight of."], "conviction": ["A firmly held belief."], "milquetoast": ["A person who lacks courage."], "awareness": ["The state of being conscious or aware."], "indicate": ["To have somebody see something.", "To call attention on a person or thing carefully and clearly."], "point out": ["To call attention on a person or thing carefully and clearly.", "To make or write a comment on."], "retire": ["To retreat from action or danger.", "To stop working after a certain age and start living on a pension."], "infect": ["To spread among others, to communicate to others.", "To bring into contact with a substance that can cause illness (a pathogen)."], "violent": ["Taking actions, usually deliberate and characterized by violence, that cause or intend to cause injury to people, animals, or non-living objects - often associated with aggression.", "(of an emotion or natural force) very strong or powerful; acting with or marked by great force or energy or emotional intensity."], "consist": ["To be composed, formed, or made up."], "comprise": ["To be composed, formed, or made up."], "provoke": ["To cause (a person) to become angry.", "To bring about a reaction."], "correspond": ["To be equivalent or similar in character, quantity, quality, origin, structure, function etc", "To exchange messages, especially by postal letter, over a period of time.", "To be compatible, similar or consistent; coincide in their characteristics."], "arithmetical": ["Relating to or involving arithmetic."], "concern": ["A commercial association of two or more persons, especially when incorporated.", "To be relevant or of importance to.", "A vaguely specified subject, question, situation, etc. that is or may be an object of consideration or action.", "That which affects one's welfare or happiness.", "The expression of solicitude, anxiety, or compassion toward a thing or person.", "To be on the mind of."], "erythema": ["Abnormal redness of the skin caused by a buildup of red blood cells in the capillaries."], "erythema multiforme": ["A type of rash that can occur in response to medications, illness, or infections such as herpes simplex or mycoplasma infections.\\n(source: AIDSinfo)"], "karaoke": ["A form of entertainment in which an amateur sings along with recorded music on microphone. The voice of the original singer is removed, and lyrics are displayed on a screen."], "lymph node": ["Very small organs of the immune system that are located throughout the body. Lymph fluid that bathes body tissues is filtered through lymph nodes as it carries white blood cells to and from the blood.\\n(source AIDSinfo)", "The source of lymph and lymphocytes."], "human growth hormone": ["A protein produced in the pituitary gland that stimulates the liver to produce somatomedins, substances that stimulate growth of bone and muscle."], "Stevens-Johnson syndrome": ["A severe and sometimes fatal form of skin rash characterized by red, blistered spots on the skin; blisters in the mouth, eyes, genitals, or other moist areas of the body; peeling skin that results in painful sores; and fever, headache, and other flu-like symptoms. Internal organs may also be affected.\\n(source: AIDSinfo)"], "metabolic syndrome": ["A cluster of disorders affecting the body's metabolism, including high blood pressure, high insulin levels, excess body weight, and abnormal cholesterol levels."], "syndrome X": ["A cluster of disorders affecting the body's metabolism, including high blood pressure, high insulin levels, excess body weight, and abnormal cholesterol levels."], "mitochondrion": ["Rod-like structure that produce energy for a cell."], "cutback": ["Act of reducing a quantity or a number."], "run for something": ["To enter in a contest or competition."], "sideboard": ["A furniture in a kitchen or dining room, having cabinets, cupboards and drawers, used for storing cutlery and table utensils, and a flat surface for displaying food."], "style": ["a particular kind, sort, or type, as with reference to form, appearance, or character.", "The stalk that connects the stigma(s) to the ovary in a pistil of a flower."], "crusade": ["A mililtary campaign by the European Christians in the Middle Ages aiming to reconquer the Church of the Holy Sepulchre in Jerusalem.", "A series of actions advancing a principle or tending toward a particular end."], "collapse": ["Unforeseen and destructive fall."], "bloody": ["Characterised by bloodshed.", "Covered in blood."], "at first": ["At first."], "success": ["The achievement of one's aim or goal."], "list": ["A register or roll of paper consisting of an enumeration or compilation of a set of possible items.", "To make a list of."], "slide rule": ["Analog computer consisting of a handheld instrument used for rapid calculations."], "cherry blossom": ["The blossom of the cherry tree."], "anaemia": ["A lower than normal number of red blood cells."], "numerous": ["An indefinite large number of.", "A great number of."], "deliberately": ["With intention; in an intentional manner."], "report sb. to the police": ["To inform about a crime to the police."], "undernourished": ["Not sufficiently nourrished and thus physically weak."], "edit": ["To correct and eliminate errors, make information precise, etc.", "To change the content of a text, a picture, a sound file, etc.", "A change to the content of a text, a picture, a sound file, etc.", "To cut and assemble the components of (e.g. a film)."], "purify": ["To correct and eliminate errors, make information precise, etc.", "To remove dirt, dust or foreign matter from."], "ulterior motive": ["A secret, unsaid thought or intention."], "hidden agenda": ["A secret, unsaid thought or intention."], "bloodstream": ["The flow of the blood through the body."], "blood circulation": ["The flow of the blood through the body."], "intransigent": ["Unwilling to compromise or moderate a position."], "massacre": ["A ruthless killing of a great number of people."], "bloodbath": ["A ruthless killing of a great number of people."], "livid": ["Furiously angry.", "Pale in color."], "chemical compound": ["A chemical substance consisting of two or more different chemical elements chemically bonded together, with a fixed ratio determining the composition."], "Irishman": ["A person of Irish nationality."], "Irishwoman": ["A person of Irish nationality."], "cutaneous": ["Of, relating to, or affecting the skin."], "subcutaneous": ["Pertaining to the fatty layer under the skin.", "Under the skin."], "subcutaneous adipose tissue": ["A type of adipose (fat) tissue found directly under the skin."], "syphilis": ["A sexually transmitted disease (STD) caused by the bacterium Treponema pallidum. In the early stage of syphilis, a genital or mouth sore called a chancre develops, but eventually disappears on its own. However, if the disease is not treated, the infection can progress over years to affect the heart and central nervous system. Syphilis can also be transmitted from an infected mother to her fetus during pregnancy, with serious health consequences for the infant."], "sexually transmitted disease": ["Any infection spread by the transmission of organisms from person to person during sexual contact."], "chancroid": ["A sexually transmitted disease (STD) caused by a bacterium called Hemophilus ducreyi. Often causes swollen lymphnodes and painful sores on the penis, vagina, or anus."], "chlamydia": ["A sexually transmitted disease (STD) caused by a bacterium called Chlamydia trachomatis. The bacteria infect the genital tract and if left untreated can cause damage to the female and male reproductive systems, resulting in infertility.\\n(source: AIDSinfo)"], "gonorrhea": ["A sexually transmitted disease (STD) caused by the bacterium Neisseria gonorrhoeae. Many people with gonorrhea have no symptoms. If symptoms do occur, they may be burning on urination, frequent urination, yellow or green discharge from the genitals, redness or swelling of the genitals, and a burning or itching sensation of the genitals."], "lymphogranuloma venereum": ["A sexually transmitted disease (STD) caused by a species of the chlamydia bacterium. It is characterized by genital lesions and swelling of lymph nodes in the groin."], "genital ulcer disease": ["Sores on the genitals, usually caused by a sexually transmitted disease (STD) such as herpes, syphilis, or chancroid."], "pelvic inflammatory disease": ["An infection of the upper female genital tract affecting the uterus, fallopian tubes, and ovaries."], "humoral immunity": ["The body's antibody-based immune response, as opposed to its cell-based immune response (cellular immunity)."], "Venetan": ["A Romance language spoken mostly in the North East of Italy and in some states of Brazil, and to a lesser extent in other countries including Mexico, Slovenia, Croatia, and Romania."], "painful": ["Full of pain; causing uneasiness or distress, either physical or mental."], "intense": ["Extreme in degree; excessive; immoderate."], "aloud": ["Audible, as opposed to silent."], "Venetian proper": ["The variety of Venetan language spoken in Venice and nearby."], "blood bank": ["Cache of blood or blood components."], "profile": ["The shape, view, or shadow of a person's head from the side", "An analysis representing the extent to which something exhibits various characteristics.", "Essential features of, or features characterizing something or someone."], "manipulation": ["The devious management of some situation, especially for one's own advantage."], "march": ["A formal, rhythmic way of walking, used especially by soldiers, bands and in ceremonies.", "Any song in the genre of music written for marching.", "To walk with long, regular strides, as a soldier does."], "herpesvirus": ["A family of viruses containing several individual members, including herpes simplex viruses 1 and 2 (HSV-1 and -2), cytomegalovirus (CMV), varicella zoster virus (VZV), Epstein-Barr virus (EBV), and Kaposi's sarcoma herpesvirus (KSHV or HHV-8)."], "cytomegalovirus": ["A herpesvirus that can cause infections, including pneumonia (infection of the lungs), gastroenteritis (infection of the gastrointestinal tract), encephalitis (inflammation of the brain), or retinitis (infection of the eye), in immunosuppressed people."], "Epstein-Barr virus": ["A human herpesvirus that causes infectious mononucleosis (mono), a contagious disease."], "hepatitis B virus": ["The virus that causes hepatitis B."], "hepatitis C virus": ["The virus that causes hepatitis C, an inflammation of the liver that can lead to liver damage and liver cancer."], "herpes simplex virus 1": ["A virus that causes cold sores or fever blisters on the mouth or around the eyes, and can be transmitted to the genital region."], "herpes simplex virus 2": ["A virus that causes painful sores around the anus or genitals. HSV-2 may be transmitted either sexually or from an infected mother to her infant during birth.\\n(source: AIDSinfo)"], "digital divide": ["The lack of access to information and communications technologies by segments of the community, due to linguistic, economic, educational, social and geographic reasons."], "usher": ["A person, in a church, cinema etc., who escorts people to their seats.", "To go or travel in the company of someone."], "audio filter": ["A device employed to reject sound in a particular range of frequencies while passing sound in another range of frequencies."], "sound pressure level": ["Physical quantity of sound measured, usually expressed in decibels.\\n(Source: KORENa)"], "agora": ["The main square of the polis in ancient Greece.", "In Ancient Greece, a public place for business and recreation; a marketplace."], "electronic": ["Of or pertaining to electrons.", "Of, relating to or produced by means of electronics."], "blood donor": ["A person who gives blood to be used for transfusions."], "surf": ["To ride a wave, usually on a surfboard.", "To browse the Internet."], "electrical resistance": ["Physics: Measure of the degree to which an object (e. g. electronic part, wire) opposes the passage of an electric current."], "resistor": ["Two-terminal electronic component for the realization of a defined electrical resistance"], "expel": ["To accept no longer in a community, group or country, e.g. by official decree.", "To force a person or persons to leave a place.", "To force a person or persons out of a position or place."], "potable": ["Any one of various liquids for drinking.", "Good for drinking without fear of poisoning or disease."], "blood doping": ["The practice of illicitly boosting the number of red blood cells (RBCs) in the circulation in order to enhance athletic performance."], "drinkable": ["Any one of various liquids for drinking.", "Good for drinking without fear of poisoning or disease."], "allotment": ["The assignment or allotment of resources to various uses in accord with a stated goal or policy.\\n(Source: ODE)", "Procedure by which big land properties are divided in parcels of smaller size."], "resource allotment": ["The assignment or allotment of resources to various uses in accord with a stated goal or policy.\\n(Source: ODE)"], "AC": ["A system or process for controlling the temperature and sometimes the humidity and purity of the air in a house, etc."], "air-conditioning": ["A system or process for controlling the temperature and sometimes the humidity and purity of the air in a house, etc."], "deprive": ["To take away from someone something that belongs to him/her/it or deny someone of something."], "air dry": ["Process of drying or seasoning lumber naturally by exposure to air."], "beam": ["Stream of particles or electromagnetic waves.", "A structural member loaded on its narrow face, and typically used in a horizontal or sloping position to span between bearing points."], "truss": ["A structure comprising one or more triangular units constructed with straight members whose ends are connected at joints."], "veneer": ["Wood peeled, sawn, or sliced into sheets of a given constant thickness and combined with glue to produce plywood or laminated-veneer lumber."], "wood preservative": ["Any suitable substance that is toxic to fungi, insects, borers, and other living wood-destroying organisms."], "bloodthirsty": ["Marked by eagerness to resort to violence and bloodshed."], "sanguinary": ["Marked by eagerness to resort to violence and bloodshed."], "April Fool": ["Custom to make believe false stories on April 1."], "April Fool's joke": ["Custom to make believe false stories on April 1."], "blood pressure": ["The pressure exerted by the blood against the walls of the blod vessels."], "complexion": ["The color of the face."], "farm machinery": ["Machines utilized for tillage, planting, cultivation and harvesting of crops. Despite its benefits in increasing yields, mechanisation has clearly had some adverse environmental effects: deep ploughing exposes more soil to wind and water erosion; crop residues can be removed as opposed to ploughing back into the soil; removal of residues can lead to a serious loss of organic content in the soil, which may increase the risk of soil erosion.\\n(Source: MGH / DOBRIS)"], "farm production": ["The amount of grown crops and breeded livestock per year in a given area."], "agricultural output": ["The amount of grown crops and breeded livestock per year in a given area."], "agroecology": ["Study of the ecology of agricultural systems and the natural resources required to sustain them."], "pet shelter": ["A facility that houses homeless, lost or abandoned animals; primarily a large variety of dogs and cats and other animals used as pets."], "animal sanctuary": ["A facility that houses homeless, lost or abandoned animals; primarily a large variety of dogs and cats and other animals used as pets."], "warning": ["The act of signalling an impending danger in order to call attention to some event or condition.", "Of or pertaining to an admonition.", "A gentle advice or warning given to someone to tell him to be cautious about something."], "salt steppe": ["Any geomorphic area, often a level lake-like plain, with soil containing a high percentage of mineral salts, located especially in arid regions.\\n(Source: MHD / RHW)"], "by choice": ["With intention; in an intentional manner."], "distrust": ["Lack of trust, suspicious and cautious attitude.", "Loss or lack of belief or confidence.", "To regard with doubt or suspicion."], "dignity": ["Personal feelings or opinions of oneself."], "comprehensive": ["Including all or everything.", "Broad in scope."], "directly": ["In a direct manner; in a straight line or course.", "In an immediate manner; instantly or without delay."], "administrative organ": ["Any governmental agency or organization charged with managing and implementing regulations, laws and government policies.\\n(Source: BLD)"], "administrative authority": ["The power of an administrative organ to exercise control over a certain field."], "administrative power": ["The power of an administrative organ to exercise control over a certain field."], "discomfort": ["An event causing distress or pain.", "To make uncomfortable or uneasy."], "tree planting": ["Establishment of a new forest by seeding or planting of nonforested land."], "afforestment": ["Establishment of a new forest by seeding or planting of nonforested land."], "irritation": ["Feeling of disappointment and anger because of a misfortune"], "apostille": ["The legalisation of a document for international use under the terms of the 1961 Hague Convention."], "laboratory techniques": ["The sum of procedures used on natural sciences such as chemistry, biology, physics in order to conduct an experiment, all of them following the scientific method."], "air purifier": ["A device which aims to free air from contaminants."], "haemophilia": ["Heredity disease where blood clotting is impaired."], "abzyme": ["An antibody with catalytic activity."], "Classical Syriac": ["An extinct Eastern Aramaic language that was once spoken across much of the Fertile Crescent."], "disadvantage": ["A negative or unwanted consequence or side effect of a solution."], "Kaliningradian": ["Inhabitant of Kaliningrad."], "afterburner": ["A gadget fitted to the exhaust flues of furnaces and also to the exhaust systems of motor vehicles. They remove polluting gases and particles, which are the result of incompletely combusted fuel, by incineration and break down other chemical molecules associated with combustion into inert chemicals. (Source: WRIGHT)"], "beatification": ["In the Catholic, Anglican and Orthodox church the declaration that a person has been accepted in the circle of saints and does answer prayers."], "alkaline metal": ["Any element of the group of alkali metals in the periodic table."], "alkali metal": ["Any element of the group of alkali metals in the periodic table."], "finally": ["An addition used to emphasize impatience.", "To give emphasis: used after a command, exclamation, or other statement to give it emphasis or express exasperation (informal)."], "daisy": ["Small flowering plant (Bellis perennis) with white petals from the family of the Asteraceae."], "bikini": ["A brief two-piece bathing suit worn by women."], "wither": ["Plants: To stop blossoming, turning limp."], "humidifier": ["A device used to increase humidity in a room."], "laid-back": ["Natural and spontaneous, deprived of timidity."], "dehumidifier": ["A device used to lower the absolute humidity in a room."], "divorce": ["Legal dissolution of a marriage.", "To legally dissolve a marriage.", "To have one's marriage legally dissolved."], "urban": ["Related to the (any) city."], "urban center": ["A group of human settlements that offer all necessary services (i.e. civil administration, economy, transportation, culture, and education) linked to urban life and usually comprise one or two towns and their suburbs.\\n(source: SIRCHAL)"], "land survey planning": ["The action and practice of managing, in an orderly fashion, people and their activities, amenities and any means of transport they may use, always bearing in mind any relevant natural, human, economic and even strategic constraints, covering an entire country, and with a long-term goals.\\n(source: SIRCHAL)"], "masterpiece": ["exceptionally accomplished works of art."], "shantytown": ["A group of precarious dwellings built with makeshift materials, generally found on the fringe of urban areas on sites with no services or infrastructure.\\n(source: SIRCHAL)"], "UNESCO": ["Acronym for the \"United Nations Educational, Scientific and Cultural Organization\"."], "replanning": ["Modification of the distribution of the construction or infrastructure elements of a block, a quarter or a town, in order to ensure a more satisfactory use of such elements.\\n(source: SIRCHAL)"], "heritage": ["A collection of goods and assets inherited from the past."], "futurology": ["Research carried out in order to determine the probable or possible evolution of certain phenomena."], "bond": ["A sum of money paid as bail or surety.", "A certificate that acknowledges a debt.", "A certificate of ownership of a specified portion of a debt due to be paid by a government or corporation to an individual holder.", "A physical connection which binds.", "A link or force between neighbouring atoms in a molecule.", "To stick to firmly."], "debenture": ["A certificate that acknowledges a debt."], "butler": ["The chief male servant of a household who has charge of other employees, receives guests, directs the serving of meals, and performs various personal services."], "buyer": ["A person who buys things, especially for resale in some retail establishment."], "beneficial": ["Productive, conducive, helpful or good to something or someone.", "Pleasant and and very easily coped with; healthy; causing benefits [said about a climate]."], "unequivocal": ["Allowing only one interpretation.", "Something which is said or spoken to be without equal, matchless."], "basement": ["A floor of a building below ground level.", "The lowermost portion of a building, partly or wholly below ground level, often used for storage."], "flourish": ["To grow or develop well and vigorously."], "forward": ["To send something received from another person to a third person.", "Towards the front or from the front."], "school bus": ["A road vehicle to transport pupils from and to school."], "hydraulic": ["Moved or operated or effected by a liquid.", "Pertaining to water or to hydraulics."], "headquarters": ["The centre of a organisation's operations or administration."], "nosebleed": ["Bleeding of the nose."], "kick": ["To state complaints, discontent, displeasure, or unhappiness.", "To strike somebody or something with the foot.", "To drive or propel with the foot (e.g. a ball).", "To stop consuming (e.g. alcohol).", "To make a goal.", "A physical strike using the foot, leg, or knee."], "barren": ["Unable to reproduce.", "Completely wanting or lacking."], "dulcet": ["Pleasing to the ear.", "Extremely pleasant in a gentle way."], "end up": ["To come to find oneself in one given condition."], "euphonic": ["Pleasing to the ear."], "melodic": ["Pleasing to the ear."], "governor": ["An official who heads the government of a colony, state or other sub-national state unit."], "gear": ["A configuration of the transmission of an motor car so as to achieve a particular ratio of engine to axle torque.", "A wheel with grooves (teeth) engraved on the outer circumference, such that two such devices can interlock and convey motion from one to the other."], "primary school": ["An institution in which children receive the first stage of academic learning."], "Klingon": ["A language spoken by the Klingons, a people of the Star Trek series."], "raspberry": ["Small red edible fruit of the plant species Rubus idaeus"], "console": ["A storage closet either separate from, or built into, a wall.", "A small ornamental table designed to be fixed to a wall like a shelf.", "A small ornamental table with two or more legs designed to stand against a wall.", "The part of the organ that houses the keyboards, the pedals, the stops and the other controls.", "A table, desk, panel, or else accomodating a set of controls.", "A small ornamental bracket, often in the shape of a scroll, used for decorating and supporting a wall fixture.", "A computer or other electronic device designed for playing video games.", "A program that interacts with a computer by emulating a system console."], "console table": ["A small ornamental table with two or more legs designed to stand against a wall."], "soundboard": ["A console designed to control audio devices."], "Easter Bunny": ["Traditional holiday character in the form of a giving rabbit which is said to leave gifts, usually Easter baskets for children at Easter."], "rabbit": ["One of several small mammals of the family Leporidae, with long ears, long hind legs and a short, fluffy tail."], "mixing console": ["A console designed to control audio devices."], "sanguine": ["Confidently optimistic and cheerful."], "eclipse": ["A software platform comprising extensible application frameworks, tools and a runtime library for software development and management.", "A type of alignment, in which a planetary object comes between the sun and another planetary object."], "games console": ["A computer or other electronic device designed for playing video games."], "computer console": ["A physical device to control and operate a computer, usually made of a keyboard and a display."], "system console": ["A physical device to control and operate a computer, usually made of a keyboard and a display."], "command line interface": ["A program that interacts with a computer by emulating a system console."], "corbel": ["A small ornamental bracket, often in the shape of a scroll, used for decorating and supporting a wall fixture."], "consul": ["An official representative of the government of one State in the territory of another, normally acting to assist and protect the citizens of one's own country."], "marginalisation": ["The social process of becoming or being made marginal."], "erode": ["To wear down by friction. (V.t.; Re. Geology; Source: IPDF);"], "contribution": ["A voluntary gift or contribution for a specific cause.", "The part played by a person in bringing about a result.", "An amount of money given toward something."], "first-time voter": ["A person who votes for the first time in a political election."], "deathbed": ["The bed of a dying person."], "salinity": ["The concentration of salt in a solution."], "sanctuary": ["A place of safety, refuge or protection.", "Place of worship which is given special reverence for the presence of the relics of saints.", "The area around the altar of a church for the clergy and choir; often enclosed by a lattice or railing."], "salvation": ["The act of delivering from sin or saving from evil.", "The state of having been saved (from hell)."], "redemption": ["The act of delivering from sin or saving from evil."], "saying": ["A widely known, fixed sentence, that expresses a maxim or a wisdom in a short and concise way."], "maxim": ["A widely known, fixed sentence, that expresses a maxim or a wisdom in a short and concise way."], "stipulate": ["To require something as a condition of a contract or agreement."], "strategic": ["Highly important to or an integral part of a strategy or plan of action especially in war."], "stubble": ["The short, rooted stalks left in a field after crops have been harvested.", "Short, coarse hair, especially on a man's face."], "supermarket": ["A self-service food store with grocery, meat, and produce departments with a high turnover."], "survivor": ["Someone who endured through disaster or hardship.", "One who outlives another."], "liberty": ["The condition of being free to act, believe or express oneself as one chooses."], "landlord": ["A person who owns and rents land such as a house, apartment, or condo."], "lathe": ["A machine tool for shaping metal or wood."], "ligament": ["A band of strong tissue that holds the bones of an animal in position."], "tendon": ["Tissue that connects muscle to bone."], "latent": ["Existing or present but concealed or inactive."], "Lausanne": ["A city, and district in west Switzerland, where French is the main language."], "lithography": ["The process of printing a lithograph on a hard, flat surface."], "social exclusion": ["Relegating certain groups of individuals to the margins of the society."], "lumberjack": ["A person whose work it is to fell trees."], "lowercase": ["The small letters in type, as distinguished from capital, uppercase, letters."], "minuscule": ["Of very little importance.", "The small letters in type, as distinguished from capital, uppercase, letters."], "inspiration": ["Arousal of the mind to special unusual activity or creativity.", "The act of taking ambient air into the lungs."], "mow down": ["To kill a large number of people indiscriminately."], "lynching": ["The execution of a person by mob action without due process of law, especially hanging."], "notorious": ["Known widely and usually unfavorably."], "lentil": ["A brown or yellow flat legume about the size of a pea used for soups, stews, and garnishes."], "fascicle": ["A single issue of a work published in subsequent installments."], "fairy": ["one of a class of female supernatural beings, generally conceived as having a diminutive human form and possessing magical powers."], "legume": ["The fruit or seed of any of various bean or pea plants consisting of a case that splits along both sides when ripe and having the seeds attach to one side of the case."], "partisanship": ["Prejudice in favour of a particular cause; bias."], "fertilisation": ["The union of male and female cells (e.g. sperm and egg) to form a new individual."], "fecundation": ["The union of male and female cells (e.g. sperm and egg) to form a new individual."], "petition": ["A formal message requesting something that is submitted to an authority.", "A compilation of signatures built in order to exert moral authority in support of a specific cause."], "labyrinth": ["A confusing and baffling network, as of paths or passages."], "maze": ["A confusing and baffling network, as of paths or passages."], "limousine": ["A luxury sedan/saloon car, especially one with a lenghtened wheelbase or driven by a chauffeur.", "A breed of beef cattle which originates of the Limousine r\u00e9gion, well-known for their golden-red colouring."], "late in the evening": ["Late in the evening."], "at night": ["At night."], "late at night": ["Late at night."], "early in the morning": ["Early in the morning."], "resurrection": ["The act of arising from the dead."], "leopard": ["A large wild cat with a spotted coat, Panthera pardus, indigenous to Africa and Asia."], "lethargy": ["A state of physical and/or mental weakness and a lack of vigor."], "sluggishness": ["A state of physical and/or mental weakness and a lack of vigor."], "languor": ["A state of physical and/or mental weakness and a lack of vigor."], "alternation": ["Repeated successions of different things.", "The substitution of one root vowel for another, thus indicating a corresponding modification of use or meaning, such as \"get, gat, got\"; \"sing, song\"; \"hang, hung\"."], "compassion": ["Deep awareness of the suffering of another, coupled with the wish to relieve it."], "compatible": ["Capable of easy interaction."], "conceptual": ["Being or characterized by concepts or their formation."], "chronology": ["An arrangement of events into chronological order.", "The science of computing time or periods of time and of assigning events to their true dates. (source:UNICEF)"], "civilian": ["A person who isn't a member of the military armed forces."], "clergyman": ["A minister of the Catholic church empowered to administer the sacraments, most particularly that of the Eucharist or Holy Communion, as well as those of confession and extreme unction."], "clockwise": ["In the direction in that the hands of an analogue clock move."], "cadet": ["A student at a military school who is training to be an officer."], "camouflage": ["The method which allows an otherwise visible organism or object to remain indiscernible from the surrounding environment.", "To protect someone or something from being seen or recognized by disguising or adapting to the environment."], "cannibal": ["An organism which eats others of its own species.", "Human who eats other humans.", "Who feeds on members of their own species."], "decimate": ["To severely reduce; to destroy almost completely.", "To kill in large numbers."], "declination": ["At a given point, the angle between magnetic north and geographic north.", "A downward slope or bend."], "Deklination": ["At a given point, the angle between magnetic north and geographic north."], "defoliant": ["An agent used to defoliate plants."], "degree": ["An award bestowed by a university or, in some countries, a college, as an indication of academic achievement or occasionally bestowed to honor its recipient.", "A unit of measurement of angle equal to 1/360 of a circle's circumference.", "A unit of measurement of temperature on any of several scales, such as Celsius or Fahrenheit.", "Quantitative marker, usually referred to by a number or a letter, of a scale enabling comparison but not necessarily relevant calculation, because it does not necessarily express a measure."], "delimiter": ["A separating character."], "dendrology": ["The study of trees and other woody plants."], "jettison": ["To eject from a watercraft or aircaft in order to lighten the load."], "climate change": ["The long-term fluctuations in temperature, precipitation, wind, and all other aspects of the Earth's climate."], "myrmecologist": ["A person who studies the life cycles, behavior, ecology, or diversity of ants."], "Capaccio": ["Town in the province of Salerno, region Campania, Italy."], "oligarchy": ["Government by only a few, often the wealthy."], "Cividale del Friuli": ["City in the province of Udine, Region Friuli-Venezia Giulia, Italy."], "omnivorous": ["Having the ability to eat both animal and vegetable food."], "Sicily": ["An autonomous region and island of Italy and the biggest island in the Mediterranean Sea."], "opaque": ["Not allowing light or radiant energy to pass through; impenetrable to sight.", "A document in an otherwise transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers.", "Not clearly understood or expressed."], "opium": ["A yellow-brown, addictive narcotic drug obtained from the dried juice of unripe pods of the opium poppy."], "orchard": ["A garden or an area of land used for the cultivation of fruit or nut trees."], "quotient": ["The number resulting from the division of one number by another."], "quadrant": ["One of the four sections made by dividing an area with two perpendicular lines.", "An instrument that is used to measure angles up to 90\u00b0."], "xerography": ["A photocopying process in which a negative image formed on an electrically charged plate is transferred as a positive to paper and thermally fixed."], "zodiac": ["One of the twelve signs, or houses, each corresponding to one of the constellations along the zodiac.", "A belt-shaped region in the heavens on either side to the ecliptic; divided into 12 constellations or signs for astrological purposes."], "omnibus": ["A book or anthology containing multiple works of a single author."], "nuptial": ["Of or relating to a wedding."], "bridal": ["Of or relating to a wedding.", "Of or relating to a bride."], "bent": ["Natural skill (at sth); liking or inclination (for sth/doing sth)."], "unidirectional": ["Operating or moving or allowing movement in one direction only."], "uniform": ["Showing a single form or character in all occurrences.", "A distinctive outfit as a means of identifying members of a group."], "urology": ["The branch of medicine that treats disorders of the urinary tract and the urogenital system."], "underwear": ["Clothes worn next to the skin, underneath outer clothing.", "Piece of cloth adapted to cover the genitals and buttocks of a man or a woman."], "lingerie": ["Clothes worn next to the skin, underneath outer clothing."], "unification": ["The act of making or becoming a single unit."], "urine": ["Liquid excrement consisting of water, salts and urea, which is made in the kidneys, stored in the bladder, then released through the urethra."], "utensil": ["An implement for practical use."], "upholstery": ["The covering, padding and springs and webbing and fabric, on a piece of furniture."], "genial": ["Diffusing warmth and friendliness."], "cordial": ["Diffusing warmth and friendliness."], "unanimous": ["Based on complete assent or agreement.", "Acting together as a single undiversified whole."], "chastise": ["To administer disciplinary action."], "breakage": ["Something that has been broken."], "Easter egg": ["A dyed or decorated egg, traditionally associated with Easter.", "An undocumented function hidden in a program, typically triggered by a particular sequence or combination of keystrokes, such as one that displays a list of the program's developers."], "Good Friday": ["The Friday before Easter Sunday, the day that Christians commemorate the crucifixion of Jesus Christ."], "Holy Saturday": ["The Saturday immediately after Good Friday and before Easter."], "able": ["Having the necessary means to accomplish a task.", "Legally qualified or competent."], "triage": ["The process of sorting patients according to urgency of illness or injury, in order to ascertain which order to treat them in."], "blood test": ["A laboratory analysis performed on a blood sample.", "Examination of the blood to determine the amount of alcohol in the blood."], "tadpole": ["A young toad or frog in its larval stage of development that lives in water."], "polliwog": ["A young toad or frog in its larval stage of development that lives in water."], "tirade": ["A speech or writing which bitterly denounces something."], "torpedo": ["A cylindrical explosive projectile that can travel underwater and is used as a weapon."], "trustworthy": ["Worthy of being trusted."], "targeted": ["Oriented toward a specific aim."], "punching bag": ["A person who is continually target of mean jokes and/or bad treatment and towards whom anger is directed.", "An inflated ball or bag that is suspended and punched for training in boxing."], "whipping boy": ["A person who is continually target of mean jokes and/or bad treatment and towards whom anger is directed.", "Someone who is punished for the errors of others."], "topology": ["A branch of mathematics concerned with spatial properties preserved under bicontinuous deformation.", "The layout pattern of interconnections of the various elements (links, nodes, etc.) of a computer network."], "towboat": ["A towboat is a boat designed for pushing barges."], "tragedy": ["A drama or similar work, in which the main character is brought to ruin or otherwise suffers the extreme consequences of some tragic flaw or weakness of character.", "A disastrous event, especially one involving great loss of life or injury."], "fuzzy": ["Not clearly thought out.", "Having outlines that are not clearly visible."], "unfocused": ["Having outlines that are not clearly visible."], "blurred": ["Having outlines that are not clearly visible."], "firmament": ["The eighth sphere carrying the fixed stars, which surrounded the seven spheres of the planets in the geocentric model."], "fennel": ["A plant of the parsley family used for cooking."], "freelancer": ["Someone who sells his services to employers without a long-term contract."], "facet": ["Any one of the flat surfaces cut into a gem.", "One among many similar or related, yet still distinct features or elements."], "blood plasma": ["Blood without globules.", "The clear, yellowish fluid portion of the blood in which cells are suspended."], "falconry": ["The sport of hunting by using trained birds of prey, especially falcons and hawks.", "Hunting with a trained falcon."], "Falkland Islands": ["Overseas territory of the United Kingdom, located in the South Atlantic. Its capital is Stanley."], "fallible": ["Capable of making mistakes or being wrong."], "fascination": ["A feeling of great liking for something wonderful and unusual."], "captivation": ["A feeling of great liking for something wonderful and unusual."], "hockey": ["Game in which two teams of six players hit a puck with a curved stick, and shoot it in the net, which means that team scores.", "A form of hockey played on an ice rink with a puck rather than ball."], "holotype": ["The single physical example (or illustration) of an organism, known to be used when the taxon was formally described."], "hymen": ["A mucous membrane which completely or partially occludes the vaginal opening in human females."], "maidenhead": ["A mucous membrane which completely or partially occludes the vaginal opening in human females."], "hamper": ["A basket usually with a cover.", "To prevent the progress or free movement."], "Hanoi": ["The capital of Vietnam.", "A dialect of Northern Vietnamese spoken around the city of Hanoi in Vietnam."], "hangman": ["An executioner responsible for hanging criminals.", "A guessing game where one has to guess the word an opponent is thinking of by guessing one letter at a time, and involving the gradual drawing of a stick figure hanging from the gallows."], "weevil": ["Any beetle from the Curculionoidea superfamily."], "Winchester": ["The capital city of Hampshire, the former capital city of England."], "pedestrian area": ["Area in a city where vehicles are not allowed."], "car-free zone": ["Area in a city where vehicles are not allowed."], "auto-free zone": ["Area in a city where vehicles are not allowed."], "pedestrianised zone": ["Area in a city where vehicles are not allowed."], "Pievepelago": ["City in the province of Modena, region Emilia-Romagna, Italy."], "traffic island": ["Area in the middle of a road where pedestrians can wait while crossing."], "witness": ["Someone who has a personal knowledge of something.", "The attestation of a fact or event."], "wardrobe": ["A piece of furniture in which clothes may be stored.", "A collection of clothing."], "yacht": ["A slick and light ship for making pleasure trips or racing on water, having sails but often motor powered.", "To travel in a yacht."], "juvenile": ["An organism that is not sexually mature."], "childish": ["Behaving immaturely, like a child.", "Suitable for children."], "Ibiza": ["One of the Balearic Islands of Spain."], "idiom": ["A phrase that cannot be fully understood from the separate meanings of the individual words which form it, but instead must be learned as a whole unit of meaning.", "A manner of speaking that is natural to native speakers of a language."], "idiolect": ["The language variant used by a specific individual."], "idiomatic": ["Of or relating to or conforming to idiom."], "identity": ["The individual characteristics by which a thing or person is recognized or known."], "ichthyology": ["The branch of zoology devoted to the study of fish."], "incubator": ["An apparatus used to maintain environmental conditions suitable for the hatching of eggs."], "ablution": ["The ritual washing of a priest's hands or of sacred vessels.", "The act of washing or cleansing the body, or some part of it."], "linguist": ["A specialist in linguistics."], "Balearic Islands": ["A group of Mediterranean islands off the east coast of Spain."], "incest": ["Sexual relation between close relatives."], "sense": ["Sound practical judgment.", "The specific meaning in which a word or expression is understood.", "One of the methods for a living being to gather data about the world: sight, smell, hearing, touch, taste.", "A general conscious awareness.", "A natural appreciation or ability.", "The way in which something can be interpreted."], "meaning": ["The objects or concept that a word or phrase denotes, or that which a sentence says."], "Venticano": ["City in the province of Avellino, region Campania, Italy."], "Villamaina": ["City in the province of Avellino, region Campania, Italy."], "rapist": ["Someone who forces another to have sexual intercourse."], "fashion": ["The latest and most admired style in clothes and cosmetics and behavior."], "Grand Prix": ["A premium tournament in sports."], "Edinburgh": ["The capital of Scotland."], "emanation": ["Something that is emitted or radiated."], "eddy": ["A current of a fluid running back, or in a direction contrary to the main current."], "egoist": ["A conceited and self-centred person."], "electrocution": ["Death by electric shock."], "Havana": ["The capital of Cuba."], "egotist": ["A conceited and self-centred person."], "brinjal": ["Violet oval-shaped vegetable, the fruit of Solanum melongena.", "An Asian plant, Solanum melongena, cultivated for its edible purple, green, or white ovoid fruit."], "Minoan eruption": ["The eruption of the Aegean vulcano island Thera (today Santorini) in the 16th or 17th century BC."], "homophone": ["A word which is pronounced the same as another word but differs in etyomology and meaning."], "homology": ["The relationship between the elements in the same group of the periodic table, or between organic compounds in a homologous series", "In evolutionary biology, any similarity between characters that is due to their shared ancestry.", "In mathematics, a procedure to associate a sequence of abelian groups or modules with a given mathematical object.", "In anthropology, the analogy between human beliefs, practices or artifacts due to genetic or historical connections.", "In sociology, a structural 'resonance' between the different elements making up a socio-cultural whole."], "horizon": ["The horizontal line that appears to separate the Earth from the sky."], "neurotic obsession": ["Fixed, obsessive thought accompanied, for example, by states of anxiety, phobias and behavioral psychopathologies."], "harem": ["The private part of an Arab household. In traditional Arab culture, this part of the household was forbidden to male strangers."], "agitator": ["Someone who agitates or calls for a certain behavior; a troublemaker."], "source": ["A place where water emerges from the ground.", "Thing or person from which something ensues, or which represents a principle or a cause."], "cooker": ["A kitchen appliance used for cooking food."], "hapless": ["Very unlucky."], "harlequin": ["The most popular of the zanni or comic servant characters from the Italian Commedia dell'Arte."], "profligate": ["Who spends a lot, in an excessive manner.", "Displaying the effect of excessive indulgence in sensual pleasure.", "Someone who spends money prodigiously and who is extravagant and recklessly wasteful."], "wasteful": ["Who spends a lot, in an excessive manner."], "extravagant": ["Who spends a lot, in an excessive manner."], "headhunter": ["One who recruits senior personnel for a company.", "A savage who cuts off the heads of his enemies, and preserves them as trophies."], "heathen": ["Person who doesn't believe in the God of the Bible and is neither Christian, Jewish nor Muslim."], "infidel": ["Person who doesn't believe in the God of the Bible and is neither Christian, Jewish nor Muslim."], "pagan": ["Person who doesn't believe in the God of the Bible and is neither Christian, Jewish nor Muslim.", "Pertaining to paganism; not acknowledging the God of Christianity and Judaism and Islam"], "blood transfusion": ["The taking of blood from one individual and inserting it into the circulatory system of another."], "hemp": ["A tall annual herb, Cannabis sativa, native to Asia."], "buttonhole": ["The slit through which a button is passed."], "iniquitous": ["Extremely wicked."], "flagitious": ["Extremely wicked.", "Totally reprehensible."], "food aid": ["The shipments of food commodities from donor to recipient countries on a total-grant basis or on highly concessional terms.\\n(source: OAS)"], "normal value": ["The price at which merchandise is sold or offered for sale in the principal markets of the country from which it is exported.\\n(Source: OAS)"], "prospective": ["Taking place or existing in the future.", "Effective or operative in the future."], "technical specification": ["A specification that lays down the characteristics of goods to be procured or their related processes and production methods, or the characteristics of services to be procured or their related operating methods, including the applicable administrative provisions, and a requirement relating to conformity assessment procedures that an entity prescribes.\\n(Source: OAS)"], "traceability": ["A property of the result of a measurement or value of a standard whereby it can be related to stated references, usually national or international standards, through an unbroken chain of comparisons all having stated uncertainties. Traceability is the property by which comparability and confidence of results are assured.\\n(source: OAS)"], "whatever": ["No matter which; for any.", "Anything that.", "Not caring which of several options should be chosen."], "subpoena": ["In law, a writ requiring someone to appear in court to give testimony."], "subp\u0153na": ["In law, a writ requiring someone to appear in court to give testimony."], "cacophony": ["A mix of discordant sounds."], "caffeine": ["An alkaloid, C8H10N4O2, found naturally in tea and coffee plants which acts as a mild stimulant of the central nervous system."], "liable": ["Having legal responsibility."], "liar": ["A person who has lied or who lies repeatedly."], "liturgy": ["A predetermined or prescribed set of rituals that are performed, usually by a religion."], "vascular plant": ["A large group of plants characterized by the presence of specialized conducting tissues (xylem and phloem) in the roots, stems, and leaves.\\n(Source: MGH)"], "luminance": ["The ability of emitting or reflecting light."], "Madeira": ["Island in the Atlantic Ocean and an autonomous region of Portugal."], "moussaka": ["A dish consisting of layers of minced lamb or beef, sliced aubergine (eggplant) or potatoes, tomatoes and b\u00e9chamel sauce, baked in the oven"], "killer": ["A person who has commited murder."], "murderer": ["A person who has commited murder."], "machete": ["A sword-like tool used for cutting large plants with a chopping motion."], "architectural": ["Related to architecture and demonstrates its nature, quality, expression or form."], "Athens Charter": ["The urban planning charter that sums up the doctrine of the International Congresses on Modern Architecture (ICMA), comprising the findings of the 4th ICMA on \"The Functional Town\" held in Athens in 1933.\\n(source SIRCHAL)"], "alkaloid": ["A nitrogenous organic molecule that has a pharmacological effect on humans and other animals."], "matrix": ["Ordered set of m x n elements represented by m rows and n columns."], "macadam": ["A paved surface having compressed layers of broken rocks held together with tar."], "mackerel": ["An edible fish of the Scombridae family, often speckled."], "alphabetic": ["Relating to an alphabet."], "mirage": ["An optical phenomenon in which light is refracted through a layer of hot air close to the ground, making far away objects appear being relatively close."], "alphanumeric": ["Representation, e.g. in a computer, that employs not only numerals but\\nalso letters. In a wider sense, also employing punctuation marks and\\nmathematical and other symbols."], "bilingualism": ["The habitual use, e.g. by a person or a community, of two languages."], "choronym": ["Toponym applied to an areal feature."], "conversion": ["In toponymy, the process of transferring the phonological and/or\\nmorphological elements of a particular language to another, or\\nfrom one script to another. Conversion is effected by either\\ntranscription or transliteration.", "The act of inducing someone to adopt a particular religion, faith, ideology or belief.", "The act of transforming or changing something into another form, substance, state, or product."], "toponymy": ["The science that studies place names (toponyms)."], "geographical coordinates": ["The (spheroidal) net or graticule of lines of latitude (parallels)\\nnumbered 0\u00b0-90\u00b0 north and south of the equator, and lines of longitude\\n(meridians) numbered 0\u00b0-180\u00b0 east and west of the international zero\\nmeridian of Greenwich, used to define location on the Earth's surface\\n(disregarding altitude) with the aid of angular measure (degrees,\\nminutes and seconds of arc).", "The value of a point referred to the geographical coordinates graticule."], "rectangular coordinates": ["Grid of plane coordinates consisting of two sets of straight lines at\\nright angles to each other and with equal units of length on both axes,\\nsuperimposed on a (chiefly) topographic map.", "The values of a point referred to a grid of rectangular coordinates."], "neat": ["Arranged neatly or in an organised fashion.", "Free from contaminants or extraneous elements."], "undiluted": ["Free from contaminants or extraneous elements."], "unadulterated": ["Free from contaminants or extraneous elements."], "bruise": ["A collection of blood in the body tissue outside the blood vessels", "Injury to biological tissue, generally caused by an impact, in which the capillaries are damaged, allowing blood to seep into the surrounding tissue.", "To injure, esp. without breaking the skin."], "contusion": ["A collection of blood in the body tissue outside the blood vessels", "Injury to biological tissue, generally caused by an impact, in which the capillaries are damaged, allowing blood to seep into the surrounding tissue."], "orphan": ["A person one or both of whose parents have died, especially a minor."], "at that time": ["At a given time in the past."], "forum": ["Antique Roman venue, which was the center of the public life."], "formerly": ["At a time in the past."], "in former times": ["At a time in the past."], "in the past": ["At a time in the past."], "negation": ["A statement that is a refusal or denial of some other statement."], "bulletin board": ["Virtual space in which things are discussed, questions are posed and answered and cogitations are swapped."], "thunder": ["Sound produced by fast air expansion induced by a lightning."], "tour of duty": ["A period of time spent on a specific assignment, especially on an overseas mission."], "creole": ["A stable language that originates seemingly as a \"new\" language, sometimes with features that are not inherited from any apparent source, without however qualifying in any appreciable way as a mixed language."], "descriptive term": ["A word (usually a common noun, an adjective or a phrase), e.g. printed\\nin a map, that designates a topographic feature by its properties, but\\nthat does not constitute a toponym."], "diglossia": ["A relatively stable linguistic situation in which two different varieties of\\na single language co-occur in a linguistic community, one (the\\n\"high\" variety) usually being the more formal and prestigious; the other\\n(the \"low\") variety being used in more informal settings, chiefly in\\nconversation.", "A situation where a given language community uses two languages or dialects."], "diphthong": ["Combination of two (or three, in triphthong) vocalic elements in a single\\nsyllable."], "endonym": ["Name of a geographical feature in one of the languages occurring in that area where the feature is situated."], "epotoponym": ["A toponym that constitutes the basis or origin of a common noun."], "exonym": ["Name used in a specific language for a geographical feature situated\\noutside the area where that language has official status, and differing in\\nits form from the name used in the official language or languages of the\\narea where the geographical feature is situated."], "hydronym": ["Toponym applied to a hydrographic feature."], "International Phonetic Alphabet": ["An internationally recognized set of symbols for phonetic transcription."], "minority language": ["In a specific region, a language that is different from the official\\nlanguage of State administration and that is spoken by a national\\nminority. It may or may not have official status."], "national language": ["Language in widespread and current use throughout a specific country\\nor in parts of its territory, and often representative of the identity of its\\nspeakers. It may or may not have the status of an official language."], "usable": ["Capable of being put to use.", "Able to be employed."], "urn": ["A vase, ordinarily covered and without handles that usually has a narrowed neck above a footed pedestal.", "A container into which cremated remains are placed and kept."], "violinist": ["A person who plays the violin."], "fiddler": ["A person who plays the violin."], "veil": ["A head covering."], "veterinarian": ["A doctor who practices veterinary medicine."], "veteran": ["A person who has served in the armed forces, especially an old soldier who has seen long service."], "pretend": ["To act as if something is true.", "To make an appearance of.", "To state something that is wrong or doubtful.", "(In imagination or play) To simulate belief (that)."], "guild": ["An association of people having a common interest that may be politic, social, econimic or professional, and who meet to help themselves mutually.", "A formal association of people with similar interests."], "vaunt": ["To show off."], "lash": ["To beat severely with a whip or rod.", "One of the hairs that grows on the eyelid, around the eyes."], "large-scale landed property": ["Huge estate property which is not being cultivated or on which extensive agriculture is being operated."], "crew": ["The whole of the worforce.", "The men and women who man a vehicle (ship, aircraft, etc.)"], "majoritarian": ["Concerning the majority."], "infuriated": ["Marked by extreme anger."], "crab": ["A decapod crustacean covered with a thick exoskeleton, and armed with a single pair of claws."], "generate": ["(especially of a male parent) to procreate or generate.", "To produce as a result of a chemical or physical process.", "To produce as return, as from an investment; to give or supply."], "gestation": ["The phase of conception and development of an idea or plan.", "The condition of being pregnant; the period from conception to birth when a woman carries a developing fetus in her uterus."], "be born": ["To start living."], "agrofuel": ["Fuel obtained as a product of agriculture biomass and by-product. It covers mainly biomass materials derived directly from fuel crops and agricultural, groindustrial and animal by-products."], "inflatable boat": ["A small boat equipped with outboard motor whose hull is made from one or more tubular air chambers."], "chromosomal aberration": ["An abnormal change in chromosome structure or number, including deficiency, duplication, inversion, translocation, aneuploidy, polyploidy, or any other change from the normal pattern.. Although it can be a mechanism for enhancing genetic diversity, most alterations are fatal or debilitating, especially in animals.\\n(source: FAO)"], "polymorphism": ["In genetics: The occurrence of allelic variation at a locus.", "In biology: the occurrence of two or more forms in a population.", "The ability to assume different forms or shapes.", "In crystallography: the ability of a solid material to exist in more than one form or crystal structure; pleomorphism."], "sandstorm": ["Storm or strong wind which carries dust or sand."], "dust storm": ["Storm or strong wind which carries dust or sand."], "polymerase": ["An enzyme that catalyses the formation of polymers from monomers."], "vexation": ["Anger produced by some annoying irritation"], "monomer": ["A small molecule (in the biological sciences typically individual amino acids, nucleotides or monosaccharides) that can combine with identical or similar others to form a larger, more complex molecule called a polymer."], "monogenic": ["Trait controlled by a single gene."], "variability": ["The degree to which a thing is variable.", "The quality of being changeable."], "variance": ["The degree to which a thing is variable.", "A measure of the dispersion of the distribution of a random variable."], "multigenic": ["Trait controlled by several genes, as opposed to monogenic."], "polygenic": ["Trait controlled by several genes, as opposed to monogenic."], "mitosis": ["Splitting of replicated chromosomes, and the division of the cytoplasm to produce two genetically identical daughter cells."], "metastasis": ["The spread of cancer cells to previously unaffected organs.", "A cancerous growth created by cancerous cells that have spread from a primary growth located elsewhere in the body."], "meiosis": ["The two-stage process in sexual reproduction by which the chromosome number is reduced from the somatic to the haploid number. The first division, in which homologous chromosomes pair and exchange genetic material, is followed by amitotic division. The nucleus divides twice, but the chromosomes only once, generating haploid nuclei, which develop into the gametes (egg and sperm in animals; egg and s in plants)."], "express": ["Main-line train which halts at big main-line stations only.", "To convey meaning.", "Public transport consisting of a fast bus that makes only a few scheduled stops."], "express train": ["Main-line train which halts at big main-line stations only."], "hinny": ["The offspring of a male horse and a female donkey."], "pedestrian": ["A person who is traveling on foot.", "Of roads or shopping areas which are mainly or exclusively for pedestrians."], "negative": ["Less than zero.", "Expressing or consisting of a negation or refusal or denial."], "liquefy": ["To make into a liquid.", "To become liquid."], "gainful": ["Producing a sizeable profit."], "loess": ["Any sediment, dominated by silt, of aeolian (wind-blown) origin."], "toponym": ["Proper noun applied to a topographic feature."], "cockchafer": ["European beetle of the genus Melolontha, in the family Scarabaeidae.", "Any of the large European beetles from the genus Melolontha."], "may bug": ["European beetle of the genus Melolontha, in the family Scarabaeidae."], "billy witch": ["European beetle of the genus Melolontha, in the family Scarabaeidae."], "string instrument": ["A musical instrument on which sounds are produced by setting strings in vibration."], "Weinsberg": ["A town in the district of Heilbronn in the German state Baden-W\u00fcrttemberg."], "truthful": ["Honest, and always expressing or given to expressing the truth.", "Conforming to truth."], "negotiator": ["A male person that negotiates something as a representative.", "A female person that negotiates something as a representative.", "Someone who confers with others in order to reach a settlement"], "bol\u00edvar": ["The currency of Venezuela, with code VEB."], "nepotism": ["The favoring of relatives or personal friends because of their relationship rather than because of their abilities."], "real": ["Being or reflecting the essential or genuine character of something."], "guaran\u00ed": ["The currency of Paraguay, with code PYG."], "boliviano": ["The currency of Bolivia, with code BOB."], "queue": ["Waiting line.", "To form a queue or a line; to stand in line."], "topography": ["The surface configuration of Earth or of another planet or a satellite, or of a portion thereof, including the planimetric and altimetric aspects, i.e. the situation in the map plane and the relief.", "Description and graphic representation of the surface configuration of Earth or of another planet or a satellite, or of a portion thereof."], "vernacular": ["Language or dialect native to a region, as distinct from the standard language."], "lancet": ["A narrow window having a lancet arch and without tracery.", "A sharp pointed, two-edged surgical instrument."], "unfair competition": ["Any act contrary to honest commercial practices. Acts contrary to honest commercial practices mean at least practices such as breach of contract, breach of confidence and inducement to breach, and includes the acquisition of undisclosed information by third parties who knew, or were grossly negligent in failing to know, that such practices were involved in the acquisition."], "pregnancy": ["The condition of being pregnant; the period from conception to birth when a woman carries a developing fetus in her uterus."], "lecturer": ["The name given to university teachers in their first permanent university position."], "lawn": ["A ground covered with grass kept closely mown."], "latrine": ["A very simple toilet facility, usually just a pit or trench."], "conditional": ["Conjugation tense of a verb."], "leeward": ["Away from the direction from which the wind is blowing."], "downwind": ["Away from the direction from which the wind is blowing."], "indicative": ["Conjugation mode of a verb."], "obesity": ["The state of being extremely overweight due to an excess of body fat."], "present perfect": ["Conjugation tense of a verb."], "ovulation": ["The release of an ovum from the ovary."], "American Sign Language": ["The dominant sign language of the Deaf community in the United States, in the English-speaking parts of Canada, and in parts of Mexico."], "imperative": ["Conjugation form of a verb."], "infinitive": ["Basic form of a verb."], "participle": ["a form of a verb that functions as an adjective and, when combined with an auxiliary verb (such as have or be), forms certain tenses of the verb"], "advertise a vacancy": ["To make known by means of a public communication."], "napkin": ["A rectangle of cloth or paper used at the table for wiping the mouth while eating.", "An absorbent garment worn by a baby who does not yet have voluntary control of its bladder and bowels or by someone who is incontinent."], "oligarch": ["Someone who is part of a small group that runs a country."], "olive": ["The small oval fruit of the olive tree, Olea europaea.", "Having the color of a ripe olive, a dark brownish or yellowish green.", "The color or a ripe olive, a dark brownish or yellowish green.", "A tree of the genus Olea cultivated for its fruit."], "Asia-Pacific Economic Cooperation": ["Established in November 1989, the Asia-Pacific Economic Cooperation (APEC) is the premier forum for facilitating economic growth, cooperation, trade and investment in the Asia-Pacific region. APEC members (21) are: Australia, Brunei Darussalam, Canada, Chile, People\u2019s Republic of China, Hong Kong, China, Indonesia, Japan, Republic of Korea, Malaysia, Mexico, New Zealand, Papua New Guinea, Peru, the Philippines, the Russian Federation, Singapore, Chinese Taipei, Thailand, United States, and Viet Nam."], "APEC": ["Established in November 1989, the Asia-Pacific Economic Cooperation (APEC) is the premier forum for facilitating economic growth, cooperation, trade and investment in the Asia-Pacific region. APEC members (21) are: Australia, Brunei Darussalam, Canada, Chile, People\u2019s Republic of China, Hong Kong, China, Indonesia, Japan, Republic of Korea, Malaysia, Mexico, New Zealand, Papua New Guinea, Peru, the Philippines, the Russian Federation, Singapore, Chinese Taipei, Thailand, United States, and Viet Nam."], "cold war": ["The period of conflict, tension and competition between the United States and the Soviet Union and their allies from the mid-1940s until the early 1990s."], "melt": ["To make a whole by melting.", "To diminish or disappear along the way.", "To liquefy by applying heat; to transform from solid to liquid state.", "To become soft or liquefied by heat."], "acuity": ["The visual ability to resolve fine detail.", "A quick and penetrating intelligence.", "Quickness, accuracy, and keenness of judgment or insight."], "acuteness": ["A quick and penetrating intelligence.", "Quickness, accuracy, and keenness of judgment or insight."], "addendum": ["A supplemental addition to a given main work."], "quintuple": ["To make five times as great.", "To become five times as great."], "Alicante": ["The capital city of the Alicante province in Spain.", "A province of eastern Spain, in the southern part of the Valencian Community. It is bordered by the provinces of Murcia on the southwest, Albacete on the west, Valencia on the north, and the Mediterranean Sea on the east. The province is named after its capital, the city of Alicante."], "vary": ["To change with time."], "adulation": ["Exaggerated and hypocritical praise.", "Flattery intended to persuade."], "variable": ["Able to vary.", "A symbolic representation used to denote a quantity or expression.", "Marked by diversity or difference."], "pallet": ["A flat transport structure designed to support a variety of goods in a stable fashion while being lifted by any mobile forklift or other jacking device."], "refrain": ["To resist doing something."], "quadruple": ["To make four times as great.", "To become four times as great."], "quadruplicate": ["To make four times as great."], "admirable": ["Deserving of the highest esteem or admiration."], "overhead projector": ["A gadget which projects a text or an image on a transparent foil through a mirror onto the wall."], "ibidem": ["At the same place."], "advance": ["To help to advance (in terms of knowledge).", "A payment for which accounting must be rendered by the recipient at a later date.", "To bring forward; to move towards the van or front; to make to go on.", "To give money or pay in advance."], "amicable": ["Generally warm, approachable and easy to relate with in character.", "Showing friendliness or goodwill."], "cultivar": ["A cultivated plant that has been selected and given a unique name because it has desirable characteristics (decorative or useful) that distinguish it from otherwise similar plants of the same species.\\n(source: Wikipedia)"], "The proof of the pudding is in the eating": ["A proverb which says that practical experiences should be prefered to theoretical cognition, wherefore someone should risk something without thinking about it long time."], "committed": ["Of a person or group who is bound or obligated, as under a pledge to a particular cause, action, or attitude."], "waterproof": ["Not permitting the passage of water.", "To make watertight."], "impermeable": ["Not permitting the passage of water."], "Algiers": ["The capital and largest city of Algeria."], "gangrenous": ["Afflicted with gangrene."], "robot": ["A signaling device to control the flow of traffic.", "Machine which settles a job with according to a program autonomously."], "humanoid robot": ["Autonomously operating machine with a stature which is based on the human stature."], "android": ["A robot which is very similar to the human."], "droid": ["A robot which is very similar to the human."], "science fiction": ["A form of literature or film which handles the future."], "body of water": ["The mass of water occupying all of the Earth's surface not occupied by land, but excluding all lakes and inland seas.", "Significant accumulation of water, covering the Earth or another planet."], "palatable": ["Pleasing to the sense of taste."], "sapid": ["Pleasing to the sense of taste."], "phenomenon": ["Event that is observable with the senses."], "observer": ["Someone who observes."], "obtrusive": ["Undesirably noticeable."], "forward allowance": ["The distance that a shooter aims ahead of a moving target in order to hit it with the projectile."], "galley": ["A kitchen on a ship."], "creep": ["An annoyingly unpleasant person.", "To move slowly with the body in a prone position resting on or close to the ground."], "lantern": ["A case of translucent or transparent material made to protect a flame, or light, used to illuminate its surroundings."], "anthracite coal": ["A natural black graphitelike material used as a fuel, formed from fossilized plants and consisting of more than 90% amorphous carbon with various organic and some inorganic compounds."], "financial incentive": ["Tax benefit or credit granted with the aim, for example, to promote the development of certain sectors or certain economic activities."], "fiscal incentive": ["Tax benefit or credit granted with the aim, for example, to promote the development of certain sectors or certain economic activities."], "embedded": ["To join between them two different elements."], "intact": ["Undamaged in any way.", "That has not been impaired or altered; lacking nothing essential, especially not damaged"], "anthracite": ["A natural black graphitelike material used as a fuel, formed from fossilized plants and consisting of more than 90% amorphous carbon with various organic and some inorganic compounds."], "embarrassment": ["State of uneasiness, due to the difficulty or the impossibility to adopt an appropriate behaviour."], "colostrum": ["Milk produced the first days after giving birth."], "limitation": ["The quality of being limited or restricted."], "constraint": ["The quality of being limited or restricted.", "The use of force or intimidation to obtain compliance."], "indolence": ["State of physical and mental inactivity resulting from a dislike of work."], "elevation": ["A geometrical projection of one of the faces of a building, or other object, on a plane perpendicular to the horizon."], "trigger": ["To produce the beginning of a process.", "A finger-operated lever used to fire a gun.", "An SQL procedure that may be initiated when a record is inserted, updated or deleted; typically used to maintain referential integrity."], "enframe": ["To wrap as a frame."], "alarming": ["Frightening because of an awareness of danger."], "tabloid": ["A newspaper having pages half the dimensions of the standard format, especially one that favours stories of a sensational nature over more serious news."], "white-tailed eagle": ["(Haliaeetus albicilla) Largest eagle of Europe."], "sea eagle": ["(Haliaeetus albicilla) Largest eagle of Europe."], "erne": ["(Haliaeetus albicilla) Largest eagle of Europe."], "ern": ["(Haliaeetus albicilla) Largest eagle of Europe."], "white-tailed sea-eagle": ["(Haliaeetus albicilla) Largest eagle of Europe."], "nongratuitous": ["What requires the acceptation of costs."], "for remuneration": ["What requires the acceptation of costs."], "tentacle": ["An elongated, boneless, flexible organ or limb of some animals, such as the octopus and squid."], "text": ["A written passage consisting of multiple glyphs, characters, symbols or sentences.", "To send a text message via mobile phone."], "thimble": ["A pitted, now usually metal, cap for the fingers, used in sewing to push the needle."], "thief": ["Someone who takes property belonging to someone else with the intention of keeping it or selling it."], "thread": ["A long, thin and flexible form of material, generally with a round cross-section, used in sewing, weaving or in the construction of string.", "A way for a program to fork (or split) itself into two or more simultaneously (or pseudo-simultaneously) running tasks. In general, a thread is contained inside a process and different threads in the same process share some resources while different processes do not. (source: Wikipedia)"], "tireless": ["Showing sustained enthusiastic action with unabating vitality"], "trainer": ["Someone who trains other persons or animals.", "Someone who trains athletes."], "weekly paper": ["A newspaper publication which appears once a week."], "evening newspaper": ["A newspaper which appears in the evening."], "evening paper": ["A newspaper which appears in the evening."], "brochure": ["Booklet that is used to distribute information."], "god-king": ["In historical societies, king who is believed to be a deity or to have godlike attributes and powers."], "divine king": ["In historical societies, king who is believed to be a deity or to have godlike attributes and powers."], "queen bee": ["The only sexually mature female in a colony of honeybees."], "transgress": ["To exceed or overstep some limit or boundary."], "queen wasp": ["The only sexually mature female in a wasp colony."], "prostate cancer": ["A malignant disease where tumors develop in the prostate."], "jerrycan": ["A robust fuel container made from pressed steel."], "Uyghur": ["A Turkic language spoken by the Uyghur people in Xinjiang."], "transient": ["Passing or disappearing with time.", "Lasting or existing for a short time only."], "transitory": ["Passing or disappearing with time.", "Lasting or existing for a short time only."], "trapeze": ["A swinging horizontal bar, suspended at each end by a rope."], "timely": ["Happening or appearing at the proper time."], "toga": ["A one-piece cloak worn by men in ancient Rome.", "A costume worn on formal occasions by the faculty or students of a university or college."], "intercept": ["To seize someone on its way.", "To tap a telephone or telegraph wire to get information."], "tombola": ["A lottery in which winning tickets are drawn from a revolving drum."], "transmutation": ["The transformation of one element into another by a nuclear reaction."], "tumult": ["The noise as made by a crowd."], "kennel": ["A shelter for a dog."], "doghouse": ["A shelter for a dog."], "karate": ["An Okinawan martial art involving primarily punching and kicking, but additionally, advanced throws, arm bars, grappling and all means of fighting."], "Kingston": ["The capital of Jamaica."], "marathon": ["A footrace of 26 miles 385 yards, 42,195 m."], "mausoleum": ["A large stately tomb or a building housing such a tomb or several tombs."], "marquetry": ["A decorative woodworking technique in which veneers of wood, ivory, metal etc. are inlaid into a wood surface to form intricate designs."], "mercenary": ["A person hired to fight for another country than their own."], "monoculture": ["Agriculture that uses a large area of land for production of a single crop year after year."], "mistral": ["A strong cold north-west wind in southern France and the Mediterranean."], "millipede": ["Any of numerous herbivorous nonpoisonous arthropods having a cylindrical body of 20 to 100 or more segments most with two pairs of legs."], "bribe": ["Something (usually money) given in exchange for influence or as an inducement to dishonesty.", "To give, or offer a bribe."], "Montserrat": ["A British Overseas Territory located in the Leeward Islands."], "Monrovia": ["The capital of Liberia."], "motet": ["A composition adapted to sacred words in the elaborate polyphonic church style"], "moustache": ["A growth of facial hair between the nose and the upper lip."], "mould": ["A frame or model around or on which something is formed or shaped.", "To create something, usually for a specific function.", "To form in clay, wax, etc."], "decisive": ["Determining or having the power to determine an outcome.", "Marked by promptness and decision.", "Pertaining to a conclusion."], "decoy": ["A person or object meant to lure something to danger.", "A small pond with a long cone-shaped wickerwork tunnel, used to catch wild ducks."], "abstinence": ["The voluntary forbearance of any action, especially the refraining from an indulgence of appetite, or from customary gratifications of animal or sensual propensities."], "panorama": ["An unbroken view of an entire surrounding area."], "pacifist": ["Someone who believes that violence of any kind is unjustifiable and that one should not participate in war."], "phytology": ["A branch of the biological sciences which embraces the study of plants and plant life."], "wisdom tooth": ["One of the four third molars in humans, which typically develop between ages 17-24."], "ecstasy": ["A trance or a trance like state in which an individual transcends normal consciousness.", "A chemically modified amphetamine that has hallucinogenic as well as stimulant properties."], "firearm": ["A bullet firing weapon."], "fire arm": ["A bullet firing weapon."], "eczema": ["An acute or chronic inflammation of the skin, characterized by redness, itching, and the outbreak of oozing vesicular lesions which become encrusted and scaly."], "egalitarian": ["Characterized by social equality and equal rights for all people."], "elegy": ["A mournful or plaintive poem."], "prelate": ["A clergyman of high rank and authority, having jurisdiction over an area or a group of people; normally a bishop."], "premonition": ["A strong intuition that something is about to happen."], "porridge": ["A hot breakfast cereal dish made from oatmeal, milk and water heated and stirred until thick."], "apply": ["To employ an object, often to reach a certain goal; to put into service.", "To have effectiveness or legal force, to be applicable.", "Apply to another thing (e.g. a surface).", "To ask (for something, e.g. a job, college, etc.).", "To avail oneself to (e.g. a principle, a religion, common sense, etc.)."], "hawthorn": ["Any of various shrubs and small trees of the genus Crataegus having small, apple-like fruits and thorny branches."], "enormous": ["Extremely large."], "possession": ["The right of having some degree of control over something.", "Everything that one possesses."], "ox": ["A bovine animal (bull or cow).", "A castrated bull."], "wallcreeper": ["Bird (Tichodroma muraria) of the family of the Sittidae who lives near chasms and rock faces."], "inquiry": ["A systematic investigation of a matter of public interest.", "Action of asking for information, a reply or response on a given subject.", "The act of inquiring or of seeking information by questioning."], "gas bladder": ["Internal organ filled with air with which fish can control their buoyancy."], "fish maw": ["Internal organ filled with air with which fish can control their buoyancy."], "swim bladder": ["Internal organ filled with air with which fish can control their buoyancy."], "air bladder": ["Internal organ filled with air with which fish can control their buoyancy."], "avarice": ["Excessive desire for possessions and wealth."], "misanthropy": ["Hatred of or dislike of people or mankind."], "fiduciary": ["A person who holds assets in trust for a beneficiary.", "Relating to or of the nature of a legal trust."], "trustee": ["A person who holds assets in trust for a beneficiary."], "buoyancy": ["The upward force on an object produced by the surrounding fluid (i.e., a liquid or a gas)."], "perverse": ["Deviating from what is considered right or proper or good."], "petal": ["One of the component parts, often colored, of the corolla of a flower."], "petrify": ["To harden organic matter by permeating with water and depositing dissolved minerals.", "To immobilize with fright.", "To become like stone, especially by petrifaction."], "unforeseen": ["Not foreseen, not expected."], "interlocutor": ["Someone who informally explains the views of a government and also can relay messages back to a government."], "arduous": ["Difficult to accomplish; demanding considerable mental effort and skill.", "Needing or using up much energy."], "intermittence": ["(of sound) The quality of being intermittent; subject to interruption or periodic stopping."], "frighten": ["To instill fear.", "To make someone afraid or anxious."], "daze": ["A dazed condition."], "hairsbreadth": ["A very short distance.", "Having the breadth of a hair; very narrow."], "entanglement": ["A complicated situation"], "evaporate": ["To transition from a liquid state into a gaseous state."], "epigram": ["A short, witty or pithy poem."], "adjourn": ["To delay or put off an event or an appointment."], "postpone": ["To delay or put off an event or an appointment.", "To put off until a later time.", "Euphemism for \"ignore\", that is, postpone until the hell freezes over."], "pheasant": ["A bird of the Phasianidae family, often hunted for food."], "anti-clockwise": ["In the opposite direction of how the hands of an analogue clock move."], "edict": ["A proclamation of law or other authoritative command."], "effort": ["The use of forces and means higher than normal in order to achieve a given purpose.", "A series of actions advancing a principle or tending toward a particular end."], "exertion": ["The use of forces and means higher than normal in order to achieve a given purpose."], "desist": ["To cease to proceed or act."], "catheter": ["A small tube inserted into a body cavity to remove fluid, create an opening, distend a passageway or administer a drug."], "caviar": ["The roe of the sturgeon, considered a delicacy."], "celibacy": ["The abstinence from sexual relations."], "celery": ["An edible European herb (Apium graveolens), belonging to the order of umbelliferae."], "sturgeon": ["A genus of fish (Acipenser) of which 26 species are known. One of the oldest genera of fish in existence, they are native to European, Asian, and North American waters. Their ovaries, which are of large size, are prepared for caviar,"], "apart": ["Separately, in regard to space or company; in a state of separation."], "cellist": ["Someone who plays the cello."], "Corfu": ["One of the Ionian Islands, Greece."], "corollary": ["A proposition which follows easily from the proof of another proposition."], "equator": ["An imaginary great circle around the earth, equidistant from the two poles, and dividing earth's surface into the northern and southern hemisphere."], "accretion": ["The imperceptible and gradual addition to land by the slow action of water.", "The formation of a celestial object by the effect of gravity pulling together surrounding objects and gases."], "acquiescence": ["Action or inaction which binds a person legally even though it was not intended as such."], "sisterhood": ["Expression of solidarity among women."], "time unit": ["A measure of periods of time like second, hour, day, year or century."], "ejaculation": ["The forcible ejection of semen from the mammalian urethra, a reflex in response to sexual stimulation."], "boat trip": ["A trip in a boat."], "equivalent": ["Similar or identical in value, meaning or effect.", "Anything that is virtually equal to something else.", "Of two sets, having a one-to-one relationship.", "Relating to the corresponding elements of an equivalence relation.", "Having the equal ability to combine.", "Of a map, having the property that equal areas on the map represent equal areas on the mapped surface."], "corrode": ["To become destroyed by water, air, or an etching chemical such as an acid.", "To cause to deteriorate due to the action of water, air, or an acid."], "damask": ["A figured fabric of silk, wool, linen, cotton, or synthetic fibers.", "Hard, flexible steel with wavy patterns that was popular in the Middle Ages especially for sword blades."], "diacritic": ["A special mark added to a letter to indicate a different pronunciation, stress, tone, or meaning.", "Capable of distinguishing."], "triple": ["To make three times as great.", "To become three times as great.", "Composed of three elements or parts.", "In mathematics, an ordered list of three elements."], "treble": ["To make three times as great.", "To become three times as great."], "triplicate": ["To make three times as great."], "coconut milk": ["The liquid inside a coconut, which is usually white, like milk."], "orange juice": ["A beverage made of the juice squeezed from an orange, popularly served at breakfast and used in some recipes and drinks."], "OJ": ["A beverage made of the juice squeezed from an orange, popularly served at breakfast and used in some recipes and drinks."], "henagon": ["Polygon with one side and one vertex. In Euclidean geometry, a henagon is usually considered to be an impossible object. However, in spherical geometry it can be drawn by placing a single vertex anywhere on a great circle."], "sialagogue": ["Any drug or other substance that makes the mouth salivate."], "ptyalagogue": ["Any drug or other substance that makes the mouth salivate."], "apple juice": ["A sweet drink made from the pulp of apples processed for their juice."], "unflagging": ["Showing sustained enthusiastic action with unabating vitality"], "career": ["An individual\u2019s work and life roles over their lifespan."], "catapult": ["A device or weapon for throwing or launching large objects."], "combat": ["To fight; to struggle for victory.", "A battle, a fight (often one in which weapons are used); a struggle for victory.", "Struggle for superiority."], "trasportare": ["To change the location or place of."], "relate": ["To be relevant or of importance to.", "To tell in a descriptive way.", "To give an association."], "give back": ["To bring something in order to put it back where it was.", "To transfer a good to the person or people it came from, or to their legal successors."], "apostasy": ["The renunciation of a belief or set of beliefs."], "seismology": ["A branch of geophysics that studies, describes and measures seismic waves from earthquakes."], "obviate": ["To bypass a requirement or make it unnecessary."], "jocular": ["Playful and characterized by jokes."], "brio": ["Quality of being active or spirited or alive and vigorous."], "in a trice": ["In a very short time; an instant; in a moment."], "shoot dead": ["To kill a person or an animal with a shot from a firearm."], "Channel Islands": ["A group of islands in the English Channel."], "empower": ["To give or delegate power, authority or ability."], "endive": ["A leafy salad vegetable Cichorium endivia.", "A variety of endive (Cichorium endivia var. latifolium) having leaves with irregular frilled edges and often used in salads."], "entrapment": ["Action by law enforcement personnel to lead an otherwise innocent person to commit a crime, in order to arrest and prosecute that person for the crime."], "investigator": ["Someone who investigates by carefully analyzing each clue.", "A scientist who devotes himself to doing research."], "epilepsy": ["A medical condition in which the sufferer experiences seizures and blackouts."], "hypocrite": ["Someone who dissembles."], "Epiphany": ["A Christian feast intended to celebrate the \"shining forth\" or revelation of God to mankind in human form, in the person of Jesus."], "island group": ["A cluster of several islands."], "island chain": ["A group of islands where the islands are stringed together like in a chain."], "deserted": ["Left behind by the owner or keeper.", "Without people."], "epilogue": ["A short speech, spoken directly at the audience at the end of a play.", "A brief oration or script at the end of a literary piece."], "equidistant": ["Occupying a position midway between two ends or sides.", "Describing a map projection that preserves scale."], "eradicate": ["To destroy completely leaving no trace.", "To kill in large numbers."], "extirpate": ["To surgically remove.", "To destroy completely leaving no trace.", "To pull up by the roots."], "eyebrow": ["The hair that grows over the bone ridge above the eye socket."], "facsimile": ["An exact copy or reproduction."], "big fish in a small pond": ["A very important person in a small group."], "flammable": ["Easily set on fire.", "Capable of burning."], "flange": ["An external or internal rib or rim, used either to add strength or to hold something in place."], "combustible": ["Capable of burning."], "andragogy": ["The art and science of helping adults learn."], "artificial intelligence": ["The science and engineering of making intelligent machines."], "blended learning": ["A curriculum that combines multiple types of media. Typically, it refers to a combination of classroom-based classes with self-paced e-learning."], "collaborative learning": ["A variety of approaches in education that involve joint intellectual effort by students or students and teachers."], "competency": ["A knowledge, skill or attitude that is required for job performance."], "competence": ["A knowledge, skill or attitude that is required for job performance."], "yesterday's": ["Occurred or experienced yesterday; relative to yesterday.", "Of the day before today."], "flannel": ["A soft cloth material woven from wool, possibly combined with cotton or synthetic fibers."], "of yesterday": ["Occurred or experienced yesterday; relative to yesterday."], "chamomile tea": ["Tea made from dried chamomile flowers."], "offspring": ["Living being as genetically proceeding from an other one.", "Those who descend from a biological ancestor, through any number of generations."], "motorcyclist": ["Someone who drives a motorcycle."], "peppermint tea": ["Tea made from dried peppermint leaves."], "motorbike": ["Single-track, two-wheeled motor vehicle."], "mint tea": ["Tea made from dried peppermint leaves."], "gregarious": ["One who enjoys being in crowds and socializing."], "labyrinthine": ["Related to a labyrinth; resembing a labyrinth.", "Intricate or confusing."], "mazy": ["Intricate or confusing."], "genotype": ["The genetic composition, alleles, of an individual in total or at a specific locus."], "gentile": ["Person who doesn't believe in the God of the Bible and is neither Christian, Jewish nor Muslim.", "Belonging to or characteristic of non-Jewish peoples.", "A non-Jewish person.", "A religious person who believes Jesus is the Christ and who is a member of a Christian denomination."], "Gibraltar": ["A British overseas territory located near the southernmost tip of the Iberian Peninsula."], "litigious": ["Inclined to engage in lawsuits."], "local": ["Of or belonging to or characteristic of a particular locality or neighbourhood."], "geyser": ["A boiling spring which throws forth at frequent intervals jets of water, mud, etc., driven up by the expansive power of steam."], "ghost": ["The visible disembodied soul of a dead person."], "speleology": ["The branch of nature sciences concerned with the study of caves."], "iced coffee": ["Chilled coffee served with milk, whipped cream, ice cream or ice cubes."], "ice cube": ["A small piece of roughly cube-shaped ice which is used to cool beverages."], "lipstick": ["Makeup that is used to color the lips."], "ice-blue": ["Having a greenish-blue colour."], "blue-eyed": ["Having blue eyes."], "green-eyed": ["Having green eyes."], "brown-eyed": ["Having brown eyes."], "black-eyed": ["Having black eyes."], "dark-eyed": ["Having dark eyes."], "light-eyed": ["Having light eyes."], "E-Learning": ["Using technology to deliver learning and training programs."], "Linux": ["A free Unix-like operating system kernel created by Linus Torvalds based on previous Minix work from Andrew Tannenbaum and released under the GNU General Public License. (source: Wikipedia)"], "realtime": ["(Of a system) That responds to events or signals within a predictable time after their occurence."], "real-time": ["(Of a system) That responds to events or signals within a predictable time after their occurence."], "determinism": ["The doctrine that all actions are determined by the current state and immutable laws of the universe, with no possibility of choice.", "The property of having behavior determined only by initial state and input."], "latency": ["A delay, a period between the initiation of something and its occurrence."], "finite": ["Limited, constrained by bounds, impermanent."], "metaphysics": ["The branch of philosophy concerned with explaining the nature of reality, being, and the world."], "methanol": ["A colourless, toxic, inflammable liquid. The simplest aliphatic alcohol, CH3OH."], "mezzanine": ["A balcony in an auditorium.", "An intermediate floor between main floors of a building."], "entresol": ["An intermediate floor between main floors of a building."], "sabotage": ["A deliberate action aimed at weakening an enemy through subversion, obstruction, disruption, and/or destruction.", "To destroy property or hinder normal operations."], "saddle": ["To put on a packsaddle.", "A saddle created to secure and carry goods on an animal.", "A seat (tack) for a rider placed on the back of a horse or other animal.", "To put a saddle on an animal.", "A backless seat for the rider of vehicles such as a bicycle, motorcycle, etc.", "To load or burden; encumber.", "To put on a saddle."], "sapphire": ["A clear deep blue variety of corundum, valued as a precious stone.", "Made of or consisting of sapphire.", "Having the color of a blue sapphire."], "satin": ["A cloth woven from silk, nylon or polyester with a glossy surface and a dull back."], "scarce": ["Deficient in quantity or number compared with the demand.", "Only a very short time before."], "scent": ["An odor left in passing by which a person or animal can be traced."], "false gharial": ["A fresh-water reptile, resembling a crocodile with a very thin and elongated snout resembling that of the gharial, hence its name."], "Malayan gharial": ["A fresh-water reptile, resembling a crocodile with a very thin and elongated snout resembling that of the gharial, hence its name."], "Tartu": ["The second largest city of Estonia, situated 186 km southeast of Tallinn."], "Turku": ["The oldest and fifth largest city in Finland, located in the southwest of the country."], "tandem": ["A bicycle with two seats, two sets of pedals, and two wheels."], "tangent": ["A topic nearly unrelated to the main topic, but having a point in common with it."], "telex": ["A communications system consisting of a network of teletypewriters."], "tetanus": ["A serious and often fatal disease arising through infection of an open wound by the anaerobic bacterium Clostridium tetani that is found in soil and the intestines and faeces of animals."], "springlike": ["Like in spring."], "vernal": ["Like in spring.", "Characteristic of young people."], "Dutch Revolt": ["The revolt of the Netherlands against the Spanish king which lasted from 1568 to 1648 and ended with the Netherlands attaining independence."], "Eighty Years' War": ["The revolt of the Netherlands against the Spanish king which lasted from 1568 to 1648 and ended with the Netherlands attaining independence."], "theocracy": ["Government under the control of a Church or state-sponsored religion."], "Guillaume Affair": ["German espionage scandal in 1974 involving G\u00fcnter Guillaume, a close assistant of chancellor Willy Brandt who was discovered to be a spy of the German Democratic Republic."], "tuxedo": ["A typically black formal jacket worn by men."], "stratigraphy": ["A branch of geology, studies rock layers and layering (stratification)."], "vehement": ["Marked by extreme intensity of emotions or convictions."], "diarrhea": ["A condition in which the sufferer has frequent and watery bowel movements."], "arithmetic series": ["Sequence of numbers, whose elements are the sum of the first n elements of an arithmetic sequence."], "exoplanet": ["Planet that orbits a star other than the Sun."], "extrasolar planet": ["Planet that orbits a star other than the Sun."], "edentulous": ["Lacking teeth."], "toothless": ["Lacking teeth."], "agomphious": ["Lacking teeth."], "pampa": ["Any of the large, grassy plains of temperate South America."], "telluric planet": ["A planet that is primarily composed of silicate rocks."], "rocky planet": ["A planet that is primarily composed of silicate rocks."], "minotaur": ["A monster with the head of a bull and the body of a man."], "Minotaur": ["A minotaur who dwelled in the labyrinth in Crete and who was killed by Theseus."], "mission": ["A duty that involves fulfilling a request."], "missionary": ["A person who travels attempting to spread a religion or a creed."], "mockery": ["Something so lacking in necessary qualities as to inspire ridicule.", "Showing one's contempt by derision."], "travesty": ["Something so lacking in necessary qualities as to inspire ridicule."], "modernist": ["A follower or proponent of modernism."], "molasse": ["The terrestrial deposits eroded from a mountain chain and deposited in a foreland basin, especially on top of flysch."], "molasses": ["A thick brownish syrup produced in the refining of raw sugar."], "treacle": ["A thick brownish syrup produced in the refining of raw sugar."], "monarchist": ["An advocate of monarchy."], "motherhood": ["The feelings and needs felt by a mother for her offspring."], "maternity": ["The feelings and needs felt by a mother for her offspring."], "Murcia": ["An autonomous community in south-eastern Spain.", "The capital city of the region of Murcia"], "nostril": ["Either of the two orifices located on the nose (or on the beak of a bird); used as a passage for air and other gases to travel the nasal passages."], "decrease in voltage": ["A partial power outage, a disruption in electric power supply that reduces the voltage available causing lights to dim."], "water stress": ["A phenomenon which occurs when plants are unable to absorb enough water to replace that lost by transpiration. Short-term water stress leads to turgor loss (wilting). Prolonged stress leads to cessation of growth, and eventually plant death."], "shoot tip": ["The terminal bud (0.1 - 1.0 mm) of a plant, which consists of the apical meristem (0.05 - 0.1 mm) and the immediately surrounding leaf primordia and developing leaves, and adjacent stem tissue."], "shoot apex": ["The terminal bud (0.1 - 1.0 mm) of a plant, which consists of the apical meristem (0.05 - 0.1 mm) and the immediately surrounding leaf primordia and developing leaves, and adjacent stem tissue."], "water potential": ["The pressure gradient that induces the flow of water, particularly with reference to plant water uptake from the soil, comprising the net effects of suction, solutes and matric forces."], "wall pressure": ["Pressure that a cell wall exerts against the turgor of the cell contents. Wall pressure is equal and opposite to the turgor potential."], "wetting agent": ["A substance (usually a detergent) that improves the contact of a liquid to a solid surface by reducing its surface tension."], "allele": ["A variant form of a gene."], "aqueous": ["Similar to the water; containing a lot of water."], "watery": ["Similar to the water; containing a lot of water."], "Bangkok": ["The capital of Thailand."], "Phnom Penh": ["The capital and largest city of Cambodia. It is one of four municipalities that are administratively on the level of khet or provinces."], "goodness": ["the quality of being good", "The nutritional, healthy part of something.", "Moral excellence; integrity of character; purity of soul; performance of duty."], "water-repellent": ["That slows the penetration of water (but is not waterproof)."], "water-resistant": ["That slows the penetration of water (but is not waterproof)."], "the day after tomorrow": ["On the day following tomorrow."], "the day before yesterday": ["On the day before yesterday."], "round sardinella": ["The sea fish whose scientific name is \"Sardinella aurita\"."], "palm": ["Any of various evergreen trees from the family Palmae or Arecaceae, which are mainly found in the tropics.", "The inner and somewhat concave part of the human hand that extends from the wrist to the bases of the fingers."], "micropropagation": ["Miniaturized in vitro multiplication and/or regeneration of plant material under aseptic and controlled environmental conditions."], "aseptic": ["Sterile, free of contaminating organisms."], "symbiont": ["An organism living in symbiosis with another, dissimilar organism."], "plasmolysis": ["Shrinkage of protoplasm caused by removal of water from a cell through osmosis when surrounded by a hypertonic solution."], "culture medium": ["A liquid or gel designed to support the growth of microorganisms, cells or small plants.", "Any nutrient system for the cultivation of cells, bacteria or other organisms; usually a complex mixture of organic and inorganic nutrients."], "mammary gland": ["The milk-producing organ of female mammals."], "meiotic analysis": ["The use of patterns of chromosome pairing at meiotic prophase and metaphase to detect relationships between chromosomes, from which can be deduced the relationship between the parents of the organism studied."], "prophase": ["The first stage of nuclear division. The stage during which chromosome pairing occurs in the first division of meiosis."], "metaphase": ["Stage of mitosis or meiosis (following prophase and preceding anaphase) during which the chromosomes, or at least the kinetochores, lie in the central plane of the spindle. The stage of maximum chromosome condensation, at which karyotypes are generally described."], "anaphase": ["The stage of mitosis or meiosis during which the daughter chromosomes migrate to opposite poles of the cell."], "telophase": ["The last stage in each mitotic or meiotic division, in which the chromosomes coalesce at each pole of the dividing cell.\\n(source: FAO)"], "gamete": ["A mature reproductive cell which is capable of fusing with a cell of similar origin but of opposite sex to form a zygote from which a new organism can develop."], "zygote": ["The diploid cell formed by the fusion of two haploid gametes during fertilization in eukaryotic organisms with sexual reproduction.\\n(source: FAO)"], "diploid": ["The status of having two complete sets of chromosomes, most commonly one set of paternal origin and the other of maternal origin."], "haploid": ["A cell or organism containing one of each of the pairs of homologous chromosomes found in the normal diploid cell.\\n(source: FAO)"], "abolitionist": ["A person who favors the abolition of any institution, especially slavery."], "microminiaturization": ["The technology of constructing circuits and devices in extremely small packages by various techniques.\\n(Source: MGH)"], "microsystem electronics": ["The technology of constructing circuits and devices in extremely small packages by various techniques.\\n(Source: MGH)"], "semipermeable membrane": ["Membrane through which the molecules of a solvent can pass but the molecules of most solutes cannot. (Source: DICCHE)"], "micron": ["A measure of length; the thousandth part of one millimeter; the millionth part of a meter."], "microphone": ["A device used to convert sound waves into a varying electric current."], "abrogation": ["An official or legal cancellation."], "water-skier": ["A person who water-skis."], "waterskier": ["A person who water-skis."], "water beetle": ["Any of various freshwater aquatic beetles that have a smooth oval body and flattened hind legs adapted for swimming, and that carry an air bubble underneath their abdomens."], "water buffalo": ["A large ungulate, widely used as a domestic animal in Asia."], "episode": ["A program in a television series.", "A happening that is distinctive in a series of related events."], "epistle": ["A writing directed or sent to a person or group of persons."], "ergotherapy": ["Treatment of disease by muscular exercise."], "eruption": ["A violent ejection, such as the spurting out of lava from a volcano.", "Water that is pumped out, or that streams naturally out of a region."], "escalope": ["A thin slice of meat, especially veal or poultry."], "cutlet": ["A thin slice of meat, especially veal or poultry."], "naval power": ["A country which posesses a strong navy and a strategically favorable position."], "sea power": ["A country which posesses a strong navy and a strategically favorable position."], "evocation": ["Calling up supposed supernatural forces by spells and incantations.", "Imaginative re-creation."], "abstract data type": ["A set of data values and associated operations that are precisely specified independent of any particular implementation.\\n(fuente: NIST)"], "escrow": ["A deed, bond, or other written engagement, held by a third person until some act is done or some condition is performed."], "Ackermann's function": ["A function of two parameters whose value grows very fast."], "asymptote": ["A straight line which a curve approaches arbitrarily closely, but never reaches, as they go to infinity."], "complexity": ["The intrinsic minimum amount of resources, for instance, memory, time, messages, etc., needed to solve a problem or execute an algorithm.\\n(source: NIST)"], "complexity class": ["Any of a set of computational problems with the same bounds on time and space, for deterministic and nondeterministic machines.\\n(source: NIST)", "In computational complexity theory, a set of problems of related resource-based complexity."], "decision problem": ["A problem with a \"yes\" or \"no\" answer. Equivalently, a function whose range is two values, such as {0,1}.\\n(source: NIST)"], "graph": ["In mathematics and computer science, an abstract representation of a set of items connected by edges. Each item is called a vertex or node. Formally, a graph is a set of vertices and a binary relation between vertices, adjacency.\\n(source: NIST)", "In mathematics, a visual representation of the relations between certain quantities plotted according to a set of axes.", "To visually represent by means of a graph."], "depth-first search": ["Any graph search algorithm that considers outgoing edges of a vertex before any neighbors of the vertex, that is, outgoing edges of the vertex's predecessor in the search.\\n(source: NIST)"], "breadth-first search": ["A graph search algorithm that considers neighbors of a vertex, that is, outgoing edges of the vertex's predecessor in the search, before any outgoing edges of the vertex.\\n(source: NIST)"], "dejection": ["A state of melancholy or depression."], "demarcation": ["The act of marking off a boundary or setting a limit."], "arithmetic mean": ["The mean of a list of N numbers calculated by dividing their sum by N."], "geometric mean": ["The Nth root of the product of N numbers."], "free software": ["Software that everyone is free to copy, redistribute and modify."], "deplete": ["To use up resources or materials.", "To reduce by destroying or consuming the vital powers of."], "source code": ["The form in which a computer program is written by the programmer."], "Gregorian calendar": ["The system of dates used by most of the world, decreed by and named after, Pope Gregory XIII in 1582."], "web mail": ["An electronic mail user agent that is accessible on the web (via HTTP).\\n(Source: FOLDOC)"], "crowbar": ["A tool consisting of a metal bar with a single curved end and flattened points, often with a small fissure on the curved end for removing nails."], "anime": ["Traditional hand painted cel animation, but also applies to animation created in part or in whole by computers."], "multiply": ["To perform a multiplication on a number."], "electrophotography": ["A photocopying process in which a negative image formed on an electrically charged plate is transferred as a positive to paper and thermally fixed."], "biathlon": ["A winter sport combining cross-country skiing and rifle shooting."], "genesis": ["The point at which something comes into being."], "genital": ["Any of those parts of the body which are involved in sexual reproduction and constitute the reproductive system in an complex organism.", "An externally visible sex organ that is used for sexual intercourse."], "bobsleigh": ["A winter sport in which teams make timed runs down narrow, twisting, banked purpose-built iced tracks in a gravity-powered sled."], "geranium": ["The common name for flowering plants of the genus Pelargonium.", "Any flowering plant of the genus Geranium, the cranesbills, of the family Geraniaceae."], "winter sport": ["Any sport, originally only played during the winter, that is played on ice or snow."], "SignWriting": ["A script for writing the movements, handshapes and facial expressions of sign languages."], "ISO 15924 codes": ["Collection of OmegaWiki for the registration of the ISO 15924 scripts."], "oboist": ["A musician who plays the oboe."], "observable": ["There to be observed.", "Any physical property that can be observed and measured directly and not derived from other properties."], "observatory": ["A place where stars, planets and other celestial bodies are observed, usually through a telescope."], "obsession": ["An unhealthy and compulsive preoccupation with something or someone."], "straight line": ["An infinitely long, infinitely thin, not bent line in geometry."], "ogre": ["One of a class of brutish giants that eat human flesh."], "oligopoly": ["An economic condition in which a small number of sellers exert control over the market price of a commodity."], "Olympus": ["The highest mountain in Greece and the home of the 12 principal gods in the Greek pantheon."], "operetta": ["A lighter version of opera with a frivolous story and spoken dialogue."], "orbital": ["Of, or related to an orbit.", "A specification of the energy and probability density of an electron at any point in an atom or molecule."], "orchid": ["Any of numerous plants of the orchid family usually having flowers of unusual shapes and beautiful colours."], "water clock": ["A device for measuring time by letting water regularly flow out of a container, usually through a tiny aperture."], "clepsydra": ["A device for measuring time by letting water regularly flow out of a container, usually through a tiny aperture."], "orchestration": ["The arrangement of music for performance by an orchestra."], "ovary": ["A female reproductive organ, often paired, that produces ova and in mammals secretes the hormones oestrogen and progesterone.", "The lower part of a pistil or carpel that bears ovules and ripens into fruit."], "slovenliness": ["Habitual uncleanliness."], "modify": ["To make different.", "To make partial changes.", "To add a modifier to a constituent."], "alter": ["To make different.", "To make partial changes.", "To change the form or structure of."], "water butt": ["An open-ended barrel used to contain rainwater; a rain barrel."], "rain-barrel": ["An open-ended barrel used to contain rainwater; a rain barrel."], "methodical": ["Characterized by method and orderliness."], "falsify": ["To alter so as to mislead."], "adulterate": ["To spoil by adding impurities."], "Fallopian tube": ["Either of a pair of very fine tubes leading from the ovaries of female mammals into the uterus."], "diminish": ["To find the difference between two quantities.", "To make smaller."], "wane": ["To make smaller.", "(of the moon) To decrease in phase."], "ostrich": ["A large flightless bird native to Africa."], "water cannon": ["A device that shoots a high-pressure stream of water."], "philosophical": ["Regarding abstractions, namely, concepts, ideas, thoughts etc.(Adj.; Re. Philosophy; Source: IPDF)", "Of or pertaining to philosophy."], "philosophic": ["Of or pertaining to philosophy."], "Britain": ["An island lying off the northwestern coast of mainland Europe, comprising the main territory of the United Kingdom."], "eighteenth": ["The ordinal form of the number eighteen."], "vulture": ["Any of several carrion-eating birds of the families Accipitridae and Cathartidae."], "treatise": ["A formal, usually lengthy, systematic discourse on some subject."], "chaos theory": ["The study of iterative non-linear systems in which arbitrarily small variations in initial conditions become magnified over time."], "fractal": ["A geometric figure that repeats itself under several levels of magnification."], "vineyard": ["A grape plantation."], "butterfly effect": ["The technical notion of sensitive dependence on initial conditions in chaos theory."], "vivacity": ["Being attractively lively and animated."], "tabula rasa": ["The idea that the mind comes into this world as a \"Blank Slate\"."], "virtuous": ["Full of virtue, having excellent moral character.", "Of moral excellence."], "academic": ["Regarding abstractions, namely, concepts, ideas, thoughts etc.(Adj.; Re. Philosophy; Source: IPDF)", "Belonging to an academy.", "Belonging to a higher institution of learning; scholarly."], "hormone": ["Any substance, produced by one tissue and conveyed by the bloodstream to another to effect physiological activity."], "apathy": ["The trait of lacking enthusiasm for or interest in things generally."], "Milan": ["Italian City and capital of the province of Milan.", "A province in the Lombardy region of Italy."], "mayonnaise": ["A dressing made from raw egg yolks, oil and seasoning."], "matron": ["A housekeeper; especially, a woman who manages the domestic economy of a public institution; a head nurse in a hospital; as, the matron of a school or hospital."], "valuable": ["Having worth or merit or value.", "Being of high value."], "viable": ["Capable of being done with means at hand and circumstances as they are.", "Capable of life or normal growth and development."], "feasible": ["Capable of being done with means at hand and circumstances as they are."], "veterinary": ["Of, or related to, the medical care of animals.", "A doctor who practices veterinary medicine."], "flint": ["A hard, fine-grained quartz that generates sparks when struck."], "flintstone": ["A hard, fine-grained quartz that generates sparks when struck."], "fleet": ["A group of vessels or vehicles."], "schism": ["A formal division or split within a religious body."], "atheist": ["A person who does not believe that deities exist."], "Salmonella": ["A genus of rod-shaped, Gram-negative bacteria that are a common cause of food poisoning."], "sepsis": ["Destruction of tissue by pathogenic micro-organisms or their toxins, especially through infection of a wound."], "serology": ["The study of serum reactions between an antigen and its antibody."], "serum": ["Blood plasma that has had its clotting factor removed."], "propagule": ["Any structure capable of giving rise to a new plant by asexual or sexual reproduction, including bulbils, leafbuds, etc.\\n(source: FAO)"], "somatic": ["Referring to cell types, structures and processes other than those associated with the germ line.\\n(source: FAO)"], "germ line": ["A lineage of cells which, during the development of an organism, are set aside as potential gamete-forming tissues."], "somatic cell": ["Cells not involved in sexual reproduction, i.e. not germ cells."], "sonication": ["Disruption of cells or DNA molecules by high frequency sound waves."], "specificity": ["For diagnostic tests, the ability of a probe to react precisely and uniquely with its target molecule."], "probe": ["(in genetics) A labelled DNA or RNA sequence used to detect the presence of a complementary sequence by hybridization with a nucleic acid sample.\\n(source:FAO)"], "macromolecule": ["Any high molecular weight molecule. Often used as a synonym for polymers."], "somatic hybridization": ["Naturally occurring or induced fusion of somatic protoplasts or cells of two genetically different parents."], "protoplast": ["A bacterial or plant cell for which the cell wall has been removed either chemically or enzymatically, leaving its cytoplasm enveloped by a peripheral membrane."], "cytoplasm": ["The living material of the cell, exclusive of the nucleus, consisting of a complex protein matrix or gel, and where essential membranes and cellular organelles (mitochondria, plastids, etc.) reside."], "panicle": ["An inflorescence, the main axis of which is branched; the branches bear loose racemose flower clusters.\\n(source: FAO)"], "panmixis": ["Random mating in a population."], "explant": ["A portion of a plant aseptically excised and prepared for culture in a nutrient medium."], "halophyte": ["A plant species adapted to soils containing a concentration of salt that is toxic to most plant species. See: salt tolerance."], "hapten": ["A small molecule, which by itself is not an antigen, but which as a part of a larger structure when linked to a carrier protein, can serve as an antigenic determinant."], "waitress": ["A female attendant who serves customers in a restaurant, cafe, or similar.", "To serve in a restaurant."], "walrus": ["A large Arctic marine mammal (Odobenus rosmarus), related to seals and having long tusks, tough, wrinkled skin, and four flippers."], "watchdog": ["A dog that guards a house or a herd.", "A guardian or defender against theft or illegal practices or waste.", "A software or hardware utility that monitors for specific system events and failures and when they occur executes a preconfigured action."], "web": ["The silken structure a spider builds using silk secreted from the spinnerets at the caudal tip of its abdomen."], "spider web": ["The silken structure a spider builds using silk secreted from the spinnerets at the caudal tip of its abdomen."], "British Sign Language": ["The sign language used in the United Kingdom."], "shooting star": ["A streak of light in the sky at night that results when a meteoroid hits the earth's atmosphere."], "wholesaler": ["Someone who buys large quantities of goods and resells to merchants rather than to the ultimate customers ."], "falling star": ["A streak of light in the sky at night that results when a meteoroid hits the earth's atmosphere."], "water lily": ["Any of various members of the Nymphaeaceae family that are tuberous plants, rooted in soil with leaves and flowers floating on the water surface."], "tetradecagon": ["A polygon with 14 sides."], "octadecagon": ["A polygon with 18 sides."], "polka": ["A lively dance originating in Bohemia."], "portion": ["An allocated amount.", "Something determined in relation to something that includes it.", "To assign to someone as his or her lot.", "A predetermined amount of a food given to a person."], "usury": ["The practice of lending money with exorbitant interest rates in excess of any legal or fair rates."], "usurp": ["Seize and take control without authority and possibly with force."], "goose": ["Waterfowl of the Anatidae family."], "access to education": ["Conditions, circumstances or requirements governing admittance to educational institutions or programmes. \\n(source: UNESCO)"], "cultural action": ["Efforts tending to develop culture in the broadest meaning of the term, with reference to community development, freedom of expression and free choice of life style."], "accreditation": ["Procedure by which an authoritative body gives formal recognition that a body or person is competent to carry out specific tasks. (Source OAS)", "(in education) Recognition and approval of the academic standards of an educational institution by some external, impartial body of high public esteem."], "ureter": ["Either of the two long, narrow ducts that carry urine from the kidneys to the urinary bladder."], "undecagon": ["A polygon with eleven sides and eleven angles."], "cultural activity": ["All types of activities tending to enhance cultural life through cultural animation and cultural values promotion. Use more specific descriptor where appropriate."], "solar activity": ["Includes solar wind, flares, prominences, sunspots."], "acculturation": ["Phenomena which result when groups of individuals of different cultures come into continuous contact, with subsequent changes in the original cultural patterns of either or both groups."], "biological adaptation": ["A genetically determined characteristic that enhances the ability of an organism to cope with its environment."], "anthology": ["A collection of works of various authors or of one author selected for a specific purpose or under specific aspects."], "digital art": ["Art created using digital technologies."], "management audit": ["The systematic appraisal of management methods by teams from either the organization or outside."], "self instruction": ["Learning by oneself without the aid of a teacher."], "automation": ["The act or practice of using machines that need little or no human control, especially to replace workers."], "humanitarian assistance": ["Any material assistance or intercession by the international community in troubled areas for purely humanitarian ends."], "bibliology": ["The systematic study of the properties and characteristics of books in relation to the publication process or to the techniques of printing, production and marketing."], "digital library": ["Organized collections of information resources in digital or electronic format along with the services designed to help users identify and use those collections."], "national library": ["A library which is responsible for acquiring and conserving copies of all significant publications published in the country and may function as a \"legal deposit library\"."], "public library": ["A library which serves the population of a community or region free of charge or for a nominal fee.", "Library managed by the city which is open for the public."], "biogenesis": ["The theory that living organisms can arise only from other living organisms and non from nonliving matter. (source: UNESCO)"], "biometrics": ["Statistical methods applied to biological problems."], "educational quality": ["Degrees of excellence in meeting educational objectives. Use more specific descriptor where appropriate. (source: UNESCO)"], "cybernetics": ["The science of control and communication, specifically the interaction between automatic control and people. (source: UNESCO)"], "hydrological cycle": ["The continuous circulation of water through evaporation and precipitation."], "behavioural sciences": ["Any science that studies human and animal behaviour in its physical and social environment by experimental and observational methods. (source: UNESCO)"], "quality circle": ["A group of workers, performing similar work and trained to identify and solve problems, who volunteer to make recommendations relating to the improvement of productivity, quality, work morale, etc. (source: UNESCO)"], "working class": ["A social class comprising those who do manual labour for wage, especially those who do not own any property."], "cognition": ["The mental action or process of acquiring knowledge through thought, experience and senses."], "social status": ["Position in a community relative to other members of the community."], "admission requirements": ["Conditions (examination certificates, proof of skills, etc.) of entrance to courses of study, further study, training, etc."], "conditions of employment": ["Use for the conditions of employment stipulated in the staff regulations of an enterprise or organization, or in a collective agreement negotiated by employer's and workers' representatives."], "consensus": ["An opinion with which all or the majority of a group agree."], "counterculture": ["Cultural system which develops in conflict with the prevailing culture."], "employment creation": ["The generation of new jobs in sectors or enterprises requiring more manpower."], "summer school": ["Short course usually held at a university or college during the summer vacation."], "Dakar": ["The capital city of Senegal."], "depose": ["To remove, a monarch or political leader, from power.", "To make a deposition; to declare under oath."], "dethrone": ["To forcibly relieve a monarch of the monarchy."], "ulcer": ["An open sore of the skin, eyes or mucous membrane, often caused by an initial abrasion and generally maintained by an inflammation and/or an infection."], "uncus": ["Any body part which is long, thin, and curved."], "universal": ["Involving the entire earth; not limited or provincial in scope.", "Common to all members of a group or class.", "Of or pertaining to the universe."], "jackal": ["Any of three small to medium-sized members of the family Canidae, found in Africa, Asia and Southeastern Europe."], "jade": ["A semiprecious gemstone either nephrite or jadeite, generally green or whitish in color, often used for carving figurines.", "An old or worthless horse."], "juggler": ["A performer who juggles objects and performs tricks of manual dexterity."], "water pistol": ["A toy used to shoot water."], "watergun": ["A toy used to shoot water."], "water polo": ["A team water sport, which can be best described as a combination of swimming, handball and wrestling."], "reflexive verb": ["A verb whose subject and direct object are the same."], "hyphenation": ["The inclusion of hyphens; especially, the correct locations of hyphens."], "water softener": ["A device which reduces the calcium or magnesium ion concentration in hard water."], "bible": ["A compartment of the stomach in ruminants.", "A book regarded as authoritative in its field."], "fardel": ["A compartment of the stomach in ruminants."], "psalterium": ["A compartment of the stomach in ruminants."], "juniper": ["Any shrub or tree of the genus Juniperus of the cypress family; characterized by pointed, needle-like leaves and aromatic berry-like cones."], "Lagos": ["The most populous city in Nigeria."], "humanities education": ["Studies dealing with man as the central concern, e.g. literature, history, philosophy, and modern and classical languages. (source: UNESCO)"], "iconography": ["The branch of art history dealing with the identification, description, classification and interpretation of the subject-matter of the figurative arts. (source: UNESCO)"], "indexing": ["Assignment of index terms to documents or objects with the aim to be able later on to retrieve the documents or objects according to the selected concepts designated by the index terms (essentially, descriptors)."], "development indicator": ["Numerical data used as benchmarks in the formulation and monitoring of development policy."], "educational indicator": ["Numerical data used as benchmarks in the formulation and monitoring of educational policy."], "computer uses in education": ["The use of computers for instruction, testing, student/pupil personnel services, school administrative support services, etc. Use more specific descriptor where appropriate. (source: UNESCO)"], "computer literacy": ["Comprehension of the capabilities and applications of computers; may include the ability to use computers to solve problems. (source: UNESCO)"], "educational innovation": ["Changes in objectives, content or methods initiated, as a rule, in experimental situations."], "technological institute": ["Institution of higher education with a strong orientation towards study and research in the technologies and sciences. (source: UNESCO)"], "interdependence": ["Mutual economic dependence among countries; for active efforts to promote closer economic ties, use \"economic cooperation\", \"economic integration\", etc."], "agricultural research": ["Research designed to improve crops, increase yields and develop resistances to diseases."], "fundamental research": ["Research designed to produce new understanding of basic underlying principles and processes."], "mission oriented research": ["Research designed for the solution of a specific problem."], "operations research": ["Application of scientific methods to the analysis of problems so as to provide optimum solutions for decision making."], "participatory research": ["Research approach that calls for interaction between the researchers and those among whom the research is conducted. (source: UNESCO)"], "human geography": ["Relationship of geography and culture (population, institutions and technology)."], "governance": ["Manner in which power and authority are exercised by both public and private bodies; includes such issues as public sector management, legal framework, accountability and transparency. (source: UNESCO)"], "electronic governance": ["The public sector's use of information and communication technologies with the aim of improving information and service delivery, encouraging citizen participation in the decision-making process and making government more accountable, transparent and effective. (source: UNESCO)"], "basic training": ["Specially organized training, given outside of production activities of an undertaking, and aimed at imparting the basic knowledge and skill required for a given group of occupations."], "management education": ["Educational programmes to increase managerial and supervisory skills of managers and management trainees. (source: UNESCO)"], "inservice training": ["Training acquired during employment."], "professional training": ["Special instruction to develop skills needed to improve job performance of professional personnel; usually short term and job specific. (source: UNESCO)"], "educational foundation": ["Foundation that provides grants or funds to finance research, services, facilities, equipment."], "economics of education": ["Techniques of economics applied to educational systems."], "mixed economy": ["Economy in which elements of government control are intermingled with market elements in organizing production and consumption. (source: UNESCO)"], "distance education": ["Education imparted at a distance through the use of information/communication technology: radio, TV, the telephone, correspondence, e-mail, videoconferencing, audioconferencing, cd-roms, or online."], "bilingual education": ["Encouragement of bilingualism through the teaching of regular courses in both the national language and a second language."], "community education": ["Enabling process through which children and adults receive a sense of identification with their community."], "international education": ["Education aimed at international understanding, cooperation, peace, human rights and fundamental freedoms. Do not confuse with education in international schools."], "consumer education": ["The raising of awareness of consumers for intelligent and effective methods of buying and using goods and services."], "Iraqi": ["A person from Iraq.", "Of or relating to Iraq."], "really": ["Effectively, truly."], "look for": ["To try to find something."], "technological": ["Of, relating to, or involving technology, especially modern scientific technology."], "wireless": ["Not having any wires.", "(For an electric device) Having no cord, usually using batteries as a source of power."], "net income": ["Income following the deduction of all expenses, taxes, and the like."], "gross income": ["Income generated before deducting expenses, taxes, insurance, etc."], "nationalize": ["To convert a private industry into one controlled by the government."], "privatize": ["To release government control of a business or industry to private industry."], "discontinue": ["To stop a process; especially as regards commercial productions; to stop producing, making, or supplying something.", "To put an end to a state or an activity.", "To prevent completion (e.g. of a project, of negotiations, etc.)."], "retail": ["The sale of goods, in small numbers and directly to the consumer.", "The full suggested price of a particular good or service, before any sale, discount, or other deal.", "Of, or relating to the (actual or figurative) sale of goods or services directly, and in small numbers, to individuals.", "To sell in small quantities directly to customers.", "To repeat (news or rumours) to others.", "In a manner that is direct to consumers and in retail quantities."], "insipid": ["Utterly lacking in intelligence or depth.", "Having no flavour."], "vacuous": ["Utterly lacking in intelligence or depth."], "vacant": ["Utterly lacking in intelligence or depth.", "Not occupied.", "Being unoccupied."], "watersport": ["Any sport played on or in water; such as swimming or water skiing."], "water tap": ["A valve for controlling the release of water from the supply."], "facility": ["A building, place or other thing that provides a certain service or facilitates something.", "Ease in learning or doing something."], "OECD": ["International organisation of those developed countries that accept the principles of representative democracy and a free market economy."], "Organisation for Economic Co-operation and Development": ["International organisation of those developed countries that accept the principles of representative democracy and a free market economy."], "water taxi": ["A small boat that can transport small groups of passengers for a fee."], "bougainvillea": ["A shrub with colorful flowers originally from Brazil and today common in many tropic and subtropic regions."], "traction control system": ["Technical system in a motor vehicle that prevents wheelspin during acceleration."], "Acceleration Slip Regulation": ["Technical system in a motor vehicle that prevents wheelspin during acceleration."], "haemoglobin": ["A protein in red blood cells that transports oxygen from the lungs to the tissues of the body.\\n(source: AIDSinfo)"], "heredity": ["Resemblance among individuals related by descent; transmission of traits from parents to offspring.", "The hereditary passing of biological attributes from the parents to its offspring."], "hypotonic": ["Having osmotic potential less than that of living cells.", "(Of a drink) Containing lower concentrations of salt and sugar as in the human body."], "hypertonic": ["With an osmotic potential greater than that of living cells.", "(Of a drink) Containing higher concentrations of salt and sugar as in the human body."], "hydroponics": ["The growing of plants without soil. Plants are fed with an aerated solution of nutrients, and the roots are either supported within an inert matrix, or are freely floating in the nutrient solution. (source: FAO)"], "homologous": ["From the same source, or having the same evolutionary function or structure. (source: FAO)"], "heterologous": ["From a different source."], "Drake equation": ["A formula for calculating the probability of life in space, and its ability to communicate with Earth."], "helix": ["A structure with a spiral shape."], "hermaphrodite": ["An animal that has both male and female reproductive organs, or a mixture of male and female attributes.", "A plant whose flowers contain both stamen and carpels.", "Person with sex characteristics that are neither clearly male nor female."], "attenuated vaccine": ["A virulent organism that has been modified to produce a less virulent form, but nevertheless retains the ability to elicit antibodies against the virulent form. (source: FAO)"], "edible vaccine": ["Edible antigen-containing material, that activates the immune system via gut-associated lymphoid tissues."], "multivalent vaccine": ["A vaccine designed to elicit an immune response either to more than one infectious agent or to several different antigenic determinants of a single agent."], "peptide vaccine": ["A short chain of amino acids that can induce antibodies against a specific infectious agent."], "recombinant vaccine": ["A vaccine produced from a cloned gene."], "viral vaccine": ["Vaccine consisting of live viruses, genetically engineered to avoid causing the disease itself."], "live recombinant vaccine": ["A vaccine created by the expression of a pathogen antigen in a non-pathogenic organism."], "DNA vaccine": ["A vaccine generated by the injection of specific DNA fragments to stimulate an immune response."], "vegemite": ["Australian food paste made from brewers' yeast."], "Cheddar": ["A village in Somerset, England famous for its cheese, and also for its gorge, caves and remains of early man found in them.", "A pale yellow to orange, sharp-tasting cheese originally made in the English village of Cheddar, in Somerset."], "bookkeeper": ["A person who maintains the financial records of other people."], "indigence": ["Extreme poverty or destitution.", "Lack of the means of subsistence."], "connectivity": ["The ability to make a connection between two or more points in a network."], "opt": ["To choose; to select as an alternative to another."], "inoperable": ["Incapable of being successfully surgically operated on."], "vintage": ["The yield of grapes or wine from a vineyard or district during one season."], "meditation": ["Contemplation of spiritual matters.", "Continued attention of the mind to a particular subject."], "messenger": ["A person who brings a message."], "metalanguage": ["Any language or vocabulary of specialized terms used to describe or analyze a language."], "metronome": ["A device, containing an inverted pendulum, used to mark time by means of regular ticks at adjustable intervals."], "Crimean Tatar": ["A Turkic language of Crimea and Uzbekistan."], "premises": ["Closed area destined to a given purpose."], "commonplace": ["Repeated too often; overfamiliar through overuse.", "A saying that is overused or used outside its original context, so that its original impact and meaning are lost."], "water tower": ["A very large tank constructed for the purpose of holding a supply of water at a height sufficient to pressurize a water supply system."], "godmother": ["A woman present at the christening of a baby who promises to help raise the child in the Christian tradition."], "handful": ["A small quantity of something that can be held in one hand."], "bludgeon": ["A short heavy club with a rounded head used as a weapon."], "handlebar": ["The bar used to steer a bicycle, motorbike, or similar vehicle."], "putridity": ["The state of being putrid."], "housewife": ["A woman dedicated to taking care of the house and the family."], "masonic": ["Relating to freemasonry."], "G\u00f6bekli Tepe": ["Neolithic site in southeastern Turkey which is considered to be the world's oldest temple complex and which was probably built by hunter-gatherers before humans settled down."], "Neolithic": ["A period in human history that is traditionally the last part of the Stone Age and is marked by the development of early villages, agriculture, animal domestication and religion."], "New Stone Age": ["A period in human history that is traditionally the last part of the Stone Age and is marked by the development of early villages, agriculture, animal domestication and religion."], "neolithic": ["Of or pertaining to the Neolithic period."], "install": ["To connect, set up or prepare something for use.", "To place."], "meringue cake": ["A type of dessert made from whipped egg whites and sugar."], "International Standard Serial Number": ["A unique eight-digit number used to identify a print or electronic periodical publication."], "International Standard Book Number": ["A unique identifier for books, intended to be used commercially."], "water turbine": ["A rotary engine that takes energy from moving water."], "worship": ["The devotion accorded to a deity or to a sacred object.", "To love unquestioningly and uncritically or to excess; to treat or pursue with devotion or adoration.", "To show devotion to (a deity)."], "Walpurgis Night": ["A celebration in the night from April 30 to May 1 which traces back to pagan traditions."], "workforce": ["The total number of people employed or looking for work.", "All the workers employed by a specific organisation or nation, or on a specific project."], "May Day": ["In many countries a holiday to celebrate the labour movement."], "unbiased": ["Without prejudice."], "unbiassed": ["Without prejudice."], "unprejudiced": ["Without prejudice."], "sharecropper": ["A farmer who cultivates land that does not belong to him on the basis of a contract for the division of profits agreed with the land owner."], "threaten": ["To put in danger."], "huckleberry": ["Dark-blue, round edible fruit of a plant in the genus Vaccinium, up to approximately 10 mm diameter."], "surface-to-surface missile": ["A missile launched from the ground, or from the sea, toward a target on land or at sea."], "blueberry": ["Dark-blue, round edible fruit of a plant in the genus Vaccinium, up to approximately 10 mm diameter."], "moped": ["Motorized two-wheeled vehicle with limited engine power and limited speed"], "muzzle": ["Small cage, which applies to the muzzle of dogs or other animals, not to eat or bite."], "ennoble": ["To make illustrious and dignified.", "To make a member of the nobility; to confer a title of nobility on."], "nomination": ["Proposal of a person as suitable candidate for an election."], "homage": ["Manifestation of esteem and respect."], "Neolithic Revolution": ["The transition from nomadic hunting and gathering to sedentary agriculture and stock-breeding in the Neolithic."], "fearful": ["Lacking courage.", "Causing dread; very bad."], "imperfective verb": ["A verb denoting an uncompleted, continuous or repetitive action or an action in progress."], "gangrene": ["The necrosis or rotting of flesh, usually caused by lack of blood supply."], "gambling": ["Wagering money or something of material value on an event with an uncertain outcome with the primary intent of winning additional money and/or material goods."], "fluctuate": ["To vary between two extremes (referring to quantities, values, etc.)."], "beaver": ["A mammal of the genus Castor, having a wide, flat tail and webbed feet."], "negative pronoun": ["A pronoun used to deny the presence of a person, object, quality or quantity."], "summative pronoun": ["A pronoun used to make a generalization about people, objects, qualities or quantity."], "waterbed": ["A waterbed has a mattress filled with water."], "perfective verb": ["A verb denoting a completed (i. e. having a beginning and and end) or instantaneous action."], "fallacy": ["A misconception resulting from incorrect reasoning.", "Deceptive or false appearance; that which misleads the eye or the mind."], "fallow": ["Ploughed but left unseeded for more than one planting season.", "Uncultivated land."], "felon": ["A person convicted of a serious crime which carries serious fines and / or jail time or imprisonment, usually for longer than one year."], "European hornet": ["The largest European wasp with black and yellow stripes on the abdomen."], "insect sting": ["A sting caused by the stinger of an insect."], "hornet sting": ["A sting caused by the stinger of a hornet."], "bee sting": ["A sting caused by the stinger of a bee."], "wasp sting": ["A sting caused by the stinger of a wasp."], "priapism": ["A painful and potentially harmful medical condition in which the erect penis does not return to its flaccid state."], "nonalcoholic": ["Not containing alcohol."], "non-alcoholic": ["Not containing alcohol."], "parachute": ["Device with the form of a big umbrella used to reduce the speed of fall of a body in the air."], "paratrooper": ["A soldier who belongs to a military unit trained to jump in a parachute."], "fender": ["Part of a vehicle around the top of the wheels that prevent splattering of water and mud.", "A bumper which is placed along the sides of a vessel to protect the damage caused by friction or collision with another ship or a jetty."], "swearword": ["Bad word sometimes intended to offend."], "deliver": ["To help a woman or an animal to give birth.", "To release an offspring from one's own body; to cause to be born.", "To free from harm or evil.", "To bring or transport something to its destination.", "To relinquish possession or control of to another because of demand or compulsion."], "shortpastry": ["A type of pastry often used for the base of a tart, quiche or pie."], "parachutist": ["A person who uses a canopy or airfoil to descend an altitude."], "baboon": ["Large ground based monkey having doglike muzzles."], "bigamy": ["The state of having two spouses simultaneously."], "birthday party": ["A party to celebrate a person's birthday."], "blackberry": ["The aggregate fruit from a bramble, that most commonly is red while unripe, but that becomes black when it ripens."], "blackbird": ["A common thrush, Turdus merula, found in woods and gardens over much of Eurasia, and introduced elsewhere.", "Common name of 26 species of birds of the family Icteridae, living in the Americas."], "parallel evolution": ["The development of different organisms along similar evolutionary paths due to similar selection pressures acting on them."], "selection": ["Differential survival and reproduction of phenotypes.", "A system for either isolating or identifying specific genotypes in a mixed population.", "A certain assortment of things from which a choice can be made."], "watering can": ["A utensil for watering plants."], "phenotype": ["The visible appearance of an individual (with respect to one or more traits) which reflects the reaction of a given genotype with a given environment."], "cybrid": ["A hybrid, originating from the fusion of a cytoplast (the cytoplasm without nucleus) with a whole cell derived from a different species."], "pectin": ["A group of naturally occurring complex polysaccharides, containing galacturonic acid, found in plant cell walls, where their function is to cement cells together. (source: FAO)"], "penetrance": ["The proportion of individuals in a population that express the phenotype expected from their genotype with respect to a specific gene."], "peptidase": ["An enzyme that catalyzes the hydrolysis of a peptide bond."], "peptide": ["A sequence of amino acids linked by peptide bonds."], "watermark": ["A translucent design impressed on the surface of paper during manufacture and visible when the paper is held to the light."], "peptide bond": ["The chemical bond holding amino acid residues together in peptides and proteins."], "drake": ["Male duck."], "protease": ["An enzyme that catalyzes the hydrolysis of a peptide bond."], "peptide expression library": ["A collection of peptide molecules, produced by recombinant cells, in which the amino acid sequences are varied."], "perennial": ["(Of plants) Flowering and bearing fruit for several years.", "Lasting an indefinitely long time; suggesting self-renewal.", "Recurring again and again."], "analogous": ["Bearing resemblance to something else by analogy."], "analogy": ["The use of a similar example or model to explain or extrapolate from."], "anarchy": ["The state of a society being without authoritarians or a governing body."], "ancillary": ["Furnishing added support."], "apostle": ["One of the original 12 disciples chosen by Christ to preach his gospel."], "sea ice": ["The frozen seawater of the polar oceans."], "warm up": ["To make warm or warmer.", "To become warm or warmer."], "heat up": ["To cause an increase in temperature of an object or space; to cause something to become hot.", "To become hot or hotter."], "angstr\u00f6m": ["A internationally recognised unit of length that is equal to 0.1 nanometre (nm)."], "atoll": ["An island consisting of a ribbon reef that nearly or entirely surrounds a lagoon and supports, in most cases, one to many islets on the reef platform."], "Lord": ["The Superior Being, the Creator, the Spirit because of which and in whom everything is, as He is being named by monotheists, mostly Jews and Christians."], "apple pie": ["A pie made with apples."], "abort": ["To end a running process.", "To terminate a pregnancy before time."], "Abidjan": ["The de facto capital of C\u00f4te d'Ivoire."], "enthusiast": ["A person filled with or guided by enthusiasm.", "A follower or admirer who likes, knows about, and appreciates a particular interest or activity."], "in spite of": ["Despite the fact that.\\n[Expression to indicate that something occurs or is done in the opposite way than what is required or sensible.]"], "because of": ["As a result of.", "[Used to indicate the cause of a mentioned outcome of negative connotation.]", "[Used to indicate the cause of a mentioned outcome of neutral implication.]"], "car rental": ["A company that rents automobiles for short periods of time."], "tiny": ["Very small in size."], "chickenpox": ["A common childhood disease caused by the varicella-zoster virus."], "chaffinch": ["A songbird in the finch family Fringillidae."], "European greenfinch": ["(Carduelis chloris) A songbird in the finch family Fringillidae which is common in Europe, Northern Africa and Southwest Asia."], "greenfinch": ["(Carduelis chloris) A songbird in the finch family Fringillidae which is common in Europe, Northern Africa and Southwest Asia."], "black redstart": ["(Phoenicurus ochruros) Songbird in the family of the Old World flycatchers (Muscicapidae)."], "air-cooled": ["Cooled by air."], "giant panda": ["A mammal (Ailuropoda melanoleuca) classified in the bear family native to central-western and southwestern China."], "election victory": ["Victory in a political election."], "election defeat": ["Defeat in a political election."], "Pentecost": ["Feast on the fifthieth day after Passover which commemorates the descent of the Holy Spirit upon the Apostles."], "repetance": ["In criminal law, cooperation with the criminal justice (which can contribute to a reduction of sentence)."], "ramble": ["To travel without a destination."], "residence permit": ["An act or document which gives a person legal status to reside in a foreign country without acquiring citizenship in that country."], "persecution": ["A set of violent actions aimed at the systematic mistreatment of an individual or group by another group."], "integral calculus": ["The branch of mathematics that calculates measures of totality such as area, volume, mass, displacement, etc., when its distribution or rate of change with respect to some other quantity (position, time, etc.) is specified."], "pitiful": ["Deserving or inciting pity."], "primary": ["Administrative classification in the UK for a road, generally linking larger towns."], "water amount": ["The quantity of water that flows in a certain amount of time."], "curmudgeon": ["An ill-tempered and frequently old person full of stubborn ideas or opinions.", "A bad-tempered person."], "air rifle": ["A pneumatic gun which fires projectiles using compressed air."], "dope": ["A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect.", "To use illegal methods and substances in order to enhance athletic performance."], "amorousness": ["The state of being in love."], "acme": ["The highest level or degree attainable.", "The highest stage of development."], "right of way": ["In road traffic: right of a vehicle to pass in priority to another one."], "Ascension Day": ["The fortieth day of Easter, a Thursday, which commemorates that Jesus bodily ascended to heaven, following his resurrection."], "withdraw": ["To remove (e.g. money from an account) and carry elsewhere."], "voter": ["One who votes."], "ISO 639-6 codes": ["Codes for the representation of names of languages, Part 6."], "Altaic Proper": ["ISO 639-6 entity"], "Old Turkic": ["ISO 639-6 entity"], "Bolgar": ["ISO 639-6 entity"], "Chuvash Written": ["ISO 639-6 entity"], "Chuvash Written Cyrillic Script": ["ISO 639-6 entity"], "Chuvash Spoken": ["ISO 639-6 entity"], "Chuvash-Formal": ["ISO 639-6 entity"], "Anatri": ["ISO 639-6 entity"], "Viryal": ["ISO 639-6 entity"], "Common Turkic": ["A language family of some thirty languages, spoken across a vast area from Eastern Europe and Mediterranean to Siberia and Western China."], "Common Turkic Southern": ["ISO 639-6 entity"], "Turkish, Ottoman (1500-1928)": ["ISO 639-6 entity"], "Turkish, Ottoman (1500-1928) Written": ["ISO 639-6 entity"], "Turkish, Ottoman (1500-1928) Written Hellenic Script": ["ISO 639-6 entity"], "Turkish, Ottoman (1500-1928) Written Armenian Script": ["ISO 639-6 entity"], "Turkish, Ottoman (1500-1928) Written Perso-Arabic Script": ["ISO 639-6 entity"], "Turkish Written": ["Written forms of the Turkish language."], "Turkish Written Perso-Arabic Script": ["Turkish language written with the Perso-Arabic Script."], "Turkish Written Latin Script": ["Turkish language written with the Latin Script."], "Turkish Spoken": ["The dialects of the Turkish language."], "Eski\u015fehir": ["Turkish dialect."], "Kastamonu": ["Turkish dialect."], "Karamanli": ["Turkish dialect."], "Akhisar": ["Turkish dialect."], "Izmir": ["Turkish dialect."], "Mugla": ["Turkish dialect."], "Antalya": ["Turkish dialect."], "Adana": ["Turkish dialect."], "Gaziantep": ["Turkish dialect."], "Urfa": ["Turkish dialect."], "Erzurum": ["Turkish dialect."], "Hamah Hims": ["Turkish dialect."], "Kibris": ["Turkish dialect."], "Efe": ["Turkish dialect.", "A language of Democratic Republic of the Congo"], "Edirne": ["Turkish dialect."], "Razgrad": ["Turkish dialect."], "Dinler": ["Turkish dialect."], "Balkan Gagauz Turkish": ["A Turkic language spoken in European Turkey, Greece, and in the Kumanovo and Bitola areas of Macedonia."], "Balkan Gagauz Turkish Spoken": ["The dialects of the Balkan Gagauz Turkish language."], "Gajol": ["A dialect of the Balkan Gagauz Turkish language."], "Gerlovo Turks": ["A dialect of the Balkan Gagauz Turkish language."], "Kyzylbash": ["A dialect of the Balkan Gagauz Turkish language."], "Surguch": ["A dialect of the Balkan Gagauz Turkish language."], "Tozluk Turks": ["A dialect of the Balkan Gagauz Turkish language."], "Yuruk": ["A dialect of the Balkan Gagauz Turkish language."], "Gagauz Written": ["ISO 639-6 entity"], "Gagauz Written Cyrillic Script": ["ISO 639-6 entity"], "Gagauz Spoken": ["ISO 639-6 entity"], "Gagauzi-Formal": ["ISO 639-6 entity"], "Oghuz": ["ISO 639-6 entity"], "Gagauzi-S": ["ISO 639-6 entity"], "Urum": ["A Turkic language spoken by several thousand people who inhabit a few villages in the Southeastern Ukraine.", "ISO 639-6 entity"], "Urum Spoken": ["The dialects of the Urum language.", "The dialects of the Urum language."], "Crimean Turkish; Crimean Tatar Spoken": ["The dialects of the Crimean Tatar"], "Crimean Tatar Formal": ["ISO 639-6 entity"], "Chongar": ["ISO 639-6 entity"], "Crimean Tatar NE": ["ISO 639-6 entity"], "Crimean Tatar C": ["ISO 639-6 entity"], "Romania'-Tatar": ["Dialect of Crimean Tartar spoken in Romania."], "Judeo-Crimean Tatar": ["The language spoken in Crimea by the Krymchak people."], "Turkmen Written": ["Written forms of the Turkmen language."], "Turkmen Written Cyrillic Script": ["Lengua turcomana escrita con el alfabeto cir\u00edlico."], "Turkmen Written Perso-Arabic Script": ["Turkmen language written with the Perso-Arabic Script."], "Turkmen Spoken": ["The Turkmen spoken language and its dialects."], "Turkmen-Formal": ["ISO 639-6 entity"], "Yomud": ["A dialect of the Turkmen language."], "Nokhurli": ["A dialect of the Turkmen language."], "Anauli": ["A dialect of the Turkmen language."], "Khasarli": ["A dialect of the Turkmen language."], "Nerezim": ["A dialect of the Turkmen language."], "Teke": ["A dialect of the Turkmen language."], "Goklen": ["A dialect of the Turkmen language."], "Salyr": ["A dialect of the Turkmen language."], "Saryq": ["A dialect of the Turkmen language."], "Esari": ["A dialect of the Turkmen language."], "Cavdur": ["A dialect of the Turkmen language."], "Khorasani Turkish": ["A language of Iran."], "Khorasani Turkish Spoken": ["ISO 639-6 entity"], "Quchani W": ["ISO 639-6 entity"], "Quchani N": ["ISO 639-6 entity"], "Quchani S": ["ISO 639-6 entity"], "Azerbaijani Cluster": ["A Turkic language spoken primarily in Azerbaijan and parts of Iran."], "North Azerbaijani": ["A language of Azerbaijan, Armenia, Georgia and Russia."], "North Azerbaijani Written": ["Written forms of the North Azerbaijani language."], "North Azerbaijani Spoken": ["Dialects of the North Azerbaijani language."], "Borcala": ["Spoken dialect of North Azerbaijani."], "Terekeme": ["Spoken dialect of North Azerbaijani.", "Spoken dialect of Karapapakh Terekeme.", "A small ethnic group who mainly live in the province of West Azerbaijan of northwest Iran."], "Qyzylbash": ["ISO 639-6 entity"], "Nukha": ["Spoken dialect of North Azerbaijani named after the ancient name of the city of Shaky, Azerbaijan."], "Derbent": ["ISO 639-6 entity", "A city in the Republic of Dagestan, Russia."], "Zakataly Muganly": ["ISO 639-6 entity"], "Q\u00e4b\u00e4l\u00e4": ["ISO 639-6 entity"], "Ayrum": ["ISO 639-6 entity"], "Azeri-Yerevan": ["Spoken dialect of North Azerbaijani."], "Qazax": ["Spoken dialect of North Azerbaijani.", "A rayon of Azerbaijan. It has two exclaves, Yukhari Askipara and Barkhudarli inside Armenia and have been under Armenian control since the Nagorno-Karabakh War."], "Quba": ["ISO 639-6 entity", "A city and a rayon in northeastern Azerbaijan."], "Kirovkend*": ["ISO 639-6 entity"], "Saliany": ["ISO 639-6 entity"], "L\u00e4nk\u00e4ran": ["ISO 639-6 entity", "A small city in Azerbaijan, on the coast of the Caspian Sea, near the southern border with Iran."], "Shamakhi": ["ISO 639-6 entity", "A rayon of Azerbaijan, and a town in the rayon."], "\u015eu\u015fa": ["Spoken dialect of North Azerbaijani."], "Nax\u00e7ivan": ["Spoken dialect of North Azerbaijani.", "A landlocked exclave of Azerbaijan between Armenia, Turkey and Iran. Its capital is Nakhchivan City."], "Ordubad": ["ISO 639-6 entity", "A rayon of Azerbaijan, and a town in the rayon."], "South Azerbaijani": ["A language of Iran, Afghanistan, Iraq, Syria and Turkey"], "South Azerbaijani Written": ["Written forms of South Azerbaijani language."], "South Azerbaijani Written Perso-Arabic Script": ["South Azerbaijani language written with the Perso-Arabic Script."], "South Azerbaijani Spoken": ["The dialects of South Azerbaijani language."], "Aynallu": ["A dialect of South Azerbaijani language."], "Tabriz": ["A dialect of South Azerbaijani language.", "The largest city in north-western Iran with a population of 1,523,085 people (2006 est.)."], "Afshari": ["A Turkic language spoken in parts of Afghanistan and Iran."], "Shahsavani": ["A dialect of South Azerbaijani language."], "Moqaddam": ["A dialect of South Azerbaijani language."], "Baharlu": ["A dialect of South Azerbaijani language.", "An Iranian ethnic group of Fars (Pars), Kerman, Southern Azerbaijan and Khorasan."], "Qaragozlu": ["A dialect of South Azerbaijani language."], "Nafar": ["A dialect of South Azerbaijani language."], "Pishagchi": ["A dialect of South Azerbaijani language."], "Bayat": ["A dialect of South Azerbaijani language.", "A tribe in Iran which traces its origin to the 12th century."], "Qajar": ["A dialect of South Azerbaijani language.", "The ruling family of Persia from 1781 to 1925."], "Kirkuk": ["A dialect of South Azerbaijani language.", "A city in northern Iraq and capital of Taamim Governorate."], "Kars": ["A dialect of South Azerbaijani language.", "A province of Turkey, located in the northeastern part of the country.", "A city in northeast Turkey and the capital of the Kars Province."], "Teimurtash": ["ISO 639-6 entity"], "Teimurtash Spoken": ["ISO 639-6 entity"], "Salchuq": ["ISO 639-6 entity"], "Salchuq Spoken": ["ISO 639-6 entity"], "Turkic Khalaj": ["A language of Iran."], "Turkic Khalaj Spoken": ["ISO 639-6 entity"], "Qashqa\u2019i": ["a Turkic language spoken by the Qashqai, an ethnic group living mainly in the Fars region of Iran."], "Qashqa\u2019i Spoken": ["ISO 639-6 entity"], "Karapapakh Terekeme": ["ISO 639-6 entity"], "Karapapakh Terekeme Spoken": ["ISO 639-6 entity"], "Karapapakh": ["ISO 639-6 entity"], "Common Turkic Western": ["ISO 639-6 entity"], "Kumyk-Karachay": ["ISO 639-6 entity"], "Karachay": ["ISO 639-6 entity"], "Balkar": ["ISO 639-6 entity"], "Kumyk": ["A Turkic language, spoken by about 200 thousand speakers (the Kumyks) in the Dagestan republic of Russian Federation."], "Kumyk Written": ["ISO 639-6 entity"], "Kumyk Written Cyrillic Script": ["ISO 639-6 entity"], "Kumyk Spoken": ["ISO 639-6 entity"], "Kumyk-Formal": ["ISO 639-6 entity"], "Karachay-Kumyk": ["ISO 639-6 entity"], "Khasav-Yurt": ["ISO 639-6 entity", "ISO 639-6 entity"], "Buinak": ["ISO 639-6 entity"], "Khaidak": ["ISO 639-6 entity"], "Kumyk-W": ["ISO 639-6 entity"], "Tatar Cluster": ["ISO 639-6 entity"], "Tatar Written": ["Written forms of the Tatar language."], "Tatar Written Cyrillic Script": ["The Tatar language written with the cyrillique script."], "Tatar Spoken": ["Dialects of the Tatar language."], "Tatar-Formal": ["ISO 639-6 entity"], "Kazan-Tatar": ["Variety of Tartar spoken in Kasan, Republic of Tatarstan, Russia"], "Misher": ["ISO 639-6 entity"], "Tura": ["ISO 639-6 entity", "ISO 639-6 entity"], "Tom": ["ISO 639-6 entity"], "Tyumen": ["ISO 639-6 entity"], "Ishim": ["ISO 639-6 entity"], "Yalutorov": ["ISO 639-6 entity"], "Irtysh": ["ISO 639-6 entity"], "Tobol": ["ISO 639-6 entity"], "Tara": ["ISO 639-6 entity"], "Astrakhan-Tatar": ["A dialect of tartar spoken in Astrakhan Oblast, Russia."], "Kasimov-Tatar": ["Variety of Tartar spoken in Kasimov, in Ryazan Oblast, Russia."], "Teptyar": ["ISO 639-6 entity"], "Ural-Tatar": ["ISO 639-6 entity"], "Baraba": ["A Turkic language, spoken by about 8,000 people in Russian Siberia, closely related to Tatar."], "Baraba Spoken": ["Dialects of the Baraba language."], "Bashkir Written": ["ISO 639-6 entity"], "Bashkir Written Cyrillic Script": ["ISO 639-6 entity"], "Bashkir Spoken": ["ISO 639-6 entity"], "Bashqurt-Formal": ["ISO 639-6 entity"], "Kuvakan": ["ISO 639-6 entity"], "Yurmaty": ["ISO 639-6 entity"], "Burzhan": ["ISO 639-6 entity"], "Karaim": ["A Turkic language with Hebrew influences, in a similar manner to Yiddish or Ladino spoken in Crimea."], "Karaim Written": ["ISO 639-6 entity"], "Karaim Written Cyrillic Script": ["ISO 639-6 entity"], "Karaim Written Hebrew Script": ["ISO 639-6 entity"], "Karaim Spoken": ["ISO 639-6 entity"], "Karaim-Formal": ["ISO 639-6 entity"], "Karim E": ["ISO 639-6 entity"], "Trakay": ["ISO 639-6 entity"], "Galits": ["ISO 639-6 entity"], "Judeo-Crimean": ["ISO 639-6 entity"], "Judeo-Tatar-Georgia": ["ISO 639-6 entity"], "Judeo-Tatar-Kazakhstan": ["ISO 639-6 entity"], "Judeo-Tatar-Uzbekistan": ["ISO 639-6 entity"], "Common Turkic Central": ["ISO 639-6 entity"], "Nogai": ["A Turkic language spoken in southwestern Russia."], "Nogai Written": ["Written forms of the Nogai language."], "Nogai Written Cyrillic Script": ["The Nogai language written with the cyrillic script."], "Nogai Spoken": ["Dialects of the Nogai language."], "Noghay-Formal": ["ISO 639-6 entity"], "Noghay-V": ["ISO 639-6 entity"], "Ak-Noghay": ["ISO 639-6 entity"], "Kara-Noghay": ["ISO 639-6 entity"], "Noghay-C": ["ISO 639-6 entity"], "Kara-Kalpak Written": ["Written forms of the Kara-Kalpak language."], "Kara-Kalpak Written Cyrillic Script": ["The Kara-Kalpak language written with the cyrillic script."], "Kara-Kalpak Spoken": ["Dialects of the Kara-Kalpak language."], "Karakalpak-Formal": ["ISO 639-6 entity"], "Karakalpak-A": ["ISO 639-6 entity"], "Tchorny": ["ISO 639-6 entity"], "Klobouki": ["ISO 639-6 entity"], "Kazakh Written": ["Written forms of the Kazakh language."], "Kazakh Written Cyrillic Script": ["ISO 639-6 entity"], "Kazakh Written Latin Script": ["Kazakh language written with the Latin Script."], "Kazakh Written Perso-Arabic Script": ["ISO 639-6 entity"], "Kazakh Spoken": ["Dialects of the Kazakh language."], "Kazakh\u015fa-Formal": ["ISO 639-6 entity"], "Kazakh\u015fa-NE": ["ISO 639-6 entity"], "Kazakh\u015fa-W": ["ISO 639-6 entity"], "Kazakh\u015fa-S": ["ISO 639-6 entity"], "Kirghiz ": ["A Northwestern Turkic language, and, together with Russian, an official language of Kyrgyzstan."], "Kirghiz Written": ["Written forms of the Kirghiz language."], "Kirghiz Written Cyrillic Script": ["ISO 639-6 entity"], "Kirghiz Written Latin Script": ["A written form of the Kirghiz language."], "Kirghiz Written Perso-Arabic Script": ["ISO 639-6 entity"], "Kirghiz Spoken": ["Dialects of the Kirghiz language."], "Kirghizca-Formal": ["ISO 639-6 entity"], "Kirghizca-N": ["ISO 639-6 entity"], "Kirghizca-S": ["ISO 639-6 entity"], "Common Turkic Eastern": ["ISO 639-6 entity"], "Pre-Classical Chagatai": ["ISO 639-6 entity"], "Classical Chagatai": ["ISO 639-6 entity"], "Post-Classical Chagatai": ["ISO 639-6 entity"], "Lli Turki": ["Language only spoken by old people in the Ili Valley near Kuldja, Xinjiang, China."], "Northern Uzbek": ["A Turkic language spoken in Uzbekistan."], "Northern Uzbek Written": ["ISO 639-6 entity"], "Northern Uzbek Written Cyrillic Script": ["ISO 639-6 entity"], "Northern Uzbek Written Latin Script": ["ISO 639-6 entity"], "Northern Uzbek Written Perso-Arabic Script": ["ISO 639-6 entity"], "Northern Uzbek Spoken": ["ISO 639-6 entity"], "\u00d6zbek\u00e7a-Formal Written": ["ISO 639-6 entity"], "Karluko-Chigile-Uighur": ["ISO 639-6 entity"], "Kypchak": ["ISO 639-6 entity"], "Oghuz-2": ["ISO 639-6 entity"], "Qurama": ["ISO 639-6 entity"], "Lokhay": ["ISO 639-6 entity"], "Romany-Uzbeki ": ["ISO 639-6 entity"], "Southern Uzbek": ["A Turkic language spoken in north Afghanistan and by a small refugee community in Turkey."], "Uyghur Written": ["Written forms of the Uyghur language."], "Uyghur Written Cyrillic Script": ["ISO 639-6 entity"], "Uyghur Written Latin Script": ["ISO 639-6 entity"], "Uyghur Written Orkhon Script": ["ISO 639-6 entity"], "Uyghur Written Perso-Arabic Script": ["ISO 639-6 entity"], "Uyghur Spoken": ["Dialects of the Uyghur language."], "Uyghur-W": ["ISO 639-6 entity"], "Taranchi": ["ISO 639-6 entity"], "Kashgar-Yarkand": ["ISO 639-6 entity"], "Uyghur-Formal ": ["ISO 639-6 entity"], "Hami": ["ISO 639-6 entity"], "Turpan": ["ISO 639-6 entity"], "\u00dcr\u00fcmqi": ["ISO 639-6 entity"], "Bortala": ["ISO 639-6 entity"], "Yining": ["ISO 639-6 entity"], "Aqsu": ["ISO 639-6 entity"], "Kuqa": ["ISO 639-6 entity"], "Yengisar": ["ISO 639-6 entity"], "Korla": ["ISO 639-6 entity"], "Lop-Nur": ["ISO 639-6 entity"], "Qarqan": ["ISO 639-6 entity"], "Dolan": ["ISO 639-6 entity"], "Hotan- Yutian": ["ISO 639-6 entity"], "Qarashahr": ["ISO 639-6 entity"], "Kashi Shache": ["ISO 639-6 entity"], "Akto-Turkmen": ["ISO 639-6 entity"], "Ainu Spoken": ["ISO 639-6 entity"], "Salar": ["A Turkic language spoken by the Salar people, who mainly live in the provinces of Qinghai and Gansu in China."], "Salar Spoken": ["ISO 639-6 entity"], "Jeizi": ["ISO 639-6 entity"], "Mengda": ["ISO 639-6 entity"], "West Yugur": ["ISO 639-6 entity"], "Common Turkic Northern": ["ISO 639-6 entity"], "Tuva-Altai": ["ISO 639-6 entity"], "Altai Cluster": ["Lengua t\u00farquica y la lengua oficial en la Rep\u00fablica de Alt\u00e1i, Rusia."], "Southern Altai": ["A Turkic language spoken in the Gorno-Altai Ao mountains of Russia."], "Southern Altai Spoken": ["ISO 639-6 entity"], "Altay-Formal": ["ISO 639-6 entity"], "Altay-Kizhi-A": ["ISO 639-6 entity"], "Talangit": ["ISO 639-6 entity"], "Northern Altai": ["A language of Russia (Asia)"], "Chulym-Shor": ["ISO 639-6 entity"], "Chulym": ["A Turkic language spoken by the Chulym and the Kacik people of the Basin of the Chulym River north of the Altay Mountains, Rusia."], "Chulym Spoken": ["Dialects of the Chulym language."], "Chulym-W": ["ISO 639-6 entity"], "Chulym-E": ["ISO 639-6 entity"], "Kacik": ["ISO 639-6 entity"], "Shor": ["A Turkic language spoken by around 10,000 people in the Kemerovo Oblast in south-central Siberia, Russia."], "Shor Spoken": ["ISO 639-6 entity"], "Shor-Formal": ["ISO 639-6 entity"], "Mrassa": ["ISO 639-6 entity"], "Kondoma": ["ISO 639-6 entity"], "Khakas": ["A Turkic language spoken by the Khakas people, who mainly live in the southern Siberian Khakas Republic, or Khakassia, in Russia.", "A Turkic people, who live in Russia, in the republic of Khakassia in the southern Siberia."], "Khakas Spoken": ["ISO 639-6 entity"], "Sagai": ["ISO 639-6 entity"], "Beltir": ["ISO 639-6 entity", "A village in the Altay Mountains, Russia."], "Kacha": ["ISO 639-6 entity", "An urban-type settlement on the Crimean peninsula, Russia."], "Kyzyl": ["ISO 639-6 entity"], "Shor-2": ["ISO 639-6 entity"], "Kamassian": ["An extinct language spoken in Russia, east of the Ural mountains."], "Tuva-Karagas Cluster": ["ISO 639-6 entity"], "Tuvinian": ["A Turkic languages spoken in the Republic of Tuva in south-central Siberia in Russia, in China and Mongolia."], "Tuvinian Spoken": ["ISO 639-6 entity"], "Tuvin-Formal": ["ISO 639-6 entity"], "Tuvin-C": ["ISO 639-6 entity"], "Tuvin-W": ["ISO 639-6 entity"], "Todzhin": ["ISO 639-6 entity"], "Tuvin-SE": ["ISO 639-6 entity"], "Tuba-Kizhi": ["ISO 639-6 entity"], "Kokchulutan": ["ISO 639-6 entity"], "Karagas": ["A Turkic languages spoken by the Tofalar people in the Irkutsk Oblast in Russia."], "Karagas Spoken": ["ISO 639-6 entity"], "Turkmen-Tibet": ["ISO 639-6 entity"], "Turkmen-Tibet Spoken": ["ISO 639-6 entity"], "Yakut Cluster": ["ISO 639-6 entity"], "Yakut Written": ["Written forms of the Yakut language."], "Yakut Written Cyrillic Script": ["ISO 639-6 entity"], "Yakut Spoken": ["Dialects of the Yakut language."], "Sakha-Formal": ["ISO 639-6 entity"], "Kotuj": ["ISO 639-6 entity"], "Anabar": ["ISO 639-6 entity"], "Olen'ok": ["ISO 639-6 entity"], "Lena-N": ["ISO 639-6 entity"], "Vil'uj": ["ISO 639-6 entity"], "Nizhn'aja": ["ISO 639-6 entity"], "Lena-NE": ["ISO 639-6 entity"], "Lena-SW": ["ISO 639-6 entity"], "Uda- Amgun'": ["ISO 639-6 entity"], "Jana": ["ISO 639-6 entity"], "Chroma": ["ISO 639-6 entity"], "Yakut-Indigirka": ["ISO 639-6 entity"], "Alazeja": ["ISO 639-6 entity"], "Kolyma-N": ["ISO 639-6 entity"], "Kolyma-S": ["ISO 639-6 entity"], "Okhotsk": ["ISO 639-6 entity", "ISO 639-6 entity"], "Dolgan": ["A Turkic language with around 5,000 speakers, spoken in the Taymyr Peninsula in Russia."], "Dolgan Written": ["ISO 639-6 entity"], "Dolgan Written Cyrillic Script": ["ISO 639-6 entity"], "Dolgan Spoken": ["ISO 639-6 entity"], "Chatanga": ["ISO 639-6 entity"], "Cheta": ["ISO 639-6 entity"], "Mongolian-Tungus": ["A group of languages spoken in Central Asia."], "Mongolian Western Cluster": ["ISO 639-6 entity"], "Mogholi": ["ISO 639-6 entity"], "Mogholi Spoken": ["ISO 639-6 entity"], "Kundur": ["ISO 639-6 entity"], "Karez-L-Mulla": ["ISO 639-6 entity"], "Mongolian Eastern": ["ISO 639-6 entity"], "Oirat Khalka": ["ISO 639-6 entity"], "Khalka Buriat Cluster": ["ISO 639-6 entity"], "Buriat": ["A Mongolic macrolanguage spoken by the Buryats. The majority live in Russia along the northern border of Mongolia and speak Russia Buriat. There are also smaller, more distinct, communities in both Mongolia and the People's Republic of China.", "The largest ethnic minority group in Siberia, numbering approximately 436,000, mainly concentrated in their homeland, the Buryat Republic, a federal subject of Russia."], "Mongolia Buriat": ["A Mongolic language spoken in northeast Mongolia."], "Mongolia Buriat Written": ["The written forms of the Mongolia Buriat language."], "Monghol Buriat Written Mongolian Script Historical": ["ISO 639-6 entity"], "Mongolia Buriat Cyrillic Script": ["A written form of the Mongolia Buriat language using the Cyrillic alphabet."], "Mongolia Buriat Spoken": ["The dialects of the Mongolia Buriat language."], "Khori": ["A dialect of the Mongolia Buriat language."], "Aga": ["A dialect of the Mongolia Buriat language."], "Tsongol": ["A dialect of the Mongolia Buriat language."], "Sartul": ["A dialect of the Mongolia Buriat language."], "Russia Buriat": ["A Mongolic language spoken in Russia along the northern border of Mongolia."], "Russia Buriat Written Buryat Script": ["A written form of the Russia Buriat language using the Buriat Script."], "Russia Buriat Written Latin Script": ["A written form of the Russia Buriat language using the Latin alphabet."], "Russia Buriat Written Cyrillic Script": ["A written form of the Russia Buriat language using the Cyrillic Script."], "Russia Buriat Spoken": ["The dialects of the Russia Buriat language."], "Ekhirit": ["A dialect of the Russia Buriat language."], "Ungin": ["A dialect of the Russia Buriat language."], "Uda": ["A dialect of the Russia Buriat language."], "Barguzin": ["A dialect of the Russia Buriat language."], "Bohaan": ["A dialect of the Russia Buriat language."], "Tunka": ["A dialect of the Russia Buriat language."], "Oka": ["A dialect of the Russia Buriat language.", "ISO 639-6 entity", "A large river in central Russia, the largest right tributary of the Volga."], "Alat": ["A dialect of the Russia Buriat language."], "Bulagat": ["A dialect of the Russia Buriat language."], "China Buriat": ["A Mongolic language spoken in China in the Hulun-Buyr District of Inner Mongolia. (source: Wikipedia)"], "China Buriat Written Mongolian Script": ["A written form of the China Buriat language using the Mongolian script."], "China Buriat Spoken": ["Dialects of the China Buriat language."], "Bargu": ["A dialect of the China Buriat language spoken in the Prefecture of Hulunbuir, east of Inner-Mongolia in China."], "Bargu Old": ["A dialect of the China Buriat language spoken in the Old Barag Banner, Inner-Mongolia in China."], "Mongolian Proper": ["ISO 639-6 entity"], "Halh Mongolian": ["The official language of Mongolia, also spoken in Russia."], "Halh Mongolian Written": ["ISO 639-6 entity"], "Halh Mongolian Written Mongolian Script": ["ISO 639-6 entity"], "Halh Mongolian Written Cyrillic Script": ["ISO 639-6 entity"], "Halh Mongolian Spoken": ["The dialects of the Halh Mongolian language."], "Khalkha": ["A dialect of the Halh Mongolian language."], "Khotogoit": ["A dialect of the Halh Mongolian language."], "Bayit": ["A dialect of the Halh Mongolian language."], "Peripheral Mongolian": ["A language of China and Mongolia."], "Peripheral Mongolian Written": ["ISO 639-6 entity"], "Peripheral Mongolian Written Mongolian Script": ["ISO 639-6 entity"], "Peripheral Mongolian Spoken": ["ISO 639-6 entity"], "Dorbet-E ": ["ISO 639-6 entity"], "Dzakhachin": ["ISO 639-6 entity"], "Mingat": ["ISO 639-6 entity"], "Oold": ["ISO 639-6 entity"], "Dariganga": ["A Mongolian language spoken by the Dariganga people in and around the town of Dariganga in the Sukhbaatar Province in south-east Mongolia.", "Mongol people who mainly live in Dari-ovoo hill and Ganga Lake, Sukhbaatar Province, in eastern Mongolia.", "A sum (district) of Sukhbaatar Province in eastern Mongolia."], "Kharchin-Tumut": ["ISO 639-6 entity"], "Khorchin": ["ISO 639-6 entity"], "Uzemchin": ["ISO 639-6 entity"], "Zahchin": ["ISO 639-6 entity"], "Barga": ["ISO 639-6 entity"], "Torguut-E ": ["ISO 639-6 entity"], "Ordos": ["ISO 639-6 entity"], "Darkhat": ["A language of Mongolia."], "Oirat Kalmyk Cluster": ["ISO 639-6 entity"], "Kalmyk": ["A Mongolic language spoken by the Kalmyk people of the Republic of Kalmykia, a federal subject of the Russian Federation."], "Kalmyk Spoken": ["ISO 639-6 entity"], "Kalmyk-Formal ": ["ISO 639-6 entity"], "Torguut-W ": ["ISO 639-6 entity"], "Buzawa": ["ISO 639-6 entity"], "Dorbet-W ": ["ISO 639-6 entity"], "Oyrat": ["ISO 639-6 entity"], "Oyrat Written": ["ISO 639-6 entity"], "Oyrat Written Oyrat Script ": ["ISO 639-6 entity"], "Oyrat Spoken": ["ISO 639-6 entity"], "Oyrat-Formal ": ["ISO 639-6 entity"], "Chahar": ["ISO 639-6 entity"], "Dorbet-C ": ["ISO 639-6 entity"], "Torguut-C ": ["ISO 639-6 entity"], "Khoshot": ["ISO 639-6 entity"], "Sart-Qalmaq": ["ISO 639-6 entity"], "Dagur Cluster": ["ISO 639-6 entity"], "Daur": ["An official regional language of Inner Mongolia, China.", "An ethnic group of 132,000 people of the Inner Mongolia autonomous region of China."], "Daur Written": ["ISO 639-6 entity"], "Daur Written Daur Script": ["ISO 639-6 entity"], "Daur Written Cyrillic Script": ["ISO 639-6 entity"], "Daur Written Latin Script": ["Daur language written with the Latin Script."], "Daur Spoken": ["ISO 639-6 entity"], "Bataxan": ["ISO 639-6 entity"], "Hailar": ["ISO 639-6 entity"], "Qiqihar": ["ISO 639-6 entity"], "Monguor Cluster": ["ISO 639-6 entity"], "Tu": ["ISO 639-6 entity"], "Tu Spoken": ["ISO 639-6 entity"], "Datong": ["ISO 639-6 entity"], "Tianzhu": ["ISO 639-6 entity"], "Minhe": ["ISO 639-6 entity"], "Minhe Spoken": ["ISO 639-6 entity"], "Minhe-A": ["ISO 639-6 entity"], "Minhe-Yongjing": ["ISO 639-6 entity"], "Linxia": ["ISO 639-6 entity"], "Aragwa*": ["ISO 639-6 entity"], "Dongxiang": ["A Mongolic language spoken by the Dongxiang people in northwest China."], "Dongxiang Spoken": ["ISO 639-6 entity"], "Suonanba": ["ISO 639-6 entity"], "Wangjiaji": ["ISO 639-6 entity"], "Sijiaji": ["ISO 639-6 entity"], "Yongjing": ["ISO 639-6 entity"], "Kang-Le": ["ISO 639-6 entity"], "Ningting*": ["ISO 639-6 entity"], "Shiringol*": ["ISO 639-6 entity"], "Yunnan*": ["ISO 639-6 entity"], "Bonan": ["A Mongolian language spoken by the Bonan people in the Tongren County in Qinghai Province in China."], "Bonan Spoken": ["Dialects of the Bonan language."], "Dahejia": ["ISO 639-6 entity"], "Ganhetan": ["ISO 639-6 entity"], "Dadun": ["ISO 639-6 entity"], "Tongren": ["A dialect of the Bonan language spoken in Tongren county."], "Nianduhu": ["ISO 639-6 entity"], "Guomari": ["ISO 639-6 entity"], "East Yugur": ["ISO 639-6 entity"], "East Yugur Spoken": ["ISO 639-6 entity"], "Kangjia": ["A language of China."], "Kangjia Spoken": ["The dialects of the Kangjia language."], "Tungus": ["ISO 639-6 entity"], "Northern Tungus": ["ISO 639-6 entity"], "Even": ["A language of Russia (Asia)"], "Even Written": ["ISO 639-6 entity"], "Even Written Cyrillic Script": ["ISO 639-6 entity"], "Even Spoken": ["ISO 639-6 entity"], "Even-Formal ": ["ISO 639-6 entity"], "Even-Indigirka": ["ISO 639-6 entity"], "Kolyma- Omolon": ["ISO 639-6 entity"], "Upper Kolyma": ["ISO 639-6 entity"], "Arman": ["ISO 639-6 entity"], "Ola": ["ISO 639-6 entity"], "Tompon": ["ISO 639-6 entity"], "Verkhne-Kolymsk": ["ISO 639-6 entity"], "Sarkyryr": ["ISO 639-6 entity"], "Lamunkhin": ["ISO 639-6 entity"], "Negidal": ["ISO 639-6 entity"], "Negidal Spoken": ["ISO 639-6 entity"], "Nizovsk": ["ISO 639-6 entity"], "Verkhovsk": ["ISO 639-6 entity"], "Evenki Cluster": ["ISO 639-6 entity"], "Evenki Spoken": ["ISO 639-6 entity"], "Evenki-Formal": ["ISO 639-6 entity"], "Ilimpeya": ["ISO 639-6 entity"], "Tutoncana": ["ISO 639-6 entity"], "Podkamennaya-Tunguska": ["ISO 639-6 entity"], "Cemdalsk": ["ISO 639-6 entity"], "Vanavara": ["ISO 639-6 entity"], "Baykit": ["ISO 639-6 entity"], "Poligus": ["ISO 639-6 entity"], "Uchami": ["ISO 639-6 entity"], "Cis-Baikalia'": ["ISO 639-6 entity"], "Yerbogachen": ["ISO 639-6 entity"], "Nakanna": ["ISO 639-6 entity"], "Tokma-Verkholensk": ["ISO 639-6 entity"], "Nepa": ["ISO 639-6 entity"], "Nizne-Nepsk": ["ISO 639-6 entity"], "Tungir": ["ISO 639-6 entity"], "Kalar": ["ISO 639-6 entity"], "Tokko": ["ISO 639-6 entity"], "Aldan- Timpton": ["ISO 639-6 entity"], "Jetulak": ["ISO 639-6 entity"], "Tommot": ["ISO 639-6 entity"], "Uchur": ["ISO 639-6 entity"], "Ayano-Maj": ["ISO 639-6 entity"], "Kur-Urmi": ["ISO 639-6 entity"], "Tuguro-Cumikan": ["ISO 639-6 entity"], "Zeysko-Burelin": ["ISO 639-6 entity"], "Evenki-Sakhalin": ["ISO 639-6 entity"], "Sym": ["ISO 639-6 entity", "ISO 639-6 entity"], "Manegir": ["ISO 639-6 entity"], "Solon": ["ISO 639-6 entity"], "Oroqen": ["ISO 639-6 entity"], "Oroqen Spoken": ["ISO 639-6 entity"], "Gankui": ["ISO 639-6 entity"], "Heilongjiang Oroqen": ["ISO 639-6 entity"], "Selenge-Aimag": ["ISO 639-6 entity"], "Tungus Southern": ["ISO 639-6 entity"], "Tungus Southern Southwestern Cluster": ["ISO 639-6 entity"], "Manchu": ["A language of China."], "Manchu Written": ["ISO 639-6 entity"], "Manchu Written Mongolian Script": ["ISO 639-6 entity"], "Manchu Written Manchu Script": ["ISO 639-6 entity"], "Manchu Spoken": ["ISO 639-6 entity"], "Manchu-Formal ": ["ISO 639-6 entity"], "Bala": ["ISO 639-6 entity", "ISO 639-6 entity"], "Alechuxa": ["ISO 639-6 entity"], "Jing": ["ISO 639-6 entity"], "Lalin": ["ISO 639-6 entity", "ISO 639-6 entity"], "Manchu-N ": ["ISO 639-6 entity"], "Manchu-W ": ["ISO 639-6 entity"], "Xibe": ["A Tungusic language spoken by the Xibe people in Xinjiang, in the northwest of China."], "Jurchen": ["An extinct language of China."], "Tungus Southern Southeastern": ["ISO 639-6 entity"], "Udihe Complex": ["ISO 639-6 entity"], "Udihe": ["ISO 639-6 entity"], "Udihe Spoken": ["ISO 639-6 entity"], "Khungari": ["ISO 639-6 entity"], "Khor": ["ISO 639-6 entity"], "Anjuski": ["ISO 639-6 entity"], "Samargin": ["ISO 639-6 entity"], "Bikin": ["ISO 639-6 entity"], "Iman": ["ISO 639-6 entity"], "Sikhota-Alin": ["ISO 639-6 entity"], "Oroch": ["ISO 639-6 entity"], "Oroch Spoken": ["ISO 639-6 entity"], "Kjakela*": ["ISO 639-6 entity"], "Namunka": ["ISO 639-6 entity"], "Orichen": ["ISO 639-6 entity"], "Tez": ["ISO 639-6 entity"], "Nanaj Cluster": ["ISO 639-6 entity"], "Nanai": ["A language of Russia (Asia) and China"], "Nanai Spoken": ["ISO 639-6 entity"], "Gold-Formal": ["ISO 639-6 entity"], "Sunggari": ["ISO 639-6 entity"], "Torgon": ["ISO 639-6 entity"], "Kuro-Urmi": ["ISO 639-6 entity"], "Ussuri": ["ISO 639-6 entity"], "Akani": ["ISO 639-6 entity"], "Birar": ["ISO 639-6 entity"], "Kile": ["ISO 639-6 entity"], "Ulch": ["ISO 639-6 entity"], "Ulch Spoken": ["ISO 639-6 entity"], "Hezhen": ["ISO 639-6 entity"], "Orok": ["ISO 639-6 entity"], "Orok Spoken": ["ISO 639-6 entity"], "Orok-N": ["ISO 639-6 entity"], "Orok-C ": ["ISO 639-6 entity"], "Orok-S": ["ISO 639-6 entity"], "Samagir": ["ISO 639-6 entity"], "Andaman Island": ["Language family spoken by the Andamanese peoples of the Andaman Islands, a union territory of India."], "Great Andamanese": ["ISO 639-6 entity"], "Great Andamanese Northern": ["ISO 639-6 entity"], "Aka-Cari": ["An almost extinct language of the Andaman Islands, India, spoken by the Aka-Cari people."], "Aka-Kora": ["An extinct language of the Andaman Islands, India, spoken by the Aka-Kora people."], "Aka-Bo": ["An almost extinct language of the Andaman Islands, India, spoken by the Aka-Bo people."], "Aka-Jeru": ["An almost extinct language of the Andaman Islands, India, spoken by the Aka-Jeru people."], "Great Andamanese Central": ["ISO 639-6 entity"], "Aka-Kede": ["An extinct language of the Andaman Islands, India, spoken by the Aka-Kede people."], "Aka-Kol": ["An extinct language of the Andaman Islands, India, spoken by the Aka-Kol people."], "Oko-Juwoi": ["An extinct language of the Andaman Islands, India, spoken by the Oko-Juwoi people."], "A-Pucikwar": ["An extinct language of the Andaman Islands, India, spoken by the A-Pucikwar people."], "Akar Bale": ["An extinct language of the Andaman Islands, India, spoken by the Akar Bale people."], "Akar-Bale-N": ["ISO 639-6 entity"], "Akar-Bale-S": ["ISO 639-6 entity"], "Aka-Bea": ["An extinct Great Andamanese language, of the Central group, spoken around the western Andaman Strait and around the northern and western coast of South Andaman."], "South Andamanese Cluster": ["ISO 639-6 entity"], "Sentinel": ["Language belonging to the South Andamanese Cluster, spoken in the Sentinel Islands, in India."], "Jarawa (India)": ["Language belonging to the South Andamanese Cluster, spoken in the Andaman Islands, in India"], "\u00d6nge": ["Language belonging to the South Andamanese Cluster, spoken in the Onge Island, India."], "Austroasiatic": ["A large language family of Southeast Asia, and also scattered throughout India and Bangladesh."], "Munda": ["A language family spoken by about nine million people in eastern India and Bangladesh.", "A tribal (Adivasi) people of the Jharkhand region, which is spread over on five states of India (Jharkhand, Bihar, West Bengal, Chhatisgarh and Orissa), and in parts of Bangladesh. (source: wikipedia)"], "North Munda": ["ISO 639-6 entity"], "Korku Cluster": ["ISO 639-6 entity"], "Korku": ["A North Munda language spoken by the Korku people in Central India.", "A language of India."], "Bouriya": ["ISO 639-6 entity"], "Bondoy": ["A language of India."], "Ruma": ["Variety of Munda language spoken in Ruma, Bangladesh.", "An Upazila of Bandarban District in the Division of Chittagong, Bangladesh."], "Bopchi": ["Variety of Munda language spoken by the Bopchi people in India.", "A tribal group of India."], "Mawasi": ["Variety of Munda language spoken by the Mawasi people in India.", "A tribal group of India."], "Kherwari": ["ISO 639-6 entity", "A language spoken by the Khirwar people in the Surguja district at the borders of Madhya Pradesh and Uttar Pradesh, in India."], "Santali Cluster": ["ISO 639-6 entity"], "Santali": ["A Kherwari language of the Austro-Asiatic family spoken by around 6.2 million people in India, Bangladesh, Bhutan and Nepal."], "Kamari-Santali": ["ISO 639-6 entity"], "Lohari-Santali": ["ISO 639-6 entity"], "Mahali": ["ISO 639-6 entity"], "Mahali Spoken": ["ISO 639-6 entity"], "Paharia-Santali": ["ISO 639-6 entity"], "Karmali": ["ISO 639-6 entity"], "Turi": ["ISO 639-6 entity"], "Turi Spoken": ["ISO 639-6 entity"], "Raigarh": ["ISO 639-6 entity", "ISO 639-6 entity"], "Sambalpur": ["ISO 639-6 entity"], "Mundari": ["ISO 639-6 entity"], "Mundari Written": ["ISO 639-6 entity"], "Mundari Written Bengali Script": ["ISO 639-6 entity"], "Mundari Written Devanagari Script": ["ISO 639-6 entity"], "Mundari Spoken": ["ISO 639-6 entity"], "Hasada": ["ISO 639-6 entity"], "Latar": ["ISO 639-6 entity"], "Naguri": ["ISO 639-6 entity"], "Kera": ["ISO 639-6 entity", "A language of Chad and Cameroon."], "Ho": ["A language of India"], "Ho Written": ["ISO 639-6 entity"], "Ho Written Varang Kshiti Script": ["ISO 639-6 entity"], "Ho Written Oriya Script": ["ISO 639-6 entity"], "Ho Written Devanagari Script": ["ISO 639-6 entity"], "Ho Spoken": ["ISO 639-6 entity"], "Chaibasa- Thakurmunda": ["ISO 639-6 entity"], "Lanka-Kol": ["ISO 639-6 entity"], "Lohari-Mundari": ["ISO 639-6 entity"], "Bhumij": ["A Mundari language spoken by the Bhumij people in the Indian states of West Bengal, Orissa and Jharkhand."], "Bhumij Spoken": ["ISO 639-6 entity"], "Kisan-Bhumij": ["ISO 639-6 entity"], "Kurmi": ["ISO 639-6 entity"], "Parse-Bhumij": ["ISO 639-6 entity"], "Rahiya": ["ISO 639-6 entity"], "Korwa": ["ISO 639-6 entity"], "Korwa Spoken": ["ISO 639-6 entity"], "Ernga": ["ISO 639-6 entity"], "Singli": ["ISO 639-6 entity"], "Majhi-Korwa": ["ISO 639-6 entity"], "Asuri": ["A language of India."], "Brijia": ["A dialect of the Asuri language."], "Koranti": ["ISO 639-6 entity"], "Bijori": ["A language of India"], "Koda": ["A language of India."], "Koda Spoken": ["ISO 639-6 entity"], "Khaira": ["ISO 639-6 entity"], "Mirdha-Kora": ["ISO 639-6 entity"], "Bankara": ["ISO 639-6 entity"], "Birbhum": ["ISO 639-6 entity"], "Dhangon": ["ISO 639-6 entity"], "Birhor": ["A language of India."], "Birhor Spoken": ["The spoken Birhor language and its dialects."], "Hazaribagh": ["A dialect of the Birhor language.", "ISO 639-6 entity"], "Singbhum": ["A dialect of the Birhor language."], "Ranchi": ["A dialect of the Birhor language."], "Koraku": ["A language of India."], "Agariya": ["A language of India."], "South Munda": ["ISO 639-6 entity"], "South Munda Central Cluster": ["ISO 639-6 entity"], "Kharia": ["A language of India."], "Kharia Spoken": ["ISO 639-6 entity"], "Dhelki-Kharia": ["ISO 639-6 entity"], "Dudh-Kharia": ["ISO 639-6 entity"], "Mirdha-Kharia": ["ISO 639-6 entity"], "Juang": ["A language of India."], "Koraput Munda": ["ISO 639-6 entityVariedad de la lengua munda hablada en Koraput, India."], "Sora-Gorum": ["ISO 639-6 entity"], "Sora-Juray Cluster": ["ISO 639-6 entity"], "Sora": ["ISO 639-6 entity"], "Sora Written": ["Written forms of the Sora language."], "Sora Written Latin Script": ["A written form of the Sora language."], "Sora Written Telugu Script": ["ISO 639-6 entity"], "Sora Spoken": ["ISO 639-6 entity"], "Ganjam": ["ISO 639-6 entity"], "Koraput": ["A dialect of Sora language spoken in Koraput, India.", "A town and a District in the Indian state of Orissa, India."], "Phulbani": ["ISO 639-6 entity"], "Lodhi": ["A language of India.", "ISO 639-6 entity"], "Lodhi Spoken": ["ISO 639-6 entity"], "Juray": ["A language of India"], "Juray Spoken": ["Dialects of the juray language of India."], "Gorum Cluster": ["ISO 639-6 entity"], "Parenga": ["ISO 639-6 entity"], "Parenga Spoken": ["ISO 639-6 entity"], "Gutob- Remo-Gta": ["ISO 639-6 entity"], "Gutob-Remo Cluster": ["ISO 639-6 entity"], "Bodo Gadaba": ["Variety of Koraput Munda language spoken in India.", "A language of India."], "Bodo Gadaba Written": ["ISO 639-6 entity"], "Bodo Gadaba Written Oriya Script": ["ISO 639-6 entity"], "Bodo Gadaba Spoken": ["ISO 639-6 entity"], "Munda Orissa Gadaba": ["A dialect of the Bodo Gadaba language."], "Munda Andhra Gadaba": ["A dialect of the Bodo Gadaba language."], "Gudwa": ["A dialect of the Bodo Gadaba language."], "Sodia": ["A dialect of the Bodo Gadaba language."], "Bondo": ["A language spoken by the Bonod tribe, mainly in the Indian State of Orissa."], "Bondo Spoken": ["ISO 639-6 entity"], "Upper Bondo": ["A dialect of Bondo."], "Lower Bondo": ["A dialect of Bondo."], "Gta' Cluster": ["ISO 639-6 entity"], "Gata ' ": ["ISO 639-6 entity"], "Gata ' Spoken": ["ISO 639-6 entity"], "Gta'-W": ["ISO 639-6 entity"], "Gta'-E": ["ISO 639-6 entity"], "Mon-Khmer": ["The autochthonous language family of Southeast Asia."], "Mon-Khmer North": ["ISO 639-6 entity"], "Khasi Cluster": ["ISO 639-6 entity"], "Khasi": ["A language of India and Bangladesh."], "Khasi Written": ["ISO 639-6 entity"], "Khasi Written Bengali Script": ["ISO 639-6 entity"], "Khasi Written Latin Script": ["Khasi language written with the Latin Script."], "Khasi Spoken": ["ISO 639-6 entity"], "Khasi Proper": ["ISO 639-6 entity"], "Bhoi-Khasi": ["ISO 639-6 entity"], "Lyng-Ngam": ["ISO 639-6 entity"], "Cherrapunji": ["ISO 639-6 entity"], "Khasi-War": ["ISO 639-6 entity"], "Khynrium": ["ISO 639-6 entity"], "Pnar": ["ISO 639-6 entity"], "Pnar Written": ["Written forms of the Pnar language."], "Pnar Written Latin Script": ["A written form of the Pnar language."], "Pnar Spoken": ["ISO 639-6 entity"], "Synteng": ["ISO 639-6 entity"], "Jaintia": ["ISO 639-6 entity"], "Jowai": ["ISO 639-6 entity"], "Nongtung": ["ISO 639-6 entity"], "War": ["A language of Bangladesh."], "War Written": ["The written versions of the War language."], "War Written Latin Script": ["The War language written with the Latin script."], "War Written Bengali Script": ["The War language written with the Bengali script."], "War Spoken": ["The War spoken language and its dialects."], "War-Jainita": ["A dialect of the War language."], "War-Khasi": ["A dialect of the War language."], "Palaungic-Khumic": ["ISO 639-6 entity"], "Palaungic": ["A branch of the Austro-Asiatic languages in which most languages lost the contrastive voicing of the ancestral Austro-Asiatic consonants, with the distinction often shifting to the following vowel."], "Palaungic-West": ["ISO 639-6 entity"], "Waic": ["ISO 639-6 entity"], "Wa\u2013Lawa Cluster": ["ISO 639-6 entity"], "Wa": ["ISO 639-6 entity"], "Wa Written": ["Written forms of the Wa language."], "Wa Written Latin Script": ["A written form of the Wa language."], "Wa Written Latin Script Prc Chinese Orthography": ["A written form of the Wa language."], "Wa Written Latin Script Mynama Revised Bible Orthography": ["A written form of the Wa language."], "Wa Written Latin Script Youngs Bible Orthography": ["A written form of the Wa language."], "Wa Written Latin Script Unified Wa Orthography": ["A written form of the Wa language."], "Wa Spoken": ["ISO 639-6 entity"], "Wa-Lon": ["ISO 639-6 entity"], "Wu": ["One of the major divisions of the Chinese language which is spoken in most of Zhejiang province, the municipality of Shanghai, southern Jiangsu province, as well as smaller parts of Anhui, Jiangxi, and Fujian provinces."], "Kentung-Wa": ["ISO 639-6 entity"], "Son": ["ISO 639-6 entity"], "Son Written": ["Written forms of the Son language."], "Son Written Latin Script": ["A written form of the Son language."], "Son Spoken": ["ISO 639-6 entity"], "En": ["A language of Viet Nam"], "En Written": ["The written forms of the En language."], "En Written Latin Script": ["A written form of the En language."], "En Spoken": ["ISO 639-6 entity"], "Parauk": ["ISO 639-6 entity"], "Parauk Written": ["Written forms of the Parauk language."], "Parauk Written Latin Script": ["A written form of the Parauk language."], "Parauk Spoken": ["ISO 639-6 entity"], "Parauk-Salween": ["ISO 639-6 entity"], "Parauk-Yunnan": ["ISO 639-6 entity"], "Western Lawa": ["An austro-asiatic language spoken by the Western Lawa people principally in the Yongle and Zhenkang counties in Yunnan Province in China, and also in the Chiang Mai and Maehongson provinces of northern Thailand."], "Western Lawa Written Thai Script": ["The Western Lawa language written with the Thai script."], "Western Lawa Spoken": ["The dialects of the Lawa language."], "La-Oor": ["A dialect of the Western Lawa language."], "La-Oor Spoken": ["A dialect of the La-Oor language."], "La": ["ISO 639-6 entity"], "La Written": ["ISO 639-6 entity"], "La Written Latin Script": ["La language written with the Latin Script."], "La Spoken": ["ISO 639-6 entity"], "Eastern Lawa": ["A Palaungic language spoken by the Eastern Lawa people in northern Thailand on the border between Chiang Mai and Chiang Rai provinces."], "Eastern Lawa Spoken": ["Dialects of the Eastern Lawa language."], "Phalo": ["ISO 639-6 entity"], "Phalo Written": ["ISO 639-6 entity"], "Phalo Written Thai Script": ["ISO 639-6 entity"], "Phalo Spoken": ["ISO 639-6 entity"], "Phang": ["ISO 639-6 entity"], "Phang Written": ["ISO 639-6 entity"], "Phang Written Thai Script": ["ISO 639-6 entity"], "Phang Spoken": ["ISO 639-6 entity"], "Bulang Cluster": ["A group of languages of the Mon-Khmer family spoken by the Bulang people in Yunnan Province in China, as well as in Eastern Shan State in Myanmar and outside Mae Sai City in Thailand."], "Blang": ["A language of China, Myanmar and Thailand."], "Blang Written": ["The written forms of the Blang language."], "Blang Written Latin Script": ["The Blang language written with the Latin script."], "Blang Written Latin Script Totham Model": ["The Blang language written with the Latin script Totham Model."], "Blang Written Latin Script Tolek Model": ["The Blang language written with the Latin script Tolek Model."], "Blang Spoken": ["The Blang spoken language and its dialects."], "Samtao": ["ISO 639-6 entity"], "Samtao Spoken": ["ISO 639-6 entity"], "Pham": ["ISO 639-6 entity"], "Pham Spoken": ["ISO 639-6 entity"], "Kem Degne": ["ISO 639-6 entity"], "Kem Degne Spoken": ["ISO 639-6 entity"], "K'ala": ["ISO 639-6 entity"], "K'ala Spoken": ["ISO 639-6 entity"], "Kontoi": ["ISO 639-6 entity"], "Kontoi Spoken": ["ISO 639-6 entity"], "Puman": ["ISO 639-6 entity"], "Puman Spoken": ["ISO 639-6 entity"], "Angkuic Cluster": ["A group of Palaungic languages."], "Kiorr": ["An Angkuic language spoken by the Angku people near the common borders of Myanmar, China and Laos."], "Kiorr Spoken": ["Dialects of the Kiorr language."], "Kon Keu": ["A language of China."], "Kon Keu Spoken": ["ISO 639-6 entity"], "Mok": ["ISO 639-6 entity"], "Mok Spoken": ["ISO 639-6 entity"], "Pou-Ma": ["ISO 639-6 entity"], "Pou-Ma Spoken": ["ISO 639-6 entity"], "Hu": ["An Angkuic language spoken by the Hu people in the Xiaomengyang District of Jinghong County in Xishuangbanna Prefecture of Yunnan Province, China."], "Hu Spoken": ["Dialects of the hu language."], "Man Met": ["ISO 639-6 entity"], "Man Met Spoken": ["ISO 639-6 entity"], "Tai Loi": ["ISO 639-6 entity"], "Tai Loi Spoken": ["ISO 639-6 entity"], "Doi": ["ISO 639-6 entity", "ISO 639-6 entity"], "Doi Spoken": ["ISO 639-6 entity"], "Monglwe": ["ISO 639-6 entity"], "Monglwe Spoken": ["ISO 639-6 entity"], "Lamet Khamet Cluster": ["ISO 639-6 entity"], "Con": ["A language of Laos."], "Con Spoken": ["Variants of the Con language used in oral communication."], "Lamet": ["ISO 639-6 entity"], "Lamet Spoken": ["ISO 639-6 entity"], "Upper'-Lamet": ["ISO 639-6 entity"], "Lower'-Lamet": ["ISO 639-6 entity"], "Khamet": ["ISO 639-6 entity"], "Khamet Spoken": ["ISO 639-6 entity"], "Palaungic East": ["ISO 639-6 entity"], "Palaung-Riang": ["ISO 639-6 entity"], "Palaung Cluster": ["ISO 639-6 entity"], "Pale Palaung": ["ISO 639-6 entity"], "Pale Palaung Written ": ["ISO 639-6 entity"], "Pale Palaung Spoken": ["ISO 639-6 entity"], "Raojin": ["ISO 639-6 entity"], "Kalaw": ["ISO 639-6 entity"], "Pale-N": ["ISO 639-6 entity"], "Pale-S": ["ISO 639-6 entity"], "Shwe Palung": ["ISO 639-6 entity"], "Shwe Palung Spoken": ["ISO 639-6 entity"], "Shwe-W": ["ISO 639-6 entity"], "Shwe-E": ["ISO 639-6 entity"], "Da'ang": ["ISO 639-6 entity"], "Rumai Palaung": ["ISO 639-6 entity"], "Rumai Palaung Spoken": ["ISO 639-6 entity"], "Rumai-W": ["ISO 639-6 entity"], "Rumai-E": ["ISO 639-6 entity"], "Manton": ["ISO 639-6 entity"], "Nam-Hsan": ["ISO 639-6 entity"], "Rianglang Cluster ": ["ISO 639-6 entity"], "Riang (Myanmar) ": ["ISO 639-6 entity"], "Riang (Myanmar) Spoken": ["ISO 639-6 entity"], "Riang-Lang-W": ["ISO 639-6 entity"], "Riang-Lang-E": ["ISO 639-6 entity"], "Yinchia": ["ISO 639-6 entity"], "Danau": ["An Eastern Palaungic language spoken by the Danau people in central areas of Shan State and the northern part of Kayah State in Myanmar."], "Danau Spoken": ["Dialects of the Danau language."], "Khumic": ["ISO 639-6 entity"], "Bit": ["A language of the Khao language group spoken in Laos and China."], "Bit Spoken": ["Dialects of the Bit language."], "Nam-Tha": ["A dialect of the Bit language."], "Boun-Neua": ["A dialect of the Bit language."], "Kha-Bit-N": ["A dialect of the Bit language."], "Khao": ["The Khao group of languages spoken in Vietnam."], "Khao Spoken": ["The variants of the Khao language used for oral communication."], "Mal-Khmu\u2019": ["ISO 639-6 entity"], "Khmu\u2019 Cluster": ["ISO 639-6 entity"], "Khmu": ["A Khmuic language spoken by the Khmu people, primarily in the northern Laos region, as well as in Vietnam, China, Myanmar and Thailand."], "Khmu Written": ["The written forms of the Khmu language."], "Khmu Written Duota Script": ["The Khmu language written with the Duota script."], "Khmu Written Shong Lue Yang Script": ["The Khmu language written with the Lue Yang script."], "Khmu Spoken": ["The dialects of the Khmu language."], "Khroong": ["A dialect of the Khmu language."], "Lyy": ["A dialect of the Khmu language."], "Rok": ["A dialect of the Khmu language."], "U": ["ISO 639-6 entity"], "U Spoken": ["ISO 639-6 entity"], "Yuan": ["ISO 639-6 entity", "A script used for three living languages: Northern Thai (that is, Kam Mueang), Tai L\u00fc and Kh\u00fcn."], "Luang-Prabang": ["ISO 639-6 entity", "ISO 639-6 entity"], "Sayabury": ["ISO 639-6 entity"], "Khuen": ["A Khmuic language spoken by the Khuen people mainly in Luang Namtha and Oudomxai provinces in north-west Laos and in nearby areas of south-west China.", "An aboriginal ethnic group of Laos."], "Khuen Spoken": ["The dialects of the Khuen language."], "O\u2019du": ["ISO 639-6 entity"], "Mal Cluster": ["ISO 639-6 entity"], "Mal": ["ISO 639-6 entity"], "Mal Spoken": ["ISO 639-6 entity"], "Madi": ["ISO 639-6 entity", "A language of Papua New Guinea."], "Kha-Tin": ["ISO 639-6 entity"], "Phai": ["ISO 639-6 entity"], "Phai Spoken": ["ISO 639-6 entity"], "Nan-Phai": ["ISO 639-6 entity"], "Phai-E": ["ISO 639-6 entity"], "Lua'": ["ISO 639-6 entity"], "Lua' Spoken": ["ISO 639-6 entity"], "Lua'-Pua": ["ISO 639-6 entity"], "Lua'-E": ["ISO 639-6 entity"], "Pray 3": ["ISO 639-6 entity"], "Pray 3 Spoken": ["ISO 639-6 entity"], "Pray-Thung-Chang": ["ISO 639-6 entity"], "Pray-Pua": ["ISO 639-6 entity"], "Yumbri-Mlabri Cluster": ["ISO 639-6 entity"], "Mlabri": ["ISO 639-6 entity"], "Yumbri": ["ISO 639-6 entity"], "Xinh-Mul Cluster": ["ISO 639-6 entity"], "Puoc": ["ISO 639-6 entity"], "Puoc Spoken": ["ISO 639-6 entity"], "Puok-Lai-Chau": ["ISO 639-6 entity"], "Puok-Moc-Chau": ["ISO 639-6 entity"], "Puok-Phu-Yen": ["ISO 639-6 entity"], "Puok-Yen-Chau": ["ISO 639-6 entity"], "Phong-Kniang": ["ISO 639-6 entity"], "Kh\u00e1ng": ["A language of Viet Nam."], "Kh\u00e1ng Spoken": ["The dialects of the Kh\u00e1ng language."], "Khang-Clau": ["A dialect of the Kh\u00e1ng language."], "Khang-Ai": ["A dialect of the Kh\u00e1ng language."], "Mang": ["ISO 639-6 entity", "ISO 639-6 entity"], "Mang Spoken": ["ISO 639-6 entity"], "Mang-E": ["ISO 639-6 entity"], "Mang-N": ["ISO 639-6 entity"], "Mang-W": ["ISO 639-6 entity"], "Viet-Muong": ["ISO 639-6 entity"], "Viet-Muong Group Iii Cluster": ["ISO 639-6 entity"], "Muong": ["ISO 639-6 entity"], "Muong Spoken": ["ISO 639-6 entity"], "Muong-A": ["ISO 639-6 entity"], "Thang": ["ISO 639-6 entity"], "Wang": ["ISO 639-6 entity"], "Mol": ["ISO 639-6 entity"], "Mual": ["ISO 639-6 entity"], "Moi": ["ISO 639-6 entity"], "Boi-Bi": ["ISO 639-6 entity"], "Ao-Ta": ["ISO 639-6 entity"], "Muong-S": ["ISO 639-6 entity"], "Ngu\u00f4n": ["ISO 639-6 entity"], "Ngu\u00f4n Spoken": ["ISO 639-6 entity"], "Ngu\u00f4n-E": ["ISO 639-6 entity"], "Ngu\u00f4n-W": ["ISO 639-6 entity"], "Kha-Tong-Luang": ["ISO 639-6 entity"], "Kha-Tong-Luang Spoken": ["ISO 639-6 entity"], "Bo (Laos) ": ["ISO 639-6 entity"], "Bo (Laos) Spoken": ["The dialects of the Bo language (Laos)."], "Bo-W": ["ISO 639-6 entity"], "Bo-E": ["ISO 639-6 entity"], "May Spoken": ["ISO 639-6 entity"], "May-Phuc-Trach": ["ISO 639-6 entity"], "May-E": ["ISO 639-6 entity"], "Viet-Muong Group I Cluster": ["ISO 639-6 entity"], "Chut": ["ISO 639-6 entity"], "Chut Spoken": ["ISO 639-6 entity"], "Sach": ["ISO 639-6 entity"], "Sach Spoken": ["ISO 639-6 entity"], "Arem": ["A language of Viet Nam and Laos."], "Arem Spoken": ["The dialects of the Arem language."], "Arem-E": ["A dialect of the Arem language."], "Arem-W": ["A dialect of the Arem language."], "Aheu": ["A language of Thailand and Laos."], "Aheu Spoken": ["Dialects of the Aheu language."], "Maleng": ["ISO 639-6 entity"], "Maleng Spoken": ["ISO 639-6 entity"], "Hareme": ["ISO 639-6 entity"], "Kha Pong": ["ISO 639-6 entity"], "Malang": ["ISO 639-6 entity"], "Malieng": ["ISO 639-6 entity"], "Pakatan": ["ISO 639-6 entity"], "Viet-Muong Group II Cluster": ["ISO 639-6 entity"], "Hung": ["A language of Laos and Viet Nam.", "A dialect of the Iu Mien language."], "Hung Spoken": ["Dialects of the Hung language."], "Dan Lai": ["A dialect of the Hung language."], "Ly Ha": ["A dialect of the Hung language."], "Poong": ["ISO 639-6 entity"], "Toum": ["ISO 639-6 entity"], "Tho": ["ISO 639-6 entity"], "Uy-L\u00f4": ["ISO 639-6 entity"], "Mon": ["ISO 639-6 entity", "ISO 639-6 entity"], "Kh\u00f4ng-Kh\u00eang": ["ISO 639-6 entity"], "Viet-Muong Group IV Cluster": ["ISO 639-6 entity"], "Vietnamese Written": ["Written forms of the Vietnamese language."], "Vietnamese Written Ch\u0169-N\u00f4m Script": ["ISO 639-6 entity"], "Vietnamese Written Ch\u0169-Nho Script": ["ISO 639-6 entity"], "Vietnamese Written Latin Pre-Modern Script": ["A written form of the Vietnamese language."], "Vietnamese Written Latin Qu\u00f4c-Ngu Script": ["A written form of the Vietnamese language."], "Haiphong": ["ISO 639-6 entity"], "Saigon": ["ISO 639-6 entity", "A river located in southern Vietnam that rises near Phum Daung in southeastern Cambodia, and flows south and south-southeast for about 140 miles (225 km) to the Mekong Delta."], "Mekong": ["ISO 639-6 entity"], "Vietnamese Central Spoken": ["ISO 639-6 entity"], "Hu\u00ea": ["ISO 639-6 entity"], "Ngh\u00ea An": ["ISO 639-6 entity"], "Qu\u0103ng Nam": ["ISO 639-6 entity"], "Palyu Cluster": ["ISO 639-6 entity"], "Bolyu": ["ISO 639-6 entity"], "Bogan": ["A language of China."], "Mon-Khmer-East": ["ISO 639-6 entity"], "Katuic": ["ISO 639-6 entity"], "Katuic West": ["ISO 639-6 entity"], "So-Br\u0169 Cluster": ["ISO 639-6 entity"], "S\u00f4": ["ISO 639-6 entity"], "S\u00f4 Spoken": ["ISO 639-6 entity"], "So-Trong": ["ISO 639-6 entity"], "So-Slouy": ["ISO 639-6 entity"], "So-Phong": ["ISO 639-6 entity"], "Eastern Bru": ["A language of Laos, Thailand and Viet Nam."], "Eastern Bru Spoken": ["Dialects of the Eastern Bru language."], "Bru Kok Sa-At": ["A dialect of the Eastern Bru language."], "Bru Dong Sen Keo": ["A dialect of the Eastern Bru language."], "So-Tri": ["ISO 639-6 entity"], "So-Tri Spoken": ["ISO 639-6 entity"], "So-Tri-E": ["ISO 639-6 entity"], "So-Tri-W": ["ISO 639-6 entity"], "Western Bru": ["A language of Thailand."], "Mangkong": ["ISO 639-6 entity"], "Khua": ["ISO 639-6 entity"], "Khua Spoken": ["ISO 639-6 entity"], "Khua-E": ["ISO 639-6 entity"], "Khua-W": ["ISO 639-6 entity"], "Kaleu": ["ISO 639-6 entity"], "Quang-Tri": ["ISO 639-6 entity"], "Quang-Tri Spoken": ["ISO 639-6 entity"], "Chali": ["ISO 639-6 entity", "ISO 639-6 entity"], "Kaleu-A": ["ISO 639-6 entity"], "Savannakhet": ["ISO 639-6 entity"], "Sakon-Nakhon": ["ISO 639-6 entity"], "Leung": ["ISO 639-6 entity"], "Sapoin": ["ISO 639-6 entity"], "Kuy-Suei Cluster": ["ISO 639-6 entity"], "Kuy": ["ISO 639-6 entity"], "Kuy Written": ["ISO 639-6 entity"], "Kuy Written Thai Script": ["ISO 639-6 entity"], "Kuy Written Khymer Script": ["ISO 639-6 entity"], "Kuy Spoken": ["ISO 639-6 entity"], "Suai Chang": ["ISO 639-6 entity"], "Nheu": ["ISO 639-6 entity"], "Kuy Antra": ["ISO 639-6 entity"], "Kuy Anthua": ["ISO 639-6 entity"], "Kuy May": ["ISO 639-6 entity"], "Kuy Mlor": ["ISO 639-6 entity"], "Damrey": ["ISO 639-6 entity"], "Anlour": ["ISO 639-6 entity"], "O": ["ISO 639-6 entity", "Abbreviation of octavo, a book size."], "Kuy Kraol": ["ISO 639-6 entity"], "Na-Nhyang": ["ISO 639-6 entity"], "Nyeu": ["ISO 639-6 entity"], "Katuic East": ["ISO 639-6 entity"], "Kataang": ["A language of Laos."], "Ta'oih-Tong Cluster": ["ISO 639-6 entity"], "Upper Ta'oih": ["ISO 639-6 entity"], "Upper Ta'oih Written ": ["ISO 639-6 entity"], "Upper Ta' Oih Spoken": ["ISO 639-6 entity"], "Pasoom": ["ISO 639-6 entity"], "Kamuan'": ["ISO 639-6 entity"], "Palee'n": ["ISO 639-6 entity"], "Leem": ["ISO 639-6 entity"], "Ha'ang ": ["ISO 639-6 entity"], "Lower Ta\u2019 Oih": ["ISO 639-6 entity"], "Lower Ta\u2019 Oih Spoken": ["ISO 639-6 entity"], "Tong-A": ["ISO 639-6 entity"], "Han-Tong'": ["ISO 639-6 entity"], "Ir": ["A language of Laos."], "Ir Spoken": ["Dialects of the Ir language."], "Ong": ["ISO 639-6 entity"], "Ngeq- Nkriang Cluster": ["ISO 639-6 entity"], "Alak": ["A language of Laos."], "Ngeq": ["ISO 639-6 entity"], "Khlor": ["A language of Laos."], "Pac\u00f4h Phu\u00f4ng Cluster": ["ISO 639-6 entity"], "Pacoh": ["ISO 639-6 entity"], "Pa-C\u00f4h-A": ["ISO 639-6 entity"], "Pa-Hi": ["ISO 639-6 entity"], "Phuong": ["ISO 639-6 entity"], "Katu Thap Cluster": ["ISO 639-6 entity"], "Eastern Katu": ["A language of Viet Nam."], "Western Katu": ["A language of Laos."], "Western Katu Spoken": ["The dialects of the Western Katu language."], "Khat": ["A dialect of the Western Katu language."], "Attouat": ["A dialect of the Western Katu language."], "Teu": ["A dialect of the Western Katu language."], "Thap": ["ISO 639-6 entity"], "Tareng": ["ISO 639-6 entity"], "Kasseng": ["A language of Laos"], "Bahnaric": ["ISO 639-6 entity"], "Bahnaric North": ["ISO 639-6 entity"], "Bahnaric North East": ["ISO 639-6 entity"], "Takua": ["ISO 639-6 entity"], "Takua-A": ["ISO 639-6 entity"], "Qang-Tin-Katu": ["ISO 639-6 entity"], "Langya": ["ISO 639-6 entity"], "Cua-Kayong Cluster": ["ISO 639-6 entity"], "Kayong": ["A language of Viet Nam."], "Cua": ["A language of Viet Nam"], "Cua-A": ["A dialect of the Cua language."], "Kor": ["A dialect of the Cua language."], "Dot": ["A dialect of the Cua language.", "ISO 639-6 entity", "A female first name."], "Yot": ["A dialect of the Cua language."], "Traw": ["A dialect of the Cua language."], "Dong": ["A dialect of the Cua language.", "ISO 639-6 entity", "A dialect of the bacama language."], "Bong-Miew": ["ISO 639-6 entity"], "Katua": ["A language of Viet Nam."], "Bahnaric North West": ["ISO 639-6 entity"], "Jeh-Halang Cluster": ["ISO 639-6 entity"], "Trieng": ["ISO 639-6 entity"], "Talieng": ["ISO 639-6 entity"], "Jeh": ["A Bahnaric language of Viet Nam and Laos."], "Jeh-Bri-La": ["A dialect of the Jeh language."], "Jeh-Mang-Ram": ["A dialect of the Jeh language."], "Halang": ["A Bahnaric language spoken in the southern Laotian province of Attapu and in the neighboring Kon Tum Province of Vietnam."], "Halang-E": ["A dialect of the Halang language."], "Halang-W": ["A dialect of the Halang language."], "Halang Doan": ["A language of Viet Nam and Laos."], "Rengao": ["ISO 639-6 entity"], "Rengao-W": ["ISO 639-6 entity"], "Sedang-Rengao": ["ISO 639-6 entity"], "Bahnar-Rengao": ["ISO 639-6 entity"], "Sedang Todrah Cluster": ["ISO 639-6 entity"], "Sedang Cluster": ["ISO 639-6 entity"], "Sedang": ["ISO 639-6 entity"], "Sedang-Roteang": ["ISO 639-6 entity"], "Sedang-C": ["ISO 639-6 entity"], "Greater-Sedang": ["ISO 639-6 entity"], "Dak-Sut-Sedang": ["ISO 639-6 entity"], "Kotua-Sedang": ["ISO 639-6 entity"], "Kon-Hring-Sedang": ["ISO 639-6 entity"], "Todrah-Monom Cluster": ["ISO 639-6 entity"], "Todrah": ["ISO 639-6 entity"], "Todrah-Modra": ["ISO 639-6 entity"], "Didrah": ["ISO 639-6 entity"], "Monom": ["ISO 639-6 entity"], "Hre": ["A language of Viet Nam"], "Hre-A": ["A dialect of the Hre language."], "Rabah": ["A dialect of the Hre language."], "Creq": ["A dialect of the Hre language."], "Bahnaric Central": ["ISO 639-6 entity"], "Alak-S": ["ISO 639-6 entity"], "Lamam": ["A language of Cambodia."], "Tampuan": ["ISO 639-6 entity"], "Bahnar": ["A language of Viet Nam."], "Bahnar Spoken": ["The Bahnar spoken language and its dialects."], "Bahnar-A": ["A dialect of the Bahnar language."], "Tolo": ["A dialect of the Bahnar language."], "Golar": ["A dialect of the Bahnar language."], "Akalong": ["A dialect of the Bahnar language."], "Olong": ["A dialect of the Bahnar language."], "Bahnar-Bonom": ["A dialect of the Bahnar language."], "Romam": ["ISO 639-6 entity"], "Kaco\u2019": ["ISO 639-6 entity"], "Bahnaric West": ["ISO 639-6 entity"], "Laven": ["A language of Laos."], "Lave": ["A language of Laos, Cambodia and Viet Nam."], "Lave Spoken": ["ISO 639-6 entity"], "Nyahon Prouac Cluster": ["ISO 639-6 entity"], "Nyaheun": ["ISO 639-6 entity"], "Prouac": ["ISO 639-6 entity"], "Brao Kravet Cluster": ["ISO 639-6 entity"], "Brao": ["A language of Laos, Cambodia and Viet Nam.", "ISO 639-6 entity"], "Sou": ["ISO 639-6 entity"], "Kravet": ["ISO 639-6 entity"], "Kru\u2019ng 2": ["ISO 639-6 entity"], "Oi The Cluster": ["ISO 639-6 entity"], "Oy": ["ISO 639-6 entity"], "Oy Spoken": ["ISO 639-6 entity"], "Riyao": ["ISO 639-6 entity"], "Tamal-Euy": ["ISO 639-6 entity"], "Kranyeu": ["ISO 639-6 entity"], "Inn-Tea": ["ISO 639-6 entity"], "The": ["ISO 639-6 entity"], "Sok": ["ISO 639-6 entity"], "Sapuan": ["ISO 639-6 entity"], "Jeng": ["A language of Laos."], "Bahnaric South": ["ISO 639-6 entity"], "Mnong": ["ISO 639-6 entity"], "Southern Central Mnong Cluster": ["ISO 639-6 entity"], "Central Mnong": ["A language of Viet Nam and Cambodia."], "Central Mnong Spoken": ["The dialects of the Central Mnong language."], "Preh": ["A dialect of the Central Mnong language."], "Bu-Nar": ["A dialect of the Central Mnong language."], "Bu-Rung": ["A dialect of the Central Mnong language."], "Dih-Bri": ["A dialect of the Central Mnong language."], "Pnong-A": ["A dialect of the Central Mnong language."], "Biat": ["ISO 639-6 entity"], "Eastern Mnong Cluster": ["ISO 639-6 entity"], "Eastern Mnong": ["ISO 639-6 entity"], "Eastern Mnong Spoken": ["ISO 639-6 entity"], "Gar": ["ISO 639-6 entity", "ISO 639-6 entity"], "Kwanh": ["ISO 639-6 entity"], "Rolom": ["ISO 639-6 entity"], "Kil": ["ISO 639-6 entity"], "Southern Mnong": ["ISO 639-6 entity"], "Southern Mnong Spoken": ["ISO 639-6 entity"], "Bu-Nong": ["ISO 639-6 entity"], "Prang": ["ISO 639-6 entity"], "Ra-Ong": ["ISO 639-6 entity"], "Bu-Dip": ["ISO 639-6 entity"], "Bu-Sre": ["ISO 639-6 entity"], "Sre Mnong": ["ISO 639-6 entity"], "Koho": ["A language of Viet Nam."], "Koho Spoken": ["The dialects of the Koho language."], "Lat": ["A dialect of the Koho language."], "Tring": ["A dialect of the Koho language."], "Sre-S": ["A dialect of the Koho language."], "Maa ": ["A language of Viet Nam"], "Maa Spoken": ["ISO 639-6 entity"], "Kalop": ["ISO 639-6 entity"], "Sop": ["ISO 639-6 entity"], "Layza": ["ISO 639-6 entity"], "Rion": ["ISO 639-6 entity"], "Nop": ["ISO 639-6 entity"], "Tala": ["ISO 639-6 entity", "ISO 639-6 entity"], "Kodu": ["ISO 639-6 entity"], "Pru": ["ISO 639-6 entity"], "Bu-Lach": ["ISO 639-6 entity"], "Stieng Chrau": ["ISO 639-6 entity"], "Bulo Stieng": ["ISO 639-6 entity"], "Bulo Stieng Written": ["ISO 639-6 entity"], "Bulo Stieng Written Latin Script": ["A written form of the Bulo Stieng language."], "Bulo Stieng Spoken": ["ISO 639-6 entity"], "Bu-Lo": ["ISO 639-6 entity"], "Bu-Deh": ["ISO 639-6 entity"], "Budeh Stieng": ["ISO 639-6 entity"], "Budeh Stieng Spoken": ["ISO 639-6 entity"], "Chrau": ["A language of Viet Nam"], "Chrau Written": ["ISO 639-6 entity"], "Chrau Written Latin Script": ["Chrau language written with the Latin Script."], "Chrau Spoken": ["ISO 639-6 entity"], "Jro": ["ISO 639-6 entity"], "Mro": ["ISO 639-6 entity"], "Dor": ["ISO 639-6 entity"], "Chrau-Prang": ["ISO 639-6 entity"], "Voqtwaq": ["ISO 639-6 entity"], "Vajieng": ["ISO 639-6 entity"], "Chalah": ["ISO 639-6 entity"], "Chalun": ["ISO 639-6 entity"], "Tamun": ["ISO 639-6 entity"], "Kraol": ["ISO 639-6 entity"], "Kraol Spoken": ["ISO 639-6 entity"], "Khmer Cluster": ["ISO 639-6 entity"], "Central Khmer": ["An austroasiatic language spoken primarily in Cambodia where it is an official language, and in the nearby regions of Vietnam."], "Khmae Historical": ["ISO 639-6 entity"], "Khmae Historical W Pallava, Proto-Cambodian": ["ISO 639-6 entity"], "Central Khmer Written": ["The written forms of the Khmer language."], "Central Khmer Written Khmer Script": ["The Central Khmer language written with the Khmer script."], "Central Khmer Spoken": ["The dialects of the Central Khmer language."], "Khmae-Formal": ["ISO 639-6 entity"], "Khmae-General": ["ISO 639-6 entity"], "Phnom-Penh": ["ISO 639-6 entity"], "Khmae-Battambang": ["ISO 639-6 entity"], "Kmae-Cardamom": ["ISO 639-6 entity"], "Northern Khmer": ["Dialect of the Khmer language spoken by the Khmer native to the Thai provinces of Surin, Sisaket, Buriram and Roi Et."], "Northern Khmer Written Khmer Script": ["The Northern Khmer language written with the Khmer script."], "Northern Khmer Spoken": ["Variants of the Northern Khmer language used in oral communication."], "Buriram": ["A dialect of the Northern Khmer language spoken in the Buriram Province of Thailand."], "Surin": ["A dialect of the Northern Khmer language spoken in the Surin Province of Thailand."], "Sri-Saket": ["A dialect of the Northern Khmer language spoken in the Sisaket Province of Thailand."], "Khmeer-W": ["ISO 639-6 entity"], "Khmeer-W Spoken": ["ISO 639-6 entity"], "Prachinburi": ["ISO 639-6 entity"], "Chanthaburi": ["ISO 639-6 entity"], "Trat": ["ISO 639-6 entity"], "Kmer-Krom": ["ISO 639-6 entity"], "Pearic": ["A group of languages of the Eastern Mon-Khmer branch of the Austroasiatic language family, spoken by Pear people living in western Cambodia and southeastern Thailand."], "Pearic West": ["ISO 639-6 entity"], "Samre Cluster": ["ISO 639-6 entity"], "Samre": ["ISO 639-6 entity"], "Somray": ["ISO 639-6 entity"], "Somray Spoken": ["ISO 639-6 entity"], "Phum-Ta-Sanh": ["ISO 639-6 entity"], "Phum-Pra-Moi": ["ISO 639-6 entity"], "Chong Cluster": ["ISO 639-6 entity"], "Chong": ["A Western Pearic language spoken by the Chong people in Pursat Province in north-western Cambodia and in several villages in the Chanthaburi Province and Trat Province in Thailand."], "Chong Spoken": ["Dialects of the Chong language."], "Sa\u2019och": ["ISO 639-6 entity"], "Suoy": ["ISO 639-6 entity"], "Suoy Spoken": ["ISO 639-6 entity"], "Angrak": ["ISO 639-6 entity"], "Pearic Eastern": ["ISO 639-6 entity"], "Pear": ["ISO 639-6 entity"], "Mon-Khmer-South": ["ISO 639-6 entity"], "Monic Cluster": ["ISO 639-6 entity"], "Mon Written": ["ISO 639-6 entity"], "Mon Written Pallava Script": ["ISO 639-6 entity"], "Mon Written Mon Script": ["ISO 639-6 entity"], "Mon Written Myanmar Script": ["ISO 639-6 entity"], "Mon-Te": ["ISO 639-6 entity"], "Mataban": ["ISO 639-6 entity"], "Moulmein": ["ISO 639-6 entity"], "Taungnyo": ["ISO 639-6 entity"], "Mon-Nya": ["ISO 639-6 entity"], "Kachanaburi": ["ISO 639-6 entity"], "Krung-Thep-W": ["ISO 639-6 entity"], "Lopburi": ["ISO 639-6 entity"], "Krung-Thep-N": ["ISO 639-6 entity"], "Talaing": ["ISO 639-6 entity"], "Mon-Tang": ["ISO 639-6 entity"], "Nyahkur": ["A language of Thailand."], "Nyahkur Spoken": ["Dialects of the Nyahkur language."], "Phetchabun": ["A dialect of the Nyahkur language.", "ISO 639-6 entity"], "Nakhon-Ratchasima": ["A dialect of the Nyahkur language."], "Korat": ["A dialect of the Nyahkur language."], "Alsian": ["ISO 639-6 entity"], "Semang-Jah Hut": ["ISO 639-6 entity"], "Semang Senoic": ["ISO 639-6 entity"], "Semang": ["ISO 639-6 entity"], "Semang Western Cluster": ["ISO 639-6 entity"], "Tonga (Thailand) Spoken": ["ISO 639-6 entity"], "Trang": ["ISO 639-6 entity", "ISO 639-6 entity"], "Phatthalung": ["ISO 639-6 entity", "ISO 639-6 entity"], "Mos": ["ISO 639-6 entity"], "Satun": ["ISO 639-6 entity"], "Kensiu": ["A language of Malaysia (Peninsular) and Thailand."], "Kensiu Spoken": ["ISO 639-6 entity"], "Kensiu-Batu'": ["ISO 639-6 entity"], "Kensiu-Siong": ["ISO 639-6 entity"], "Kensiu-Pemsed": ["ISO 639-6 entity"], "Sakai": ["ISO 639-6 entity"], "Semang-A": ["ISO 639-6 entity"], "Mendi": ["ISO 639-6 entity"], "Monik": ["ISO 639-6 entity"], "Ngok-Pa": ["ISO 639-6 entity"], "Orang-Bukit": ["ISO 639-6 entity"], "Orang-Liar": ["ISO 639-6 entity"], "Mengo": ["ISO 639-6 entity"], "Tiong": ["ISO 639-6 entity"], "Mawas": ["ISO 639-6 entity"], "Belubn": ["ISO 639-6 entity"], "Ijoh": ["ISO 639-6 entity"], "Jarum": ["ISO 639-6 entity"], "Jeher": ["ISO 639-6 entity"], "Kedah": ["ISO 639-6 entity"], "Plus": ["ISO 639-6 entity"], "Ulu-Selama": ["ISO 639-6 entity"], "Meni'-Kaien": ["ISO 639-6 entity"], "Kintaq": ["A language of Malaysia (Peninsular) and Thailand"], "Kintaq Spoken": ["ISO 639-6 entity"], "Kintaq-Nakil": ["ISO 639-6 entity"], "Semang East Cluster": ["ISO 639-6 entity"], "Jehai": ["ISO 639-6 entity", "A language of Malaysia (Peninsular)."], "Jehai Spoken": ["ISO 639-6 entity"], "Jehai-A ": ["ISO 639-6 entity"], "Pangan": ["ISO 639-6 entity"], "Batek-Teh": ["ISO 639-6 entity"], "Minriq": ["ISO 639-6 entity"], "Batek": ["A language of peninsular Malaysia.", "An indigenous people (currently numbering about 750) who live in the rainforest of peninsular Malaysia."], "Batek Spoken": ["The dialects of the Batek language."], "Batek-Teq": ["A dialect of the Batek language."], "Batek-Iga'": ["A dialect of the Batek language."], "Batek-Hapen": ["A dialect of the Batek language."], "Tomo": ["A dialect of the Batek language."], "Kleb": ["A dialect of the Batek language."], "Deq": ["ISO 639-6 entity"], "Deq Spoken": ["ISO 639-6 entity"], "Nong": ["ISO 639-6 entity"], "Nong Spoken": ["ISO 639-6 entity"], "Mintil": ["ISO 639-6 entity"], "Mintil Spoken": ["ISO 639-6 entity"], "Chewong": ["A language of Malaysia (Peninsular)."], "Chewong Spoken": ["ISO 639-6 entity"], "Beri": ["ISO 639-6 entity"], "Chuba": ["ISO 639-6 entity"], "Kled": ["ISO 639-6 entity"], "Senoic": ["ISO 639-6 entity"], "Senoic North": ["ISO 639-6 entity"], "Lanoh Semnam Cluster": ["ISO 639-6 entity"], "Lanoh": ["ISO 639-6 entity"], "Lanoh Spoken": ["ISO 639-6 entity"], "Lanoh-A": ["ISO 639-6 entity"], "Sab\u00fcm": ["ISO 639-6 entity"], "Sab\u00fcm Spoken": ["ISO 639-6 entity"], "Jengjeng": ["ISO 639-6 entity"], "Semnam": ["ISO 639-6 entity"], "Semnam Spoken": ["ISO 639-6 entity"], "Temiar": ["ISO 639-6 entity"], "Temiar Spoken": ["ISO 639-6 entity"], "Grik": ["ISO 639-6 entity"], "Kenderong": ["ISO 639-6 entity"], "Kenering": ["ISO 639-6 entity"], "Po-Klo": ["ISO 639-6 entity"], "Sungai-Piah": ["ISO 639-6 entity"], "Tanjong-Rambutan": ["ISO 639-6 entity"], "Tembe'": ["ISO 639-6 entity"], "Ulu-Kinta": ["ISO 639-6 entity"], "Lanoh-Kobak": ["ISO 639-6 entity"], "Seroq": ["ISO 639-6 entity"], "Pie": ["ISO 639-6 entity"], "Semai": ["ISO 639-6 entity"], "Semai Written": ["ISO 639-6 entity"], "Semai Spoken": ["ISO 639-6 entity"], "Jelai": ["ISO 639-6 entity"], "Orang-Tanjong": ["ISO 639-6 entity"], "Sungkai": ["ISO 639-6 entity"], "Perak 1": ["ISO 639-6 entity"], "Perak 2": ["ISO 639-6 entity"], "Cameron": ["ISO 639-6 entity"], "Telom": ["ISO 639-6 entity"], "Bidor": ["ISO 639-6 entity"], "Betau": ["ISO 639-6 entity"], "Lipis": ["ISO 639-6 entity"], "Bil": ["ISO 639-6 entity"], "Ulu-Kampar": ["ISO 639-6 entity"], "Southern Aslian": ["ISO 639-6 entity"], "Semaq Beri": ["ISO 639-6 entity"], "Semaq Beri Spoken": ["ISO 639-6 entity"], "Pahang": ["ISO 639-6 entity"], "Trengganu": ["ISO 639-6 entity"], "Kelantan": ["ISO 639-6 entity"], "Semelai": ["ISO 639-6 entity"], "Semelai Spoken": ["ISO 639-6 entity"], "Semaq-Palong": ["ISO 639-6 entity"], "Chiong-Biduanda": ["ISO 639-6 entity"], "Temoq": ["ISO 639-6 entity"], "Temoq Spoken": ["ISO 639-6 entity"], "Besisi": ["ISO 639-6 entity"], "Besisi Spoken": ["ISO 639-6 entity"], "Kuala-Langot-Besisi": ["ISO 639-6 entity"], "Malakka-Besisi": ["ISO 639-6 entity"], "Negre-Sembilan-Besisi": ["ISO 639-6 entity"], "Ulu-Langat": ["ISO 639-6 entity"], "Orang-Bukit-Besisi": ["ISO 639-6 entity"], "Selangor-Sakai": ["ISO 639-6 entity"], "Betise'": ["ISO 639-6 entity"], "Sisi": ["ISO 639-6 entity"], "Jah Hut": ["A language of Malaysia (Peninsular)."], "Jah Hut Spoken": ["ISO 639-6 entity"], "Kerdau": ["ISO 639-6 entity"], "Krau": ["ISO 639-6 entity"], "Ketiar-Krau": ["ISO 639-6 entity"], "Kuala-Tembeling": ["ISO 639-6 entity"], "Pulau-Guai": ["ISO 639-6 entity"], "Ulu-Ceres": ["ISO 639-6 entity"], "Ulu-Tembeling": ["ISO 639-6 entity"], "Nicobar Island Cluster": ["ISO 639-6 entity"], "Car Nicobarese": ["A language of India."], "Car Nicobarese Written": ["Written forms of the Car Nicobarese language."], "Car Nicobarese Written Devanagari Script": ["ISO 639-6 entity"], "Car Nicobarese Written Latin Script": ["A written form of the Car Nicobarese language."], "Car Nicobarese Spoken": ["The dialects of the Car Nicobarese language."], "Chaura": ["A language of India."], "Chaura Written": ["ISO 639-6 entity"], "Chaura Written Devanagari Script": ["ISO 639-6 entity"], "Chaura Written Latin Script": ["A written form of the Chaura language."], "Chaura Spoken": ["Dialects of the Chaura language."], "Teressa": ["ISO 639-6 entity"], "Teressa Spoken": ["ISO 639-6 entity"], "Pauhut": ["ISO 639-6 entity"], "Central Nicobarese": ["ISO 639-6 entity"], "Central Nicobarese Written": ["Written forms of the Central Nicobarese language."], "Central Nicobarese Written Latin Script": ["A written form of the Central Nicobarese language."], "Central Nicobarese Written Devanagari Script": ["ISO 639-6 entity"], "Central Nicobarese Spoken": ["The dialects of the Central Nicobarese language."], "Tehnu-Katchal": ["A dialect of the Central Nicobarese language."], "Southern Nicobarese": ["ISO 639-6 entity"], "Southern Nicobarese Spoken": ["ISO 639-6 entity"], "Milo": ["ISO 639-6 entity"], "Tafwap- Temain": ["ISO 639-6 entity"], "Great Nicobar": ["ISO 639-6 entity"], "Little Nicobar": ["ISO 639-6 entity"], "Condul": ["ISO 639-6 entity"], "Sambelong": ["ISO 639-6 entity"], "Shom Peng": ["ISO 639-6 entity"], "Shom Peng Written": ["Written forms of the Shom Peng language."], "Shom Peng Written Devanagari Script": ["ISO 639-6 entity"], "Shom Peng Written Latin Script": ["A written form of the Shom Peng language."], "Shom Peng Spoken": ["ISO 639-6 entity"], "Austro-Tai": ["ISO 639-6 entity"], "Daic Phylozone": ["ISO 639-6 entity"], "Li Kam Tai": ["ISO 639-6 entity"], "Be Kam Tai": ["ISO 639-6 entity"], "Lakkia-Kam-Tai": ["ISO 639-6 entity"], "Kam Tai": ["A branch of the Tai-Kadai language family regrouping languages spoken in southern China."], "Tai": ["A sub-group of the Tai-Kadai languages family."], "Tai Southwestern Cluster": ["A sub-group of the Tai languages."], "Ahom": ["An extinct language of India."], "Ahom Written": ["The written versions of the Ahom language."], "Ahom Written Ahom Script": ["Ahom language written with the Ahom Script."], "Ahom Spoken": ["The dialects of the Ahom language."], "Aiton": ["A language spoken by the Aiton people in the Jorhat and Karbi-Aleng districts of Assam State in north-east India."], "Aiton Written": ["Written versions of the Aiton language."], "Aiton Written Tai Script": ["Aiton language written with the Tai Script."], "Aiton Spoken": ["The dialects of the Aiton language."], "Phake": ["ISO 639-6 entity"], "Khamyang": ["A Tai language spoken by the Khamiyang people in the Lohit and Tirap districts of the state of Arunachal Pradesh, north-east of India.", "A tribal group found primarily in Tinsukia district of Assam as well as adjacent parts of Arunachal Pradesh."], "Khamyang Written Tai Script": ["The Khamyang language written with the Tai script."], "Khamyang Spoken": ["Dialects of the Khamyang language."], "Khamti": ["A Tai language spoken by the Khamti people in the area where the three countries of Myanmar, India and China meet.", "A sub-group of the Shan people found in the Sagaing Division, Hkamti District in northwestern Burma as well as Lohit district of Arunachal Pradesh in India."], "Khamti Written": ["Written forms of the Khamti language."], "Khamti Written Lik-Tai Script": ["A written form of the Khamti language using the Lik-Tai Script."], "Khamti Spoken": ["Dialects of the Khamti language."], "Khampti": ["ISO 639-6 entity"], "Khampti-Shan": ["ISO 639-6 entity"], "Khamti-SE": ["ISO 639-6 entity"], "Khamti-NE": ["ISO 639-6 entity"], "Turung": ["ISO 639-6 entity"], "Shan": ["A Tai language spoken by the Shan people in Shan State, Burma."], "Shan Spoken": ["ISO 639-6 entity"], "Ngio": ["ISO 639-6 entity"], "Tai Mao": ["ISO 639-6 entity"], "Tai Long": ["ISO 639-6 entity"], "Tai Long Spoken": ["ISO 639-6 entity"], "Kokant-Shan": ["ISO 639-6 entity"], "Kh\u00fcn": ["A language of Myanmar and Thailand."], "Tai N\u00fca": ["ISO 639-6 entity"], "Tai N\u00fca Spoken": ["ISO 639-6 entity"], "Shan-T'ou": ["ISO 639-6 entity"], "Tai-Neua-W": ["ISO 639-6 entity"], "Tai-Neua-E": ["ISO 639-6 entity"], "L\u00fc": ["A Tai language spoken by the Lu people in China, Laos, Myanmar, Thailand and Viet Nam."], "L\u00fc Written": ["ISO 639-6 entity"], "L\u00fc Written Old Lanna Script": ["ISO 639-6 entity"], "L\u00fc Written New Tai L\u00fc Script": ["ISO 639-6 entity"], "L\u00fc Spoken": ["ISO 639-6 entity"], "L\u00fc-A": ["ISO 639-6 entity"], "Sipsong-Panna-Dai": ["ISO 639-6 entity"], "Yong": ["ISO 639-6 entity"], "Tai Ya": ["A language of China."], "Tai Ya Written": ["The written versions of the Tai Ya language."], "Tai Ya Written Tai Yai Script": ["The Tai Ya language written with the Tai Yai script."], "Tai Ya Spoken": ["The Tai Ya spoken language and its dialects."], "Tai-Chung": ["A dialect of the Tai Ya language."], "Northern Thai": ["A Tai language spoken by the Thai Yuan people living in Lannathai, Thailand, as well as in northwestern Laos."], "Northern Thai Written": ["The written forms of the Northern Thai language."], "Northern Thai Spoken": ["The dialects of the Northern Thai language."], "Tai Wang": ["A dialect of the Northern Thai language."], "Bandu": ["A dialect of the Northern Thai language."], "Chiang-Rai": ["A dialect of the Northern Thai language."], "Mae-Hong": ["A dialect of the Northern Thai language."], "Hot": ["A dialect of the Northern Thai language."], "Chiang-Mai": ["A dialect of the Northern Thai language."], "Lampang": ["A dialect of the Northern Thai language."], "Phayao": ["A dialect of the Northern Thai language."], "Nan": ["A dialect of the Northern Thai language."], "Lanna-Frontier": ["A dialect of the Northern Thai language."], "Phuan": ["ISO 639-6 entity"], "Phuan Spoken": ["ISO 639-6 entity"], "Udo-Thani": ["ISO 639-6 entity"], "Loei": ["ISO 639-6 entity"], "Phichit": ["ISO 639-6 entity"], "Phuan-SW": ["ISO 639-6 entity"], "Phuan-SE": ["ISO 639-6 entity"], "Thai Written": ["The written forms of the Thai language."], "Thai Written Sukothai Script": ["A written form of the Thai language."], "Thai Written Thai Script": ["A written form of the Thai language."], "Southern Thai": ["ISO 639-6 entity"], "Southern Thai Spoken": ["ISO 639-6 entity"], "Chumphon": ["ISO 639-6 entity"], "Surat-Thani": ["ISO 639-6 entity"], "Phuket": ["ISO 639-6 entity"], "Nakhon-Sithammarat": ["ISO 639-6 entity"], "Songkhla": ["ISO 639-6 entity"], "Ko-Samui": ["ISO 639-6 entity"], "Tak-Bai": ["ISO 639-6 entity"], "Thai-Islam": ["ISO 639-6 entity"], "Chumphon-Islam": ["ISO 639-6 entity"], "Ranong-Islam": ["ISO 639-6 entity"], "Surat-Thani-Islam": ["ISO 639-6 entity"], "Phangnga-Islam": ["ISO 639-6 entity"], "Phuket-Islam": ["ISO 639-6 entity"], "Krabi-Islam": ["ISO 639-6 entity"], "Trang-Islam": ["ISO 639-6 entity"], "Nakhon-Sithammarat-Islam": ["ISO 639-6 entity"], "Phatthalung-Islam": ["ISO 639-6 entity"], "Songkhla-Islam": ["ISO 639-6 entity"], "Satun-Islam": ["ISO 639-6 entity"], "Northeastern Thai": ["ISO 639-6 entity"], "Northeastern Thai Spoken": ["ISO 639-6 entity"], "Isan North": ["ISO 639-6 entity"], "Kaleung": ["ISO 639-6 entity"], "Isan South": ["ISO 639-6 entity"], "Nyaw": ["ISO 639-6 entity"], "Nyaw Spoken": ["ISO 639-6 entity"], "Khorat": ["ISO 639-6 entity"], "Roi": ["ISO 639-6 entity"], "Ubon-Rachathani": ["ISO 639-6 entity"], "Lao Written": ["The written forms of the Lao language."], "Lao Written Tham Script": ["The Lao language written with the Tham script."], "Lao Writen Lao Script": ["The Lao language written with the Lao script."], "Lao Written Lao Script Vientiane Model": ["The Lao language written with the Lao script Vientiane model."], "Lao Spoken": ["The dialects of the Lao language."], "Lao-Formal": ["ISO 639-6 entity"], "Lao-V": ["ISO 639-6 entity"], "Savan-Nakhet": ["ISO 639-6 entity"], "Lao-Pakse": ["ISO 639-6 entity"], "Wiang-Jang": ["ISO 639-6 entity"], "Rong-Kong": ["ISO 639-6 entity"], "Lum-Lao": ["ISO 639-6 entity"], "Lao-Kao": ["ISO 639-6 entity"], "Phu Tai": ["ISO 639-6 entity"], "Tai Dam": ["A Tai language of Viet Nam, Laos and Thailand."], "Tai Dam Written": ["Written forms of the Tai Dam language."], "Tai Dam Written Tai Dam Script": ["ISO 639-6 entity"], "Tai Dam Spoken": ["The Tai Dam spoken language and its dialects."], "Tai-Dam-A": ["ISO 639-6 entity"], "Jinping-Dai": ["ISO 639-6 entity"], "Tai-Muoi": ["A dialect of the Tai Dam language."], "Thai Song": ["ISO 639-6 entity"], "Thai Song Written": ["ISO 639-6 entity"], "Thai Song Written Tai Song Script": ["ISO 639-6 entity"], "Thai Song Spoken": ["ISO 639-6 entity"], "T\u00e0y Tac": ["ISO 639-6 entity"], "T\u00e0y Tac Written": ["ISO 639-6 entity"], "T\u00e0y Tac Written Tai Script": ["ISO 639-6 entity"], "T\u00e0y Tac Spoken": ["ISO 639-6 entity"], "Tai D\u00f2n": ["ISO 639-6 entity"], "Tai D\u00f2n Written": ["ISO 639-6 entity"], "Tai D\u00f2n Written Tai Script": ["ISO 639-6 entity"], "Tai D\u00f2n Spoken": ["ISO 639-6 entity"], "Tai-Kao-E": ["ISO 639-6 entity"], "Tai-Kao-W": ["ISO 639-6 entity"], "Tai-Kao-Ne": ["ISO 639-6 entity"], "Tai Daeng": ["ISO 639-6 entity"], "Tai Daeng Written": ["ISO 639-6 entity"], "Tai Daeng Written Tai Script": ["ISO 639-6 entity"], "Tai Daeng Spoken": ["ISO 639-6 entity"], "Tai-Deng-E": ["ISO 639-6 entity"], "Tai-Deng-W": ["ISO 639-6 entity"], "Tai Hang Tong": ["ISO 639-6 entity"], "Tai Hang Tong Spoken": ["ISO 639-6 entity"], "Tai Thanh": ["ISO 639-6 entity"], "Tai Thanh Spoken": ["ISO 639-6 entity"], "Tai Do": ["ISO 639-6 entity"], "Tai Do Spoken": ["ISO 639-6 entity"], "Tay Khang": ["ISO 639-6 entity"], "Tay Khang Spoken": ["ISO 639-6 entity"], "T\u00e0y Sa Pa": ["ISO 639-6 entity"], "T\u00e0y Sa Pa Spoken": ["ISO 639-6 entity"], "Tai Central Cluster": ["A sub-group of the Tai languages."], "Zuang": ["ISO 639-6 entity"], "Southern Zuang": ["ISO 639-6 entity"], "Southern Zuang Written": ["Written forms of the Southern Zuang language."], "Southern Zuang Written Traditional Chinese Script": ["ISO 639-6 entity"], "Southern Zuang Written Latin Script": ["A written form of the Southern Zuang language."], "Southern Zuang Spoken": ["ISO 639-6 entity"], "Yongnan": ["ISO 639-6 entity"], "Zuojiang": ["ISO 639-6 entity"], "Teching": ["ISO 639-6 entity"], "Yenkuang": ["ISO 639-6 entity"], "Wen-Ma": ["ISO 639-6 entity"], "Ts'\u00fcn-Lao": ["ISO 639-6 entity"], "Cao Lan": ["ISO 639-6 entity"], "Cao Lan Spoken": ["The dialects of the Cao Lan language."], "Tien-Pao": ["A dialect of the Cao Lan language."], "Yung-Chun": ["A dialect of the Cao Lan language."], "T\u00e0y": ["ISO 639-6 entity"], "Nung (Viet Nam)": ["ISO 639-6 entity"], "Nung (Viet Nam) Spoken": ["ISO 639-6 entity"], "N\u00f9ng Inh": ["ISO 639-6 entity"], "Xu\u00f2ng": ["ISO 639-6 entity"], "Giang": ["ISO 639-6 entity"], "N\u00f9ng An": ["ISO 639-6 entity"], "N\u00f9ng Phan Sl\u00ecnh": ["ISO 639-6 entity"], "N\u00f9ng Ch\u00e1o": ["ISO 639-6 entity"], "N\u00f9ng L\u00f2i": ["ISO 639-6 entity"], "N\u00f9ng Q\u00fay Rin": ["ISO 639-6 entity"], "Khen L\u00e0i": ["ISO 639-6 entity"], "Northern Tai Cluster": ["ISO 639-6 entity"], "Northern Zhuang": ["A language of China."], "Northern Zhuang Written": ["The written versions of the Northern Zhuang language."], "Northern Zhuang Written Chinese Script": ["The Northern Zhuang language written with the Chinese script."], "Northern Zhuang Latin Script": ["The Northern Zhuang language written with the Latin script."], "Northern Zhuang Spoken": ["The Northern Zhuang spoken language and its dialects."], "Yongbei": ["A dialect of the Northern Zhuang language."], "Liujiang": ["A dialect of the Northern Zhuang language."], "Youjiang": ["A dialect of the Northern Zhuang language."], "Guibian": ["A dialect of the Northern Zhuang language."], "Quibei": ["A dialect of the Northern Zhuang language."], "Hongshuihe": ["A dialect of the Northern Zhuang language."], "Lianshang": ["A dialect of the Northern Zhuang language."], "Saek": ["ISO 639-6 entity"], "Saek Spoken": ["ISO 639-6 entity"], "Khammouan": ["ISO 639-6 entity"], "Na Kadok": ["ISO 639-6 entity"], "Saek-Laos": ["ISO 639-6 entity"], "Saek-Thailand": ["ISO 639-6 entity"], "Tai M\u00e8ne": ["ISO 639-6 entity"], "Giay": ["ISO 639-6 entity"], "Nhang": ["ISO 639-6 entity"], "Nhang Spoken": ["ISO 639-6 entity"], "Nhang-Yunnan": ["ISO 639-6 entity"], "Nhang-Vietnam": ["ISO 639-6 entity"], "Gui-Zhou": ["ISO 639-6 entity"], "Gui-Zhou Spoken": ["ISO 639-6 entity"], "Gui-Zhou-Ne": ["ISO 639-6 entity"], "Gui-Zhou-Sw": ["ISO 639-6 entity"], "Biay": ["ISO 639-6 entity"], "Ce-Heng": ["ISO 639-6 entity"], "Zhong-Jia": ["ISO 639-6 entity"], "Zhong-Jia Spoken": ["The dialects of the Zhong-Jia language."], "Zhong-Jia-A": ["A dialect of the Zhong-Jia language."], "Yi-Jia": ["A dialect of the Zhong-Jia language."], "Yi-Ren": ["A dialect of the Zhong-Jia language."], "I-Jen": ["A dialect of the Zhong-Jia language."], "Kui": ["A dialect of the Zhong-Jia language.", "A language of India."], "Du-Shan": ["ISO 639-6 entity"], "Gui-Yang": ["ISO 639-6 entity"], "Ling-Y\u00fcn": ["ISO 639-6 entity"], "Lung-An": ["ISO 639-6 entity"], "Pa Di": ["ISO 639-6 entity"], "Pu Ko": ["ISO 639-6 entity"], "Phu-La": ["ISO 639-6 entity"], "Po-Se": ["ISO 639-6 entity"], "Tian-Zhu": ["ISO 639-6 entity"], "Tien-Pa": ["ISO 639-6 entity"], "Tu-Di": ["ISO 639-6 entity"], "Thu Lao": ["ISO 639-6 entity"], "Xi-Lin": ["ISO 639-6 entity"], "Huang-Chuang": ["ISO 639-6 entity"], "Qian-Jang": ["ISO 639-6 entity"], "Ching-Hsi": ["ISO 639-6 entity"], "Hung-Ho": ["ISO 639-6 entity"], "Kuei-Pien": ["ISO 639-6 entity"], "Kuei-Pien Spoken": ["ISO 639-6 entity"], "Kuan": ["ISO 639-6 entity", "An aboriginal ethnic group of Laos."], "Kuan Spoken": ["ISO 639-6 entity"], "Lin-Chiang": ["ISO 639-6 entity"], "Lin-Chiang Spoken": ["ISO 639-6 entity"], "Ma Spoken": ["ISO 639-6 entity"], "Qiu-Bei": ["ISO 639-6 entity"], "Qiu-Bei Spoken": ["ISO 639-6 entity"], "Te": ["ISO 639-6 entity"], "Te Spoken": ["ISO 639-6 entity"], "Tso-Chiang": ["ISO 639-6 entity"], "Tso-Chiang Spoken": ["ISO 639-6 entity"], "T'u": ["ISO 639-6 entity"], "T'u Spoken": ["ISO 639-6 entity"], "Wen": ["ISO 639-6 entity"], "Wen Spoken": ["ISO 639-6 entity"], "Yen": ["ISO 639-6 entity"], "Yen Spoken": ["ISO 639-6 entity"], "Wu-Ming": ["ISO 639-6 entity"], "Wu-Ming Spoken": ["ISO 639-6 entity"], "Yu-Chiang": ["ISO 639-6 entity"], "Yu-Chiang Spoken": ["The dialects of the Yu-Chiang language."], "Yung-Nan": ["ISO 639-6 entity"], "Yung-Nan Spoken": ["The dialects of the Yung-Nan language."], "Yung-Pei": ["ISO 639-6 entity"], "Bouyei": ["ISO 639-6 entity"], "Bouyei Written": ["Written forms of the Bouyei language."], "Bouyei Written Chinese Script": ["ISO 639-6 entity"], "Bouyei Written Latin Script": ["A written form of the Bouyei language."], "Bouyei Spoken": ["ISO 639-6 entity"], "Qiannan": ["ISO 639-6 entity"], "Qianzhong": ["ISO 639-6 entity"], "Qianxi": ["ISO 639-6 entity"], "Buyi-Miao": ["ISO 639-6 entity"], "Miao-Dong": ["ISO 639-6 entity"], "Yoy": ["ISO 639-6 entity"], "Yoy Spoken": ["The dialects of the Yoy language."], "Tai Unclassified": ["ISO 639-6 entity"], "Tai Pao": ["ISO 639-6 entity"], "Tai Hongjin": ["ISO 639-6 entity"], "Tai Hongjin Spoken": ["ISO 639-6 entity"], "Rien": ["ISO 639-6 entity"], "Rien Spoken": ["ISO 639-6 entity"], "Kam Sui Cluster": ["A branch of the Tai\u2013Kadai languages spoken by the Kam\u2013Sui peoples in eastern Guizhou, western Hunan, and northern Guangxi in southern China."], "Northern Dong": ["A language of China."], "Northern Dong Written": ["Written forms of the Northern Dong language."], "Northern Dong Written Chinese Script": ["ISO 639-6 entity"], "Northern Dong Written Latin Script": ["A written form of the Northern Dong language."], "Northern Dong Spoken": ["Dialect of Northern Dong."], "Cao Miao": ["A Tai-Kadai language spoken in the Liping County (Guizhou), the Tongdao Dong Autonomous County (Hunan) and the Sanjiang Dong Autonomous County (Guangxi) in China."], "Cao Miao Written": ["The written versions of the Cao Miao language."], "Cao Miao Written Chinese Script": ["The Cao Miao language written with the Chinese script."], "Cao Miao Written Latin Script": ["The Cao Miao language written with the Latin script."], "Cao Miao Spoken": ["The Cao Miao spoken language and its dialects."], "Southern Dong": ["A language of China."], "Southern Dong Written": ["Written forms of the Southern Dong language."], "Southern Dong Written Chinese Script": ["ISO 639-6 entity"], "Southern Dong Written Latin Script": ["A written form of the Southern Dong language."], "Southern Dong Spoken": ["ISO 639-6 entity"], "San-Jia-Nge": ["ISO 639-6 entity"], "Mulam": ["ISO 639-6 entity"], "Mulam Written": ["ISO 639-6 entity"], "Mulam Written Chinese Script": ["ISO 639-6 entity"], "Mulam Spoken": ["ISO 639-6 entity"], "Cham": ["ISO 639-6 entity"], "Cham Spoken": ["ISO 639-6 entity"], "Mak (China)": ["ISO 639-6 entity"], "Mak (China) Spoken": ["ISO 639-6 entity"], "Chi": ["ISO 639-6 entity"], "Chi Spoken": ["ISO 639-6 entity"], "Hwa": ["ISO 639-6 entity"], "Hwa Spoken": ["ISO 639-6 entity"], "Lyo": ["ISO 639-6 entity"], "Lyo Spoken": ["ISO 639-6 entity"], "Mo-Chia": ["ISO 639-6 entity"], "Mo-Chia Spoken": ["ISO 639-6 entity"], "Sui ": ["ISO 639-6 entity"], "Sui Spoken": ["ISO 639-6 entity"], "Anyang": ["ISO 639-6 entity"], "Sui-Chia": ["ISO 639-6 entity"], "San-Tung": ["ISO 639-6 entity"], "Ai Cham": ["A language spoken in Libo County, Qiannan Buyei and Miao Autonomous Prefecture, Guizhou Province, People's Republic of China."], "Ai Cham Spoken": ["The dialects of the Ai Cham language."], "Di\u2019e": ["A dialect of the Ai Cham language."], "Boyao": ["A dialect of the Ai Cham language."], "Maonan": ["ISO 639-6 entity"], "Maonan Written": ["ISO 639-6 entity"], "Maonan Written Chinese Script": ["ISO 639-6 entity"], "Maonan Spoken": ["ISO 639-6 entity"], "Biao": ["A language of China."], "Biao Written": ["ISO 639-6 entity"], "Biao Written Chinese Script": ["ISO 639-6 entity"], "Biao Spoken": ["ISO 639-6 entity"], "T'en": ["ISO 639-6 entity"], "T'en Spoken": ["ISO 639-6 entity"], "Hedong": ["ISO 639-6 entity"], "Hexi": ["ISO 639-6 entity"], "Huishui": ["ISO 639-6 entity"], "Yang-Huang": ["ISO 639-6 entity"], "Rau": ["ISO 639-6 entity"], "Kang": ["A language of Laos and China."], "Lakkia Cluster": ["ISO 639-6 entity"], "Lakkia": ["A language of China."], "Lingao": ["ISO 639-6 entity"], "Lingao Spoken": ["ISO 639-6 entity"], "Lingao-A": ["ISO 639-6 entity"], "Vo": ["ISO 639-6 entity"], "Chengmai": ["ISO 639-6 entity"], "Qiongshan": ["ISO 639-6 entity"], "Li-Laqua": ["ISO 639-6 entity"], "Hlai": ["ISO 639-6 entity"], "Hlai Spoken": ["ISO 639-6 entity"], "Ka-Mau": ["ISO 639-6 entity"], "Zhongsha": ["ISO 639-6 entity"], "Heita": ["ISO 639-6 entity"], "Baocheng": ["ISO 639-6 entity"], "Xifang": ["ISO 639-6 entity"], "Ha": ["ISO 639-6 entity"], "Ha Spoken": ["The dialects of the Ha language."], "Luo-Hua": ["A dialect of the Ha language."], "Ha-Yan": ["A dialect of the Ha language."], "Bao-Xian": ["A dialect of the Ha language."], "Qi": ["ISO 639-6 entity"], "Qi Spoken": ["ISO 639-6 entity"], "Tong-Shi": ["ISO 639-6 entity"], "Bao-Ting": ["ISO 639-6 entity"], "Qian-Dui": ["ISO 639-6 entity"], "Ben-Di": ["ISO 639-6 entity"], "Ben-Di Spoken": ["ISO 639-6 entity"], "Zwn": ["ISO 639-6 entity"], "Bai-Sha": ["ISO 639-6 entity"], "Yuamen": ["ISO 639-6 entity"], "Moi-Fau": ["ISO 639-6 entity"], "Jiamao": ["A language of China."], "Cun": ["A language of China."], "Laqua Laha Cluster": ["ISO 639-6 entity"], "Qabiao": ["ISO 639-6 entity", "A Tai-Kadai language of Viet Nam and China."], "Laha (Vietnam)": ["ISO 639-6 entity"], "Lati Gelao Cluster": ["ISO 639-6 entity"], "Lachi": ["ISO 639-6 entity"], "Li-Pute": ["ISO 639-6 entity"], "Li-Putcio": ["ISO 639-6 entity"], "Li-Puke": ["ISO 639-6 entity"], "Li-Puliongtco": ["ISO 639-6 entity"], "Li-Puti\u00f6": ["ISO 639-6 entity"], "Li-Pupi": ["ISO 639-6 entity"], "White Lachi": ["A language of Viet Nam."], "Gelao": ["A Tai\u2013Kadai language spoken by the Gelao people in southern China and northern Vietnam.", "A language of China."], "A\u2019ou": ["A dialect of the Gelao language spoken in west-central Guizhou, western Guangxi, southeastern Yunnan and northern Vietnam."], "Lo": ["ISO 639-6 entity"], "Qau": ["ISO 639-6 entity"], "Gu": ["ISO 639-6 entity"], "Hakei": ["ISO 639-6 entity"], "To": ["ISO 639-6 entity"], "Green Gelao": ["A language of Viet Nam"], "White Gelao": ["A language of Viet Nam."], "Red Gelao": ["A language of Viet Nam."], "Sanshong": ["ISO 639-6 entity"], "Anshun": ["ISO 639-6 entity"], "Kadai": ["ISO 639-6 entity", "A language of Indonesia (Maluku)."], "Yang-Biao Cluster": ["ISO 639-6 entity"], "Buyang": ["A language of China."], "Bu-Rong Cluster": ["ISO 639-6 entity"], "Yerong": ["ISO 639-6 entity"], "Baltic Phylum": ["A group of related languages belonging to the Indo-European language family and spoken mainly in areas extending east and southeast of the Baltic Sea in Northern Europe."], "Eastern Baltic Cluster": ["The eastern branch of a group of related languages belonging to the Indo-European language family and spoken mainly in areas extending east and southeast of the Baltic Sea in Northern Europe, including Galindian, Old Prussian, Sudovian and Skalvian."], "Suvalkietiskal": ["ISO 639-6 entity"], "Ietuvi\u0161kai-Formal": ["ISO 639-6 entity"], "Auk\u0161taichiai": ["A dialect of the Lithuanian language, spoken in the regions of Auk\u0161taitija, Dz\u016bkija and Suvalkija in Lithuania."], "Dzukai": ["ISO 639-6 entity"], "\u017demaichiai": ["ISO 639-6 entity"], "Latvian Spoken": ["Dialects of the Latvian language."], "Latvia\u0161u-Formal Spoken": ["ISO 639-6 entity"], "Patois Of Vidzeme": ["ISO 639-6 entity"], "Curonian": ["ISO 639-6 entity"], "Semigallian": ["ISO 639-6 entity", "An extinct language of the Baltic languages sub-family of Indo-European languages, spoken in the Northern part of Lithuania and Southern regions of Latvia."], "Latvia\u0161u-G": ["ISO 639-6 entity"], "Tamie\u0161u": ["ISO 639-6 entity"], "Latgale": ["ISO 639-6 entity"], "Prussian": ["An extinct Baltic language, once spoken by the inhabitants of Prussia in an area of what later became East Prussia (now north-eastern Poland and the Kaliningrad Oblast of Russia) and eastern parts of Pomerelia (some parts of the region East of the Vistula river).", "Of or relating to Prussia, Prussians, or the Prussian language.", "A person of Prussian nationality."], "Yotvingian": ["An extinct western Baltic language in Northeastern Europe."], "Curonia": ["An extinct language in the western branch of the Western Baltic Cluster, formerly spoken by the Scalovians around the city of Neman in Lithuania."], "Albanian Phylozone": ["ISO 639-6 entity"], "Gheg Cluster": ["ISO 639-6 entity"], "Gheg Albanian Written": ["Written forms of the Gheg language."], "Gheg Albanian Written Latin Script": ["A written form of the Gheg Albanian language."], "Gheg Albanian Written Turko-Arabic Script": ["ISO 639-6 entity"], "Gheg Albanian Spoken": ["Dialects of the Gheg Albanian language."], "Gheg-Formal": ["ISO 639-6 entity"], "Mati": ["ISO 639-6 entity"], "Kraja": ["ISO 639-6 entity"], "Ulqinj": ["ISO 639-6 entity"], "Dibra - Mirdita": ["ISO 639-6 entity"], "Gheg-NW": ["ISO 639-6 entity"], "Kosova": ["ISO 639-6 entity"], "Shkod\u00ebr": ["ISO 639-6 entity"], "Gheg-C": ["ISO 639-6 entity"], "Tiran\u00eb- Elbasan": ["ISO 639-6 entity"], "Mandrica": ["ISO 639-6 entity"], "Tosk Cluster": ["ISO 639-6 entity"], "Arbanasi-N": ["ISO 639-6 entity"], "Albanian Tosk": ["An Albanian language spoken in the south of Albania."], "Albanian Tosk Written": ["Written forms of the Albanian Tosk language."], "Albanian Tosk Written Hellenic Script": ["ISO 639-6 entity"], "Albanian Tosk Written Turko-Arabic Script": ["ISO 639-6 entity"], "Albanian Tosk Written Latin Script": ["A written form of the Albanian Tosk language."], "Albanian Tosk Spoken": ["Dialects of the Albanian Tosk language."], "Tosk-Formal": ["A dialect of the Albanian Tosk language."], "Tosk-W": ["A dialect of the Albanian Tosk language."], "Tosk-S": ["A dialect of the Albanian Tosk language."], "Tosk-E": ["A dialect of the Albanian Tosk language."], "Srem": ["A dialect of the Albanian Tosk language."], "Arbanasi-E": ["ISO 639-6 entity"], "Arvanitika Albanian": ["An Albanian dialect or language spoken by the Arvanites, a population group in Greece."], "Arvanitika Albanian Written": ["Written forms of the Arvanitika language."], "Arvanitika Albanian Written Latin Script": ["A written form of the Arvanitika Albanian language."], "Arvanitika Albanian Written Greek Script": ["ISO 639-6 entity"], "Arvanitika Albanian Spoken": ["ISO 639-6 entity"], "Viotia": ["ISO 639-6 entity"], "Attiki": ["ISO 639-6 entity"], "Salamina": ["ISO 639-6 entity"], "Evia": ["ISO 639-6 entity"], "Tosk-Ukraine": ["ISO 639-6 entity"], "Tosk-Ukraine Spoken": ["ISO 639-6 entity"], "Tosk-Anatolia": ["ISO 639-6 entity"], "Tosk-Anatolia Spoken": ["ISO 639-6 entity"], "Arb\u00ebresh\u00eb Albanian Written": ["The written forms of the Arb\u00ebresh\u00eb Albanian language."], "Arb\u00ebresh\u00eb Albanian Written Latin Script": ["The Arb\u00ebresh\u00eb Albanian language written with the Latin script."], "Arb\u00ebresh\u00eb Albanian Spoken": ["ISO 639-6 entity"], "Molise": ["ISO 639-6 entity"], "Apulia": ["ISO 639-6 entity", "A region in southeastern Italy bordering the Adriatic Sea in the east, the Ionian Sea to the southeast, and the Strait of \u00d2tranto and Gulf of Taranto in the south, by the regions of Molise to the north, Campania to the west, and Basilicata to the southwest."], "Basilicata": ["ISO 639-6 entity"], "Calabria": ["ISO 639-6 entity", "Region in southern Italy with a population of 2 million (in 2006), whose capital is Catanzaro"], "Sicilia": ["ISO 639-6 entity"], "Hellenic": ["ISO 639-6 entity", "Of or relating to Greece, the Greek people, or the Greek language."], "Attic Cluster": ["ISO 639-6 entity"], "Proto-Greek": ["Hypothetical language that is assumed to be the common ancestor of the Greek dialects."], "Mycenean Greek": ["ISO 639-6 entity"], "Mycenean Greek Written": ["ISO 639-6 entity"], "Mycenean Greek Written Linear B Script": ["ISO 639-6 entity"], "Ancient Greek": ["A historic language spoken widely with Greece as its centre"], "Ancient Greek Written": ["ISO 639-6 entity"], "Ancient Greek Written Ancient Greek Script": ["ISO 639-6 entity"], "Ancient Greek Spoken": ["Dialects of the Ancient Greek language."], "Aeolic": ["A linguistic term used to describe a set of rather archaic Greek sub-dialects, spoken mainly in Boeotia (a region in Central Greece), in Lesbos (an island close to Asia Minor) and in other Greek colonies."], "Arcadocypriot": ["ISO 639-6 entity"], "Attic": ["The prestige dialect of Ancient Greek that was spoken in Attica, which includes Athens."], "Doric": ["An ancient branch of the Greek language spoken in classical times in several regions including the southern and eastern Peloponnese, Crete, Rhodes and Macedon."], "Hellenistic Greek": ["ISO 639-6 entity"], "Hellenistic Greek Written": ["ISO 639-6 entity"], "Hellenistic Greek Written Ancient Greek Script": ["ISO 639-6 entity"], "Greek Written": ["Written forms of the Greek language."], "Greek Written Greek Script Polytonic Model": ["ISO 639-6 entity"], "Greek Written Greek Script Monotonic Model": ["ISO 639-6 entity"], "Greek Written Cyrillic Script": ["ISO 639-6 entity"], "Greek Spoken": ["Dialects of the Greek language."], "Kathar\u00e9vousa": ["ISO 639-6 entity"], "Dhimotiki": ["ISO 639-6 entity"], "Dhimotiki Spoken": ["ISO 639-6 entity"], "Dhimotiki-Hellas": ["ISO 639-6 entity"], "Dhimotiki-Kypros": ["ISO 639-6 entity"], "Athiniki": ["ISO 639-6 entity"], "Helleniki-Istanbul": ["ISO 639-6 entity"], "Helleniki-Rossiya": ["ISO 639-6 entity"], "Helleniki-Amerika": ["ISO 639-6 entity"], "Helleniki-Australia": ["ISO 639-6 entity"], "Helleniki-N": ["ISO 639-6 entity"], "Helleniki-N Spoken": ["ISO 639-6 entity"], "Ipiros": ["ISO 639-6 entity"], "Makedhonia-W": ["ISO 639-6 entity"], "Makedhonia-E": ["ISO 639-6 entity"], "Thraki": ["ISO 639-6 entity"], "Samothraki": ["ISO 639-6 entity"], "Limnos": ["ISO 639-6 entity"], "Voriai-Spoadhes": ["ISO 639-6 entity"], "Thessalia": ["ISO 639-6 entity"], "Evvoia-N": ["ISO 639-6 entity"], "Sterea": ["ISO 639-6 entity"], "Attica- Euboea": ["ISO 639-6 entity"], "Attica- Euboea Spoken": ["ISO 639-6 entity"], "Megara": ["ISO 639-6 entity"], "Euboea-C": ["ISO 639-6 entity"], "Helleniki-SW": ["ISO 639-6 entity"], "Helleniki-Sw Spoken": ["ISO 639-6 entity"], "I\u00f3nioi-Nisoi": ["ISO 639-6 entity"], "Peloponnisos": ["ISO 639-6 entity"], "Kritiki": ["ISO 639-6 entity"], "Kritiki Spoken": ["ISO 639-6 entity"], "Helleniki-SE": ["ISO 639-6 entity"], "Helleniki-Se Spoken": ["ISO 639-6 entity"], "Kikl\u00e1dhes": ["ISO 639-6 entity"], "Kh\u00edos": ["ISO 639-6 entity"], "Ikar\u00eda": ["ISO 639-6 entity"], "Spor\u00e1dhes-C": ["ISO 639-6 entity"], "Rhodos": ["ISO 639-6 entity"], "Carpathos": ["ISO 639-6 entity"], "Italiot": ["ISO 639-6 entity"], "Italiot Spoken": ["ISO 639-6 entity"], "Salentina": ["ISO 639-6 entity"], "Calabria-S": ["ISO 639-6 entity"], "Carg\u00e8se": ["ISO 639-6 entity"], "Pontic": ["A language of Greece and Turkey.", "A language family of the Caucasus."], "Pontic Written": ["Written forms of the Pontic language."], "Pontic Written Greek Script": ["ISO 639-6 entity"], "Pontic Written Latin Script": ["A written form of the Pontic language."], "Pontic Spoken": ["ISO 639-6 entity"], "Pirai\u00e9vs-Katerini": ["ISO 639-6 entity"], "America-Pontiki": ["ISO 639-6 entity"], "Cappadocian Greek": ["Joint Greco-Turkish language, formerly spoken in Cappadocia (now central Turkey), today there are speakers in central and northern Greece."], "Cappadocian Greek Written": ["Variants of the Cappadocian Greek language used in written communication."], "Cappadocian Greek Written Greek Script": ["ISO 639-6 entity"], "Cappadocian Greek Spoken": ["Variants of the Cappadocian Greek language used in oral communication."], "Sille": ["Dialect of Cappadocian."], "Cappadocian NE": ["ISO 639-6 entity"], "Sinasas": ["Dialect of Cappadocian."], "Potamia": ["Dialect of Cappadocian."], "Cappadocian SW": ["ISO 639-6 entity"], "Aravon": ["Dialect of Cappadocian."], "Gurzono": ["Dialect of Cappadocian."], "Fertek": ["Dialect of Cappadocian."], "Cappadocian SE": ["ISO 639-6 entity"], "Ula\u011fa\u00e7": ["Dialect of Cappadocian."], "Semendere": ["Dialect of Cappadocian."], "Farasiot": ["Dialect of Cappadocian."], "Cappadocian W": ["ISO 639-6 entity"], "Pharasa": ["Dialect of Cappadocian."], "Saracatsi": ["ISO 639-6 entity"], "Saracatsi Spoken": ["ISO 639-6 entity"], "Yevanic": ["The dialect of the Romaniotes, the group of Greek Jews whose existence in Greece is documented since the Hellenistic period. (source: Wikipedia)"], "Yevanic Written": ["ISO 639-6 entity"], "Yevanic Hebrew Script": ["ISO 639-6 entity"], "Yevanic Spoken": ["ISO 639-6 entity"], "Doric Cluster": ["ISO 639-6 entity"], "Tsakonian": ["ISO 639-6 entity"], "Tsakonian Written": ["ISO 639-6 entity"], "Tsakonian Written Greek Script": ["ISO 639-6 entity"], "Tsakonian Spoken": ["ISO 639-6 entity"], "Propontis Tskonian": ["ISO 639-6 entity"], "Kastanitas-Sitena": ["ISO 639-6 entity"], "Leonidhion-Prastos": ["ISO 639-6 entity"], "Basque Family": ["ISO 639-6 entity"], "Basque Written": ["The written form of the Basque language."], "Basque Written Latin Script": ["The Basque language written with the Latin script."], "Basque Spoken": ["ISO 639-6 entity"], "Avalan": ["ISO 639-6 entity"], "Roncalese": ["ISO 639-6 entity"], "Euskara-Formal": ["ISO 639-6 entity"], "Euskara-Formal Written": ["Written forms of the Euskara-Formal language."], "Euskara-Formal Written Latin Script Guipuzcoan Model": ["A written form of the Euskara-Formal language."], "Euskara-Formal. Spoken": ["ISO 639-6 entity"], "Bizkaiera": ["A dialect of the Basque language spoken mainly in Biscay, one of the provinces of the Basque Country of Spain."], "Bizkaiera Spoken": ["The Biscayan dialects of the Basque language."], "Marquina": ["A Biscayan dialect of the Basque language."], "Guernica": ["A Biscayan dialect of the Basque language."], "Mungu\u00eda": ["A Biscayan dialect of the Basque language."], "Nervi\u00f3n": ["A Biscayan dialect of the Basque language."], "Ibarra- Murua": ["A Biscayan dialect of the Basque language."], "Vergara": ["A Biscayan dialect of the Basque language."], "Gipuzkera": ["ISO 639-6 entity"], "Gipuzkera Spoken": ["ISO 639-6 entity"], "Deva": ["ISO 639-6 entity"], "Donostia": ["ISO 639-6 entity"], "Tolosa": ["ISO 639-6 entity"], "Alsasua": ["ISO 639-6 entity"], "Nafarrera-NW.": ["ISO 639-6 entity"], "Nafarrera-NW. Spoken": ["ISO 639-6 entity"], "Ir\u00fan-Oyarzun": ["ISO 639-6 entity"], "Bidasoa": ["ISO 639-6 entity"], "Araquil": ["ISO 639-6 entity"], "Nafarrera-S.": ["ISO 639-6 entity"], "Nafarrera-S. Spoken": ["ISO 639-6 entity"], "Ibaiz\u00e1bal": ["ISO 639-6 entity"], "Ozaeta": ["ISO 639-6 entity"], "Pamplona": ["ISO 639-6 entity"], "Arga": ["ISO 639-6 entity"], "Navarro-Labourdin Basque": ["A language of France."], "Navarro-Labourdin Basque Written": ["Written forms of the Navarro-Labourdin Basque language."], "Navarro-Labourdin Basque Written Latin Script": ["A written form of the Navarro-Labourdin Basque language."], "Navarro-Labourdin Basque Spoken": ["ISO 639-6 entity"], "Nafarrera-CN.": ["ISO 639-6 entity"], "Nafarrera-CN. Spoken": ["ISO 639-6 entity"], "Nive-N.": ["ISO 639-6 entity"], "Nive-S.": ["ISO 639-6 entity"], "Ba\u00efgorry": ["ISO 639-6 entity"], "Roncesvalles- Ar\u00edve": ["ISO 639-6 entity"], "Nafarrera-NE.": ["ISO 639-6 entity"], "Nafarrera-NE. Spoken": ["ISO 639-6 entity"], "Mouguerre": ["ISO 639-6 entity"], "Saint-Palais": ["ISO 639-6 entity"], "Donibane": ["ISO 639-6 entity"], "Esteren\u00e7ubi": ["ISO 639-6 entity"], "Ochagav\u00eda": ["ISO 639-6 entity"], "Lapurtera": ["ISO 639-6 entity"], "Lapurtera Spoken": ["ISO 639-6 entity"], "Hendaye": ["ISO 639-6 entity"], "Bidart": ["ISO 639-6 entity"], "Sare": ["ISO 639-6 entity"], "Souletin Basque": ["A Basque dialect spoken in Soule, France."], "Souletin Spoken": ["ISO 639-6 entity"], "Litzare": ["ISO 639-6 entity"], "Licq": ["ISO 639-6 entity"], "Larrau": ["ISO 639-6 entity"], "Euskara-Amerika": ["ISO 639-6 entity"], "Euskara-Amerika Spoken": ["ISO 639-6 entity"], "Euskara-Mexico": ["ISO 639-6 entity"], "Euskara-Costa-Rica": ["ISO 639-6 entity"], "Euskara-Chili": ["ISO 639-6 entity"], "Euskara-Argentina": ["ISO 639-6 entity"], "Euskara-Uruguay": ["ISO 639-6 entity"], "Euskara-Idaho": ["ISO 639-6 entity"], "Euskara-Idaho Spoken": ["ISO 639-6 entity"], "Berber": ["A group of closely related languages mainly spoken in Morocco and Algeria."], "Guanche": ["An extinct language, which used to be spoken by the Guanches of the Canary Islands until the 16th or 17th century."], "East Numidian Cluster": ["ISO 639-6 entity"], "East Numidian": ["ISO 639-6 entity"], "Berber Proper": ["ISO 639-6 entity"], "Berber Proper Western": ["ISO 639-6 entity"], "Zenaga": ["ISO 639-6 entity"], "Zenaga Spoken": ["ISO 639-6 entity"], "Tuareg": ["ISO 639-6 entity"], "Tuareg Northern": ["ISO 639-6 entity"], "Tahaggart Tamahaq": ["ISO 639-6 entity"], "Tahaggart Tamahaq Written": ["ISO 639-6 entity"], "Tahaggart Tamahaq Written Latin Script": ["ISO 639-6 entity"], "Tahaggart Tamahaq Written Arab Script": ["ISO 639-6 entity"], "Tahaggart Tamahaq Written Tifinagh Script": ["ISO 639-6 entity"], "Tahaggart Tamahaq Spoken": ["ISO 639-6 entity"], "Ta-Masinin": ["ISO 639-6 entity"], "Immidir": ["ISO 639-6 entity"], "Ahnet": ["ISO 639-6 entity"], "Ta-Haggart": ["ISO 639-6 entity"], "Ta-Dghaq": ["ISO 639-6 entity"], "Kel-Ajjer": ["ISO 639-6 entity"], "Tuareg Southern": ["ISO 639-6 entity"], "Tamasheq": ["A Berber language spoken by the Kel Adrar in Mali."], "Tamasheq Written": ["ISO 639-6 entity"], "Tamasheq Written Tifinagh Script": ["ISO 639-6 entity"], "Tamasheq Spoken": ["ISO 639-6 entity"], "Ta-Nslemt": ["ISO 639-6 entity"], "Tawallammat Tamajaq": ["ISO 639-6 entity"], "Tawallammat Tamajaq Written": ["ISO 639-6 entity"], "Tawallammat Tamajaq Written Tifinagh Script": ["ISO 639-6 entity"], "Tawallammat Tamajaq Written Shifinagh Script": ["ISO 639-6 entity"], "Tawallammat Tamajaq Spoken": ["ISO 639-6 entity"], "Ta-Wllemmet-W": ["ISO 639-6 entity"], "Ta-Wllemmet-E": ["ISO 639-6 entity"], "Ta-Huwa": ["ISO 639-6 entity"], "Tayart Tamajeq": ["ISO 639-6 entity"], "Tayart Tamajeq Written": ["ISO 639-6 entity"], "Tayart Tamajeq Written Shifinagh Script": ["ISO 639-6 entity"], "Tayart Tamajeq Spoken": ["ISO 639-6 entity"], "A\u00efr": ["ISO 639-6 entity"], "Ta-Nassfarwat": ["ISO 639-6 entity"], "Berber Proper North": ["ISO 639-6 entity"], "Atlas Cluster": ["ISO 639-6 entity"], "Tachelhit": ["Berber language spoken by the Chleuh in Morocco."], "Tachelhit Written": ["ISO 639-6 entity"], "Tachelhit Written Arabic Script": ["ISO 639-6 entity"], "Tachelhit Written Tifinagh Script": ["ISO 639-6 entity"], "Tachelhit Spoken": ["The spoken Tachelhit language."], "Oued-Dra'a": ["ISO 639-6 entity"], "Jbel-Bani": ["ISO 639-6 entity"], "Anti-Atlas'": ["ISO 639-6 entity"], "Agadir": ["ISO 639-6 entity"], "Sus": ["Dialect of the Tachelhit language spoken in Algeria."], "Haut-Atlas'-W": ["ISO 639-6 entity"], "Mekn\u00e8s": ["ISO 639-6 entity"], "Moyen-Atlas'": ["ISO 639-6 entity"], "Haut-Atlas'-E": ["ISO 639-6 entity"], "Dad\u00e8s": ["ISO 639-6 entity"], "Oranais-C": ["ISO 639-6 entity"], "Ksurs": ["ISO 639-6 entity"], "Judeo-Berber": ["A language of Israel"], "Judeo-Berber Written": ["ISO 639-6 entity"], "Judeo-Berber Written Hebrew Script": ["ISO 639-6 entity"], "Judeo-Berber Spoken": ["ISO 639-6 entity"], "Judeo'-Tamazight-W": ["ISO 639-6 entity"], "Judeo'-Tamazight-E": ["ISO 639-6 entity"], "Zenati Complex": ["A group of 12 languages and dialects of the Northern Berber language family spoken in North Africa."], "Ghomara": ["ISO 639-6 entity"], "Senhaja De Srair": ["ISO 639-6 entity"], "Tarifit": ["A Northern Berber language spoken mainly in the Moroccan Rif and in other cities in Algeria."], "Tarifit Written": ["Written forms of the Tarifit language."], "Tarifit Written Arab Script": ["The Tarifit language written with the Arab Script."], "Tarifit Spoken": ["Dialects of the Tarifit language."], "A\u00eft-Amert": ["ISO 639-6 entity"], "A\u00eft-Urrighel": ["ISO 639-6 entity"], "Ibeqqoyen": ["ISO 639-6 entity"], "Ikebdanen": ["ISO 639-6 entity"], "Iqr\u00e2yen": ["ISO 639-6 entity"], "A\u00eft-Sa\u00efd": ["ISO 639-6 entity"], "Temsaman": ["ISO 639-6 entity"], "A\u00eft-Tuzin": ["ISO 639-6 entity"], "Igeznayen": ["ISO 639-6 entity"], "Iznacen": ["ISO 639-6 entity"], "Djerada": ["ISO 639-6 entity"], "Lalla-Maghnia": ["ISO 639-6 entity"], "Snus": ["ISO 639-6 entity"], "Arzeu": ["ISO 639-6 entity"], "Kabyle Written": ["Written forms of the Kabyle language."], "Kabyle Written Latin Script": ["Kabyle language written with the Latin Script."], "Kabyle Spoken": ["Dialects of the Kabyle language."], "Zwawa": ["ISO 639-6 entity"], "Tha-Qabaylith-N": ["ISO 639-6 entity"], "Chenoua": ["ISO 639-6 entity"], "Chenoua Spoken": ["ISO 639-6 entity"], "Tha-Qabaylith-E": ["ISO 639-6 entity"], "Tha-Qabaylith-E Spoken": ["ISO 639-6 entity"], "Tachawit": ["ISO 639-6 entity"], "Tachawit Written": ["ISO 639-6 entity"], "Tachawit Spoken": ["ISO 639-6 entity"], "Barika": ["ISO 639-6 entity"], "Batna": ["ISO 639-6 entity"], "A\u00efn-Be\u00efda": ["ISO 639-6 entity"], "Oued-Abdi": ["ISO 639-6 entity"], "Aur\u00e8s-W": ["ISO 639-6 entity"], "Aur\u00e8s-E": ["ISO 639-6 entity"], "Teb\u00e9ssa": ["ISO 639-6 entity"], "Djerid": ["ISO 639-6 entity"], "Mzab-Wargla Cluster": ["ISO 639-6 entity"], "Temacine Tamazight": ["ISO 639-6 entity"], "Temacine Tamazight Spoken": ["ISO 639-6 entity"], "Oued-Rihr": ["ISO 639-6 entity"], "Tugurt-A": ["ISO 639-6 entity"], "T\u00e9macine": ["ISO 639-6 entity"], "Tagargrent": ["ISO 639-6 entity"], "Tagargrent Written": ["ISO 639-6 entity"], "Tagargrent Spoken": ["ISO 639-6 entity"], "Temacin": ["ISO 639-6 entity"], "Tariyit": ["ISO 639-6 entity"], "Wargla": ["ISO 639-6 entity"], "Ngusa": ["ISO 639-6 entity"], "Tumzabt": ["A Berber language spoken by the Mozabites, an Ibadi group inhabiting the seven cities of the M'zab in the northern Sahara. (source: Wikipedia)"], "Tumzabt Written": ["ISO 639-6 entity"], "Tumzabt Written Tifinagh Script": ["ISO 639-6 entity"], "Tumzabt Written Latin Script": ["ISO 639-6 entity"], "Tumzabt Written Arabic Script": ["ISO 639-6 entity"], "Tumzabt Spoken": ["ISO 639-6 entity"], "Berrian": ["ISO 639-6 entity"], "Gharda\u00efa": ["ISO 639-6 entity"], "Melika": ["ISO 639-6 entity"], "Beni-Izgen": ["ISO 639-6 entity"], "Taznatit": ["A language of Algeria"], "Taznatit Spoken": ["ISO 639-6 entity"], "Gurara": ["ISO 639-6 entity"], "Gurara Spoken": ["ISO 639-6 entity"], "Timimun": ["ISO 639-6 entity"], "Badrian": ["ISO 639-6 entity"], "Tuat": ["ISO 639-6 entity"], "Tuat Spoken": ["ISO 639-6 entity"], "Tementit": ["ISO 639-6 entity"], "Tittaf": ["ISO 639-6 entity"], "Tidikelt Tamazight": ["ISO 639-6 entity"], "Tidikelt Tamazight Spoken": ["ISO 639-6 entity"], "Tidikelt-A": ["ISO 639-6 entity"], "Tit": ["ISO 639-6 entity"], "East Zenati": ["ISO 639-6 entity"], "Sened": ["An extinct Berber language that was spoken in the nearby towns of Sened and Majoura in Southern Tunisia until the mid-twentieth century."], "Sened-A": ["ISO 639-6 entity"], "Tmagurt": ["ISO 639-6 entity"], "Ta-Mezret": ["ISO 639-6 entity"], "Ta-Mezret Spoken": ["ISO 639-6 entity"], "Zrawa": ["ISO 639-6 entity"], "Taujjurt": ["ISO 639-6 entity"], "Tamezret-A": ["ISO 639-6 entity"], "Shanini": ["ISO 639-6 entity"], "Duiret": ["ISO 639-6 entity"], "Jerba": ["ISO 639-6 entity"], "Jerba Spoken": ["ISO 639-6 entity"], "Zuara": ["ISO 639-6 entity"], "Zuara Spoken": ["ISO 639-6 entity"], "Nafusi": ["ISO 639-6 entity"], "Nafusi Spoken": ["ISO 639-6 entity"], "Jebel-Nefusa": ["ISO 639-6 entity"], "Jemmari": ["ISO 639-6 entity"], "Fossato": ["ISO 639-6 entity"], "Ghadam\u00e8s": ["A language spoken mainly by some Libyan Muslims in Ghadam\u00e8s, a small oasis near the Libyan border with Algeria and Tunisia."], "Ghadam\u00e8s Spoken": ["Dialects of the Ghadam\u00e8s language."], "Ayt-Waziten": ["ISO 639-6 entity"], "Elt-Ulid": ["ISO 639-6 entity"], "Berber Proper Eastern": ["ISO 639-6 entity"], "Awjila-Sokna Cluster": ["ISO 639-6 entity"], "Sawknah": ["ISO 639-6 entity"], "Awjilah": ["A language of Libya"], "Siwi": ["ISO 639-6 entity"], "Ancient Egyption Cluster": ["ISO 639-6 entity"], "Ancient Egyptian": ["The language used in Ancient Egypt, an independent part of the Afro-Asiatic language phylum."], "Ancient Egyptian Written": ["Variants of the Ancient Egyptian language used in written communication."], "Ancient Egyptian Written Hieroglyphic Script": ["ISO 639-6 entity"], "Ancient Egyptian Written Hieratic Script": ["ISO 639-6 entity"], "Old Egyptian": ["ISO 639-6 entity"], "Old Egyptian Written": ["ISO 639-6 entity"], "Old Egyptian Written Hieroglyphic Script": ["ISO 639-6 entity"], "Old Egyptian Written Hieratic Script": ["ISO 639-6 entity"], "Middle Egyptian": ["ISO 639-6 entity"], "Late Egyptian": ["ISO 639-6 entity"], "Late Egyptian Written": ["ISO 639-6 entity"], "Late Egyptian Written Hieroglyphic Script": ["ISO 639-6 entity"], "Late Egyptian Written Hieratic Script": ["ISO 639-6 entity"], "Demotic": ["ISO 639-6 entity"], "Demotic Written": ["ISO 639-6 entity"], "Demotic Written Hieroglyphic Script": ["ISO 639-6 entity"], "Demotic Written Demotic Script": ["ISO 639-6 entity"], "Coptic Written": ["Variants of the Coptic language used in written communication."], "Coptic Written Hieroglyphic Script": ["ISO 639-6 entity"], "Coptic Written Hieratic Script": ["ISO 639-6 entity"], "Coptic Written Demotic Script": ["ISO 639-6 entity"], "Coptic Written Coptic Script": ["ISO 639-6 entity"], "Saidhic Written": ["Variants of the Saidhic language used in written communication."], "Bohairic-Coptic'": ["ISO 639-6 entity"], "Akhmimic": ["ISO 639-6 entity"], "Lycopolitan": ["ISO 639-6 entity"], "Fayyumic": ["ISO 639-6 entity"], "Oxyrhynchite": ["ISO 639-6 entity"], "Revived 'Coptic'": ["ISO 639-6 entity"], "Zeniyah": ["ISO 639-6 entity"], "Biu Mandara": ["A group of languages of the Afro-Asiatic family spoken in Nigeria, Chad and Cameroon."], "Biu Mandara Group B": ["ISO 639-6 entity"], "Musgu": ["A Chadic language spoken in the north of Cameroon in the department of Diamar\u00e9, in the communes of Yagoua and Kouss\u00e9ri and in the Mora plains, as well as in Chad, up to Chari."], "Musuk": ["ISO 639-6 entity"], "Mpus": ["ISO 639-6 entity"], "Beege": ["ISO 639-6 entity"], "Mulwi": ["ISO 639-6 entity"], "Muskum": ["ISO 639-6 entity"], "Gwai": ["ISO 639-6 entity"], "Ngilemong": ["ISO 639-6 entity"], "Maniling": ["ISO 639-6 entity"], "Abi": ["ISO 639-6 entity", "A Kwa language spoken by the Ab\u00e9 people primarily in the Department of Agboville in C\u00f4te d'Ivoire."], "Luggong": ["ISO 639-6 entity"], "Mbara (Chad)": ["ISO 639-6 entity"], "Jina Majera": ["ISO 639-6 entity"], "Majera": ["An Afro-Asiatic language of Chad and Cameroon."], "Mazra": ["A dialect of the Majera language."], "Kajire-'Dulo": ["ISO 639-6 entity"], "Hwalem": ["ISO 639-6 entity"], "Jina": ["A language of Cameroon."], "Sarassara": ["ISO 639-6 entity"], "Tchide": ["ISO 639-6 entity"], "Muxule": ["ISO 639-6 entity"], "Mae": ["ISO 639-6 entity"], "Kotoko Complex": ["ISO 639-6 entity"], "Kotoko Proper Cluster": ["ISO 639-6 entity"], "Lagwan": ["A language of Cameroon and Chad."], "Lagwan Spoken": ["ISO 639-6 entity"], "Logone-W": ["ISO 639-6 entity"], "Logone-Birni": ["ISO 639-6 entity"], "Logone-Gana": ["ISO 639-6 entity"], "Mser": ["A language of Cameroon and Chad."], "Mser Spoken": ["ISO 639-6 entity"], "Mser-A": ["ISO 639-6 entity"], "Kalo": ["ISO 639-6 entity"], "Gawi": ["ISO 639-6 entity"], "Huluf": ["ISO 639-6 entity"], "Kabe": ["ISO 639-6 entity"], "Klasmu": ["ISO 639-6 entity"], "Maslam- Sao": ["ISO 639-6 entity"], "Maslam": ["ISO 639-6 entity"], "Maslam Spoken": ["ISO 639-6 entity"], "Maltam": ["ISO 639-6 entity"], "Sao": ["ISO 639-6 entity"], "Afade": ["A language of Cameroon and Nigeria."], "Malgbe": ["ISO 639-6 entity"], "Malgbe Spoken": ["ISO 639-6 entity"], "Gulfei": ["ISO 639-6 entity"], "Mara": ["ISO 639-6 entity", "ISO 639-6 entity"], "Dro": ["ISO 639-6 entity"], "Dugiya": ["ISO 639-6 entity"], "Mpade": ["ISO 639-6 entity"], "Mpade Spoken": ["ISO 639-6 entity"], "Mpade-A": ["ISO 639-6 entity"], "Shoe": ["ISO 639-6 entity"], "Bodo": ["ISO 639-6 entity", "ISO 639-6 entity", "A language of Ghana.", "A language of India and Nepal."], "Wulki": ["ISO 639-6 entity"], "Digam": ["ISO 639-6 entity"], "Jilbe": ["ISO 639-6 entity"], "buduma": ["ISO 639-6 entity"], "Buduma Spoken": ["ISO 639-6 entity"], "buduma N": ["ISO 639-6 entity"], "Yidena": ["ISO 639-6 entity"], "Kakaa": ["ISO 639-6 entity"], "Biu Mandara Group A": ["ISO 639-6 entity"], "Bura Mandara": ["ISO 639-6 entity"], "Mandara Matakam": ["ISO 639-6 entity"], "Mandara Proper Complex": ["ISO 639-6 entity"], "Wandala": ["ISO 639-6 entity"], "Mora": ["ISO 639-6 entity"], "Mora-V": ["ISO 639-6 entity"], "Masfeima": ["ISO 639-6 entity"], "Jampalam": ["ISO 639-6 entity"], "Zlogba": ["ISO 639-6 entity"], "Zlogba Spoken": ["The dialects of the Zlogba language."], "Mazagwa": ["ISO 639-6 entity"], "Mazagwa Spoken": ["ISO 639-6 entity"], "Gamargu": ["ISO 639-6 entity"], "Gamargu Spoken": ["ISO 639-6 entity"], "Gwanje": ["ISO 639-6 entity"], "Gwanje Spoken": ["The dialects of the Gwanje language."], "Ngaslawe": ["ISO 639-6 entity"], "Ngaslawe Spoken": ["ISO 639-6 entity"], "Kirawa": ["ISO 639-6 entity"], "Kirawa Spoken": ["ISO 639-6 entity"], "Kamburwama": ["ISO 639-6 entity"], "Kamburwama Spoken": ["ISO 639-6 entity"], "Parkwa": ["ISO 639-6 entity"], "Parkwa Written": ["ISO 639-6 entity"], "Parkwa Spoken": ["ISO 639-6 entity"], "Kudala": ["ISO 639-6 entity"], "Kudala Spoken": ["ISO 639-6 entity"], "Glavda Cluster": ["ISO 639-6 entity"], "Glavda": ["A language of Nigeria and Cameroon"], "Glavda Written": ["ISO 639-6 entity"], "Glavda Spoken": ["ISO 639-6 entity"], "Ngoshe": ["ISO 639-6 entity"], "Ngoshe Spoken": ["ISO 639-6 entity"], "Vale": ["ISO 639-6 entity", "ISO 639-6 entity"], "Vale Spoken": ["The dialects of the Vale language.", "ISO 639-6 entity"], "Bokwa": ["ISO 639-6 entity"], "Bokwa Spoken": ["The dialects of the Bokwa language."], "Guduf-Gava": ["ISO 639-6 entity", "A language of Nigeria."], "Guduf -Gava Written": ["ISO 639-6 entity"], "Guduf -Gava Spoken": ["ISO 639-6 entity"], "Kudupa-Xa": ["ISO 639-6 entity"], "Kudupa-Xa Spoken": ["ISO 639-6 entity"], "Yaghwatada-Xa": ["ISO 639-6 entity"], "Yaghwatada-Xa Spoken": ["ISO 639-6 entity"], "Chikide": ["ISO 639-6 entity"], "Chikide Spoken": ["ISO 639-6 entity"], "Cineni": ["A language of Nigeria."], "Cineni Spoken": ["ISO 639-6 entity"], "Mandara": ["ISO 639-6 entity"], "Lamang": ["A language of Nigeria."], "Lamang Written": ["ISO 639-6 entity"], "Lamang Spoken": ["ISO 639-6 entity"], "Zaladava": ["ISO 639-6 entity"], "Zaladava Spoken": ["The dialects of the Zaladava language."], "Dzuba": ["ISO 639-6 entity"], "Dzuba Spoken": ["ISO 639-6 entity"], "Leghva": ["ISO 639-6 entity"], "Leghva Spoken": ["ISO 639-6 entity"], "Gwozo": ["ISO 639-6 entity"], "Gwozo Spoken": ["The dialects of the Gwozo language."], "Wakane": ["ISO 639-6 entity"], "Wakane Spoken": ["ISO 639-6 entity"], "Dlige": ["ISO 639-6 entity"], "Dlige Spoken": ["ISO 639-6 entity"], "Hi'dkala": ["ISO 639-6 entity"], "Hi'dkala Spoken": ["ISO 639-6 entity"], "Waga": ["ISO 639-6 entity"], "Waga Spoken": ["ISO 639-6 entity"], "Dghwede": ["A language of Nigeria."], "Dghwede Spoken": ["ISO 639-6 entity"], "Hdi": ["ISO 639-6 entity"], "Hdi Written": ["ISO 639-6 entity"], "Hdi Spoken": ["ISO 639-6 entity"], "Turu": ["ISO 639-6 entity"], "Vizik": ["ISO 639-6 entity"], "Vizik Spoken": ["ISO 639-6 entity"], "Vemgo-Mabas": ["ISO 639-6 entity"], "Vemgo-Mabas Spoken": ["ISO 639-6 entity"], "Vemgo": ["ISO 639-6 entity"], "Vemgo Spoken": ["ISO 639-6 entity"], "Mabas": ["ISO 639-6 entity"], "Mabas Spoken": ["ISO 639-6 entity"], "Gvoko": ["ISO 639-6 entity"], "Gvoko Spoken": ["ISO 639-6 entity"], "Ngweshe": ["ISO 639-6 entity"], "Ngweshe Spoken": ["ISO 639-6 entity"], "Sukur": ["ISO 639-6 entity"], "Sukur Spoken": ["ISO 639-6 entity"], "Matakam Cluster": ["ISO 639-6 entity"], "Vame": ["ISO 639-6 entity"], "Vame Spoken": ["The dialects of the Vame language."], "Pelasla": ["The dialects of the Vame language."], "Gwendele": ["ISO 639-6 entity"], "Damlale": ["The dialects of the Vame language."], "Ndreme": ["ISO 639-6 entity"], "Ndreme Spoken": ["ISO 639-6 entity"], "Mbreme-Vame": ["ISO 639-6 entity"], "Mbreme-Vame Spoken": ["ISO 639-6 entity"], "Mbreme": ["ISO 639-6 entity"], "Vame-Mora-A": ["ISO 639-6 entity"], "Maslava": ["ISO 639-6 entity"], "Demwa": ["ISO 639-6 entity"], "Demwa Spoken": ["ISO 639-6 entity"], "Hurza": ["ISO 639-6 entity"], "Hurza Spoken": ["ISO 639-6 entity"], "Mbuko": ["ISO 639-6 entity"], "Mbuko Spoken": ["ISO 639-6 entity"], "Matal": ["ISO 639-6 entity"], "Matal Spoken": ["ISO 639-6 entity"], "Baldemu": ["A language of Cameroon"], "Baldemu Spoken": ["The spoken Baldemu language and its dialects."], "Wuzlam": ["ISO 639-6 entity"], "Wuzlam Spoken": ["ISO 639-6 entity"], "Muyang": ["ISO 639-6 entity"], "Muyang Spoken": ["ISO 639-6 entity"], "Mada (Cameroon)": ["ISO 639-6 entity"], "Mada (Cameroon) Written": ["ISO 639-6 entity"], "Mada (Cameroon) Spoken": ["ISO 639-6 entity"], "Mikiri": ["ISO 639-6 entity"], "Mikiri Spoken": ["ISO 639-6 entity"], "Zulgwa": ["ISO 639-6 entity"], "Zulgwa Spoken": ["ISO 639-6 entity"], "Mineo": ["ISO 639-6 entity"], "Mineo Spoken": ["ISO 639-6 entity"], "Mukuno": ["ISO 639-6 entity"], "Mukuno Spoken": ["ISO 639-6 entity"], "Merey": ["ISO 639-6 entity"], "Merey Written": ["ISO 639-6 entity"], "Merey Spoken": ["ISO 639-6 entity"], "Dugwor": ["ISO 639-6 entity"], "Dugwor Written": ["ISO 639-6 entity"], "Dugwor Spoken": ["ISO 639-6 entity"], "Mikere": ["ISO 639-6 entity"], "Zulgo-Gemzek": ["A language of Cameroon"], "Zulgo-Gemzek Written": ["The written forms of the Zulgo-Gemzek language."], "Zulgo-Gemzek Spoken": ["The dialects of the Zulgo-Gemzek language."], "Gaduwa": ["ISO 639-6 entity", "ISO 639-6 entity"], "Gaduwa Spoken": ["ISO 639-6 entity"], "North Giziga": ["A language of Cameroon"], "North Giziga Written": ["The written forms of the North Giziga language."], "North Giziga Spoken": ["The dialects of the North Giziga language."], "Mi-Marva": ["ISO 639-6 entity"], "Mi-Marva Spoken": ["ISO 639-6 entity"], "Mi-Dogba": ["ISO 639-6 entity"], "Mi-Dogba Spoken": ["ISO 639-6 entity"], "South Giziga": ["A language of Cameroon."], "Mi-Muturwa": ["ISO 639-6 entity"], "Mi-Mijivin": ["ISO 639-6 entity"], "Rum": ["ISO 639-6 entity"], "Lulu": ["ISO 639-6 entity"], "North Mofu": ["ISO 639-6 entity"], "Durum": ["ISO 639-6 entity"], "Duvangar": ["ISO 639-6 entity"], "Wazang": ["ISO 639-6 entity"], "Mofu-Gudur": ["ISO 639-6 entity"], "Mokong": ["ISO 639-6 entity"], "Masagal": ["ISO 639-6 entity"], "Zidim": ["ISO 639-6 entity"], "Njeleng": ["ISO 639-6 entity"], "Dimeo": ["ISO 639-6 entity"], "Gudal": ["ISO 639-6 entity"], "Mafa": ["A Chadic language spoken by the Mafa people in the state of Mayo-Tsanaga in northern Cameroon and in the state of Borno in eastern Nigeria."], "Mafa Spoken": ["ISO 639-6 entity"], "Mafa-W": ["ISO 639-6 entity"], "Mafa-C": ["ISO 639-6 entity"], "Magumaz": ["ISO 639-6 entity"], "Mavumay": ["ISO 639-6 entity"], "Uzal": ["ISO 639-6 entity"], "Koza": ["ISO 639-6 entity"], "Moloko": ["ISO 639-6 entity"], "Ldamtsai": ["ISO 639-6 entity"], "Sulede": ["ISO 639-6 entity"], "Rua": ["ISO 639-6 entity"], "Mefele": ["ISO 639-6 entity"], "Sirak": ["ISO 639-6 entity"], "Muhura": ["ISO 639-6 entity"], "Shugule": ["ISO 639-6 entity"], "Cuvok": ["ISO 639-6 entity"], "Daba Complex": ["ISO 639-6 entity"], "Buwal": ["A language of Cameroon"], "Gavar": ["ISO 639-6 entity"], "Kortchi": ["ISO 639-6 entity"], "Gadala": ["ISO 639-6 entity"], "Mbedam": ["ISO 639-6 entity"], "Mina (Cameroon)": ["ISO 639-6 entity"], "Mina (Cameroon) Spoken": ["ISO 639-6 entity"], "Besleri": ["ISO 639-6 entity"], "Jingjing": ["ISO 639-6 entity"], "Gamdugun": ["ISO 639-6 entity"], "Daba": ["ISO 639-6 entity"], "Nive": ["ISO 639-6 entity"], "Pologozom": ["ISO 639-6 entity"], "Mazagway": ["ISO 639-6 entity"], "Mazagway Spoken": ["ISO 639-6 entity"], "Musgoi": ["ISO 639-6 entity"], "Kpala": ["ISO 639-6 entity"], "Bura Higi": ["ISO 639-6 entity"], "Higi Cluster": ["ISO 639-6 entity"], "Kamwe": ["ISO 639-6 entity"], "Kamwe Spoken": ["ISO 639-6 entity"], "Nkafa": ["ISO 639-6 entity"], "Nkafa Spoken": ["ISO 639-6 entity"], "Baza- Dakwa": ["ISO 639-6 entity"], "Baza-Dakwa Spoken": ["The dialects of the Baza-Dakwa language."], "Baza": ["A dialect of the Baza-Dakwa language."], "Dakwa": ["A dialect of the Baza-Dakwa language."], "Sina": ["ISO 639-6 entity"], "Sina Spoken": ["ISO 639-6 entity"], "Futu": ["ISO 639-6 entity"], "Futu Spoken": ["ISO 639-6 entity"], "Tili-Pte": ["ISO 639-6 entity"], "Tili-Pte Spoken": ["ISO 639-6 entity"], "Modi": ["ISO 639-6 entity"], "Modi Spoken": ["ISO 639-6 entity"], "Humsi": ["ISO 639-6 entity"], "Humsi Spoken": ["ISO 639-6 entity"], "Wula": ["ISO 639-6 entity"], "Wula Spoken": ["ISO 639-6 entity"], "Psikye": ["ISO 639-6 entity"], "Psikye Written": ["ISO 639-6 entity"], "Psikye Spoken": ["ISO 639-6 entity"], "Kamale": ["ISO 639-6 entity"], "Mogode": ["ISO 639-6 entity"], "Zlenge": ["ISO 639-6 entity"], "Zlenge Spoken": ["The dialects of the Zlenge language."], "Ghye": ["ISO 639-6 entity"], "Ghye Spoken": ["ISO 639-6 entity"], "Za": ["ISO 639-6 entity"], "Za Spoken": ["The dialects of the Za language."], "Hya": ["A language of Cameroon and Nigeria."], "Hya Spoken": ["ISO 639-6 entity"], "Bana": ["ISO 639-6 entity"], "Bana Written": ["ISO 639-6 entity"], "Bana Spoken": ["The dialects of the Bana language."], "Thlukufu": ["ISO 639-6 entity"], "Thlukufu Spoken": ["ISO 639-6 entity"], "Bwagira-'Fali'": ["ISO 639-6 entity"], "Bwagira-'Fali' Spoken": ["ISO 639-6 entity"], "Gambura": ["ISO 639-6 entity"], "Gambura Spoken": ["ISO 639-6 entity"], "Gili": ["ISO 639-6 entity"], "Gili Spoken": ["ISO 639-6 entity"], "Kiria-'Fali'": ["ISO 639-6 entity"], "Kiria-'Fali' Spoken": ["ISO 639-6 entity"], "Mijilu-'Fali'": ["ISO 639-6 entity"], "Mijilu-'Fali' Spoken": ["ISO 639-6 entity"], "Bura Complex": ["ISO 639-6 entity"], "Bura Group 2 Cluster": ["ISO 639-6 entity"], "huba": ["ISO 639-6 entity"], "Huba Written": ["ISO 639-6 entity"], "Huba Spoken": ["ISO 639-6 entity"], "Hong": ["ISO 639-6 entity"], "Hong Spoken": ["ISO 639-6 entity"], "Gashala": ["ISO 639-6 entity"], "Gashala Spoken": ["ISO 639-6 entity"], "Gaya": ["The presumed language of the Gaya confederacy (1st to 6th century CE) in the south of the Korean peninsula."], "Gaya Spoken": ["ISO 639-6 entity"], "Luwa": ["ISO 639-6 entity"], "Luwa Spoken": ["ISO 639-6 entity"], "Marghi South": ["ISO 639-6 entity"], "Marghi South Spoken": ["ISO 639-6 entity"], "Wamdiu": ["ISO 639-6 entity"], "Wamdiu Spoken": ["ISO 639-6 entity"], "Hildi": ["ISO 639-6 entity"], "Hildi Spoken": ["ISO 639-6 entity"], "Marghi Central": ["ISO 639-6 entity"], "Marghi Central Written": ["ISO 639-6 entity"], "Marghi Central Spoken": ["ISO 639-6 entity"], "Wurga": ["ISO 639-6 entity"], "Marghi-V": ["ISO 639-6 entity"], "Marghi-V Spoken": ["ISO 639-6 entity"], "Babul": ["ISO 639-6 entity"], "Lasa": ["ISO 639-6 entity"], "Minthla": ["ISO 639-6 entity"], "Molgoy": ["ISO 639-6 entity"], "Gulak- Dzer": ["ISO 639-6 entity"], "Gulak- Dzer Spoken": ["ISO 639-6 entity"], "Gulak": ["ISO 639-6 entity"], "Dzer": ["ISO 639-6 entity"], "Bura Group 1": ["ISO 639-6 entity"], "Cibak": ["ISO 639-6 entity"], "Cibak Spoken": ["ISO 639-6 entity"], "Nggwahyi": ["ISO 639-6 entity"], "Nggwahyi Spoken": ["ISO 639-6 entity"], "Putai": ["ISO 639-6 entity"], "Putai Spoken": ["ISO 639-6 entity"], "Bura-Pabir": ["A language of Nigeria."], "Bura-Pabir Written": ["ISO 639-6 entity"], "Bura-Pabir Spoken": ["ISO 639-6 entity"], "Pabir": ["ISO 639-6 entity"], "Pabir Spoken": ["ISO 639-6 entity"], "Kwojeffa": ["ISO 639-6 entity"], "Huve": ["ISO 639-6 entity"], "Hyil-Hawul": ["ISO 639-6 entity"], "Hyil-Hawul Spoken": ["ISO 639-6 entity"], "Pela": ["A language of China."], "Pela Spoken": ["ISO 639-6 entity"], "Kofa": ["A language of Nigeria.", "ISO 639-6 entity"], "Kofa Spoken": ["ISO 639-6 entity", "ISO 639-6 entity"], "Tera Complex": ["ISO 639-6 entity"], "Tera Group 1 Cluster": ["ISO 639-6 entity"], "Tera": ["ISO 639-6 entity"], "Tera Written": ["ISO 639-6 entity"], "Tera Spoken": ["ISO 639-6 entity"], "Nyimatli": ["ISO 639-6 entity"], "Nyimatli Spoken": ["ISO 639-6 entity"], "Pidlimdi": ["ISO 639-6 entity"], "Pidlimdi Spoken": ["ISO 639-6 entity"], "Kokura": ["ISO 639-6 entity"], "Kokura Spoken": ["ISO 639-6 entity"], "Jara": ["A language of Nigeria."], "Jara Spoken": ["ISO 639-6 entity"], "Tera Group 2 Cluster": ["ISO 639-6 entity"], "Ga'anda": ["ISO 639-6 entity"], "Ga'anda Written": ["ISO 639-6 entity"], "Ga'anda Spoken": ["ISO 639-6 entity"], "Gabin": ["ISO 639-6 entity"], "Gabin Spoken": ["ISO 639-6 entity"], "Boga": ["A language of Nigeria."], "Boga Spoken": ["The dialects of the Boga language."], "Hwana": ["A language of Nigeria."], "Hwana Spoken": ["ISO 639-6 entity"], "Bata Complex": ["ISO 639-6 entity"], "Gudu": ["A language of Nigeria."], "Gudu Spoken": ["ISO 639-6 entity"], "Kumbi": ["ISO 639-6 entity"], "Kumbi Spoken": ["ISO 639-6 entity"], "Bata Proper Cluster": ["ISO 639-6 entity"], "Chede": ["ISO 639-6 entity"], "Chede Spoken": ["ISO 639-6 entity"], "Cheke": ["ISO 639-6 entity"], "Cheke Spoken": ["ISO 639-6 entity"], "Gude": ["ISO 639-6 entity"], "Gude Written": ["ISO 639-6 entity"], "Gude Spoken": ["ISO 639-6 entity"], "Jimi (Cameroon)": ["ISO 639-6 entity"], "Jimi (Cameroon) Spoken": ["ISO 639-6 entity"], "Mapodi": ["ISO 639-6 entity"], "Mapodi Spoken": ["ISO 639-6 entity"], "Mubi": ["ISO 639-6 entity", "ISO 639-6 entity"], "Mubi Spoken": ["ISO 639-6 entity", "ISO 639-6 entity"], "Mucella": ["ISO 639-6 entity"], "Mucella Spoken": ["ISO 639-6 entity"], "Mudaye": ["ISO 639-6 entity"], "Mudaye Spoken": ["ISO 639-6 entity"], "Ngwaba": ["ISO 639-6 entity"], "Ngwaba Spoken": ["ISO 639-6 entity"], "Sharwa": ["ISO 639-6 entity"], "Sharwa Spoken": ["ISO 639-6 entity"], "Tchevi": ["ISO 639-6 entity"], "Sherwin": ["ISO 639-6 entity"], "Sarwaye": ["ISO 639-6 entity"], "Terki": ["ISO 639-6 entity"], "Terki Spoken": ["ISO 639-6 entity"], "Tsuvan": ["ISO 639-6 entity"], "Tsuvan Spoken": ["ISO 639-6 entity"], "Fali": ["ISO 639-6 entity"], "Fali Spoken": ["ISO 639-6 entity"], "Vin": ["ISO 639-6 entity"], "Huli": ["ISO 639-6 entity", "A language of Papua New Guinea."], "Madazarin": ["ISO 639-6 entity"], "Bween": ["ISO 639-6 entity"], "Zizilivaken": ["ISO 639-6 entity"], "Zizilivaken Spoken": ["The dialects of the Zizilivaken language."], "Nzanyi": ["ISO 639-6 entity"], "Nzanyi Written": ["ISO 639-6 entity"], "Nzanyi Spoken": ["ISO 639-6 entity"], "Rogede": ["ISO 639-6 entity"], "Nggwoli": ["ISO 639-6 entity"], "Hoode": ["ISO 639-6 entity"], "Maiha": ["ISO 639-6 entity"], "Magara": ["ISO 639-6 entity"], "Dede": ["ISO 639-6 entity"], "Mutidi": ["ISO 639-6 entity"], "Lovi": ["ISO 639-6 entity"], "Kobochi": ["ISO 639-6 entity"], "Kobochi Spoken": ["ISO 639-6 entity"], "Paka": ["ISO 639-6 entity"], "Paka Spoken": ["ISO 639-6 entity"], "Holma": ["ISO 639-6 entity"], "Bata": ["A language of Nigeria and Cameroon."], "Bata Written": ["ISO 639-6 entity"], "Bata Spoken": ["The dialects of the bata language."], "Ribow": ["A dialect of the bata language."], "Demsa": ["A dialect of the bata language."], "Garua": ["A dialect of the bata language."], "Jirai": ["ISO 639-6 entity"], "Jirai Spoken": ["ISO 639-6 entity"], "Kobotachi": ["ISO 639-6 entity"], "Kobotachi Spoken": ["ISO 639-6 entity"], "Malabu": ["ISO 639-6 entity"], "Malabu Spoken": ["ISO 639-6 entity"], "Ndeewe": ["ISO 639-6 entity"], "Ndeewe Spoken": ["ISO 639-6 entity"], "Wadi": ["ISO 639-6 entity"], "Wadi Spoken": ["ISO 639-6 entity"], "Zumu": ["A dialect of the Bata language."], "Bacama": ["An Afro-Asiatic language spoken in Nigeria in Adamawa State in the Numan and Guyuk LGAs, and in Kaduna State northeast of Kaduna town."], "Bacama Spoken": ["The spoken Bacama language and its dialects."], "Mulyen": ["A dialect of the bacama language."], "Opalo": ["A dialect of the bacama language."], "Wa-Duku": ["A dialect of the bacama language."], "Caucasian": ["A large language family spoken in and around the Caucasus Mountains."], "Circassian": ["A language continuum spoken in the Caucasus, comprising the Adyghe and Kabardian languages."], "Adyghe": ["One of the two official languages of the Republic of Adygea in the Russian Federation."], "Adyghe Written": ["Written forms of the Adyghe language."], "Adyghe Wriiten Cyrillic Script Temirgoi Model": ["ISO 639-6 entity"], "Adyghe Written Arabic Script": ["ISO 639-6 entity"], "Adyghe Written Latin Script": ["A written form of the Adyghe language."], "Adyghe Spoken": ["ISO 639-6 entity"], "Adyghe-Formal": ["ISO 639-6 entity"], "Natukhaj": ["ISO 639-6 entity"], "Abadzekh": ["ISO 639-6 entity"], "Shapsug": ["ISO 639-6 entity"], "Hakuchi Adyghe": ["ISO 639-6 entity"], "Neo-Ubykh": ["ISO 639-6 entity"], "Cherkes": ["ISO 639-6 entity"], "Cherkes Spoken": ["ISO 639-6 entity"], "Beslenej": ["ISO 639-6 entity"], "Kuban": ["ISO 639-6 entity"], "Kuma": ["ISO 639-6 entity"], "Urup": ["ISO 639-6 entity"], "Cherkes-T\u00fcrkiye": ["ISO 639-6 entity"], "Kabardian": ["A language of Russia (Europe) and Turkey"], "Kabardian Spoken": ["The dialects of the Kabardian language."], "Qaberdey-Formal": ["A dialect of the Kabardian language."], "Malka": ["A dialect of the Kabardian language."], "Baksan": ["A dialect of the Kabardian language."], "Qaberdey-C": ["A dialect of the Kabardian language."], "Qaberdey-E": ["A dialect of the Kabardian language."], "Mozdok": ["A dialect of the Kabardian language."], "Abxaz-Abaza Cluster": ["ISO 639-6 entity"], "Abkhazian Spoken": ["The spoken variants of the Abkhazian language."], "Abkhaz-Formal": ["A dialect of the Abkhazian language."], "Bzyb": ["A dialect of the Abkhazian language spoken in the Caucasus and in Turkey.", "A mountain range in Abkhazia on the Southern slope of the Western part of Caucasus Major, running in parallel to it."], "Abzhui": ["A dialect of the Abkhazian language spoken in the Cuacasus."], "Samurzakan": ["A dialect of the Abkhazian language."], "Sadz": ["A dialect of the Abkhazian language spoken in Turkey.", "A people or a sub-ethnic group of the Abkhazians."], "Abaza": ["A language of the Caucasus mountains in the Russian Karachay-Cherkess Republic spoken by the Abazins."], "Abaza Written": ["Written forms of the Abaza language."], "Abaza Cyrillic Script Tapanta Model": ["ISO 639-6 entity"], "Abaza Latin Script": ["A written form of the Abaza language."], "Abaza Spoken": ["The spoken variants of the Abaza language."], "Abazin-Formal": ["ISO 639-6 entity"], "Ashkhar": ["ISO 639-6 entity"], "Tapanta": ["ISO 639-6 entity"], "Bezshagh": ["ISO 639-6 entity"], "Abazin": ["ISO 639-6 entity"], "Ubykh": ["A language of the Northwestern Caucasian group, spoken by the Ubykh people up until the early 1990s."], "Ubykh Written": ["Written forms of the Ubykh language."], "Ubykh Written Latin Script": ["A written form of the Ubykh language."], "Ubykh Written Cyrillic Script": ["ISO 639-6 entity"], "Ubykh Written IPA Script": ["ISO 639-6 entity"], "Ubykh-Caucasus": ["ISO 639-6 entity"], "Ubykh-Istanbul": ["ISO 639-6 entity"], "Nax": ["A small family of languages spoken chiefly by the Nakh peoples, in Russia (Chechnya and Ingushetia), in Georgia, and in the Chechen diaspora (mainly in Europe, Middle East and Central Asia)."], "Chechen-Ingush": ["A family of languages comprising the Chechen and Ingush languages, mainly spoken in the Russian republics of Chechnya and Ingushetia, as well as in the Chechen diaspora."], "Ingush": ["Northeast Caucasian language spoken mainly in the autonomous Republic of Ingushetia in the Russian Federation."], "Mielxiin": ["ISO 639-6 entity"], "Chechen Written": ["Written forms of the Chechen language."], "Chechen Written Cyrillic Script": ["ISO 639-6 entity"], "Chechen Written Latin Script": ["A written form of the Chechen language."], "Chechen Written Arabic Script": ["ISO 639-6 entity"], "Chechen Spoken": ["ISO 639-6 entity"], "Ghalghaay-Formal": ["ISO 639-6 entity"], "Ghalghaay-C": ["ISO 639-6 entity"], "Akkin": ["ISO 639-6 entity"], "Chitumkala": ["ISO 639-6 entity"], "Cheberloj": ["ISO 639-6 entity"], "Chechen-T\u00fcrkiye": ["ISO 639-6 entity"], "Kistiina": ["ISO 639-6 entity"], "Bats": ["A nakho-daghestian language spoken by the Bats people in the provinces of Tusheti and Kakheti in Georgia."], "Bats Written Georgian Script": ["The Bats language written with the Georgian script."], "Bats Written Latin Script": ["The Bats language written with the Latin script."], "Bats Spoken": ["The Bats spoken language and its dialects."], "Avaro-Andi-Dido": ["A group of the Northeast Caucasian languages."], "Avaro": ["ISO 639-6 entity"], "Avar Written": ["Written forms of the Avar language."], "Avar Written Cyrillic Script": ["ISO 639-6 entity"], "Avar Written Latin Script": ["A written form of the Avar language."], "Avar Written Georgian Script": ["ISO 639-6 entity"], "Avar Written Arabic Script": ["ISO 639-6 entity"], "Avar Spoken": ["ISO 639-6 entity"], "Avar-Formal": ["ISO 639-6 entity"], "Salatav": ["ISO 639-6 entity"], "Khunzakh": ["ISO 639-6 entity"], "Avar-NE": ["ISO 639-6 entity"], "Avar-C": ["ISO 639-6 entity"], "Avar-C Spoken": ["ISO 639-6 entity"], "Keleb": ["ISO 639-6 entity"], "Bachadin": ["ISO 639-6 entity"], "Untib": ["ISO 639-6 entity"], "Shulanin": ["ISO 639-6 entity"], "Kachib": ["ISO 639-6 entity"], "Avar-S": ["ISO 639-6 entity"], "Avar-S Spoken": ["ISO 639-6 entity"], "Hid": ["ISO 639-6 entity"], "Andalal-Gkhdatl": ["ISO 639-6 entity"], "Karakh": ["ISO 639-6 entity"], "Antsukh": ["ISO 639-6 entity"], "Batlukh": ["ISO 639-6 entity"], "Car": ["ISO 639-6 entity"], "Andi": ["A language of Russia (Europe)."], "Andi Spoken": ["The Andi spoken language and its dialects."], "Qwannab": ["A dialect of the Andi language."], "Munin": ["A dialect of the Andi language."], "Rikvani": ["A dialect of the Andi language."], "Kvankhidatl": ["A dialect of the Andi language."], "Gagatl": ["A dialect of the Andi language."], "Zilo": ["A dialect of the Andi language."], "Botlikh": ["A language of Russia (Europe)."], "Zibirikhalin": ["ISO 639-6 entity"], "Ghodoberi": ["A language of Russia (Europe)"], "Karatin": ["A language of Russia (Europe)."], "Karata": ["An Andic language spoken in southern Dagestan, Russia."], "Tokita": ["A dialect of the Karata language."], "Anchikh": ["A dialect of the Karata language."], "Tindi": ["Northeast Caucasian language spoken in the Russian republic of Dagestan."], "Bagvalal": ["An Avar\u2013Andic language spoken by the Bagvalals in southwestern Dagestan, Russia"], "Kvanadin": ["A dialect of Bagvalal spoken in the Kvanadin village."], "Tlisi": ["A dialect of Bagvalal spoken in the Tlisi village."], "Chamalal": ["An Andic language spoken in southwestern Dagestan, Russia."], "Badukh": ["A language of Russia (Europe)."], "Gadyri": ["A language of Russia (Europe)."], "Gachitl": ["A dialect of the Gadyri language."], "Kvankhi": ["A dialect of the Gadyri language."], "Gakvari": ["A language of Russia (Europe)."], "Agvali": ["A language of Russia (Europe)."], "Richaganik": ["A language of Russia (Europe)."], "Tsumada": ["A language of Russia (Europe)."], "Urukh": ["A language of Russia (Europe)."], "Gigatl": ["A language of Russia (Europe)."], "Akhvakh": ["A language of Russia (Europe)."], "Akhvakh Spoken": ["The Akhvakh spoken language and its dialects."], "Kakhib": ["A dialect of the Akhvakh language."], "Akhvakh-N": ["A dialect of the Akhvakh language."], "Akhvakh-S": ["A dialect of the Akhvakh language."], "Tlyanub": ["A dialect of the Akhvakh language."], "Tsegob": ["A dialect of the Akhvakh language."], "Dido Branch": ["ISO 639-6 entity"], "Dido-Hinux": ["ISO 639-6 entity"], "Dido": ["A Northeast Caucasian language spoken by the Tsez, a Muslim people in the mountainous Tsunta district of southern and western Dagestan in Russia."], "Dido Spoken": ["ISO 639-6 entity"], "Didoi": ["ISO 639-6 entity"], "Asakh": ["ISO 639-6 entity"], "Tsuntin": ["ISO 639-6 entity"], "Sagada": ["ISO 639-6 entity"], "Kidero": ["ISO 639-6 entity"], "Shapikh": ["ISO 639-6 entity"], "Shaitl": ["ISO 639-6 entity"], "Khvarshi": ["A language of Russia (Europe)."], "Khvarshi Spoken": ["ISO 639-6 entity"], "Inkhokvari": ["ISO 639-6 entity"], "Hinukh": ["A language of Russia (Europe)"], "Bezhta-Hunzib Cluster": ["ISO 639-6 entity"], "Bezhta": ["A language of Russia"], "Bezhta Spoken": ["The dialects of the Bezhta language."], "Kapuchin": ["A dialect of the Bezhta language."], "Tlyadaly": ["A dialect of the Bezhta language."], "Khocharkhotin": ["A dialect of the Bezhta language."], "Hunzib": ["A language of Russia (Europe)"], "Hunzib Spoken": ["ISO 639-6 entity"], "Khunzal": ["ISO 639-6 entity"], "Lak-Dargwa": ["ISO 639-6 entity"], "Lak Spoken": ["Dialects of the Lak language."], "Lak-Formal": ["ISO 639-6 entity"], "Kumukh": ["ISO 639-6 entity"], "Vitskhin": ["ISO 639-6 entity"], "Vikhlin": ["ISO 639-6 entity"], "Ashtikulin": ["ISO 639-6 entity"], "Balkhar - Calakan": ["ISO 639-6 entity"], "Dargwa": ["A language of Russia (Europe)"], "Dargwa Spoken": ["ISO 639-6 entity"], "Dargwa-Formal": ["ISO 639-6 entity"], "Chirag": ["ISO 639-6 entity"], "Khiurkilin": ["ISO 639-6 entity"], "Chudakhar": ["ISO 639-6 entity"], "Akhusha - Urakha": ["ISO 639-6 entity"], "Kajtak": ["ISO 639-6 entity"], "Kubachi": ["ISO 639-6 entity"], "Ughbug": ["ISO 639-6 entity"], "Dejbuk": ["ISO 639-6 entity"], "Kharbuk": ["ISO 639-6 entity"], "Muirin": ["ISO 639-6 entity"], "Sirkhin": ["ISO 639-6 entity"], "Lezgian": ["A language spoken by the Lezgins, who live in southern Dagestan (Russia) and northern Azerbaijan."], "Lezgian Proper": ["ISO 639-6 entity"], "Lezghian": ["ISO 639-6 entity", "A language spoken by the Lezgins, who live in southern Dagestan (Russia) and northern Azerbaijan."], "Lezghian Spoken": ["ISO 639-6 entity"], "Lezgin-Formal": ["ISO 639-6 entity"], "Kiuri": ["ISO 639-6 entity"], "Akhty": ["ISO 639-6 entity"], "Kuba": ["ISO 639-6 entity"], "Gjunej": ["ISO 639-6 entity"], "Garkin": ["ISO 639-6 entity"], "Anykh": ["ISO 639-6 entity"], "Staly": ["ISO 639-6 entity"], "Aghul": ["A language of Russia (Europe)."], "Aghul Spoken": ["The Aghul spoken language and its dialects."], "Koshan": ["A dialect of the Aghul language."], "Keren": ["A dialect of the Aghul language."], "Gekxun": ["A dialect of the Aghul language."], "Rutul": ["ISO 639-6 entity"], "Rutul Spoken": ["ISO 639-6 entity"], "Shina": ["ISO 639-6 entity", "ISO 639-6 entity"], "Borch": ["ISO 639-6 entity"], "Ireko - Muxrek": ["ISO 639-6 entity"], "Tabassaran": ["A Northeast Caucasian language spoken by the Tabasaran people in southern part of the Russian Republic of Dagestan."], "Tabassaran Spoken": ["ISO 639-6 entity"], "Tabarasan-Formal": ["ISO 639-6 entity"], "Khanag": ["ISO 639-6 entity"], "Ghumghum": ["ISO 639-6 entity"], "Archi": ["A Northeast Caucasian language spoken by the Archi people in and around the village of Archib, southern Dagestan, Russia."], "Tsakhur": ["ISO 639-6 entity"], "Tsakhur Spoken": ["ISO 639-6 entity"], "Kirmico-Lek": ["ISO 639-6 entity"], "Mikik": ["ISO 639-6 entity"], "Mishlesh": ["ISO 639-6 entity"], "Budukh": ["A language of Azerbaijan."], "Budukh Spoken": ["ISO 639-6 entity"], "Alyk": ["ISO 639-6 entity"], "Yergyudzh": ["ISO 639-6 entity"], "Kryts": ["A language of Azerbaijan."], "Kryts Spoken": ["The dialects of the Kryts language."], "Dzhek": ["A dialect of the Kryts language."], "Khaput": ["A dialect of the Kryts language."], "Udi": ["A language of Azerbaijan and Georgia."], "Udi Written": ["ISO 639-6 entity"], "Udi Written Cyrillic Script": ["ISO 639-6 entity"], "Udi Spoken": ["ISO 639-6 entity"], "Vartashen": ["ISO 639-6 entity"], "Nidzh": ["ISO 639-6 entity"], "Oktomberi": ["ISO 639-6 entity"], "Khinalugh": ["A language of Azerbaijan."], "Khinalugh Spoken": ["The dialects of the Khinalugh language."], "Zan Cluster": ["ISO 639-6 entity"], "Mingrelian": ["A South Caucasian language spoken in Georgia."], "Mingrelian Written": ["ISO 639-6 entity"], "Mingrelian Written Georgian Script": ["ISO 639-6 entity"], "Mingrelian Spoken": ["ISO 639-6 entity"], "Samurzaka-Zugdidi": ["ISO 639-6 entity"], "Senaki": ["ISO 639-6 entity"], "Laz": ["A South Caucasian language spoken in northwestern Turkey and southwestern Georgia by the Laz people.", "A person from the ethnographic group Laz.", "Of or relating to Lazi or the Laz language.", "A South Caucasian ethnogaphic group in Turkey and Georgia."], "Laz Written": ["ISO 639-6 entity"], "Laz Written Georgian Script": ["ISO 639-6 entity"], "Laz Written Latin Script": ["Laz language written with the Latin Script."], "Laz Spoken": ["ISO 639-6 entity"], "Vitse-Arkabian": ["ISO 639-6 entity"], "Atina": ["ISO 639-6 entity"], "Ardeshenian": ["ISO 639-6 entity"], "Khopa": ["ISO 639-6 entity"], "Chkhala": ["ISO 639-6 entity"], "Georgian Cluster": ["ISO 639-6 entity"], "Imeruli": ["ISO 639-6 entity"], "Imeruli Spoken": ["ISO 639-6 entity"], "Imeretian": ["ISO 639-6 entity"], "Imerkhev": ["ISO 639-6 entity"], "Rachuli": ["ISO 639-6 entity"], "Rachuli Spoken": ["ISO 639-6 entity"], "Lechkhum": ["ISO 639-6 entity"], "Lechkhum Spoken": ["ISO 639-6 entity"], "Guruli": ["ISO 639-6 entity"], "Guruli Spoken": ["ISO 639-6 entity"], "Adzhar": ["A dialect of the Georgian language spoken in Adjara, an autonomous republic of Georgia."], "Georgian Written Georgian Script": ["ISO 639-6 entity"], "Georgian Spoken": ["Dialects of the Georgian language."], "Kharthuli-Formal": ["ISO 639-6 entity"], "Kharthuli": ["ISO 639-6 entity"], "Kakhuri": ["ISO 639-6 entity"], "Ingilo": ["ISO 639-6 entity"], "Tush": ["ISO 639-6 entity"], "Khevsur": ["ISO 639-6 entity"], "Mokhev": ["ISO 639-6 entity"], "Pshav": ["ISO 639-6 entity"], "Mtiul": ["ISO 639-6 entity"], "Ferejdan": ["ISO 639-6 entity"], "Judeo-Georgian": ["A Jewish South Caucasian language presently spoken in Israel, and to a lesser extent in Georgia. The only South Caucasian Jewish language."], "Svan Cluster": ["ISO 639-6 entity"], "Svan": ["A South Caucasian language spoken in Georgia.", "A person from the ethnographic group Svans.", "Of or relating to Svans or the Svan language."], "Svan Spoken": ["ISO 639-6 entity"], "Bal-NE": ["ISO 639-6 entity"], "Bal-SW": ["ISO 639-6 entity"], "Lashkhuri": ["ISO 639-6 entity"], "Lentekhuri": ["ISO 639-6 entity"], "Celtic": ["ISO 639-6 entity"], "Celtic Continental": ["ISO 639-6 entity"], "Lepontic": ["ISO 639-6 entity"], "Gaulish": ["ISO 639-6 entity", "Of or relating to Gaul."], "Galatian": ["ISO 639-6 entity"], "Celitberian": ["ISO 639-6 entity"], "Insular": ["ISO 639-6 entity"], "Goidelic": ["ISO 639-6 entity"], "Hiberno-Scottish Gaelic": ["An extinct language of United Kingdom"], "Hiberno-Scottish Gaelic Written": ["Written forms of the Hiberno-Scottish Gaelic language."], "Hiberno-Scottish Gaelic Written Latin Script": ["A written form of the Hiberno-Scottish Gaelic language."], "Gaelic (Scots)": ["ISO 639-6 entity"], "Gaelic (Scots) Written": ["Written forms of the Gaelic language."], "Gaelic (Scots) Written Latin Script": ["A written form of the Gaelic language."], "Gaelic (Scots) Written Latin Script Medieval": ["A written form of the Gaelic language."], "Gaelic (Scots) Written Latin Script Church": ["A written form of the Gaelic language."], "Gaelic (Scots) Written Latin Script Standardised": ["A written form of the Gaelic language."], "Gaelic (Scots) Spoken": ["ISO 639-6 entity"], "G\u00e0idhlig-NE": ["ISO 639-6 entity"], "G\u00e0idhlig-N": ["ISO 639-6 entity"], "Wester Ross": ["ISO 639-6 entity"], "Ross SW": ["ISO 639-6 entity"], "Ross NW": ["ISO 639-6 entity"], "Cataibhach": ["ISO 639-6 entity"], "Cataibhach NW": ["ISO 639-6 entity"], "Easter Ross Black Isle": ["ISO 639-6 entity"], "Easter Ross": ["ISO 639-6 entity"], "Black Isle": ["ISO 639-6 entity"], "Leodhaisach": ["ISO 639-6 entity"], "Lewis W": ["ISO 639-6 entity"], "Lewis N": ["ISO 639-6 entity"], "Lewis E": ["ISO 639-6 entity"], "Lewis SE": ["ISO 639-6 entity"], "Hearadhach": ["ISO 639-6 entity"], "Hearadhach N": ["ISO 639-6 entity"], "Scalpeigh": ["ISO 639-6 entity"], "Hearadhach S": ["ISO 639-6 entity"], "Hiort": ["ISO 639-6 entity"], "Uibhistach": ["ISO 639-6 entity"], "Uibhistach-N": ["ISO 639-6 entity"], "Bearnaraigh": ["ISO 639-6 entity"], "Beinn-Na-Faoghla": ["ISO 639-6 entity"], "Uibhistach-S": ["ISO 639-6 entity"], "Barraighach": ["ISO 639-6 entity"], "Sgianach": ["ISO 639-6 entity"], "Skye N": ["ISO 639-6 entity"], "Skye C": ["ISO 639-6 entity"], "Sleat": ["ISO 639-6 entity"], "Raasay": ["ISO 639-6 entity"], "Rhumach Eiggach": ["ISO 639-6 entity"], "Eiggach": ["ISO 639-6 entity"], "Rhumach": ["ISO 639-6 entity"], "Tiriodhach Muileach": ["ISO 639-6 entity"], "Collach": ["ISO 639-6 entity"], "Muileach": ["ISO 639-6 entity"], "Tiriodhach": ["ISO 639-6 entity"], "West Highlands Gaelic": ["ISO 639-6 entity"], "Murchan- M\u00f2rar": ["ISO 639-6 entity"], "West Loch Abar": ["ISO 639-6 entity"], "G\u00e0idhlig-SW": ["ISO 639-6 entity"], "Loch Leven-Lios Mor": ["ISO 639-6 entity"], "Oban-Lorn": ["ISO 639-6 entity"], "Ileach": ["ISO 639-6 entity"], "Earra-Ghaidheal": ["ISO 639-6 entity"], "Cinn Tyre": ["ISO 639-6 entity"], "Aranach": ["ISO 639-6 entity"], "Central Highlands Gaelic": ["ISO 639-6 entity"], "Nis": ["ISO 639-6 entity"], "N\u00e0rann": ["ISO 639-6 entity"], "Strath Sp\u00e9": ["ISO 639-6 entity"], "B\u00e0ideanach": ["ISO 639-6 entity"], "Glen Dee": ["ISO 639-6 entity"], "G\u00e0idhlig Ann Am Peairt": ["ISO 639-6 entity"], "East Loch Aber": ["ISO 639-6 entity"], "G\u00e0idhlig-Na-Halba-Nuadh": ["ISO 639-6 entity"], "Cap Breton": ["ISO 639-6 entity"], "North Shore": ["ISO 639-6 entity"], "Mabou": ["ISO 639-6 entity"], "Early Modern Irish": ["ISO 639-6 entity"], "Early Modern Irish Written": ["Written forms of the Early Modern Irish language."], "Early Modern Irish Written Latin Script": ["A written form of the Early Modern Irish language."], "Irish Written": ["Written forms of the Irish language."], "Irish Written Latin Script": ["Irish language written with the Latin Script."], "Irish Spoken": ["Dialects of the Irish language."], "Gaeilge-\u00c9ire": ["ISO 639-6 entity"], "Gaeilge Ulster": ["ISO 639-6 entity"], "Gaeilge-NE": ["ISO 639-6 entity"], "Rathlin": ["ISO 639-6 entity"], "Antrim-Glens": ["ISO 639-6 entity"], "Sperrin": ["ISO 639-6 entity"], "Gaeilge-NW": ["ISO 639-6 entity"], "Ard-Macha": ["ISO 639-6 entity"], "D\u00fan-Na-Ngall NW": ["ISO 639-6 entity"], "Toraigh": ["ISO 639-6 entity"], "F\u00e0naid": ["ISO 639-6 entity"], "Cloch-Chionnaola": ["ISO 639-6 entity"], "Gaoth-Dobhair": ["ISO 639-6 entity"], "Na Rosa": ["ISO 639-6 entity"], "\u00c5rainn Mh\u00f3r": ["ISO 639-6 entity"], "Tir Chonaill-L\u00e1ir": ["ISO 639-6 entity"], "Shliabh-Tuaidh": ["ISO 639-6 entity"], "Gaeilge-W": ["ISO 639-6 entity"], "Maigh-Eo": ["ISO 639-6 entity"], "Lorras": ["ISO 639-6 entity"], "Cnoc-An-Daimh": ["ISO 639-6 entity"], "An Mhuirthead": ["ISO 639-6 entity"], "Acaill-An Corr\u00e1n": ["ISO 639-6 entity"], "Tuar Mhic \u00c8adaigh": ["ISO 639-6 entity"], "D\u00faiche Sheoighe": ["ISO 639-6 entity"], "R\u00e1th-Cairn": ["ISO 639-6 entity"], "Gaillimh": ["ISO 639-6 entity"], "Aran": ["ISO 639-6 entity"], "Gaeilge-S": ["ISO 639-6 entity"], "Ciarra\u00ed": ["ISO 639-6 entity"], "Corca-Dhuibne": ["ISO 639-6 entity"], "M\u00fascrai": ["ISO 639-6 entity"], "Cl\u00e9ire": ["ISO 639-6 entity"], "Corcaigh": ["ISO 639-6 entity"], "Phort-L\u00e1irge": ["ISO 639-6 entity"], "M\u00ed": ["ISO 639-6 entity"], "Manx Written": ["Written forms of the Manx language."], "Manx Written Latin Script Historical": ["Manx language written with the Latin Script."], "Manx Written Latin Script Modern": ["Manx language written with the Latin Script."], "Manx Spoken": ["Dialects of the Manx language."], "Revived Manx": ["ISO 639-6 entity"], "Manx Traditional": ["ISO 639-6 entity"], "Manninagh-NW": ["ISO 639-6 entity"], "Manninagh-SE": ["ISO 639-6 entity"], "Manninagh-S": ["ISO 639-6 entity"], "Brythonic Cluster": ["ISO 639-6 entity"], "Welsh Written": ["The written forms of the Welsh language."], "Welsh Written Latin Script Old": ["A written form of the Welsh language."], "Welsh Written Latin Script Middle": ["A written form of the Welsh language."], "Welsh Written Latin Script Pre-Modern": ["A written form of the Welsh language."], "Welsh Written Latin Script Modern": ["A written form of the Welsh language."], "Welsh Spoken": ["The dialects of the Welsh language."], "Cymraeg-N": ["A dialect of the Welsh language."], "Cymraeg-N Written": ["Written forms of the Cymraeg-N language."], "Cymraeg-N Written Latin Script": ["A written form of the Cymraeg-N language."], "Cymraeg-N Spoken": ["A dialect of the Welsh language."], "Cymraeg Sir-Gaernarfon": ["A dialect of the Welsh language."], "Lleyn": ["A dialect of the Welsh language."], "Bangor": ["A dialect of the Welsh language.", "A Welsh university city."], "Conwy": ["A dialect of the Welsh language."], "Eryi": ["A dialect of the Welsh language."], "Cymraeg-NE": ["A dialect of the Welsh language."], "Meirionydd": ["A dialect of the Welsh language."], "Drefaldwyn": ["A dialect of the Welsh language."], "Amwythig": ["A dialect of the Welsh language."], "Cymraeg-S": ["A dialect of the Welsh language."], "Cymraeg-S Written": ["Written forms of the Cymraeg-S language."], "Cymraeg-S Written Latin Script": ["A written form of the Cymraeg-S language."], "Cymraeg-S Spoken": ["A dialect of the Welsh language."], "Cymraeg-CS": ["A dialect of the Welsh language."], "Gwy Uchaf": ["A dialect of the Welsh language."], "Brycheiniog": ["A dialect of the Welsh language."], "Cymraeg-W": ["A dialect of the Welsh language."], "Aberystwyth": ["A dialect of the Welsh language."], "Aberteifi": ["A dialect of the Welsh language."], "Cymraeg-SW": ["ISO 639-6 entity"], "Caerfyrddin": ["ISO 639-6 entity"], "Llanymddyfri": ["ISO 639-6 entity"], "Llanelli": ["ISO 639-6 entity"], "Iaith Sir Benfro": ["ISO 639-6 entity"], "Preseli": ["ISO 639-6 entity"], "Ty Ddewi": ["ISO 639-6 entity"], "Cwm Gwuan": ["ISO 639-6 entity"], "Gwenhwyseg": ["A dialect of the Welsh language spoken in Gwent county."], "Tawe": ["A dialect of the Welsh language."], "Nedd": ["A dialect of the Welsh language."], "T\u00e2f Rhondda": ["A dialect of the Welsh language."], "Rhymni": ["A dialect of the Welsh language."], "Cymlish": ["A dialect of the Welsh language."], "Cymraeg \u00c9migr\u00e9": ["A dialect of the Welsh language."], "Lerpwi-Caerllion": ["A dialect of the Welsh language."], "Llundain": ["A dialect of the Welsh language."], "Cymraeg Americanaidd": ["A dialect of the Welsh language."], "Cymraeg-Y-Wladfa": ["A dialect of the Welsh language."], "Chubut Coast": ["A dialect of the Welsh language spoken in Argentina."], "Chubut Upstream": ["A dialect of the Welsh language spoken in Argentina."], "Cornish": ["A Celtic language spoken in Cornwall, Uk; it's an almost extinct language related to Welsh.", "Of or relating to Cornwall, the Cornish people, or the Cornish language.", "Of or relating to Cornish language.", "Of or relating to Cornwales or Cornish people."], "Cornish Written": ["The written versions of the Cornish language."], "Cornish Written Latin Script Old": ["The Cornish language written with the old Latin script."], "Cornish Written Latin Script Pre-Modern": ["The Cornish language written with the pre-moderm Latin script."], "Cornish Written Latin Script Modern": ["The Cornish language written with the modern Latin script."], "Cornish Spoken": ["The Cornish spoken language and its dialects."], "Modern Revived Cornish": ["A modernized version of the Cornish language spoken since the XXth century."], "Kemmyn": ["A modern dialect of the Cornish language."], "Breton Written": ["Written forms of the Breton language."], "Breton Written Latin Script Medieval": ["A written form of the Breton language."], "Breton Written Latin Script Pre-Modern": ["A written form of the Breton language."], "Breton Written Latin Script Modern": ["A written form of the Breton language."], "Breton Spoken": ["ISO 639-6 entity"], "Brezhoneg-Beleg": ["ISO 639-6 entity"], "Brezhoneg-Kerneweg": ["ISO 639-6 entity"], "Brezhoneg-Peurunvan": ["ISO 639-6 entity"], "Brezhoneg-Falhuneg": ["ISO 639-6 entity"], "Tregereg": ["ISO 639-6 entity"], "Tregereg Written": ["Written forms of the Tregereg language."], "Tregereg Written Latin Script": ["A written form of the Tregereg Written language."], "Tregereg-W": ["ISO 639-6 entity"], "Tregereg-C": ["ISO 639-6 entity"], "Tregereg-SE": ["ISO 639-6 entity"], "Goelo": ["ISO 639-6 entity"], "Leoneg": ["ISO 639-6 entity"], "Leoneg Written": ["ISO 639-6 entity"], "Leoneg Written Latin Script": ["Leoneg language written with the Latin Script."], "Batz": ["ISO 639-6 entity"], "Leoneg-E": ["ISO 639-6 entity"], "Leoneg-C": ["ISO 639-6 entity"], "Leoneg-W": ["ISO 639-6 entity"], "Uchant": ["ISO 639-6 entity"], "Mol\u00e8ne": ["ISO 639-6 entity"], "Kerneweg": ["ISO 639-6 entity"], "Kerneweg Written": ["Written forms of the Kerneweg language."], "Kerneweg Written Latin Script": ["A written form of the Kerneweg language."], "Kerneweg-NE": ["ISO 639-6 entity"], "Kerneweg-N": ["ISO 639-6 entity"], "Kerneweg-NW": ["ISO 639-6 entity"], "Kerneweg-W": ["ISO 639-6 entity"], "S\u00e9nan": ["ISO 639-6 entity"], "Kerneweg-SW": ["ISO 639-6 entity"], "Kerneweg-SE": ["ISO 639-6 entity"], "Gwenedeg-W": ["ISO 639-6 entity"], "Gwenedeg-E": ["ISO 639-6 entity"], "Gwenedeg-E Written": ["Written forms of the Gwenedeg-E dialect of Breton."], "Gwenedeg-E Written Latin Script": ["A written form of the Gwenedeg-E dialect of Breton."], "Gwenedeg-E Spoken": ["The dialects of the Gwenedeg-E language."], "Vannes": ["A dialect of the Gwenedeg-E language."], "Groix": ["A dialect of the Gwenedeg-E language."], "Houat": ["A dialect of the Gwenedeg-E language."], "Shelta": ["ISO 639-6 entity"], "Shelta Spoken": ["ISO 639-6 entity"], "Sheldruu-W": ["ISO 639-6 entity"], "American Travellers\u2019 Cant": ["ISO 639-6 entity"], "Australian Travellers\u2019 Cant": ["ISO 639-6 entity"], "Sheldruu\u2013N": ["ISO 639-6 entity"], "Central Sudanic ": ["A grouping of languages of the Nilo-Saharan language family spoken in the Central African Republic, Chad, Sudan, Uganda, and Congo (DRC)."], "Central Sudanic West": ["A group of Central Sudanic languages."], "Bongo Bagirmi": ["ISO 639-6 entity"], "Sara Bagirmi": ["ISO 639-6 entity"], "Birri": ["A language of Central African Republic"], "Birri Spoken": ["The spoken variant of the Birri language"], "Mboto": ["ISO 639-6 entity"], "Munga": ["ISO 639-6 entity"], "Fongoro": ["A language of Chad."], "Bagirmi Cluster": ["ISO 639-6 entity"], "Bagirmi": ["A Nilo-Saharan language spoken by the Baguirmi people mainly in the Chari-Baguirmi Prefecture of Chad. It was the language of the kingdom of Baguirmi."], "Bagirmi Written": ["The written versions of the Bagirmi language."], "Bagirmi Written Latin Script": ["The Bagirmi language written with the Latin script."], "Bagirmi Spoken": ["The Bagirmi spoken language and its dialects."], "Gol": ["A dialect of the Bagirmi language."], "Kibar": ["A dialect of the Bagirmi language."], "Bangri": ["A dialect of the Bagirmi language."], "Dam": ["A dialect of the Bagirmi language."], "Masenya": ["A dialect of the Bagirmi language."], "Buso": ["A dialect of the Bagirmi language.", "ISO 639-6 entity"], "Barma-W": ["A dialect of the Bagirmi language."], "Berakou": ["A language of Chad."], "Berakou Spoken": ["ISO 639-6 entity"], "Gulfey": ["ISO 639-6 entity"], "Lairi": ["ISO 639-6 entity"], "Bolo Djarma": ["ISO 639-6 entity"], "Mondogossou": ["ISO 639-6 entity"], "Manawadji": ["ISO 639-6 entity"], "Yiryo": ["ISO 639-6 entity"], "Naba": ["ISO 639-6 entity"], "Naba Spoken": ["ISO 639-6 entity"], "Kuka": ["ISO 639-6 entity"], "Kuka Spoken": ["ISO 639-6 entity"], "Masakori": ["ISO 639-6 entity"], "Batha": ["ISO 639-6 entity"], "Ras-El-Fil": ["ISO 639-6 entity"], "Bilala": ["ISO 639-6 entity"], "Bilala Spoken": ["ISO 639-6 entity"], "Kodoi": ["ISO 639-6 entity", "ISO 639-6 entity"], "Kodoi Spoken": ["ISO 639-6 entity", "ISO 639-6 entity"], "Kenga": ["A language of Chad."], "Kenga Written": ["ISO 639-6 entity"], "Kenga Spoken": ["ISO 639-6 entity"], "Bidjir": ["ISO 639-6 entity"], "Tar-Cenge": ["ISO 639-6 entity"], "Tar-Binama": ["ISO 639-6 entity"], "Tar-Binama Spoken": ["ISO 639-6 entity"], "Tar-Bolongo": ["ISO 639-6 entity"], "Tar-Bolongo Spoken": ["ISO 639-6 entity"], "Bernde": ["A language of Chad."], "Bernde Spoken": ["The spoken Amdang language and its dialects."], "Jaya": ["A language of Chad."], "Jaya Spoken": ["ISO 639-6 entity"], "Disa": ["ISO 639-6 entity", "A language of Chad."], "Disa Spoken": ["ISO 639-6 entity"], "Sara": ["ISO 639-6 entity"], "Sara Proper": ["ISO 639-6 entity"], "Murum": ["ISO 639-6 entity"], "Murum Spoken": ["ISO 639-6 entity"], "Ngambay": ["ISO 639-6 entity"], "Ngambay Written": ["ISO 639-6 entity"], "Ngambay Spoken": ["ISO 639-6 entity"], "Lara": ["ISO 639-6 entity", "One of the 23 states (estados) into which Venezuela is divided. Its capital is Barquisimeto."], "Benoye": ["ISO 639-6 entity"], "Kere": ["ISO 639-6 entity", "ISO 639-6 entity"], "Bemar": ["ISO 639-6 entity"], "Bemar Spoken": ["ISO 639-6 entity"], "Mbai-Doba": ["ISO 639-6 entity"], "Mango": ["ISO 639-6 entity"], "Mango Written": ["ISO 639-6 entity"], "Mango Spoken": ["ISO 639-6 entity"], "Mbai-Koro": ["ISO 639-6 entity"], "Gor": ["A language of Chad."], "Gor Written": ["ISO 639-6 entity"], "Gor Spoken": ["ISO 639-6 entity"], "Yamod": ["ISO 639-6 entity"], "Laka": ["A language of the Central African Republic and Chad", "A language of Nigeria."], "Laka Written": ["ISO 639-6 entity"], "Laka Spoken": ["ISO 639-6 entity"], "Laka-Ba\u00efbokoum": ["ISO 639-6 entity"], "Laka-W": ["ISO 639-6 entity"], "Laka-SE": ["ISO 639-6 entity"], "Mbay": ["ISO 639-6 entity"], "Mbay Written": ["ISO 639-6 entity"], "Mbay Written Latin Script": ["Mbay language written with the Latin Script."], "Mbay Spoken": ["ISO 639-6 entity"], "B\u00e9mour": ["ISO 639-6 entity"], "Ma\u03cangao": ["ISO 639-6 entity"], "Goula": ["ISO 639-6 entity"], "Pa\u03ca": ["ISO 639-6 entity"], "Mbai-Kan": ["ISO 639-6 entity"], "Mbai-Kan Spoken": ["ISO 639-6 entity"], "Dagba": ["A language of Central African Republic and Chad"], "Dagba Spoken": ["ISO 639-6 entity"], "Sar": ["ISO 639-6 entity"], "Sar Spoken": ["ISO 639-6 entity"], "Majingay": ["ISO 639-6 entity"], "Nar": ["ISO 639-6 entity"], "No (Sara)": ["ISO 639-6 entity"], "Peni": ["ISO 639-6 entity"], "Bedjond": ["A language of Chad."], "Bedjond Spoken": ["The spoken Bedjond language and its dialects."], "B\u00e9bote": ["A dialect of the Bedjond language."], "Yom": ["A dialect of the Bedjond language."], "Gulay": ["A language of Chad."], "Gulay Spoken": ["ISO 639-6 entity"], "Lai": ["ISO 639-6 entity"], "Koumra": ["ISO 639-6 entity"], "Sahr": ["ISO 639-6 entity"], "Gula (Chad)": ["ISO 639-6 entity"], "Ngam": ["ISO 639-6 entity", "ISO 639-6 entity"], "Ngam Spoken": ["ISO 639-6 entity", "ISO 639-6 entity"], "Ngam Tel": ["ISO 639-6 entity"], "Ngam Tira": ["ISO 639-6 entity"], "Kon Ngam": ["ISO 639-6 entity"], "Kle": ["ISO 639-6 entity"], "Ngam Gir Bor": ["ISO 639-6 entity"], "Gama": ["ISO 639-6 entity"], "Sara-Kaba Cluster": ["ISO 639-6 entity"], "Kaba": ["A language of Central African Republic and Chad.", "ISO 639-6 entity"], "Kaba Spoken": ["ISO 639-6 entity"], "Kaba-Pawa": ["ISO 639-6 entity"], "Kaba-Ba\u00efbokum": ["ISO 639-6 entity"], "Sara Dunjo": ["A language of Central African Republic"], "Sara Dunjo Spoken": ["The dialects of the Sara Dunjo language."], "Kuki": ["A dialecta of the Sara Dunjo language."], "Markunda": ["A dialecta of the Sara Dunjo language."], "Kaba Deme": ["A language of Chad."], "Sime": ["ISO 639-6 entity"], "Kuruwer": ["ISO 639-6 entity"], "Bumayga": ["ISO 639-6 entity"], "Boho": ["ISO 639-6 entity"], "Jaha": ["ISO 639-6 entity"], "Ndoko": ["ISO 639-6 entity"], "Kulfa": ["A language of Chad."], "Kulfa Spoken": ["ISO 639-6 entity"], "Kumi": ["ISO 639-6 entity"], "Male": ["ISO 639-6 entity"], "Kurumi": ["ISO 639-6 entity"], "Soko": ["ISO 639-6 entity"], "Sara Kaba": ["ISO 639-6 entity"], "Kaba Na": ["A language of Chad"], "Kaba Na Spoken": ["ISO 639-6 entity"], "Dunje": ["ISO 639-6 entity"], "Na": ["ISO 639-6 entity"], "Dana": ["ISO 639-6 entity"], "Banga": ["ISO 639-6 entity"], "Tye": ["ISO 639-6 entity"], "Jinge": ["ISO 639-6 entity"], "Joko": ["ISO 639-6 entity"], "Horo": ["An extinct language of Chad."], "Vale-Lutos Cluster": ["ISO 639-6 entity"], "Lutos": ["ISO 639-6 entity"], "Lutos Spoken": ["ISO 639-6 entity"], "Wada": ["ISO 639-6 entity"], "Konga": ["ISO 639-6 entity"], "Vale-A": ["ISO 639-6 entity"], "Vale-Dagba": ["ISO 639-6 entity"], "Nduka": ["ISO 639-6 entity"], "Tana": ["ISO 639-6 entity", "ISO 639-6 entity", "A dialect of the Dahalo language.", "The longest river in Kenya."], "Tele": ["ISO 639-6 entity"], "Tele Spoken": ["ISO 639-6 entity"], "Kara": ["The presumed language of the Gaya confederacy (1st to 6th century CE) in the south of the Korean peninsula.", "A language of Central African Republic.", "An Austronesian language spoken in the Kavieng District of New Ireland Province, Papua New Guinea."], "Gula (Central African Republic)": ["ISO 639-6 entity"], "Gula (Central African Republic) Spoken": ["ISO 639-6 entity"], "Mele": ["ISO 639-6 entity"], "Mot-Mar": ["ISO 639-6 entity"], "Mere": ["ISO 639-6 entity"], "Kara Southern": ["ISO 639-6 entity"], "Kara Southern Spoken": ["ISO 639-6 entity"], "Nguru": ["ISO 639-6 entity"], "Bubu": ["ISO 639-6 entity"], "Yulu": ["ISO 639-6 entity"], "Yulu Spoken": ["The dialects of the Yulu language."], "Yulu-W": ["A dialect of the Yulu language."], "Yulu-E": ["A dialect of the Yulu language."], "Binga": ["ISO 639-6 entity"], "Binga Spoken": ["ISO 639-6 entity"], "Binga-N": ["ISO 639-6 entity"], "Binga-S": ["ISO 639-6 entity"], "Furu": ["A language of Democratic Republic of the Congo and the Central Afican Republic"], "Furu Spoken": ["ISO 639-6 entity"], "Sinyar": ["ISO 639-6 entity"], "Sinyar Spoken": ["ISO 639-6 entity"], "Bongo-Baka Cluster": ["ISO 639-6 entity"], "Baka (Sudan)": ["ISO 639-6 entity"], "Baka (Sudan) Written": ["ISO 639-6 entity"], "Baka (Sudan) Spoken": ["ISO 639-6 entity"], "Bongo": ["A Central Sudanic language spoken by the Bongo people in sparsely populated areas of South Sudan."], "Bongo Written": ["The written forms of the Bongo language."], "Sinyar Written Latin Script": ["The Bongo language written with the Latin script."], "Bongo Spoken": ["The Bongo spoken language and its dialects."], "Busere-Bongo": ["A dialect of the Bongo language."], "Tonj-Bongo": ["A dialect of the Bongo language."], "Bungo": ["ISO 639-6 entity"], "Bungo Spoken": ["ISO 639-6 entity"], "Morokodo-Beli Cluster": ["ISO 639-6 entity"], "Beli (Sudan)": ["ISO 639-6 entity"], "Beli Spoken": ["The dialects of the Beli language.", "The Bideyat spoken language and its dialects."], "Wulu": ["ISO 639-6 entity"], "Wulu Spoken": ["ISO 639-6 entity"], "Bahri-Girinti": ["ISO 639-6 entity"], "Bahri-Girinti Spoken": ["ISO 639-6 entity"], "Sopi": ["ISO 639-6 entity"], "Sopi Spoken": ["ISO 639-6 entity"], "Jur-Modo": ["ISO 639-6 entity"], "Jur-Modo Written": ["ISO 639-6 entity"], "Jur-Modo Spoken": ["ISO 639-6 entity"], "Modo-Lali": ["ISO 639-6 entity"], "Modo-Kirim": ["ISO 639-6 entity"], "Lori": ["ISO 639-6 entity"], "Lori Spoken": ["ISO 639-6 entity"], "Wira": ["ISO 639-6 entity"], "Wira Spoken": ["ISO 639-6 entity"], "Mittu": ["ISO 639-6 entity"], "Morokodo-Mo\u2019da Cluster": ["ISO 639-6 entity"], "Nyamusa-Molo": ["ISO 639-6 entity"], "Nyamusa-Molo Spoken": ["ISO 639-6 entity"], "Nyamusa": ["ISO 639-6 entity"], "Nyamusa Spoken": ["ISO 639-6 entity"], "Molo": ["ISO 639-6 entity", "ISO 639-6 entity"], "Molo Spoken": ["ISO 639-6 entity", "ISO 639-6 entity"], "Mo'da": ["A language of Sudan."], "Mo\u2019da Spoken": ["The dialects of the mo'da language."], "Morokodo": ["ISO 639-6 entity"], "Biti": ["ISO 639-6 entity"], "M\u00e4du": ["ISO 639-6 entity"], "Kresh": ["ISO 639-6 entity"], "Gbaya (Sudan)": ["ISO 639-6 entity"], "Dongo": ["ISO 639-6 entity"], "Naka": ["ISO 639-6 entity"], "Gbaya-Ngbongbo": ["ISO 639-6 entity"], "Gbaya-Ndogo": ["ISO 639-6 entity"], "Gbaya-Gboko": ["ISO 639-6 entity"], "Gbaya-Dara": ["ISO 639-6 entity"], "Aja (Sudan)": ["A Nilo-Saharan language of the Central Sudanic subgroup, spoken in the southern Sudanese province of Bahr el Ghazal and along the Sudanese border in the Central African Republic."], "Orlo": ["ISO 639-6 entity"], "Central Sudanic East": ["A group of Central Sudanic languages."], "Moru-Madi Cluster": ["ISO 639-6 entity"], "Moru-Madi North": ["ISO 639-6 entity"], "Moru": ["ISO 639-6 entity"], "Moru Spoken": ["ISO 639-6 entity"], "Miza": ["ISO 639-6 entity"], "Kala-K\u00e4diro-Si": ["ISO 639-6 entity"], "Kadiro-E": ["ISO 639-6 entity"], "Laka-Madi": ["ISO 639-6 entity"], "Andri": ["ISO 639-6 entity"], "B\u00e4lib\u00e4": ["ISO 639-6 entity"], "Kala-\u00c4gi": ["ISO 639-6 entity"], "Wadi-Ti": ["ISO 639-6 entity"], "Moru-Madi Central": ["ISO 639-6 entity"], "Avokaya": ["A language of Sudan and the Democratic Republic of the Congo"], "Odzila-Ti": ["ISO 639-6 entity"], "Ajiga-Ti": ["ISO 639-6 entity"], "Logo": ["A language of Democratic Republic of the Congo."], "Logo Spoken": ["ISO 639-6 entity"], "Oga-Muru": ["ISO 639-6 entity"], "Lolya": ["ISO 639-6 entity"], "Tabulaga": ["ISO 639-6 entity"], "Tabuloba": ["ISO 639-6 entity"], "Obi-Lebha": ["ISO 639-6 entity"], "Bhagira": ["ISO 639-6 entity"], "Doka": ["ISO 639-6 entity", "ISO 639-6 entity"], "Ogambi": ["ISO 639-6 entity"], "B\u00e4ri-Ti": ["ISO 639-6 entity"], "Dida- Dogo": ["ISO 639-6 entity"], "Dida- Dogo Spoken": ["ISO 639-6 entity"], "Didi": ["ISO 639-6 entity"], "Dogo": ["ISO 639-6 entity"], "Keliko": ["ISO 639-6 entity"], "Keliko Spoken": ["ISO 639-6 entity"], "Keliko-W": ["ISO 639-6 entity"], "Keliko-E": ["ISO 639-6 entity"], "Omi": ["ISO 639-6 entity"], "Aringa": ["ISO 639-6 entity"], "Kulu-Ti": ["ISO 639-6 entity"], "Andre-Leba-Ti": ["ISO 639-6 entity"], "Andre-Leba-Ti Spoken": ["The dialects of the Andre-Leba-Ti language."], "Andre-Leba-N": ["A dialect of the Andre-Leba-Ti language."], "Andre-Leba-S": ["A dialect of the Andre-Leba-Ti language."], "Lugbara": ["A language of the Democratic Republic of the Congo and Uganda."], "Vura- Aluru": ["ISO 639-6 entity"], "Vura- Aluru Spoken": ["ISO 639-6 entity"], "Vura- Opia": ["ISO 639-6 entity"], "Otsho": ["ISO 639-6 entity"], "Aluru": ["ISO 639-6 entity"], "Padzulu": ["ISO 639-6 entity"], "Nyo": ["ISO 639-6 entity"], "Zaki- Maratsa": ["ISO 639-6 entity"], "Maratsa": ["A dialect of the Zaki-Maratsa language."], "Zaki": ["A dialect of the Zaki-Maratsa language."], "Moru-Madi South": ["ISO 639-6 entity"], "Southern Ma\u2019di ": ["ISO 639-6 entity"], "Okollo": ["ISO 639-6 entity"], "Ogoko": ["ISO 639-6 entity"], "Rigbo": ["ISO 639-6 entity"], "Ma\u2019di": ["A Moru\u2013Madi language spoken by the Ma'di people in Magwi County in the Sudan, and in Adjumani and Moyo districts in Uganda."], "Moyo": ["ISO 639-6 entity"], "Oyuwi": ["ISO 639-6 entity"], "Lokai": ["ISO 639-6 entity"], "Pandikeri": ["ISO 639-6 entity"], "Burulo": ["ISO 639-6 entity"], "Olu\u2019bo": ["ISO 639-6 entity"], "Ki-Mangbetu Cluster": ["ISO 639-6 entity"], "Mangbetu": ["ISO 639-6 entity"], "Na-Meje-Ti": ["ISO 639-6 entity"], "Na-Meje-Ti Spoken": ["ISO 639-6 entity"], "Rungu": ["ISO 639-6 entity"], "Nala": ["ISO 639-6 entity"], "Telly": ["ISO 639-6 entity"], "Nepoko": ["ISO 639-6 entity"], "Na-Makere-Ti": ["ISO 639-6 entity"], "Ba-Kango": ["ISO 639-6 entity"], "Na-Ma-Popoi-Ti": ["ISO 639-6 entity"], "Na-Aberu-Ti": ["ISO 639-6 entity"], "Na-Mabisanga": ["ISO 639-6 entity"], "Ma-Ngbele": ["ISO 639-6 entity"], "Ma-Ngbele Spoken": ["ISO 639-6 entity"], "Watsa": ["ISO 639-6 entity"], "Gombari": ["ISO 639-6 entity"], "Na-Majuu": ["ISO 639-6 entity"], "Lombi": ["A language of Democratic Republic of the Congo."], "Asoa": ["A language of Democratic Republic of the Congo."], "Mangbutu Efe": ["ISO 639-6 entity"], "Amengi": ["ISO 639-6 entity"], "Amengi Spoken": ["The dialects of the Amengi language."], "Muledre ": ["A dialect of the Amengi language."], "Maijiru": ["A dialect of the Amengi language."], "Mamvu": ["ISO 639-6 entity"], "Mamvu Spoken": ["ISO 639-6 entity"], "Karuka- Lendu": ["ISO 639-6 entity"], "Mamvu-Kebo": ["ISO 639-6 entity"], "Mari- Minza": ["ISO 639-6 entity"], "Andobi": ["ISO 639-6 entity"], "Bari": ["A language of Sudan and Uganda.", "A province in the Apulia (or Puglia) region of Italy."], "Mamvu-Karo": ["ISO 639-6 entity"], "Ande-Gofa": ["ISO 639-6 entity"], "Lese": ["A language of Democratic Republic of the Congo."], "Lese Spoken": ["ISO 639-6 entity"], "Lese-Otsodu": ["ISO 639-6 entity"], "N-Dese": ["ISO 639-6 entity"], "Andali": ["ISO 639-6 entity"], "Lese-Karo": ["ISO 639-6 entity"], "Obi": ["ISO 639-6 entity"], "Arumbi": ["ISO 639-6 entity"], "Fare": ["ISO 639-6 entity"], "Mvuba": ["ISO 639-6 entity"], "Mvuba Spoken": ["ISO 639-6 entity"], "Oicha": ["ISO 639-6 entity"], "Obi-Ye": ["ISO 639-6 entity"], "Mangbutu": ["ISO 639-6 entity"], "Mangbutu Spoken": ["ISO 639-6 entity"], "Mongbutu": ["ISO 639-6 entity"], "Mangbutu-Karo": ["ISO 639-6 entity"], "Mangbutu-Lobo": ["ISO 639-6 entity"], "Awimeri": ["ISO 639-6 entity"], "Awimeri Spoken": ["ISO 639-6 entity"], "Angwe": ["ISO 639-6 entity"], "Angwe Spoken": ["The dialects of the Angwe language."], "Makutana": ["ISO 639-6 entity"], "Makutana Spoken": ["ISO 639-6 entity"], "Andinai": ["ISO 639-6 entity"], "Andinai Spoken": ["The dialects of the Andinai language."], "Bamodo": ["ISO 639-6 entity"], "Bamodo Spoken": ["The dialects of the Bamodo language."], "Ndo": ["ISO 639-6 entity"], "Ndo Written": ["ISO 639-6 entity"], "Ndo Spoken": ["ISO 639-6 entity"], "Ke\u2019bu-Tu": ["ISO 639-6 entity"], "Ke\u2019bu-Tu Spoken": ["ISO 639-6 entity"], "Avari-Tu Spoken": ["ISO 639-6 entity"], "Membi": ["ISO 639-6 entity"], "Membi Spoken": ["ISO 639-6 entity"], "Ki-Lendu Cluster": ["ISO 639-6 entity"], "Lendu": ["A language of Democratic Republic of the Congo and Uganda"], "Lendu Written": ["ISO 639-6 entity"], "Lendu Spoken": ["ISO 639-6 entity"], "Jo-Dha": ["ISO 639-6 entity"], "Jo-Dha Spoken": ["ISO 639-6 entity"], "Bale-Dha": ["ISO 639-6 entity"], "Bale-Dha Spoken": ["ISO 639-6 entity"], "Go-Dha": ["ISO 639-6 entity"], "Go-Dha Spoken": ["ISO 639-6 entity"], "Ta-Dha": ["ISO 639-6 entity"], "Ta-Dha Spoken": ["ISO 639-6 entity"], "Pi-Dha": ["ISO 639-6 entity"], "Pi-Dha Spoken": ["ISO 639-6 entity"], "Ke-Dha": ["ISO 639-6 entity"], "Ke-Dha Spoken": ["ISO 639-6 entity"], "Ddra-Lo": ["ISO 639-6 entity"], "Ddra-Lo Spoken": ["ISO 639-6 entity"], "Njaw-Lo": ["ISO 639-6 entity"], "Njaw-Lo Spoken": ["ISO 639-6 entity"], "Lendu South": ["ISO 639-6 entity"], "N-Dru-Na": ["ISO 639-6 entity"], "N-Dru-Na Spoken": ["ISO 639-6 entity"], "Zadu": ["ISO 639-6 entity"], "Monobi": ["ISO 639-6 entity"], "Kabona": ["ISO 639-6 entity"], "Ngiti": ["ISO 639-6 entity"], "Ngiti Spoken": ["ISO 639-6 entity"], "Bendi": ["A language of Democratic Republic of the Congo."], "Bendi Spoken": ["ISO 639-6 entity"], "Chadic": ["A Afroasiatic language belonging to a language family spoken across northern Nigeria, Niger, Chad, Central African Republic and Cameroon, belonging to the Afroasiatic phylum."], "Chadic East Group B": ["ISO 639-6 entity"], "Dangala Complex": ["ISO 639-6 entity"], "Dangala Group 2 Cluster": ["ISO 639-6 entity"], "Masmaje": ["ISO 639-6 entity"], "Masmaje Spoken": ["ISO 639-6 entity"], "Zirenkel": ["ISO 639-6 entity"], "Zirenkel Spoken": ["The dialects of the Zirenkel language."], "Kajakse": ["A language of Chad."], "Kajakse Spoken": ["ISO 639-6 entity"], "Birgit": ["A language of Chad."], "Birgit Spoken": ["The dialects of the Birgit language."], "Abgue": ["A dialect of the Birgit language."], "Duguri": ["A dialect of the Birgit language."], "Agrab": ["A dialect of the Birgit language."], "Birgit E": ["A dialect of the Birgit language."], "Toram": ["ISO 639-6 entity"], "Toram Spoken": ["ISO 639-6 entity"], "Dangala Group 1 Cluster": ["ISO 639-6 entity"], "Jonkor Bourmataguil": ["A language of Chad."], "Jonkor Bourmataguil Spoken": ["ISO 639-6 entity"], "mogum": ["ISO 639-6 entity"], "Mogum Spoken": ["ISO 639-6 entity"], "Mogum-E": ["ISO 639-6 entity"], "Mogum-E Spoken": ["ISO 639-6 entity"], "Mogum-W": ["ISO 639-6 entity"], "Mogum-W Spoken": ["ISO 639-6 entity"], "Jegu": ["ISO 639-6 entity"], "Jegu Spoken": ["ISO 639-6 entity"], "Mabire": ["ISO 639-6 entity"], "Mabire Spoken": ["ISO 639-6 entity"], "Bidiyo": ["A Chadic language spoken in Chad, in the departments of Gu\u00e9ra, south of Mongo."], "Bidiyo Written": ["The written forms of the Bidiyo language."], "Bidiyo Spoken": ["The spoken Bidiyo language and its dialects."], "Garaw-Gino": ["A dialect of the bidiyo language."], "Jek-Kino": ["A dialect of the bidiyo language."], "Waana": ["ISO 639-6 entity"], "Waana Spoken": ["ISO 639-6 entity"], "Bigaw-Guno": ["ISO 639-6 entity"], "Nal-Guno": ["ISO 639-6 entity"], "Oboy-Guno": ["ISO 639-6 entity"], "Migaama": ["ISO 639-6 entity"], "Migaama Spoken": ["ISO 639-6 entity"], "Dambiya": ["ISO 639-6 entity"], "Gamiya": ["ISO 639-6 entity"], "Doga": ["ISO 639-6 entity", "A language of Papua New Guinea."], "Dangal\u00e9at": ["A Chadic language spoken in Chad, in the departments of Abtouyour and Gu\u00e9ra, between Bitkine and Mongo."], "Dangal\u00e9at Written": ["ISO 639-6 entity"], "Dangal\u00e9at Spoken": ["ISO 639-6 entity"], "Bogrom": ["ISO 639-6 entity"], "Bara": ["ISO 639-6 entity", "ISO 639-6 entity", "An ethnicity in central southern Madagascar speaking the Bara Malagasy dialect."], "Korlongo": ["ISO 639-6 entity"], "Tialo-Zoudou": ["ISO 639-6 entity"], "Dangla-C": ["ISO 639-6 entity"], "Dangla-C Spoken": ["ISO 639-6 entity"], "Bokare": ["ISO 639-6 entity"], "Tyoro": ["ISO 639-6 entity", "ISO 639-6 entity"], "Adougoul": ["ISO 639-6 entity"], "Barlo": ["ISO 639-6 entity"], "Dangla-W": ["ISO 639-6 entity"], "Dangla-W Spoken": ["ISO 639-6 entity"], "Aranha": ["ISO 639-6 entity"], "Korbo": ["ISO 639-6 entity"], "Gole": ["ISO 639-6 entity"], "Tialo-Ideba": ["ISO 639-6 entity"], "Mawa (Chad)": ["ISO 639-6 entity"], "Ubi": ["ISO 639-6 entity"], "Mukulu": ["ISO 639-6 entity"], "Segin-Ki": ["ISO 639-6 entity"], "Doli-Ki": ["ISO 639-6 entity"], "Mori-Ko": ["ISO 639-6 entity"], "Mezim-Ko": ["ISO 639-6 entity"], "Gugi-Ko": ["ISO 639-6 entity"], "Samrai Cluster": ["ISO 639-6 entity"], "Barein": ["A language of Chad."], "Barein Spoken": ["The dialects of the Barein language."], "Jalkia": ["A dialect of the Barein language."], "Guilia": ["A dialect of the Barein language."], "Sokoro": ["ISO 639-6 entity"], "Sokoro Spoken": ["ISO 639-6 entity"], "Bedanga": ["ISO 639-6 entity"], "Saba": ["ISO 639-6 entity", "An island in the Caribbean Netherlands, which is a part of the Kingdom of the Netherlands \\n\\n(Coordinates: 17\u00b0 38\u2032 0\u2033 N, 63\u00b0 14\u2032 0\u2033 W)"], "Tamki": ["ISO 639-6 entity"], "Somrai": ["An East Chadic language spoken in the southwestern Chadian prefectures of Tandjil\u00e9 and Lai."], "Somrai Group 2 Cluster": ["ISO 639-6 entity"], "Sarua": ["ISO 639-6 entity"], "Gadang": ["ISO 639-6 entity"], "Miltu": ["An East Chadic language spoken in southwestern Chad."], "Boor": ["A language of Chad."], "Somrai Group 1 Cluster": ["ISO 639-6 entity"], "ndam": ["ISO 639-6 entity"], "Dik-Ndam": ["ISO 639-6 entity"], "Ndam-Ndam": ["ISO 639-6 entity"], "Mawer": ["ISO 639-6 entity"], "Mire": ["ISO 639-6 entity"], "Tumak": ["ISO 639-6 entity"], "Nancere": ["ISO 639-6 entity", "ISO 639-6 entity"], "Nancere Group 1 Cluster": ["ISO 639-6 entity"], "kimr\u00e9": ["ISO 639-6 entity"], "Kimr-Uwa": ["ISO 639-6 entity"], "Bordo": ["ISO 639-6 entity"], "Tchere-Aiba": ["ISO 639-6 entity"], "Nancere Group 2": ["ISO 639-6 entity"], "gabri": ["ISO 639-6 entity"], "Moonde": ["ISO 639-6 entity"], "Dormo": ["ISO 639-6 entity"], "Darbe": ["ISO 639-6 entity"], "Tobanga": ["ISO 639-6 entity"], "Kabalai": ["A language of Chad."], "Lele (Chad)": ["ISO 639-6 entity"], "Kera Cluster": ["ISO 639-6 entity"], "Kwang": ["A language of Chad."], "Ngam-A": ["ISO 639-6 entity"], "Aloa": ["ISO 639-6 entity"], "Modgel": ["ISO 639-6 entity"], "Tchagin": ["ISO 639-6 entity"], "Mobu": ["ISO 639-6 entity"], "Masa Cluster": ["ISO 639-6 entity"], "masana": ["ISO 639-6 entity"], "Yagwa": ["ISO 639-6 entity"], "Domo": ["ISO 639-6 entity"], "Walya": ["ISO 639-6 entity"], "Bugudum": ["ISO 639-6 entity"], "Viri": ["ISO 639-6 entity"], "Gizay": ["ISO 639-6 entity"], "Bongor-N": ["ISO 639-6 entity"], "Gumay": ["ISO 639-6 entity"], "Ham": ["ISO 639-6 entity"], "May-Mbara": ["ISO 639-6 entity"], "Zumaya": ["ISO 639-6 entity"], "Musey": ["ISO 639-6 entity"], "Musey Spoken": ["ISO 639-6 entity"], "Bongor-S": ["ISO 639-6 entity"], "Ngame": ["ISO 639-6 entity"], "Jaraw-Domo": ["ISO 639-6 entity"], "Lew": ["ISO 639-6 entity"], "Marba": ["ISO 639-6 entity"], "Monogoy": ["ISO 639-6 entity"], "mesme": ["ISO 639-6 entity"], "Bero": ["ISO 639-6 entity"], "Zamre": ["ISO 639-6 entity"], "Pala-Wa": ["ISO 639-6 entity"], "Sorga": ["ISO 639-6 entity"], "Ngete": ["ISO 639-6 entity"], "Ngoy": ["ISO 639-6 entity"], "Batna ": ["ISO 639-6 entity"], "Herd": ["ISO 639-6 entity"], "Cimiang": ["ISO 639-6 entity"], "Taari": ["ISO 639-6 entity"], "P\u00e9vs\u00e9": ["ISO 639-6 entity"], "P\u00e9v\u00e9 Spoken": ["ISO 639-6 entity"], "Lame": ["A language of Chad and Cameroon.", "A language of Nigeria."], "Doe": ["ISO 639-6 entity"], "Gidar": ["A language of Cameroon and Chad."], "Gidar Spoken": ["ISO 639-6 entity"], "Lam": ["ISO 639-6 entity"], "Lam Spoken": ["ISO 639-6 entity"], "Chadic West Group A": ["ISO 639-6 entity"], "Bole Angas": ["ISO 639-6 entity"], "Bole Tangale": ["ISO 639-6 entity"], "Tangale Complex": ["ISO 639-6 entity"], "Dera (Nigeria)": ["ISO 639-6 entity"], "Dera (Nigeria) Written": ["ISO 639-6 entity"], "Dera (Nigeria) Spoken": ["ISO 639-6 entity"], "Shani": ["ISO 639-6 entity"], "Kiri": ["ISO 639-6 entity"], "Kiri Spoken": ["ISO 639-6 entity"], "Gasi": ["ISO 639-6 entity"], "Gasi Spoken": ["ISO 639-6 entity"], "Tangale Proper Cluster": ["ISO 639-6 entity"], "Tangale": ["ISO 639-6 entity"], "Tangale Written": ["ISO 639-6 entity"], "Tangale Spoken": ["ISO 639-6 entity"], "Ture": ["ISO 639-6 entity"], "Biliri": ["ISO 639-6 entity"], "Biliri Spoken": ["ISO 639-6 entity"], "Kaltungo": ["ISO 639-6 entity"], "Kaltungo Spoken": ["ISO 639-6 entity"], "Shongom": ["ISO 639-6 entity"], "Shongom Spoken": ["ISO 639-6 entity"], "Pero": ["A West Chadic language spoken in the south-west of Billiri in the Gombe State of Nigeria."], "Kushi": ["A language of Nigeria.", "ISO 639-6 entity"], "Kushi Spoken": ["ISO 639-6 entity"], "Piya-Kwonci": ["ISO 639-6 entity"], "Piya-Kwonci Written": ["ISO 639-6 entity"], "Piya-Kwonci Spoken": ["ISO 639-6 entity"], "Piya": ["ISO 639-6 entity"], "Kwonci": ["ISO 639-6 entity"], "Kutto": ["A language of Nigeria."], "Kutto Spoken": ["ISO 639-6 entity"], "Kwaami": ["A language of Nigeria."], "Kwaami Spoken": ["ISO 639-6 entity"], "Bole Complex": ["ISO 639-6 entity"], "Bure": ["A language of Nigeria."], "Bure Spoken": ["ISO 639-6 entity"], "Bole Proper Cluster": ["ISO 639-6 entity"], "Maaka": ["ISO 639-6 entity"], "Maaka Spoken": ["ISO 639-6 entity"], "Bole": ["A Western Chadic language spoken by the Bole people in Yobe and Gombe States of northeastern Nigeria."], "Bole Written": ["The written forms of the Bole language."], "Bole Spoken": ["The Bole spoken language and its dialects."], "Bor-Pika": ["ISO 639-6 entity"], "Bor-Pika Spoken": ["ISO 639-6 entity"], "Ngara": ["ISO 639-6 entity"], "Ngara Spoken": ["ISO 639-6 entity"], "Beele": ["A language of Nigeria."], "Ngamo": ["ISO 639-6 entity"], "Ngamo Spoken": ["ISO 639-6 entity"], "Giiwo": ["A language of Nigeria."], "Giiwo Spoken": ["ISO 639-6 entity"], "Kubi": ["ISO 639-6 entity", "ISO 639-6 entity"], "Deno": ["A language of Nigeria."], "Deno-N": ["ISO 639-6 entity"], "Deno-S": ["ISO 639-6 entity"], "Galambu": ["ISO 639-6 entity", "A language of Nigeria."], "Gera": ["A language of Nigeria"], "Gera Spoken": ["ISO 639-6 entity"], "Geruma": ["A language of Nigeria."], "Geruma Spoken": ["ISO 639-6 entity"], "Surum": ["ISO 639-6 entity"], "Duurum": ["ISO 639-6 entity"], "Geruma-Bauchi": ["ISO 639-6 entity"], "Geruma-Bauchi Spoken": ["ISO 639-6 entity"], "Geruma-Darazo": ["ISO 639-6 entity"], "Geruma-Darazo Spoken": ["ISO 639-6 entity"], "Kholok": ["A language of Nigeria."], "Kholok Spoken": ["ISO 639-6 entity"], "Nyam": ["ISO 639-6 entity"], "Nyam Spoken": ["ISO 639-6 entity"], "Karekare": ["A language of Nigeria."], "Karekare Written": ["ISO 639-6 entity"], "Karekare Spoken": ["ISO 639-6 entity"], "Birkai": ["ISO 639-6 entity"], "Kwarta Mataci": ["ISO 639-6 entity"], "Jalalum": ["ISO 639-6 entity"], "Jalalum Spoken": ["ISO 639-6 entity"], "Pakaro": ["ISO 639-6 entity"], "Pakaro Spoken": ["ISO 639-6 entity"], "Ngwajum": ["ISO 639-6 entity"], "Ngwajum Spoken": ["ISO 639-6 entity"], "Chadic West Group B": ["ISO 639-6 entity"], "Bade Warji": ["ISO 639-6 entity"], "Bade": ["A language of Nigeria.", "ISO 639-6 entity"], "Bade Proper Cluster": ["ISO 639-6 entity"], "Ngizim": ["ISO 639-6 entity"], "Ngizim Spoken": ["ISO 639-6 entity"], "Gashua": ["ISO 639-6 entity"], "Gashua Spoken": ["ISO 639-6 entity"], "Mazgarwa": ["ISO 639-6 entity"], "Mazgarwa Spoken": ["ISO 639-6 entity"], "Bade-Kado": ["ISO 639-6 entity"], "Magwaram": ["ISO 639-6 entity"], "Magwaram Spoken": ["ISO 639-6 entity"], "Duwai": ["A language of Nigeria."], "Auyokawa": ["ISO 639-6 entity"], "Shirawa": ["ISO 639-6 entity"], "Mober": ["ISO 639-6 entity"], "Warji Cluster": ["ISO 639-6 entity"], "Warji": ["ISO 639-6 entity"], "Warji Spoken": ["ISO 639-6 entity"], "Gala": ["ISO 639-6 entity", "ISO 639-6 entity"], "Siri": ["ISO 639-6 entity"], "Siri Spoken": ["ISO 639-6 entity"], "Siri-N": ["ISO 639-6 entity"], "Siri-N Spoken": ["ISO 639-6 entity"], "Siri-S": ["ISO 639-6 entity"], "Siri-S Spoken": ["ISO 639-6 entity"], "Diri": ["A language of Nigeria."], "Diri-W": ["ISO 639-6 entity"], "Diri-E": ["ISO 639-6 entity"], "Ciwogai": ["ISO 639-6 entity"], "Pa'a": ["ISO 639-6 entity"], "Pa'a Written": ["ISO 639-6 entity"], "Pa'a Spoken": ["ISO 639-6 entity"], "Miya": ["ISO 639-6 entity"], "Miya Written": ["ISO 639-6 entity"], "Miya Spoken": ["ISO 639-6 entity"], "Faishang": ["ISO 639-6 entity"], "Fursum": ["ISO 639-6 entity"], "Federe": ["ISO 639-6 entity"], "Demshin": ["ISO 639-6 entity"], "Kariya": ["ISO 639-6 entity"], "Kariya Spoken": ["ISO 639-6 entity"], "Mburku": ["ISO 639-6 entity"], "Mburku Spoken": ["ISO 639-6 entity"], "Zumbun": ["ISO 639-6 entity"], "Zumbun Spoken": ["ISO 639-6 entity"], "Ajawa": ["ISO 639-6 entity"], "Jimi (Nigeria)": ["ISO 639-6 entity"], "Jimi (Nigeria) Spoken": ["ISO 639-6 entity"], "Zumo": ["ISO 639-6 entity"], "Zumo Spoken": ["ISO 639-6 entity"], "Zaar Complex": ["ISO 639-6 entity"], "Guruntum Cluster": ["ISO 639-6 entity"], "Guruntum- Mbaaru": ["ISO 639-6 entity"], "Guruntum- Mbaaru Spoken": ["ISO 639-6 entity"], "Dooka": ["ISO 639-6 entity"], "Gayar": ["ISO 639-6 entity"], "Karakara": ["ISO 639-6 entity"], "Kuuku": ["ISO 639-6 entity"], "Kuuku Spoken": ["ISO 639-6 entity"], "Guruntum": ["ISO 639-6 entity"], "Guruntum Spoken": ["ISO 639-6 entity"], "Mbaaru": ["ISO 639-6 entity"], "Mbaaru Spoken": ["ISO 639-6 entity"], "Ju": ["A language of Nigeria."], "Ju Spoken": ["ISO 639-6 entity"], "Zangwal": ["ISO 639-6 entity"], "Tala Spoken": ["ISO 639-6 entity"], "Luri": ["A language of Nigeria.", "An Indo-European language spoken by 3.5 million people mostly in western Iran and eastern Iraq."], "Luri Spoken": ["ISO 639-6 entity"], "Zaar Proper Cluster": ["ISO 639-6 entity"], "Geji": ["A language of Nigeria."], "Geji Spoken": ["ISO 639-6 entity"], "Bolu": ["ISO 639-6 entity"], "Bolu Spoken": ["ISO 639-6 entity"], "Magong": ["ISO 639-6 entity"], "Magong Spoken": ["ISO 639-6 entity"], "Pelu": ["ISO 639-6 entity"], "Pelu Spoken": ["ISO 639-6 entity"], "Zaranda": ["ISO 639-6 entity"], "Buu": ["ISO 639-6 entity"], "Buu Spoken": ["ISO 639-6 entity"], "Polci": ["ISO 639-6 entity"], "Polci Written": ["ISO 639-6 entity"], "Polci Spoken": ["ISO 639-6 entity"], "Zul": ["ISO 639-6 entity"], "M-Barmi": ["ISO 639-6 entity"], "M-Barmi Spoken": ["ISO 639-6 entity"], "M-Baram": ["ISO 639-6 entity"], "M-Baram Spoken": ["ISO 639-6 entity"], "Diir": ["ISO 639-6 entity"], "Diir Spoken": ["ISO 639-6 entity"], "Dra": ["ISO 639-6 entity"], "Dra Spoken": ["ISO 639-6 entity"], "Buli": ["ISO 639-6 entity", "A language of Indonesia (Maluku)."], "Buli Spoken": ["ISO 639-6 entity"], "Langas": ["ISO 639-6 entity"], "Langas Spoken": ["ISO 639-6 entity"], "Nyamzax": ["ISO 639-6 entity"], "Nyamzax Spoken": ["ISO 639-6 entity"], "Lundur": ["ISO 639-6 entity"], "Lundur Spoken": ["ISO 639-6 entity"], "Zumbul": ["ISO 639-6 entity"], "Zumbul Spoken": ["ISO 639-6 entity"], "Boodla": ["ISO 639-6 entity"], "Boodla Spoken": ["ISO 639-6 entity"], "Dass": ["ISO 639-6 entity"], "Dass Spoken": ["ISO 639-6 entity"], "Wandi": ["ISO 639-6 entity"], "Wandi Spoken": ["ISO 639-6 entity"], "Lukshi": ["ISO 639-6 entity"], "Lukshi Spoken": ["ISO 639-6 entity"], "Durr": ["ISO 639-6 entity"], "Durr Spoken": ["ISO 639-6 entity"], "Baraza": ["ISO 639-6 entity"], "Baraza Spoken": ["The dialects of the Baraza language."], "Zeem": ["ISO 639-6 entity"], "Zeem Spoken": ["The dialects of the Zeem language."], "Tulai": ["ISO 639-6 entity"], "Tulai Spoken": ["ISO 639-6 entity"], "Danshe": ["ISO 639-6 entity"], "Danshe Spoken": ["ISO 639-6 entity"], "Chaari": ["ISO 639-6 entity"], "Chaari Spoken": ["ISO 639-6 entity"], "Zakshi": ["ISO 639-6 entity"], "Zakshi Spoken": ["The dialects of the Zakshi language."], "Zari": ["ISO 639-6 entity"], "Zari Spoken": ["The dialects of the Zari language."], "Kopti": ["ISO 639-6 entity"], "Kopti Spoken": ["ISO 639-6 entity"], "Kwapm": ["ISO 639-6 entity"], "Kwapm Spoken": ["ISO 639-6 entity"], "Boto": ["ISO 639-6 entity"], "Boto Spoken": ["ISO 639-6 entity"], "Saya": ["ISO 639-6 entity"], "Saya Spoken": ["ISO 639-6 entity"], "Sigidi": ["ISO 639-6 entity"], "Sigidi Spoken": ["ISO 639-6 entity"], "Vikzar": ["ISO 639-6 entity"], "Vikzar Spoken": ["ISO 639-6 entity"], "Kal": ["ISO 639-6 entity"], "Kal Spoken": ["ISO 639-6 entity"], "Gambar-Leere": ["ISO 639-6 entity"], "Gambar-Leere Spoken": ["ISO 639-6 entity"], "Lusa": ["ISO 639-6 entity"], "Lusa Spoken": ["ISO 639-6 entity"], "Boghom Complex": ["ISO 639-6 entity"], "Kir-Bala Cluster": ["ISO 639-6 entity"], "Kir": ["ISO 639-6 entity"], "Kir Spoken": ["ISO 639-6 entity"], "Bala Spoken": ["ISO 639-6 entity"], "Mangas": ["ISO 639-6 entity"], "Mangas Spoken": ["ISO 639-6 entity"], "Boghom": ["A language of Nigeria."], "Boghom Written": ["ISO 639-6 entity"], "Boghom Spoken": ["The dialects of the Boghom language."], "Angas": ["ISO 639-6 entity", "An Afro-Asiatic language spoken by the Anga people in Plateau State, Nigeria."], "Angas Proper Complex": ["ISO 639-6 entity"], "Yiwom": ["ISO 639-6 entity"], "Angas Proper Group 1 Cluster": ["ISO 639-6 entity"], "Ngas": ["An Afro-Asiatic language spoken by the Anga people in Plateau State, Nigeria."], "N-Ngas-W": ["ISO 639-6 entity"], "N-Ngas-W Spoken": ["ISO 639-6 entity"], "Pankshin": ["ISO 639-6 entity"], "Wukkos": ["ISO 639-6 entity"], "Garram": ["ISO 639-6 entity"], "N-Ngas-E": ["ISO 639-6 entity"], "N-Ngas-E Spoken": ["ISO 639-6 entity"], "Kabwir": ["ISO 639-6 entity"], "Amper": ["ISO 639-6 entity"], "Mwaghavul": ["ISO 639-6 entity"], "Mwaghavul Written": ["ISO 639-6 entity"], "Mwaghavul Spoken": ["ISO 639-6 entity"], "Mapun": ["A language of the Philippines."], "Mapun Spoken": ["ISO 639-6 entity"], "Panyam": ["ISO 639-6 entity"], "Panyam Spoken": ["ISO 639-6 entity"], "Cakfem-Mushere": ["A language of Nigeria."], "Cakfem-Mushere Spoken": ["The dialects of the Cakfem-Mushere language."], "Jajura": ["A dialect of the Cakfem-Mushere language."], "Kadim-Kaban": ["A dialect of the Cakfem-Mushere language."], "Mushere": ["ISO 639-6 entity"], "Mushere Spoken": ["ISO 639-6 entity"], "Kofyar": ["A language of Nigeria."], "Kofyar Written": ["ISO 639-6 entity"], "Kofyar Spoken": ["ISO 639-6 entity"], "Kwagallak": ["ISO 639-6 entity"], "Kwagallak Spoken": ["ISO 639-6 entity"], "Dimmuk": ["ISO 639-6 entity"], "Dimmuk Spoken": ["ISO 639-6 entity"], "Mirriam": ["ISO 639-6 entity"], "Mirriam Spoken": ["ISO 639-6 entity"], "Bwol": ["ISO 639-6 entity"], "Bwol Spoken": ["ISO 639-6 entity"], "Gworam": ["ISO 639-6 entity"], "Gworam Spoken": ["The dialects of the Gworam language."], "Jipal": ["ISO 639-6 entity"], "Jipal Spoken": ["ISO 639-6 entity"], "Jorto": ["A language of Nigeria."], "Jorto Spoken": ["ISO 639-6 entity"], "Miship": ["ISO 639-6 entity"], "Angas Proper Group 2 Cluster": ["ISO 639-6 entity"], "Goemai": ["An Afro-Asiatic language spoken in the Plateau state of Central Nigeria by the Goemai people."], "Tal": ["ISO 639-6 entity"], "Kwabzak": ["ISO 639-6 entity"], "Pyapun": ["ISO 639-6 entity"], "Montol": ["ISO 639-6 entity"], "Baltap": ["ISO 639-6 entity"], "Koenoem": ["A language of Nigeria."], "Ron Complex": ["ISO 639-6 entity"], "Fyer": ["A language of Nigeria."], "Tambas": ["ISO 639-6 entity", "ISO 639-6 entity"], "Ron Proper Cluster": ["ISO 639-6 entity"], "Daffo- Batura": ["ISO 639-6 entity"], "Daffo- Batura Spoken": ["ISO 639-6 entity"], "Daffo": ["ISO 639-6 entity"], "Batura": ["ISO 639-6 entity"], "Nafunia": ["ISO 639-6 entity"], "Shagawu": ["ISO 639-6 entity"], "Maleni": ["ISO 639-6 entity"], "Mangar": ["ISO 639-6 entity"], "Monguna": ["ISO 639-6 entity"], "Ron": ["A language of Nigeria."], "Ron Spoken": ["ISO 639-6 entity"], "Bokkos-A": ["ISO 639-6 entity"], "Chala": ["ISO 639-6 entity", "A language of Ghana."], "Daffo-Butura": ["ISO 639-6 entity"], "Sha": ["ISO 639-6 entity"], "Mundat": ["ISO 639-6 entity"], "Duhwa": ["A language of Nigeria."], "Kulere": ["An Afro-Asiatic language spoken in Plateau State, Nigeria."], "Richa": ["A dialect of the Kulere language."], "Ambul": ["ISO 639-6 entity"], "Tof": ["A dialect of the Kulere language."], "Hausa Cluster": ["ISO 639-6 entity"], "Gwandara": ["A language of Nigeria."], "Karshi": ["ISO 639-6 entity"], "Kyankyara": ["ISO 639-6 entity"], "Toni": ["ISO 639-6 entity"], "Koro": ["ISO 639-6 entity", "A dialect of the Daasanach language.", "A language of Vanuatu.", "A language of Papua New Guinea."], "Gitata": ["ISO 639-6 entity"], "Nimbia": ["ISO 639-6 entity"], "Hausa Written": ["Written forms of the Hausa language."], "Hausa Spoken": ["Dialects of the Hausa language."], "Hausa-Formal": ["ISO 639-6 entity"], "Hausa-E": ["ISO 639-6 entity"], "Kano": ["ISO 639-6 entity", "The second largest city in Nigeria after Lagos and the capital of Kano State."], "Hadejiya": ["ISO 639-6 entity"], "Katagum": ["ISO 639-6 entity"], "Hausa-C": ["ISO 639-6 entity"], "Hausa-N": ["ISO 639-6 entity"], "Hausa-V": ["ISO 639-6 entity"], "Barikanchi": ["A language of Nigeria."], "Chukchi-Kamchatkan": ["ISO 639-6 entity"], "Chukchi-Kamchatkan Northern": ["ISO 639-6 entity"], "Chukchi Cluster": ["ISO 639-6 entity"], "Chukot": ["A Palaeosiberian language spoken by Chukchi people in the easternmost extremity of Siberia, mainly in Chukotka Autonomous Okrug."], "Chukot Written": ["The written forms of the Chukot language."], "Chukot Written Cyrillic Script": ["A written form of the Chukot language."], "Chukot Spoken": ["The dialects of the Chukot language."], "Chukot-Formal": ["A dialect of the Chukot language."], "Uellan": ["A dialect of the Chukot language."], "Pevek": ["A dialect of the Chukot language."], "Enmylin": ["A dialect of the Chukot language."], "Nunligran": ["A dialect of the Chukot language."], "Xatyr": ["A dialect of the Chukot language."], "Chaun": ["A dialect of the Chukot language."], "Enurmin": ["A dialect of the Chukot language."], "Yanrakinot": ["A dialect of the Chukot language."], "Koryak Alutor Cluster": ["ISO 639-6 entity"], "Kerek": ["A Chukotko-Kamchatkan language spoken around the Bearing Sea in Russia."], "Kerek Written": ["The written forms of the Kerek language."], "Kerek Written Cyrillic Script": ["The Kerek language written with the Cyrillic script."], "Kerek Spoken": ["The dialects of the Kerek language."], "Mayna-Pilgin": ["A dialect of the Kerek language."], "Khatyrka": ["A dialect of the Kerek language."], "Koryak": ["A Chukotko-Kamchatkan language spoken by the Koryak people (Koryak) in the easternmost extremity of Siberia, mainly in Koryak Okrug."], "Koryak Written": ["ISO 639-6 entity"], "Koryak Written Cyrillic Script": ["ISO 639-6 entity"], "Koryak Spoken": ["ISO 639-6 entity"], "Koryak-Formal": ["ISO 639-6 entity"], "Gin": ["ISO 639-6 entity"], "Xatyrskij": ["ISO 639-6 entity"], "Chavchuven": ["ISO 639-6 entity"], "Apokin": ["ISO 639-6 entity"], "Kamen": ["ISO 639-6 entity"], "Palan": ["ISO 639-6 entity"], "Itkan": ["ISO 639-6 entity"], "Alutor": ["A language of the Chukotkan branch spoken in the northern part of the Kamchatka Peninsula, Russia."], "Alutor Written": ["The written forms of the Alutor language."], "Alutor Written Cyrillic Script": ["The Alutor language written with the Cyrillic script."], "Alutor Spoken": ["The Alutor spoken language and its dialects."], "Alutor-Proper": ["A dialect of the Alutor language."], "Ukin": ["A language of Russia (Asia)."], "Karagin": ["A dialect of the Alutor language."], "Palana": ["A dialect of the Alutor language."], "Chukchi-Kamchatkan Southern": ["ISO 639-6 entity"], "Itelmen": ["A language of Russia (Asia)"], "Itelmen Written": ["ISO 639-6 entity"], "Itelmen Written Cyrillic Script": ["ISO 639-6 entity"], "Itelmen Spoken": ["ISO 639-6 entity"], "Sedanka": ["ISO 639-6 entity"], "Kharyuzovskiy": ["ISO 639-6 entity"], "Xayryuz": ["ISO 639-6 entity"], "Napan": ["ISO 639-6 entity"], "Sopocnov": ["ISO 639-6 entity"], "Cushitic": ["A branch of the Afroasiatic language family spoken in the Horn of Africa, Tanzania, Kenya, Sudan and Egypt."], "Cushtic Proper": ["ISO 639-6 entity"], "Cushtic Central": ["ISO 639-6 entity"], "Cushtic Central North Complex": ["ISO 639-6 entity"], "Bilin-Xamta Cluster": ["ISO 639-6 entity"], "Senhit": ["ISO 639-6 entity"], "Halhal": ["ISO 639-6 entity"], "Qimant": ["A Central Cushitic language language spoken by a small fraction of the Qemant people in Northern Ethiopia mainly in Chilga Woreda in Semien Gondar Zone between Gondar and Metemma."], "Qimant Written": ["Written versions of the Qimant language."], "Qimant Written Ethiopic Script": ["Qimant language written with the Ethiopic Script."], "Qimant Spoken": ["The dialects of the Qimant language."], "Kemant": ["A dialect of the Qimant language."], "Semyen": ["A dialect of the Qimant language."], "Achpar": ["A dialect of the Qimant language."], "Ci'elga": ["A dialect of the Qimant language."], "Karkar": ["A dialect of the Qimant language."], "Dembiya": ["ISO 639-6 entity"], "Kwara": ["ISO 639-6 entity"], "Kwara-Addis": ["ISO 639-6 entity"], "Xamtanga": ["ISO 639-6 entity"], "Xamtanga Spoken": ["ISO 639-6 entity"], "Xamta": ["ISO 639-6 entity"], "Xamir": ["ISO 639-6 entity"], "Waag": ["ISO 639-6 entity"], "Soqota ": ["ISO 639-6 entity"], "Abergelle-Agaw": ["ISO 639-6 entity"], "Abergelle-Agaw Spoken": ["The dialects of the Abergelle-Agaw Spoken language."], "Cushtic Central South": ["ISO 639-6 entity"], "Awngi": ["A language of Ethiopia"], "Awngi Spoken": ["The Awngi spoken language and its dialects."], "Dangla": ["A dialect of the Awngi language."], "Damot": ["A dialect of the Awngi language."], "Metekkel": ["A dialect of the Awngi language."], "Agew-Midir": ["A dialect of the Awngi language."], "Kunfel": ["ISO 639-6 entity"], "Kunfel Spoken": ["ISO 639-6 entity"], "Eastern Cushtic": ["ISO 639-6 entity"], "Eastern Cushtic Lowland": ["ISO 639-6 entity"], "Afar Saho Cluster": ["ISO 639-6 entity"], "Saho": ["ISO 639-6 entity"], "Saho Written": ["Written forms of the Saho language."], "Saho Written Arabic Script": ["ISO 639-6 entity"], "Saho Written Latin Script": ["A written form of the Saho language."], "Saho Written Ethiopic Script": ["ISO 639-6 entity"], "Saho Spoken": ["ISO 639-6 entity"], "Assaorta": ["ISO 639-6 entity"], "Miniferi": ["ISO 639-6 entity"], "Irob": ["ISO 639-6 entity"], "Hazu": ["ISO 639-6 entity"], "Afar Written": ["The written forms of the Afar language."], "Afar Spoken": ["The dialects of the Afar language."], "Afar-NW": ["A dialect of the Afar language."], "Afar-C": ["A dialect of the Afar language."], "Afar-NE": ["A dialect of the Afar language."], "Ba'adu": ["A dialect of the Afar language."], "Aussa": ["A dialect of the Afar language."], "Eastern Cushtic Highland": ["ISO 639-6 entity"], "Kambata Hadiyya Cluster": ["ISO 639-6 entity"], "Hadiyya": ["ISO 639-6 entity"], "Hadiyya Written": ["Written forms of the Hadiyya language."], "Hadiyya Written Latin Script": ["A written form of the Hadiyya language."], "Hadiyya Written Ethiopic Script": ["ISO 639-6 entity"], "Hadiyya Spoken": ["The dialects of the Hadiyya language."], "Leemo": ["A dialect of the Hadiyya language."], "Shashago": ["A dialect of the Hadiyya language."], "Soro": ["A dialect of the Hadiyya language."], "Libido Spoken": ["ISO 639-6 entity"], "Libido-A": ["ISO 639-6 entity"], "Maroqo": ["ISO 639-6 entity"], "Timbara- Qebena": ["ISO 639-6 entity"], "Timbara- Qebena Spoken": ["ISO 639-6 entity"], "Timbara": ["ISO 639-6 entity"], "Qebena": ["ISO 639-6 entity"], "Kambaata": ["A language of Ethiopia."], "Kambaata Written": ["Written forms of the Kambaata language."], "Kambaata Written Latin Script": ["A written form of the Kambaata language."], "Kambaata Written Ethiopic Script": ["ISO 639-6 entity"], "Kambaata Spoken": ["ISO 639-6 entity"], "Alaba": ["A Cushitic language of Ethiopia"], "Alaba Written": ["Written forms of the Alaba language."], "Alaba Written Latin Script": ["Alaba language written with the Latin Script."], "Alaba Written Ethiopic Script": ["Alaba language written with the Ethiopic Script."], "Alaba Spoken": ["The dialects of the Alaba language."], "Sidaamo Written": ["Written forms of the Sidaamo language."], "Sidaamo Written Latin Script": ["Sidaamo language written with the Latin Script."], "Sidaamo Written Ethiopic Script": ["Sidaamo language written with the Ethiopic Script."], "Sidaamo Spoken": ["Dialects of the Sidaamo language."], "Sidaamo-N": ["ISO 639-6 entity"], "Sidaamo-SW": ["ISO 639-6 entity"], "Sidaamo-E": ["ISO 639-6 entity"], "Gedeo": ["A language of Ethiopia"], "Gedeo Written": ["ISO 639-6 entity"], "Gedeo Written Latin Script": ["Gedeo language written with the Latin Script."], "Gedeo Written Ethiopic Script": ["ISO 639-6 entity"], "Gedeo Spoken": ["ISO 639-6 entity"], "Gede'o-N": ["ISO 639-6 entity"], "Gede'o-S": ["ISO 639-6 entity"], "Burji": ["A cushitic language spoken in Ethiopia and Kenya", "One of the 79 woredas in the Southern Nations, Nationalities, and Peoples Region (SNNPR) of Ethiopia."], "Burji Written": ["Written forms of the Burji language."], "Burji Written Latin Script": ["Burji language written with the Latin Script."], "Burji Written Ethiopic Script": ["Burji language written with the Ethiopic Script."], "Burji Spoken": ["The dialects of the Burji language."], "Burji-A": ["A dialect of the Burji language."], "Hagere-Maryam": ["A dialect of the Burji language."], "Burji-Marsabit": ["A dialect of the Burji language."], "Yaakuan Dullay": ["ISO 639-6 entity"], "Dullay Cluster": ["ISO 639-6 entity"], "Go-Waze": ["ISO 639-6 entity"], "Go-Waze Spoken": ["ISO 639-6 entity"], "Bussa": ["A language of Ethiopia"], "Bussa Spoken": ["ISO 639-6 entity"], "Mashili": ["ISO 639-6 entity"], "Bussa-E": ["ISO 639-6 entity"], "Lohu": ["ISO 639-6 entity"], "Harso": ["ISO 639-6 entity"], "Harso Spoken": ["ISO 639-6 entity"], "Go-Lango": ["ISO 639-6 entity"], "Go-Lango Spoken": ["ISO 639-6 entity"], "Go-Rose": ["ISO 639-6 entity"], "Go-Rose Spoken": ["ISO 639-6 entity"], "Dihina": ["ISO 639-6 entity"], "Dihina Spoken": ["ISO 639-6 entity"], "Gaba": ["ISO 639-6 entity"], "Gaba Spoken": ["ISO 639-6 entity"], "Gergere": ["ISO 639-6 entity"], "Gergere Spoken": ["ISO 639-6 entity"], "Gawwada": ["A language of Ethiopia"], "Gawwada Written": ["Written forms of the Gawwada language."], "Gawwada Written Latin Script": ["A written form of the Gawwada language."], "Gawwada Written Ethiopic Script ": ["ISO 639-6 entity"], "Gawwada Spoken": ["ISO 639-6 entity"], "Dalpena": ["ISO 639-6 entity"], "Isharkuta": ["ISO 639-6 entity"], "Tsamai": ["ISO 639-6 entity"], "Tsamai Written": ["Written forms of the Tsamai language."], "Tsamai Written Latin Script": ["A written form of the Tsamai language."], "Tsamai Written Ethiopic Script": ["ISO 639-6 entity"], "Tsamai Spoken": ["ISO 639-6 entity"], "Dume": ["ISO 639-6 entity"], "Kuwile": ["ISO 639-6 entity"], "Yaaku Cluster": ["ISO 639-6 entity"], "Yaaku": ["ISO 639-6 entity"], "Yaaku Spoken": ["ISO 639-6 entity"], "Oromoid": ["ISO 639-6 entity"], "Konsoid Cluster": ["ISO 639-6 entity"], "Mosiya": ["ISO 639-6 entity"], "Mosiya Spoken": ["ISO 639-6 entity"], "Dirasha": ["A language of Ethiopia."], "Dirasha Spoken": ["ISO 639-6 entity"], "Mashile": ["ISO 639-6 entity"], "Mashile Spoken": ["ISO 639-6 entity"], "Gato": ["ISO 639-6 entity"], "Gato Spoken": ["ISO 639-6 entity"], "Turo": ["ISO 639-6 entity"], "Turo Spoken": ["ISO 639-6 entity"], "Komso": ["An East Cushitic language spoken in southwest Ethiopia."], "Komso Written": ["The written forms of the Komso language."], "Komso Written Latin Script": ["Komso language written with the Latin Script."], "Komso Written Ethiopic Script": ["ISO 639-6 entity"], "Komso Spoken": ["The dialects of the Komso language."], "Tulema": ["ISO 639-6 entity"], "Tulema Spoken": ["ISO 639-6 entity"], "Tulema-A": ["ISO 639-6 entity"], "Kereyu": ["ISO 639-6 entity"], "Selale": ["ISO 639-6 entity"], "West Central Oromo": ["A language of Ethiopia."], "West Central Oromo Written": ["The written forms of the West Central Oromo language."], "West Central Oromo Written Latin Script": ["A written form of the West Central Oromo language."], "West Central Oromo Spoken": ["The dialects of the West Central Oromo language."], "Mecha-A": ["A dialect of the West Central Oromo language."], "Wellegga": ["A dialect of the West Central Oromo language."], "Raya": ["ISO 639-6 entity"], "Raya Spoken": ["ISO 639-6 entity"], "Wello": ["ISO 639-6 entity"], "Wello Spoken": ["ISO 639-6 entity"], "Eastern Oromo": ["A language of Ethiopia."], "Eastern Oromo Spoken": ["The dialects of the Eastern Oromo language."], "Qottu-A": ["A dialect of the Eastern Oromo language."], "Nole": ["A dialect of the Eastern Oromo language."], "Jarso": ["A dialect of the Eastern Oromo language."], "Ala": ["A dialect of the Eastern Oromo language."], "Babile": ["A dialect of the Eastern Oromo language."], "Ania": ["A dialect of the Eastern Oromo language."], "Arusi": ["ISO 639-6 entity"], "Arusi Spoken": ["ISO 639-6 entity"], "Guji": ["ISO 639-6 entity"], "Guji Spoken": ["ISO 639-6 entity"], "Guji-A": ["ISO 639-6 entity"], "Jemjem": ["ISO 639-6 entity"], "Borana-Arsi-Guji Oromo": ["A language of Ethiopia, Kenia and Somalia."], "Borana-Arsi-Guji Oromo Spoken": ["The dialects of the Borana-Arsi-Guji Oromo language."], "Borena-A": ["A dialect of the Borana-Arsi-Guji Oromo language."], "Garreh-Ajuran": ["A language of Kenya."], "Garreh-Ajuran Spoken": ["The dialects of the Garreh-Ajuran language."], "Garre": ["A language of Somalia", "ISO 639-6 entity"], "Gabra": ["A dialect of the Garreh-Ajuran language."], "Sakuye": ["A dialect of the Garreh-Ajuran language."], "Ajuran": ["A dialect of the Garreh-Ajuran language."], "Orma": ["ISO 639-6 entity"], "Orma Written": ["ISO 639-6 entity"], "Orma Written Ethiopic Script": ["ISO 639-6 entity"], "Orma Spoken": ["ISO 639-6 entity"], "Orma-A": ["ISO 639-6 entity"], "Munyo": ["ISO 639-6 entity"], "Waata": ["ISO 639-6 entity"], "Sanye": ["A language of Kenya."], "Sanye Spoken": ["The dalects of the Sanye language."], "Omo-Tana": ["ISO 639-6 entity"], "Bayso Cluster": ["ISO 639-6 entity"], "Baiso": ["A language of Ethiopia."], "Baiso Spoken": ["The dialects of the Baiso language."], "Galaboid Cluster": ["ISO 639-6 entity"], "Arbore": ["ISO 639-6 entity", "A language of Ethiopia"], "Arbore Spoken": ["ISO 639-6 entity"], "Daasanach": ["A language of Ethiopia and Kenia"], "Daasanach Written": ["Written forms of the Daasanach language."], "Daasanach Written Latin Script": ["A written form of the Daasanach language."], "Daasanach Written Ethiopic Script": ["A written form of the Daasanach language."], "Daasanach Spoken": ["Dialects of the Daasanach language."], "Inkabelo": ["A dialect of the Daasanach language."], "Inkoria": ["A dialect of the Daasanach language."], "Naritch": ["A dialect of the Daasanach language."], "Elele": ["A dialect of the Daasanach language."], "Randal": ["A dialect of the Daasanach language."], "Oro": ["A dialect of the Daasanach language."], "Rele": ["A dialect of the Daasanach language."], "El Molo": ["A language of Kenya"], "El Molo Spoken": ["The dialects of the El Molo language."], "Sam": ["ISO 639-6 entity"], "Rendille": ["ISO 639-6 entity"], "Rendille Written": ["Written forms of the Rendille language."], "Rendille Written Latin Script": ["A written form of the Rendille language."], "Rendille Spoken": ["ISO 639-6 entity"], "Rudolf": ["ISO 639-6 entity"], "Marsabit": ["ISO 639-6 entity"], "Arial": ["ISO 639-6 entity"], "Somali-Aweer Cluster": ["ISO 639-6 entity"], "Boni": ["A language of Kenya and Somalia."], "Boni Written": ["The written forms of the Boni language."], "Boni Spoken": ["The dialects of the Boni language."], "Lamu": ["A dialects of the Boni language.", "A dialect of the Dahalo language."], "Juba": ["A dialects of the Boni language."], "Somali Written": ["ISO 639-6 entity"], "Somali Latin Script": ["A written form of the Somali language."], "somali Arabic Script": ["ISO 639-6 entity"], "somali Osmania Script": ["ISO 639-6 entity"], "Somali Spoken": ["ISO 639-6 entity"], "Af-Soomaali-G": ["ISO 639-6 entity"], "Af-Soomaali-G Spoken": ["The dialects of the Af-Soomaali-G language."], "Soomaali-Formal": ["A dialect of the Af-Soomaali-G language."], "Soomaali-V": ["A dialect of the Af-Soomaali-G language."], "Af-'Iise": ["ISO 639-6 entity"], "Af-'Iise Spoken": ["The dialects of the Af-'Iise language."], "Af-Geedabuursi": ["ISO 639-6 entity"], "Af-Geedabuursi Spoken": ["The dialects of the Af-Geedabuursi language."], "Af-Isaaq": ["ISO 639-6 entity"], "Af-Isaaq Spoken": ["The dialects of the Af-Isaaq language."], "Af-Daarood": ["ISO 639-6 entity"], "Af-Daarood Spoken": ["The dialects of the Af-Daarood language."], "Af-Majeerteen": ["A dialect of the Af-Daarood language."], "Af-Warsangeli": ["A dialect of the Af-Daarood language."], "Af-Dolbohaante": ["A dialect of the Af-Daarood language."], "Af-Ogadeen": ["A dialect of the Af-Daarood language."], "Af-Degodiya": ["A dialect of the Af-Daarood language."], "Af-Hawiyya": ["ISO 639-6 entity"], "Af-Hawiyya Spoken": ["The dialects of the Af-Hawiyya language."], "Af-Benaadir": ["ISO 639-6 entity"], "Af-Benaadir Spoken": ["The dialects of the Af-Benaadir language."], "Af-Benaadir-A": ["A dialect of the Af-Benaadir language."], "Af-Abgaal": ["A dialect of the Af-Benaadir language."], "Af-Gaaljaal": ["A dialect of the Af-Benaadir language."], "Af-Ashraaf": ["ISO 639-6 entity"], "Af-Ashraaf Spoken": ["The dialects of the Af-Ashraaf language."], "Af-Ajuraan": ["ISO 639-6 entity"], "Af-Ajuraan Spoken": ["The dialects of the Af-Ajuraan language."], "Af-Digil": ["ISO 639-6 entity"], "Af-Digil Spoken": ["The dialects of the Af-Digil language."], "Maay": ["ISO 639-6 entity"], "Maay Written": ["ISO 639-6 entity"], "Maay Written Latin Script": ["Maay language written with the Latin Script."], "Maay Spoken": ["ISO 639-6 entity"], "Tunni": ["ISO 639-6 entity"], "Tunni Written": ["Written forms of the Tunni language."], "Tunni Written Latin Script": ["A written form of the Tunni language."], "Tunni Spoken": ["ISO 639-6 entity"], "Jiddu": ["ISO 639-6 entity"], "Jiddu Spoken": ["ISO 639-6 entity"], "Af-Helledi": ["ISO 639-6 entity"], "Af-Helledi Spoken": ["The dialects of the Af-Helledi language."], "Dabarre": ["A language of Somalia."], "Dabarre Written": ["ISO 639-6 entity"], "Dabarre Spoken": ["ISO 639-6 entity"], "Af-Iroole": ["ISO 639-6 entity"], "Af-Iroole Spoken": ["The dialects of the Af-Iroole language."], "Boon": ["An East Cushitic language spoken by a few people in Jilib District, Middle Jubba Region, Somalia."], "Boon Spoken": ["The Boon spoken language and its dialects."], "Garre Written": ["ISO 639-6 entity"], "Garre Written Latin Script": ["Garre language written with the Latin Script."], "Garre Spoken": ["ISO 639-6 entity"], "Cushtic South": ["ISO 639-6 entity"], "Cushtic South Rift": ["ISO 639-6 entity"], "Cushtic South Rift West": ["ISO 639-6 entity"], "Iraqw": ["ISO 639-6 entity"], "Iraqw Written": ["ISO 639-6 entity"], "Iraqw Spoken": ["ISO 639-6 entity"], "Asa": ["ISO 639-6 entity"], "Gorowa": ["A language of Tanzania."], "Gorowa Written": ["The written forms of the Gorowa language."], "Alagwa": ["A Cushitic language spoken in the Dodoma region of Tanzania."], "Burunge": ["A language of Tanzania."], "Cushtic South Rift East": ["ISO 639-6 entity"], "Kw\u2019adza": ["ISO 639-6 entity"], "Aas\u00e1x": ["A language of Tanzania."], "Ma'a Cluster": ["ISO 639-6 entity"], "Mbugu": ["ISO 639-6 entity"], "Mbugu Spoken": ["ISO 639-6 entity"], "Cha Ndani": ["ISO 639-6 entity"], "Cha Kawaida": ["ISO 639-6 entity"], "Dahalo Cluster": ["ISO 639-6 entity"], "Dahalo": ["A language of Kenya"], "Dahalo Spoken": ["The dialects of the Dahalo language."], "Indic": ["A language family originating from India, Pakistan, Bangladesh, Nepal, Sri Lanka and the Maldives."], "Northern India": ["ISO 639-6 entity"], "Dardic": ["A sub-group of the Indo-Aryan languages spoken in northern Pakistan, eastern Afghanistan, and the Indian region of Jammu and Kashmir."], "Kunar": ["ISO 639-6 entity"], "Northwest Pashayi": ["A language of Afghanistan."], "Gulbahar": ["ISO 639-6 entity"], "Sanjan": ["ISO 639-6 entity"], "Bolaghain": ["ISO 639-6 entity"], "Nangarach": ["ISO 639-6 entity"], "Parya": ["ISO 639-6 entity"], "Alingar": ["ISO 639-6 entity"], "Laurowan": ["ISO 639-6 entity"], "Shutul": ["ISO 639-6 entity"], "Alasai": ["ISO 639-6 entity"], "Shamakot": ["ISO 639-6 entity"], "Uzbin": ["ISO 639-6 entity"], "Pandau": ["ISO 639-6 entity"], "Najil": ["ISO 639-6 entity"], "Parazhghan": ["ISO 639-6 entity"], "Wadau": ["ISO 639-6 entity"], "Wadau Spoken": ["ISO 639-6 entity"], "Pachagan": ["ISO 639-6 entity"], "Southeast Pashayi": ["ISO 639-6 entity"], "Kohnadeh": ["ISO 639-6 entity"], "Darrai-Nur": ["ISO 639-6 entity"], "Darrai-Nur Spoken": ["ISO 639-6 entity"], "Bamba-Kot": ["ISO 639-6 entity"], "Lamatek": ["ISO 639-6 entity"], "Sutan": ["ISO 639-6 entity"], "Pashagar": ["ISO 639-6 entity"], "Grangali": ["A Kunar language spoken in Afghanistan."], "Nangalami": ["A Kunar language spoken in Afghanistan."], "Zemiaki": ["A dialect of Nangalami spoken in the Kunar region of Afghanistan."], "Wegal": ["ISO 639-6 entity"], "Gawar-Bati": ["A Dardic language spoken in the Kunar Province of Afghanistan."], "Narsati": ["A dialect of the Gawar-Bati language."], "Arandui": ["A dialect of the Gawar-Bati language."], "Shumasti": ["ISO 639-6 entity"], "Northeast Pashayi": ["A language of Afghanistan"], "Northeast Pashayi Spoken": ["The Northeast Pashayi spoken language and its dialects."], "Aret": ["A dialect of the Northeast Pashayi language."], "Kurdar": ["A dialect of the Northeast Pashayi language."], "Kandak": ["A dialect of the Northeast Pashayi language."], "Shemul": ["A dialect of the Northeast Pashayi language."], "Chalas": ["ISO 639-6 entity"], "Southwest Pashayi": ["A Pashayi language spoken Northeast of Kabul in Afghanistan."], "Tagau-A": ["A dialect of the Southwest Pashayi language."], "Ishpi": ["A dialect of the Southwest Pashayi language."], "Isken": ["A dialect of the Southwest Pashayi language."], "Dameli": ["A Dardic language spoken in the Domel Valley, in the Chitral District of Khyber-Pakhtunkhwa province of Pakistan."], "Dameli Spoken": ["The dialects of the Dameli language."], "Shintari": ["A dialect of the Dameli language."], "Swati": ["A dialect of the Dameli language.", "A language of Swaziland, Lesotho, Mozambique and South Africa."], "Khowar": ["A Dardic language spoken in Chitral, Pakistan."], "Kho-War-N": ["A dialect of the Khowar language."], "Kho-War-S": ["A dialect of the Khowar language."], "Khowar-E": ["A dialect of the Khowar language."], "Arniya": ["A dialect of the Khowar language."], "Patu": ["A dialect of the Khowar language."], "Qashqari": ["A dialect of the Khowar language."], "Kalasha": ["A Dardic language spoken in the Chitral District of Pakistan."], "Kalasha Spoken": ["ISO 639-6 entity"], "Kalasha-N": ["ISO 639-6 entity"], "Kalasha-S": ["ISO 639-6 entity"], "Dardic-Central": ["ISO 639-6 entity"], "Wotapuri-Katarqalai": ["ISO 639-6 entity"], "Wotapuri": ["ISO 639-6 entity"], "Katarqalai": ["ISO 639-6 entity"], "Tirahi": ["ISO 639-6 entity"], "Kalami": ["A language of Pakistan."], "Kalami Spoken": ["Dialects of the Kalami language."], "Kalami-A": ["A dialect of the Kalami language."], "Ushu": ["A dialect of the Kalami language."], "Thal": ["A dialect of the Kalami language."], "Lamuti": ["A dialect of the Kalami language."], "Patrak": ["A dialect of the Kalami language."], "Dashwa": ["A dialect of the Kalami language."], "Kalkoti": ["ISO 639-6 entity"], "Indus Kohistani": ["ISO 639-6 entity"], "Mani": ["ISO 639-6 entity"], "Mani Spoken": ["ISO 639-6 entity"], "Mani-A": ["ISO 639-6 entity"], "Patan": ["ISO 639-6 entity"], "Seo": ["ISO 639-6 entity"], "Jijal": ["ISO 639-6 entity"], "Manzeri": ["ISO 639-6 entity"], "Manzeri Spoken": ["ISO 639-6 entity"], "Duberi": ["ISO 639-6 entity"], "Kandia": ["ISO 639-6 entity"], "Chilisso": ["A language of Pakistan"], "Chilisso Spoken": ["Dialects of the Chilisso language."], "Gowro": ["A language of Pakistan."], "Gowro Spoken": ["Dialects of the Gowro language."], "Bateri": ["A language of Pakistan and India"], "Bateri Spoken": ["Dialects of the Bateri language."], "Torwali": ["ISO 639-6 entity"], "Behrain": ["ISO 639-6 entity"], "Behrain Spoken": ["The dialects of the Behrain language."], "Chail": ["ISO 639-6 entity"], "Savi": ["ISO 639-6 entity"], "Phalura": ["ISO 639-6 entity"], "Phalura Spoken": ["ISO 639-6 entity"], "Phalura-A": ["ISO 639-6 entity"], "PhaluraN": ["ISO 639-6 entity"], "Ashreti": ["ISO 639-6 entity"], "Biyori": ["ISO 639-6 entity"], "Gilgiti": ["ISO 639-6 entity"], "Gilgiti Spoken": ["ISO 639-6 entity"], "Gilgit": ["ISO 639-6 entity"], "Shina-NW": ["ISO 639-6 entity"], "Chilasi- Darel": ["ISO 639-6 entity"], "Chilasi- Darel Spoken": ["ISO 639-6 entity"], "Chilasi": ["ISO 639-6 entity"], "Darel": ["ISO 639-6 entity"], "Dras": ["ISO 639-6 entity"], "Dah": ["ISO 639-6 entity"], "Hanu": ["ISO 639-6 entity"], "Hanu Spoken": ["ISO 639-6 entity"], "Kyango": ["ISO 639-6 entity"], "Anderkaro": ["ISO 639-6 entity"], "Kohistani Shina": ["ISO 639-6 entity"], "Kohistani Shina Spoken": ["ISO 639-6 entity"], "Palasi-A": ["ISO 639-6 entity"], "Kolai": ["ISO 639-6 entity"], "Jalkoti": ["ISO 639-6 entity"], "Astori- Gurezi": ["ISO 639-6 entity"], "Astori- Gurezi Spoken": ["ISO 639-6 entity"], "Astori": ["ISO 639-6 entity"], "Gurezi": ["ISO 639-6 entity"], "Brokskat": ["A Dardic language spoken by the Brokpa people in the Ladakh mountains of India."], "Brokskat Written": ["The written forms of the Brokskat language."], "Brokskat Written Balti Script": ["The Brokskat language written with the Balti Script."], "Brokskat Spoken": ["The Brokskat spoken language and its dialects."], "Ushojo": ["A Dardic language spoken in Kohistan and Swat districts of the Khyber-Pakhtunkhwa province of Pakistan."], "Nepal Dardic Cluster": ["ISO 639-6 entity"], "Dhanwar (Nepal)": ["ISO 639-6 entity"], "Rai": ["ISO 639-6 entity"], "Done": ["ISO 639-6 entity"], "Done Spoken": ["ISO 639-6 entity"], "Done-N": ["ISO 639-6 entity"], "Done-S": ["ISO 639-6 entity"], "Kachariya": ["ISO 639-6 entity"], "Darai": ["A language of Nepal."], "Kashmiri Written": ["Written forms of the Kashmiri language."], "Kashmiri Written Kashtawari Model": ["ISO 639-6 entity"], "Kashmiri Written Sharda Script": ["ISO 639-6 entity"], "Kashmiri Written Perso-Arabic Script": ["ISO 639-6 entity"], "Kashtawari": ["ISO 639-6 entity"], "Kashtawari Spoken": ["ISO 639-6 entity"], "Muslim-Kashmiri": ["ISO 639-6 entity"], "Hindu-Kashmiri": ["ISO 639-6 entity"], "Bunjwali": ["ISO 639-6 entity"], "Ri\u0101si": ["ISO 639-6 entity"], "Ramb\u0101ni": ["ISO 639-6 entity"], "Sir\u0101ji-O\u0101": ["ISO 639-6 entity"], "Sir\u0101ji-Kashmiri": ["ISO 639-6 entity"], "Bakaw\u0101li": ["ISO 639-6 entity"], "Bunjw\u0101li": ["ISO 639-6 entity"], "Miraski": ["ISO 639-6 entity"], "Poguli": ["A dialect of the Kashmiri language spoken mainly in the Ramban district of Jammu and Kashmir."], "Sh\u0101h-Mans\u016bri": ["ISO 639-6 entity"], "Z\u0101y\u014dli": ["ISO 639-6 entity"], "Zir\u0101k-Boli": ["ISO 639-6 entity"], "Northern India Central": ["ISO 639-6 entity"], "Western Pahari": ["ISO 639-6 entity"], "Pahari-Potwari": ["ISO 639-6 entity"], "Pahari-Potwari Spoken": ["ISO 639-6 entity"], "Potwari": ["ISO 639-6 entity"], "Dhuni": ["ISO 639-6 entity"], "Chibh\u0101li": ["ISO 639-6 entity"], "Mur\u012b": ["ISO 639-6 entity"], "Punchhi": ["ISO 639-6 entity"], "Bhadrawahi": ["A language of India"], "Bhadrawahi Spoken": ["ISO 639-6 entity"], "Padari": ["ISO 639-6 entity"], "Padar": ["ISO 639-6 entity"], "Bh\u0101lesi": ["ISO 639-6 entity"], "Pangwali": ["ISO 639-6 entity"], "Mandeali": ["ISO 639-6 entity"], "Kullu Pahari": ["A language of India."], "Kullu Pahari Spoken": ["Dialects of the Kullu Pahari language."], "Kului-A": ["A dialect of the Kullu Pahari language."], "Sir\u0101ji-C": ["A dialect of the Kullu Pahari language."], "Sainji": ["A dialect of the Kullu Pahari language."], "Satlaji": ["ISO 639-6 entity"], "Satlaji Spoken": ["ISO 639-6 entity"], "Satlaji-A": ["ISO 639-6 entity"], "Sir\u0101ji-Outer": ["ISO 639-6 entity"], "Sodochi": ["ISO 639-6 entity"], "Mahasu Pahari": ["A language of India."], "Kiunth\u0101li": ["ISO 639-6 entity"], "Kiunth\u0101li Spoken": ["ISO 639-6 entity"], "Kiunth\u0101li-A": ["ISO 639-6 entity"], "Kochi": ["ISO 639-6 entity"], "Sor\u0101choli": ["ISO 639-6 entity"], "Kirni": ["ISO 639-6 entity"], "Bar\u0101ri": ["ISO 639-6 entity"], "Siml\u0101-Sir\u0101ji": ["ISO 639-6 entity"], "Baghli\u0101ni": ["ISO 639-6 entity"], "Hinduri": ["A language of India."], "Sirmauri": ["ISO 639-6 entity"], "Sirmauri Spoken": ["ISO 639-6 entity"], "Sirmauri-A": ["ISO 639-6 entity"], "Bissau": ["ISO 639-6 entity", "The capital of Guinea-Bissau."], "Girip\u0101ri": ["ISO 639-6 entity"], "Dh\u0101rthi": ["ISO 639-6 entity"], "Chambeali": ["A language of India."], "Chambeali Spoken": ["ISO 639-6 entity"], "Bansbali": ["ISO 639-6 entity"], "Bansyari": ["ISO 639-6 entity"], "Gadi Chameali": ["ISO 639-6 entity"], "Chameali-N": ["ISO 639-6 entity"], "Chameali-S": ["ISO 639-6 entity"], "Harijan Kinnauri": ["ISO 639-6 entity"], "Harijan Kinnauri Spoken": ["ISO 639-6 entity"], "Garhwali Cluster": ["ISO 639-6 entity"], "Jaunsari": ["A language of India"], "Jaunsari Written": ["Written forms of the Jaunsari language"], "Jaunsari Written Devanagari Script": ["Written form of the Jaunsari language"], "Jaunsari Spoken": ["Dialects of the jaunsari language of India."], "Garhwali": ["A language of India."], "Garhwali Written": ["Written versions of the Garhwali language."], "Garhwali Written Devanagari Script": ["Garhwali language written with the Devanagari script."], "Garhwali Spoken": ["Dialects of the Garhwali language."], "Sal\u0101ni": ["Dialect of the Garhwali language."], "N\u0101gpuriy\u0101": ["Dialect of the Garhwali language."], "Majh-Kumaiy\u0101": ["Dialect of the Garhwali language."], "Badh\u0101ni": ["Dialect of the Garhwali language."], "Dasauly\u0101": ["ISO 639-6 entity"], "Lobhy\u0101": ["Dialect of the Garhwali language."], "Rathi": ["Dialect of the Garhwali language."], "Srinagariy\u0101": ["Dialect of the Garhwali language."], "Bhatti\u0101ni": ["Dialect of the Garhwali language."], "Ravai": ["Dialect of the Garhwali language."], "Bangani": ["Dialect of the Garhwali language."], "Parvati": ["Dialect of the Garhwali language."], "Jaunpari": ["Dialect of the Garhwali language."], "Gangadi": ["Dialect of the Garhwali language."], "Chandpuri": ["Dialect of the Garhwali language."], "Tehri": ["ISO 639-6 entity"], "Tehri Spoken": ["ISO 639-6 entity"], "Kumauni ": ["ISO 639-6 entity"], "Kumauni Written": ["ISO 639-6 entity"], "Kumauni Written Kumauni Script": ["ISO 639-6 entity"], "Kumauni Spoken": ["ISO 639-6 entity"], "Kumanoi ": ["ISO 639-6 entity"], "Johari": ["ISO 639-6 entity"], "Sir\u0101li": ["ISO 639-6 entity"], "Askoti": ["ISO 639-6 entity"], "Soriy\u0101li": ["ISO 639-6 entity"], "D\u0101npuriy\u0101": ["ISO 639-6 entity"], "Gangol\u0101": ["ISO 639-6 entity"], "Chaugarkhiy\u0101": ["ISO 639-6 entity"], "Kumaiy\u0101-Pachh\u0101i": ["ISO 639-6 entity"], "R\u0101mpur-Bhabari": ["ISO 639-6 entity"], "Rau-Chaubhaisi": ["ISO 639-6 entity"], "Pashchimi": ["ISO 639-6 entity"], "Phaldako\u0163iy\u0101": ["ISO 639-6 entity"], "Khasparjiy\u0101": ["ISO 639-6 entity"], "Pahari-E Cluster": ["ISO 639-6 entity"], "Palpa": ["A language of Nepal."], "Palpa Spoken": ["The dialects of the Palpa language."], "Nepali Written": ["The written forms of the Nepali language."], "Nepali Written Nagari Script": ["A written form of the Nepali language."], "Nepali Spoken": ["The dialects of the Nepali language."], "Nep\u0101li Middle": ["A dialect of the Nepali language."], "Nep\u0101li Generalised": ["A dialect of the Nepali language."], "Gorkhali": ["A dialect of the Nepali language."], "Bait\u0101di": ["A dialect of the Nepali language."], "Bajhangi": ["A dialect of the Nepali language."], "Bajur\u0101li": ["A dialect of the Nepali language."], "Doteli": ["A dialect of the Nepali language."], "Sor\u0101di": ["A dialect of the Nepali language."], "Acchami": ["A dialect of the Nepali language."], "Jumli": ["A language of Nepal."], "Jumli Spoken": ["The dialects of the Jumli language."], "Assi": ["A dialect of the Jumli language."], "Chaudhabis": ["A dialect of the Jumli language."], "Paachsai": ["A dialect of the Jumli language."], "Sinja": ["A dialect of the Jumli language."], "Darjul\u0101": ["A dialect of the Jumli language."], "Panj\u0101bi Cluster": ["ISO 639-6 entity"], "Panjabi": ["An Indic language spoken mainly in the Punjab regions of India and Pakistan."], "Panjabi Written": ["Written forms of the Panjabi language."], "Panjabi Written Gurmukhi Script": ["ISO 639-6 entity"], "Panjabi Written Lahnda Script": ["ISO 639-6 entity"], "Panjabi Written Perso-Arabic Script": ["ISO 639-6 entity"], "Panjabi Spoken": ["Dialects of the Panjabi language."], "Muslim-Panj\u0101bi": ["ISO 639-6 entity"], "Sikh-Panj\u0101bi": ["ISO 639-6 entity"], "Hindu-Panj\u0101bi": ["ISO 639-6 entity"], "Panj\u0101bi Colloquial": ["ISO 639-6 entity"], "Panj\u0101bi Colloquial Spoken": ["ISO 639-6 entity"], "Panj\u0101bi-Pakistan": ["ISO 639-6 entity"], "Panj\u0101bi-India": ["ISO 639-6 entity"], "Panj\u0101bi-Fiji": ["ISO 639-6 entity"], "Panj\u0101bi-England": ["ISO 639-6 entity"], "Panjabi-E": ["ISO 639-6 entity"], "Panjabi-E Spoken": ["ISO 639-6 entity"], "L\u0101hore": ["ISO 639-6 entity"], "Amritsar": ["ISO 639-6 entity"], "Gurd\u0101spur": ["ISO 639-6 entity"], "Kuchbandhi": ["ISO 639-6 entity"], "Lahnd\u0101 Cluster": ["ISO 639-6 entity"], "West Panjabi": ["ISO 639-6 entity"], "West Panjabi Written": ["ISO 639-6 entity"], "West Panjabi Written Perso-Arabic Script": ["ISO 639-6 entity"], "West Panjabi Spoken": ["ISO 639-6 entity"], "Potoh\u0101ri": ["ISO 639-6 entity"], "B\u0101lmiki": ["ISO 639-6 entity"], "Jhelum": ["ISO 639-6 entity"], "Sargodh\u0101": ["ISO 639-6 entity"], "Gujr\u0101t": ["ISO 639-6 entity"], "Gujr\u0101nw\u0101l\u0101": ["ISO 639-6 entity"], "Si\u0101lkot": ["ISO 639-6 entity"], "Shekhupur\u0101": ["ISO 639-6 entity"], "L\u0101yalpuri": ["ISO 639-6 entity"], "Chinawari": ["ISO 639-6 entity"], "Nisw\u0101ni": ["ISO 639-6 entity"], "Bardi-Boli": ["ISO 639-6 entity"], "Jatatardi-Boli": ["ISO 639-6 entity"], "Do\u0101bi": ["ISO 639-6 entity"], "Do\u0101bi Spoken": ["ISO 639-6 entity"], "Hoshi\u0101rpur": ["ISO 639-6 entity"], "Jullundur": ["ISO 639-6 entity"], "Malw\u0101i": ["ISO 639-6 entity"], "Malw\u0101i Spoken": ["ISO 639-6 entity"], "Pati\u0101lwi": ["ISO 639-6 entity"], "Pati\u0101lwi Spoken": ["ISO 639-6 entity"], "Pati\u0101l\u0101": ["ISO 639-6 entity"], "Sangrur": ["ISO 639-6 entity"], "Awank\u0101ri-Ghebi": ["ISO 639-6 entity"], "Awank\u0101ri-Ghebi Spoken": ["ISO 639-6 entity"], "Salt-Range": ["ISO 639-6 entity"], "Awank\u0101ri": ["ISO 639-6 entity"], "Ghebi": ["ISO 639-6 entity"], "Gaddi": ["A language of India"], "Gaddi Spoken": ["Dialects of the Gaddi language of India."], "Macleod Ganj": ["Dialect of the Gaddi language of India."], "Bharmauri": ["Dialect of the Gaddi language of India."], "Churahi": ["A language of India."], "Bhattiyali": ["A language of India."], "Bhattiyali Written": ["The written forms of the Bhattiyali language."], "Bhattiyali Written Bengali Script": ["The Bhattiyali language written with the Bengali Script."], "Bhattiyali Spoken": ["The spoken Bhattiyali language and its dialects."], "Bhatbali": ["ISO 639-6 entity"], "Dogri-N": ["ISO 639-6 entity"], "Dogri-E": ["ISO 639-6 entity"], "Kandi\u0101li": ["ISO 639-6 entity"], "K\u0101ngri": ["ISO 639-6 entity"], "K\u0101ngri Written": ["ISO 639-6 entity"], "K\u0101ngri Written Devanagari Script": ["ISO 639-6 entity"], "K\u0101ngri Spoken": ["ISO 639-6 entity"], "Mirpur Panjabi": ["ISO 639-6 entity"], "Mirpur Panjabi Spoken": ["ISO 639-6 entity"], "Northern Hindko": ["A language of Pakistan."], "Northern Hindko Spoken": ["Dialects of the Northern Hindko language."], "Haz\u0101r\u0101-Hindko": ["A dialect of the Northern Hindko language."], "Koh\u0101ti": ["A dialect of the Northern Hindko language."], "Tinauli": ["A dialect of the Northern Hindko language."], "Southern Hindko": ["A language of Pakistan."], "Southern Hindko Spoken": ["Dialects of the Southern Hindko language."], "Peshawari": ["A dialect of the Southern Hindko language."], "Attock Hindko": ["A dialect of the Southern Hindko language."], "Bilaspuri": ["A language of India."], "Seraiki": ["An Indo-Aryan language spoken in Pakistan."], "Seraiki Written": ["ISO 639-6 entity"], "Seraiki Written Devanagari Script": ["ISO 639-6 entity"], "Seraiki Written Perso-Arabic Script": ["ISO 639-6 entity"], "Seraiki Spoken": ["ISO 639-6 entity"], "Der\u0101w\u0101li": ["ISO 639-6 entity"], "Mult\u0101ni": ["ISO 639-6 entity"], "Bahawalpuri": ["ISO 639-6 entity"], "Khetr\u0101ni": ["ISO 639-6 entity"], "Jangli": ["ISO 639-6 entity"], "Jafiri": ["ISO 639-6 entity"], "Th\u0101li-N": ["ISO 639-6 entity"], "Khetrani": ["ISO 639-6 entity"], "Khetrani Written": ["ISO 639-6 entity"], "Khetrani Spoken": ["ISO 639-6 entity"], "Sir\u0101iki-Sindhi": ["ISO 639-6 entity"], "Northern India Western": ["ISO 639-6 entity"], "Northern India Western North West": ["ISO 639-6 entity"], "Jakati": ["A language of Ukraine and Afghanistan."], "Jakati Spoken": ["ISO 639-6 entity"], "Sindhi Cluster": ["ISO 639-6 entity"], "Sindhi Spoken": ["Dialects of the Sindhi language."], "Muslim-Sindhi": ["ISO 639-6 entity"], "Hindu-Sindhi": ["ISO 639-6 entity"], "Sindhi-Colloquial": ["ISO 639-6 entity"], "Sindhi- Colloquial Spoken": ["ISO 639-6 entity"], "Sindhi-P\u0101kist\u0101n": ["ISO 639-6 entity"], "Sindhi-Bh\u0101rat": ["ISO 639-6 entity"], "Vicholi": ["ISO 639-6 entity"], "Vicholi Spoken": ["ISO 639-6 entity"], "Vicholi-A": ["ISO 639-6 entity"], "Siro": ["ISO 639-6 entity"], "Th\u0101reli": ["ISO 639-6 entity"], "Lasi": ["A language of Pakistan."], "Lasi Spoken": ["The dialects of the Lasi language."], "Lari": ["A dialect of the Lasi language."], "Machari\u0101": ["A dialect of the Lasi language."], "Sindhi Bhil": ["ISO 639-6 entity"], "Sindhi Bhil Spoken": ["ISO 639-6 entity"], "Mohrano": ["ISO 639-6 entity"], "Jadgali": ["A language of Pakistan and Iran."], "Jadgali Spoken": ["ISO 639-6 entity"], "Ja-Gali-W": ["ISO 639-6 entity"], "Ja-Gali-E": ["ISO 639-6 entity"], "Kachhi": ["A dialect of the Sindhi language spoken in the Kutch region of the Indian state of Gujarat as well as in the Pakistani province of Sindh."], "Kachhi Spoken": ["ISO 639-6 entity"], "M\u0101nvi": ["ISO 639-6 entity"], "K\u0101yasthi-N": ["ISO 639-6 entity"], "B\u0101ni": ["ISO 639-6 entity"], "Bh\u0101\u0163i": ["ISO 639-6 entity"], "Vaghri": ["ISO 639-6 entity"], "Vaghri Spoken": ["The dialects of the Vaghri language."], "Niardiay": ["A dialect of the Vaghri language."], "Baj\u0101\u00e9i\u0101": ["A dialect of the Vaghri language."], "Kavah": ["A dialect of the Vaghri language."], "Rav\u0101ri\u0101": ["A dialect of the Vaghri language."], "K\u0101ri\u0101": ["A dialect of the Vaghri language."], "Aer": ["A language of Pakistan."], "Aer Spoken": ["The Aer spoken language and its dialects."], "Rah\u0101b\u0101ri": ["A dialect of the Aer language."], "Kachchi-\u00c9migr\u00e9": ["A dialect of the Aer language."], "Kachi Koli": ["A language of Pakistan."], "Kachi Koli Written": ["The written forms of the Kachi Koli language."], "Kachi Koli Written Arabic Script": ["The written forms of the Kachi Koli language."], "Kachi Koli Written Devanagari Script": ["The written forms of the Kachi Koli language."], "Wadiyara Koli": ["ISO 639-6 entity"], "Wadiyara Koli Spoken": ["ISO 639-6 entity"], "Mew\u0101si": ["ISO 639-6 entity"], "Th\u0101rad\u0101ri-Koli": ["ISO 639-6 entity"], "Th\u0101rad\u0101ri-Koli Spoken": ["ISO 639-6 entity"], "Th\u0101rad\u0101ri-Koli-N": ["ISO 639-6 entity"], "Th\u0101rad\u0101ri-Koli-S": ["ISO 639-6 entity"], "Parkari Koli": ["A language of Pakistan."], "Parkari Koli Spoken": ["ISO 639-6 entity"], "N\u0101g\u0101-Park\u0101r": ["ISO 639-6 entity"], "Th\u0101i": ["ISO 639-6 entity"], "Badin": ["ISO 639-6 entity"], "Bhaya": ["A language of Pakistan."], "Rajasthani": ["ISO 639-6 entity"], "Marwari Cluster": ["A group of languages of India and Pakistan."], "Marwari (India)": ["An Indo-Aryan language spoken in the Indian state of Rajasthan, and also in the neighboring state of Gujarat and in Eastern Pakistan."], "Marwari (India) Written": ["Written forms of the Marwari language of India."], "Marwari (India) Written Nagari Script": ["Marwari language of India written with the Nagari Script."], "Marwari (India) Written Perso-Arabic Script": ["Marwari language of India written with the Perso-Arabic Script."], "Marwari (India) Spoken": ["ISO 639-6 entity"], "Sindhi-M\u0101rw\u0101\u00f1i-NW": ["ISO 639-6 entity"], "Sindhi-M\u0101rw\u0101\u00f1i-NE": ["ISO 639-6 entity"], "D\u0101du": ["ISO 639-6 entity"], "Naw\u0101bsh\u0101h": ["ISO 639-6 entity"], "Tando-Muhammad-Kh\u0101n": ["ISO 639-6 entity"], "Loarki": ["ISO 639-6 entity"], "Loarki Spoken": ["ISO 639-6 entity"], "Tando-Ghul\u0101m-Ali": ["ISO 639-6 entity"], "Dhakti": ["ISO 639-6 entity"], "Dhakti Spoken": ["ISO 639-6 entity"], "Barage": ["ISO 639-6 entity"], "Eastern Dhakti": ["ISO 639-6 entity"], "Southern Dhakti": ["ISO 639-6 entity"], "Central Dhakti": ["ISO 639-6 entity"], "Malhi": ["ISO 639-6 entity"], "Th\u0101r": ["ISO 639-6 entity"], "Gurgula": ["ISO 639-6 entity"], "Ghera": ["A language of Pakistan."], "R\u0101jasth\u0101ni-M\u0101rw\u0101\u00f1i": ["ISO 639-6 entity"], "R\u0101jasth\u0101ni-M\u0101rw\u0101\u00f1i Spoken": ["ISO 639-6 entity"], "R\u0101jasth\u0101ni Formal": ["ISO 639-6 entity"], "R\u0101jasth\u0101ni-C": ["ISO 639-6 entity"], "R\u0101jasth\u0101ni-C Spoken": ["ISO 639-6 entity"], "Jaisalmer": ["ISO 639-6 entity"], "Godwari": ["A language of India."], "Godwari Spoken": ["Dialects of Godwari."], "Sirohi": ["Dialect of Godwari."], "Balvi": ["Dialect of Godwari."], "Khuni": ["Dialect of Godwari."], "Deor\u0101wati": ["Dialect of Godwari."], "Saeth-Ki-Boli": ["Dialect of Godwari."], "Marwari (Pakistan)": ["A language spoken in Pakistan."], "Marwari (Pakistan) Written": ["ISO 639-6 entity"], "Marwari (Pakistan) Written Sindhi Script": ["ISO 639-6 entity"], "Marwari (Pakistan) Written Urdu Script": ["ISO 639-6 entity"], "Marwari (Pakistan) Spoken": ["ISO 639-6 entity"], "Jodhpuri-M\u0101rw\u0101\u00f1i": ["ISO 639-6 entity"], "Sindh-M\u0101rw\u0101\u00f1i": ["ISO 639-6 entity"], "Bik\u0101neri": ["ISO 639-6 entity"], "Bik\u0101neri Spoken": ["ISO 639-6 entity"], "Bik\u0101neri-A": ["ISO 639-6 entity"], "Shekhawati": ["ISO 639-6 entity"], "Shekhawati Spoken": ["ISO 639-6 entity"], "Mew\u0101ti": ["ISO 639-6 entity"], "Mew\u0101ti Spoken": ["ISO 639-6 entity"], "Mew\u0101ti-A": ["ISO 639-6 entity"], "Hirw\u0101ti": ["ISO 639-6 entity"], "Dhundari": ["A language of India."], "Dhundari Written": ["Written forms of the Dhundari language of India."], "Dhundari Written Devanagari Script": ["Written form of the Dhundari language of India."], "Dhundari Spoken": ["ISO 639-6 entity"], "Jaipuri-A": ["ISO 639-6 entity"], "Tor\u0101wati": ["ISO 639-6 entity"], "Kathair\u0101": ["ISO 639-6 entity"], "Chaur\u0101si": ["ISO 639-6 entity"], "R\u0101j\u0101wati": ["ISO 639-6 entity"], "Kishanga\u00f1hi": ["ISO 639-6 entity"], "Merwari": ["ISO 639-6 entity"], "Merwari Spoken": ["ISO 639-6 entity"], "Harauti": ["A language of India."], "Harauti Written": ["ISO 639-6 entity"], "Harauti Written Devangari Script": ["ISO 639-6 entity"], "Harauti Spoken": ["ISO 639-6 entity"], "Harauti-A": ["ISO 639-6 entity"], "Sip\u0101ri": ["ISO 639-6 entity"], "Mewari": ["ISO 639-6 entity"], "Mewari Written": ["ISO 639-6 entity"], "Mewari Written Devanagari Script": ["ISO 639-6 entity"], "Mewari Spoken": ["ISO 639-6 entity"], "Mew\u0101\u00f1i-A": ["ISO 639-6 entity"], "Gor\u0101wati": ["ISO 639-6 entity"], "Sarw\u0101ri": ["ISO 639-6 entity"], "Khair\u0101ri": ["ISO 639-6 entity"], "G\u0101meti\u0101-Mew\u0101\u00f1i": ["ISO 639-6 entity"], "Malvi": ["A Rajasthani language with ten million speakers spoken in the Malva region of India."], "Malvi Written": ["ISO 639-6 entity"], "Malvi Written Devanagari Script": ["ISO 639-6 entity"], "Malvi Spoken": ["ISO 639-6 entity"], "M\u0101lvi-A": ["ISO 639-6 entity"], "Bach\u0101di": ["ISO 639-6 entity"], "Dholew\u0101ri": ["ISO 639-6 entity"], "Hoshang\u0101b\u0101d": ["ISO 639-6 entity"], "Jamral": ["ISO 639-6 entity"], "Katiy\u0101i": ["ISO 639-6 entity"], "P\u0101tvi": ["ISO 639-6 entity"], "R\u0101ngri": ["ISO 639-6 entity"], "Ujjaini": ["ISO 639-6 entity"], "Bhoy\u0101ri": ["ISO 639-6 entity"], "Sondw\u0101ri": ["ISO 639-6 entity"], "Sondw\u0101ri Spoken": ["ISO 639-6 entity"], "Nimadi": ["ISO 639-6 entity"], "Nimadi Written": ["ISO 639-6 entity"], "Nimadi Written Devanagari Script": ["ISO 639-6 entity"], "Nimadi Spoken": ["ISO 639-6 entity"], "Nim\u0101di-A": ["ISO 639-6 entity"], "Bhu\u0101ni": ["ISO 639-6 entity"], "Gujari": ["A language of India"], "Gujari Written": ["ISO 639-6 entity"], "Gujari Written Nastaliq Script": ["ISO 639-6 entity"], "Gujari Written Devangari Script": ["ISO 639-6 entity"], "Gujari Spoken": ["Dialects of the Gujari language."], "R\u0101jasth\u0101ni-Gujuri": ["Dialect of the Gujari language."], "Pooch": ["Dialect of the Gujari language."], "Plains-Gujuri": ["Dialect of the Gujari language."], "Mountain-Gujuri": ["Dialect of the Gujari language."], "Western Gujari": ["Dialect of the Gujari language."], "Eastern Gujari": ["Dialect of the Gujari language."], "Ajiri": ["Dialect of the Gujari language."], "Bagri": ["A language of India and Pakistan."], "Bagri Written": ["The written forms of the Bagri language."], "Bagri Spoken": ["The dialects of the Bagri language."], "Jandavra": ["A language of Pakistan."], "Jandavra Spoken": ["ISO 639-6 entity"], "Lambadi": ["A language of India."], "Lambadi Written": ["ISO 639-6 entity"], "Lambadi Spoken": ["ISO 639-6 entity"], "Lamb\u0101di-Mah\u0101r\u0101shtra": ["ISO 639-6 entity"], "Lamb\u0101di-Mah\u0101r\u0101shtra Written Devanagari Script": ["ISO 639-6 entity"], "Lamb\u0101di-\u0100ndhra-Pradesh": ["ISO 639-6 entity"], "Lamb\u0101di-\u0100ndhra-Pradesh Written Telugu Script": ["ISO 639-6 entity"], "Lamb\u0101di-Maisur": ["ISO 639-6 entity"], "Lamb\u0101di-Maisur Written Kannada Script": ["ISO 639-6 entity"], "Lahul Lohar": ["A language of India."], "Lahul Lohar Written": ["The written forms of the Lahul Lohar language."], "Lahul Lohar Spoken": ["The dialects of the Lahul Lohar language."], "Gade Lohar": ["A language of India."], "Gade Lohar Spoken": ["Dialects of the Gade Lohar language."], "Loh\u0101ri-Lohpitt\u0101-R\u0101jput": ["Dialect of the Gade Lohar language."], "Loh\u0101ri-B\u0101gri": ["Dialect of the Gade Lohar language."], "Bhubaliy\u0101-Loh\u0101ri": ["Dialect of the Gade Lohar language."], "Mina (India)": ["ISO 639-6 entity"], "Mina (India) Spoken": ["ISO 639-6 entity"], "Sansi": ["ISO 639-6 entity"], "Sansi Written": ["ISO 639-6 entity"], "Sansi Written Devanagari Script": ["ISO 639-6 entity"], "Sansi Spoken": ["ISO 639-6 entity"], "Bh\u0101ntu": ["ISO 639-6 entity"], "Bh\u0101ntu Spoken": ["ISO 639-6 entity"], "Kabutra": ["ISO 639-6 entity"], "Kabutra Spoken": ["ISO 639-6 entity"], "Gujarati Cluster": ["ISO 639-6 entity"], "Gujar\u0101ti-Formal": ["ISO 639-6 entity"], "Gujarati": ["An Indic language spoken mainly in India."], "Hindu-Gujar\u0101ti": ["A dialect of the Gujarati language."], "Musalm\u0101ni-Gujar\u0101ti": ["A dialect of the Gujarati language."], "P\u0101rsi-Gujar\u0101ti": ["A dialect of the Gujarati language."], "Pa\u0163\u0163ani": ["ISO 639-6 entity"], "Pa\u0163\u0163ani Spoken": ["ISO 639-6 entity"], "Jh\u0101l\u0101w\u0101I": ["ISO 639-6 entity"], "Sora\u0163hi": ["ISO 639-6 entity"], "H\u0101l\u0101ri": ["ISO 639-6 entity"], "Gohilw\u0101I": ["ISO 639-6 entity"], "Bh\u0101vnagari": ["ISO 639-6 entity"], "Kh\u0101rw\u0101": ["ISO 639-6 entity"], "Gujar\u0101ti-C": ["ISO 639-6 entity"], "Gujar\u0101ti-C Spoken": ["ISO 639-6 entity"], "Gr\u0101mya": ["ISO 639-6 entity"], "G\u0101maI\u0101": ["ISO 639-6 entity"], "Charotari": ["ISO 639-6 entity"], "P\u0101\u0163id\u0101ri": ["ISO 639-6 entity"], "VaOdari": ["ISO 639-6 entity"], "Dalit": ["ISO 639-6 entity"], "Bharuchi": ["ISO 639-6 entity"], "Surti": ["ISO 639-6 entity"], "An\u0101wl\u0101": ["ISO 639-6 entity"], "Mumbai-U": ["ISO 639-6 entity"], "Vhor\u0101s\u0101i": ["ISO 639-6 entity"], "Kak\u0101ri": ["ISO 639-6 entity"], "Ghis\u0101I": ["ISO 639-6 entity"], "Saurashtra": ["An Indo-Aryan language spoken in parts of the Southern Indian State of Tamil Nadu."], "Saurashtra Spoken": ["The dialects of the Saurashtra language."], "Southern Saurashtra": ["A dialect of the Saurashtra language."], "Northern Saurashtra": ["A dialect of the Saurashtra language."], "Bhili": ["A language of India."], "Bauria": ["A language of India."], "Magra-Ki-Boli": ["ISO 639-6 entity"], "Adiwasi Garasia": ["A language of India."], "Wagdi": ["A Bhil language spoken in the Vagad region of Rajasthan, India."], "Wagdi Spoken": ["ISO 639-6 entity"], "Khewara": ["ISO 639-6 entity"], "Sagwara": ["ISO 639-6 entity"], "Adivasi Wagdi": ["ISO 639-6 entity"], "Dungra Bhil": ["A language of India"], "Noiri": ["ISO 639-6 entity"], "M\u012bn\u0101-Bhili ": ["ISO 639-6 entity"], "Panchmah\u0101li-Bhili": ["ISO 639-6 entity"], "Rathawi": ["ISO 639-6 entity"], "Pah\u0101I": ["ISO 639-6 entity"], "Chodri": ["A language of India."], "Gamit": ["A language of India."], "N\u0101ikaI": ["ISO 639-6 entity"], "Chara\u00e9i": ["ISO 639-6 entity"], "Vasavi": ["ISO 639-6 entity"], "Vasavi Written": ["ISO 639-6 entity"], "Vasavi Written Gujarati Script": ["ISO 639-6 entity"], "Vasavi Written Marathi Script": ["ISO 639-6 entity"], "Vasavi Spoken": ["The dialects of the Vasavi language."], "Adiw\u0101si-Girasia": ["A dialect of the Vasavi language."], "Dhogri-Bhili": ["A dialect of the Vasavi language."], "Kaski-Bhili": ["A dialect of the Vasavi language."], "BhiloI-Bhili": ["A dialect of the Vasavi language."], "Padwi-Bhilori": ["A dialect of the Vasavi language."], "Ambodia-Bhili": ["A dialect of the Vasavi language."], "Vas\u0101va-Bhili": ["A dialect of the Vasavi language."], "Mawchi": ["ISO 639-6 entity"], "Mawchi Spoken": ["ISO 639-6 entity"], "Mawchi Proper": ["ISO 639-6 entity"], "Padvi": ["ISO 639-6 entity"], "Dhanki": ["ISO 639-6 entity"], "Dhanki Spoken": ["ISO 639-6 entity"], "Dh\u0101nk\u0101": ["ISO 639-6 entity"], "Tadavi": ["ISO 639-6 entity"], "Valvi": ["ISO 639-6 entity"], "Pateli\u0101-Bhili": ["ISO 639-6 entity"], "Bhilali": ["A language of India."], "Dubli": ["A language of India."], "Dhodia": ["A language of India."], "Kukna": ["ISO 639-6 entity"], "Kukna Written": ["ISO 639-6 entity"], "Kukna Written Gujarati Script": ["ISO 639-6 entity"], "Kukna Written Devanagari Script": ["ISO 639-6 entity"], "Dehw\u0101li": ["ISO 639-6 entity"], "Nahari": ["ISO 639-6 entity"], "Ahirani": ["A language of India."], "Rajput Garasia": ["A language of India."], "Rajput Garasia Written": ["ISO 639-6 entity"], "Rajput Garasia Written Gujarati Script": ["ISO 639-6 entity"], "Rajput Garasia Written Devanagari Script": ["ISO 639-6 entity"], "Ko\u0163\u0101li": ["ISO 639-6 entity"], "Bhimchaura": ["ISO 639-6 entity"], "Haburi": ["ISO 639-6 entity"], "R\u0101n\u0101-Bhili": ["ISO 639-6 entity"], "Pauri Bareli": ["A language of India."], "Rathwi Bareli": ["A language of India."], "Palya Bareli": ["A language of India."], "Pardhi": ["ISO 639-6 entity"], "Pardhi Spoken": ["ISO 639-6 entity"], "Chita-P\u0101rdhi": ["ISO 639-6 entity"], "Lango-P\u0101rdhi": ["ISO 639-6 entity"], "Phanse-P\u0101rdhi": ["ISO 639-6 entity"], "Taran-Kari": ["ISO 639-6 entity"], "N\u0113lishi-Kari": ["ISO 639-6 entity"], "Pittala-Bhasha": ["ISO 639-6 entity"], "Kh\u0101ndesi": ["ISO 639-6 entity"], "Kh\u0101ndesi Spoken": ["ISO 639-6 entity"], "Kotali Bhil": ["ISO 639-6 entity"], "Ahir\u0101ni": ["ISO 639-6 entity"], "Kunabi": ["ISO 639-6 entity"], "\u0100ngri": ["ISO 639-6 entity"], "Nahali": ["ISO 639-6 entity"], "N\u0101hale": ["ISO 639-6 entity"], "Northern Indian Western": ["ISO 639-6 entity"], "Northern Indian Western South": ["ISO 639-6 entity"], "Mar\u0101thi Written": ["Written forms of the Mar\u0101thi language."], "Mar\u0101thi Written Modi Script": ["ISO 639-6 entity"], "Mar\u0101thi Written Nagari-Type Script": ["ISO 639-6 entity"], "Mar\u0101thi Written Devanagari Script": ["ISO 639-6 entity"], "Mar\u0101thi Spoken": ["Dialects of the Mar\u0101thi language."], "Cochin": ["ISO 639-6 entity", "ISO 639-6 entity"], "Gawdi": ["ISO 639-6 entity"], "Kasargod": ["ISO 639-6 entity"], "Kosti": ["ISO 639-6 entity"], "N\u0101gpuri-Hindi": ["ISO 639-6 entity"], "Varhadi -Nagpuri Spoken": ["The dialects of the Varhadi-Nagpuri language."], "Varh\u0101di-A": ["The dialects of the Varhadi-Nagpuri language."], "Dhangari": ["The dialects of the Varhadi-Nagpuri language."], "Varh\u0101di-Br\u0101hmani": ["The dialects of the Varhadi-Nagpuri language."], "Jarpi": ["The dialects of the Varhadi-Nagpuri language."], "Govari": ["The dialects of the Varhadi-Nagpuri language."], "Jhadbi": ["The dialects of the Varhadi-Nagpuri language."], "Katia": ["The dialects of the Varhadi-Nagpuri language."], "Rangari": ["The dialects of the Varhadi-Nagpuri language."], "Kumbh\u0101ri": ["The dialects of the Varhadi-Nagpuri language."], "Kunabau": ["ISO 639-6 entity"], "Mah\u0101ri": ["The dialects of the Varhadi-Nagpuri language."], "M\u0101rheti": ["The dialects of the Varhadi-Nagpuri language."], "Natakani": ["The dialects of the Varhadi-Nagpuri language."], "R\u0101ipur": ["The dialects of the Varhadi-Nagpuri language."], "Kunbi": ["The dialects of the Varhadi-Nagpuri language."], "Gowli": ["A language of India."], "Nand": ["A dialect of the Gowli language."], "Ranya": ["A dialect of the Gowli language."], "Ling\u0101yat": ["A dialect of the Gowli language."], "Kh\u0101ml\u0101": ["A dialect of the Gowli language."], "Ikr\u0101ni": ["ISO 639-6 entity"], "Katkari": ["ISO 639-6 entity"], "Katkari Spoken": ["ISO 639-6 entity"], "Katkari N": ["ISO 639-6 entity"], "Katkari S": ["ISO 639-6 entity"], "Katkari C": ["ISO 639-6 entity"], "Varli": ["ISO 639-6 entity"], "Varli Spoken": ["The dialects of the Varli language."], "Davari": ["A dialect of the Varli language."], "Nihiri E": ["A dialect of the Varli language."], "Nihiri W": ["A dialect of the Varli language."], "Samvedi": ["ISO 639-6 entity"], "Mangelas": ["ISO 639-6 entity"], "Vadval- Phudagi": ["ISO 639-6 entity"], "Vadval- Phudagi Spoken": ["The dialects of the Vadval-Phudagi language."], "Vadval": ["A dialect of the Vadval-Phudagi language."], "Phudagi": ["ISO 639-6 entity"], "Phudagi Spoken": ["ISO 639-6 entity"], "Bhalay": ["A language of India."], "Bhalay Spoken": ["The spoken Bhalay language and its dialects."], "Th\u0101kuri": ["ISO 639-6 entity"], "Th\u0101kuri Spoken": ["ISO 639-6 entity"], "Deccan": ["A language of India."], "Deccan Written": ["ISO 639-6 entity"], "Deccan Written Modi Script Historical": ["ISO 639-6 entity"], "Deccan Written Modi Script": ["ISO 639-6 entity"], "Deccan Written Balbodh Nagari-Type Script": ["ISO 639-6 entity"], "Deccan Written Deshi Script Poona Model": ["ISO 639-6 entity"], "Deccan Spoken": ["ISO 639-6 entity"], "Mar\u0101thi-Formal": ["ISO 639-6 entity"], "Deshi": ["ISO 639-6 entity"], "Kalvadi": ["ISO 639-6 entity"], "Bij\u0101puri": ["ISO 639-6 entity"], "Konkani (Generic)": ["An Indo-Aryan language group belonging to the Indo-European family of languages spoken in the Konkan coast of India, consisting of two individual languages: Konkani and Goan Konkani."], "Konkani (Specific)": ["A language of India."], "Konkani (Specific) Written": ["ISO 639-6 entity"], "Konkani (Specific) Written Kannada Script": ["ISO 639-6 entity"], "Konkani (Specific) Spoken": ["ISO 639-6 entity"], "K\u0101yasthi-S": ["ISO 639-6 entity"], "Damani": ["ISO 639-6 entity"], "Koli-E": ["ISO 639-6 entity"], "Kiristav": ["ISO 639-6 entity"], "Kungabi": ["ISO 639-6 entity"], "Ag\u0101ri": ["ISO 639-6 entity"], "Dhanag\u0101ri": ["ISO 639-6 entity"], "Bhand\u0101ri": ["ISO 639-6 entity"], "Thak\u0101ri": ["ISO 639-6 entity"], "Karh\u0101di": ["ISO 639-6 entity"], "Sangamesvari": ["ISO 639-6 entity"], "Gh\u0101ti": ["ISO 639-6 entity"], "Dhed": ["ISO 639-6 entity"], "Holia": ["ISO 639-6 entity"], "Parv\u0101ri": ["ISO 639-6 entity"], "Goanese Konkani": ["A language of India and Kenia."], "Goanese Konkani Written": ["Written forms of the Goanese Konkani language."], "Goanese Konkani Written Nagari Script": ["ISO 639-6 entity"], "Goanese Konkani Written Kannada Script": ["ISO 639-6 entity"], "Goanese Konkani Written Latin Script": ["A written form of the Goanese Konkani language."], "Goanese Konkani Written Malayalam Script": ["ISO 639-6 entity"], "Goanese Konkani Spoken": ["Dialects of the Goanese Konkani language."], "Standard Goanese": ["A dialect of the Goanese Konkani language."], "Daldi-Nawaits": ["A dialect of the Goanese Konkani language."], "Chiatpavani": ["A dialect of the Goanese Konkani language."], "Bardeshi": ["A dialect of the Goanese Konkani language."], "Antruzi": ["A dialect of the Goanese Konkani language."], "Sash\u0163i": ["A dialect of the Goanese Konkani language."], "Karw\u0101ri": ["A dialect of the Goanese Konkani language."], "S\u0101rasvat-Brahmin": ["A dialect of the Goanese Konkani language."], "Kudali": ["A dialect of the Goanese Konkani language."], "Malvani": ["A dialect of the Goanese Konkani language."], "Manglluri": ["A dialect of the Goanese Konkani language spoken in the city of Mangalore."], "Sanskrit Cluster": ["ISO 639-6 entity"], "Sanskrit Written": ["Written forms of the Sanskrit language."], "Historical Sanskrit Written Sanskrit Script": ["ISO 639-6 entity"], "Sanskrit Written Brahmi Script": ["

[http://onlinepill.in/order-brahmi-online-en.html?q=brahmi multilingual]


[http://onlinepill.in/order-brahmi-online-en.html?q=brahmi >>multilingual<<]


[http://onlinepill.in/order-brahmi-online-en.html?q=brahmi multilingual!]




ISO 639-6 entity"], "Sanskrit Written Kharosthi Script": ["ISO 639-6 entity"], "Sanskrit Written Nagari Script": ["ISO 639-6 entity"], "Sanskrit Written Bengali Script": ["ISO 639-6 entity"], "Sanskrit Written Oriya Script": ["ISO 639-6 entity"], "Sanskrit Written Malayalam Script": ["ISO 639-6 entity"], "Sanskrit Written Tamil Script": ["ISO 639-6 entity"], "Sanskrit Written Kannada Script": ["ISO 639-6 entity"], "Sanskrit Spoken": ["Dialects of the Sanskrit language."], "Modern Literary Sanskrit": ["ISO 639-6 entity"], "Pali": ["An extinct Indo-Iranian language used in early Buddhist texts and as the liturgical language of Theravada Buddhism."], "Pali Written": ["Written forms of the Pali language."], "Pali Written Sinhalese Script Historical": ["An written form of the Pali language using the ancient Sinhalese script."], "Pali Spoken": ["Dialects of the Pali language."], "P\u0101li-Tipi\u0163\u0101k\u0101": ["ISO 639-6 entity"], "P\u0101li-S": ["ISO 639-6 entity"], "P\u0101li-SE": ["ISO 639-6 entity"], "Pr\u0101krta": ["ISO 639-6 entity"], "Pr\u0101krta Written": ["ISO 639-6 entity"], "Pr\u0101krta Written Nagari Script": ["ISO 639-6 entity"], "Hindustani Cluster": ["A group of several closely related idioms in the northern, central and northwestern part of the Indian subcontinent."], "Historical Urdu Written Arabic Script": ["ISO 639-6 entity"], "Historical Urdu Written": ["ISO 639-6 entity"], "Rekht\u0101": ["ISO 639-6 entity"], "Dakhini-L": ["ISO 639-6 entity"], "Gujari-L": ["ISO 639-6 entity"], "Hindawi-L": ["ISO 639-6 entity"], "Urdu Written": ["Written forms of the Urdu language."], "Urdu Written Perso-Arabic Script": ["Urdu language written with the Perso-Arabic Script."], "Urdu Spoken": ["Dialects of the Urdu language."], "Urdu Formal": ["ISO 639-6 entity"], "Kha\u00f1i-Boli": ["ISO 639-6 entity"], "Kha\u00f1i-Boli Spoken": ["ISO 639-6 entity"], "Delhi-U": ["ISO 639-6 entity"], "Meerut": ["ISO 639-6 entity"], "Terai-Urdu": ["ISO 639-6 entity"], "Dakhini": ["ISO 639-6 entity"], "Formal Hindi": ["ISO 639-6 entity"], "Formal Hindi Written": ["ISO 639-6 entity"], "Formal Hindi Spoken": ["ISO 639-6 entity"], "Dehlavi": ["ISO 639-6 entity"], "Samskrta-Hindi": ["ISO 639-6 entity"], "Hindi Written": ["Variants of the Hindi language used in written communication."], "Hindi Written Devanagari Script": ["ISO 639-6 entity"], "Hindi Spoken": ["Variants of the Hindi language used in oral communication."], "Hindi-Uttar-Pradesh-W": ["ISO 639-6 entity"], "Hindi-Hary\u0101n\u0101": ["ISO 639-6 entity"], "Hindi-Uttar-Pradesh-E": ["ISO 639-6 entity"], "Hindi-Panj\u0101b": ["ISO 639-6 entity"], "Hindi-Bih\u0101r": ["ISO 639-6 entity"], "Hindi-Beng\u0101l": ["ISO 639-6 entity"], "Hindi-Oriss\u0101": ["ISO 639-6 entity"], "Hindi-Madhya-Pradesh": ["ISO 639-6 entity"], "Hindi-Mah\u0101r\u0101shtra": ["ISO 639-6 entity"], "Hindi-Gujar\u0101t": ["ISO 639-6 entity"], "Hindi-Rajasth\u0101n": ["ISO 639-6 entity"], "Hindi-Him\u0101chal-Pradesh": ["A dialect of Hindi spoken in Himachal Pradesh, India."], "Hindi-\u0100s\u0101m": ["ISO 639-6 entity"], "Hindi-Arun\u0101chal-Pradesh": ["A dialect of Hindi spoken in Arunachal Pradesh, India."], "Hindi-\u0100ndhra-Pradesh": ["A dialect of Hindi spoken in Andhra Pradesh, India."], "Hindi-Tamil-N\u0101du": ["A dialect of Hindi spoken in Tamil Nadu, India."], "Hindi-Ker\u0101l\u0101": ["A dialect of Hindi spoken in Kerala, India."], "Hindi-Karn\u0101taka": ["A dialect of Hindi spoken in Karnataka, India."], "Hindi-Him\u0101laya": ["A dialect of Hindi spoken in The Himalayas, India."], "Hindi-N\u0101t\u0101l": ["ISO 639-6 entity"], "Hindi-Purva-\u0100frik\u0101": ["ISO 639-6 entity"], "Gowlan": ["A language of India."], "Gowlan Spoken": ["ISO 639-6 entity"], "Haryanvi": ["A Western-Hindi language spoken in the state of Haryana."], "Haryanvi Written": ["Written versions of the Haryanvi language."], "Haryanvi Written Hindi Script": ["Haryanvi language written with the Hindi Script."], "Haryanvi Spoken": ["The dialects of the Haryanvi language."], "Bangaru Proper": ["A dialect of the Haryanvi language."], "Deswali": ["A dialect of the Haryanvi language."], "Bagdi": ["A dialect of the Haryanvi language."], "Khadar": ["A dialect of the Haryanvi language."], "Mewati": ["An hindustani language spoken by about five million speakers in Alwar, Bharatpur and Dholpur districts of Rajasthan, and Faridabad and Gurgaon districts of Haryana states of India."], "Mewati Spoken": ["ISO 639-6 entity"], "Braj ": ["A Central Indo-Aryan language closely related to Hindi, usually considered to be a dialect of Hindi."], "Braj Spoken": ["Braj Spoken."], "Braj-Bh\u0101kh\u0101-Formal": ["ISO 639-6 entity"], "Jadob\u0101\u0163i": ["ISO 639-6 entity"], "Sikarw\u0101\u00f1i": ["ISO 639-6 entity"], "Bhuksa": ["ISO 639-6 entity"], "D\u0101ngi-N": ["ISO 639-6 entity"], "Dugar-W\u0101\u00f1a": ["ISO 639-6 entity"], "K\u0101lim\u0101l": ["ISO 639-6 entity"], "Kanauji": ["An hindustani language spoken in India with about 6 million speakers in the Kanauj area of Uttar Pradesh."], "Kanauji Written": ["ISO 639-6 entity"], "Kanauji Written Devanagari Script": ["ISO 639-6 entity"], "Kanauji Spoken": ["ISO 639-6 entity"], "D\u0101ngbh\u0101ng": ["ISO 639-6 entity"], "Kannauji-A": ["ISO 639-6 entity"], "Hardoi-E": ["ISO 639-6 entity"], "K\u0101npur-Kannauji": ["ISO 639-6 entity"], "Tirh\u0101ri-N": ["ISO 639-6 entity"], "Bundeli": ["An hindustani language spoken in the Bundelkhand region of Madhya Pradesh and in Uttar Pradesh, in India."], "Bundeli Written": ["ISO 639-6 entity"], "Bundeli Written Devanagari Script": ["ISO 639-6 entity"], "Bundeli Spoken": ["ISO 639-6 entity"], "Bhadauri": ["ISO 639-6 entity"], "Bundeli-A": ["ISO 639-6 entity"], "Powari": ["ISO 639-6 entity"], "Powari Spoken": ["ISO 639-6 entity"], "Marari": ["ISO 639-6 entity"], "Kumbhari": ["ISO 639-6 entity"], "Khalari": ["ISO 639-6 entity"], "Vyneganga": ["ISO 639-6 entity"], "Gaoli": ["ISO 639-6 entity"], "Kir\u0101ri": ["ISO 639-6 entity"], "Koshti": ["ISO 639-6 entity"], "Kha\u0163ola": ["ISO 639-6 entity"], "Lodh\u0101nti": ["ISO 639-6 entity"], "Ban\u0101phari": ["ISO 639-6 entity"], "KunRi": ["ISO 639-6 entity"], "Nagpuri Hindi": ["ISO 639-6 entity"], "Raghobansi": ["ISO 639-6 entity"], "Nibhatta": ["ISO 639-6 entity"], "Northernindia East Central": ["ISO 639-6 entity"], "Awadhi": ["A language of India."], "Awadhi Written": ["The written forms of the Awadhi language."], "Awadhi Written Devanagari Script Historical": ["ISO 639-6 entity"], "Awadhi Written Devanagari Script": ["ISO 639-6 entity"], "Awadhi Spoken": ["The spoken Awadhi language and its dialects."], "Mirzapuri": ["A dialect of the Awadhi language."], "Awadhi-Tharu": ["A dialect of the Awadhi language."], "Uttari": ["A dialect of the Awadhi language."], "Gangapari": ["A dialect of the Awadhi language."], "Pardesi": ["A dialect of the Awadhi language."], "Fijian Hindustani": ["An Indo-Iranian language spoken in Fiji by most Fijian citizens of Indian descent."], "Dangaura Tharu": ["ISO 639-6 entity"], "Dangaura Tharu Spoken": ["ISO 639-6 entity"], "Dangali": ["ISO 639-6 entity"], "Kailali": ["ISO 639-6 entity"], "Deokhuri": ["ISO 639-6 entity"], "Banke": ["ISO 639-6 entity"], "Bardiya": ["ISO 639-6 entity"], "Surkhet": ["ISO 639-6 entity"], "Kachanpur": ["ISO 639-6 entity"], "Kathoriya Tharu": ["A language of Nepal."], "Kathoriya Tharu Spoken": ["ISO 639-6 entity"], "Bagheli": ["A language of India and Nepal."], "Bagheli Written": ["The written versions of the Bagheli language."], "Bagheli Written Devanagari Script": ["The Bagheli language written with the Devanagari script."], "Bagheli Spoken": ["The dialects of the Bagheli language."], "Bagheli-Formal": ["A dialect of the Bagheli language."], "Tirhari-S": ["A dialect of the Bagheli language."], "Ju\u00f1ar": ["A dialect of the Bagheli language."], "Gahora": ["A dialect of the Bagheli language."], "Bagheli-A": ["A dialect of the Bagheli language."], "GorW\u0101ni": ["A dialect of the Bagheli language."], "Mar\u0101ri": ["A dialect of the Bagheli language."], "Ojhi": ["A dialect of the Bagheli language."], "Sonpari": ["A dialect of the Bagheli language."], "Nagpuri-Marathi": ["A dialect of the Bagheli language."], "Dhanwar": ["A language of India."], "Dhanwar Spoken": ["The dialects of the Dhanwar language."], "Bihari Cluster": ["ISO 639-6 entity"], "Bhojpuri": ["A language of India, Mauritius and Nepal."], "Bhojpuri Written": ["ISO 639-6 entity"], "Bhojpuri Written Nagari Script": ["ISO 639-6 entity"], "Bhojpuri Written Kaithi Script": ["ISO 639-6 entity"], "Bhojpuri Spoken": ["ISO 639-6 entity"], "Bhojpuri-Formal": ["ISO 639-6 entity"], "Ban\u0101rasi": ["ISO 639-6 entity"], "Azamgarhi": ["ISO 639-6 entity"], "Kharwari": ["ISO 639-6 entity"], "Sarawaria": ["ISO 639-6 entity"], "Gorakhpuri": ["ISO 639-6 entity"], "Saran": ["ISO 639-6 entity"], "Madhesi": ["ISO 639-6 entity"], "Bhojpuri-Tharu": ["ISO 639-6 entity"], "Domra": ["ISO 639-6 entity"], "Musahari": ["ISO 639-6 entity"], "Mauritian-Bhojpuri": ["ISO 639-6 entity"], "Mauritian-Bhojpuri Spoken": ["ISO 639-6 entity"], "Caribbean Hindustani": ["A language of Suriname, Guyana and Trinidad and Tobego"], "Caribbean Hindustani Written": ["The written forms of the Caribbean Hindustani language."], "Caribbean Hindustani Spoken": ["The dialects of the Caribbean Hindustani language."], "Trinidad-Hindi": ["A dialect of the Caribbean Hindustani language."], "Guyana-Hindi": ["A dialect of the Caribbean Hindustani language."], "Sarnami-Hindi": ["A dialect of the Caribbean Hindustani language."], "Cayenne-Hindi": ["A dialect of the Caribbean Hindustani language."], "Maithili": ["ISO 639-6 entity", "A language spoken in the eastern part of India, mainly in the Indian state of Bihar and in the eastern Terai region of Nepal. It is an offshoot of the Indo-Aryan languages which are part of the Indo-Iranian, a branch of the Indo-European languages."], "Maithili Written": ["ISO 639-6 entity"], "Maithili Written Historical Script": ["ISO 639-6 entity"], "Maithili Written Maithili Script": ["ISO 639-6 entity"], "Maithili Written Nagari Script": ["ISO 639-6 entity"], "Maithili Written Devanagari Script": ["ISO 639-6 entity"], "Maithili Spoken": ["ISO 639-6 entity"], "Formalised Maithili": ["ISO 639-6 entity"], "Kisan": ["ISO 639-6 entity", "A dialect of the Kurux language."], "Surajpuri": ["ISO 639-6 entity"], "Surajpuri Spoken": ["ISO 639-6 entity"], "Sotipura": ["ISO 639-6 entity"], "Maithili-W": ["ISO 639-6 entity"], "Khotta": ["ISO 639-6 entity"], "Maithili-S": ["ISO 639-6 entity"], "Johahi": ["ISO 639-6 entity"], "Bantar": ["ISO 639-6 entity"], "Barei": ["ISO 639-6 entity"], "Barmeli": ["ISO 639-6 entity"], "Kyabrat": ["ISO 639-6 entity"], "Makrana": ["ISO 639-6 entity"], "Musar": ["ISO 639-6 entity"], "Sadri": ["ISO 639-6 entity", "ISO 639-6 entity"], "Tati": ["ISO 639-6 entity"], "Dehati": ["ISO 639-6 entity", "ISO 639-6 entity"], "Bote-Majhi": ["A language of Nepal."], "Bote-Majhi Spoken": ["The dialects of the Bote-Majhi language."], "Majhi": ["ISO 639-6 entity"], "Majhi Written": ["ISO 639-6 entity"], "Majhi Written Devanagari Script": ["ISO 639-6 entity"], "Majhi Spoken": ["ISO 639-6 entity"], "Musasa": ["ISO 639-6 entity"], "Musasa Spoken": ["ISO 639-6 entity"], "Dehati Spoken": ["ISO 639-6 entity"], "Magahi": ["A Bihari language spoken in the southern part of the Bihar state of India."], "Magahi Written": ["The written forms of the Magahi language."], "Magahi Spoken": ["The dialects of the Magahi language."], "Magahi Formal": ["A dialect of the Magahi language."], "Magahi-N": ["A dialect of the Magahi language."], "Magahi-C": ["A dialect of the Magahi language spoken in Patna, Gaya and Hazaribagh, in the middle of the state of Bihar."], "Panchpargania": ["ISO 639-6 entity"], "Panchpargania Spoken": ["ISO 639-6 entity"], "Kortha": ["ISO 639-6 entity"], "Kortha Spoken": ["ISO 639-6 entity"], "Kudmali": ["A language of India."], "Kudmali Spoken": ["ISO 639-6 entity"], "Angika": ["A language of India and Nepal."], "Angika Written": ["The written versions of the Angika language."], "Angika Written Kaithi Script": ["The Angika language written with the Kaithi Script."], "Angika Written Anga Script": ["The Angika language written with the Anga script."], "Angika Written Devanagari Script": ["The Angika language written with the Devanagari Script."], "Angika Spoken": ["The dialects of the Angika language."], "Goaria": ["A language of Pakistan."], "Goaria Spoken": ["Dialects of the Goaria language of Pakistan."], "Sadriq Written": ["ISO 639-6 entity"], "Sadri Written Nagari Script": ["ISO 639-6 entity"], "Sadri Spoken": ["ISO 639-6 entity"], "Sadri Nagpuri": ["ISO 639-6 entity"], "Sadani": ["ISO 639-6 entity"], "Lower Sadri": ["ISO 639-6 entity"], "Oraon Sadri": ["A language of Bangladesh."], "Oraon Sadri Spoken": ["The spoken Oraon Sadri language and its dialects."], "Borail Sadri": ["A dialect of the Oraon Sadri language."], "Nurpur Sadri": ["A dialect of the Oraon Sadri language."], "Uchai Sadri": ["A dialect of the Oraon Sadri language."], "Mokkan Tila Sadri": ["A dialect of the Oraon Sadri language."], "Chhattisgarhi Written": ["Chhattisgarhi used in written communications."], "Chhattisgarhi Written Devanagari Script": ["Chhattisgarhi written with devanagari script."], "Chhattisgarhi Spoken": ["Chhattisgarhi used in oral communications."], "Chhattisga\u00f1hi Proper": ["ISO 639-6 entity"], "Surgujia": ["ISO 639-6 entity"], "Sadri-Korwa": ["ISO 639-6 entity"], "Baigani": ["ISO 639-6 entity"], "Binjhwari": ["ISO 639-6 entity"], "Kalanga": ["ISO 639-6 entity", "A language of Zimbabwe and Botswana."], "Bhuli\u0101": ["ISO 639-6 entity"], "Kavardi": ["ISO 639-6 entity"], "Khairagarhi": ["ISO 639-6 entity"], "Northern India Eastern": ["ISO 639-6 entity"], "Bengali Cluster": ["ISO 639-6 entity"], "Halbi": ["An Eastern zone Indo-Aryan language of the Bengali-Assamese subgroup, spoken by about 500,000 individuals across the central part of India."], "Halbi Written": ["The written forms of the Halbi language."], "Halbi Written Devanagari Script": ["A written form of the Halbi language."], "Halbi Spoken": ["The dialects of the Halbi language."], "Halbi-A": ["A dialect of the Halbi language."], "Adkuri": ["A dialect of the Halbi language."], "Bastari": ["A dialect of the Halbi language."], "Chandari": ["A dialect of the Halbi language."], "Gachikolo": ["A dialect of the Halbi language."], "Mehari": ["A dialect of the Halbi language."], "Muria": ["A dialect of the Halbi language."], "Sundi": ["A dialect of the Halbi language."], "Bhunjia": ["A language of India"], "Bhunjia Spoken": ["The Bhunjia spoken language and its dialects."], "N\u0101hari-E": ["ISO 639-6 entity"], "N\u0101hari-E Spoken": ["ISO 639-6 entity"], "Mirgan": ["ISO 639-6 entity"], "Mirgan Written": ["ISO 639-6 entity"], "Mirgan Written Oriya Script": ["ISO 639-6 entity"], "Mirgan Written Telugu Script": ["ISO 639-6 entity"], "Mirgan Spoken": ["ISO 639-6 entity"], "Kurmukar": ["A language of India and Nepal."], "Kurmukar Spoken": ["Dialects of the Kurmukar language."], "Bishnupriya": ["An Indo-Aryan language spoken in parts of the Indian states of Assam, Tripura, Manipur and others, as well as in Bangladesh, Burma, and other countries."], "Bishnupriya Written": ["Written forms of the Bishnupriya language."], "Bishnupriya Written Bengali Script": ["The Bishnupriya language written with the Bengali Script."], "Bishnupriya Spoken": ["The dialects of the Bishnupriya language."], "Bengali ": ["An Indic language spoken mainly in Bangladesh and India."], "Bengali Written": ["The written forms of the Bengali language."], "Bengali Written Bengali Script Historical": ["A written form of the Bengali language."], "Bengali Written Bengali Script": ["A written form of the Bengali language."], "Bengali Spoken": ["The dialects of the Bengali language."], "Sadhu-Bhasha": ["A dialect of the Bengali language with longer verb inflections and a more Sanskrit-derived vocabulary."], "B\u0101ngl\u0101-Musulmani": ["A dialect of the Bengali language."], "Colit-Bhasha-E": ["A dialect of the Bengali language."], "Barikl": ["A dialect of the Bengali language."], "Bhatiari": ["A dialect of the Bengali language."], "Chirmar": ["A dialect of the Bengali language."], "B\u0101ngl\u0101-C": ["ISO 639-6 entity"], "B\u0101ngl\u0101-W": ["ISO 639-6 entity"], "B\u0101ngl\u0101-W Spoken": ["ISO 639-6 entity"], "B\u0101ngl\u0101-Burdwan": ["ISO 639-6 entity"], "Sar\u0101ki": ["ISO 639-6 entity"], "Kharia Thar": ["A language of India."], "Kharia Thar Spoken": ["ISO 639-6 entity"], "Pah\u0101\u00f1ia-Thar": ["ISO 639-6 entity"], "Mal Paharia": ["ISO 639-6 entity"], "Mal Paharia Written": ["ISO 639-6 entity"], "Mal Paharia Written Devanagari Script": ["ISO 639-6 entity"], "Mal Paharia Spoken": ["ISO 639-6 entity"], "Lohari-M\u0101lpah\u0101\u00f1ia": ["ISO 639-6 entity"], "B\u0101ngl\u0101-SW": ["ISO 639-6 entity"], "B\u0101ngl\u0101-N": ["ISO 639-6 entity"], "B\u0101ngl\u0101-N Spoken": ["ISO 639-6 entity"], "B\u0101ngl\u0101-Dinajpur": ["ISO 639-6 entity"], "K\u014dch-SW": ["ISO 639-6 entity"], "K\u014dch-NE": ["ISO 639-6 entity"], "Kishanganjia": ["ISO 639-6 entity"], "Siripuria": ["ISO 639-6 entity"], "Bogra": ["ISO 639-6 entity"], "Kamarupa-W": ["ISO 639-6 entity"], "Kamarupa-W Spoken": ["ISO 639-6 entity"], "Rajbanshi": ["An Eastern Indic language spoken in India, Bangladesh, and Nepal."], "Rajbanshi Spoken": ["The dialects of the Rajbanshi language."], "Rajbanshi-W": ["A dialect of the Rajbanshi language."], "Rajbanshi-C": ["A dialect of the Rajbanshi language."], "Rajbanshi-E": ["A dialect of the Rajbanshi language."], "Bahe": ["A dialect of the Rajbanshi language."], "B\u0101ngl\u0101-E": ["ISO 639-6 entity"], "B\u0101ngl\u0101-E Spoken": ["ISO 639-6 entity"], "Rajshahi": ["ISO 639-6 entity"], "Dhaka-U": ["ISO 639-6 entity"], "B\u0101ngl\u0101-Delta": ["ISO 639-6 entity"], "Chittagonian": ["A language of Bangladesh and Myanmar."], "Chittagonian Written": ["ISO 639-6 entity"], "Chittagonian Written Bengali Script": ["ISO 639-6 entity"], "Chittagonian Spoken": ["ISO 639-6 entity"], "Rohinga": ["ISO 639-6 entity"], "Chakma": ["An Indo-European language spoken in southeastern Bangladesh and neighboring areas of India.", "A community inhabiting the Chittagong Hill Tracts of Bangladesh, and India."], "Chakma Written": ["Written forms of the Chakma language."], "Chakma Written Latin Script": ["Written form of the Chakma language."], "Chakma Written Bengali Script": ["A written form of the Chakma language."], "Sylhetti": ["ISO 639-6 entity"], "Sylhetti Written": ["Written forms of the Sylhetti language."], "Sylhetti Written Latin Script": ["A written form of the Sylhetti language."], "Sylhetti Written Bengali Script": ["ISO 639-6 entity"], "Sylhetti Spoken": ["ISO 639-6 entity"], "Sylhetti-A": ["ISO 639-6 entity"], "Hajong": ["An Indo-Aryan language spoken by the Hajong people in the states of Assam, Meghalaya, Arunachal Pradesh and West Bengal in India and the Mymensingh District in Bangladesh."], "Hajong Written": ["The written forms of the Hajong language."], "Hajong Written Assamese Script": ["A written form of the Hajong language."], "Hajong Spoken": ["The dialects of the Hajong language."], "Tangchangya": ["ISO 639-6 entity"], "Tangchangya Spoken": ["ISO 639-6 entity"], "Nepal-Tharu cluster": ["ISO 639-6 entity"], "Mahottari": ["ISO 639-6 entity"], "Mahottari Spoken": ["ISO 639-6 entity"], "Sonha": ["ISO 639-6 entity"], "Sonha Spoken": ["ISO 639-6 entity"], "Kochila Tharu": ["ISO 639-6 entity"], "Kochila Tharu Written": ["ISO 639-6 entity"], "Kochila Tharu Spoken": ["ISO 639-6 entity"], "Saptari-A": ["ISO 639-6 entity"], "Morangia": ["ISO 639-6 entity"], "Sarhali": ["ISO 639-6 entity"], "Udayapur": ["ISO 639-6 entity"], "Sunsari": ["ISO 639-6 entity"], "Siraha": ["ISO 639-6 entity"], "Dhaunsa": ["ISO 639-6 entity"], "Rana Tharu": ["ISO 639-6 entity"], "Rana Tharu Written": ["ISO 639-6 entity"], "Rana Tharu Spoken": ["ISO 639-6 entity"], "Buksa": ["ISO 639-6 entity"], "Deokri": ["ISO 639-6 entity"], "Deokri Spoken": ["ISO 639-6 entity"], "Deokri-A": ["ISO 639-6 entity"], "Don": ["ISO 639-6 entity", "One of the major rivers of Russia which rises in the town of Novomoskovsk southeast of Moscow, and flows for a distance of about 1,950 kilometres to the Sea of Azov."], "Chitwan Tharu": ["ISO 639-6 entity"], "Chitwan Tharu Written": ["ISO 639-6 entity"], "Chitwan Tharu Spoken": ["ISO 639-6 entity"], "Assamese Cluster": ["ISO 639-6 entity"], "Assamese Spoken": ["ISO 639-6 entity"], "Axamiy\u0101-Formal": ["ISO 639-6 entity"], "Axamiy\u0101 Standard": ["ISO 639-6 entity"], "Sibsagar": ["ISO 639-6 entity"], "Kamarupa": ["ISO 639-6 entity"], "Jiharwa": ["ISO 639-6 entity"], "Jiharwa Spoken": ["ISO 639-6 entity"], "Oriya Cluster": ["ISO 639-6 entity"], "Oriya Written": ["Written forms of the Oriya language."], "Oriya Written Oriya Script Historical": ["ISO 639-6 entity"], "Oriya Written Oriya Script": ["ISO 639-6 entity"], "Oriya Spoken": ["Dialects of the Oriya language."], "Formal Oriya": ["ISO 639-6 entity"], "Mughalbandi": ["ISO 639-6 entity"], "Oryia -NW": ["ISO 639-6 entity"], "Sambalpuri": ["ISO 639-6 entity"], "Oriyia -E": ["ISO 639-6 entity"], "Balasore-N": ["ISO 639-6 entity"], "Napore-C": ["ISO 639-6 entity"], "Oriya -S": ["ISO 639-6 entity"], "Reli": ["ISO 639-6 entity"], "Reli Spoken": ["ISO 639-6 entity"], "Bhuiya-O\uf0bcIa": ["ISO 639-6 entity"], "Bhuiya-Oriya Spoken": ["ISO 639-6 entity"], "Bodo Parja": ["A language of India."], "Bodo Parja Written": ["The written forms of the Bodo Parja language."], "Bodo Parja Written Oriya Script": ["The Bodo Parja language written with the Oriya Script."], "Bodo Parja Spoken": ["The Bodo Parja spoken language and its dialects."], "Jagannathi-Oriya": ["ISO 639-6 entity"], "Jagannathi- Oriya Spoken": ["ISO 639-6 entity"], "Bhatri": ["A language of India."], "Bhatri Spoken": ["The spoken Bhatri language and its dialects."], "Desiya Oriya": ["A language of India."], "Desiya Oriya Written": ["ISO 639-6 entity"], "Desiya Oriya Written Oriya Script": ["ISO 639-6 entity"], "Desiya Oriya Spoken": ["ISO 639-6 entity"], "Adivasi Oriya": ["ISO 639-6 entity"], "Adivasi Oriya Written": ["ISO 639-6 entity"], "Adivasi Oriya Written Telugu Script": ["ISO 639-6 entity"], "Adivasi Oriya Spoken": ["The dialects of the Adivasi Oriya language."], "Valmiki-OIa": ["ISO 639-6 entity"], "Valmiki-OIa Spoken": ["The dialects of the Valmiki-OIa language."], "Kupia": ["A language of India."], "Kupia Spoken": ["Dialects of the Kupia language."], "Bagata-OIa": ["ISO 639-6 entity"], "Bagata-OIa Spoken": ["ISO 639-6 entity"], "Mali-OIa": ["ISO 639-6 entity"], "Mali-OIa Spoken": ["ISO 639-6 entity"], "Degaru": ["A language of India."], "Degaru Spoken": ["ISO 639-6 entity"], "Sinhalese-Maldivian": ["ISO 639-6 entity"], "Maldivian Cluster": ["ISO 639-6 entity"], "Divehi": ["ISO 639-6 entity", "An Indo-Aryan language spoken in the Republic of Maldives and also in the island of Maliku (Minicoy) in Union territory of Lakshadweep, India."], "Divehi Written": ["ISO 639-6 entity"], "Divehi Written Dhivehi-Tana Script": ["ISO 639-6 entity"], "Divehi Written Thaana Script": ["ISO 639-6 entity"], "Divehi Spoken": ["ISO 639-6 entity"], "Maldive": ["ISO 639-6 entity"], "Minicoy": ["ISO 639-6 entity"], "Sinhala Cluster": ["ISO 639-6 entity"], "Sinhalese Written": ["Written forms of the Sinhalese language."], "Sinhalese Written Sinhalese Script Historical": ["ISO 639-6 entity"], "Sinhalese Written Sinhalese Script": ["ISO 639-6 entity"], "Sinhalese Spoken": ["ISO 639-6 entity"], "Sinhala-Formal": ["ISO 639-6 entity"], "Sinhala-Formal Written": ["ISO 639-6 entity"], "Generalised Colloquial Sinhalese": ["ISO 639-6 entity"], "Colombo-U": ["ISO 639-6 entity"], "Sinhala-SW": ["ISO 639-6 entity"], "Sinhala-NW": ["ISO 639-6 entity"], "Sinhala-E": ["ISO 639-6 entity"], "Kandyan": ["ISO 639-6 entity"], "Rodiya": ["ISO 639-6 entity"], "Veddah Cluster": ["ISO 639-6 entity"], "Veddah": ["ISO 639-6 entity"], "Domaaki": ["A Dardic language spoken in the Northern Areas of Pakistan."], "Dom Cluster": ["ISO 639-6 entity"], "Domari": ["ISO 639-6 entity"], "Domari Spoken": ["ISO 639-6 entity"], "Wogri-Boli": ["ISO 639-6 entity"], "Churi-Wali": ["ISO 639-6 entity"], "Luli": ["ISO 639-6 entity"], "Jugi": ["ISO 639-6 entity"], "Maznoug": ["ISO 639-6 entity"], "Multoni": ["ISO 639-6 entity"], "Qinati": ["ISO 639-6 entity"], "Koli-W": ["ISO 639-6 entity"], "Barake": ["ISO 639-6 entity"], "Kurbati": ["ISO 639-6 entity"], "Karachi": ["ISO 639-6 entity", "The largest city, main seaport and the financial capital of Pakistan."], "Beludj": ["ISO 639-6 entity"], "Marashi": ["ISO 639-6 entity"], "Y\u00fcr\u00fck": ["ISO 639-6 entity"], "Nablos": ["ISO 639-6 entity"], "Nawar": ["ISO 639-6 entity"], "Helebi": ["ISO 639-6 entity"], "Romani": ["A group of languages spoken by the Romani people."], "Vlax - Balkan Romani Cluster": ["A group of Romani languages."], "Vlax Romani Spoken": ["The dialects of the Vlax Romani language."], "Vlax Standard": ["A dialect of the Vlax Romani language."], "Churari": ["A dialect of the Vlax Romani language."], "Lovari": ["A dialect of the Vlax Romani language."], "Zagundzi": ["A dialect of the Vlax Romani language."], "Ghagar": ["A dialect of the Vlax Romani language."], "Vlach-NW": ["A dialect of the Vlax Romani language."], "Vlach-N": ["A dialect of the Vlax Romani language."], "Kalderashicqo": ["A dialect of the Vlax Romani language."], "Rusicqo": ["A dialect of the Vlax Romani language."], "Vlach-SE": ["A dialect of the Vlax Romani language."], "Kalderash-Machvanicqo": ["A dialect of the Vlax Romani language."], "Kalderash-S": ["A dialect of the Vlax Romani language."], "Grekurja": ["A dialect of the Vlax Romani language."], "Vlach-Albania-N": ["A dialect of the Vlax Romani language."], "Vlach-Albania-S": ["A dialect of the Vlax Romani language."], "Vlach-Sieve": ["A dialect of the Vlax Romani language."], "Vlach-Deutschland": ["A dialect of the Vlax Romani language."], "Vlach-France": ["A dialect of the Vlax Romani language."], "Vlach-Espa\u00f1a": ["A dialect of the Vlax Romani language."], "Vlach-Portugal": ["A dialect of the Vlax Romani language."], "Vlach-Brasil": ["A dialect of the Vlax Romani language."], "Vlach-Colombia": ["A dialect of the Vlax Romani language."], "Vlach-America": ["A dialect of the Vlax Romani language."], "Balkan Romani": ["A language of Serbia, Montenegro, Bulgaria, France, Germany, Greece, Hungary, Iran, Italy, Macedonia, Moldova, Romania and Turkey"], "Balkan Romani Written Cyrillic Script": ["A written form of the Balkan Romani language."], "Balkan Romani Written Latin Script": ["A written form of the Balkan Romani language."], "Balkan Romani Spoken": ["Dialects of the Balkan Romani language."], "Us\u00e1ri": ["Dialect of the Balkan Romani language."], "Karamtika": ["Dialect of the Balkan Romani language."], "Arlija": ["Dialect of the Balkan Romani language."], "Romani-Tinsmiths": ["Dialect of the Balkan Romani language."], "Khorakhane": ["Dialect of the Balkan Romani language."], "Dzambazi": ["Dialect of the Balkan Romani language."], "Jerdes": ["Dialect of the Balkan Romani language."], "Drind\u00e1ri": ["Dialect of the Balkan Romani language."], "Romani-Bulgaria-E": ["Dialect of the Balkan Romani language."], "Paspatian": ["Dialect of the Balkan Romani language."], "Romani-Ironsmiths": ["Dialect of the Balkan Romani language."], "Shiptari": ["Dialect of the Balkan Romani language."], "Zargari": ["Dialect of the Balkan Romani language."], "Northern Romani Cluster": ["A sub-group of the Romani languages spoken in various Northern European, Central European and Eastern European countries."], "Carpathian Romani": ["A language of Czech Republic."], "Carpathian Romani Written": ["Written forms of the Carpathian Romani language."], "Carpathian Romani Written Cyrillic Script": ["A written form of the Carpathian Romani language."], "Carpathian Romani Written Latin Script": ["A written form of the Carpathian Romani language."], "Carpathian Romani Spoken": ["The dialects of the Carpathian Romani language."], "Romani-Transylvania": ["A dialecta of the Carpathian Romani language."], "Romungre": ["A dialecta of the Carpathian Romani language."], "Sarvika": ["A dialecta of the Carpathian Romani language."], "Slovakian-E": ["A dialecta of the Carpathian Romani language."], "Slovakian-W": ["A dialecta of the Carpathian Romani language."], "Moravian": ["A dialecta of the Carpathian Romani language."], "Romani-Moravia": ["A dialecta of the Carpathian Romani language."], "Romani-Bohemia": ["A dialecta of the Carpathian Romani language."], "Galician Romani": ["A dialecta of the Carpathian Romani language."], "Sinte Romani Written": ["Written forms of the Sinte Romani language."], "Sinte Romani Written Latin Script": ["A written form of the Sinte Romani language."], "Sinte Romani Written Cyrillic Script": ["A written form of the Sinte Romani language."], "Sinte Romani Spoken": ["The dialects of the Sinte Romani language."], "Sinti-Volga": ["A dialect of the Sinte Romani language."], "Lallere": ["A dialect of the Sinte Romani language."], "Sinti-N": ["A dialect of the Sinte Romani language."], "Sinti-C": ["A dialect of the Sinte Romani language."], "Gadschkene": ["A dialect of the Sinte Romani language."], "Estracharia": ["A dialect of the Sinte Romani language."], "Krantiki": ["A dialect of the Sinte Romani language."], "Kranaria": ["A dialect of the Sinte Romani language."], "Eftawagaria": ["A dialect of the Sinte Romani language."], "Praistiki": ["A dialect of the Sinte Romani language."], "Sinti-SE": ["A dialect of the Sinte Romani language."], "Sinti-Piemonte": ["A dialect of the Sinte Romani language."], "Sinti-Abruzzo": ["A dialect of the Sinte Romani language."], "Sinti-France": ["A dialect of the Sinte Romani language."], "Baltic Romani": ["A Romany language in Poland, Belarus, Latvia, Lithuania and other countries."], "Baltic Romani Written": ["Written forms of the Baltic Romani language."], "Baltic Romani Written Cyrillic Script": ["A written form of the Baltic Romani language."], "Baltic Romani Written Latin Script": ["A written form of the Baltic Romani language."], "Baltic Romani Spoken": ["The dialects of the Baltic Romani language."], "Lotfitka-Rom\u00e1": ["A dialect of the Baltic Romani language."], "Lajenge-Rom\u00e1": ["A dialect of the Baltic Romani language."], "R\u00faska-Rom\u00e1": ["A dialect of the Baltic Romani language."], "Rom\u00e1-S": ["A dialect of the Baltic Romani language."], "Kalo Finnish Romani": ["A language of the Romani language family spoken by the Finnish Kale people in Finland."], "Kalo Finnish Romani Written": ["The written forms of the Kalo Finnish Romani language."], "Kalo Finnish Romani Written Latin Script": ["A written form of the Kalo Finnish Romani language."], "Kalo Finnish Romani Spoken": ["The dialects of the Kalo Finnish Romani language."], "Welsh Romani": ["A variety of the Romani language which was spoken fluently in Wales until at least 1950."], "Welsh Romani Spoken": ["The dialects of the Welsh Romani language."], "Iranian Unclassified": ["ISO 639-6 entity"], "Chinali": ["A language of India."], "Chinali Written": ["ISO 639-6 entity"], "Chinali Written Devangari Script": ["ISO 639-6 entity"], "Chinali Spoken": ["ISO 639-6 entity"], "Kanjari": ["A language of India."], "Kanjari Spoken": ["Dialects of the Kanjari language."], "Kumhali": ["A language of Nepal."], "Kumhali Spoken": ["ISO 639-6 entity"], "Memoni": ["ISO 639-6 entity"], "Memoni Spoken": ["ISO 639-6 entity"], "Od": ["ISO 639-6 entity"], "Od Written": ["ISO 639-6 entity"], "Od Written Sindhi Script": ["ISO 639-6 entity"], "Od Spoken": ["ISO 639-6 entity"], "Tippera": ["ISO 639-6 entity"], "Tippera Spoken": ["ISO 639-6 entity"], "Usui": ["ISO 639-6 entity"], "Usui Spoken": ["The dialects of the Usui language."], "Vaagria Booli": ["ISO 639-6 entity"], "Romany": ["ISO 639-6 entity"], "Lomavren Cluster": ["ISO 639-6 entity"], "Lomavren": ["ISO 639-6 entity"], "Lomavren Spoken": ["ISO 639-6 entity"], "Cal\u00f3 Cluster": ["A group of Romany languages."], "Cal\u00f3 Written": ["Written forms of the Cal\u00f3 language."], "Cal\u00f3 Written Latin Script": ["A written form of the Cal\u00f3 language."], "Cal\u00f3 Spoken": ["The dialects of the Cal\u00f3 language."], "Cal\u00f3-C": ["A dialect of the Cal\u00f3 language."], "Cala\u00f3": ["A dialect of the Cal\u00f3 language."], "Catalonian Cal\u00f3": ["A dialect of the Cal\u00f3 language spoken in Catalonia."], "Gitano": ["A dialect of the Cal\u00f3 language."], "Cal\u00f3-S": ["A dialect of the Cal\u00f3 language."], "Cal\u00f3-Brasil": ["A dialect of the Cal\u00f3 language."], "Rodi Cluster": ["ISO 639-6 entity"], "Traveller Danish": ["ISO 639-6 entity"], "Traveller Danish Spoken": ["ISO 639-6 entity"], "Dansk-Rodi": ["ISO 639-6 entity"], "Sk\u00e5nsk-Rodi": ["ISO 639-6 entity"], "Svenska-Rodi": ["ISO 639-6 entity"], "Travellers Norwegian": ["ISO 639-6 entity"], "Anglicised- Romani Cluster": ["ISO 639-6 entity"], "Angloromani": ["A language of United Kingdom, Australia and the USA."], "Angloromani Spoken": ["The dialects of the Angloromani language."], "Pogadi-Chib-A": ["A dialect of the Angloromani language."], "Anglo-Romani-America": ["A dialect of the Angloromani language spoken in America."], "Anglo-Romani-Africa": ["A dialect of the Angloromani language spoken in Africa."], "Anglo-Romani-Australia": ["A dialect of the Angloromani language spoken in Australia."], "Elamo Dravidian ": ["ISO 639-6 entity"], "Elamite": ["ISO 639-6 entity"], "Elamite Written": ["ISO 639-6 entity"], "Elamite Written Proto-Elamite Inscription": ["ISO 639-6 entity"], "Elamite Written Linear-Elamite Inscription": ["ISO 639-6 entity"], "Dravidian": ["A family of languages spoken by around 200 million people mainly in southern India and parts of eastern and central India as well as in northeastern Sri Lanka, Pakistan, Nepal, Bangladesh, Afghanistan, Iran, and overseas in other countries such as Malaysia and Singapore."], "Dravidian Northwest Cluster": ["A sub-group of Dravidian languages spoken in the Northwest of India."], "Brahui": ["A Dravidian language spoken primarily in the Balochistan region of Pakistan, as well as in Afghanistan and Iran."], "Brahui Written": ["Written forms of the Brahui language."], "Brahui Written Nastaliq Script": ["A written form of the Brahui language with the Nastaliq Script."], "Brahui Written Perso-Arabic Script: Kalat Model": ["The Brahui Language written in Perso-Arabic writing."], "Brahui Spoken": ["Dialects of the Brahui language."], "Bra'uidi-Formal": ["A dialect of the Brahui language."], "Jharawian": ["A dialect of the Brahui language."], "Kalat": ["A dialect of the Brahui language."], "Sarawan": ["A dialect of the Brahui language."], "Dravidian Proper": ["ISO 639-6 entity"], "Dravidian Northeast Cluster": ["A sub-group of the Dravidian languages family."], "Kurux": ["A Dravidian language spoken by the Oraon and Kisan tribal peoples of Bihar, Jharkhand, Orissa, Madhya Pradesh, Chhattisgarh, and West Bengal, India, as well as in northern Bangladesh."], "Kurux Written": ["The written forms of the Kurux language."], "Kurux Written Devanagari Script": ["The Kurux language written with the Devanagari script."], "Kurux Spoken": ["The dialects of the Kurux language."], "Oraon": ["A Dravidian language spoken by the Oraon tribe, in the states of Bihar, Jharkhand, Orissa, Madhya Pradesh, Chhattisgarh, and West Bengal, in eastern India, as well as in northern Bangladesh."], "Chota-Nagpur-Kurukh": ["ISO 639-6 entity"], "Chota-Nagpur-Kurukh Spoken": ["ISO 639-6 entity"], "Nepali Kurux": ["A language of Nepal."], "Sauria Paharia": ["ISO 639-6 entity"], "Sauria Paharia Spoken": ["ISO 639-6 entity"], "Sahibganj": ["ISO 639-6 entity"], "Godda": ["ISO 639-6 entity"], "Hiranpur": ["ISO 639-6 entity"], "Litipara": ["ISO 639-6 entity"], "Kumarbhag Paharia": ["A Dravidian language spoken by the Komhar Bhag Paharia tribe in Rajmahal Hills, India."], "Kumarbhag Paharia Spoken": ["ISO 639-6 entity"], "Malpaharia-Malto": ["ISO 639-6 entity"], "Sawriya-Malto": ["ISO 639-6 entity"], "Dravidian Central": ["ISO 639-6 entity"], "Kolami Parij": ["ISO 639-6 entity"], "Kolami Naiki Cluster": ["ISO 639-6 entity"], "Northwestern Kolami": ["A language of India."], "Northwestern Kolami Spoken": ["Dialects of the Northwestern Kolami language."], "Wardha": ["ISO 639-6 entity"], "Naikri": ["ISO 639-6 entity"], "Madka-Kinwat": ["ISO 639-6 entity"], "Pulgaon": ["ISO 639-6 entity"], "Wani": ["ISO 639-6 entity"], "Maregaon": ["ISO 639-6 entity"], "Southwestern Kolami": ["ISO 639-6 entity"], "Naiki-P": ["ISO 639-6 entity"], "Metla-Kinwat": ["ISO 639-6 entity"], "Utnur": ["ISO 639-6 entity"], "Asifabad-Naiki": ["ISO 639-6 entity"], "Adilabad-Naiki": ["ISO 639-6 entity"], "Parji Gadaba Cluster": ["ISO 639-6 entity"], "Duruwa": ["ISO 639-6 entity"], "Duruwa Written": ["ISO 639-6 entity"], "Duruwa Written Devanangari Script": ["ISO 639-6 entity"], "Duruwa Written Oriya Script": ["ISO 639-6 entity"], "Duruwa Spoken": ["ISO 639-6 entity"], "Tiriya": ["ISO 639-6 entity"], "Nethanar": ["ISO 639-6 entity"], "Dhurwa": ["ISO 639-6 entity"], "Kukanar": ["ISO 639-6 entity"], "Mudhili Gadaba": ["A language of India."], "Pottangi Ollar Gadaba": ["A language of India."], "Pottangi Ollar Gadaba Written": ["ISO 639-6 entity"], "Pottangi Ollar Gadaba Written Telugu Script": ["ISO 639-6 entity"], "Pottangi Ollar Gadaba Written Oriya Script": ["ISO 639-6 entity"], "Pottangi Ollar Gadaba Spoken": ["ISO 639-6 entity"], "Konekor": ["ISO 639-6 entity"], "Telugu Kui": ["ISO 639-6 entity"], "Gondi Kui": ["ISO 639-6 entity"], "Gondi Koya Cluster": ["ISO 639-6 entity"], "Southern Gondi": ["A language of India."], "Southern Gondi Spoken": ["The dialects of the Southern Gondi language."], "Sironcha": ["A dialect of the Southern Gondi language."], "Aheri": ["A dialect of the Southern Gondi language."], "Rajura": ["A dialect of the Southern Gondi language."], "Etapally-Gondi": ["A dialect of the Southern Gondi language."], "Adilabad-Gondi": ["A dialect of the Southern Gondi language."], "Northern Gondi": ["A language of India."], "Northern Gondi Spoken": ["ISO 639-6 entity"], "Betul": ["ISO 639-6 entity"], "Chhindwara": ["ISO 639-6 entity"], "Mandla": ["ISO 639-6 entity"], "Seoni": ["ISO 639-6 entity"], "Utnoor-Gondi": ["ISO 639-6 entity"], "Amravati": ["ISO 639-6 entity"], "Bhandara": ["ISO 639-6 entity"], "Nagpur": ["ISO 639-6 entity", "A city in the state of Maharashtra, and the largest city in the tribal central India."], "Yavatmal": ["ISO 639-6 entity"], "Koya": ["A language of India."], "Koya Spoken": ["Dialects of the Koya language."], "Malakanagiri-Koya": ["A dialect of the Koya language."], "Podia-Koya": ["A dialect of the Koya language."], "Chintoor-Koya": ["A dialect of the Koya language."], "Jaganathapuram-Koya": ["A dialect of the Koya language."], "Racha-Koya": ["A dialect of the Koya language."], "Konda-Rajulu": ["A dialect of the Koya language."], "Maria Written": ["The written forms of the Maria language."], "Maria Written Telugu Script": ["The Maria language written with the Telugu script."], "Maria Spoken": ["The dialects of the Maria language."], "Bhamani-Maria": ["A dialect of the Maria language."], "Adewada": ["A dialect of the Maria language."], "Etapally Maria": ["A dialect of the Maria language."], "Abuj-Maria": ["A dialect of the Maria language."], "Gatte-Maria": ["A dialect of the Maria language."], "Kondagaon-Muria": ["A dialect of the Maria language."], "Ghotul-Muria": ["A dialect of the Maria language."], "Dandami Maria": ["A language of India."], "Raj-Gondi": ["ISO 639-6 entity"], "Pardhan": ["ISO 639-6 entity"], "Eastern Muria": ["A language of India."], "Lanjoda": ["A dialect of the Eastern Muria language."], "Western Muria": ["ISO 639-6 entity"], "Far Western Muria": ["ISO 639-6 entity", "A language of India."], "Khirwar": ["A language spoken by the Khirwar people in the Surguja district at the borders of Madhya Pradesh and Uttar Pradesh, in India."], "Khirwar Spoken": ["The dialects of the Khirwar language."], "Nagarchal": ["ISO 639-6 entity"], "Konda Kui": ["ISO 639-6 entity"], "Konda Cluster": ["ISO 639-6 entity"], "Konda-Dora": ["A Dravidian language spoken in the Indian state of Andhra Pradesh, Assam and Orissa."], "Konda-Dora Spoken": ["Dialects of the Konda-Dora language."], "Mukha-Dora": ["ISO 639-6 entity"], "Mukha-Dora Spoken": ["ISO 639-6 entity"], "Nuka-Dora": ["ISO 639-6 entity"], "Reddi-Dora": ["ISO 639-6 entity"], "Manna-Dora": ["ISO 639-6 entity"], "Manna-Dora Spoken": ["ISO 639-6 entity"], "Godavari-E": ["ISO 639-6 entity"], "Srikakulam": ["ISO 639-6 entity"], "Visakhapatman": ["ISO 639-6 entity"], "Manna-S": ["ISO 639-6 entity"], "Manda Kui": ["ISO 639-6 entity"], "Kui-Kuvi Cluster": ["ISO 639-6 entity"], "Kui Spoken": ["ISO 639-6 entity"], "Khondi": ["ISO 639-6 entity"], "Kuttiya-Kandh": ["ISO 639-6 entity"], "Gumsai": ["ISO 639-6 entity"], "Kuvi": ["A language of India."], "Manda Pengo Cluster": ["ISO 639-6 entity"], "Manda": ["ISO 639-6 entity"], "Pengo": ["ISO 639-6 entity"], "Telugu Cluster": ["ISO 639-6 entity"], "Telugu Written Telugu Script Modern": ["The Telugu language written with the modern Telugu script."], "Telugu Written Latin Script": ["A written form of the Telugu language."], "Telugu Spoken": ["The dialects of the Telugu language."], "Telugu-Formal": ["A dialect of the Telugu language."], "Telugu-General": ["A dialect of the Telugu language."], "Srikaukulam": ["A dialect of the Telugu language."], "Visakhapatnam": ["A dialect of the Telugu language."], "Gunter": ["A dialect of the Telugu language."], "Telangana": ["A dialect of the Telugu language."], "East Godveri": ["A dialect of the Telugu language."], "Nellore": ["A dialect of the Telugu language."], "Beradi": ["A dialect of the Telugu language."], "Dasari": ["A dialect of the Telugu language."], "Dommara": ["A dialect of the Telugu language."], "Golari": ["A dialect of the Telugu language."], "Kamathi": ["A dialect of the Telugu language."], "Komtao": ["A dialect of the Telugu language."], "Salewari": ["A dialect of the Telugu language."], "Vadaga": ["A dialect of the Telugu language."], "Vadari": ["A dialect of the Telugu language."], "Yanadi": ["A dialect of the Telugu language."], "Konda-Reddi": ["A dialect of the Telugu language."], "Chenchu": ["A language spoken by the Chenchu people, an aboriginal tribe of the central hill regions of Andhra Pradesh, India."], "Chenchu Written": ["Written forms of the Chenchu language."], "Chenchu Written Telugu Script": ["A written form of the Chenchu language using the Telugu Script."], "Chenchu Spoken": ["Dialects of the Chenchu language."], "Savara": ["ISO 639-6 entity"], "Savara Written": ["ISO 639-6 entity"], "Savara Written Oriya Script": ["ISO 639-6 entity"], "Savara Written Telugu Script": ["ISO 639-6 entity"], "Waddar": ["ISO 639-6 entity"], "Holiya": ["A language of India."], "Dravidian South": ["ISO 639-6 entity"], "Tulu Cluster": ["ISO 639-6 entity"], "Tulu": ["A Dravidian language spoken by 1.95 million native speakers (1997) mainly in the southwest part of India known as Tulu Nadu."], "Tulu Written": ["The written forms of the Tulu language."], "Tulu Written Kannada Script": ["The Tulu language written with the Kannada script."], "Tulu Spoken": ["The dialects of the Tulu language."], "Bellari": ["A language of India."], "Kudiya": ["A language of India."], "Kudiya Written": ["Written forms of the Kudiya language."], "Kudiya Written Kannada Script": ["ISO 639-6 entity"], "Kudiya Written Malayalam Script": ["ISO 639-6 entity"], "Kudiya Spoken": ["Dialects of the Kudiya language."], "Korra Koraga": ["A language of India."], "Korra Koraga Spoken": ["Dialects of the Korra Koraga language."], "Ande": ["ISO 639-6 entity"], "Mudu": ["ISO 639-6 entity"], "Onti": ["ISO 639-6 entity"], "Tappu": ["ISO 639-6 entity"], "Mudu Koraga": ["ISO 639-6 entity"], "Tamil Kannada": ["ISO 639-6 entity"], "Kannada Cluster": ["ISO 639-6 entity"], "Kannada Written Kannada Script Modern": ["The Kannada language written with the modern Kannada script."], "Kannada Spoken": ["The dialects of the Kannada language."], "Aine Kuruba": ["A dialect of the Kannada language."], "Kannada-Formal": ["A dialect of the Kannada language."], "Kannada-Brahmin": ["A dialect of the Kannada language."], "Kannada-General": ["A dialect of the Kannada language."], "Gulbarga": ["A northern dialect of the Kannada language."], "Bijapur": ["A northern dialect of the Kannada language."], "Dharwar": ["A northern dialect of the Kannada language."], "Kannada-C": ["A dialect of the Kannada language."], "Mysore": ["A central dialect of the Kannada language."], "Havyaka": ["A central dialect of the Kannada language."], "Mangalore": ["A central dialect of the Kannada language."], "Gowda": ["A central dialect of the Kannada language."], "Sholaga": ["ISO 639-6 entity"], "Badaga": ["A language of India."], "Tamil Nadu": ["A dialect of Badaga spoken in Tamil Nadu, India.", "A state at the southern tip of India. Its capital and largest city is Chennai."], "Madras-Nilgiri": ["A language of India."], "Kunda": ["A language of India.", "A language of Zimbabwe, Mozambique and Zambia."], "Tamil-Kodagu": ["ISO 639-6 entity"], "Kodagu Cluster": ["ISO 639-6 entity"], "Kurumba": ["ISO 639-6 entity", "A language of India."], "Kurumba-C": ["ISO 639-6 entity"], "Kurumba-C Spoken": ["ISO 639-6 entity"], "Naik-Kurumba": ["ISO 639-6 entity"], "Urali": ["ISO 639-6 entity"], "Urali Spoken": ["The dialects of the Urali language."], "Ponai-Kurumba": ["A dialect of the Urali language."], "Jennu Kurumba": ["ISO 639-6 entity"], "Betta Kurumba Spoken": ["ISO 639-6 entity"], "Betta-Kurumba-A": ["ISO 639-6 entity"], "Betta-Kuruba": ["ISO 639-6 entity"], "Mullu Kurumba": ["A language of India."], "Mullu Kurumba Spoken": ["ISO 639-6 entity"], "Alu Kurumba": ["ISO 639-6 entity"], "Alu Kurumba Spoken": ["The dialects of the Alu Kurumba language."], "Toda-Kota Cluster": ["ISO 639-6 entity"], "Toda": ["ISO 639-6 entity"], "Toda Written": ["ISO 639-6 entity"], "Toda Written Tamil Script": ["ISO 639-6 entity"], "Toda Spoken": ["ISO 639-6 entity"], "Kota": ["A language of India.", "A language of Gabon and Congo-Brazzaville."], "Kota Written": ["Written forms of the Kota language."], "Kota Written Tamil Script": ["ISO 639-6 entity"], "Kota Spoken": ["Dialects of the Kota language."], "Kota-A": ["A dialect of the Kota language."], "Ko-Bashai": ["A dialect of the Kota language."], "Kodagu": ["A dravidian language spoken by the Kodava people in the district of Coorg, in the State of Karnataka, India."], "Kodagu Written": ["Written forms of the Kodagu language."], "Kodagu Written Kannada Script": ["a written form of the Kodagu language."], "Kodagu Spoken": ["Dialects of the Kodagu language."], "Tamil Irula": ["A dravidian language spoken by the Irula people, living in the hills of Nilgiri, in the State of Tamil Nadu and Karnataka in India."], "Irula": ["A language of India."], "Irula Written": ["ISO 639-6 entity"], "Irula Spoken": ["ISO 639-6 entity"], "Irula South": ["ISO 639-6 entity"], "Irula North": ["ISO 639-6 entity"], "Irula Pallar": ["ISO 639-6 entity"], "Vette Kada Irula": ["ISO 639-6 entity"], "Yerukula": ["ISO 639-6 entity"], "Yerukula Written": ["ISO 639-6 entity"], "Yerukula Written Telugu Script": ["ISO 639-6 entity"], "Yerukula Spoken": ["ISO 639-6 entity"], "Parikala": ["ISO 639-6 entity"], "Sankara": ["ISO 639-6 entity"], "Kapparalatippa": ["ISO 639-6 entity"], "Katherollu": ["ISO 639-6 entity"], "Korcha": ["ISO 639-6 entity"], "Kunceti": ["ISO 639-6 entity"], "Tamil Cluster": ["ISO 639-6 entity"], "Centamil": ["ISO 639-6 entity"], "Centamil Written Tamil Script": ["ISO 639-6 entity"], "Centamil Spoken": ["The dialects of the Centamil language."], "Konduntamil": ["ISO 639-6 entity"], "Konduntamil Written Tamil Script": ["ISO 639-6 entity"], "Konduntamil Spoken": ["ISO 639-6 entity"], "Tamil Written": ["The written forms of the Tamil language."], "Tamil Written Tamil Script Pre-Modern": ["A written form of the Tamil language."], "Tamil Written Tamil Script Modern": ["A written form of the Tamil language."], "Tamil Spoken": ["The dialects of the Tamil language."], "Adi Dravida": ["A dialect of the Tamil language."], "Aiyar": ["A dialect of the Tamil language."], "Aiyangar": ["A dialect of the Tamil language."], "Arava": ["A dialect of the Tamil language."], "Burgandi": ["A dialect of the Tamil language."], "Kongar": ["A dialect of the Tamil language."], "Madurai": ["A dialect of the Tamil language."], "Pattapau Bhasha": ["A dialect of the Tamil language."], "Burma Tamil": ["A dialect of the Tamil language."], "Tigalu": ["A dialect of the Tamil language."], "Harijan": ["A dialect of the Tamil language."], "Sanketi": ["A dialect of the Tamil language."], "Madras Bashae": ["A dialect of the Tamil language."], "Kumari": ["A dialect of the Tamil language."], "Hebbar": ["A dialect of the Tamil language."], "Sri-Lanka-Tamil-N": ["ISO 639-6 entity"], "Sri-Lanka-Tamil-NE": ["ISO 639-6 entity"], "Sri-Lanka-Tamil-SE": ["ISO 639-6 entity"], "Kaikadi": ["A language of India."], "Kaikadi Spoken": ["Dialects of the Kaikadi language."], "Kadar": ["ISO 639-6 entity"], "Kadar Spoken": ["ISO 639-6 entity"], "Mannan": ["ISO 639-6 entity"], "Mannan Spoken": ["ISO 639-6 entity"], "Muthuvan": ["ISO 639-6 entity"], "Muthuvan Spoken": ["ISO 639-6 entity"], "Malayalam Written": ["Written forms of the Malayalam language."], "Malayalam Written Vazhappalli Script": ["ISO 639-6 entity"], "Malayalam Written Malayalam Script Pre-Modern": ["ISO 639-6 entity"], "Malayalam Written Malayalam Script Modern": ["ISO 639-6 entity"], "Malayalam Written Arabic Script": ["ISO 639-6 entity"], "Malayalam Spoken": ["Dialects of the Malayalam language."], "Malayalam-Formal": ["ISO 639-6 entity"], "Malayalam-G": ["ISO 639-6 entity"], "South Kerela": ["ISO 639-6 entity"], "North Kerela": ["ISO 639-6 entity"], "Central Kerela": ["ISO 639-6 entity"], "Moplah": ["ISO 639-6 entity", "ISO 639-6 entity"], "Nagari-Malayalam": ["ISO 639-6 entity"], "Kayavar": ["ISO 639-6 entity"], "Palayan": ["ISO 639-6 entity"], "Namboodiri": ["ISO 639-6 entity"], "Nayar": ["ISO 639-6 entity"], "Nasrani": ["ISO 639-6 entity"], "Aranadan": ["A language spoken by the Aranadan people in Nilambur Valley, Malappuram\\ndistrict, Kerala State of India."], "Aranadan Spoken": ["The Aranadan spoken language and its dialects."], "Malapandaram": ["ISO 639-6 entity"], "Malapandaram Spoken": ["ISO 639-6 entity"], "Malankuravan": ["ISO 639-6 entity"], "Malankuravan Spoken": ["ISO 639-6 entity"], "Malankuravan-A": ["ISO 639-6 entity"], "Malayadiars": ["ISO 639-6 entity"], "Malaryan": ["ISO 639-6 entity"], "Malaryan Written": ["ISO 639-6 entity"], "Malaryan Written Malayalam Script": ["ISO 639-6 entity"], "Malaryan Spoken": ["ISO 639-6 entity"], "Malavedan": ["ISO 639-6 entity"], "Malavedan Spoken": ["ISO 639-6 entity"], "Malavedan-A": ["ISO 639-6 entity"], "Vettuvan": ["ISO 639-6 entity"], "Paniya": ["ISO 639-6 entity"], "Paniya Spoken": ["ISO 639-6 entity"], "Paliyan": ["ISO 639-6 entity"], "Paliyan Spoken": ["ISO 639-6 entity"], "Mala Pulayan": ["ISO 639-6 entity"], "Ravula": ["ISO 639-6 entity"], "Ravula Written": ["ISO 639-6 entity"], "Ravula Written Kannada Script": ["ISO 639-6 entity"], "Ravula Written Malayalam Script": ["ISO 639-6 entity"], "Ravula Spoken": ["ISO 639-6 entity"], "Adiya": ["ISO 639-6 entity"], "Pani Yerava": ["ISO 639-6 entity"], "Panjiri Yerava": ["ISO 639-6 entity"], "Southern Dravidian Unclassified": ["ISO 639-6 entity"], "Ullatan": ["ISO 639-6 entity"], "Ullatan Written": ["ISO 639-6 entity"], "Ullatan Written Malayalam Script": ["ISO 639-6 entity"], "Ullatan Spoken": ["ISO 639-6 entity"], "Dravidian Unclassified": ["ISO 639-6 entity"], "Allar": ["ISO 639-6 entity"], "Allar Written": ["ISO 639-6 entity"], "Allar Spoken": ["The dialects of the Allar language."], "Bazigar": ["A language of India."], "Bazigar Written": ["The written forms of the Bazigar language."], "Bazigar Spoken": ["The spoken Bazigar language and its dialects."], "Bharia": ["A language of India.", "One of tribes of Madhya Pradesh in India."], "Bharia Written": ["The written forms of the Bharia language."], "Bharia Written Devanagari Script": ["The Bharia language written with the devanagari Script."], "Bharia Spoken": ["The spoken Bharia language and its dialects."], "Kamar": ["A language of India."], "Kamar Spoken": ["ISO 639-6 entity"], "Kanikkaren": ["ISO 639-6 entity"], "Kanikkaren Spoken": ["ISO 639-6 entity"], "Kurichiya": ["A language spoken by the Kurichiya people, one of the earliest inhabitants of the Wyanad forest areas in the Indian state of Kerala."], "Vishavan": ["ISO 639-6 entity"], "Vishavan Spoken": ["ISO 639-6 entity"], "Hadza": ["A language of Tanzania"], "Hadza Written": ["The written forms of the Hadza language."], "Hadza Written Latin Script": ["A written form of the Hadza language."], "Hadza Spoken": ["The dialects of the Hadza language."], "Merilu": ["A dialect of the Hadza language."], "Sandawe Cluster": ["ISO 639-6 entity"], "Sandawe": ["ISO 639-6 entity"], "Sandawe Written": ["ISO 639-6 entity"], "Sandawe Written Latin Script": ["A written form of the Sandawe language."], "Sandawe Spoken": ["ISO 639-6 entity"], "Bisa": ["ISO 639-6 entity"], "Telha": ["ISO 639-6 entity"], "Southern Africa Central": ["ISO 639-6 entity"], "Nama Cluster": ["ISO 639-6 entity"], "Nama (Nambia)": ["ISO 639-6 entity"], "Nama (Nambia) Written": ["ISO 639-6 entity"], "Nama (Nambia) Spoken": ["ISO 639-6 entity"], "Nama-Formal": ["ISO 639-6 entity"], "Nama-Forma Spoken": ["ISO 639-6 entity"], "Nama-G": ["ISO 639-6 entity"], "Nama-G Spoken": ["ISO 639-6 entity"], "Damara-E": ["ISO 639-6 entity"], "L\u2019xau-C\u2019g\u00f5a": ["ISO 639-6 entity"], "T\u2019ao-Ni": ["ISO 639-6 entity"], "Mun-L\u2019i": ["ISO 639-6 entity"], "Q\u2019xara-Kai-Kxoe": ["ISO 639-6 entity"], "Q\u2019ami-Nt\u2019u": ["ISO 639-6 entity"], "Kai-L\u2019xau": ["ISO 639-6 entity"], "L\u2019o-Kai": ["ISO 639-6 entity"], "L\u2019ghapope": ["ISO 639-6 entity"], "Kxaro-Q\u2019oa": ["ISO 639-6 entity"], "L\u2019aixa-L\u2019ae": ["ISO 639-6 entity"], "Kai-L\u2019xaua": ["ISO 639-6 entity"], "C\u2019xope-Si": ["ISO 639-6 entity"], "T\u2019ama": ["ISO 639-6 entity"], "C\u2019hai-C\u2019xaua": ["ISO 639-6 entity"], "T\u2019au": ["ISO 639-6 entity"], "Ao-Kupu": ["ISO 639-6 entity"], "T\u00e3una-Tama": ["ISO 639-6 entity"], "Q\u2019oe-T\u2019g\u00e3": ["ISO 639-6 entity"], "\u00c3i Cluster": ["ISO 639-6 entity"], "C\u2019oo-Xoo": ["ISO 639-6 entity"], "T\u2019nam-L\u2019ae": ["ISO 639-6 entity"], "Q\u2019ao": ["ISO 639-6 entity"], "C\u2019h\u00f5a": ["ISO 639-6 entity"], "Q\u2019kabe": ["ISO 639-6 entity"], "Xiri": ["ISO 639-6 entity"], "Korana": ["An extinct language of South Africa."], "Korana Written": ["The written forms of the Korana language."], "T\u2019nuu-L\u2019ae": ["ISO 639-6 entity"], "Kai-Q\u2019ora": ["ISO 639-6 entity"], "Kx\u2019am-L\u2019\u00f5a": ["ISO 639-6 entity"], "L\u2019are-M\u00e3a-L\u2019ae": ["ISO 639-6 entity"], "C\u2019hoa-L\u2019ae": ["ISO 639-6 entity"], "Tshu-Kwe": ["ISO 639-6 entity"], "Tshu-Khwe Southwest Cluster": ["ISO 639-6 entity"], "Naro": ["ISO 639-6 entity"], "Q\u2019ko-Khoe": ["ISO 639-6 entity"], "Q\u2019ave-Khoe": ["ISO 639-6 entity"], "L\u2019ai-Khoe": ["ISO 639-6 entity"], "C\u2019am-Kwe": ["ISO 639-6 entity"], "Ts\u2019auru-Khoe": ["ISO 639-6 entity"], "Q\u2019gin-Khoe": ["ISO 639-6 entity"], "Ts\u2019ao- Nc\u2019hai": ["ISO 639-6 entity"], "Ts\u2019ao-Khoe": ["ISO 639-6 entity"], "Nc\u2019hai": ["ISO 639-6 entity"], "Nc\u2019hai-Tse": ["ISO 639-6 entity"], "Nyive-Kxo": ["ISO 639-6 entity"], "T\u2019heva-Khoe": ["ISO 639-6 entity"], "K\u2019ere-Khoe": ["ISO 639-6 entity"], "Dom-Khoe": ["ISO 639-6 entity"], "Du-Kwe": ["ISO 639-6 entity"], "L\u2019gaa-Khoe": ["ISO 639-6 entity"], "//Gana": ["A Khoisan language of Botswana"], "//Gana Spoken": ["The dialects of the //Gana language."], "/Gwi": ["ISO 639-6 entity"], "Mo-Lepolole": ["ISO 639-6 entity"], "Tshu-Khwe Northeast Cluster": ["ISO 639-6 entity"], "L\u2019goro-Khwe": ["ISO 639-6 entity"], "L\u2019gulu": ["ISO 639-6 entity"], "L\u2019gulu Spoken": ["ISO 639-6 entity"], "L\u2019golo": ["ISO 639-6 entity"], "L\u2019golo Spoken": ["ISO 639-6 entity"], "Ganadi ": ["ISO 639-6 entity"], "Ganadi Spoken": ["ISO 639-6 entity"], "Kwe-E-Tsho-Ri": ["ISO 639-6 entity"], "Kwe-E-Tsho-Ri Spoken": ["ISO 639-6 entity"], "Kua": ["ISO 639-6 entity"], "Kua Spoken": ["ISO 639-6 entity"], "Tsoa": ["A language of Botswana and Zimbabwe."], "Tsoa Spoken": ["The dialects of the Tsoa language."], "L\u2019gabake-Tsho-Ri": ["ISO 639-6 entity"], "L\u2019gabake-Tsho-Ri Spoken": ["ISO 639-6 entity"], "Mohisa": ["ISO 639-6 entity"], "Mohisa Spoken": ["ISO 639-6 entity"], "Kovee-N-Tsho-Ri": ["ISO 639-6 entity"], "Kovee-N-Tsho-Ri Spoken": ["ISO 639-6 entity"], "Tshu-Khwe Cluster": ["ISO 639-6 entity"], "Nl\u2019oo-Khoe": ["ISO 639-6 entity"], "Nl\u2019oo-Khoe Spoken": ["ISO 639-6 entity"], "Ts\u2019ixa-Khoe": ["ISO 639-6 entity"], "Ts\u2019ixa-Khoe Spoken": ["ISO 639-6 entity"], "Bore-Khoe": ["ISO 639-6 entity"], "Bore-Khoe Spoken": ["ISO 639-6 entity"], "Danisa": ["ISO 639-6 entity"], "Danisa Spoken": ["ISO 639-6 entity"], "Shua": ["ISO 639-6 entity"], "Shua Written": ["ISO 639-6 entity"], "Shua Spoken": ["ISO 639-6 entity"], "L\u2019aiye": ["ISO 639-6 entity"], "L\u2019aiye Spoken": ["ISO 639-6 entity"], "Tshuma-Khoe": ["ISO 639-6 entity"], "Tshuma-Khoe Spoken": ["ISO 639-6 entity"], "L\u2019oree-Khoe": ["ISO 639-6 entity"], "L\u2019oree-Khoe Spoken": ["ISO 639-6 entity"], "C\u2019haise": ["ISO 639-6 entity"], "C\u2019haise Spoken": ["ISO 639-6 entity"], "Tcaiti-Khoe": ["ISO 639-6 entity"], "Tcaiti-Khoe Spoken": ["ISO 639-6 entity"], "Hura": ["ISO 639-6 entity"], "Hura Spoken": ["ISO 639-6 entity"], "Tshu-Khwe Central Cluster": ["ISO 639-6 entity"], "Deti-Khoe ": ["ISO 639-6 entity"], "Deti-Khoe Spoken": ["ISO 639-6 entity"], "Tshu-Khwe Northwest Cluster": ["ISO 639-6 entity"], "//Ani Spoken": ["ISO 639-6 entity"], "Gali-Kwe": ["ISO 639-6 entity"], "Gali-Kwe Spoken": ["ISO 639-6 entity"], "Goe-Kwe": ["ISO 639-6 entity"], "Goe-Kwe Spoken": ["ISO 639-6 entity"], "Gari-Kwe": ["ISO 639-6 entity"], "Gari-Kwe Spoken": ["ISO 639-6 entity"], "L\u2019kani-Kxoe": ["ISO 639-6 entity"], "L\u2019kani-Kxoe Spoken": ["ISO 639-6 entity"], "Boga-Kxoe": ["ISO 639-6 entity"], "Boga-Kxoe Spoken": ["The dialects of the Boga-Kxoe language."], "Buma-Kxoe": ["ISO 639-6 entity"], "Buma-Kxoe Spoken": ["ISO 639-6 entity"], "Kxoe": ["ISO 639-6 entity"], "Kxoe Written": ["ISO 639-6 entity"], "Kxoe Spoken": ["ISO 639-6 entity"], "[[Xo-Kxoe": ["ISO 639-6 entity"], "Q\u2019hu-Kwe": ["ISO 639-6 entity"], "Zama": ["ISO 639-6 entity"], "Kwengo": ["ISO 639-6 entity"], "Glanda-Khwe": ["ISO 639-6 entity"], "Schekere": ["ISO 639-6 entity"], "Hain//Um Cluster": ["ISO 639-6 entity"], "Hai//\u2019Om": ["ISO 639-6 entity"], "Hain//Um": ["ISO 639-6 entity"], "Kedi": ["ISO 639-6 entity"], "Cwaga": ["ISO 639-6 entity"], "Strandl\u00e4ufer'": ["ISO 639-6 entity"], "Kwadi Cluster": ["ISO 639-6 entity"], "Kwadi": ["An extinct language of Angola."], "Kwise": ["ISO 639-6 entity"], "Zorotua": ["ISO 639-6 entity"], "Khoisan Southern Africa": ["ISO 639-6 entity"], "Khoisan Southern Africa Northern Cluster": ["ISO 639-6 entity"], "!O!Ung": ["A language of Angola."], "Maligo": ["ISO 639-6 entity"], "Q\u2019o-Q\u2019xung-C": ["ISO 639-6 entity"], "Q\u2019o-Q\u2019xung-S": ["ISO 639-6 entity"], "Kung-Ekoka": ["A language of Namibia and Angola."], "Xung-Ukuambi": ["ISO 639-6 entity"], "Xung-Ukuambi Spoken": ["ISO 639-6 entity"], "Uukualuthi": ["ISO 639-6 entity"], "Ukuambi": ["ISO 639-6 entity"], "Xung-Heikum": ["ISO 639-6 entity"], "Xung-Heikum Spoken": ["ISO 639-6 entity"], "Heil\u2019um": ["ISO 639-6 entity"], "Heikum": ["ISO 639-6 entity"], "Xung-Chu": ["ISO 639-6 entity"], "Xung-T\u2019kung-N": ["ISO 639-6 entity"], "Xung-T\u2019k\u0165": ["ISO 639-6 entity"], "Xung-T\u2019ung-S": ["ISO 639-6 entity"], "L\u2019khau-L\u2019en": ["ISO 639-6 entity"], "Au-Kwe": ["ISO 639-6 entity"], "Au-San": ["ISO 639-6 entity"], "No-Gau": ["ISO 639-6 entity"], "Ju/\u2019Hoan": ["ISO 639-6 entity"], "Zhu-Oase": ["ISO 639-6 entity"], "Ho\u00e3": ["ISO 639-6 entity"], "Southern Africa Southern": ["ISO 639-6 entity"], "Ta\u2019a Cluster": ["ISO 639-6 entity"], "C\u2019gwi": ["ISO 639-6 entity"], "Q\u2019xony-E": ["ISO 639-6 entity"], "P\u2019kha": ["ISO 639-6 entity"], "Sasi": ["ISO 639-6 entity"], "L\u2019nah": ["ISO 639-6 entity"], "P\u2019ha": ["ISO 639-6 entity"], "!X\u00f2\u00f6": ["A Khoisan language spoken in Botswana and Namibia."], "Tsha-Si": ["ISO 639-6 entity"], "Q\u2019xony-W": ["ISO 639-6 entity"], "Q\u2019gao-Kx\u2019a": ["ISO 639-6 entity"], "Q\u2019kong": ["ISO 639-6 entity"], "Nc\u2019u-L\u2019en": ["ISO 639-6 entity"], "Nc\u2019u-San": ["ISO 639-6 entity"], "Nc\u2019u-Mde": ["ISO 639-6 entity"], "Nl\u2019ahnsa": ["ISO 639-6 entity"], "Nl\u2019ahnsa Spoken": ["ISO 639-6 entity"], "Tuu-Nl\u2019ahnsa": ["ISO 639-6 entity"], "Lala": ["ISO 639-6 entity"], "Owa": ["ISO 639-6 entity"], "L\u2019naheh": ["ISO 639-6 entity"], "L\u2019gui": ["ISO 639-6 entity"], "Q\u2019ama": ["ISO 639-6 entity"], "Q\u2019ohju": ["ISO 639-6 entity"], "Unka-Te": ["ISO 639-6 entity"], "L\u2019oal\u2019ei": ["ISO 639-6 entity"], "Kic\u2019hazi- Kakia": ["ISO 639-6 entity"], "Kic\u2019hazi- Kakia Spoken": ["ISO 639-6 entity"], "Kic\u2019hazi": ["ISO 639-6 entity"], "Kakia": ["ISO 639-6 entity"], "T\u2019atia": ["ISO 639-6 entity"], "Nc\u2019hu-Ki-A": ["ISO 639-6 entity"], "T\u2019khomani": ["ISO 639-6 entity"], "Nl\u2019-T\u2019ke": ["ISO 639-6 entity"], "C\u2019auni": ["ISO 639-6 entity"], "Kic\u2019hasi": ["ISO 639-6 entity"], "T\u2019kaurure-Nl\u2019ai": ["ISO 639-6 entity"], "N|U": ["ISO 639-6 entity"], "Vasekela Bushman": ["ISO 639-6 entity"], "!Wi Cluster": ["ISO 639-6 entity"], "Seroa": ["An extinct language of South Africa."], "L\u2019kul\u2019e": ["ISO 639-6 entity"], "Boshof'": ["ISO 639-6 entity"], "Qacha\u2019s-Neck'": ["ISO 639-6 entity"], "Q\u2019\u00e3nq\u2019e": ["ISO 639-6 entity"], "//Xegwi": ["ISO 639-6 entity"], "L\u2019xogwi": ["ISO 639-6 entity"], "C\u2019xam": ["ISO 639-6 entity"], "Katkop'": ["ISO 639-6 entity"], "Strontbergen'": ["ISO 639-6 entity"], "Kordofanian": ["ISO 639-6 entity"], "Kordofanian Proper": ["ISO 639-6 entity"], "Katla Cluster": ["ISO 639-6 entity"], "Katla": ["A Kordofanian language of Sudan."], "Betel-Gali-A-Kalak": ["ISO 639-6 entity"], "Betel-Gali-A-Kalak Spoken": ["ISO 639-6 entity"], "Bombori- Kiddu": ["ISO 639-6 entity"], "Kirkpong-Karoka": ["ISO 639-6 entity"], "Koldrong": ["ISO 639-6 entity"], "Julud": ["ISO 639-6 entity"], "Tima": ["ISO 639-6 entity"], "Tima Spoken": ["ISO 639-6 entity"], "Heiban": ["ISO 639-6 entity", "A language of Sudan"], "Heiban-West Central": ["ISO 639-6 entity"], "Heiban-West Central Western": ["ISO 639-6 entity"], "Moro": ["ISO 639-6 entity"], "Moro Spoken": ["ISO 639-6 entity"], "Logorban": ["ISO 639-6 entity"], "Morong-A": ["ISO 639-6 entity"], "Umm-Gabralla": ["ISO 639-6 entity"], "Acheron": ["ISO 639-6 entity", "A language of Sudan."], "Nderre": ["ISO 639-6 entity"], "Laiyen": ["ISO 639-6 entity"], "Nubwa": ["ISO 639-6 entity"], "Ulba": ["ISO 639-6 entity"], "Werria": ["ISO 639-6 entity"], "Lebu": ["ISO 639-6 entity"], "Tira": ["ISO 639-6 entity"], "Ngarta-Nga-Tiro": ["ISO 639-6 entity"], "Ngarta-Nga-Tiro Spoken": ["ISO 639-6 entity"], "Tira-El-Akhdar": ["ISO 639-6 entity"], "Tira-Mandi": ["ISO 639-6 entity"], "Kinderma": ["ISO 639-6 entity"], "Tira-Lumun": ["ISO 639-6 entity"], "Shirumba Cluster": ["ISO 639-6 entity"], "Nguron-Ngadi-Ngi-Shirumba": ["ISO 639-6 entity"], "Shwai": ["ISO 639-6 entity"], "Sheibun": ["ISO 639-6 entity"], "Ndano": ["ISO 639-6 entity"], "Heiban Westcentral Central ": ["ISO 639-6 entity"], "Ebang-Logol": ["ISO 639-6 entity"], "Utoro Cluster": ["ISO 639-6 entity"], "Otoro": ["ISO 639-6 entity"], "Dhi-Jama": ["ISO 639-6 entity"], "Dhu-Gwujur": ["ISO 639-6 entity"], "Dhu-Kwara": ["ISO 639-6 entity"], "Dhu-Gurila": ["ISO 639-6 entity"], "Dho-Rombe": ["ISO 639-6 entity"], "Dha-Garro": ["ISO 639-6 entity"], "Dh\u00f6-G\u00f6rindi": ["ISO 639-6 entity"], "Eebang Laaru Cluster": ["ISO 639-6 entity"], "Dhu-Gun-Dha-Dhi-L-Abla-A": ["ISO 639-6 entity"], "Laro": ["ISO 639-6 entity"], "Igwormany": ["ISO 639-6 entity"], "Tunduli": ["ISO 639-6 entity"], "Logol Cluster": ["ISO 639-6 entity"], "Logol": ["ISO 639-6 entity", "A language of Sudan."], "Rere Cluster": ["ISO 639-6 entity"], "Koalib": ["A Niger-Congo language in the Heiban family spoken by the Koalib Nuba, Turum, and Umm Heitan ethnic groups in Sudan."], "Koalib Written": ["The written forms of the Koalib language."], "Koalib Spoken": ["The dialects of the Koalib language."], "Ngu-Qwurang": ["ISO 639-6 entity"], "Ngi-Reere": ["ISO 639-6 entity"], "Ngu-Nduna": ["ISO 639-6 entity"], "Ngi-Nyukwur": ["ISO 639-6 entity"], "Ngi-Nyukwur Spoken": ["ISO 639-6 entity"], "Nyukwur-A": ["ISO 639-6 entity"], "Hadra": ["ISO 639-6 entity"], "Heiban Eastern Cluster": ["ISO 639-6 entity"], "Warnang": ["ISO 639-6 entity"], "Ko": ["A language of Sudan."], "Nyaro": ["ISO 639-6 entity"], "Fungor": ["ISO 639-6 entity"], "Talodi": ["ISO 639-6 entity", "ISO 639-6 entity"], "Talodi Proper": ["ISO 639-6 entity"], "Ngile- Dengebu Cluster": ["ISO 639-6 entity"], "Ngile": ["A language of Sudan."], "Ngile Spoken": ["The dialects of the Ngile language."], "Masakin-Qusar": ["A dialect of the Ngile language."], "Masakin-Buram": ["A dialect of the Ngile language."], "Masakin-Tuwal": ["A dialect of the Ngile language."], "Aheima": ["A dialect of the Ngile language."], "Daloka": ["A dialect of the Ngile language."], "Dagik": ["A language of Sudan."], "Dengebu": ["ISO 639-6 entity"], "Tocho Cluster": ["ISO 639-6 entity"], "East Acheron": ["A dialect of the Acheron language."], "West Acheron": ["A dialect of the Acheron language."], "Lumun": ["A language of Sudan."], "Tocho": ["ISO 639-6 entity"], "Torona": ["ISO 639-6 entity"], "Jomang Cluster": ["ISO 639-6 entity"], "Tasomi": ["ISO 639-6 entity"], "Ga-Jomang": ["ISO 639-6 entity"], "Nding Cluster": ["ISO 639-6 entity"], "Nding": ["A language of Sudan."], "Lafofa": ["A language of Sudan."], "Kidie-Lafofa": ["A language spoken in and aroung the Lafofa village in Sudan."], "Lafofa-C ": ["ISO 639-6 entity"], "Umm-Shatta": ["ISO 639-6 entity"], "Amira": ["ISO 639-6 entity"], "Tegem": ["A Niger\u2013Congo language spoken in Kordofan, Sudan."], "Rashad Cluster": ["ISO 639-6 entity"], "Tagoi": ["ISO 639-6 entity"], "Orig": ["ISO 639-6 entity"], "Tu-Male": ["ISO 639-6 entity"], "Moreb": ["ISO 639-6 entity"], "Ta-Gogen": ["ISO 639-6 entity"], "Wadelka": ["ISO 639-6 entity"], "Tegali": ["ISO 639-6 entity"], "Nge-Kom": ["ISO 639-6 entity"], "Tingal": ["ISO 639-6 entity"], "Korean-Japanese": ["ISO 639-6 entity"], "Korean Written": ["Written forms of the Korean language."], "Korean Written Chinese Hyanchal Script": ["A written form of the Korean language."], "Korean Written Chinese Kwukyel Script": ["A written form of the Korean language."], "Korean Written Chinese Itwu Script": ["A written form of the Korean language."], "Korean Written Hanja Script": ["A written form of the Korean language."], "Korean Written Han-G\u016dl Script": ["A written form of the Korean language."], "Korean Spoken": ["Dialects of the Korean language."], "Korean-S": ["ISO 639-6 entity"], "Korean-S Written": ["ISO 639-6 entity"], "Korean-S Written Hanja Script": ["ISO 639-6 entity"], "Korean-S Written Han-G\u016dl Script": ["ISO 639-6 entity"], "Korean-N": ["ISO 639-6 entity"], "Hankukmal-CW": ["ISO 639-6 entity"], "Hwanghae-Puk-Do": ["ISO 639-6 entity"], "Hwanghae-Nam-Do": ["ISO 639-6 entity"], "Kanghwa": ["ISO 639-6 entity"], "Ky\u014fnggi-Do": ["ISO 639-6 entity"], "S\u014ful-U ": ["ISO 639-6 entity"], "Ch'ungch'\u014fng-Puk-Do": ["ISO 639-6 entity"], "Ch'ungch'\u014fng-Nam-Do": ["ISO 639-6 entity"], "Hankukmal-CE": ["ISO 639-6 entity"], "Yonghung": ["ISO 639-6 entity"], "Kangw\u014fn-Do": ["ISO 639-6 entity"], "Hankukmal-SW": ["ISO 639-6 entity"], "Cholla-Puk-Do": ["A dialect of the Hankukmal-SW language."], "Cholla-Nam-Do": ["A dialect of the Hankukmal-SW language."], "Hankukmal-NW": ["ISO 639-6 entity"], "P'y\u014fngyang-U": ["ISO 639-6 entity"], "P'y\u014fng'an-Nam-Do": ["ISO 639-6 entity"], "P'y\u014fng'an-Puk-Do": ["ISO 639-6 entity"], "Liaoning-S": ["ISO 639-6 entity"], "Hankukmal-CN": ["ISO 639-6 entity"], "Chagang-Do": ["A dialect of the Hankukmal-CN language."], "Yanggang-Do": ["A dialect of the Hankukmal-CN language."], "Hankukmal-NE": ["ISO 639-6 entity"], "Hamgyong-Nam-Do": ["A dialect of the Hankukmal-NE language."], "Hamgyong-Puk-Do": ["A dialect of the Hankukmal-NE language."], "Jilin": ["A dialect of the Hankukmal-NE language.", "The second largest city in Jilin Province in China."], "Hankukmal-SE": ["ISO 639-6 entity"], "Hankukmal-SE Spoken": ["The dialects of the Hankukmal-SE language."], "Ky\u014fngsang-Puk-Do": ["A dialect of the Hankukmal-SE language."], "Ky\u014fngsang-Nam-Do": ["A dialect of the Hankukmal-SE language."], "Hankukmal-'\u00c9migr\u00e9'": ["ISO 639-6 entity"], "Hankukmal-'\u00c9migr\u00e9' Spoken": ["The dialects of the Hankukmal-'\u00c9migr\u00e9' language."], "Hankukmal-'Japan- Russia'": ["ISO 639-6 entity"], "Hankukmal-'Central-Asia'": ["ISO 639-6 entity"], "Hankukmal-'America'": ["ISO 639-6 entity"], "Chejumal": ["A variety of Korean spoken on Jeju Island in South Korea."], "Sakhalin": ["ISO 639-6 entity", "Island in the North Pacific which belongs to Russia."], "Sakhalin Spoken": ["ISO 639-6 entity"], "Nairo": ["ISO 639-6 entity"], "Raichishka": ["ISO 639-6 entity"], "Shiraura": ["ISO 639-6 entity"], "Maoka": ["ISO 639-6 entity"], "Tarantomari": ["ISO 639-6 entity"], "Ochiho": ["ISO 639-6 entity"], "Taraika": ["ISO 639-6 entity"], "Ezo": ["ISO 639-6 entity"], "Soya": ["ISO 639-6 entity"], "Nayoro- Ashikawa": ["ISO 639-6 entity"], "Nayoro": ["ISO 639-6 entity"], "Asahikawa": ["ISO 639-6 entity"], "Ishikari": ["ISO 639-6 entity"], "Ezo-E": ["ISO 639-6 entity"], "Bihoro": ["ISO 639-6 entity"], "Kushiro": ["ISO 639-6 entity"], "Obihiro": ["ISO 639-6 entity"], "Samani": ["ISO 639-6 entity"], "Ezo-S": ["ISO 639-6 entity"], "Saru": ["ISO 639-6 entity"], "Niikapu": ["ISO 639-6 entity"], "Shizunai": ["ISO 639-6 entity"], "Nukkibetsu": ["ISO 639-6 entity"], "Biratori": ["ISO 639-6 entity"], "Horobetsu": ["ISO 639-6 entity"], "Ezo-SW": ["ISO 639-6 entity"], "Oshamambe": ["ISO 639-6 entity"], "Yakumo": ["ISO 639-6 entity"], "Kurile": ["ISO 639-6 entity"], "Yukar": ["ISO 639-6 entity"], "Japanese Ryukyuan": ["ISO 639-6 entity"], "Hy\u014dzyun-Go": ["ISO 639-6 entity"], "Koku-Go": ["ISO 639-6 entity"], "Yamanote-Kotoba": ["ISO 639-6 entity"], "Ky\u014dt\u016b-Go": ["ISO 639-6 entity"], "Ky\u014dt\u016b-Go Spoken": ["ISO 639-6 entity"], "T\u014dky\u014d- Yokohama-G ": ["ISO 639-6 entity"], "Honsh\u016b-N ": ["ISO 639-6 entity"], "Honsh\u016b-E ": ["ISO 639-6 entity"], "Honsh\u016b-W ": ["ISO 639-6 entity"], "Shikoku-G ": ["ISO 639-6 entity"], "Hokkaid\u014d-G ": ["ISO 639-6 entity"], "Izu-G ": ["ISO 639-6 entity"], "Ky\u016bsh\u016b-G ": ["ISO 639-6 entity"], "Ry\u016bkyu-G ": ["ISO 639-6 entity"], "Nihongo-Korea": ["ISO 639-6 entity"], "Nihongo-Taiwan": ["ISO 639-6 entity"], "Nihongo-America": ["ISO 639-6 entity"], "Nihongo-Brazil": ["ISO 639-6 entity"], "Shitamachi-Kotoba": ["ISO 639-6 entity"], "Kant\u014d": ["ISO 639-6 entity"], "Kant\u014d Spoken": ["ISO 639-6 entity"], "Kant\u014d-A ": ["ISO 639-6 entity"], "Kant\u014d-W ": ["ISO 639-6 entity"], "Kant\u014d-N ": ["ISO 639-6 entity"], "T\u014dhoku": ["ISO 639-6 entity"], "T\u014dhoku Spoken": ["ISO 639-6 entity"], "Hoku\u014d": ["ISO 639-6 entity"], "Hokuetsu": ["ISO 639-6 entity"], "Nan\u014d": ["ISO 639-6 entity"], "Hokkaid\u014d-SW ": ["ISO 639-6 entity"], "Kansai": ["A group of Japanese dialects spoken in the Kansai region of Japan."], "Kansai Spoken": ["ISO 639-6 entity"], "Bun-Go": ["ISO 639-6 entity"], "Kinki-A ": ["ISO 639-6 entity"], "Maizuru- Ako": ["ISO 639-6 entity"], "Awaji- Shikoku": ["ISO 639-6 entity"], "Wakayama- Nara": ["ISO 639-6 entity"], "Hokuriku": ["ISO 639-6 entity"], "Sado": ["ISO 639-6 entity"], "Totsugawa- Kumano": ["ISO 639-6 entity"], "Wadayama- Okayama": ["ISO 639-6 entity"], "Kagawa": ["ISO 639-6 entity"], "Manabe-Shima": ["ISO 639-6 entity"], "Awa-Shima": ["ISO 639-6 entity"], "Ibuki-Jima": ["ISO 639-6 entity"], "Yashiro-Jima": ["ISO 639-6 entity"], "Hiji": ["ISO 639-6 entity"], "K\u014dchi-SW ": ["ISO 639-6 entity"], "Ch\u016bgoku": ["ISO 639-6 entity"], "Matsue": ["ISO 639-6 entity"], "San-In ": ["ISO 639-6 entity"], "Ky\u016bsh\u016b": ["ISO 639-6 entity"], "Ky\u016bsh\u016b Spoken": ["ISO 639-6 entity"], "Ky\u016bsh\u016b-N ": ["ISO 639-6 entity"], "Ky\u016bsh\u016b-NW ": ["ISO 639-6 entity"], "Ky\u016bsh\u016b-C ": ["ISO 639-6 entity"], "Ky\u016bsh\u016b-W ": ["ISO 639-6 entity"], "Satsuma": ["ISO 639-6 entity"], "Hachij\u014d-Jima": ["ISO 639-6 entity"], "Ko-Jima": ["ISO 639-6 entity"], "Ryukyuan": ["ISO 639-6 entity"], "Northern Amami Okinawago Cluster": ["ISO 639-6 entity"], "Kikai": ["A language of Japan."], "Northern Amami- Oshima": ["ISO 639-6 entity"], "Northern Amami- Oshima Spoken": ["ISO 639-6 entity"], "Naze": ["ISO 639-6 entity"], "Sani": ["ISO 639-6 entity"], "Southern Amami- Oshima": ["ISO 639-6 entity"], "Southern Amami- Oshima Spoken": ["ISO 639-6 entity"], "Setouchi": ["ISO 639-6 entity"], "Kakeroma-Shima": ["ISO 639-6 entity"], "Uke-Shima": ["ISO 639-6 entity"], "Yoro-Shima": ["ISO 639-6 entity"], "Toku-No-Shima": ["ISO 639-6 entity"], "Toku-No-Shima Spoken": ["ISO 639-6 entity"], "Kametsu": ["ISO 639-6 entity"], "Amagi": ["ISO 639-6 entity"], "Southern Amami Okinawago": ["ISO 639-6 entity"], "Oki-No-Erabu": ["ISO 639-6 entity"], "Oki-No-Erabu Spoken": ["ISO 639-6 entity"], "Okino-Erabu-NE": ["ISO 639-6 entity"], "Okino-Erabu-SW": ["ISO 639-6 entity"], "Yoron": ["ISO 639-6 entity"], "Iheya-Shima": ["ISO 639-6 entity"], "Iheya-Shima Spoken": ["ISO 639-6 entity"], "Iheya-Shima-A ": ["ISO 639-6 entity"], "Izena-Shima": ["ISO 639-6 entity"], "Ie-Shima": ["ISO 639-6 entity"], "Kunigami": ["ISO 639-6 entity"], "Kunigami Spoken": ["ISO 639-6 entity"], "Kunigami-W": ["ISO 639-6 entity"], "Kunigami-E": ["ISO 639-6 entity"], "Ogimi": ["ISO 639-6 entity"], "Haneji": ["ISO 639-6 entity"], "Nakijin": ["ISO 639-6 entity"], "Kouri": ["ISO 639-6 entity"], "Sesoko": ["ISO 639-6 entity"], "Nago": ["ISO 639-6 entity"], "Kin": ["ISO 639-6 entity"], "Onna-N": ["ISO 639-6 entity"], "Central Okinawan": ["A Northern Ryukyuan language spoken primarily in the southern half of the island of Okinawa, as well as the surrounding islands of Kerama, Kumejima, Tonaki, Aguni, and a number of smaller peripheral islands."], "Central Okinawan Written": ["Written forms of the Central Okinawan language."], "Central Okinawan Written Japanese Script": ["The Central Okinawan written with the Japanese script."], "Central Okinawan Written Sunagawa-Kisoushi Script": ["The Central Okinawan language written with the Sunagawa-Kisoushi script."], "Central Okinawan Written Toki-Kisoushi Script": ["The Central Okinawan written with the Toki-Kisoushi script."], "Central Okinawan Spoken": ["The dialects of the Central Okinawan language."], "Torishima": ["A dialect of the Central Okinawan language."], "Kaikutuba": ["A dialect of the Central Okinawan language."], "Yomitan": ["A dialect of the Central Okinawan language."], "Goeku": ["A dialect of the Central Okinawan language."], "Gushikawa": ["A dialect of the Central Okinawan language."], "Haebaru": ["A dialect of the Central Okinawan language."], "Yonagusuku": ["A dialect of the Central Okinawan language."], "Katsuren": ["A dialect of the Central Okinawan language."], "Nakagusuku": ["A dialect of the Central Okinawan language."], "Ginowan": ["A dialect of the Central Okinawan language."], "Urasoe": ["A dialect of the Central Okinawan language."], "Nishihara": ["A dialect of the Central Okinawan language."], "Mawashi": ["A dialect of the Central Okinawan language."], "Oroku": ["A dialect of the Central Okinawan language."], "Tomigusuku": ["A dialect of the Central Okinawan language."], "Kanegusuku": ["A dialect of the Central Okinawan language."], "Kochinda": ["A dialect of the Central Okinawan language."], "Ozato": ["A dialect of the Central Okinawan language."], "Sashiki": ["A dialect of the Central Okinawan language."], "Chinen": ["A dialect of the Central Okinawan language."], "Tamagusuku": ["A dialect of the Central Okinawan language."], "Gushikami": ["A dialect of the Central Okinawan language."], "Itoman Mabuni": ["ISO 639-6 entity"], "Itoman": ["ISO 639-6 entity"], "Takamine": ["ISO 639-6 entity"], "Makabe": ["ISO 639-6 entity"], "Kiyan": ["ISO 639-6 entity"], "Mabuni": ["ISO 639-6 entity"], "Kerama Kumejima": ["ISO 639-6 entity"], "Kerama": ["ISO 639-6 entity"], "Tonaki": ["ISO 639-6 entity"], "Aguni": ["ISO 639-6 entity"], "Kume-Jima": ["ISO 639-6 entity"], "Ikei Kudaka": ["ISO 639-6 entity"], "Ikei": ["ISO 639-6 entity"], "Miyagi": ["ISO 639-6 entity"], "Henza": ["ISO 639-6 entity"], "Tsuken": ["ISO 639-6 entity"], "Kudaka": ["ISO 639-6 entity"], "Miyako": ["A language spoken on the Miyako islands in the Japanese Okinawa Prefecture."], "Miyako Written": ["The written forms of the Miyako language."], "Miyako Written Japanese Script": ["The Miyako language written with the Japanese script."], "Miyako Spoken": ["The dialects of the Miyako language."], "Miyako-Jima": ["A dialect of the Miyako language."], "Ogami-Jima": ["A dialect of the Miyako language."], "Ikema-Jima": ["A dialect of the Miyako language."], "Kurema-Jima": ["A dialect of the Miyako language."], "Irabu-Jima": ["A dialect of the Miyako language."], "Yaeyama": ["A Ryukyuan language, most closely related to Miyako, spoken by around 44,650 people in the Yaeyama Islands, south of the Miyako area of the Ryukyus."], "Yaeyama Written Kaidaa-Di Script": ["The Yaeyama language written with the Kaidaa-Di script."], "Yaeyama Written Yaahan Script": ["The Yaeyama language written with the Yaahan script."], "Yaeyama Written Japanese Script": ["The Yaeyama language written with the Japanese script."], "Yaeyama Spoken": ["The dialects of the Yaeyama language."], "Ishigaki-Jima": ["A dialect of the Yaeyama language."], "Kabira": ["A dialect of the Yaeyama language."], "Shiraho": ["A dialect of the Yaeyama language."], "Taketomi": ["A dialect of the Yaeyama language.", "An island in the Yaeyama District of Okinawa Prefecture, Japan."], "Kohama": ["A dialect of the Yaeyama language.", "An island in the Yaeyama Islands group at the southwestern end of the Ryukyu Islands chain, and part of Okinawa Prefecture, Japan."], "Hatoma": ["A dialect of the Yaeyama language."], "Sonai": ["A dialect of the Yaeyama language."], "Aragusuku": ["A dialect of the Yaeyama language."], "Kuro-Shima": ["A dialect of the Yaeyama language."], "Hateruma-Shima": ["A dialect of the Yaeyama language."], "Yonaguni": ["A Ryukyuan language, most closely related to Yaeyama, spoken by around 1,800 people on the island of Yonaguni, in Japan, just east of Taiwan.", "The westernmost island of Japan."], "Yonaguni Written Kaidaa-Zi Script": ["The Yonaguni language written with the Kaidaa-Zi script."], "Yonaguni Written Sanninnudai Script": ["The Yonaguni language written with the Sanninnudai script."], "Yonaguni Written Daahan Script": ["The Yonaguni language written with the Daahan script."], "Yonaguni Written Japanese Script": ["The Yonaguni language written with the Japanese script."], "Ket": ["A Siberian language of Russia (Asia)"], "Ket Spoken": ["ISO 639-6 entity"], "Imbat": ["ISO 639-6 entity"], "Imbat Surgut": ["ISO 639-6 entity"], "Imbat Suloma": ["ISO 639-6 entity"], "Imbat Kureika": ["ISO 639-6 entity"], "Yugh": ["ISO 639-6 entity"], "Kot": ["ISO 639-6 entity", "A dialect of the Alur language."], "Kishtim": ["ISO 639-6 entity"], "Asan": ["ISO 639-6 entity"], "Arin": ["ISO 639-6 entity"], "Gilyak": ["ISO 639-6 entity"], "Gilyak Written": ["ISO 639-6 entity"], "Gilyak Written Latin Script": ["Gilyak language written with the Latin Script."], "Gilyak Written Cyrillic Script": ["ISO 639-6 entity"], "Gilyak Spoken": ["ISO 639-6 entity"], "Amur": ["ISO 639-6 entity"], "North Sakhalin Gilyak": ["ISO 639-6 entity"], "East Sakhalin Gilyak": ["ISO 639-6 entity"], "Burushaski Cluster": ["ISO 639-6 entity"], "Burushaski": ["A language isolate spoken by the Burusho people in the Hunza, Nagar, Yasin, and Ishkoman Valley-Barjungle and some parts of the Gilgit valleys in the Northern areas in Pakistan."], "Burushaski Written": ["The written versions of the Burushaski language."], "Burushaski Written Perso-Arabic Script": ["The Burushaski language written with the Perso-Arabic script."], "Burushaski Written Latin Script": ["The Burushaski language written with the Latin script."], "Burushaski Written IPA Script": ["The Burushaski language written with the IPA script."], "Burushaski Spoken": ["The Burushaski spoken language and its dialects."], "Nagar": ["ISO 639-6 entity"], "Hunza": ["ISO 639-6 entity"], "Yasin": ["A dialect of Wakhi spoken in Pakistan."], "Nihali": ["ISO 639-6 entity"], "Nihali Proper": ["ISO 639-6 entity"], "Chikaldara": ["ISO 639-6 entity"], "Akola": ["ISO 639-6 entity"], "Miao-Yao": ["ISO 639-6 entity"], "Hmong": ["A dialect continuum of the West Hmongic branch of the Hmong-Mien/Miao-Yao language family spoken by the Hmong people of Sichuan, Yunnan, Guizhou, Guangxi, northern Vietnam, Thailand, and Laos."], "Hmong Written": ["ISO 639-6 entity"], "Hmong Written Pahawh Pa Script": ["ISO 639-6 entity"], "Hmong Written Pahawh Njia Dua O Script": ["ISO 639-6 entity"], "Hmong Written Pahawh Njia Dua Pe Script": ["ISO 639-6 entity"], "Hmong Written Pahawh Tsa Script": ["ISO 639-6 entity"], "Western Hmong": ["ISO 639-6 entity", "A Hmong language spoken mostly in China in the area where Guizhou, Sichuan and Yunnan provinces meet, and spoken also in Myanmar, Laos and Vietnam."], "Western Hmong Written": ["Written forms of the Western Hmong language."], "Western Hmong Written Hmong Script": ["ISO 639-6 entity"], "Western Hmong Written Latin Script": ["A written form of the Western Hmong language."], "Hmong D\u00f4": ["A language of Viet Nam."], "Hmong D\u00f4 Written": ["The written forms of the Hmong D\u00f4 language."], "Hmong D\u00f4 Written Hmong Script": ["A written form of the Hmong D\u00f4 language."], "Hmong D\u00f4 Written Latin Script": ["A written form of the Hmong D\u00f4 language."], "Hmong Daw": ["A Hmong language spoken mainly in the Chinese regions of central and western Guizhou, southern Sichuan and Yunnan."], "Hmong Daw Written": ["Written forms of the Hmong Daw language."], "Hmong Daw Written Hmong Script": ["ISO 639-6 entity"], "Hmong Daw Written Latin Script": ["A written form of the Hmong Daw language."], "Hmong Daw Spoken": ["ISO 639-6 entity"], "Mong Leng": ["ISO 639-6 entity"], "Peh": ["ISO 639-6 entity"], "Petchabun": ["ISO 639-6 entity"], "Hmong-Qua-Mba": ["ISO 639-6 entity"], "Hmong Njua": ["A Hmong language spoken mostly in China in the area where Guizhou, Sichuan and Yunnan provinces meet, and spoken also in Myanmar, Laos and Vietnam."], "Hmong Njua Written": ["Written forms of the Hmong Njua language."], "Hmong Njua Written Hmong Script": ["ISO 639-6 entity"], "Hmong Njua Written Latin Script": ["A written form of the Hmong Njua language."], "Hmong Njua Spoken": ["ISO 639-6 entity"], "Hua-Hwa": ["ISO 639-6 entity"], "Khiao-Hua": ["ISO 639-6 entity"], "Ta-Hua": ["ISO 639-6 entity"], "Tak": ["ISO 639-6 entity"], "Central Huishui Hmong": ["A language of China."], "Central Huishui Hmong Written": ["ISO 639-6 entity"], "Central Huishui Hmong Written Hmong Script": ["ISO 639-6 entity"], "Central Huishui Hmong Written Latin Script": ["A written form of the Central Huishui Hmong language."], "Northeastern Dian Hmong": ["A language of China."], "Northeastern Dian Hmong Written": ["Written forms of the Northeastern Dian Hmong language."], "Northeastern Dian Hmong Written Hmong Script": ["ISO 639-6 entity"], "Northeastern Dian Hmong Written Latin Script": ["A written form of the Northeastern Dian Hmong language."], "Eastern Huishui Hmong": ["A language of China."], "Eastern Huishui Hmong Written": ["Written forms of the Eastern Huishui Hmong language."], "Eastern Huishui Hmong Written Hmong Script": ["ISO 639-6 entity"], "Eastern Huishui Hmong Written Latin Script": ["A written form of the Eastern Huishui Hmong language."], "Hmong Don": ["A language of Viet Nam"], "Hmong Don Written": ["The written forms of the Hmong Don language."], "Hmong Don Written Hmong Script": ["A written form of the Hmong Don language."], "Hmong Don Written Latin Script": ["A written form of the Hmong Don language."], "Southern Mashan Hmong": ["A language of China."], "Southern Mashan Hmong Written": ["Written forms of the Southern Mashan Hmong language."], "Southern Mashan Hmong Written Hmong Script": ["ISO 639-6 entity"], "Southern Mashan Hmong Written Latin Script": ["A written form of the Southern Mashan Hmong language."], "Southern Mashan Hmong Spoken": ["ISO 639-6 entity"], "Southwestern Guiyang Hmong": ["A language spoken by the Guiyang Miao people living on the mountaintops in Pingba, Qingzhen and Changshun counties as well as in the Guiyang and Anshun municipalities in Guizhou Province of China."], "Southwestern Guiyang Hmong Written": ["Written forms of the Southwestern Guiyang Hmong language."], "Southwestern Guiyang Hmong Written Hmong Script": ["The Southwestern Guiyang Hmong language written with the Hmong script."], "Southwestern Guiyang Hmong Written Latin Script": ["A written form of the Southwestern Guiyang Hmong language."], "Southwestern Guiyang Hmong Spoken": ["Dialects of the Southwestern Guiyang Hmong language."], "Southwestern Huishui Hmong": ["A language of China."], "Southwestern Huishui Hmong Written": ["Written forms of the Southwestern Huishui Hmong language."], "Southwestern Huishui Hmong Written Hmong Script": ["ISO 639-6 entity"], "Southwestern Huishui Hmong Written Latin Script": ["A written form of the Southwestern Huishui Hmong language."], "Southwestern Huishui Hmong Spoken": ["ISO 639-6 entity"], "Northern Huishui Hmong": ["A language of China."], "Northern Huishui Hmong Written": ["Written forms of the Northern Huishui Hmong language."], "Northern Huishui Hmong Written Hmong Script": ["ISO 639-6 entity"], "Northern Huishui Hmong Written Latin Script": ["A written form of the Northern Huishui Hmong language."], "Northern Huishui Hmong Spoken": ["ISO 639-6 entity"], "Chonganjiang Hmong": ["A language of China."], "Chonganjiang Hmong Written": ["ISO 639-6 entity"], "Chonganjiang Hmong Written Hmong Script": ["ISO 639-6 entity"], "Chonganjiang Hmong Written Latin Script": ["A written form of the Chonganjiang Hmong language."], "Chonganjiang Hmong Spoken": ["ISO 639-6 entity"], "Gejiahua": ["ISO 639-6 entity"], "Luopohe Hmong": ["A language of China."], "Luopohe Hmong Written": ["Written forms of the Luopohe Hmong language."], "Luopohe Hmong Written Hmong Script": ["ISO 639-6 entity"], "Luopohe Hmong Written Latin Script": ["A written form of the Luopohe Hmong language."], "Central Mashan Hmong": ["A language of China."], "Central Mashan Hmong Written": ["ISO 639-6 entity"], "Central Mashan Hmong Written Hmong Script": ["ISO 639-6 entity"], "Central Mashan Hmong Written Latin Script": ["A written form of the Central Mashan Hmong language."], "Northern Mashan Hmong": ["A language of China."], "Northern Mashan Hmong Written": ["Written forms of the Northern Mashan Hmong language."], "Northern Mashan Hmong Written Hmong Script": ["ISO 639-6 entity"], "Northern Mashan Hmong Written Latin Script": ["A written form of the Northern Mashan Hmong language."], "Northern Mashan Hmong Spoken": ["ISO 639-6 entity"], "Western Mashan Hmong": ["A language of China."], "Western Mashan Hmong Written": ["Written forms of the Western Mashan Hmong language."], "Western Mashan Hmong Written Hmong Script": ["ISO 639-6 entity"], "Western Mashan Hmong Written Latin Script": ["A written form of the Western Mashan Hmong language."], "Western Mashan Hmong Spoken": ["ISO 639-6 entity"], "Southern Guiyang Hmong": ["A language of China."], "Southern Guiyang Hmong Written": ["Written forms of the Southern Guiyang Hmong language."], "Southern Guiyang Hmong Written Hmong Script": ["ISO 639-6 entity"], "Southern Guiyang Hmong Written Latin Script": ["A written form of the Southern Guiyang Hmong language."], "Southern Guiyang Hmong Spoken": ["ISO 639-6 entity"], "Hmong Shua": ["A language of Viet Nam."], "Hmong Shua Written": ["The written forms of the Hmong Shua language."], "Hmong Shua Written Hmong Script": ["A written form of the Hmong Shua language."], "Hmong Shua Written Latin Script": ["A written form of the Hmong Shua language."], "Northern Guiyang Hmong": ["A language of China."], "Northern Guiyang Hmong Written": ["Written forms of the Northern Guiyang Hmong language."], "Northern Guiyang Hmong Written Hmong Script": ["ISO 639-6 entity"], "Northern Guiyang Hmong Written Latin Script": ["A written form of the Northern Guiyang Hmong language."], "Western Xiangxi Hmong": ["ISO 639-6 entity"], "Western Xiangxi Hmong Written": ["Written forms of the Western Xiangxi Hmong language."], "Western Xiangxi Hmong Written Hmong Script": ["ISO 639-6 entity"], "Western Xiangxi Hmong Written Latin Script": ["A written form of the Western Xiangxi Hmong language."], "Western Xiangxi Hmong Spoken": ["ISO 639-6 entity"], "Meo-Do-Vietnam": ["ISO 639-6 entity"], "Meo-Do-Thailand": ["ISO 639-6 entity"], "Meo-Do-China": ["ISO 639-6 entity"], "Central Hmong": ["ISO 639-6 entity"], "Eastern Qiandong Hmong": ["ISO 639-6 entity", "A language of China."], "Eastern Qiandong Hmong Written": ["Written forms of the Eastern Qiandong Hmong language."], "Eastern Qiandong Hmong Written Hmong Script": ["ISO 639-6 entity"], "Eastern Qiandong Hmong Written Latin Script": ["A written form of the Eastern Qiandong Hmong language."], "Eastern Qiandong Hmong Spoken": ["ISO 639-6 entity"], "Northern Qiandong Hmong": ["A language of China."], "Northern Qiandong Hmong Written": ["Written forms of the Northern Qiandong Hmong language."], "Northern Qiandong Hmong Written Hmong Script": ["ISO 639-6 entity"], "Northern Qiandong Hmong Written Latin Script": ["A written form of the Northern Qiandong Hmong language."], "Northern Qiandong Hmong Spoken": ["ISO 639-6 entity"], "Southern Qiandong Hmong": ["A language of China."], "Southern Qiandong Hmong Written": ["Written forms of the Southern Qiandong Hmong language."], "Southern Qiandong Hmong Written Hmong Script": ["ISO 639-6 entity"], "Southern Qiandong Hmong Written Latin Script": ["A written form of the Southern Qiandong Hmong language."], "Southern Qiandong Hmong Spoken": ["ISO 639-6 entity"], "Northern Hmong": ["ISO 639-6 entity"], "Eastern Xiangxi Hmong": ["ISO 639-6 entity"], "Eastern Xiangxi Hmong Spoken": ["Dialects of the Eastern Xiangxi Hmong language."], "Chi-Wei": ["ISO 639-6 entity"], "Layi-Ping": ["ISO 639-6 entity"], "Danan-Shan": ["ISO 639-6 entity"], "East Guizhou Cluster": ["ISO 639-6 entity"], "Bu-Nao Bunu": ["A language of China."], "Bu-Nao Bunu Spoken": ["ISO 639-6 entity"], "Dongnu": ["ISO 639-6 entity"], "Nunu": ["ISO 639-6 entity"], "Pu No": ["ISO 639-6 entity"], "Nao Kloa": ["ISO 639-6 entity"], "Qiung-Nai": ["ISO 639-6 entity"], "Pa-Wu": ["ISO 639-6 entity"], "Wunai Bunu": ["A language of China."], "Wunai Bunu Spoken": ["ISO 639-6 entity"], "Younuo Bunu": ["A language of China."], "Jiongnai Bunu": ["ISO 639-6 entity"], "Jiongnai Bunu Spoken": ["ISO 639-6 entity"], "Patengic Cluster": ["ISO 639-6 entity"], "Pa-Hng": ["ISO 639-6 entity"], "Pa-Hng Spoken": ["ISO 639-6 entity"], "Mein": ["ISO 639-6 entity"], "Biao-Jiao Mien": ["A language of China."], "Biao-Jiao Mien Spoken": ["The Biao-Jiao Mien spoken language and its dialects."], "Bio Min": ["A dialect of the Biao-Jiao Mien language."], "Jiaogong Mian": ["A dialect of the Biao-Jiao Mien language."], "Iu Mien": ["A language of China, Laos, Thailand and Viet Nam."], "Iu Mien Written": ["Written forms of the Iu Mien language."], "Lu Mien Written Latin Script": ["ISO 639-6 entity"], "Lu Mien Spoken": ["Dialects of the Lu Mien language."], "Ao-Yao": ["A dialect of the Iu Mien language."], "Chasan-Yao": ["A dialect of the Iu Mien language."], "Shanzi-Yao": ["A dialect of the Iu Mien language."], "Ling-Yun": ["A dialect of the Iu Mien language."], "Hua-Lan": ["A dialect of the Iu Mien language."], "Hua": ["A dialect of the Iu Mien language."], "Sung": ["A dialect of the Iu Mien language."], "Tien-Tiao-Tchaine": ["A dialect of the Iu Mien language."], "Hsing-An": ["A dialect of the Iu Mien language."], "Chiangrai": ["A dialect of the Iu Mien language."], "Tai-Pan": ["A dialect of the Iu Mien language."], "Hai-Ninh": ["A dialect of the Iu Mien language."], "Cao-Long": ["A dialect of the Iu Mien language."], "Man-Do": ["A dialect of the Iu Mien language."], "Deo-Tien": ["A dialect of the Iu Mien language."], "Quan-Chet": ["A dialect of the Iu Mien language."], "Quan-Coc": ["A dialect of the Iu Mien language."], "Quan-Trang": ["A dialect of the Iu Mien language."], "Son-Trang": ["A dialect of the Iu Mien language."], "Iu-Mien-Laos": ["A dialect of the Iu Mien language."], "Kim Mun": ["ISO 639-6 entity"], "Kim Mun Written": ["Written forms of the Kim Mun language."], "Kim Mun Written Latin Script": ["A written form of the Kim Mun language."], "Kim Mun Spoken": ["ISO 639-6 entity"], "Dao Quan": ["ISO 639-6 entity"], "Dao Ho": ["ISO 639-6 entity"], "Kim-Mun-Guangxi": ["ISO 639-6 entity"], "Kim-Mun-Guizhou": ["ISO 639-6 entity"], "Kim-Mun-Laos": ["ISO 639-6 entity"], "Kim-Mun-Vietnam": ["ISO 639-6 entity"], "Biao Mon": ["A language of China."], "Biao Mon Spoken": ["The Biao Mon spoken language and its dialects."], "Min Yao": ["A dialect of the Biao Mon language."], "Shi Mun": ["A dialect of the Biao Mon language."], "Dzao Min": ["A language of China."], "Ho Nte": ["ISO 639-6 entity"], "She": ["ISO 639-6 entity"], "She Spoken": ["ISO 639-6 entity"], "Luo-Fu": ["ISO 639-6 entity"], "Luo-Fu Spoken": ["ISO 639-6 entity"], "Lian-Hua": ["ISO 639-6 entity"], "Lian-Hua Spoken": ["ISO 639-6 entity"], "Nilo-Saharan": ["A family of African languages spoken in the northern half of Africa."], "Maban": ["ISO 639-6 entity"], "Mabang": ["ISO 639-6 entity"], "Kendeje": ["A language of Chad."], "Kendeje Spoken": ["ISO 639-6 entity"], "Yali": ["ISO 639-6 entity"], "Faranga": ["ISO 639-6 entity"], "Maba Cluster": ["ISO 639-6 entity"], "Maba": ["ISO 639-6 entity"], "Maba Written": ["ISO 639-6 entity"], "Maba Written Latin Script": ["Maba language written with the Latin Script."], "Maba Spoken": ["ISO 639-6 entity"], "Ndaba": ["ISO 639-6 entity"], "Ndala": ["ISO 639-6 entity"], "Langa": ["ISO 639-6 entity"], "Kajangan": ["ISO 639-6 entity"], "Nyabadan": ["ISO 639-6 entity"], "Kelingan": ["ISO 639-6 entity"], "Abkar": ["ISO 639-6 entity"], "Bakha": ["ISO 639-6 entity", "ISO 639-6 entity"], "Uled-Jemaa": ["ISO 639-6 entity"], "Uled-Jemaa Spoken": ["ISO 639-6 entity"], "Kujinga": ["ISO 639-6 entity"], "Kujinga Soken": ["ISO 639-6 entity"], "Kondongo": ["ISO 639-6 entity"], "Kondongo Spoken": ["ISO 639-6 entity"], "Keshmere": ["ISO 639-6 entity"], "Keshmere Spoken": ["ISO 639-6 entity"], "Ab-Sharin": ["ISO 639-6 entity"], "Ab-Sharin Spoken": ["The dialects of the Ab-Sharin language."], "Marfa": ["ISO 639-6 entity"], "Marfa Spoken": ["ISO 639-6 entity"], "Marfa-A": ["ISO 639-6 entity"], "Karanga": ["A language of Chad."], "Karanga Written": ["ISO 639-6 entity"], "Karanga Spoken": ["ISO 639-6 entity"], "Mooyo": ["ISO 639-6 entity"], "Mooyo Spoken": ["ISO 639-6 entity"], "Faala": ["ISO 639-6 entity"], "Faala Spoken": ["ISO 639-6 entity"], "Bakha Spoken": ["ISO 639-6 entity"], "Konyare": ["ISO 639-6 entity"], "Konyare Spoken": ["ISO 639-6 entity"], "Mesalit Cluster": ["ISO 639-6 entity"], "Massalat": ["A language of Chad."], "Massalat Spoken": ["ISO 639-6 entity"], "Surbakhal": ["ISO 639-6 entity"], "Surbakhal Spoken": ["ISO 639-6 entity"], "Masalit": ["ISO 639-6 entity"], "Masalit Spoken": ["ISO 639-6 entity"], "Masala-N": ["ISO 639-6 entity"], "Masala-W": ["ISO 639-6 entity"], "Masala-S": ["ISO 639-6 entity"], "Runga-Kibet Cluster": ["ISO 639-6 entity"], "Runga": ["ISO 639-6 entity"], "Runga Spoken": ["ISO 639-6 entity"], "Aykin-Dang": ["ISO 639-6 entity"], "Aykin-Dang Spoken": ["ISO 639-6 entity"], "Runga-Ndele": ["ISO 639-6 entity"], "Runga-Ndele Spoken": ["ISO 639-6 entity"], "Muro": ["ISO 639-6 entity"], "Muro Spoken": ["ISO 639-6 entity"], "Dagel": ["ISO 639-6 entity"], "Dagel Spoken": ["ISO 639-6 entity"], "Kibet": ["A language of Chad."], "Kibet Spoken": ["ISO 639-6 entity"], "Mige": ["ISO 639-6 entity"], "Mige Spoken": ["ISO 639-6 entity"], "Mimi Gaudefroy-Demboyne's": ["ISO 639-6 entity"], "Mimi Gaudefroy-Demboyne\u2019s Written": ["ISO 639-6 entity"], "Mimi Gaudefroy-Demboyne\u2019s Written Latin Script": ["ISO 639-6 entity"], "Fur Cluster": ["ISO 639-6 entity"], "Fur": ["A language of Sudan and Chad."], "Fur Written": ["The written forms of the Fur language."], "Fur Written Arabic Script": ["A written form of the Fur language."], "Fur Written Latin Script": ["A written form of the Fur language."], "Fur Spoken": ["The dialects of the Fur language."], "Amdang": ["A language of Chad."], "Amdang Spoken": ["The spoken Amdang language and its dialects."], "Mimi": ["ISO 639-6 entity"], "Mimi Spoken": ["The spoken Mimi language and its dialects."], "Mimi-Goz": ["A dialect of the Mimi language."], "Mimi-Bel": ["A dialect of the Mimi language."], "East Sudanic": ["ISO 639-6 entity"], "Kuliak": ["ISO 639-6 entity"], "Ik Cluster": ["ISO 639-6 entity"], "Ik": ["A language of the Kuliak subgroup of Nilo-Saharan languages spoken by the Ik people living in the mountains of northeastern Uganda near the border with Kenya."], "IK Written": ["The written forms of the IK language."], "Ik Written Latin Script": ["Ik language written with the Latin Script."], "Ik Spoken": ["The dialects of the Ik language."], "Ngangea-So Cluster": ["ISO 639-6 entity"], "Nyang\u2019i": ["ISO 639-6 entity"], "Nyang\u2019i Spoken": ["ISO 639-6 entity"], "So (Democratic Republic Of Congo)": ["ISO 639-6 entity"], "So (Democratic Republic Of Congo) Written": ["ISO 639-6 entity"], "So (Democratic Republic Of Congo) Spoken": ["ISO 639-6 entity"], "Eastern Sudanic Western": ["ISO 639-6 entity"], "Tama": ["A Nilo-Saharan language spoken in western Sudan and eastern Chad."], "Tama Sungor Cluster": ["A cluster of Tama languages."], "Tama (Chad)": ["Tama of Chad."], "Tama (Chad) Written": ["ISO 639-6 entity"], "Tama (Chad) Written Latin Script": ["A language written with the latin alphabet."], "Tama (Chad) Spoken": ["The spoken variants of the Tama language of Chad."], "Jabaal": ["Tama dialect spoken at west of Jabal Muun in Sudan, centered in Sali'a."], "Jabaal Spoken": ["ISO 639-6 entity"], "Haura": ["A dialect of the Tama language."], "Shale": ["A language of Sudan."], "Shale Spoken": ["The dialects of the Shaale language."], "Assangori": ["A Nilo-Saharan language spoken in western Sudan and eastern Chad."], "Assangori Spoken": ["The dialects of the Assangori language."], "Songor-A": ["A dialect of the Assangori language."], "Girga": ["Assangori as spoken by Girga people.", "An ethnic group of Chad."], "Wallad-Dulla": ["A dialect of the Assangori language.", "An ethnic group of Chad."], "Bognak": ["ISO 639-6 entity"], "Bognak Spoken": ["ISO 639-6 entity"], "Erenga": ["A Tama dialect spoken by the Erenga ethnic group of Sudan.", "An ethnic group of Sudan."], "Erenga Spoken": ["The spoken variants of the Erenga language."], "Merarit Cluster": ["A cluster of Tama languages."], "Mararit": ["ISO 639-6 entity"], "Mararit Spoken": ["ISO 639-6 entity"], "Abu-Sharib": ["ISO 639-6 entity"], "Abu-Sharib Spoken": ["The dialects of the Abu-Sharib language."], "Daju": ["Languages spoken in isolated pockets across a wide area of Sudan and Chad, in parts of the regions of Kordofan, Darfur, and Wadai."], "Daju Western": ["ISO 639-6 entity"], "Saarong-Ge": ["ISO 639-6 entity"], "Saarong-Ge Spoken": ["ISO 639-6 entity"], "Bokor-U-Ge": ["ISO 639-6 entity"], "Bokor-U-Ge Spoken": ["ISO 639-6 entity"], "Dar Sila Daju": ["Language spoken around Goz-Be\u00efda, in the border between Chad and Sudan."], "Dar Sila Daju Spoken": ["ISO 639-6 entity"], "Dar Daju Daju": ["Language of the Saaronge people of Chad."], "Dar Daju Daju Spoken": ["ISO 639-6 entity"], "Eref": ["ISO 639-6 entity"], "Bardangal": ["ISO 639-6 entity"], "Gadjira": ["ISO 639-6 entity"], "Zalingei": ["ISO 639-6 entity", "Town in Sudan."], "Zalingei Spoken": ["ISO 639-6 entity"], "Dar Fur Daju": ["Language spoken in the Daju Hills, in the region of Nyala and other regions of Sudan."], "Dar Fur Daju Spoken": ["ISO 639-6 entity"], "Baygo": ["An extinct language once spoken in Sudan."], "Lagowa": ["Language spoken in the Daju Hills, in the region of Nyala and other regions of Sudan."], "Lagowa Spoken": ["ISO 639-6 entity"], "Njalgulgule": ["Language spoken in Southern Sudan."], "Njalgulgule Spoken": ["ISO 639-6 entity"], "Nyool-Sopo": ["ISO 639-6 entity"], "Nyool-Nyukri": ["ISO 639-6 entity"], "Daju Eastern Cluster": ["ISO 639-6 entity"], "Logorik": ["Language spoken at the northeast of Kadugli in northern Sudan."], "Logorik Spoken": ["ISO 639-6 entity"], "Liguri": ["ISO 639-6 entity"], "Saburi": ["ISO 639-6 entity"], "Saburi Spoken": ["ISO 639-6 entity"], "Tallau": ["ISO 639-6 entity"], "Tallau Spoken": ["ISO 639-6 entity"], "Shatt": ["Language spoken in the Shatt Hills in northern Sudan.", "An ethnic group of Sudan who speak the Shatt Language."], "Shatt Written": ["ISO 639-6 entity"], "Shatt Spoken": ["ISO 639-6 entity"], "Daman-Shatt": ["ISO 639-6 entity"], "Safia-Shatt": ["ISO 639-6 entity"], "Tebeldia-Shatt": ["ISO 639-6 entity"], "East Sudanic Eastern": ["ISO 639-6 entity"], "Nubian": ["A group of languages considered to be a subfamily within Eastern Sudanic, and ultimately within Nilo-Saharan. Within Eastern Sudanic, it is thought to be most closely related to the Taman languages."], "Nubian Northern Cluster": ["ISO 639-6 entity"], "Nobiin": ["A Northern Nubian language of the Nilo-Saharan phylum, currently spoken along the banks of the Nile river in southern Egypt and northern Sudan by approximately 495,000 Nubians."], "Nobiin Written": ["The written forms of the Nobiin language."], "Nobiin Written Arab Script": ["A written form of the Nobiin language."], "Nobiin Written Latin Script": ["A written form of the Nobiin language."], "Nobiin Spoken": ["The dialects of the Nobiin language."], "Fiadidja": ["ISO 639-6 entity"], "Fiadidja Spoken": ["ISO 639-6 entity"], "Mahas": ["ISO 639-6 entity"], "Mahas Spoken": ["ISO 639-6 entity"], "Nubian Central": ["ISO 639-6 entity"], "Kenuz": ["ISO 639-6 entity"], "Kenuz Written": ["ISO 639-6 entity"], "Kenuz Spoken": ["ISO 639-6 entity"], "Dongola": ["ISO 639-6 entity"], "Dongola Spoken": ["ISO 639-6 entity"], "Hill Nubian": ["ISO 639-6 entity"], "Kithoniri- Wunci Cluster": ["ISO 639-6 entity"], "El Hugeirat": ["A language of Sudan."], "El Hugeirat Spoken": ["The dialects of the El Hugeirat language."], "Kodin-Ni-Ai": ["ISO 639-6 entity"], "Kodin-Ni-Ai Spoken": ["ISO 639-6 entity"], "Dair": ["A language of Sudan."], "Dair Spoken": ["The dialects of the Dair language."], "Kadaru-Ghulfan Cluster": ["ISO 639-6 entity"], "Ghulfan": ["A language of Sudan."], "Ghulfan Spoken": ["The dialects of the Ghulfan language."], "Kurgul": ["The dialects of the Ghulfan language."], "Morung": ["The dialects of the Ghulfan language."], "Debri": ["ISO 639-6 entity"], "Debri Spoken": ["ISO 639-6 entity"], "Kadaru": ["ISO 639-6 entity"], "Kadaru Spoken": ["ISO 639-6 entity"], "Kururuu": ["ISO 639-6 entity"], "Kurtala": ["ISO 639-6 entity"], "Dabatna": ["ISO 639-6 entity"], "Kuldaji": ["ISO 639-6 entity"], "Karko": ["A language of Sudan."], "Karko Spoken": ["ISO 639-6 entity"], "Wali": ["ISO 639-6 entity"], "Wali Spoken": ["ISO 639-6 entity"], "Ginuk": ["ISO 639-6 entity"], "Ginuk Spoken": ["ISO 639-6 entity"], "Tabaq": ["ISO 639-6 entity"], "Tabaq Spoken": ["ISO 639-6 entity"], "Dilling": ["A language of Sudan."], "Dilling Spoken": ["The Dilling spoken language and its dialects."], "Nubian Western Cluster": ["ISO 639-6 entity"], "Midob": ["ISO 639-6 entity"], "Midob Spoken": ["ISO 639-6 entity"], "Urrti": ["ISO 639-6 entity"], "Torti": ["ISO 639-6 entity"], "Shalkota": ["ISO 639-6 entity"], "Birked Cluster": ["ISO 639-6 entity"], "Birked": ["An extinct language of Sudan."], "Haraza": ["ISO 639-6 entity"], "Nyimang Cluster": ["ISO 639-6 entity"], "Ama (Sudan)": ["ISO 639-6 entity"], "Ama (Sudan) Written": ["ISO 639-6 entity"], "Ama (Sudan) Written Latin Script": ["ISO 639-6 entity"], "Ama (Sudan) Spoken": ["ISO 639-6 entity"], "I-Nyimang": ["ISO 639-6 entity"], "Mandal": ["ISO 639-6 entity"], "Afitti": ["Language of the ethnic group in Shamal Kurdufan in Sudan."], "Afitti Spoken": ["ISO 639-6 entity"], "Ditti": ["ISO 639-6 entity"], "Ditti Spoken": ["ISO 639-6 entity"], "Unietti": ["ISO 639-6 entity"], "Dinik": ["ISO 639-6 entity"], "Temein Cluster": ["ISO 639-6 entity"], "Temein": ["ISO 639-6 entity"], "Temein Written": ["ISO 639-6 entity"], "Temein Written Latin Script": ["ISO 639-6 entity"], "Temein Spoken": ["ISO 639-6 entity"], "Keiga-Jirru": ["ISO 639-6 entity"], "Keiga-Jirru Spoken": ["ISO 639-6 entity"], "Tese": ["A language of Sudan."], "Tese Spoken": ["The dialects of the Tese language."], "Umm-Danab": ["ISO 639-6 entity"], "Umm-Danab Spoken": ["ISO 639-6 entity"], "Thoma-Ma-Miri": ["ISO 639-6 entity"], "Thoma-Ma-Miri Written": ["Written forms of the Thoma-Ma-Miri language."], "Thoma-Ma-Miri Written Latin Script": ["A written form of the Thoma-Ma-Miri language."], "Thoma-Ma-Miri Spoken": ["ISO 639-6 entity"], "Thoma-Ma-Dhalla": ["ISO 639-6 entity"], "Thoma-Ma-Dhalla Spoken": ["ISO 639-6 entity"], "Thoma-Ma-Dholubi": ["ISO 639-6 entity"], "Thoma-Ma-Dholubi Spoken": ["ISO 639-6 entity"], "Kufo": ["ISO 639-6 entity"], "Kufo Spoken": ["ISO 639-6 entity"], "Kanga": ["A Kadu language spoken in Kordofan.", "A language of Sudan."], "Kanga Spoken": ["ISO 639-6 entity"], "Abu-Sinun": ["ISO 639-6 entity"], "Chiroro- Kursi": ["ISO 639-6 entity"], "Kufa- Lima": ["ISO 639-6 entity"], "Krongo Abdalla": ["ISO 639-6 entity"], "Tumma- Sangali": ["ISO 639-6 entity"], "Katcha-Kadugli-Miri": ["A Kadu language spoken in Kordofan."], "Katcha-Kadugli-Miri Spoken": ["ISO 639-6 entity"], "Damba": ["ISO 639-6 entity"], "Sangali": ["ISO 639-6 entity"], "Belanya": ["ISO 639-6 entity"], "Krongo-Abdallah": ["ISO 639-6 entity"], "Tulishi": ["ISO 639-6 entity"], "Kamdang": ["ISO 639-6 entity"], "Kamdang Spoken": ["ISO 639-6 entity"], "Turuj": ["ISO 639-6 entity"], "Turuj Spoken": ["ISO 639-6 entity"], "Turuj-A": ["ISO 639-6 entity"], "Logoke": ["ISO 639-6 entity"], "Minjimmina": ["ISO 639-6 entity"], "Krongo": ["ISO 639-6 entity", "A language of Sudan."], "Krongo Spoken": ["ISO 639-6 entity"], "Tabanya": ["ISO 639-6 entity"], "Dimodongo": ["ISO 639-6 entity"], "Fama": ["ISO 639-6 entity"], "Tumtum": ["ISO 639-6 entity"], "Talasa": ["ISO 639-6 entity"], "Karondi": ["ISO 639-6 entity"], "Keiga": ["A language of Sudan."], "Keiga Spoken": ["The dialects of the Keiga language."], "Keiga-El-Kheil": ["A dialect of the Keiga language."], "Kalda": ["A dialect of the Keiga language."], "Lubun": ["A dialect of the Keiga language."], "Tummero": ["A dialect of the Keiga language."], "Sani-Mo-Rofik": ["ISO 639-6 entity"], "Nera Cluster": ["ISO 639-6 entity"], "Nara": ["ISO 639-6 entity"], "Higir": ["ISO 639-6 entity"], "Higir Written": ["ISO 639-6 entity"], "Higir Written Ethiopic Script": ["ISO 639-6 entity"], "Higir Written Latin Script": ["Higir language written with the Latin Script."], "Mogareb": ["ISO 639-6 entity"], "Koyta": ["ISO 639-6 entity"], "Santora": ["ISO 639-6 entity"], "Kunama Cluster": ["ISO 639-6 entity"], "Kunama ": ["ISO 639-6 entity"], "Kunama Written": ["ISO 639-6 entity"], "Kunama Written Latin Script": ["Kunama language written with the Latin Script."], "Kunama Written Ethiopic Script": ["ISO 639-6 entity"], "Marda": ["ISO 639-6 entity"], "Aimara": ["A macro language consisting of two languages spoken by the Aymara people of the Andes. It is a Native American language with over a million speakers.", "A native ethnic group in the Andes and Altiplano regions of South America; about 1.6 million live in Bolivia, Peru, Northern Chile, and Northwestern Argentina (in particular in Salta Province)."], "Aimara Spoken": ["The dialects of the Aimara language."], "Sokodasa": ["ISO 639-6 entity"], "Barka": ["ISO 639-6 entity"], "Setiit": ["ISO 639-6 entity"], "Tiika": ["ISO 639-6 entity"], "Bitaama": ["ISO 639-6 entity"], "Ilit": ["ISO 639-6 entity"], "Komuz": ["A family of languages along the Sudan-Ethiopia border. They are believed to belong to the Nilo-Saharan family,"], "Gumuz Cluster": ["A group of languages of the Komuz family."], "Gumuz": ["A language of the Gumuz Cluster spoken in Ethiopia."], "Gumuz Spoken": ["The dialects of the Gumuz language."], "Guba": ["A dialect of the Gumuz language.", "ISO 639-6 entity"], "Wenbera": ["A dialect of the Gumuz language.", "One of the 21 woredas in the Benishangul-Gumuz Region of Ethiopia."], "Sirba": ["A dialect of the Gumuz language."], "Agalo": ["A dialect of the Gumuz language."], "Yaso": ["A dialect of the Gumuz language.", "Of the 21 woredas in the Benishangul-Gumaz Region of Ethiopia."], "Dibate": ["A dialect of the Gumuz language.", "One of the 21 woredas, or districts, in the Benishangul-Gumaz Region of Ethiopia.", "A town in western Ethiopia."], "Metemma": ["A dialect of the Gumuz language.", "One of the 105 woredas in the Amhara Region of Ethiopia.", "A village in northeastern Ethiopia, on the border with Sudan."], "Dakunza": ["A language of the Gumuz Cluster spoken in Ethiopia."], "Sai": ["A language of the Gumuz Cluster spoken in Ethiopia."], "Sese": ["A language of the Gumuz Cluster spoken in Sudan."], "Disoha": ["A language of the Gumuz Cluster spoken in Ethiopia."], "Dekoka": ["A language of the Gumuz Cluster spoken in Sudan."], "Dewiya": ["A language of the Gumuz Cluster spoken in Sudan."], "Kukwaya": ["A language of the Gumuz Cluster spoken in Sudan."], "Gombo": ["A language of the Gumuz Cluster spoken in Ethiopia."], "Jemhwa": ["A language of the Gumuz Cluster spoken in Sudan."], "Modea": ["A language of the Gumuz Cluster spoken in Sudan."], "Welqita": ["A language of the Gumuz Cluster spoken in Ethiopia."], "Eastern Jebel": ["ISO 639-6 entity"], "Aka-Kelo- Molo Cluster": ["ISO 639-6 entity"], "Aka": ["A Nilo-Saharan language spoken in Sudan.", "A Bantu language spoken in Central African Republic and Congo."], "Aka Written": ["Written forms of the Aka language."], "Aka Written Latin Script": ["Aka language written with the Latin Script."], "Aka Written Ethiopic Script": ["Aka language written with the Ethiopic Script."], "Kelo": ["ISO 639-6 entity"], "Ndu-Faa-Kelo": ["ISO 639-6 entity"], "Beni-Sheko": ["ISO 639-6 entity"], "Tornasi": ["ISO 639-6 entity"], "Gaam Cluster": ["ISO 639-6 entity"], "Gaam": ["ISO 639-6 entity"], "Gaam Spoken": ["ISO 639-6 entity"], "Agadi": ["ISO 639-6 entity"], "Bagis": ["ISO 639-6 entity"], "Beek": ["ISO 639-6 entity"], "Bulmut": ["ISO 639-6 entity"], "Kilgu": ["ISO 639-6 entity"], "Kukuli": ["ISO 639-6 entity"], "Mugum": ["ISO 639-6 entity"], "Sidak": ["ISO 639-6 entity"], "Berta Cluster": ["ISO 639-6 entity"], "Berta": ["A language spoken in Sudan and Ethiopia."], "Berta Spoken": ["The Berta spoken language and its dialects."], "Shuru": ["A dialect of the Berta language."], "Bake": ["A dialect of the Berta language."], "Undu": ["A dialect of the Berta language."], "Mayu": ["A dialect of the Berta language."], "Fadashi": ["A dialect of the Berta language."], "Dabuso": ["A dialect of the Berta language."], "Gamila": ["ISO 639-6 entity"], "Gobato": ["ISO 639-6 entity"], "Koman Cluster": ["A group of languages of the Komuz family."], "Gule": ["A Nilo-Saharan language that used to be spoken by the Gule people.", "An ethnic group belonging to the Shilluk in Northern Sudan."], "Anej Written": ["Written forms of the Anej language."], "Anej Written Latin Script": ["Anej language written with the Latin Script."], "Anej Written Ethiopic Script": ["Anej language written with the Ethiopic Script."], "Uduk": ["ISO 639-6 entity"], "Uduk Spoken": ["ISO 639-6 entity"], "Twam-Pa-C": ["ISO 639-6 entity"], "Twam-Pa-S": ["ISO 639-6 entity"], "Kwama": ["A language of Ethiopia."], "Komo (Sudan)": ["ISO 639-6 entity"], "Komo (Sudan) Spoken": ["ISO 639-6 entity"], "Beilla": ["ISO 639-6 entity"], "Koma Of Begi": ["ISO 639-6 entity"], "Koma Of Daga": ["ISO 639-6 entity"], "Madiin": ["ISO 639-6 entity"], "Opuuo": ["A language of Ethiopia and Sudan."], "Buldiit": ["ISO 639-6 entity"], "Kusgilo": ["ISO 639-6 entity"], "Surma": ["ISO 639-6 entity"], "Surmic South": ["ISO 639-6 entity"], "Surmic Southwest": ["ISO 639-6 entity"], "Didinga -Murle ": ["ISO 639-6 entity"], "Didinga Longarim Cluster": ["ISO 639-6 entity"], "Narim": ["A language of Sudan."], "Narim Written": ["Written forms of the Narim language."], "Narim Written Latin Script": ["A written form of the Narim language."], "Narim Written Ethiopic Script": ["ISO 639-6 entity"], "Didinga": ["ISO 639-6 entity", "A language of Sudan."], "Didinga Written": ["Written forms of the Didinga language."], "Didinga Written Latin Script": ["A written form of the Didinga language."], "Didinga Written Ethiopic Script": ["ISO 639-6 entity"], "Didinga Spoken": ["ISO 639-6 entity"], "Lowudo": ["ISO 639-6 entity", "ISO 639-6 entity"], "Chukudom": ["ISO 639-6 entity"], "Murle Cluster": ["ISO 639-6 entity"], "Murle": ["A language of Sudan and Ethiopia."], "Murle Spoken": ["ISO 639-6 entity"], "Ol-Ci-Lotilla": ["ISO 639-6 entity"], "Ol-Ci-Bom": ["ISO 639-6 entity"], "Olam": ["ISO 639-6 entity"], "Murle-Omo": ["ISO 639-6 entity"], "Tenet Cluster": ["ISO 639-6 entity"], "Tennet": ["ISO 639-6 entity"], "Tennet Written": ["ISO 639-6 entity"], "Tennet Spoken": ["ISO 639-6 entity"], "Kacipo- Balesi Cluster": ["ISO 639-6 entity"], "Zilmamu": ["ISO 639-6 entity"], "Zilmamu Spoken": ["The dialects of the Zilmamu language."], "Bale-Si": ["ISO 639-6 entity"], "Bale-Si Spoken": ["ISO 639-6 entity"], "Kacipo-Balesi": ["A language of Sudan and Ethiopia."], "Kacipo Spoken": ["ISO 639-6 entity"], "Kwegu": ["ISO 639-6 entity", "ISO 639-6 entity"], "Pastoral": ["ISO 639-6 entity"], "Me'en Cluster": ["ISO 639-6 entity"], "Me\u2019en": ["ISO 639-6 entity"], "Me\u2019en Written": ["ISO 639-6 entity"], "Me\u2019en Written Ethiopic Script": ["ISO 639-6 entity"], "Me\u2019en Spoken": ["ISO 639-6 entity"], "Bodi": ["ISO 639-6 entity"], "Tishena": ["ISO 639-6 entity"], "Suri Cluster": ["ISO 639-6 entity"], "Mursi": ["ISO 639-6 entity"], "Mursi Written": ["ISO 639-6 entity"], "Mursi Spoken": ["ISO 639-6 entity"], "Tirma": ["ISO 639-6 entity"], "Tirma Spoken": ["ISO 639-6 entity"], "Suri": ["ISO 639-6 entity"], "Suri Written": ["ISO 639-6 entity"], "Suri Spoken": ["ISO 639-6 entity"], "Kwegoi Cluster": ["ISO 639-6 entity"], "Kwegu Spoken": ["ISO 639-6 entity"], "Muguji-Apo": ["ISO 639-6 entity"], "Muguji-Apo Spoken": ["ISO 639-6 entity"], "Majang-Shabo Cluster": ["ISO 639-6 entity"], "Majang": ["ISO 639-6 entity", "ISO 639-6 entity"], "Majang Spoken": ["ISO 639-6 entity"], "Shabo": ["ISO 639-6 entity"], "Shabo Spoken": ["ISO 639-6 entity"], "Nilotic": ["ISO 639-6 entity"], "Nilotic Western": ["ISO 639-6 entity"], "Dinka Nuer": ["ISO 639-6 entity"], "Dinka Cluster": ["ISO 639-6 entity"], "Northeastern Dinka": ["A language of Sudan."], "Northeastern Dinka Written": ["The written versions of the Northeastern Dink language."], "Northeastern Dinka Written Latin Script": ["The Northeastern Dinka language written with the Latin script."], "Northeastern Dinka Spoken": ["The Northeastern Dinka spoken language and its dialects."], "Abialang": ["A dialect of the Northeastern Dinka language."], "Paloc": ["A dialect of the Northeastern Dinka language."], "Dongjol": ["A dialect of the Northeastern Dinka language."], "Ngok": ["ISO 639-6 entity"], "Ngok Spoken": ["ISO 639-6 entity"], "Thoi- Luac": ["ISO 639-6 entity"], "Thoi- Luac Spoken": ["ISO 639-6 entity"], "Thoi": ["ISO 639-6 entity"], "Luac": ["ISO 639-6 entity"], "Rut": ["ISO 639-6 entity"], "Rut Spoken": ["ISO 639-6 entity"], "Northwestern Dinka": ["A language of Sudan."], "Northwestern Dinka Written": ["The written versions of the Northwestern Dinka language."], "Northwestern Dinka Written Latin Script": ["The Northwestern Dinka language written with the Latin script."], "Northwestern Dinka Spoken": ["The Northwestern Dinka spoken language and its dialects."], "Pawang": ["A dialect of the Northwestern Dinka language."], "Kwil": ["A dialect of the Northwestern Dinka language."], "Awet": ["A dialect of the Northwestern Dinka language."], "Alor": ["A dialect of the Northwestern Dinka language.", "A language of Indonesia (Nusa Tenggara)."], "Jok": ["A dialect of the Northwestern Dinka language."], "Pan-Aru": ["A dialect of the Northwestern Dinka language."], "Malual- Tuic": ["ISO 639-6 entity"], "Malual- Tuic Spoken": ["ISO 639-6 entity"], "Malual": ["ISO 639-6 entity"], "Abiem": ["ISO 639-6 entity"], "Tuic": ["ISO 639-6 entity"], "Palioupiny": ["ISO 639-6 entity"], "Palioupiny Spoken": ["ISO 639-6 entity"], "Gomjuer": ["ISO 639-6 entity"], "Cimel": ["ISO 639-6 entity"], "Ajuet": ["ISO 639-6 entity"], "Akuang-Ayat": ["ISO 639-6 entity"], "Southwestern Dinka": ["A language of Sudan."], "Southwestern Dinka Written": ["The written versions of the Southwestern Dinka language."], "Southwestern Dinka Written Latin Script": ["The Southwestern Dinka language written with the Latin script."], "Southwestern Dinka Spoken": ["The Southwestern Dinka spoken language and its dialects."], "Rek-C": ["A dialect of the Southwestern Dinka language."], "Paliet": ["A dialect of the Southwestern Dinka language."], "Luac-W": ["A dialect of the Southwestern Dinka language."], "Aguok": ["A dialect of the Southwestern Dinka language."], "Apuk": ["A dialect of the Southwestern Dinka language."], "Awan": ["A dialect of the Southwestern Dinka language."], "Lau-SW": ["A dialect of the Southwestern Dinka language."], "Rek-V": ["A dialect of the Southwestern Dinka language."], "Gok": ["ISO 639-6 entity"], "Gok Spoken": ["ISO 639-6 entity"], "South Central Dinka": ["A language of Sudan."], "South Central Dinka Spoken": ["The South Central Dinka spoken language and its dialects."], "Agar": ["A dialect of the South Central Dinka language."], "Ciec": ["A dialect of the South Central Dinka language."], "Aliap": ["ISO 639-6 entity"], "Aliap Spoken": ["The dialects of the Aliap language."], "Aker": ["A dialect of the Aliap language."], "Thany": ["A dialect of the Aliap language."], "Southeastern Dinka": ["A language of Sudan."], "Southeastern Dinka Spoken": ["The Southeastern Dinka spoken language and its dialects."], "Bor-Gok": ["A dialect of the Southeastern Dinka language."], "Athoc": ["A dialect of the Southeastern Dinka language."], "Twi": ["A language of the Niger-Congo family spoken in Ghana."], "Nyarueng- Ghol": ["ISO 639-6 entity"], "Nyarueng- Ghol Spoken": ["ISO 639-6 entity"], "Nyarueng": ["ISO 639-6 entity"], "Ghol": ["ISO 639-6 entity"], "Nuer Cluster": ["ISO 639-6 entity"], "Nuer": ["ISO 639-6 entity"], "Thiang": ["ISO 639-6 entity"], "Gawaar": ["ISO 639-6 entity"], "Door- Nyuong": ["ISO 639-6 entity"], "Door- Nyuong Spoken": ["ISO 639-6 entity"], "Door": ["ISO 639-6 entity"], "Nyuong": ["ISO 639-6 entity"], "Dar-Cieng": ["ISO 639-6 entity"], "Dar-Cieng Spoken": ["ISO 639-6 entity"], "Aak": ["ISO 639-6 entity"], "Dok": ["ISO 639-6 entity"], "Jagei": ["ISO 639-6 entity"], "Leek- Laak": ["ISO 639-6 entity"], "Leek- Laak Spoken": ["ISO 639-6 entity"], "Leek": ["ISO 639-6 entity"], "Laak": ["ISO 639-6 entity"], "Bul": ["ISO 639-6 entity"], "Jikany-W": ["ISO 639-6 entity"], "Nuer-East": ["ISO 639-6 entity"], "Jikany-E": ["ISO 639-6 entity"], "Reel": ["A language of Sudan."], "Reel Spoken": ["The Reel spoken language and its dialects."], "Kuek-Rorkec": ["A dialect of the Reel language."], "Apak": ["A dialect of the Reel language."], "Aril": ["A dialect of the Reel language."], "Jilek": ["A dialect of the Reel language."], "Akot": ["A dialect of the Reel language."], "Luo": ["A language of Cameroon and Tanzania", "ISO 639-6 entity"], "Luo Northern": ["ISO 639-6 entity"], "Shilluk Cluster": ["ISO 639-6 entity"], "Shilluk": ["ISO 639-6 entity"], "Dho-Colo-Western": ["ISO 639-6 entity"], "Dho-Colo-Eastern": ["ISO 639-6 entity"], "Anuak Cluster": ["ISO 639-6 entity"], "Anuak": ["A language of Sudan and Ethiopia."], "Adongo": ["ISO 639-6 entity"], "Lul": ["ISO 639-6 entity"], "Openo": ["ISO 639-6 entity"], "Ciro": ["ISO 639-6 entity"], "Pari Cluster": ["ISO 639-6 entity"], "P\u00e4ri": ["ISO 639-6 entity"], "Thuri Cluster": ["ISO 639-6 entity"], "Thuri": ["ISO 639-6 entity"], "Dhe-Bodho": ["ISO 639-6 entity"], "Dhe-Colo-S": ["ISO 639-6 entity"], "Jur Manangeer": ["ISO 639-6 entity"], "Jur Cluster": ["ISO 639-6 entity"], "Luwo": ["ISO 639-6 entity"], "Bor Cluster": ["ISO 639-6 entity"], "Belanda Bor": ["A language of Sudan."], "Dhe-Bor-N": ["ISO 639-6 entity"], "Dhe-Bor-W": ["ISO 639-6 entity"], "Dhe-Bor-E": ["ISO 639-6 entity"], "Luo Southen": ["ISO 639-6 entity"], "Luo Acholi": ["ISO 639-6 entity"], "Alur Acholi Cluster": ["ISO 639-6 entity"], "Alur": ["A language of Democratic Republic of the Congo and Uganda"], "Alur Spoken": ["The Alur spoken language and its dialects."], "Aluur-A": ["A dialect of the Alur language."], "Nam": ["A dialect of the Alur language."], "Ma-Mbisa": ["A dialect of the Alur language."], "Nyoro": ["A dialect of the Alur language."], "Lango Acholi Cluster": ["ISO 639-6 entity"], "Dok-Acholi": ["ISO 639-6 entity"], "Log-Acholi": ["ISO 639-6 entity"], "Log-Me-Labwor": ["ISO 639-6 entity"], "Dho-Pa-Lwo": ["ISO 639-6 entity"], "Nyakwai": ["ISO 639-6 entity"], "Lango": ["A language of Uganda.", "A language of Sudan."], "Kumam Cluster": ["ISO 639-6 entity"], "Kumam": ["ISO 639-6 entity"], "Adhola Cluster": ["ISO 639-6 entity"], "Adhola": ["A language of Uganda."], "Adhola Written": ["The written versions of the Adhola language."], "Adhola Spoken": ["The dialects of the Adhola language."], "Luo Cluster": ["ISO 639-6 entity"], "Maban-Burun": ["ISO 639-6 entity"], "Burun Cluster": ["ISO 639-6 entity"], "Ragreig": ["ISO 639-6 entity"], "Burun": ["A language of Sudan."], "Burun Spoken": ["The Burun spoken language and its dialects."], "Maiak": ["ISO 639-6 entity"], "Mughaja": ["ISO 639-6 entity"], "Bogon": ["ISO 639-6 entity"], "Bogon Spoken": ["The dialects of the Bogon language."], "Tarak": ["ISO 639-6 entity"], "Mufwa": ["ISO 639-6 entity"], "Maban Cluster": ["ISO 639-6 entity"], "Gerawi": ["ISO 639-6 entity"], "Begu": ["ISO 639-6 entity"], "Begu Spoken": ["The dialects of the Begu language."], "Jumjum": ["A language of Sudan."], "Jumjum Spoken": ["The dialects of the Jumjum language."], "Tunya": ["A dialect of the Jumjum language."], "Terta": ["A dialect of the Jumjum language."], "Wadega": ["ISO 639-6 entity"], "Mabaan": ["ISO 639-6 entity"], "Mabaan Spoken": ["ISO 639-6 entity"], "Nilotic-Eastern": ["ISO 639-6 entity"], "Bari Cluster": ["ISO 639-6 entity"], "Mandari ": ["ISO 639-6 entity"], "Mandari Written": ["Written forms of the Mandari language."], "Mandari Written Latin Script": ["A written form of the Mandari language."], "Mandari Spoken": ["ISO 639-6 entity"], "Kutuk-Na-Mundari": ["ISO 639-6 entity"], "Kutuk-Na-Mundari Spoken": ["ISO 639-6 entity"], "Bari Written": ["ISO 639-6 entity"], "Bari Spoken": ["The dialects of the Bari language."], "Nyangbara": ["ISO 639-6 entity"], "Nyangbara Spoken": ["ISO 639-6 entity"], "Nyangbara-NW": ["ISO 639-6 entity"], "Nyangbara-NE": ["ISO 639-6 entity"], "Nyangbara-S": ["ISO 639-6 entity"], "P\u00f6julu": ["ISO 639-6 entity"], "P\u00f6julu Spoken": ["ISO 639-6 entity"], "P\u00f6julu-N": ["ISO 639-6 entity"], "P\u00f6julu-C": ["ISO 639-6 entity"], "P\u00f6julu-S": ["ISO 639-6 entity"], "P\u00f6julu-SW": ["ISO 639-6 entity"], "P\u00f6julu-SE": ["ISO 639-6 entity"], "Nyepu": ["ISO 639-6 entity"], "Nyepu Spoken": ["ISO 639-6 entity"], "Kutuk-Na-Kuku": ["ISO 639-6 entity"], "Kutuk-Na-Kuku Spoken": ["ISO 639-6 entity"], "Ligo": ["ISO 639-6 entity"], "Ligo Spoken": ["ISO 639-6 entity"], "Kakwa": ["A language of the Bari family spoken by the Kakwa people in northwestern Uganda, South Sudan and Orientale province of the Democratic Republic of the Congo."], "Kakwa Written": ["The written forms of the Kakwa language."], "Kakwa Spoken": ["The dialects of the Kakwa language."], "Yei": ["A dialect of the Kakwa language.", "A language of Indonesia (Papua)"], "Aba": ["A dialect of the Kakwa language."], "Yumbe": ["A dialect of the Kakwa language."], "Lotuxo-Teso": ["ISO 639-6 entity"], "Lotuxo-Maa": ["ISO 639-6 entity"], "Lotuxo Cluster": ["ISO 639-6 entity"], "Otuho": ["An Eastern Nilotic language spoken by the Lotuko ethnic group of Eastern Equatoria, an area in Southern Sudan."], "Otuho Written": ["ISO 639-6 entity"], "Otuho Spoken": ["ISO 639-6 entity"], "Lokoya": ["ISO 639-6 entity"], "Lokoya Spoken": ["ISO 639-6 entity"], "O-Irya": ["ISO 639-6 entity"], "O-Bolong": ["ISO 639-6 entity"], "Netuk-On-O-Ghoriuk": ["ISO 639-6 entity"], "Netuk-On-O-Ghoriuk Spoken": ["ISO 639-6 entity"], "Tuxo": ["ISO 639-6 entity"], "Tuxo Spoken": ["ISO 639-6 entity"], "Lowudo Spoken": ["ISO 639-6 entity"], "Logotok": ["ISO 639-6 entity"], "Logotok Spoken": ["ISO 639-6 entity"], "Lopit": ["A language of Sudan."], "Lopit Spoken": ["ISO 639-6 entity"], "Lomya": ["ISO 639-6 entity"], "Lomya Spoken": ["ISO 639-6 entity"], "Dongotono": ["A language of Sudan."], "Dongotono Spoken": ["The Dongotono spoken language and its dialects."], "Lorwama": ["ISO 639-6 entity"], "Lorwama Spoken": ["ISO 639-6 entity"], "Lokathan": ["ISO 639-6 entity"], "Lokathan Spoken": ["ISO 639-6 entity"], "Lango (Sudan)": ["ISO 639-6 entity"], "Lango (Sudan) Written": ["ISO 639-6 entity"], "Lango (Sudan) Spoken": ["ISO 639-6 entity"], "Imatong": ["ISO 639-6 entity"], "Langgo-Dongotono": ["ISO 639-6 entity"], "Acholi-Torit": ["ISO 639-6 entity"], "Acholi-Torit Spoken": ["The dialects of the Acholi-Torit language."], "Logiri-Dongotono": ["A dialect of the Acholi-Torit language."], "Lolibai": ["A dialect of the Acholi-Torit language."], "Logir": ["ISO 639-6 entity"], "Logir Spoken": ["ISO 639-6 entity"], "Ongamo-Maa Cluster": ["ISO 639-6 entity"], "Masai": ["ISO 639-6 entity"], "Masai Written": ["ISO 639-6 entity"], "Masai Spoken": ["ISO 639-6 entity"], "Sirya": ["ISO 639-6 entity"], "Wuasinkishu": ["ISO 639-6 entity"], "Maasai-C": ["ISO 639-6 entity"], "Oytai": ["ISO 639-6 entity"], "Ooddo-Kila-Ni": ["ISO 639-6 entity"], "Kankere": ["ISO 639-6 entity"], "Kore": ["ISO 639-6 entity"], "Kaputiei": ["ISO 639-6 entity"], "Matapato": ["ISO 639-6 entity"], "Kisongo": ["ISO 639-6 entity"], "Arusha": ["ISO 639-6 entity"], "Baraguyu": ["ISO 639-6 entity"], "Sikirari": ["ISO 639-6 entity"], "Kwavi": ["ISO 639-6 entity"], "Oigob": ["ISO 639-6 entity"], "Samburu": ["ISO 639-6 entity"], "Samburu Written": ["ISO 639-6 entity"], "Samburu Spoken": ["ISO 639-6 entity"], "Chamus": ["ISO 639-6 entity"], "Chamus Spoken": ["ISO 639-6 entity"], "Ngasa": ["ISO 639-6 entity"], "Ngasa Spoken": ["ISO 639-6 entity"], "Teso-Turkana": ["ISO 639-6 entity"], "Turkana Cluster": ["ISO 639-6 entity"], "Jiye-N": ["ISO 639-6 entity"], "Jiye-N Spoken": ["ISO 639-6 entity"], "Toposa": ["ISO 639-6 entity"], "Toposa Written": ["ISO 639-6 entity"], "Toposa Spoken": ["ISO 639-6 entity"], "Toposa-W": ["ISO 639-6 entity"], "Toposa-E": ["ISO 639-6 entity"], "Nyangatom": ["ISO 639-6 entity"], "Nyangatom Spoken": ["ISO 639-6 entity"], "Puma Spoken": ["ISO 639-6 entity"], "Turkana": ["ISO 639-6 entity"], "Turkana Spoken": ["ISO 639-6 entity"], "Turkana-N": ["ISO 639-6 entity"], "Turkana-S": ["ISO 639-6 entity"], "Ketebo": ["ISO 639-6 entity"], "Ketebo Spoken": ["ISO 639-6 entity"], "O-Rom": ["ISO 639-6 entity"], "O-Rom Spoken": ["ISO 639-6 entity"], "Na-Pore": ["ISO 639-6 entity"], "Na-Pore Spoken": ["ISO 639-6 entity"], "I-Dodotho": ["ISO 639-6 entity"], "I-Dodotho Spoken": ["ISO 639-6 entity"], "Jiye-S": ["ISO 639-6 entity"], "Jiye-S Spoken": ["ISO 639-6 entity"], "Karamojong": ["ISO 639-6 entity"], "Karamojong Written": ["ISO 639-6 entity"], "Karamojong Spoken": ["ISO 639-6 entity"], "Teso Cluster": ["ISO 639-6 entity"], "Teso": ["ISO 639-6 entity"], "Teso Written": ["ISO 639-6 entity"], "Teso Spoken": ["ISO 639-6 entity"], "Ngora": ["ISO 639-6 entity"], "Pallisa": ["ISO 639-6 entity"], "Tesyo": ["ISO 639-6 entity"], "Tesyo Spoken": ["ISO 639-6 entity"], "Tororo": ["ISO 639-6 entity"], "Busia": ["ISO 639-6 entity"], "Nilotic-Southern": ["ISO 639-6 entity"], "Wider Kalenjin": ["ISO 639-6 entity"], "Pakot Cluster": ["ISO 639-6 entity"], "P\u00f6koot": ["A language of Kenya and Uganda."], "P\u00f6koot Written": ["Written forms of the P\u00f6koot language."], "P\u00f6koot Written Latin Script": ["A written form of the P\u00f6koot language."], "P\u00f6koot Spoken": ["The dialects of the P\u00f6koot language."], "Suk-W": ["A dialecta of the P\u00f6koot language."], "Suk-E": ["A dialecta of the P\u00f6koot language."], "Ngi-Kadama": ["ISO 639-6 entity"], "Ngi-Kadama Spoken": ["ISO 639-6 entity"], "Markweta Cluster": ["ISO 639-6 entity"], "Markwet": ["ISO 639-6 entity"], "Markwet Spoken": ["ISO 639-6 entity"], "Markwet-N": ["ISO 639-6 entity"], "Markwet-S": ["ISO 639-6 entity"], "Endo": ["A language of Kenya"], "Endo Written": ["The written forms of the Endo language."], "Endo Spoken": ["The dialects of the Endo language."], "Sambirir": ["ISO 639-6 entity"], "Sambirir Spoken": ["ISO 639-6 entity"], "Talai": ["ISO 639-6 entity"], "Talai Written": ["ISO 639-6 entity"], "Talai Spoken": ["ISO 639-6 entity"], "North Tugen": ["ISO 639-6 entity"], "North Tugen Spoken": ["ISO 639-6 entity"], "Elgon Cluster": ["ISO 639-6 entity"], "Kupsabiny": ["A language of Uganda."], "Kupsabiny Spoken": ["The dialects of the Kupsabiny language."], "Mbai": ["ISO 639-6 entity"], "Mbai Spoken": ["ISO 639-6 entity"], "Ki-P-Sorai": ["ISO 639-6 entity"], "Ki-P-Sorai Spoken": ["ISO 639-6 entity"], "Sabaot": ["ISO 639-6 entity", "ISO 639-6 entity"], "Sabaot Spoken": ["ISO 639-6 entity"], "Pok": ["ISO 639-6 entity"], "Pok Spoken": ["ISO 639-6 entity"], "Nga-Lek-Ap-L-Kony": ["ISO 639-6 entity"], "Nga-Lek-Ap-L-Kony Spoken": ["ISO 639-6 entity"], "Ng\u2019oma": ["ISO 639-6 entity"], "Ng\u2019oma Spoken": ["ISO 639-6 entity"], "Kalenjin": ["ISO 639-6 entity", "A language of Kenya."], "South Tugen": ["ISO 639-6 entity"], "South Tugen Spoken": ["ISO 639-6 entity"], "Keyyo": ["ISO 639-6 entity"], "Keyyo Spoken": ["ISO 639-6 entity"], "Ngalek-Ap-Naandi": ["ISO 639-6 entity"], "Ngalek-Ap-Naandi Spoken": ["ISO 639-6 entity"], "Nandi-A": ["ISO 639-6 entity"], "Kapsabet": ["ISO 639-6 entity"], "Terik": ["ISO 639-6 entity"], "Ngalek-Ap-Kipsigiis": ["ISO 639-6 entity"], "Cherangany": ["ISO 639-6 entity"], "Okiek Cluster": ["ISO 639-6 entity"], "Okiek": ["ISO 639-6 entity"], "Sogoo": ["ISO 639-6 entity"], "Suiei": ["ISO 639-6 entity"], "Mosiro": ["ISO 639-6 entity"], "Aramanik": ["A language of Tanzania."], "Kisankasa": ["A language of Tanzania."], "Mediak": ["ISO 639-6 entity"], "Tato Cluster": ["ISO 639-6 entity"], "Omotik": ["A language of Kenya."], "Datooga": ["ISO 639-6 entity"], "Kangara": ["ISO 639-6 entity"], "Buraa-Diiga": ["ISO 639-6 entity"], "Rooti-Gaanga": ["ISO 639-6 entity"], "Bian-Jida": ["ISO 639-6 entity"], "Darora-Jega": ["ISO 639-6 entity"], "Bajut": ["ISO 639-6 entity"], "Gisam-Janga": ["ISO 639-6 entity"], "Baraba-Yiiga": ["ISO 639-6 entity"], "Tsima-Jeega": ["ISO 639-6 entity"], "Daragwa-Jega": ["ISO 639-6 entity"], "Reimo-Jik": ["ISO 639-6 entity"], "Manga-Tiga": ["ISO 639-6 entity"], "Ghumbi-Ega": ["ISO 639-6 entity"], "Bisi-Yeda": ["ISO 639-6 entity"], "Gidang'o-Diga": ["ISO 639-6 entity"], "Salawa-Jega": ["ISO 639-6 entity"], "Omotic": ["Group of languages spoken in northeastern Africa."], "Hamer-Banna": ["An Omotic language spoken primarily in the southern part of Ethiopia by the Hamer, Banna people, and Karo peoples."], "Bana-Apo": ["ISO 639-6 entity"], "Karo (Ethipopoa)": ["ISO 639-6 entity"], "Bashada-Apo": ["ISO 639-6 entity"], "Aari": ["An Omotic language of Ethiopia"], "Gozza": ["ISO 639-6 entity"], "Biyo": ["ISO 639-6 entity", "A language of China."], "Laydo": ["ISO 639-6 entity"], "Seyki": ["ISO 639-6 entity"], "Shangama": ["ISO 639-6 entity"], "Sido": ["ISO 639-6 entity"], "Wubahamer": ["Language spoken in Ethiopia."], "Zeddo": ["Language spoken in Ethiopia."], "Galila": ["Language spoken in Ethiopia."], "Dime": ["A South Omotic language spoken in the northern part of the Selamago district in Ethiopia."], "Gonga Gimojan": ["A group of North Omotic languages."], "Gimojan": ["An omotic language."], "Ometo-Gimira Complex": ["A group of Gimojan languages."], "Chara Cluster": ["ISO 639-6 entity"], "Chara": ["A language of Ethiopia."], "Ometo": ["An African language from the group of Omotic languages, spoken mostly in southwestern Ethiopia."], "Ometo East Cluster": ["ISO 639-6 entity"], "Zayse- Zergulla": ["ISO 639-6 entity"], "Zayse": ["ISO 639-6 entity"], "Zergulla": ["ISO 639-6 entity"], "Koorete": ["A language of Ethiopia."], "Koorete Written": ["Written forms of the Koorete language."], "Koorete Written Latin Script": ["A written form of the Koorete language."], "Koorete Written Ethiopic Script": ["ISO 639-6 entity"], "Gidicho": ["ISO 639-6 entity"], "Kachama-Ganjule": ["A language of Ethiopia."], "Ganjule": ["ISO 639-6 entity"], "Ometo Central": ["ISO 639-6 entity"], "Walamo": ["An Omotic language spoken in the Wolaita Zone of Ethiopia."], "Walamo Spoken": ["ISO 639-6 entity"], "Laha": ["ISO 639-6 entity", "A language of Viet Nam.", "A language of Indonesia (Maluku)."], "Zala": ["ISO 639-6 entity"], "Dache": ["ISO 639-6 entity"], "Dorze": ["A language of Ethiopia."], "Dorze Spoken": ["ISO 639-6 entity"], "Dorze-S": ["ISO 639-6 entity"], "Dorze-U": ["ISO 639-6 entity"], "Gamo-Gofa-Dawro": ["An Afro-Asiatic language spoken in the Dawro, Gamo Gofa and Wolayita Zones in Ethiopia."], "Gofa": ["ISO 639-6 entity"], "Gofa Spoken": ["ISO 639-6 entity"], "Gamo": ["ISO 639-6 entity"], "Dawro": ["ISO 639-6 entity"], "Kulo-Kale": ["ISO 639-6 entity"], "Jimma": ["ISO 639-6 entity"], "Gene": ["ISO 639-6 entity"], "Waka": ["ISO 639-6 entity"], "Kucha": ["ISO 639-6 entity"], "Konta": ["ISO 639-6 entity"], "Oyda": ["ISO 639-6 entity"], "Melo": ["ISO 639-6 entity"], "Ometo South": ["ISO 639-6 entity"], "Male (Ethiopia)": ["ISO 639-6 entity"], "Ometo West": ["A group of Ometo languages."], "Basketo": ["A variety of the Ometo language spoken in Basketo, Ethiopia.", "One of the 77 woredas in the Southern Nations, Nationalities and Peoples' Region of Ethiopia."], "Basketo Written": ["Written forms of the Basketo language."], "Doko": ["A dialect of the Basketo language."], "Mongombo": ["A dialect of the Basketo language."], "Dolo": ["A dialect of the Basketo language."], "Gimira Cluster": ["ISO 639-6 entity"], "Bench": ["A language of Ethiopia"], "Mieru": ["ISO 639-6 entity"], "Mieru Spoken": ["ISO 639-6 entity"], "Siiz-Dod": ["ISO 639-6 entity"], "Siiz-Dod Spoken": ["ISO 639-6 entity"], "Janjero Cluster": ["ISO 639-6 entity"], "Yemsa": ["ISO 639-6 entity", "A language of Ethiopia."], "Yemsa Spoken": ["ISO 639-6 entity"], "Fuga": ["ISO 639-6 entity"], "Fuga Spoken": ["ISO 639-6 entity"], "Gonga Complex": ["ISO 639-6 entity"], "Gonga South Cluster": ["ISO 639-6 entity"], "Kafa": ["A language of Ethiopia."], "Kafa Spoken": ["ISO 639-6 entity"], "Shekkacho": ["ISO 639-6 entity"], "Shekkacho Written": ["Written forms of the Shekkacho language."], "Shekkacho Written Latin Script": ["A written form of the Shekkacho language."], "Shekkacho Spoken": ["ISO 639-6 entity"], "Bosha": ["ISO 639-6 entity"], "Gonga Central Cluster": ["ISO 639-6 entity"], "Anfillo": ["ISO 639-6 entity"], "Anfillo Spoken": ["The dialects of the Anfillo language."], "Gonga North": ["ISO 639-6 entity"], "Guba Spoken": ["ISO 639-6 entity"], "Boro": ["A language of the Gonga North group spoken in Ethiopia."], "Boro Spoken": ["Variants of the Boro language used in oral communication."], "Naga": ["ISO 639-6 entity"], "Naga Spoken": ["ISO 639-6 entity"], "Amuru ": ["ISO 639-6 entity"], "Amuru Spoken": ["The dialects of the Amuru language."], "Wambera": ["ISO 639-6 entity"], "Wambera Spoken": ["ISO 639-6 entity"], "Dizo\u00efd Cluster": ["ISO 639-6 entity"], "Dizi": ["ISO 639-6 entity"], "Dizi Spoken": ["ISO 639-6 entity"], "Aro-Duku": ["ISO 639-6 entity"], "Maji-Damt": ["ISO 639-6 entity"], "Jiaba-Gai": ["ISO 639-6 entity"], "Kolu-Kontakolu": ["ISO 639-6 entity"], "Mui": ["ISO 639-6 entity"], "Nayi": ["ISO 639-6 entity"], "Nayi Spoken": ["ISO 639-6 entity"], "Sheko": ["ISO 639-6 entity"], "Sheko Written": ["ISO 639-6 entity"], "Sheko Spoken": ["ISO 639-6 entity"], "Bulla": ["ISO 639-6 entity"], "Dorsha": ["ISO 639-6 entity"], "Mao Cluster": ["ISO 639-6 entity"], "Didessa": ["ISO 639-6 entity"], "Mao-Koole": ["ISO 639-6 entity"], "Mao-Koole Spoken": ["ISO 639-6 entity"], "Bambeshi-A": ["ISO 639-6 entity"], "Hozo": ["A language of Ethiopia."], "Sezo": ["ISO 639-6 entity"], "Ganza Spoken": ["ISO 639-6 entity", "ISO 639-6 entity"], "Yabus": ["ISO 639-6 entity"], "Asosa": ["ISO 639-6 entity"], "Gallo-Ibero-Romance": ["A subgroup of the Western Continental Romance."], "Ibero-Romance": ["A group of dialects derived from Latin, originating in the territory of Hispania."], "Ibero-Romance North": ["ISO 639-6 entity"], "Ibero-Romance Northwestern": ["ISO 639-6 entity"], "Galician Written": ["Written forms of the Galician language."], "Galician Written Latin Script": ["A written form of the Galician language."], "Galician Spoken": ["ISO 639-6 entity"], "Galego-Formal": ["ISO 639-6 entity"], "Galego-W": ["ISO 639-6 entity"], "Galego-E": ["ISO 639-6 entity"], "Galego-Argentina": ["ISO 639-6 entity"], "Fala": ["A Romance language from the Portuguese-Galician subgroup spoken in Spain by about 10,500 people, of which 5,500 live in a valley of the northwestern part of Extremadura near the border with Portugal."], "Fala Written": ["The written forms of the Fala language."], "Fala Written Latin Script": ["Fala language written with the Latin Script."], "Fala Spoken": ["The dialects of the Fala language."], "Valvideiru": ["ISO 639-6 entity"], "Ma\u0148egu": ["ISO 639-6 entity"], "Lagarteiru": ["ISO 639-6 entity"], "Portugu\u00eas-N": ["ISO 639-6 entity"], "Portugu\u00eas-N Spoken": ["ISO 639-6 entity"], "Portugu\u00eas-NE": ["ISO 639-6 entity"], "Portugu\u00eas-CN": ["ISO 639-6 entity"], "Beira": ["ISO 639-6 entity"], "Portuguese Spoken": ["Dialects of the Portuguese language."], "Portuguese-Formal": ["ISO 639-6 entity"], "Estremenho": ["ISO 639-6 entity"], "Brasil-F": ["ISO 639-6 entity"], "Portugu\u00eas-G": ["Generalised colloquial luso-portuguese."], "Riodonor\u00e9s": ["A dialect of Portuguese spoken at the frontier between Spain and Portugal."], "Portugu\u00eas-Africa-W": ["A dialect of Portuguese spoken in Cape Verde, Guinea-Bissau and S\u00e3o Tom\u00e9."], "Pr\u00eatogu\u00eas": ["A dialect of Portuguese spoken in Angola, South Africa and Mozambique."], "Portugu\u00eas-Goa": ["A dialect of Portuguese spoken in Goa (India)."], "Portugu\u00eas-Mac\u00e3o": ["A dialect of Portuguese spoken in Mac\u00e3o."], "Portugu\u00eas-Timor": ["A dialect of Portuguese spoken in East Timor."], "Madeirense": ["ISO 639-6 entity"], "Madeirense Spoken": ["ISO 639-6 entity"], "Funchal": ["ISO 639-6 entity"], "Porto-Santo": ["ISO 639-6 entity"], "A\u00e7oriano": ["ISO 639-6 entity"], "A\u00e7oriano-E": ["ISO 639-6 entity"], "A\u00e7oriano-C": ["ISO 639-6 entity"], "A\u00e7oriano-NW": ["ISO 639-6 entity"], "Brasileiro-G": ["ISO 639-6 entity"], "Brasileiro-G Spoken": ["ISO 639-6 entity"], "Brasileiro-NE": ["ISO 639-6 entity"], "Brasileiro-E": ["ISO 639-6 entity"], "Rio-De-Janeiro": ["ISO 639-6 entity"], "S\u00e3o-Paolo": ["ISO 639-6 entity"], "Brasileiro-SE": ["ISO 639-6 entity"], "Mato-Grosso": ["ISO 639-6 entity"], "Amazonas": ["ISO 639-6 entity"], "Falares-Baianos": ["ISO 639-6 entity"], "Mineiro": ["ISO 639-6 entity"], "Carioca": ["ISO 639-6 entity"], "Carioca Spoken": ["The dialects of the Carioca language."], "Paulista": ["ISO 639-6 entity"], "Fronteiri\u00e7o": ["ISO 639-6 entity"], "Ibero-Romance North Central": ["ISO 639-6 entity"], "Spanish Spoken": ["Variants of the Spanish language used in oral communication."], "Castellano-Formal": ["ISO 639-6 entity"], "Americano-Formal": ["ISO 639-6 entity"], "Espa\u00f1ol-G": ["ISO 639-6 entity"], "Espa\u00f1ol-G Spoken": ["ISO 639-6 entity"], "Espa\u00f1a-G": ["ISO 639-6 entity"], "Castilla- L\u00e9on": ["ISO 639-6 entity"], "Cantabrica": ["ISO 639-6 entity"], "Rioja": ["ISO 639-6 entity"], "Vasco": ["ISO 639-6 entity"], "Navarra": ["ISO 639-6 entity"], "La-Mancha": ["ISO 639-6 entity"], "Estremadura": ["ISO 639-6 entity"], "Espa\u00f1ol-Arag\u00f3n": ["ISO 639-6 entity"], "Espa\u00f1ol-Valencia": ["ISO 639-6 entity"], "Espa\u00f1ol-Catalu\u00f1a": ["ISO 639-6 entity"], "Espa\u00f1ol-Baleares": ["ISO 639-6 entity"], "Andaluz Spoken": ["The dialects of the Andaluz language."], "Espa\u00f1ol-Canario": ["ISO 639-6 entity"], "Espa\u00f1ol-Sahariano": ["ISO 639-6 entity"], "Espa\u00f1ol-Guineo": ["ISO 639-6 entity"], "Americano-S": ["ISO 639-6 entity"], "Americano-S Spoken": ["The Spanish language dialects of the Americano-S branch."], "Mexicano": ["A Spanish language dialect of the Americano-S branch."], "Belice\u00f1o": ["A Spanish language dialect of the Americano-S branch."], "Salvadore\u00f1o": ["A Spanish language dialect of the Americano-S branch."], "Hondure\u00f1o": ["A Spanish language dialect of the Americano-S branch."], "Nicarag\u00fcense": ["A Spanish language dialect of the Americano-S branch."], "Costarricense": ["A Spanish language dialect of the Americano-S branch."], "Paname\u00f1o": ["A Spanish language dialect of the Americano-S branch."], "Cubano": ["A Spanish language dialect of the Americano-S branch."], "Dominicano": ["A Spanish language dialect of the Americano-S branch."], "Puertorrique\u00f1o": ["A Spanish language dialect of the Americano-S branch."], "Virgenense": ["A Spanish language dialect of the Americano-S branch."], "Trinidade\u00f1o": ["A Spanish language dialect of the Americano-S branch."], "Venezolano": ["A Spanish language dialect of the Americano-S branch."], "Colombiano": ["A Spanish language dialect of the Americano-S branch."], "Ecuatoriano": ["A Spanish language dialect of the Americano-S branch."], "Peruano": ["A Spanish language dialect of the Americano-S branch spoken in Peru."], "Chileno": ["A Spanish language dialect of the Americano-S branch."], "Boliviano": ["A Spanish language dialect of the Americano-S branch."], "Paraguayo": ["A Spanish language dialect of the Americano-S branch."], "Uruguayo": ["A Spanish language dialect of the Americano-S branch."], "Argentino": ["A Spanish language dialect of the Americano-S branch."], "Filipino": ["A Tagalog language which is an official language of the Philippines.", "A person who originated from or is a citizen of the Philippines.", "From or relating to the Philippines."], "Rioplatense": ["ISO 639-6 entity"], "Rioplatense Spoken": ["ISO 639-6 entity"], "Cocoliche": ["ISO 639-6 entity"], "Lunfardo": ["ISO 639-6 entity"], "Loreto-Ucayali Spanish": ["ISO 639-6 entity"], "Chicano": ["ISO 639-6 entity"], "Chicano Spoken": ["ISO 639-6 entity"], "Chicano-California": ["ISO 639-6 entity"], "Chicano-Arizona": ["ISO 639-6 entity"], "Chicano-New-Mexico": ["ISO 639-6 entity"], "Chicano-Colorado": ["ISO 639-6 entity"], "Chicano-Texas": ["ISO 639-6 entity"], "Chicano-Louisiana": ["ISO 639-6 entity"], "Chicano-Tampa": ["ISO 639-6 entity"], "Chicano-Miami": ["ISO 639-6 entity"], "Chicano-DC": ["ISO 639-6 entity"], "Chicano-New-York": ["ISO 639-6 entity"], "Chicano-Illinois": ["ISO 639-6 entity"], "Extremaduran": ["A language in the autonomous community of Extremadura and the province of Salamanca, in Spain."], "Extremaduran Written": ["Written forms of the Extremaduran language."], "Extremaduran Spoken": ["Dialects of the Extremaduran language."], "Artu Ehtreme\u0148u": ["ISO 639-6 entity"], "Bahu Ehtreme\u0148u": ["ISO 639-6 entity"], "Mayu Ehtreme\u0148u": ["ISO 639-6 entity"], "Asturo Leon\u00e9se Cluster": ["Language cluster belonging to the Latin language family, spoken in the North-East of the Iberian peninsula."], "Astur": ["A Romance language spoken in various parts of Spain."], "Astur Written": ["The written forms of the Astur language."], "Astur Written Latin Script": ["Astur language written with the Latin Script."], "Astur Spoken": ["The Astur spoken language and its dialects."], "Astur-Formal": ["A dialect of the Astur language."], "Astur-Formal Written Latin Script Oviedo Model": ["The Astur-Formal language written with the Latin script."], "Astur-E": ["A variant of the Astur language close to the mountain dialect of Cantabria."], "Astur-C": ["A variant of the Astur language, the model for the written language and the most widely speaked."], "Astur-W": ["A variant of the Astur language."], "Astur-Gallaico": ["A dialect of the Astur language."], "Mirandese": ["A Romance language spoken by some 15,000 people around Miranda do Douro in northeastern Portugal."], "Leon\u00e9s": ["A Romance language directly derived from latin, actually spoken by some 20,000 people mostly in the Province of Le\u00f3n and in some other regions of Spain."], "Leon\u00e9s Spoken": ["ISO 639-6 entity"], "Leon\u00e9s-N": ["ISO 639-6 entity"], "Leon\u00e9s-S": ["ISO 639-6 entity"], "Leon\u00e9s-W": ["ISO 639-6 entity"], "Leon\u00e9s-E": ["ISO 639-6 entity"], "Ibero-Romance South Cluster": ["ISO 639-6 entity"], "Navarro-Aragon\u00e9s": ["ISO 639-6 entity"], "Aragonese Written": ["The written forms of the Aragonese language."], "Aragonese Written Latin Script": ["The Aragonese language written with the Latin script."], "Aragonese Spoken": ["ISO 639-6 entity"], "Aragon\u00e9s-Formal": ["ISO 639-6 entity"], "Fobano": ["ISO 639-6 entity"], "Semontan\u00e9s": ["ISO 639-6 entity"], "Aragon\u00e9s-Pre-Pirenaico": ["ISO 639-6 entity"], "Chaqu\u00e9s": ["ISO 639-6 entity"], "Sarrabl\u00e9s": ["ISO 639-6 entity"], "Sobrarb\u00e9s": ["ISO 639-6 entity"], "Ribagorzano-W": ["ISO 639-6 entity"], "Ansotano": ["ISO 639-6 entity"], "Cheso": ["ISO 639-6 entity"], "Tensino\u2013Pandicuto": ["ISO 639-6 entity"], "Tensino\u2013Pandicuto Spoken": ["ISO 639-6 entity"], "Tensino": ["ISO 639-6 entity"], "Pandicuto": ["ISO 639-6 entity"], "Belset\u00e1n": ["ISO 639-6 entity"], "Chistab\u00edn": ["ISO 639-6 entity"], "Benasqu\u00e9s": ["ISO 639-6 entity"], "Mozarabic": ["Either of the Iberian Romance dialects spoken in the Muslim kingdoms of al-Andalus between the 9th and 16th centuries AD."], "Ibero-Romance Northeastern": ["ISO 639-6 entity"], "Catalan Spoken": ["ISO 639-6 entity"], "Catal\u00e0-Formal": ["ISO 639-6 entity"], "Catal\u00e0-C": ["ISO 639-6 entity"], "Salat": ["ISO 639-6 entity"], "Rossellon\u00e8s": ["ISO 639-6 entity"], "Capcin\u00e8s": ["ISO 639-6 entity"], "Puigcerda": ["ISO 639-6 entity"], "Andorr\u00e8s": ["ISO 639-6 entity"], "Pallar\u00e8s": ["ISO 639-6 entity"], "Barrab\u00e8s": ["ISO 639-6 entity"], "Ribagor\u00e7an-E": ["ISO 639-6 entity"], "Lliter\u00e0": ["ISO 639-6 entity"], "Catal\u00e0-NW": ["ISO 639-6 entity"], "Alguer\u00e8s": ["ISO 639-6 entity"], "Valenci\u00e0": ["ISO 639-6 entity"], "Eivissenc": ["ISO 639-6 entity"], "Mallorqu\u00ed": ["ISO 639-6 entity"], "Menorqu\u00ed": ["ISO 639-6 entity"], "Gallo-Romance South": ["ISO 639-6 entity"], "Gascon": ["A language of France and Spain.", "Of or pertaining to Gascony, the Gascon people or the Gascon language."], "Gascon Spoken": ["ISO 639-6 entity"], "Medoquin": ["ISO 639-6 entity"], "Bordal\u00e9s": ["ISO 639-6 entity"], "Bazad\u00e9s": ["ISO 639-6 entity"], "Land\u00e9s": ["ISO 639-6 entity"], "Neraqu\u00e9s": ["ISO 639-6 entity"], "Gascon-Lomagne": ["ISO 639-6 entity"], "Armagnaqu\u00e9s": ["ISO 639-6 entity"], "Astaraqu\u00e9s": ["ISO 639-6 entity"], "Biarn\u00e9s": ["ISO 639-6 entity"], "Biarn\u00e9s Spoken": ["ISO 639-6 entity"], "Palois": ["ISO 639-6 entity"], "Biarn\u00e9s-Ossau": ["ISO 639-6 entity"], "Asp\u00e9s": ["ISO 639-6 entity"], "Bigordan": ["ISO 639-6 entity"], "Bigordan Spoken": ["ISO 639-6 entity"], "Tarbais": ["ISO 639-6 entity"], "Argel\u00e8s": ["ISO 639-6 entity"], "Bagn\u00e8res": ["ISO 639-6 entity"], "Aure": ["ISO 639-6 entity"], "Comeng\u00e9s": ["ISO 639-6 entity"], "Couseran\u00e9s": ["ISO 639-6 entity"], "Aran\u00e9s": ["ISO 639-6 entity"], "Aran\u00e9s Spoken": ["ISO 639-6 entity"], "Pujolo": ["ISO 639-6 entity"], "Canejan": ["ISO 639-6 entity"], "Proensal-L": ["ISO 639-6 entity"], "Transalpin": ["ISO 639-6 entity"], "Languedocian": ["An Occitan dialect spoken by some people in the part of southern France known as Languedoc, Rouergue, Quercy, Agenais and Southern P\u00e9rigord."], "Languedocian Spoken": ["The dialects of the Languedocian language."], "Bas-Languedocian": ["A dialect of the Languedocian language."], "Languedocian Moyen": ["A dialect of the Languedocian language."], "Occitan-Formal": ["A dialect of the Languedocian language."], "Agen\u00e9s": ["A dialect of the Languedocian language."], "Brageiragu\u00e9s": ["A dialect of the Languedocian language."], "Carcin\u00f2l": ["A dialect of the Languedocian language."], "Ro\u00ebrg\u00e0s": ["A dialect of the Languedocian language."], "Barrasenc": ["A dialect of the Languedocian language."], "Gavaudan\u00e9s": ["A dialect of the Languedocian language."], "Loz\u00e9rien-NE": ["A dialect of the Languedocian language."], "Mendois": ["A dialect of the Languedocian language."], "Ceben\u00f2l": ["A dialect of the Languedocian language."], "Lengadocian-E": ["A dialect of the Languedocian language."], "Lengadocian-C": ["A dialect of the Languedocian language."], "Foissenc": ["A dialect of the Languedocian language."], "Arieg\u00e9s-S": ["A dialect of the Languedocian language."], "Proven\u00e7al": ["One of several dialects of Occitan spoken by a minority of people, mostly in Provence (in southern France)."], "Proven\u00e7al Written": ["The written forms of the Proven\u00e7al language."], "Proven\u00e7al Written Latin Script": ["A written form of the Proven\u00e7al language."], "Proven\u00e7al Written Latin Script Mistral Model": ["A written form of the Proven\u00e7al language."], "Proven\u00e7al Spoken": ["The dialects of the Proven\u00e7al language."], "Proven\u00e7al Maritime": ["A dialect of the Proven\u00e7al language."], "Prouven\u00e7au-Formal": ["A dialect of the Proven\u00e7al language."], "Coumtadin": ["A dialect of the Proven\u00e7al language."], "Arlaten": ["A dialect of the Proven\u00e7al language."], "Camarguen": ["A dialect of the Proven\u00e7al language."], "Bagnoulen": ["A dialect of the Proven\u00e7al language."], "Nimou\u00e9s": ["A dialect of the Proven\u00e7al language."], "Aptois": ["A dialect of the Proven\u00e7al language."], "Sestian": ["A dialect of the Proven\u00e7al language."], "Prouven\u00e7au-Castellane": ["A dialect of the Proven\u00e7al language."], "Marsih\u00e9s": ["A dialect of the Proven\u00e7al language."], "Toulounen": ["A dialect of the Proven\u00e7al language."], "Maures": ["A dialect of the Proven\u00e7al language."], "Grassenc": ["A dialect of the Proven\u00e7al language."], "Canenc": ["A dialect of the Proven\u00e7al language."], "Nissart": ["ISO 639-6 entity"], "Nissart Spoken": ["ISO 639-6 entity"], "Nissart-U": ["ISO 639-6 entity"], "Nissart-N": ["ISO 639-6 entity"], "Esteron": ["ISO 639-6 entity"], "Haute-V\u00e9subie": ["ISO 639-6 entity"], "Oc-Cisalpin'": ["ISO 639-6 entity"], "Oc-Cisalpin' Spoken": ["ISO 639-6 entity"], "Limunenc": ["ISO 639-6 entity"], "Antraigin": ["ISO 639-6 entity"], "Aisonenc\u2013Berbezan": ["ISO 639-6 entity"], "Val-Grana": ["ISO 639-6 entity"], "Val-M\u00e1ira": ["ISO 639-6 entity"], "Val-Var\u00e1ita": ["ISO 639-6 entity"], "Chisone": ["ISO 639-6 entity"], "Gavouot": ["ISO 639-6 entity"], "Gavouot Spoken": ["ISO 639-6 entity"], "Brian\u00e7onnais": ["ISO 639-6 entity"], "Queirassenc": ["ISO 639-6 entity"], "Embrun\u00e9s": ["ISO 639-6 entity"], "Valeien": ["ISO 639-6 entity"], "Gavuout-Tin\u00e9e": ["ISO 639-6 entity"], "Gavouot-Verdon": ["ISO 639-6 entity"], "Gavouot-Var": ["ISO 639-6 entity"], "Gavouot-La-Blanche": ["ISO 639-6 entity"], "Dign\u00e9s": ["ISO 639-6 entity"], "Sisteroun\u00e9s": ["ISO 639-6 entity"], "Gavouot-Bochaine": ["ISO 639-6 entity"], "Gapian": ["ISO 639-6 entity"], "Vivaro-Dauphinois'": ["ISO 639-6 entity"], "Vivaro-Dauphinois' Spoken": ["ISO 639-6 entity"], "Ard\u00e8che-SE": ["ISO 639-6 entity"], "Albenassien": ["ISO 639-6 entity"], "Privadois": ["ISO 639-6 entity"], "Boutierot": ["ISO 639-6 entity"], "Vernoux- Doux": ["ISO 639-6 entity"], "Annon\u00e9en": ["ISO 639-6 entity"], "Valentinois": ["ISO 639-6 entity"], "Dr\u00f4mois-NE": ["ISO 639-6 entity"], "Dr\u00f4mois-SE": ["ISO 639-6 entity"], "Montilien": ["ISO 639-6 entity"], "Auvergnat": ["A Northern Occitan language spoken mostly in Auvergne, France."], "Auvergnat-S": ["A dialect of Auvergnat spoken in the departments of Cantal, Haute-Loire, a part of Ard\u00e8che and most of Loz\u00e8re."], "Auvergnat-S Written": ["Written versions of the Auvergnat-S language."], "Auvergnat-S Written Latin Script": ["Auvergnat-S language written with the Latin Script."], "Auvergnat-S Spoken": ["The dialects of the Auvergnat-S language."], "Cantal\u00e9s": ["A dialect of the Auvergnat-S language."], "Vellave-N": ["A dialect of the Auvergnat-S language."], "Vellave-S": ["A dialect of the Auvergnat-S language."], "Yssingelais": ["A dialect of the Auvergnat-S language."], "Auvergnat-N": ["The north Auvergnat language."], "Auvergnat-N Spoken": ["The dialects of the north Auvergnat language."], "Livradois": ["A dialect of the north Auvergnat language."], "Clermontois": ["A dialect of the north Auvergnat language."], "Issoirien": ["A dialect of the north Auvergnat language."], "Brivadois": ["A dialect of the north Auvergnat language."], "Monts-D\u00f4mes": ["A dialect of the north Auvergnat language."], "Combraillais": ["A dialect of the north Auvergnat language."], "Limousin": ["A Occitan language spoken or understood by about 401,000 people in the part of southern France known as Limousin.", "A breed of beef cattle bred in the Limousin region and recognisable by their chestnut red colouring."], "Limousin Spoken": ["The dialects of the Limousin language."], "Lemozin-N": ["A dialect of the Limousin language."], "Lemojaud": ["A dialect of the Limousin language."], "Millevaches": ["A dialect of the Limousin language."], "Corr\u00e9zien": ["A dialect of the Limousin language."], "Sarlad\u00e9s": ["A dialect of the Limousin language."], "Peiregordin": ["A dialect of the Limousin language."], "Nontron\u00e9s": ["A dialect of the Limousin language."], "Montberon\u00e9s": ["A dialect of the Limousin language."], "Saint-Eutrope": ["A dialect of the Limousin language."], "Marchois": ["ISO 639-6 entity"], "Marchois Spoken": ["ISO 639-6 entity"], "Croissant-W": ["ISO 639-6 entity"], "Marchois-C": ["ISO 639-6 entity"], "Montlu\u00e7onnais": ["ISO 639-6 entity"], "Croissant-E": ["ISO 639-6 entity"], "Gallo-Romance": ["A branch of Romance languages that includes French and several other languages spoken in modern France and northern Italy and Spain."], "Galo-Romance North": ["A group of Gallo-Romance languages originating from North of Gaul."], "Parlange": ["ISO 639-6 entity"], "Parlange Spoken": ["ISO 639-6 entity"], "Mara\u00eechin": ["ISO 639-6 entity"], "Poitevin-N": ["ISO 639-6 entity"], "Poitevin-W": ["ISO 639-6 entity"], "Poitevin-C": ["ISO 639-6 entity"], "Poitevin-S": ["ISO 639-6 entity"], "Aunisien": ["ISO 639-6 entity"], "Saintongeais": ["ISO 639-6 entity"], "Angoumois": ["ISO 639-6 entity"], "Gavache": ["ISO 639-6 entity"], "Gallo": ["ISO 639-6 entity"], "Gallo Spoken": ["ISO 639-6 entity"], "Malouin": ["ISO 639-6 entity"], "Bocage": ["ISO 639-6 entity"], "Rennais": ["ISO 639-6 entity"], "Ch\u00e2teaubriantais": ["ISO 639-6 entity"], "Nantais": ["ISO 639-6 entity"], "Sercquais": ["A Norman dialect spoken in the the Channel Island of Sark."], "Normand": ["A Romance language spoken in Normandy and in the Channel islands."], "Coutan\u00e7ais": ["A Norman language spoken in Coutances in Normandy, France."], "Calvadosien": ["A Norman language spoken in Calvados, Normandy, France."], "Vexinois": ["A Norman language spoken in the region of Vexin, Normandy, France."], "Roumois": ["A Norman language spoken in the Roumois region of Normandy, France."], "Cauchois": ["A Norman language spoken in the Pays de Caux region of the Seine-Maritime d\u00e9partment, France."], "Picard": ["A Romance language spoken in two regions in the far north of France \u2013 Nord-Pas-de-Calais and Picardie \u2013 and in parts of the Belgian region Wallonia."], "Picard Spoken": ["ISO 639-6 entity"], "Belgium Picard": ["ISO 639-6 entity"], "Artois": ["ISO 639-6 entity"], "Laonnois": ["ISO 639-6 entity"], "Vermandois": ["ISO 639-6 entity"], "Noyonnais": ["ISO 639-6 entity"], "Ami\u00e9nois": ["ISO 639-6 entity"], "Vimeu": ["ISO 639-6 entity"], "Marquenterre": ["ISO 639-6 entity"], "Boulonnais-Paysan": ["ISO 639-6 entity"], "Boulonnais-Marin": ["ISO 639-6 entity"], "Calaisien": ["ISO 639-6 entity"], "Cambresis": ["ISO 639-6 entity"], "Ternois": ["ISO 639-6 entity"], "Arrageois": ["ISO 639-6 entity"], "Ch-Ti-Mi": ["ISO 639-6 entity"], "Hennuyer": ["ISO 639-6 entity"], "Walloon Spoken": ["Dialects of the Walloon language."], "Wallon-W": ["ISO 639-6 entity"], "Wallon-C": ["ISO 639-6 entity"], "Wallon-E": ["ISO 639-6 entity"], "Wallon-S": ["ISO 639-6 entity"], "Wallon-Am\u00e9ricain": ["ISO 639-6 entity"], "Champaignat": ["ISO 639-6 entity"], "Champaignat Spoken": ["ISO 639-6 entity"], "Bassignot- Langrois": ["ISO 639-6 entity"], "Sennonais": ["ISO 639-6 entity"], "Vallage": ["ISO 639-6 entity"], "Troyen": ["ISO 639-6 entity"], "Bri\u00e2d": ["ISO 639-6 entity"], "C\u00f4te-Champenoise": ["ISO 639-6 entity"], "Der- Perthois": ["ISO 639-6 entity"], "R\u00e9mois": ["ISO 639-6 entity"], "Argonnais-W": ["ISO 639-6 entity"], "Porcien": ["ISO 639-6 entity"], "Ardennais": ["ISO 639-6 entity"], "Sugny": ["ISO 639-6 entity"], "Lorrain": ["ISO 639-6 entity"], "Lorrain Spoken": ["ISO 639-6 entity"], "Argonnais": ["ISO 639-6 entity"], "Longovicien": ["ISO 639-6 entity"], "Gaumais": ["ISO 639-6 entity"], "Nanc\u00e9in": ["ISO 639-6 entity"], "Spinalien": ["ISO 639-6 entity"], "D\u00e9odatien": ["ISO 639-6 entity"], "Welche": ["ISO 639-6 entity"], "Welche Spoken": ["ISO 639-6 entity"], "Bruche": ["ISO 639-6 entity"], "Vill\u00e9": ["ISO 639-6 entity"], "Li\u00e8pvre": ["ISO 639-6 entity"], "Kaysersberg": ["ISO 639-6 entity"], "Orbey": ["ISO 639-6 entity"], "Jurassien": ["ISO 639-6 entity", "ISO 639-6 entity"], "Jurassien Spoken": ["ISO 639-6 entity"], "Sa\u00f4ne-N": ["ISO 639-6 entity"], "Doubs- Ognon": ["ISO 639-6 entity"], "Lomont- Doubs": ["ISO 639-6 entity"], "Ajulot": ["ISO 639-6 entity"], "V\u00e2dais": ["ISO 639-6 entity"], "Taignon": ["ISO 639-6 entity"], "Bourguignon": ["An O\u00efl language spoken in Burgundy, France."], "Bourguignon Spoken": ["ISO 639-6 entity"], "Charollais": ["ISO 639-6 entity"], "Beaunois": ["ISO 639-6 entity"], "Auxois": ["ISO 639-6 entity"], "Morvandiau": ["A dialect of Bourguignon spoken in Morvan (Bourgogne, France)."], "Bourbonnais- Berrichon": ["ISO 639-6 entity"], "Bourbonnais- Berrichon Spoken": ["ISO 639-6 entity"], "Bourbonnais": ["ISO 639-6 entity"], "Nivernais": ["ISO 639-6 entity"], "Auxerrois": ["ISO 639-6 entity"], "Haut-Berrichon": ["ISO 639-6 entity"], "Bas-Berrichon": ["ISO 639-6 entity"], "Orl\u00e9anais": ["An O\u00efl language spoken around the city of Orleans in France."], "Bl\u00e9sois": ["An O\u00efl language spoken around the city of Blois in France."], "Tourangeau": ["An O\u00efl language spoken around the city of Tours in France."], "Manceau": ["An O\u00efl language spoken around the city of Mans in France."], "Angevin": ["An O\u00efl language formerly spoken in the former province of Anjou, France.", "Of or pertaining to Anjou, Angers, the people of Anjou or the Angevin language."], "Mayennais": ["An O\u00efl language spoken in the Mayenne department of France."], "Virois": ["An O\u00efl language spoken around the city of Vire in France."], "Falaisien": ["An O\u00efl language spoken around the city of Falaise in Calvados, France."], "Varenne": ["A dialect of the Angevin-Orl\u00e9anais language."], "Hi\u00e9mois\u2013S\u00e9ois": ["An O\u00efl language formerly spoken in the Comte of Hi\u00e9mois and the city of S\u00e9es, Lower Normandy, France."], "Percheron": ["An O\u00efl language formerly spoken in the former comte of Perche, North of France."], "Saint-Andr\u00e9": ["A dialect of the Angevin-Orl\u00e9anais language."], "Thimerais": ["An O\u00efl language formerly spoken in the Thymerais region, Eure-et-Loir, France."], "Chartrain": ["An O\u00efl language formerly spoken around the city of Chartres, France."], "Acadjin": ["A variety or dialect of French spoken by francophone Acadians in the Canadian Maritime provinces, the Saint John River Valley in northern Maine, the Magdalen Islands and Havre-Saint-Pierre, along the St. Lawrence's north shore."], "Acadjin Spoken": ["The dialects of the Acadjin language."], "Acadien-D'acadie": ["A dialect of the Acadjin language."], "Acadien-Qu\u00e9bequois": ["A dialect of the Acadjin language."], "Cajun French": ["A variety of the French spoken primarily in Louisiana, USA."], "Cajun French Written": ["Written forms of the Cajun French language."], "Cajun French Written Latin Script": ["A written form of the Cajun French language."], "Cajun French Spoken": ["The dialects of the Cajun French language."], "Marsh-French'": ["A dialect of the Cajun French language."], "Prairie-French'": ["A dialect of the Cajun French language."], "Big-Woods-French'": ["A dialect of the Cajun French language."], "Canadien": ["ISO 639-6 entity"], "Canadien Spoken": ["The dialects of the Canadien language."], "Qu\u00e9becois": ["A dialect of the Canadien language."], "Joual": ["A dialect of the Canadien language."], "Francien": ["ISO 639-6 entity"], "French Spoken": ["Variants of the French language used in oral communication."], "Parisien-F": ["ISO 639-6 entity"], "Canadien-F": ["ISO 639-6 entity"], "Fran\u00e7ais-G": ["ISO 639-6 entity"], "Fran\u00e7ais-G Spoken": ["ISO 639-6 entity"], "Fran\u00e7ais-A": ["ISO 639-6 entity"], "Parisien-U": ["ISO 639-6 entity"], "Banlieue": ["ISO 639-6 entity"], "Fran\u00e7ais-De-Normandie": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Nord": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Nord-Est": ["ISO 639-6 entity"], "Fran\u00e7ais-De-L'est": ["ISO 639-6 entity"], "Fran\u00e7ais-De-Bourgogne": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Centre": ["ISO 639-6 entity"], "Fran\u00e7ais-De-L'ouest": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Nord-Ouest": ["ISO 639-6 entity"], "Fran\u00e7ais-Breton": ["ISO 639-6 entity"], "Fran\u00e7ais-D'auvergne": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Limousin": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Sud-Ouest": ["ISO 639-6 entity"], "Fran\u00e7ais-Basque": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Sud": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Sud-Est": ["ISO 639-6 entity"], "Fran\u00e7ais-De-Corse": ["ISO 639-6 entity"], "Fran\u00e7ais-Belge": ["ISO 639-6 entity"], "Fran\u00e7ais-Suisse": ["ISO 639-6 entity"], "Fran\u00e7ais-D'aoste": ["ISO 639-6 entity"], "Fran\u00e7ais-Germanique": ["ISO 639-6 entity"], "Fran\u00e7ais-Germanique Spoken": ["ISO 639-6 entity"], "Fran\u00e7ais-Flamand": ["ISO 639-6 entity"], "Fran\u00e7ais-Francique": ["ISO 639-6 entity"], "Fran\u00e7ais-Alsacien": ["ISO 639-6 entity"], "Fran\u00e7ais-Suisse-Allemand": ["ISO 639-6 entity"], "Fran\u00e7ais-Nord-Am\u00e9ricain": ["ISO 639-6 entity"], "Fran\u00e7ais-Nord-Am\u00e9ricain Spoken": ["ISO 639-6 entity"], "Fran\u00e7ais-De-Saint-Pierre": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Canada": ["ISO 639-6 entity"], "Fran\u00e7ais-Des-Maritimes": ["ISO 639-6 entity"], "Fran\u00e7ais-De-Nouvelle-Angleterre": ["ISO 639-6 entity"], "Fran\u00e7ais-De-Louisiane": ["ISO 639-6 entity"], "Fran\u00e7ais-Antillais": ["ISO 639-6 entity"], "Fran\u00e7ais-Antillais Spoken": ["ISO 639-6 entity"], "Fran\u00e7ais-Ha\u00eftien": ["ISO 639-6 entity"], "Fran\u00e7ais-Guadeloup\u00e9en": ["ISO 639-6 entity"], "Fran\u00e7ais-Martiniquais": ["ISO 639-6 entity"], "Fran\u00e7ais-Guyanais": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Levant": ["ISO 639-6 entity"], "Fran\u00e7ais-Du-Levant Spoken": ["ISO 639-6 entity"], "Fran\u00e7ais-De-Gr\u00e8ce": ["ISO 639-6 entity"], "Fran\u00e7ais-De-Liban-Syrie": ["ISO 639-6 entity"], "Fran\u00e7ais-D'\u00e9gypte": ["ISO 639-6 entity"], "Fran\u00e7ais-Maghrebin": ["ISO 639-6 entity"], "Fran\u00e7ais-Maghrebin Spoken": ["ISO 639-6 entity"], "Fran\u00e7ais-Tunisien": ["ISO 639-6 entity"], "Fran\u00e7ais-Alg\u00e9rien": ["ISO 639-6 entity"], "Fran\u00e7ais-Marocain": ["ISO 639-6 entity"], "Maghrebin-France": ["ISO 639-6 entity"], "Pied-Noir-France": ["ISO 639-6 entity"], "Fran\u00e7ais-D'afrique": ["A group of languages derived from French and spoken in Africa."], "Fran\u00e7ais-D'afrique Spoken": ["The dialects of the French language spoken in Africa."], "Fran\u00e7ais-De-Mauritanie": ["French dialect spoken in Mauritanie."], "Fran\u00e7ais-De-Mali": ["French dialect spoken in Mali."], "Fran\u00e7ais-De-Guin\u00e9e": ["French dialect spoken in Guinea."], "Fran\u00e7ais-De-Burkina-Faso": ["French dialect spoken in Burkina Faso."], "Fran\u00e7ais-De-C\u00f4te-D'ivoire": ["French dialect spoken in C\u00f4te d'Ivoire."], "Fran\u00e7ais-De-Togo": ["French dialect spoken in Togo."], "Fran\u00e7ais-De-B\u00e9nin": ["French dialect spoken in Benin."], "Fran\u00e7ais-De-Niger": ["French dialect spoken in Niger."], "Fran\u00e7ais-De-Cameroun": ["French dialect spoken in Cameroon."], "Fran\u00e7ais-De-Gabon": ["French dialect spoken in Gabon."], "Fran\u00e7ais-De-Congo": ["French dialect spoken in Congo."], "Fran\u00e7ais-De-Tchad": ["Spoken french of Chad."], "Fran\u00e7ais-De-Centrafrique": ["Dialect of the French language spoken in Central African Republic."], "Fran\u00e7ais-De-Za\u00efre": ["Spoken french of the Republic of Zaire."], "Fran\u00e7ais-De-Ruanda-Burundi": ["Spoken french of Rwanda and Burundi."], "Fran\u00e7ais-De-Djibouti": ["Spoken french of Djibouti."], "Fran\u00e7ais-Des-Comores": ["French dialect spoken in The Comoros."], "Fran\u00e7ais-De-Madagascar": ["French dialect spoken in Madagascar."], "Fran\u00e7ais-De-Maurice": ["French dialect spoken in Maurice."], "Africain-France": ["ISO 639-6 entity"], "Fran\u00e7ais-D'inde": ["Dialects of the French language used in India."], "Fran\u00e7ais-D'inde Spoken": ["Dialects of the Fran\u00e7ais-D'inde language."], "Fran\u00e7ais-De-Mah\u00e9": ["Dialect of the French language used in the district of Mah\u00e9 in India."], "Fran\u00e7ais-De-Pondich\u00e9ry": ["Dialect of the French language used in the district of Pondich\u00e9ry in India."], "Fran\u00e7ais-De-Karikal": ["Dialect of the French language used in the district of Karikal in India."], "Fran\u00e7ais-De-Yanaon": ["Dialect of the French language used in the district of Yanaon in India."], "Fran\u00e7ais-De-Chandernagore": ["Dialect of the French language used in the city of Chandernagore in India."], "Fran\u00e7ais-Du-Sudest-Asiatique": ["Dialects of the French language used in South-East of Asia."], "Fran\u00e7ais-Du-Sudest-Asiatique Spoken": ["Dialects of the Fran\u00e7ais-Du-Sudest-Asiatique language."], "Fran\u00e7ais-De-Vi\u00eat-Nam": ["Dialect of the French language spoken in Vi\u00eat Nam."], "Fran\u00e7ais-De-Laos": ["Dialect of the French language spoken in Laos."], "Fran\u00e7ais-De-Cambodge": ["Dialect of the French language spoken in Cambodia."], "Fran\u00e7ais-D'oc\u00e9anie": ["Dialects of the French language used in Oceania."], "Fran\u00e7ais-D'oc\u00e9anie Spoken": ["Dialects of the French language spoken in Oceania."], "Fran\u00e7ais-Caldoche": ["Dialect of the French language spoken by the Caldoche people in New Caledonia."], "Fran\u00e7ais-Canaque": ["Dialect of the French language spoken by the Kanak people in New Caledonia."], "Fran\u00e7ais-De-Vanuatu": ["Dialect of the French language spoken in Vanuatu."], "Fran\u00e7ais-De-Wallis-Futuna": ["Dialect of the French language spoken in Wallis and Futuna."], "Fran\u00e7ais-De-Polyn\u00e9sie": ["Dialect of the French language spoken in Polynesia."], "Franco-Proven\u00e7al Written": ["Written forms of the Franco-Proven\u00e7al language."], "Franco Proven\u00e7al Written Latin Script": ["A written form of the Franco Proven\u00e7al language."], "Franco-Proven\u00e7al Spoken": ["Dialects of the Franco-Proven\u00e7al language."], "Franc-Comtois": ["An O\u00efl language spoken in Franche-Comt\u00e9 and Suisse Romande."], "Franc-Comtois Spoken": ["ISO 639-6 entity"], "Neuch\u00e2telois": ["ISO 639-6 entity"], "Vaudois-NW": ["ISO 639-6 entity"], "Pontissalien": ["ISO 639-6 entity"], "Ain-N": ["ISO 639-6 entity"], "Valserine": ["ISO 639-6 entity"], "Lyonnais": ["ISO 639-6 entity"], "Lyonnais Spoken": ["ISO 639-6 entity"], "Bugey": ["ISO 639-6 entity"], "For\u00e8zien": ["ISO 639-6 entity"], "Bressan": ["ISO 639-6 entity"], "Burgondan": ["ISO 639-6 entity"], "M\u00e2connais": ["ISO 639-6 entity"], "Lyonnais-Rural": ["ISO 639-6 entity"], "Roannais- St\u00e9phanois": ["ISO 639-6 entity"], "Dauphinois-N": ["ISO 639-6 entity"], "Dauphinois-N Spoken": ["ISO 639-6 entity"], "Dauphinois-Rhodanien": ["ISO 639-6 entity"], "Cr\u00e9mieu": ["ISO 639-6 entity"], "Terres-Froides": ["ISO 639-6 entity"], "Chambaran": ["ISO 639-6 entity"], "Gr\u00e9sivaudan": ["ISO 639-6 entity"], "Savoyard": ["ISO 639-6 entity"], "Savoyard Spoken": ["ISO 639-6 entity"], "Bessan\u00e8is": ["ISO 639-6 entity"], "Langrin": ["ISO 639-6 entity"], "Matchutin": ["ISO 639-6 entity"], "Tarentaise": ["ISO 639-6 entity"], "Arly": ["ISO 639-6 entity"], "Chamb\u00e9rien": ["ISO 639-6 entity"], "Annecien": ["ISO 639-6 entity"], "Faucigny": ["ISO 639-6 entity"], "Chablais- Genevois": ["ISO 639-6 entity"], "Vaudois": ["ISO 639-6 entity"], "Vaudois Spoken": ["ISO 639-6 entity"], "Vaudois-Interlacustre": ["ISO 639-6 entity"], "Gruy\u00e8re": ["ISO 639-6 entity"], "Enupper": ["ISO 639-6 entity"], "Genevois": ["ISO 639-6 entity"], "Fribourgeois": ["ISO 639-6 entity"], "Valaisan": ["ISO 639-6 entity"], "Vald\u00f4tain": ["ISO 639-6 entity"], "Vald\u00f4tain Spoken": ["The dialects of the Vald\u00f4tain language."], "Faetar": ["A dialect of the Vald\u00f4tain language."], "Val-Veni": ["A dialect of the Vald\u00f4tain language."], "Val-Di-Ferret": ["A dialect of the Vald\u00f4tain language."], "Doire-Balt\u00e9e-C": ["A dialect of the Vald\u00f4tain language."], "Val-Du-Grand-Saint-Bernard": ["A dialect of the Vald\u00f4tain language."], "Val-Pelline": ["A dialect of the Vald\u00f4tain language."], "Val-Tournanche": ["A dialect of the Vald\u00f4tain language."], "Ayassin": ["A dialect of the Vald\u00f4tain language."], "Val-De-La-Thuile": ["A dialect of the Vald\u00f4tain language."], "Val-Grisanche": ["A dialect of the Vald\u00f4tain language."], "Val-De-Rh\u00eames": ["A dialect of the Vald\u00f4tain language."], "Val-Savaranche": ["A dialect of the Vald\u00f4tain language."], "Val-De-Cogne": ["A dialect of the Vald\u00f4tain language."], "Val-De-Camporcher": ["A dialect of the Vald\u00f4tain language."], "Rhaeto-Romance": ["A Romance language sub-family which includes multiple languages spoken in north and north-eastern Italy, and Switzerland."], "Sursilvan": ["A group of dialects of the Romansh language spoken in the Surselva, on the western bank of the Rhine."], "Sursilvan Spoken": ["ISO 639-6 entity"], "Tujetsch": ["ISO 639-6 entity"], "Medel": ["ISO 639-6 entity"], "Cad\u00ed": ["ISO 639-6 entity"], "Ilanz": ["ISO 639-6 entity"], "Lumnezia": ["ISO 639-6 entity"], "Flims": ["ISO 639-6 entity"], "Plaun": ["ISO 639-6 entity"], "Sutsilvan- Surmiran": ["ISO 639-6 entity"], "Sutsilvan- Surmiran Spoken": ["ISO 639-6 entity"], "Sutsilvan-N": ["ISO 639-6 entity"], "Sutsilvan-S": ["ISO 639-6 entity"], "Surmiran-N": ["ISO 639-6 entity"], "Surmiran-C": ["ISO 639-6 entity"], "Surmiran-S": ["ISO 639-6 entity"], "Upper Engadine": ["ISO 639-6 entity"], "Grischun": ["The pan-regional variety of the Rumansh languages, artificially designed by the linguist Heinrich Schmid on behalf of the secretary of the Lia Rumantscha which should be as equally acceptable as possible to speakers of the different idioms of Rumansch in Grisons."], "Grischun Spoken": ["ISO 639-6 entity"], "Bravuogn": ["ISO 639-6 entity"], "Put\u00e8r-S": ["ISO 639-6 entity"], "Put\u00e8r-N": ["ISO 639-6 entity"], "Vallader-W": ["ISO 639-6 entity"], "Vallader-E": ["ISO 639-6 entity"], "Vallader-SE": ["ISO 639-6 entity"], "Atesino": ["A dialect of the Ladin language."], "Nones": ["A dialect of Ladin spoken in Non Valley, Trentino, northern Italy."], "Badio": ["ISO 639-6 entity"], "Badio Spoken": ["ISO 639-6 entity"], "Badia": ["ISO 639-6 entity"], "Mareo": ["ISO 639-6 entity"], "Gr\u00fcndno": ["ISO 639-6 entity"], "Fassa- Fiamazzo": ["ISO 639-6 entity"], "Fassa- Fiamazzo Spoken": ["ISO 639-6 entity"], "Fassa": ["ISO 639-6 entity"], "Fiamazzo": ["ISO 639-6 entity"], "Cadorino": ["A dialect of the Ladin language spoken in Cadore."], "Cadorino Spoken": ["The dialects of the Cadorino language."], "Santa-Lucia": ["A dialect of the Cadorino language."], "Livinallongo": ["A dialect of the Cadorino language."], "Com\u00e8lico": ["A dialect of the Cadorino language."], "Carnico": ["ISO 639-6 entity"], "Carnico Spoken": ["ISO 639-6 entity"], "Degano": ["ISO 639-6 entity"], "Fella": ["ISO 639-6 entity"], "Tagliamento": ["ISO 639-6 entity"], "Spilimbergo": ["ISO 639-6 entity"], "Pordenone": ["ISO 639-6 entity", "A province in the Friuli-Venezia Giulia region of Italy.", "A comune of Pordenone province of northeast Italy in the Friuli-Venezia Giulia region."], "Udin": ["ISO 639-6 entity"], "Civid\u00e2t": ["ISO 639-6 entity"], "Gurizze": ["ISO 639-6 entity"], "Istrioto Spoken": ["ISO 639-6 entity"], "Rovigno": ["ISO 639-6 entity"], "Dignano": ["ISO 639-6 entity"], "Sissano": ["ISO 639-6 entity"], "Venetian Spoken": ["Dialects of the Venetian language."], "Bisiacco": ["ISO 639-6 entity"], "Veneto-Giuliano": ["ISO 639-6 entity"], "Feltrino\u2013Bellunese": ["ISO 639-6 entity"], "Trevigiano": ["ISO 639-6 entity"], "Veneziano-U": ["ISO 639-6 entity"], "Veneziano-Della-Laguna": ["ISO 639-6 entity"], "Veneziano-Rural": ["ISO 639-6 entity"], "Vicentino- Padovano": ["ISO 639-6 entity"], "Veronese": ["ISO 639-6 entity"], "Rovigo": ["A dialect of Venetian spken in Rovigo.", "A province in the Veneto region of Italy."], "Gallo-Italian Cluster": ["A group of Gallo-Romance languages."], "Trentino": ["ISO 639-6 entity"], "Ticinese": ["ISO 639-6 entity"], "Ticinese Spoken": ["ISO 639-6 entity"], "Lugano": ["ISO 639-6 entity"], "Bellinazona": ["ISO 639-6 entity"], "Locarno": ["ISO 639-6 entity"], "Lombardo-Alpino": ["ISO 639-6 entity"], "Anaunico": ["ISO 639-6 entity"], "Cremonese": ["A dialect of Western Lombard language group spoken in the city and province of Cremona in Lombardy, Italy."], "Bresciano": ["A dialect of Eastern Lombard spoken around the city of Brescia, in Lombardy, northern Italy."], "Bergamasco": ["ISO 639-6 entity"], "Comasco": ["ISO 639-6 entity"], "Varese": ["A dialect of Lombard spoken in Varese.", "A province in the Lombardy region of Italy."], "Milanese": ["A central variety of the Western Lombard language spoken in the city and province of Milan."], "Milanese-U": ["ISO 639-6 entity"], "Milanese-Rural": ["ISO 639-6 entity"], "Pavese": ["ISO 639-6 entity"], "Novarese": ["ISO 639-6 entity"], "Domodossolano": ["ISO 639-6 entity"], "Lombardo-Siculo": ["ISO 639-6 entity"], "Piemontese Written": ["Variants of the Piemontese language used in written communication."], "Piemontese Written Latin Script": ["A written form of the Piemontese language."], "Piemontese Spoken": ["Dialects of the Piemontese language."], "Alto Piemontese": ["ISO 639-6 entity"], "Basso Piemontese": ["ISO 639-6 entity"], "Vercelli": ["A dialect of Piemontese spoken in Vercelli.", "A province in the Piedmont region of Italy.", "Italian city situated in the north of the country, in the region of Piedmon and capital of the province with the same name."], "Canavese": ["ISO 639-6 entity"], "Torino-U": ["ISO 639-6 entity"], "Dora-Riparia": ["ISO 639-6 entity"], "Alto-Po": ["ISO 639-6 entity"], "Cuneo": ["ISO 639-6 entity", "A province in the southwest of the Piedmont region of Italy."], "Langhe": ["ISO 639-6 entity"], "Asti": ["Piemontese of Asti.", "A province in the Piedmont region of Italy."], "Aless\u00e1ndria": ["ISO 639-6 entity"], "Brigasc": ["ISO 639-6 entity"], "Brigasc Spoken": ["ISO 639-6 entity"], "Roya": ["ISO 639-6 entity"], "Tanaro": ["ISO 639-6 entity"], "Ligurian": ["A Romance language, currently spoken in Liguria, northern Italy, and parts of the Mediterranean coastal zone of France, and Monaco.", "Of, or pertaining to Liguria.", "An extinct language spoken in pre-Roman times and into the Roman era by an ancient people of north-western Italy and south-eastern France known as the Ligures."], "Ligurian Written": ["The written forms of the Ligurian language."], "Ligurian Written Latin Script": ["The Ligurian language written with the Latin script."], "Ligurian Spoken": ["The Ligurian spoken language and its dialects."], "Monegasc": ["A Romance language and a dialect of the modern Ligurian language spoken in Monaco."], "Monegasc Written": ["The written forms of the Monegasc language."], "Monegasc Written Latin Script": ["The Monegasc language written with the Latin script."], "Imperia": ["A dialect of the Ligurian language.", "A province in the Liguria region of Italy"], "Savona": ["A Ligurian dialect spoken in Savona.", "A province in the Liguria region of Italy."], "Genovesi-Rural": ["A dialect of the Ligurian language."], "Genovesi-U": ["A dialect of the Ligurian language."], "Lunigiano": ["A dialect of the Ligurian language."], "Genovesi-Di-Corsica": ["ISO 639-6 entity"], "Genovesi-Di-Corsica Spoken": ["ISO 639-6 entity"], "Cargese": ["ISO 639-6 entity"], "Bonifacien": ["ISO 639-6 entity"], "Genovesi-Di-Sardegna": ["ISO 639-6 entity"], "Genovesi-Di-Sardegna Spoken": ["ISO 639-6 entity"], "Carloforte": ["ISO 639-6 entity"], "Calasetta": ["ISO 639-6 entity"], "Vogherese": ["ISO 639-6 entity"], "Mantovano": ["ISO 639-6 entity"], "Piacenza": ["ISO 639-6 entity", "A province in the Emilia-Romagna region of Italy.", "The capital of the province of Piacenza in the Emilia-Romagna region of northern Italy."], "Parma": ["ISO 639-6 entity", "A province in the Emilia-Romagna region of Italy."], "Reggio": ["ISO 639-6 entity"], "Modena": ["ISO 639-6 entity", "A province in the Emilia-Romagna region of Italy"], "Bologna": ["ISO 639-6 entity", "A province in the Emilia-Romagna region of Italy."], "Ferrara": ["ISO 639-6 entity", "A province in the Emilia-Romagna region of Italy."], "Ravenna": ["ISO 639-6 entity", "A province in the Emilia-Romagna region of Italy."], "Forli": ["ISO 639-6 entity"], "San-Marino": ["ISO 639-6 entity"], "Marchigiano-N": ["ISO 639-6 entity"], "Corsican Cluster": ["A Romance language group related to Corsican."], "Corsu-N": ["ISO 639-6 entity"], "Corsu-N Spoken": ["ISO 639-6 entity"], "Cortenais": ["ISO 639-6 entity"], "Castagniccia": ["ISO 639-6 entity"], "Casinca": ["ISO 639-6 entity"], "Bastiais": ["ISO 639-6 entity"], "Nebbio": ["ISO 639-6 entity"], "Balanin": ["ISO 639-6 entity"], "Gal\u00e9ria": ["ISO 639-6 entity"], "Corsu-C": ["ISO 639-6 entity"], "Corsu-C Spoken": ["ISO 639-6 entity"], "Vicu": ["ISO 639-6 entity"], "Ajaccien": ["ISO 639-6 entity"], "Tavarais": ["ISO 639-6 entity"], "Petreto-Bicchisano": ["ISO 639-6 entity"], "Bastelica": ["ISO 639-6 entity"], "Fiumorbais": ["ISO 639-6 entity"], "Solenzara": ["ISO 639-6 entity"], "Corsu-S": ["ISO 639-6 entity"], "Corsu-S Spoken": ["ISO 639-6 entity"], "Zonza": ["ISO 639-6 entity"], "Sart\u00e8": ["ISO 639-6 entity"], "Purtivechju": ["ISO 639-6 entity"], "Gallurese": ["A dialect of Sardinian spoken in northeastern Sardinia."], "Sassarese": ["A Southern Romance language and transitional between Sardinian and Corsican."], "Sassarese Spoken": ["Dialects of the Sassarese language."], "Italo-Romance": ["A group of Romance languages spoken in Italy and Sicilia."], "Italian Cluster": ["ISO 639-6 entity"], "Toscano": ["ISO 639-6 entity"], "Toscano Spoken": ["ISO 639-6 entity"], "Fiorentino-U": ["ISO 639-6 entity"], "Fiorentino-Rural": ["ISO 639-6 entity"], "Lucca": ["ISO 639-6 entity", "A province in the Tuscany region of Italy."], "Pistoia": ["ISO 639-6 entity", "A province in the Tuscany region of Italy.", "A city in the Tuscany region of Italy."], "Pisa": ["ISO 639-6 entity", "A province in the Tuscany region of Italy.", "A city in Tuscany, central Italy."], "Livorno": ["ISO 639-6 entity", "A province in the Tuscany region of Italy."], "Aretino": ["ISO 639-6 entity"], "Senese": ["ISO 639-6 entity"], "Grosseto": ["Dialect of Toscan spoken in Grosseto.", "A province in the Tuscany region of Italy."], "Romano-Rural": ["ISO 639-6 entity"], "Italian Spoken": ["The dialects of the Italian language."], "Abruzzese": ["A dialect of the Italian language.", "A dialect of the Neapolitan language."], "Marchigiano C": ["A dialect of the Italian language."], "Laziale": ["A dialect of the Italian language."], "Italiano-G": ["ISO 639-6 entity"], "Italiano-G Spoken": ["ISO 639-6 entity"], "Italiano-Di-Torino": ["ISO 639-6 entity"], "Italiano-Di-Genova": ["ISO 639-6 entity"], "Italiano-Di-Milano": ["ISO 639-6 entity"], "Italiano-Di-Venezia": ["ISO 639-6 entity"], "Italiano-Di-Trieste": ["ISO 639-6 entity"], "Italiano-Di-Roma": ["ISO 639-6 entity"], "Italiano-Di-Napoli": ["ISO 639-6 entity"], "Italiano-Di-Palermo": ["ISO 639-6 entity"], "Sicilian Spoken": ["Dialects of the Sicilian language."], "Sicilianw": ["ISO 639-6 entity"], "Metafonetica C": ["ISO 639-6 entity"], "Metafonetica SE": ["ISO 639-6 entity"], "Nonmetafonetie": ["ISO 639-6 entity"], "Isole Eolie": ["ISO 639-6 entity"], "Pantesco": ["ISO 639-6 entity"], "Calabro S": ["ISO 639-6 entity"], "Umbro\u2013Romanesco": ["ISO 639-6 entity"], "Umbro\u2013Romanesco Spoken": ["ISO 639-6 entity"], "Umbro": ["ISO 639-6 entity"], "Romanesco-Rural": ["ISO 639-6 entity"], "Neapolitan Written": ["The written forms of the Neapolitan language."], "Neapolitan Written Latin Script": ["A written forms of the Neapolitan language."], "Neapolitan Spoken": ["The dialects of the Neapolitan language."], "Marchigiano-S": ["A dialect of the Neapolitan language."], "Molisano": ["A dialect of the Neapolitan language."], "Campano": ["A dialect of the Neapolitan language."], "Napoletano-U": ["A dialect of the Neapolitan language."], "Pugliese-N": ["A dialect of the Neapolitan language."], "Lucano": ["A dialect of the Neapolitan language."], "Salentino": ["ISO 639-6 entity"], "Calabrese": ["ISO 639-6 entity"], "Siciliano-CE": ["ISO 639-6 entity"], "Siciliano-CE Spoken": ["ISO 639-6 entity"], "Messinese": ["ISO 639-6 entity"], "Catanese- Siracusano": ["ISO 639-6 entity"], "Siciliano-NE": ["ISO 639-6 entity"], "Siciliano-SE": ["ISO 639-6 entity"], "Agrigentino-E": ["ISO 639-6 entity"], "Nisseno-Ennese": ["ISO 639-6 entity"], "Siciliano-Delle-Madon\u00ece": ["ISO 639-6 entity"], "Siciliano-W": ["ISO 639-6 entity"], "Siciliano-W Spoken": ["ISO 639-6 entity"], "Agrigentino-CW": ["ISO 639-6 entity"], "Trapanese": ["ISO 639-6 entity"], "Palermitano": ["ISO 639-6 entity"], "Sardinian": ["The main language spoken in the island of Sardinia, Italy, remarkable for being the most conservative of the Romance languages in terms of phonology and for its Paleosardinian substratum."], "Sassarese Sardinian": ["A Southern Romance language and transitional between Sardinian and Corsican."], "Logudorese Sardinian": ["A Sardinian language spoken in the center-North of the island of Sardinia."], "Barbaricino": ["A dialect of Logudorese Sardinian."], "Gallurese Sardinian": ["A dialect of Sardinian spoken in northeastern Sardinia."], "Nuorese": ["A dialect of Logudorese Sardinian."], "Gennargentese": ["A language of Italy."], "Campidanese Sardinian": ["A Sardinian language spoken in the south of the island of Sardinia."], "Campidanese W": ["ISO 639-6 entity"], "Cagliare": ["A dialect of the Campidanese Sardinian language spoken around the city of Cagliari."], "Ogliastrino": ["A dialect of the Campidanese Sardinian language spoken in the province of Ogliastra."], "Sulcitano": ["A dialect of the Campidanese Sardinian language."], "Meridionale": ["A dialect of the Campidanese Sardinian language."], "Dalmatian Cluster": ["ISO 639-6 entity"], "Dalmatian": ["An extinct Romance language formerly spoken in the Dalmatia region of Croatia, and as far south as Kotor in Montenegro.", "A native or inhabitant of Dalmatia.", "Of or relating to Dalmatia or its inhabitants."], "Vegliot": ["ISO 639-6 entity"], "Ragusan": ["ISO 639-6 entity"], "Latino-Faliscan": ["ISO 639-6 entity"], "Latin Spoken": ["Dialects of the Latin language."], "Latine-A": ["ISO 639-6 entity"], "Latine-A Spoken": ["ISO 639-6 entity"], "Latin-V": ["ISO 639-6 entity"], "Hebraicised Romance": ["ISO 639-6 entity"], "Shaudit": ["ISO 639-6 entity"], "Zarphatic": ["ISO 639-6 entity"], "Judeo-Spanish": ["ISO 639-6 entity", "A Jewish Romance language spoken in Israel and Turkey, developed from Spanish."], "Judeo-Spanish Written": ["Written forms of the Judeo-Spanish language."], "Judeo-Spanish Written Hebrew Script": ["ISO 639-6 entity"], "Judeo-Spanish Written Latin Script": ["A written form of the Judeo-Spanish language."], "Hakitia": ["ISO 639-6 entity"], "Tetauni": ["ISO 639-6 entity"], "Ladino": ["A Jewish Romance language spoken in Israel and Turkey, developed from Spanish."], "Ladino Written": ["Variants of the Ladino language used in written communication."], "Ladino Written Latin Script": ["Ladino language written with the Latin Script."], "Ladino Written Hebrew Script": ["The Ladino language written with the Hebrew script."], "Ladino Spoken": ["Variants of the Ladino language used in oral communication."], "Djudezmo-Formal": ["A dialect of the Ladino language."], "La\u2019az": ["A dialect of the Ladino language."], "Djudezmo-K\u00e9rkira": ["A dialect of the Ladino language."], "Djudezmo-Thessalon\u00edki": ["A dialect of the Ladino language."], "Djudezmo-T\u00fcrkiye": ["A dialect of the Ladino language."], "Djudezmo-Sofiya": ["A dialect of the Ladino language."], "Djudezmo-Skopje": ["A dialect of the Ladino language."], "Djudezmo-Bosnia- Serbia": ["A dialect of the Ladino language."], "Djudezmo-New-York": ["A dialect of the Ladino language."], "Djudezmo-Buenos-Aires": ["A dialect of the Ladino language."], "Djudezmo-Israel": ["A dialect of the Ladino language."], "Judeo-Arogonese": ["ISO 639-6 entity"], "Catalanic": ["ISO 639-6 entity"], "Lusitanic": ["ISO 639-6 entity"], "Judeo-Italian": ["A language of Italy."], "Judeo-Italian Written": ["Written forms of the Judeo-Italian language."], "Judeo-Italian Written Hebrew Script": ["A written form of the Judeo-Italian language."], "Judeo-Italian Written Latin Script": ["A written form of the Judeo-Italian language."], "Judeo-Italian Spoken": ["Dialects of the Judeo-Italian language."], "Judeo-Veneziano": ["A dialect of the Judeo-Italian language."], "Judeo-Ferraran": ["A dialect of the Judeo-Italian language."], "Judeo-Florentine": ["A dialect of the Judeo-Italian language."], "Judeo-Mantaun": ["A dialect of the Judeo-Italian language."], "Judeo-Piedmontese": ["A dialect of the Judeo-Italian language."], "Judeo-Reggian": ["A dialect of the Judeo-Italian language."], "Judeo-Roman": ["A dialect of the Judeo-Italian language."], "Lingua-Franca": ["An extinct language of Tunisia."], "Esperanto Spoken": ["Variants of the Esperanto language used in oral communication."], "Ido Written": ["Written forms od the Ido language."], "Ido Written Latin Script": ["Ido language written with the Latin Script."], "Ido Spoken": ["The dialects of the Ido language."], "Novial": ["A constructed international auxiliary language (IAL) intended to facilitate international communication and friendship, without displacing anyone's native language."], "Pidgins And Creoles": ["ISO 639-6 entity"], "Creole-Romance": ["A family of Creole languages based on Romance languages."], "Kabuverdianu": ["A Portuguese-based Creole language spoken in the Cape Verde Islands."], "Kabuverdianu Written": ["Written forms of the Kabuverdianu language."], "Kabuverdianu Written Latin Script": ["A written form of the Kabuverdianu language."], "Kabuverdianu Spoken": ["Spoken variants of the Kabuverdianu language."], "Barlavento": ["ISO 639-6 entity"], "Sotavento": ["ISO 639-6 entity"], "Upper Guinea Crioulo": ["A group of Portuguese-based creoles spoken around Cape Verde and Guinea-Bissau."], "Upper Guinea Crioulo Spoken": ["Variants of the Upper Guinea Creole used in oral communication."], "Guineense-N": ["ISO 639-6 entity"], "Guineense-Bissau": ["ISO 639-6 entity"], "Guineense-Bijago": ["ISO 639-6 entity"], "Guineense-C": ["ISO 639-6 entity"], "S\u00e3otomense": ["A language of S\u00e3o Tom\u00e9 e Pr\u00edncipe."], "S\u00e3otomense Spoken": ["The dialects of the S\u00e3otomense language."], "Forro": ["A dialect of the S\u00e3otomense language."], "Principense": ["ISO 639-6 entity"], "Angolar": ["A language of S\u00e3o Tom\u00e9 e Pr\u00edncipe."], "Fa D'ambu": ["A language of Equatorial Guinea."], "Cafundo Creole": ["A language of Brazil."], "Indo-Portugues": ["ISO 639-6 entity"], "Indo-Portugues Spoken": ["ISO 639-6 entity"], "Diu": ["ISO 639-6 entity"], "Daman": ["ISO 639-6 entity"], "Korlai Creole Portugese": ["ISO 639-6 entity"], "Korlai Creole Portugese Written": ["Written forms of the Korlai Creole Portugese language."], "Korlai Creole Portugese Written Latin Script": ["A written form of the Korlai Creole Portugese language."], "Korlai Creole Portugese Written Devanagari Script": ["ISO 639-6 entity"], "Korlai Creole Portugese Spoken": ["ISO 639-6 entity"], "Ceil\u00e3o": ["ISO 639-6 entity"], "Malaccan Creole Potuguese": ["ISO 639-6 entity"], "Malaccan Creole Potuguese Spoken": ["ISO 639-6 entity"], "Malaquense": ["ISO 639-6 entity"], "Sumatra": ["ISO 639-6 entity"], "Java": ["ISO 639-6 entity", "An island of Indonesia and the site of its capital city, Jakarta.", "An object-oriented programming language originally developed by Sun Microsystems and released in 1995 as a core component of Sun's Java platform."], "Flores- Adonara": ["ISO 639-6 entity"], "Timor Pidgin": ["ISO 639-6 entity"], "Maluku": ["ISO 639-6 entity"], "Ternate\u00f1o": ["ISO 639-6 entity"], "Ternate\u00f1o Spoken": ["ISO 639-6 entity"], "Sulawesi": ["ISO 639-6 entity"], "Borneo": ["ISO 639-6 entity", "The third largest island in the world and is located at the centre of Maritime Southeast Asia."], "Macanese": ["A creole language derived mainly from Malay, Sinhalese, Cantonese, and Portuguese, which is spoken in Macau and Hong Kong."], "Macanese Spoken": ["Spoken dialects of the Macanese language."], "Makista-Mac\u00e3o": ["ISO 639-6 entity"], "Makista-Hong-Kong": ["ISO 639-6 entity"], "Spanish Based Creole": ["ISO 639-6 entity"], "Chavacano": ["A language of the Philippines and Malaysia (Sabah)."], "Chavacano Spoken": ["ISO 639-6 entity"], "Cavite\u00f1o": ["ISO 639-6 entity"], "Cotabato-Chabacano": ["ISO 639-6 entity"], "Ternate\u00f1o-Chabacano": ["ISO 639-6 entity"], "Davao-Chabacano": ["ISO 639-6 entity"], "Zamboangue\u00f1o": ["ISO 639-6 entity"], "Ermita\u00f1o": ["ISO 639-6 entity"], "Chabacano-Sabah": ["ISO 639-6 entity"], "Chocoano": ["ISO 639-6 entity"], "Palanquero": ["ISO 639-6 entity"], "Criollo-De-Bobures": ["ISO 639-6 entity"], "Iberian Based Creole": ["ISO 639-6 entity"], "Papiamento Spoken": ["Variants of the Papiamento language used in spoken communication."], "Curassese": ["Variety of Papiamento spoken in Cura\u00e7ao."], "Bonaire": ["An island in the southern part of the Caribbean Sea off the north coast of Venezuela (12\u00b0 11\u2032 7\u2033 N, 68\u00b0 15\u2032 43\u2033 W), which is part of the Kingdom of the Netherlands."], "Ma\u00edz": ["ISO 639-6 entity"], "French Based Cr\u00e9ole": ["A Cr\u00e9ole language based on the French vocabulary."], "Louisiana Creole French": ["A French-based cr\u00e9ole spoken in Louisiana, USA."], "Louisiana Creole French Spoken": ["Dialects of the Louisiana Creole language."], "Saint-Martin": ["ISO 639-6 entity"], "New-Roads-Edgard": ["ISO 639-6 entity"], "Houma": ["ISO 639-6 entity"], "Gombo-Texas": ["ISO 639-6 entity"], "Gombo-California": ["ISO 639-6 entity"], "Haitian Creole French": ["A language of Haiti, the Dominican Republic and Guadeloupe"], "Port-Au-Prince": ["A dialect of the Haitian Creole French language."], "Fablas": ["A dialect of the Haitian Creole French language."], "Plateau-Haitien": ["A dialect of the Haitian Creole French language."], "Haitien-N": ["A dialect of the Haitian Creole French language."], "Guadeloupean Creole French": ["A French-based Cr\u00e9ole language spoken in Guadeloupe."], "Guadeloupean Creole French Spoken": ["Dialects of the Guadeloupean Creole French language."], "Saint-Barth\u00e9lemy": ["ISO 639-6 entity"], "Grande-Terre": ["ISO 639-6 entity"], "Basse-Terre": ["ISO 639-6 entity"], "Marie-Galante": ["ISO 639-6 entity"], "Dominiquais": ["A French-based cr\u00e9ole spoken in Dominica."], "Martiniquais": ["A French-based cr\u00e9ole language spoken in Martinique."], "Saint Lucian Creole French": ["A Antillean creole language spoken in Saint Lucia, Dominica, Grenada and Trinidad and Tobago."], "San Miguel Creole French": ["A French creole spoken by St. Lucian immigrants in Panama City."], "San Miguel Creole French Spoken": ["ISO 639-6 entity"], "Carriacou": ["ISO 639-6 entity"], "Grenadien": ["ISO 639-6 entity"], "Trinidadien": ["An Antillean Creole spoken in Trinidad and Tobago."], "Guianese Creole French": ["A French-lexified creole language spoken in French Guiana, and to a lesser degree, in Suriname and Guyana."], "Guianese Creole French Spoken": ["The dialects of the Guianese Creole French language."], "Guyanais-C": ["A dialect of the Guianese Creole French language."], "Guyanais-NW": ["A dialect of the Guianese Creole French language."], "Guyanais-SE": ["A dialect of the Guianese Creole French language."], "Amap\u00e1": ["ISO 639-6 entity"], "Karip\u00fana": ["ISO 639-6 entity"], "Seselwa Creole French": ["A French-based creole language of Seychelles."], "Seselwa Creole French Spoken": ["The dialects of the Seselwa Creole French language."], "Seychellois": ["A dialect of the Seselwa Creole French language."], "Aldabra": ["A dialect of the Seselwa Creole French language."], "Morisyen": ["A creole language spoken in Mauritius."], "Morisyen Written": ["The written forms of the Morisyen language."], "Morisyen Written Latin Script": ["A written form of the Morisyen language."], "Morisyen Spoken": ["The dialects of the Morisyen language."], "Rodriguais": ["A dialect of the Morisyen language."], "Agalega": ["A dialect of the Morisyen language."], "Chagos": ["A dialect of the Morisyen language."], "R\u00e9union Creole French, Spoken": ["Dialects of the R\u00e9union Creole language."], "R\u00e9union Creole French, Urban": ["ISO 639-6 entity"], "R\u00e9union Creole French, Popular": ["ISO 639-6 entity"], "Tayo": ["A French-based creole language spoken in the commune of Mont-Dore, in New Caledonia."], "Tayo Spoken": ["The dialects of the Tayo language."], "Continental Eastern": ["ISO 639-6 entity"], "Continental North Eastern": ["ISO 639-6 entity"], "Istro-Romanian": ["ISO 639-6 entity"], "Istro-Romanian Written": ["Written forms of the Istro-Romanian language."], "Istro-Romanian Written Latin Script": ["A written form of the Istro-Romanian language."], "Istro-Romanian Spoken": ["ISO 639-6 entity"], "Jeiani": ["ISO 639-6 entity"], "Jeiani Spoken": ["ISO 639-6 entity"], "Susnjevica": ["ISO 639-6 entity"], "Susnjevica Spoken": ["ISO 639-6 entity"], "Continental Southeastern": ["ISO 639-6 entity"], "Macedo Romanian": ["An Eastern Romance language spoken in Southeastern Europe."], "Macedo Romanian Written": ["The written forms of the Macedo Romanian language."], "Macedo Romanian Written Latin Script": ["The Macedo Romanian language written with the Latin script."], "Macedo Romanian Written Greek Script": ["The Macedo Romanian language written with the Greek script."], "Macedo Romanian Spoken": ["The dialects of the Macedo Romanian language."], "Bitolia": ["A dialect of the Macedo Romanian language."], "Muscopola": ["A dialect of the Macedo Romanian language spoken in and around the Albanian city of Muscopola."], "Pindhos": ["A dialect of the Macedo Romanian language spoken in the Pinde mountains of Greece."], "Olympo-Vlach": ["A dialect of the Macedo Romanian language."], "Ali\u00e1kmon": ["A dialect of the Macedo Romanian language."], "Megleno Romanian": ["An Eastern Romance language which is spoken in Greece and Macedonia."], "Megleno Romanian Written": ["ISO 639-6 entity"], "Megleno Romanian Written Latin Script": ["ISO 639-6 entity"], "Megleno Romanian Spoken": ["ISO 639-6 entity"], "Romanaian Written Latin Script Romania Model": ["ISO 639-6 entity"], "Romanaian Written Cyrillic Script: Moldova Model": ["ISO 639-6 entity"], "Limba-Rom\u00e2neasca-G": ["ISO 639-6 entity"], "Limba-Rom\u00e2neasca-G Spoken": ["ISO 639-6 entity"], "Muntenia": ["ISO 639-6 entity"], "Muntenia Spoken": ["ISO 639-6 entity"], "Oltenia": ["ISO 639-6 entity"], "Oltenia Spoken": ["ISO 639-6 entity"], "Banat": ["ISO 639-6 entity"], "Banat Spoken": ["The dialects of the Banat language."], "Bayash": ["ISO 639-6 entity"], "Transilvania-S": ["ISO 639-6 entity"], "Transilvania-S Spoken": ["ISO 639-6 entity"], "Transilvania-N": ["ISO 639-6 entity"], "Transilvania-N Spoken": ["ISO 639-6 entity"], "Cri\u015fana": ["ISO 639-6 entity"], "Cri\u015fana Spoken": ["ISO 639-6 entity"], "Maramure\u015f": ["ISO 639-6 entity"], "Maramure\u015f Spoken": ["ISO 639-6 entity"], "Bucovina": ["ISO 639-6 entity"], "Bucovina Spoken": ["ISO 639-6 entity"], "Moldavian Written": ["Written forms of the Moldavian language."], "Moldavian Written Latin Script": ["A variety of latin script used for writing Moldavian language."], "Moldavian Written Cyrillic Script": ["A variety of cyrillic script used for writing in the Moldavian language."], "Moldavian Spoken": ["Dialects of the Moldavian language."], "Saharan": ["ISO 639-6 entity"], "Western Saharan Cluster": ["ISO 639-6 entity"], "Bilma Kanuri": ["ISO 639-6 entity"], "Bilma Kanuri Spoken": ["ISO 639-6 entity"], "Fachi": ["ISO 639-6 entity"], "Bilma": ["ISO 639-6 entity"], "Tumari Kanuri": ["A language of Niger."], "Manga Kanuri": ["A language of Niger and Nigeria."], "Manga Kanuri Spoken": ["ISO 639-6 entity"], "Manga-N": ["ISO 639-6 entity"], "Manga-S": ["ISO 639-6 entity"], "Central Kanuri": ["ISO 639-6 entity", "A language of Nigeria, Cameroon, Chad, Niger, and Sudan."], "Central Kanuri Written": ["Written forms of the Central Kanuri language."], "Central Kanuri Written Arab Script": ["The Central Kanuri langue written with the Arab Script."], "Central Kanuri Spoken": ["The dialects of the Central Kanuri language."], "Dagara": ["A dialect of the Central Kanuri language."], "Njesko": ["A dialect of the Central Kanuri language."], "Kabari": ["A dialect of the Central Kanuri language."], "Sugurti": ["A dialect of the Central Kanuri language."], "Lare": ["A dialect of the Central Kanuri language."], "Ngazar": ["A dialect of the Central Kanuri language."], "Guvja": ["A dialect of the Central Kanuri language."], "Kagama": ["A dialect of the Central Kanuri language."], "Fadawa": ["A dialect of the Central Kanuri language."], "Maiduguri": ["A dialect of the Central Kanuri language spoken in the city of Maiduguri in Borno State, Nigeria."], "Mao": ["A dialect of the Central Kanuri language."], "Kwayyamo": ["ISO 639-6 entity"], "Mavar": ["ISO 639-6 entity"], "Kanembu": ["A language of Chad."], "Kanembu Written": ["The written forms of the Kanembu language."], "Kanembu Written Latin Script": ["A written form of the Kanembu language."], "Kanembu Written Arabic Script": ["A written form of the Kanembu language."], "Kanembu Spoken": ["The dialects of the Kanembu language."], "Karkawu": ["A dialect of the Kanembu language."], "Mando": ["A dialect of the Kanembu language."], "Nguri": ["A dialect of the Kanembu language."], "Haddad": ["ISO 639-6 entity"], "Tubu Cluster": ["ISO 639-6 entity"], "Tedaga": ["ISO 639-6 entity"], "Tedaga Written": ["Written forms of the Tedaga language."], "Tedaga Written Arab Script": ["ISO 639-6 entity"], "Tedaga Written Latin Script": ["A written form of the Tedaga language."], "Tedaga Spoken": ["ISO 639-6 entity"], "Gunda": ["ISO 639-6 entity"], "Brawia": ["ISO 639-6 entity"], "Chigaa": ["ISO 639-6 entity"], "Tomagra": ["ISO 639-6 entity"], "Daza": ["ISO 639-6 entity"], "Daza Written": ["ISO 639-6 entity"], "Daza Written Latin Script": ["Daza language written with the Latin Script."], "Daza Written Arab Script": ["ISO 639-6 entity"], "Dazaga Spoken": ["ISO 639-6 entity"], "Kasherda": ["ISO 639-6 entity"], "Wannala": ["ISO 639-6 entity"], "Chitati": ["ISO 639-6 entity"], "Kreda": ["ISO 639-6 entity"], "Kreda Spoken": ["ISO 639-6 entity"], "Yorda": ["ISO 639-6 entity"], "Karda": ["ISO 639-6 entity"], "Norea": ["ISO 639-6 entity"], "Iria": ["ISO 639-6 entity"], "Eastern Saharan Cluster": ["ISO 639-6 entity"], "Zaghawa": ["Language of the Zaghawa ethnic group of Chad and Sudan.", "An African ethnic group, mainly living in eastern Chad and western Sudan, including the Darfur province of Sudan."], "Zaghawa Written": ["ISO 639-6 entity"], "Zaghawa Written Latin Script": ["A written form of the Zaghawa language."], "Zaghawa Written Arabic Script": ["ISO 639-6 entity"], "Zaghawa Spoken": ["ISO 639-6 entity"], "Tuer-Gala": ["ISO 639-6 entity"], "Dirong-Guruf": ["ISO 639-6 entity"], "Kobe-Kapka": ["ISO 639-6 entity"], "Bideyat": ["A dialect of the Zaghawa language found in Chad and western Sudan."], "Beli Written": ["The written forms of the Beli language."], "Beli Written Arab Script": ["The Beli language written with the Arab script."], "Beli Written Latin Script": ["The Beli language written with the Latin script."], "Baele": ["A dialect of the Bideyat language."], "Anna": ["A dialect of the Bideyat language."], "Awe": ["A dialect of the Bideyat language."], "Terawia": ["A dialect of the Bideyat language."], "Berti": ["An extinct language of Sudan."], "Balto-Slavic": ["ISO 639-6 entity"], "Slavic": ["ISO 639-6 entity"], "Slavic South": ["ISO 639-6 entity"], "Old Church Slavic": ["ISO 639-6 entity"], "Old Church Slavic Written": ["ISO 639-6 entity"], "Old Church Slavic Written Glagolitic Script": ["ISO 639-6 entity"], "Old Church Slavic Written Cyrillic Script": ["ISO 639-6 entity"], "Church Slavic Written": ["Written forms of the Church Slavic language."], "Church Slavic Written Cyrillic Script": ["ISO 639-6 entity"], "Church Slavic Written Latin Script": ["A written form of the Church Slavic language."], "Church Slavic Spoken": ["ISO 639-6 entity"], "Russian Church Slavonic": ["ISO 639-6 entity"], "Serbian Church Slavonic": ["ISO 639-6 entity"], "Bulgarian Church Slavonic": ["Language spoken in Bulgaria from the 12th to the 15th centuries, evolved from the Old Church Slavonic."], "Macedonian Church Slavonic": ["ISO 639-6 entity"], "Ukrainska-L Church Slavonic": ["ISO 639-6 entity"], "Croation Church Slavonic": ["ISO 639-6 entity"], "Slavic West": ["ISO 639-6 entity"], "Slavic West Central": ["ISO 639-6 entity"], "Lower Sorbian Spoken": ["Dialects of the Lower Sorbian language."], "Dolno-Serbska Formal": ["ISO 639-6 entity"], "Lub\u0144ow": ["ISO 639-6 entity"], "Ch\u00f3\u015bebuz": ["ISO 639-6 entity"], "Rogow": ["ISO 639-6 entity"], "Z\u0142y-Komarow": ["ISO 639-6 entity"], "Bukojna- K\u00f3\u0161ynka": ["ISO 639-6 entity"], "Grodk": ["ISO 639-6 entity"], "Slepe": ["ISO 639-6 entity"], "Upper Sorbian Spoken": ["Dialects of the Upper Sorbian language."], "Hornjo-Serb\u0161\u0107ina Formal": ["ISO 639-6 entity"], "Ko\u0161yna\u2013\u0141uta": ["ISO 639-6 entity"], "Budy\u0161in": ["ISO 639-6 entity"], "\u0160prejcy": ["ISO 639-6 entity"], "T\u0159elno\u2013Wochozy": ["ISO 639-6 entity"], "Mu\u017eakow": ["ISO 639-6 entity"], "Slavic West North": ["ISO 639-6 entity"], "Polabian": ["An extinct West Slavic language that was spoken by the Slavs of North-Eastern Germany around the Elbe or Labe River (hence the name), until the mid-18th century."], "Pomeranian Cluster": ["A group of dialects from the Lechitic cluster of the West Slavic languages."], "S\u0142owi\u0144cki": ["ISO 639-6 entity"], "Kashubian Written": ["Written forms of the Kashubian language."], "Kashubian Written Latin Script Kashubuan Model": ["A written form of the Kashubian language."], "Kashubian Spoken": ["Dialects of the Kashubian language."], "Polish Spoken": ["Dialects of the Polish language."], "Formal Polish": ["ISO 639-6 entity"], "Generalised Polish": ["ISO 639-6 entity"], "Bory": ["ISO 639-6 entity"], "Kociewie": ["ISO 639-6 entity"], "Krajna": ["ISO 639-6 entity"], "Kujawy": ["ISO 639-6 entity"], "Wie\u0142ko-Polska": ["ISO 639-6 entity"], "L\u0119czyckie": ["ISO 639-6 entity"], "Sieradzkie": ["ISO 639-6 entity"], "\u015a\u0142\u0105ski": ["ISO 639-6 entity"], "Orawa-N": ["ISO 639-6 entity"], "Podhale": ["ISO 639-6 entity"], "Spisz-N": ["ISO 639-6 entity"], "Ma\u0142o-Polska": ["ISO 639-6 entity"], "Mazowiecki": ["ISO 639-6 entity"], "Podlasie": ["ISO 639-6 entity"], "Mazury": ["ISO 639-6 entity"], "Warmia": ["ISO 639-6 entity"], "Che\u0142mi\u0144sko- Dobrzy\u0144ska": ["ISO 639-6 entity"], "Polski-Amerikanski": ["ISO 639-6 entity"], "Slavic West South": ["ISO 639-6 entity"], "Czech Spoken": ["ISO 639-6 entity"], "Formal Czech": ["ISO 639-6 entity"], "Generalised Czech": ["ISO 639-6 entity"], "\u010ce\u0161tina-W": ["ISO 639-6 entity"], "\u010ce\u0161tina-S": ["ISO 639-6 entity"], "Doudlebski": ["ISO 639-6 entity"], "\u010ce\u0161tina-C": ["ISO 639-6 entity"], "Praha-U": ["ISO 639-6 entity"], "\u010ce\u0161tina-NE": ["ISO 639-6 entity"], "\u010cesko-Moravsk\u00e1": ["ISO 639-6 entity"], "Han\u00e1k": ["ISO 639-6 entity"], "Dolsky": ["ISO 639-6 entity"], "Lasky": ["ISO 639-6 entity"], "Slovak Spoken": ["Dialects of the Slovak language."], "Sloven\u010dina Formal": ["ISO 639-6 entity"], "Sloven\u010dina -General": ["ISO 639-6 entity"], "Moravsko- Sloven\u010dina": ["ISO 639-6 entity"], "Doln\u00e1-Morava": ["ISO 639-6 entity"], "Tren\u010d\u00edn-N": ["ISO 639-6 entity"], "Tren\u010d\u00edn-S": ["ISO 639-6 entity"], "Orava-S": ["ISO 639-6 entity"], "Liptov": ["ISO 639-6 entity"], "Turiec": ["Dialect of the Slovak lnguage spoken in Turiec.", "A region in central Slovakia."], "Zvole\u0148": ["ISO 639-6 entity"], "Tekov": ["Dialect of the Slovak lnguage spoken in Tekov.", "A region situated in southern and central Slovakia."], "Hont": ["Dialect of the Slovak lnguage spoken in Hont.", "A historic administrative county (comitatus) of the Kingdom of Hungary and then shortly of Czechoslovakia. Its territory is presently in southern Slovakia (\u00be) and northern Hungary (\u00bc)."], "Novohrad": ["Dialect of the Slovak lnguage spoken in Novohrad.", "A historic administrative county (comitatus) of the Kingdom of Hungary. Its territory is presently in southern Slovakia and in northern present-day Hungary."], "Gemer": ["Dialect of the Slovak lnguage spoken in Gemer.", "A historic administrative county (comitatus) of the Kingdom of Hungary. ts territory is presently in southern Slovakia and northern Hungary."], "Spi\u0161-S": ["ISO 639-6 entity"], "\u0160ari\u0161": ["ISO 639-6 entity"], "Zemplin": ["ISO 639-6 entity"], "U\u017e": ["ISO 639-6 entity"], "Sloven\u010dina-Amerika": ["ISO 639-6 entity"], "Slavic East": ["ISO 639-6 entity"], "Slavic East North": ["ISO 639-6 entity"], "Russian Spoken": ["Variants of the Russian language used in oral communication."], "Russkiy Formal": ["A variant of the Russian language used in oral communication."], "Russkiy General": ["A variant of the Russian language used in oral communication."], "Arkhangelskiy": ["A variant of the Russian language used in oral communication."], "Olonetskiy": ["ISO 639-6 entity"], "Novgorodskiy": ["ISO 639-6 entity"], "Vologdo-Viatkiy": ["ISO 639-6 entity"], "Povolzhskiy": ["ISO 639-6 entity"], "Sankt-Peterburgskiy": ["ISO 639-6 entity"], "Moskovskiy": ["A variant of the Russian language used in oral communication."], "Pskovskiy": ["A variant of the Russian language used in oral communication."], "Russkiy-CW": ["A variant of the Russian language used in oral communication."], "Russkiy-CE": ["A variant of the Russian language used in oral communication."], "Bryanskiy": ["A variant of the Russian language used in oral communication."], "Tulskiy": ["A variant of the Russian language used in oral communication."], "Orlovskiy": ["A variant of the Russian language used in oral communication."], "Tambovskiy": ["A variant of the Russian language used in oral communication."], "Donskiy": ["A variant of the Russian language used in oral communication."], "Doukhobor-Emigr\u00e9": ["ISO 639-6 entity"], "Molokan-Emigr\u00e9": ["ISO 639-6 entity"], "Belarusan Spoken": ["ISO 639-6 entity"], "Belaruskaya-F": ["ISO 639-6 entity"], "Belaruskaya-G": ["ISO 639-6 entity"], "Polotsk": ["ISO 639-6 entity"], "Vitebsk- Mogilev": ["ISO 639-6 entity"], "Minsk-U": ["ISO 639-6 entity"], "Grodno- Baranovichi": ["ISO 639-6 entity"], "Slutsk- Mozyr": ["ISO 639-6 entity"], "Rusyn": ["ISO 639-6 entity"], "Rusyn Written": ["ISO 639-6 entity"], "Rusyn Spoken": ["ISO 639-6 entity"], "Rusyn-N": ["ISO 639-6 entity"], "Rusyn-W": ["ISO 639-6 entity"], "Rusyn-SE": ["ISO 639-6 entity"], "Slavic East South": ["ISO 639-6 entity"], "Ukrainian Written": ["Written forms of the Ukrainian language."], "Ukrainian Written Cyrillic Script Historical": ["The Ukrainian language written with the historical Cyrillic script."], "Ukrainian Written Cyrillic Script": ["The Ukrainian language written with the Cyrillic script."], "Ukrainian Spoken": ["The dialects of the Ukrainian language."], "Ukrainska-F": ["A dialect of the Ukrainian language."], "Ukrainska-G": ["A dialect of the Ukrainian language."], "Ukrainska- Belaruskaya": ["A dialect of the Ukrainian language."], "Ukrainska-NW": ["A dialect of the Ukrainian language."], "Kiev-U": ["A dialect of the Ukrainian language."], "Ukrainska-NE": ["A dialect of the Ukrainian language."], "Ukrainska-SW": ["A dialect of the Ukrainian language."], "Dnestr-NW": ["A dialect of the Ukrainian language."], "Lviv-U": ["A dialect of the Ukrainian language."], "Turka": ["A dialect of the Ukrainian language."], "Kuty": ["A dialect of the Ukrainian language."], "Prut-N": ["A dialect of the Ukrainian language."], "Dnestr-M": ["A dialect of the Ukrainian language."], "Ukrainska-SE": ["A dialect of the Ukrainian language."], "Surzhik": ["A dialect of the Ukrainian language."], "Slavic South West": ["ISO 639-6 entity"], "Slovenian Written": ["Written forms of the Slovenian language."], "Slovenian Written Latin Script Historical": ["ISO 639-6 entity"], "Slovenian Written Latin Script": ["ISO 639-6 entity"], "Slovenian Spoken": ["Dialects of the Slovenian language."], "Slovenian-F": ["ISO 639-6 entity"], "Slovenian-Sava": ["ISO 639-6 entity"], "Slovenian-G": ["ISO 639-6 entity"], "Slovenian-\"Amerika\"": ["ISO 639-6 entity"], "Slovenian Argentina": ["ISO 639-6 entity"], "Koro\u0161ko": ["ISO 639-6 entity"], "Koro\u0161ko Spoken": ["ISO 639-6 entity"], "Ziljsko": ["ISO 639-6 entity"], "Ro\u017eansko": ["ISO 639-6 entity"], "Krksko": ["ISO 639-6 entity"], "Obirsko": ["ISO 639-6 entity"], "Me\u00f9zi\u015bko": ["ISO 639-6 entity"], "Podjunsko": ["ISO 639-6 entity"], "Rem\u0161ni\u0161ko": ["ISO 639-6 entity"], "Primorsko Littoral Sub Cluster": ["ISO 639-6 entity"], "Resian": ["A distinct dialect of Slovene spoken in the Resia Valley, Province of Udine, Italy, close to the border with Slovenia."], "Resian Written": ["ISO 639-6 entity"], "Resian Written Latn Script": ["ISO 639-6 entity"], "Resian Spoken": ["ISO 639-6 entity"], "Bene\u0161ko": ["ISO 639-6 entity"], "Bene\u0161ko Spoken": ["ISO 639-6 entity"], "Tersko": ["ISO 639-6 entity"], "Nadi\u0161ko": ["ISO 639-6 entity"], "Brisko": ["ISO 639-6 entity"], "Obo\u0161ko": ["ISO 639-6 entity"], "Obo\u0161ko Spoken": ["ISO 639-6 entity"], "Bov\u0161ko": ["ISO 639-6 entity"], "Kobari\u0161ko": ["ISO 639-6 entity"], "Borjansko": ["ISO 639-6 entity"], "Kra\u0161ko": ["ISO 639-6 entity"], "Kra\u0161ko Spoken": ["ISO 639-6 entity"], "Kra\u0161ko-NW": ["ISO 639-6 entity"], "Kra\u0161ko-SE": ["ISO 639-6 entity"], "Istrsko": ["ISO 639-6 entity"], "Istrsko Spoken": ["ISO 639-6 entity"], "Brkinsko": ["ISO 639-6 entity"], "\u0160avrinsko": ["ISO 639-6 entity"], "Notranjsko": ["ISO 639-6 entity"], "Notranjsko Spoken": ["ISO 639-6 entity"], "Gorenjsko- Rovtarsko": ["ISO 639-6 entity"], "Gorenjsko- Rovtarsko Spoken": ["ISO 639-6 entity"], "Gorenjsko": ["ISO 639-6 entity"], "Sel\u0161ko": ["ISO 639-6 entity"], "Tolminsko": ["ISO 639-6 entity"], "Cerkljansko": ["ISO 639-6 entity"], "\u010crnovr\u0161ko": ["ISO 639-6 entity"], "Loga\u0161ko": ["ISO 639-6 entity"], "Vrhni\u0161ko- Horjuljsko": ["ISO 639-6 entity"], "Poljansko": ["ISO 639-6 entity"], "\u0160kofjelo\u0161ko": ["ISO 639-6 entity"], "Dolenjsko": ["ISO 639-6 entity"], "Dolenjsko Spoken": ["The dialects of the Dolenjsko language."], "Dolenjsko-C": ["A dialect of the Dolenjsko language."], "Dolenjsko-E": ["A dialect of the Dolenjsko language."], "Posavsko": ["A dialect of the Dolenjsko language."], "Belo-Krajinsko": ["A dialect of the Dolenjsko language."], "Belo-Krajinsko Spoken": ["The dialects of the Belo-Krajinsko language."], "Kostelsko": ["A dialect of the Dolenjsko language."], "Belo-Krajinsko-C": ["A dialect of the Dolenjsko language."], "Privr\u0161ko": ["A dialect of the Dolenjsko language."], "Poljsko": ["A dialect of the Dolenjsko language."], "\u0160okarsko": ["A dialect of the Dolenjsko language."], "\u0160tajersko-W": ["ISO 639-6 entity"], "\u0160tajersko-W Spoken": ["ISO 639-6 entity"], "Sotelsko": ["ISO 639-6 entity"], "\u0160tajersko-C": ["ISO 639-6 entity"], "Savinjsko": ["ISO 639-6 entity"], "Pohorsko": ["ISO 639-6 entity"], "Kozja\u0161ko": ["ISO 639-6 entity"], "\u0160tajersko-E": ["ISO 639-6 entity"], "\u0160tajersko-E Spoken": ["ISO 639-6 entity"], "Gori\u010dansko": ["ISO 639-6 entity"], "Prle\u0161ko": ["ISO 639-6 entity"], "Halo\u0161ko": ["ISO 639-6 entity"], "Prle\u0161ko-E": ["ISO 639-6 entity"], "Sredi\u0161\u010dansko": ["ISO 639-6 entity"], "Prekmursko Transmural": ["ISO 639-6 entity"], "Serbo-Croatian Cluster": ["ISO 639-6 entity"], "Srpsko- Hrvatski-L": ["ISO 639-6 entity"], "Srpsko- Hrvatski-L Written": ["ISO 639-6 entity"], "Srpsko-Hrvatski-L Written Cyrillic Script": ["ISO 639-6 entity"], "Srpsko- Hrvatski-L Written Glagolitic Script": ["ISO 639-6 entity"], "Srpsko- Hrvatski-L Written Latin Script": ["ISO 639-6 entity"], "Serbian Written": ["Written forms of the Serbian language."], "Serbian Written Latin Script": ["Serbian language written with the Latin Script."], "Serbian Written Cyrillic Script": ["Serbian language written with the Cyrillic Script."], "Serbian Spoken": ["Dialects of the Serbian language."], "Ikavski-Formalised": ["ISO 639-6 entity"], "Ikavski-Formalised Spoken": ["ISO 639-6 entity"], "Bosnian Written": ["The written forms of the Bosnian language."], "Bosnian Written Latin Script": ["The Bosnian language written with the Latin script."], "Bosnian Spoken": ["Spoken dialects of Bosnian."], "Srpski-G": ["ISO 639-6 entity"], "Srpski-G Spoken": ["ISO 639-6 entity"], "Hrvatski-G": ["ISO 639-6 entity"], "Hrvatski-G Spoken": ["ISO 639-6 entity"], "Kajkavski": ["A dialect of Croatian spoken in the northern and northwestern parts of Croatia."], "Kajkavski Spoken": ["Dialects of the Kajkavski language."], "Kajkavski-E": ["ISO 639-6 entity"], "Kajkavski- SW": ["ISO 639-6 entity"], "Kajkavski-NW": ["ISO 639-6 entity"], "\u010cakavski": ["ISO 639-6 entity"], "\u010cakavski Spoken": ["ISO 639-6 entity"], "Buzet": ["ISO 639-6 entity"], "\u0160tokavian-\u010cakavian": ["ISO 639-6 entity"], "Ekavian \u010cakavian": ["ISO 639-6 entity"], "Ikavian-Ekavian": ["ISO 639-6 entity"], "Ikavian \u010cakavian": ["ISO 639-6 entity"], "Ijekavian \u010cakavian": ["ISO 639-6 entity"], "\u0160tokavski": ["ISO 639-6 entity"], "\u0160tokavski Spoken": ["ISO 639-6 entity"], "\u0160tokavski-NW": ["ISO 639-6 entity"], "\u0160tokavski-W": ["ISO 639-6 entity"], "\u0160tokavski-C": ["ISO 639-6 entity"], "\u0160tokavski-N": ["ISO 639-6 entity"], "\u0160tokavski-CE": ["ISO 639-6 entity"], "\u0160tokavski-NE": ["ISO 639-6 entity"], "\u0160tokavski-E": ["ISO 639-6 entity"], "\u0160tokavski-S": ["ISO 639-6 entity"], "Italo-\u0160tokavski": ["ISO 639-6 entity"], "Torlakski": ["ISO 639-6 entity"], "Slavic South East": ["ISO 639-6 entity"], "Macedonian Written": ["Written forms of the Macedonian language."], "Macedonian Written Cyrillic Script Skopje Model": ["ISO 639-6 entity"], "Macedonian Spoken": ["Dialects of the Macedonian language."], "Makedonski-F": ["ISO 639-6 entity"], "Makedonski-N": ["ISO 639-6 entity"], "Makedonski-C": ["ISO 639-6 entity"], "Makedonski-CW": ["ISO 639-6 entity"], "Makedonski-W": ["ISO 639-6 entity"], "Makedonski-E": ["ISO 639-6 entity"], "Pirinski": ["ISO 639-6 entity"], "Makedonski-CE": ["ISO 639-6 entity"], "Makedonski-SE": ["ISO 639-6 entity"], "Makedonski-SW": ["ISO 639-6 entity"], "Bulgarian Written": ["ISO 639-6 entity"], "Bulgarian Written Cyrillic Script": ["ISO 639-6 entity"], "Bulgarian Spoken": ["The dialects of the Bulgarian language."], "Bulgarski-F": ["ISO 639-6 entity"], "Bulgarski-G": ["ISO 639-6 entity"], "Bulgarski-NW": ["ISO 639-6 entity"], "Bulgarski-SW": ["ISO 639-6 entity"], "Bulgarski-SE": ["ISO 639-6 entity"], "Pomakika": ["ISO 639-6 entity"], "Bulgarski-NE": ["ISO 639-6 entity"], "Palityan": ["ISO 639-6 entity"], "Pomak": ["ISO 639-6 entity"], "Songhai": ["A group of closely related languages/dialects centered on the middle stretches of the Niger River in the west African states of Mali, Niger, Benin, Burkina Faso, and Nigeria."], "Southern Songhai Cluster": ["ISO 639-6 entity"], "Koyra Chiini Songhay": ["A language of Mali."], "Koyra Chiini Songhay Written": ["ISO 639-6 entity"], "Koyra Chiini Songhay Spoken": ["ISO 639-6 entity"], "Koyra Chiini": ["ISO 639-6 entity"], "Jenekine": ["ISO 639-6 entity"], "Timbuktu": ["ISO 639-6 entity"], "Araouane": ["ISO 639-6 entity"], "Tombata": ["ISO 639-6 entity"], "Humburi Senni Songhay": ["Dialect of the Songhay language spoken around the city of Hombori in Mali"], "Humburi Senni Songhay Written": ["The written forms of the Humburi Senni Songhay language."], "Humburi Senni Songhay Spoken": ["The dialects of the Humburi Senni Songhay language."], "Homborikine": ["A dialect of the Humburi Senni Songhay language."], "Tinie": ["A dialect of the Humburi Senni Songhay language."], "Marense": ["A dialect of the Humburi Senni Songhay language spoken by the Marense people in Burkina Faso."], "Kaado": ["A dialect of the Humburi Senni Songhay language, spoken in the north of Niger up to the border with Mali."], "Koyraboro Senni Songhay": ["ISO 639-6 entity"], "Koyraboro Senni Songhay Written": ["ISO 639-6 entity"], "Koyraboro Senni Songhay Written Arab Script": ["ISO 639-6 entity"], "Koyraboro Senni Songhay Written Latin Script": ["ISO 639-6 entity"], "Koyraboro Senni Songhay Spoken": ["ISO 639-6 entity"], "Bamba": ["ISO 639-6 entity"], "Gaokine": ["ISO 639-6 entity"], "Alkaseybaten": ["ISO 639-6 entity"], "Gabero": ["ISO 639-6 entity"], "Zarma ": ["ISO 639-6 entity"], "Zarma Spoken": ["The dialects of the Zarma language."], "Dosso": ["A dialect of the Zarma language."], "Karimama": ["A dialect of the Zarma language."], "Wogo": ["A dialect of the Zarma language."], "Dendi": ["A language of Benin and Nigeria.", "A language of Central African Republic."], "Dendi Spoken": ["ISO 639-6 entity"], "Dendi-N": ["ISO 639-6 entity"], "Kandi": ["ISO 639-6 entity"], "Paraku": ["ISO 639-6 entity"], "Jugu": ["ISO 639-6 entity"], "Tagdal": ["ISO 639-6 entity"], "Tagdal Written": ["ISO 639-6 entity"], "Tagdal Written Arabic Script": ["ISO 639-6 entity"], "Tagdal Spoken": ["ISO 639-6 entity"], "Tihisit": ["ISO 639-6 entity"], "Tagdalt": ["ISO 639-6 entity"], "Taborog": ["ISO 639-6 entity"], "Northern Songhai Cluster": ["ISO 639-6 entity"], "Tadaksahak": ["A language of Mali."], "Tadaksahak Written": ["ISO 639-6 entity"], "Tadaksahak Spoken": ["ISO 639-6 entity"], "Tasawaq": ["ISO 639-6 entity"], "Tasawaq Spoken": ["ISO 639-6 entity"], "Korandje": ["A language of Algeria"], "Korandje Written": ["The written forms of the Korandje language."], "Korandje Spoken": ["The dialects of the Korandje language."], "beekeeping": ["The agricultural practice of intentional maintenance of honey bee colonies."], "superconductor": ["Material whose electrical resistance becomes zero below a certain temperature"], "trilby": ["A hat made of felt."], "boater": ["Personnel who drives or rides in a boat."], "failed state": ["A state in which the government has litte or no control over its territory and cannot fulfill basic national duties anymore."], "Nobel prize laureate": ["A person who has been awarded a Nobel Prize."], "prevention": ["A behavior, act or measure aimed at preventing the occurrence of something negative."], "bowler": ["A stiff felt hat with a round crown and a narrow brim."], "biological clock": ["The internal clock in the body of a human or animal that regulates sleep, hunger, and other biological functions."], "fist": ["The closed hand with the fingers on the palm."], "question mark": ["Punctuation mark that replaces the full stop (period) at the end of an interrogative sentence"], "bird's nest": ["A nest built by birds out of moss, twigs, grass etc. which is used to raise their offspring."], "rescue": ["Act of rescuing from a danger.", "To free from harm or evil."], "sue": ["To institute legal proceedings against (a person or institution)."], "angrily": ["In an angry manner."], "certified mail": ["A special type of mail offered by a postal service that allows the sender proof of mailing."], "radius": ["A circular region whose area is indicated by the length of its radius.", "Bone of the forearm that extends from the elbow to the thumb side of the wrist."], "\u00c5land Islands": ["An archipelago of islands off the coast of Sweden in the Baltic Sea, forming an autonomous province of Finland."], "American Samoa": ["A group of islands in the South Pacific, southeast of Samoa and constituting a territory of the United States of America."], "Commonwealth of the Bahamas": ["A country in the Caribbean with capital Nassau."], "People's Republic of Bangladesh": ["A country in South Asia. It is surrounded by India on all sides except for a small border with Myanmar to the far southeast and the Bay of Bengal to the south."], "Republic of Botswana": ["A country in Southern Africa whose capital is Gaborone."], "Union of the Comoros": ["A country in Eastern Africa whose capital is Moroni. Comoros consists of four islands in the Indian Ocean located between northern Madagascar and northeastern Mozambique."], "Republic of Djibouti": ["A country in Eastern Africa whose capital is Djibouti."], "Kingdom of Cambodia": ["A country in Southeast Asia. The country shares a border with Thailand to its west and northwest, with Laos to its northeast, and with Vietnam to its east and southeast. In the south it faces the Gulf of Thailand. Its capital is Phnom Penh."], "Cisalpine Celtic": ["ISO 639-6 entity"], "Federal Democratic Republic of Ethiopia": ["A country in Eastern Africa, bordered by Eritrea, Djibouti, Somalia, Kenya and Sudan. Its capital is Addis Ababa."], "Republic of Kenya": ["A country in Eastern Africa whose capital is Nairobi."], "Republic of Latvia": ["One of the Baltic countries, whose capital is Riga."], "Republic of Lithuania": ["A baltic European country with a northern border with Latvia, eastern border with Belarus, southern border with Poland, southwestern border with the Russian enclave of Kaliningrad, and western border with the Baltic Sea."], "Republic of Madagascar": ["An island country in the Indian Ocean off the southeastern coast of Africa"], "Republic of Peru": ["A country in South America, with capital Lima."], "Rwandese Republic": ["A country in Eastern Africa whose capital is Kigali."], "Kingdom of Saudi Arabia": ["Country on the Arabian Peninsula, with capital Riyadh."], "as far as": ["Up to a certain limit."], "Republic of Seychelles": ["A country of 158 islands 1,000 miles off the coast of East Africa, northeast of Madagascar. Its capital is Victoria."], "Republic of Uganda": ["Country in Eastern Africa whose capital is Kampala."], "Wellington": ["The capital of New Zealand."], "top hat": ["Man's silk hat with high cylindrical crown."], "Republic of Belarus": ["A country in Eastern Europe whose capital is Minsk."], "Kingdom of Belgium": ["A country in Western Europe at the North Sea, south of The Netherlands, north of France, and west of Germany, with capital city Brussels."], "Republic of Benin": ["A country in Western Africa whose capital is Porto Novo."], "Bermuda": ["A group of islands 1,000 kilometers off the coast of the United States, comprising an overseas territory of the United Kingdom. The capital is Hamilton."], "Kingdom of Bhutan": ["A country in South Asia whose capital is Thimphu."], "Republic of Bolivia": ["A country in South America, with administrative capital La Paz and official capital Sucre."], "Bouvet Island": ["Uninhabited island in the South Atlantic, a dependency of Norway."], "British Indian Ocean Territory": ["An overseas territory of the United Kingdom in the Indian Ocean, consisting of six island groups located south of India and about halfway between Africa and Indonesia."], "BIOT": ["An overseas territory of the United Kingdom in the Indian Ocean, consisting of six island groups located south of India and about halfway between Africa and Indonesia."], "Negara Brunei Darussalam": ["A country in Southeast Asia whose capital is Bandar Seri Begawan."], "Republic of Cameroon": ["Country in Central Africa whose capital is Yaound\u00e9."], "Kingdom of Denmark": ["Country in western Europe whose capital is Copenhagen."], "Republic of Bulgaria": ["A country in southeastern Europe. It borders five countries: Romania to the north mostly along the Danube, Serbia and the Republic of Macedonia to the west, and Greece and Turkey to the south, as well as the Black Sea, which comprises its entire eastern border. Its capital is Sofia."], "Republic of Cape Verde": ["An island country located in the Atlantic about 500 kilometers off the coast of Western Africa. Its capital is Praia."], "ISO 15924": ["The ISO code to indicate scripts."], "Cayman Islands": ["An overseas territory of the United Kingdom, comprising three islands in the Caribbean, about 150 miles south of Cuba and 170 miles northwest of Jamaica. Its capital is George Town."], "Republic of Chad": ["A country in Central Africa whose capital is N'Djamena."], "Republic of Chile": ["A country in South America, with capital Santiago de Chile."], "Christmas Island": ["A non-self-governing territory of Australia, located in the Indian Ocean about 225 (500 km) miles south of Java and 800 miles (2.360 km) northwest of Australia.", "A Pacific Ocean atoll in the northern Line Islands and part of the Republic of Kiribati."], "rosarium": ["A garden where rose bushes are planted."], "rosery": ["A garden where rose bushes are planted."], "Anguilla": ["The Caribbean island of Anguilla plus several smaller islands, together constituting an overseas territory of the United Kingdom, located east of Puerto Rico."], "Republic of Colombia": ["A country in northwestern South America, with capital Bogot\u00e1."], "Cook Islands": ["A group of islands in the South Pacific, midway between Hawaii and New Zealand."], "sardine": ["Any one of several small species of herring which are commonly preserved in olive oil or in tins for food."], "merely": ["Nothing more than."], "simply": ["Nothing more than.", "Without someone or something else.", "In a simple manner or state.", "Not wisely or sensibly, foolishly."], "kidnapping": ["The wrongful, and usually the forcible, carrying off of a human being."], "absorb": ["To completely consume.", "To include so that it no longer has separate existence."], "reluctant": ["Lacking desire or willingness."], "anchovy": ["A small saltwater fish of the Engraulidae family."], "revise": ["To modify or improve something previously written."], "researcher": ["A scientist who devotes himself to doing research."], "dolphin": ["A carnivorous aquatic mammal inhabiting mostly in the shallower seas of the continental shelves."], "reuse": ["The action of reusing an item again after it has been used."], "reconnaissance aircraft": ["A military aircraft used for inspecting the enemy territory."], "archaeometry": ["The examination of archaeological discoveries with scientific techniques and methodologies."], "archaeological science": ["The examination of archaeological discoveries with scientific techniques and methodologies."], "radiocarbon dating": ["A method to determine the age of carbonaceous organic materials up to about 60,000 years based on the radioactive decay of the isotope carbon-14."], "Menasser-Metmata": ["ISO 639-6 entity"], "Menasser-Metmata Spoken": ["ISO 639-6 entity"], "organ trade": ["The illegal trade with human organs from living donors for the purpose of transplantation."], "Republic of Costa Rica": ["A country in Central America, with capital San Jos\u00e9."], "Cote d'Ivoire": ["A country in Western Africa whose capital is Abidjan."], "Republic of Cote d'Ivoire": ["A country in Western Africa whose capital is Abidjan."], "Republic of Croatia": ["A country in Europe with capital Zagreb."], "Central Atlas Tamazight": ["A Berber language of the Afro-Asiatic language family, spoken by 3 to 5 million people in Central Morocco, as well as by much smaller communities in Algeria and France."], "Republic of Cuba": ["A country and the largest island in the Caribbean with capital Havana."], "Central Atlas Tamazight Spoken": ["Dialects of the Central Atlas Tamazight language."], "Republic of Cyprus": ["Country between Europe and the Middle East, in the Mediterranean Sea, with capital Nicosia."], "sister-in-law": ["The sister of one's husband or wife.", "The wife of one's brother.", "The sister of one's wife.", "The sister of one's husband.", "The wife of one's husband's brother.", "The wife of one's wife's brother."], "Kingdom of Morocco": ["A country in Northern Africa whose capital is Rabat."], "Andamanese": ["Language family spoken by the Andamanese peoples of the Andaman Islands, a union territory of India."], "Republic of Estonia": ["One of the Baltic countries that has land borders to the south with Latvia and to the east with Russia. It is separated from Finland in the north by the Gulf of Finland and from Sweden in the west by the Baltic Sea."], "Ravello": ["City on the Amalfi Coast, province of Salerno, region Campania, Italy."], "nail clippers": ["A mechanical device used to trim fingernails and toenails."], "nail trimmer": ["A mechanical device used to trim fingernails and toenails."], "Commonwealth of Dominica": ["A country in the Caribbean."], "Republic of Ecuador": ["A country in South America, with capital Quito."], "Arab Republic of Egypt": ["A country in North Africa."], "Republic of El Salvador": ["Country in Central America, with capital San Salvador."], "Republic of Equatorial Guinea": ["A country in Western Africa whose capital is Malabo."], "Faroe Islands": ["A group of 18 islands situated northwest of Scotland and midway between Iceland and Norway and constituting a self-governing overseas administrative division of Denmark. Its capital is Torshavn."], "Republic of the Fiji Islands": ["A country in Oceania comprising over 300 islands."], "Republic of Finland": ["One of the Nordic countries having borders with Sweden, Norway and Russia."], "disc brake": ["A type of brake where the friction is produced by brake pads which are pressed against a disk."], "French Guiana": ["An overseas region of France, located on the northern coast of South America. Its capital is Cayenne."], "French Polynesia": ["An overseas collectivity (and formally designated an \"overseas country\") of France in the Southern Pacific, about midway between South America and Australia. Its capital is Papeete, on the island of Tahiti."], "French Southern Territories": ["An overseas territory of France, including Ad\u00e9lie Land on Antarctica and islands in the southern Indian Ocean that are southeast of Africa and equidistant between that continent, Australia and Artarctica."], "French Southern and Antarctic Lands": ["An overseas territory of France, including Ad\u00e9lie Land on Antarctica and islands in the southern Indian Ocean that are southeast of Africa and equidistant between that continent, Australia and Artarctica."], "Territory of the French Southern and Antarctic Lands": ["An overseas territory of France, including Ad\u00e9lie Land on Antarctica and islands in the southern Indian Ocean that are southeast of Africa and equidistant between that continent, Australia and Artarctica."], "Gabonese Republic": ["A country in Western Africa whose capital is Libreville."], "The Gambia": ["A country in Western Africa whose capital is Banjul."], "Republic of The Gambia": ["A country in Western Africa whose capital is Banjul."], "Federal Republic of Germany": ["A central European country, with capital Berlin."], "Republic of Ghana": ["Country in Western Africa whose capital is Accra."], "Hellenic Republic": ["Country in southeastern Europe having borders with Albania, the Former Yugoslav Republic of Macedonia, Bulgaria, and Turkey."], "Republic of Guatemala": ["Country in Central America, with capital Guatemala City."], "drum brake": ["A brake in which the friction is caused by a set of shoes or pads that press against the inner surface of a rotating drum."], "overcast": ["Covered with clouds."], "overcloud": ["To cover with clouds."], "cuddle": ["To move close to somebody for affection or comfort.", "A close and affectionate embrace."], "Republic of Guinea": ["Country in Western Africa whose capital is Conakry."], "streamlet": ["A small stream which flows on the earth."], "bind": ["A difficult situation.", "To sewing together sheets or booklets that make up a book and apply a cover.", "To confine by any ligature.", "To stick to firmly."], "detect": ["To spot, detect, recognize, capture, or see something or someone having been unknown, invisible, obscured, too distant, or otherwise not found before.", "To see, discover or determine something, unclear, distant or hidden, by looking carefully."], "Republic of Guinea-Bissau": ["A country in Western Africa whose capital is Bissau."], "Karaim E": ["ISO 639-6 entity"], "Karachay-Balkar": ["A Turkic language spoken in Russia by the Karachays and Balkars."], "Karachay-Balkar Spoken": ["Dialects of the Karachay-Balkar language."], "Karachay-Balkar Written": ["Written forms of the Karachay-Balkar language."], "Karachay-Balkar Written Cyrillic Script": ["The Karachay-Balkar written with the cyrillic script."], "go back": ["To belong to an earlier time.", "To drive, ride, or go back; to return."], "date back": ["To belong to an earlier time."], "stagnate": ["To cease to flow; to stand without moving."], "retreat": ["To retreat unwillingly and/or suddenly, often caused by sudden pain, shock, scare, fright, surprise, or similar."], "pour": ["To cause a liquid to flow into a container."], "pain in the neck": ["Something which annoys."], "tricycle": ["A cycle with three wheels, powered by pedals and usually intended for young children."], "Tuvan": ["A Turkic languages spoken in the Republic of Tuva in south-central Siberia in Russia, in China and Mongolia."], "ruby": ["A dynamic, reflective, general purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features.", "Red gemstone that varies from a light pink to a blood red, a variety of the mineral corundum (aluminium oxide)."], "continuous rain": ["Prolonged rain."], "State of Israel": ["A country in Southwest Asia, with capital Jerusalem."], "Hashemite Kingdom of Jordan": ["A country in the Middle East, with capital Amman."], "Republic of Kazakhstan": ["A country in Central Asia whose capital is Astana."], "snooker": ["A form of billiards."], "cue ball": ["(Snooker, pool, billiards) The white ball which is struck by the cue."], "billiard cue": ["A straight tapering rod used to impel the balls in games such as billiards, snooker, and pool."], "Saghalien": ["Island in the North Pacific which belongs to Russia."], "Qabala": ["ISO 639-6 entity", "A rayon of Azerbaijan"], "State of Kuwait": ["A country on the Arabian peninsula in Asia on the coast of the Persian Gulf, with Saudi Arabia in the South and Iraq in the North; Its capital is Kuwait City."], "German-speaking": ["Speaking the German language."], "German-language": ["Pertaining to the German language."], "rural": ["Of or related to the country."], "excavator": ["A machine used to dig the ground and to lift and carry dirt and debris."], "French-speaking": ["Speaking the French language."], "French-language": ["Pertaining to the French language."], "metallic": ["Consisting of metal."], "Shaky": ["A city in North-west Azerbaijan, in the rayon of the same name."], "Karapapak": ["A small ethnic group who mainly live in the province of West Azerbaijan of northwest Iran."], "Garapapag": ["A small ethnic group who mainly live in the province of West Azerbaijan of northwest Iran."], "Yerazi": ["An Azerbaijani sub-group, also referred to as a clan, consisting of Azeris originally from present-day Armenia."], "Nakhchivan": ["A landlocked exclave of Azerbaijan between Armenia, Turkey and Iran. Its capital is Nakhchivan City."], "churchyard": ["Square in front of the main facade of a church", "A place or area for burying the dead."], "socialite": ["A socially prominent person who is well-known in fashionable society."], "Kyrgyz Republic": ["A country in Central Asia whose capital is Bishkek."], "Lao People's Democratic Republic": ["A country in Southeast Asia whose capital is Vientiane."], "Lebanese Republic": ["A country in Southwest Asia with capital Beirut."], "Ionic": ["Ancient Greek dialect mainly spoken in Ionia, an ancient region in Anatolia."], "Ionic Greek": ["Ancient Greek dialect mainly spoken in Ionia, an ancient region in Anatolia."], "Cappadocian": ["Joint Greco-Turkish language, formerly spoken in Cappadocia (now central Turkey), today there are speakers in central and northern Greece."], "Pontic Greek": ["A language of Greece and Turkey."], "Newah Bhaye": ["One of the major languages of Nepal"], "Newari": ["One of the major languages of Nepal"], "Romaniote": ["The dialect of the Romaniotes, the group of Greek Jews whose existence in Greece is documented since the Hellenistic period. (source: Wikipedia)"], "Judeo-Greek": ["The dialect of the Romaniotes, the group of Greek Jews whose existence in Greece is documented since the Hellenistic period. (source: Wikipedia)"], "walking frame": ["A framework device used to support either an infant learning to walk, or a person with walking difficulties"], "Arumanian": ["An Eastern Romance language spoken in Southeastern Europe."], "safeguard": ["Permit issued by an authority which guarantees a person to enter and spend time in a place in which otherwise she could not enter.", "Something that serves as a guard or protection; a defense."], "Kingdom of Lesotho": ["A country in Southern Africa, entirely surrounded by the Republic of South Africa. Its capital is Maseru."], "Republic of Liberia": ["Country in Western Africa whose capital and largest city is Monrovia."], "expert": ["Showing knowledge and skill and aptitude in performing some activity.", "A very knowledgeable person in a particular area or subject."], "outlet": ["A passage or gate from inside someplace to the outside, that permits escape or release.", "A wall-mounted power socket."], "unwrap": ["To remove the paper around something.", "To remove from a package or container, particularly with respect to items that had previously been arranged closely and securely in a pack."], "Constructed Romance": ["A language inspired and based in Latin and Romance Languages."], "Great Socialist People's Libyan Arab Jamahiriya": ["A country in Northern Africa whose capital is Tripoli."], "letter scale": ["A small scale to weigh letters."], "dumb": ["Unable to speak; lacking power of speech.", "Marked by lack of intellectual acuity or somewhat mentally limited."], "Tashelhiyt": ["Berber language spoken by the Chleuh in Morocco."], "Tashelhit": ["Berber language spoken by the Chleuh in Morocco."], "Tachelhiyt": ["Berber language spoken by the Chleuh in Morocco."], "Shilha": ["A language of Libya and Tunesia."], "Grand Duchy of Luxembourg": ["A country (Grand Duchy) in north west Europe, bordered by Belgium, Germany and France. The capital of the same name is Luxembourg."], "Republic of Macedonia": ["A country in Europe."], "Republic of Mala\u0175i": ["A country in Southern Africa whose capital is Lilongwe."], "Lilongwe": ["The capital city of Malawi."], "Republic of the Maldives": ["A country in South Asia, more particularly an island nation in the Indian Ocean, located about 700 kilometers southwest of Sri Lanka. Its capital is Male."], "letter opener": ["A knife like device with a blunt edge, used for slicing letters open."], "letterhead": ["Paper which has the name of the person or company it is from printed on the top."], "European Central Bank": ["One of the world's most important central banks, located in Frankfurt, Germany, which is responsible for the monetary policy for the member countries of the Eurozone."], "ECB": ["One of the world's most important central banks, located in Frankfurt, Germany, which is responsible for the monetary policy for the member countries of the Eurozone."], "Anglo-Norman": ["An ancient language spoken in the Middle Ages at the royal court in England and by the Anglo-Norman aristocracy."], "Sarkese": ["A Norman dialect spoken in the the Channel Island of Sark."], "Sark-French": ["A Norman dialect spoken in the the Channel Island of Sark."], "sunburn": ["A burn on skin produced by exposition to the sun.", "A browning of the skin obtained from exposure to the sun."], "soap opera": ["A television serial about the lives of melodramatic characters, which are often filled with strong emotions, highly dramatic situations and suspense."], "splinter": ["A sharp fragment of a larger object, animal spine, or any foreign body that can penetrate into one's body.", "To break up into many small splinters."], "clash": ["A minor short-term fight.", "To strike together with great force.", "(For clothes) To not look good together.", "To disagree violently."], "notepaper": ["Relatively small writing paper used for writing notes or letters; often provided with matching envelopes."], "ringed": ["Wearing one or several rings."], "chair leg": ["A single leg of a chair."], "purchasing power": ["The value of a currency as measured by the amount of goods one can buy with it.", "The disposable income which can be used for consumption in private households."], "goatling": ["Young goat"], "amputate": ["To surgically remove a part of the body, especially a limb."], "section": ["Graphical representation of an architectural cutting in the direction of the length or width, carried out to reveal the internal structure.", "To cut, divide or separate into pieces.", "An image that shows an object as if cut along a plane, usually at right angles to a main axis."], "fragment": ["A small fragment of something broken off from the whole.", "To cause to be broken into pieces."], "perforate": ["To pass into or through.", "To make a hole or several holes into something, such as a sheet of paper to be filed away."], "penetrate": ["To pass into or through."], "drill": ["To create a hole by removing material with a drill.", "To repeat an idea frequently in order to encourage someone to remember it.", "A tool used to create holes."], "cut out": ["To remove or shape by cutting."], "curtail": ["To cut out the extreme parts of something."], "laryngitis": ["An inflammation of the larynx."], "hourglass": ["A device that measures the passage of a few minutes or an hour of time thanks to sand flowing through a narrow passage from one vessel to another."], "sandglass": ["A device that measures the passage of a few minutes or an hour of time thanks to sand flowing through a narrow passage from one vessel to another."], "sand timer": ["A device that measures the passage of a few minutes or an hour of time thanks to sand flowing through a narrow passage from one vessel to another."], "strengthen": ["To strengthen; to make firm.", "To become strong or stronger.", "To make strong or stronger."], "hair removal cream": ["Cream that one applies on the skin to remove hairs."], "composer": ["Artist who creates musical works."], "portrait": ["Representation of a person, for example on a painting, or on a photograph."], "photo album": ["Book into which photos are pasted."], "attract": ["To encourage someone to go to a specific place.", "To draw by a physical force causing or tending to cause to approach, adhere, or unite.", "To dispose or incline or entice to; to be attractive by arousing hope or desire."], "dome": ["Common structural element of architecture that resembles the hollow upper half of a sphere."], "tanned": ["Having skin darkened by exposure to sunlight."], "sun-tanned": ["Having skin darkened by exposure to sunlight."], "bronzed": ["Having skin darkened by exposure to sunlight."], "light-skinned": ["Having light skin."], "fair-skinned": ["Having light skin."], "dark-skinned": ["Having dark skin."], "swart": ["Having dark skin."], "swarthy": ["Having dark skin."], "greet": ["To address with salutations or expressions of kind wishes."], "dial": ["To select a number on a telephone.", "A round disk with numbers of 0 to 9 that is used to dial the phone number at old telephones"], "mark": ["To pay attention and perceive something.", "To indicate in some way for later reference.", "A perceptible indication of something not immediately apparent, as a visible clue that something has happened.", "A person who is gullible and easy to take advantage of."], "Achaemenid Empire": ["The first of the Persian Empires to rule over significant portions of the Middle East."], "Achaemenid Persian Empire": ["The first of the Persian Empires to rule over significant portions of the Middle East."], "TTM": ["The time it takes from the time a product is envisioned or defined until it is available to the customer.", "A disorder characterized by the impulse to pull out one's hairs, resulting in noticeable bald patches."], "Tetum": ["An Austronesian language spoken in East Timor."], "stock market crash": ["Sudden dramatic decline of stock prices at stock markets."], "tulip mania": ["A time in Holland in the 17th century when tulip bulbs became an object of speculation."], "tulipomania": ["A time in Holland in the 17th century when tulip bulbs became an object of speculation."], "chereme": ["The basic unit of a sign language."], "if ever": ["If there is a need."], "batter": ["To strike or hit somebody heavily and repeatedly."], "background": ["That which is farthest away from the front."], "exploiter": ["Impoverishing the land or other natural resources using them beyond their capacity."], "impoverish": ["To become poor or poorer.", "To make poor."], "reverse": ["To become the opposite one of what it was before.", "To turn around, go in the opposite direction.", "A relation of direct opposition.", "To rotate [a container] so that its opening be below; to turn upside down."], "hare": ["Mammal of the family hares and rabbits (Leporidae) with long ears, short tail and hindlegs which are shorter than the forelegs and permit running quickly."], "Guadeloupe": ["An overseas French territory located in the eastern Caribbean Sea."], "Guam": ["An island in the Western Pacific Ocean and an organized unincorporated territory of the United States of America. Its capital is Hag\u00e5t\u00f1a."], "Mayotte": ["An overseas collectivity of France located at the northern end of the Mozambique Channel in the Indian Ocean."], "ladybird": ["Any of the Coccinellidae family of beetles, having a round shape and a red or yellow spotted shell."], "tap": ["A device applied to the end of a pipe in order to interrupt and regulate the flow of a liquid or gas."], "Republic of Malta": ["A country in Europe, an island nation between Italy, Tunisia and Libya. Its capital is Valletta."], "Republic of Mali": ["A country in Western Africa whose capital is Bamako."], "Republic of Kiribati": ["Country in Oceania with capital Tarawa."], "croak": ["To cease to live.", "To utter the sound of a frog."], "quack": ["To utter the sound of a duck.", "The sound made by a duck.", "Someone who practices medicine without proper qualifications and/or promotes ineffective medical treatments.", "To practice medicine without proper qualifications and/or promote ineffective medical treatments."], "defy": ["To resist or object firmly to norms, customs, constraints, etc."], "coastal state": ["A state with access to the ocean."], "in the day": ["In the day."], "at noon": ["At noon."], "refute": ["To demonstrate the falsity or lack of foundation of what has been said or written.", "To prove to be false or invalid."], "Tintin": ["Young reporter, main character of the French comics \"The Adventures of Tintin\" written by Herg\u00e9."], "hacking": ["Being in the process to accomplish a difficult programming task.", "Being in the process to gain unauthorized access to a computer system."], "mosquito": ["A small flying insect (of the family Culicidae) known for biting and sucking blood."], "Republic of the Marshall Islands": ["A country in Oceania with capital Majuro."], "tsetse fly": ["A large biting fly from Africa which live by feeding on the blood of vertebrate animals (of the family Glossinidae)."], "prompt": ["To insist the someone does something as soon as possible."], "suspicious": ["Raising suspicion.", "Openly distrustful and unwilling to confide."], "Crimean Tatar Spoken": ["The dialects of the Crimean Tatar"], "cicada": ["An insect of the order Hemiptera."], "drug dealer": ["A person who deals with illegal drugs."], "sweep": ["To touch with a sweeping motion.", "To clean a surface with a broom."], "mirror inverted": ["That reproduces a model by reversing its characteristics or basics."], "stand out": ["To appear in way very clearly and distinguished, to distinguish themselves from the rest of the group."], "wasp": ["A flying stinging insect related to the bee, which is usually coloured yellow and black.", "A member of the dominant American upper-class culture, a white Anglo-Saxon Protestant."], "despoilment": ["The act of taking illegitimatly possession of something that belongs to others."], "Niue": ["An island nation in the south Pacific, about 400 km (250 miles) east of Tonga. Its capital is Alofi.", "A language of Niue."], "The Holy See": ["A sovereign city-state in Rome."], "State of the Vatican City": ["A sovereign city-state in Rome."], "botfly": ["A dipterous insect of the family Oestridae."], "bumblebee": ["A flying insect of the genus Bombus."], "shanty": ["A small crude shelter used as a dwelling."], "tear off": ["To pull away with force."], "arsehole": ["A strongly disliked person who behaves disgustingly, underhandedly, or nastily, etc.", "An insulting exclamation directed at a vile, stupid or a worthless person.", "The lower opening of the digestive tract, through which feces pass."], "Democratic Republic of Timor-Leste": ["A republic in Southeast Asia whose capital is Dili."], "Bandar Seri Begawan": ["The capital of the Sultanate of Brunei."], "Syrian Arab Republic": ["A country in the Middle East, with capital Damascus."], "Federated States of Micronesia": ["A country in Oceania."], "water strider": ["(Gerris Lacustris) A insect of the family Gerridae."], "Devanagari": ["An abugida script used to write several Indian languages."], "Himalayas": ["A mountain range in Asia, separating the Indian subcontinent from the Tibetan Plateau."], "Karnataka": ["One of the four southern states of India. Its capital city is Bangalore."], "Kerala": ["A state on the Malabar Coast of southwestern India. Its capital city is \\tThiruvananthapuram."], "Andhra Pradesh": ["A state in southern India. Its capital city is Hyderabad."], "Arunachal Pradesh": ["A disputed state currently administered by India and claimed by China."], "Himachal Pradesh": ["A state in the north-west of India. Its capital and largest city is Shimla."], "Perso-Arabic": ["A writing system based on the Arabic alphabet, modified to match the demands of being a writing system for the Persian language."], "Arabo-Persian": ["A writing system based on the Arabic alphabet, modified to match the demands of being a writing system for the Persian language."], "Conakry": ["The capital city of Guinea and a port on the Atlantic Ocean."], "Latin alphabet": ["An alphabetic writing system with 26 letters used with some modifications, in most of the languages of the European Union, America, Subsaharian Africa and the Islands of the Pacific Ocean."], "Roman": ["An alphabetic writing system with 26 letters used with some modifications, in most of the languages of the European Union, America, Subsaharian Africa and the Islands of the Pacific Ocean.", "Of or from Roman empire.", "Of or from Rome."], "Roman alphabet": ["An alphabetic writing system with 26 letters used with some modifications, in most of the languages of the European Union, America, Subsaharian Africa and the Islands of the Pacific Ocean."], "Kadu Kuruba": ["A language spoken in the Indian states of Karnataka, Kerala and Tamil Nadu."], "Cyrillic alphabet": ["An alphabet used for several East and South Slavic languages and many other languages of the former Soviet Union, Asia and Eastern Europe."], "Arabic alphabet": ["A script used for writing languages such as Arabic, Persian, Urdu, and others."], "Tifinagh": ["An alphabetic script used by some Berbers to write their language."], "tick": ["A small arachnid which lives on and sucks the blood of other animals including man.", "A mark made to indicate agreement, correctness or acknowledgement.", "To mark with a tick or ticks."], "babe": ["A very young human being, from birth to a year old.", "A woman that is considered sexually attractive by a man, or many men."], "Hebrew alphabet": ["A set of 22 letters used for writing the Hebrew language."], "deceitful": ["Characterized by insincerity or deceit."], "scarcely": ["Only a very short time before."], "sweaty": ["Wet or covered with sweat, smelling of sweat."], "Krymchak": ["The language spoken in Crimea by the Krymchak people."], "crab spider": ["A spider of the Thomisidae family."], "gaseous": ["Relating to, or existing as, a gas."], "shear": ["To remove the fleece from a sheep etc. by clipping.", "To deform because of shearing forces."], "deform": ["To deform because of shearing forces.", "To assume a different shape or form.", "To mar the appearance or beauty of.", "To alter the shape of (something) by stress."], "Babylon": ["An ancient city in Mesopotamia (modern Al Hillah, Iraq), the ruins of which can be found in present-day Babil Province, about 80km south of Baghdad. (source: Wikipedia)"], "Mesopotamia": ["The region now occupied by modern Iraq, eastern Syria, southeastern Turkey, and Southwest Iran. (source: Wikipedia)"], "water spider": ["Argyroneta aquatica, a spider which lives entirely under water."], "Euphrates": ["The western of the two great rivers that define Mesopotamia and which flows from Anatolia through Iraq into the Persian Gulf."], "Tigris": ["The eastern member of the pair of great rivers that define Mesopotamia and which flows from Anatolia through Iraq into the Persian Gulf."], "unisexual": ["Higher organisms (animals or plants) possessing either male or female reproductive organs, but not both."], "uniparental inheritance": ["The inheritance of genes exclusively from one parent, e.g. chloroplast DNA is inherited either maternally (many angiosperms) or paternally (most gymnosperms). (source: FAO)"], "universality": ["Referring to the genetic code, the triplet codons are translated to the same amino acid, with minor exceptions, in virtually all species. (source:FAO)", "The property of being universal, common to all members of a class."], "codon": ["One of the groups of three consecutive nucleotides in mRNA, which represent the unit of genetic coding by specifying a particular amino acid during the synthesis of polypeptides in a cell. (source: FAO)"], "mRNA": ["The RNA molecule resulting from transcription of a protein-encoding gene, following any splicing. (source: FAO)"], "messenger RNA": ["The RNA molecule resulting from transcription of a protein-encoding gene, following any splicing. (source: FAO)"], "tRNA": ["Small RNA molecules that transfer amino acids to the ribosome during protein synthesis."], "transfer RNA": ["Small RNA molecules that transfer amino acids to the ribosome during protein synthesis."], "genetic code": ["The correspondence between the set of 64 possible nucleotide triplets and the amino acids and stop codons that they specify."], "stop codon": ["A set of three nucleotides for which there is no corresponding tRNA molecule to insert an amino acid into the polypeptide chain."], "aerobic": ["Active in the presence of free oxygen, e.g. aerobic bacteria that can live in the presence of oxygen. (source: FAO)"], "anaerobic": ["An environment or condition in which molecular oxygen is not available for chemical, physical or biological processes."], "cell culture": ["The in vitro growth of cells isolated from multi-cellular organisms. (source FAO)"], "biotransformation": ["The conversion of one chemical or material into another using a biological catalyst: a near synonym is biocatalysis, and hence the catalyst used is called a biocatalyst."], "melting temperature": ["The temperature at which a double-stranded DNA molecule denatures into separate single strands. (source:FAO)"], "double-stranded DNA": ["Two complementary strands of DNA annealed in the form of a double helix. Synonym: duplex DNA. (fuente: FAO)"], "dsDNA": ["Two complementary strands of DNA annealed in the form of a double helix. Synonym: duplex DNA. (fuente: FAO)"], "double helix": ["The coiling of the two strands of the double-stranded DNA molecule, resembling a spiral staircase in which the base pairs form the steps and the sugar-phosphate backbones form the rails on each side."], "overheat": ["To get excessively hot."], "debasement": ["Estimation of the value of something or someone inferior to its real value.", "The act of abasing."], "keen": ["Full of or characterized by enthusiasm."], "tachycardia": ["Accelerated beating of the heart, (greater than 100 beats per minute)."], "indecent": ["Not adhering to the high moral standards expected of a gentleman.", "Contrary to decency."], "only to": ["Having only as an intention to."], "Cree": ["A group of closely-related Algonquian languages spoken by approximately 50,000 speakers across Canada, from Alberta to Labrador."], "Greek alphabet": ["An alphabet that has been used to write the Greek language since about the 9th century BC."], "reheat": ["To heat again something that has cooled down."], "utility model": ["Patents or certificate granted in the mechanical field in many developing countries that differ from inventions because they require a lower threshold of technological progress (inventive step) and are granted for a shorter term of protection. (source: OAS)"], "well-known mark": ["A highly reputed mark that receives special protection due to its reputation that extends beyond a specific market, sector or country. (Source: OAS)"], "conciliation": ["An alternative dispute resolution mechanism in which a neutral person meets with the the parties to a dispute and explores how the dispute might be resolved. (source: OAS)"], "party to the dispute": ["Complaining Party or the Party complained against."], "alternative dispute resolution": ["A procedure for settling a dispute by means other than litigation, such as arbitration, mediation, or mini-trial."], "mediation": ["A method of non-binding dispute resolution involving a neutral third party who tries to help the disputing parties reach a mutually agreeable solution."], "ethnic group": ["A population of human beings whose members identify with each other, either on the basis of a presumed common genealogy or ancestry, or recognition by others as a distinct group, or by common cultural, linguistic, religious, or territorial traits."], "Magyar": ["An ethnic group primarily associated with Hungary."], "origanum": ["Genus of about 20 species of aromatic herbs in the family Lamiaceae."], "diplodocus": ["A genus of diplodocid sauropod dinosaur of North America."], "dinosaur": ["A vertebrate animal that dominated terrestrial ecosystems for over 160 million years, first appearing approximately 230 million years ago. (source: Wikipedia)"], "triceratops": ["A herbivorous genus of ceratopsid dinosaur that lived during the Late Cretaceous Period, around 68 to 65 million years ago in North America."], "inflection point": ["Mathematics: Point where a graph of a function changes either from a right hand bend to a left hand bend or vice versa."], "inflexion": ["Mathematics: Point where a graph of a function changes either from a right hand bend to a left hand bend or vice versa."], "velociraptor": ["A genus of dromaeosaurid theropod dinosaur that existed approximately 83 to 70 million years ago during the later part of the Cretaceous Period."], "stegosaurus": ["An herbivorous dinosaur who lived in North America and Europe during the Late Jurassic period."], "garden spider": ["(Araneus diadematus) A very common and well-known orb-weaver spider in Western Europe."], "Mexican redknee tarantula": ["(Brachypelma smithi) A species of burrowing tarantula native to Mexico."], "power": ["Physics: ratio of the performed work to the time needed for it; the rate of doing work, measured in watts.", "capability of doing or accomplishing something.", "Muscular capacity to modify the speed of an external physical object, to deform it or to oppose another force."], "scorpion": ["An arthropod with eight legs, belonging to the order Scorpiones in the class Arachnida."], "conclude": ["To end something, to bring something to a conclusion.", "To draw a conclusion, to infer one thing from another."], "demolish": ["To tear down completely.", "To tear down, to destroy a building."], "polling station": ["Place where those entitled to vote in general elections may go to vote."], "tax collection": ["The collection of unpaid taxes.", "Taking of the tax by the state."], "file": ["A series of persons or objects placed in a line, one behind the other, usually at regular intervals.", "To record (a computer file) on a computer storage medium.", "A hand tool used to shape material by abrasion.", "To place in an archive in a logical place and order.", "A collection of papers collated and archived together.", "An aggregation of data on a storage device, identified by a name.", "To commit official papers to some office.", "(Chess) One of the eight vertical lines of squares on a chessboard.", "To shape a material with a file."], "wood frog": ["(Lithobates sylvaticus) A frog of the family Ranidae."], "cancellation": ["The act of cancelling; calling off some arrangement."], "cancel": ["To remove a common factor from both the numerator and denominator of a fraction, or from both sides of an equation.", "To make something legally invalid or void.", "To draw a line or something else through something.", "To decide that a planned event will not take place."], "ground fault circuit interrupter": ["An electrical wiring device that disconnects a circuit whenever it detects that the electric current is not balanced between the energized conductor and the return neutral conductor."], "eyelash": ["One of the hairs that grows on the eyelid, around the eyes."], "probable": ["Likely to be true.", "Having a good chance to happen."], "improbable": ["Hard to believe (a story, a tale).", "Not likely to happen; not to be reasonably expected."], "cerebral tissue": ["Aggregate of cells in the brain similar to each other and covering a specific function."], "lovechild": ["A child born to parents who aren't married to one another."], "pulmonary tuberculosis": ["A common and deadly infectious disease that is caused by mycobacteria, primarily Mycobacterium tuberculosis."], "grab": ["To seize and keep prisoner.", "To take hold of, especially in the hands, so as to seize or restrain or stop the motion of.", "To capture the attention or imagination of."], "all-party": ["In reference to a deployment of opinion, not coinciding with any particular political group and involving people from different sides."], "crosswise": ["Across something in a perpendicular or oblique way.", "In a transverse manner."], "cultivate": ["To grow plants."], "Ouagadougou": ["The capital of Burkina Faso."], "Porto Novo": ["The capital of Benin."], "Luanda": ["The capital and largest city of Angola."], "Bangui": ["Capital of the Central African Republic."], "Pyongyang": ["The capital of North Korea."], "Seoul": ["The capital of and largest city in South Korea."], "accompany": ["To go or travel in the company of someone.", "To perform an accompanying part or parts in a composition.", "To be present or associated with an event or entity (e.g. a dish or a disease)."], "enlarge": ["To make larger."], "snail": ["(Gastropoda) Ventral footed mollusk, including land snails, terrestrial pulmonate gastropod mollusks."], "expand": ["To change (something) from a smaller form to a larger one.", "To extend in one or more directions."], "widen": ["To make wide or wider.", "To become wide or wider."], "dynasty": ["A familiar descendance, for example, a Royal House."], "cooperate": ["To work together, especially for a common purpose or benefit."], "collaborate": ["To work together, especially for a common purpose or benefit."], "overwhelm": ["To subdue by superior force."], "ugly": ["Not good looking.", "Morally reprehensible."], "tribe": ["Group of people linked by the same linguistic and cultural traditions that usually live far from urban areas and practice their own legal rules and have their own political system."], "grim": ["Seeming threatening, haunting, fierce.", "Making despondent or depressive."], "cathode ray tube": ["Electron tube which can display\\ttelevision pictures"], "ciliary": ["One of the hairs that grows on the eyelid, around the eyes."], "galaxy cluster": ["A group of galaxies that are gravitationally-bound."], "logographic": ["Related to logographs."], "logograph": ["A single grapheme which represents a word or a morpheme (a meaningful unit of language)."], "logogram": ["A single grapheme which represents a word or a morpheme (a meaningful unit of language)."], "hieroglyph": ["A character from a logographic or partly logographic writing system."], "hieroglyphics": ["A writing system used by the Ancient Egyptians, that contained a combination of logographic and alphabetic elements."], "egyptian hieroglyphs": ["A writing system used by the Ancient Egyptians, that contained a combination of logographic and alphabetic elements."], "chameleon": ["(Chamaeleonidae)A squamate that belong to one of the best-known lizard families."], "Maseru": ["The capital city of Lesoto."], "Pretoria": ["The administrative capital of South Africa."], "Cape Town": ["The legislative capital of South Africa."], "Bloemfontein": ["The Judicial Capital of South Africa."], "Harare": ["The capital and largest city in Zimbabwe."], "Southern France": ["Geographical area consisting of the regions of France that border the Atlantic Ocean south of the Gironde, Spain, the Mediterranean Sea, Italy, and Switzerland south of the Jura."], "Sahidic": ["The Coptic dialect in which most known Coptic texts are written."], "Thebaic": ["The Coptic dialect in which most known Coptic texts are written."], "flowered": ["Decorated with a floral pattern."], "Jersey": ["One of the Channel Islands, located off the coast of Normandy and a dependency of the British crown since 1066. It is not, however, formally a part of the U.K."], "Bailiwick of Jersey": ["One of the Channel Islands, located off the coast of Normandy and a dependency of the British crown since 1066. It is not, however, formally a part of the U.K."], "Netherlands Antilles": ["Two island groups in the Caribbean that constituted until October 2010 an autonomous country within the Kingdom of the Netherlands. The capital was Willemstad on the island of Cura\u00e7ao."], "Pitcairn Islands": ["A group of four islands in the South Pacific that form a British overseas territory. Only Pitcairn Island itself is inhabited."], "Pitcairn, Henderson, Ducie, and Oeno Islands": ["A group of four islands in the South Pacific that form a British overseas territory. Only Pitcairn Island itself is inhabited."], "fa\u00e7ade": ["The face of a building."], "Republic of Zambia": ["A country in southern Africa. Its capital is Lusaka."], "Republic of Zimbabwe": ["A country in Southern Africa. Its capital city is Harare."], "Cura\u00e7ao": ["An island in the southern part of the Caribbean Sea off the north coast of Venezuela (12\u00b0 11\u2032 10\u2033 N, 68\u00b0 59\u2032 22\u2033 W), which is part of the Kingdom of the Netherlands."], "abstract art": ["The Art that does not depict objects in the natural world, but instead uses shapes and colours in a non-representational or subjective way."], "yell": ["To speak with a loud, excited voice.", "To utter a sudden and loud outcry."], "gloomy": ["A bit sad.", "Making despondent or depressive.", "Having the tendency to judge things by their most unfavorable or negative qualities."], "Wallis and Futuna": ["Two separate groups of islands in the South Pacific forming a French overseas collectivity (collectivit\u00e9 d'outre-mer). The capital is Mata-Utu, on Uv\u00e9a, one of the Futuna Islands."], "Territory of the Wallis and Futuna Islands": ["Two separate groups of islands in the South Pacific forming a French overseas collectivity (collectivit\u00e9 d'outre-mer). The capital is Mata-Utu, on Uv\u00e9a, one of the Futuna Islands."], "Santo Domingo": ["First city founded by Europeans in America, capital city of the Dominican Republic."], "Turks and Caicos Islands": ["Two groups of islands in the Caribbean located north of Haiti and east of Cuba that are a British Overseas Territory. The capital is Cockburn Town, located on Grand Turk Island."], "Tokelau": ["Three coral atolls in the South Pacific that are a self-administering territory of New Zealand."], "\u00c9vora": ["A Portuguese city in Alentejo, capital of the District of \u00c9vora.", "District of Portugal, located in the south."], "XDR TB": ["A subtype of multiple-drug resistant tuberculosis."], "multiple-drug resistant tuberculosis": ["A subtype of multiple-drug resistant tuberculosis."], "enact": ["To issue and approve, by a public authority, an act that has legal value."], "varix": ["A permanently enlarged vein due to genetic factors or alterations of the venous circulation."], "upazila": ["The lowest level of administrative government in Bangladesh, just under District divisions."], "Orissa": ["A state situated on the east coast of India."], "Oriya script": ["A script used to write the Oriya language and several other Indian languages, for example, Sanskrit."], "dressing gown": ["A garment open at the front worn before dressing or while lounging."], "cartoon": ["Humorous or satirical cartoon or drawing", "A film created from a sequence of several drawings giving the illusion of movement."], "python": ["(Pythonidae) The common name for a group of non-venomous constricting snakes."], "vice": ["A bad habit."], "fish finger": ["Breaded oblong pieces of fish which are usually offered as frozen food."], "fishstick": ["Breaded oblong pieces of fish which are usually offered as frozen food."], "United Mexican States": ["A country in North America, to the south of the United States and to the north of Guatemala and Belize."], "Sultanate of Oman": ["A country in the Middle East, in the south-east corner of the Arabian peninsula, with capital Muscat."], "ISO 3166-2:US": ["The subset of ISO 3166-2 which applies to the United States of America."], "Islamic Republic of Pakistan": ["A country in South Asia with capital Islamabad."], "Puerto Rico": ["An unincorporated territory of the United States, located in the Caribbean east of the Dominican Republic and consisting of the island of Puerto Rico and several smaller islands. The capital is San Juan."], "District of Columbia": ["The federal district coextensive with the city of Washington."], "Northern Mariana Islands": ["A commonwealth in political union with the United States of America at a strategic location in the western Pacific Ocean."], "Heiligendamm": ["A German seaside resort on the Baltic Sea coast of Mecklenburg-Vorpommern."], "demonstrator": ["Someone who takes part in a demonstration."], "double bass": ["The largest and lowest pitched bowed string instrument used in the modern symphony orchestra."], "contrabass": ["The largest and lowest pitched bowed string instrument used in the modern symphony orchestra."], "ISO 3166-2:DE": ["ISO 3166-2:DE"], "Bremen": ["The Free Hanseatic City of Bremen is the smallest of Germany's 16 Federal States"], "Hamburg": ["The second largest city in Germany and a city state of Germany."], "Stockholm": ["The capital and largest city of Sweden."], "Rhineland-Palatinate": ["A Federal state of Germany. Its capital is Mainz."], "Schleswig-Holstein": ["A Federal state of Germany. The capital is Kiel."], "Saarland": ["A Federal state of Germany. The capital is Saarbr\u00fccken."], "Thuringia": ["A Federal state of Germany. The capital is Erfurt."], "United States Virgin Islands": ["A group of islands in the Caribbean that are an insular area of the United States."], "United States Minor Outlying Islands": ["Nine insular United States possessions, Palmyra Atoll is the only incorporated territory among them."], "the Commonwealth of the Northern Mariana Islands": ["A commonwealth in political union with the United States of America at a strategic location in the western Pacific Ocean."], "Lombard Spoken": ["Dialects of the Lombard language."], "ISO 3166-2:AT": ["ISO 3166-2:AT"], "ISO 3166-2:NL": ["ISO 3166-2:NL"], "Limburg": ["A province of the Netherlands."], "Friesland": ["A province of the Netherlands."], "Drenthe": ["A province of the Netherlands."], "Flevoland": ["A province of the Netherlands."], "Gelderland": ["A province of the Netherlands."], "Groningen": ["A province of the Netherlands."], "Noord Brabant": ["A province of the Netherlands."], "Zeeland": ["A province of the Netherlands."], "Utrecht": ["A province of the Netherlands."], "Overijssel": ["A province of the Netherlands."], "Styria": ["The second biggest federal state of Austria."], "Carinthia": ["The southernmost federal state of Austria."], "Lord Voldemort": ["The archvillian of the Harry Potter series by JK Rowling, and nemesis of Harry Potter. His aim is to achieve unmatched power and immortality."], "drug-addicted": ["Addicted to drugs."], "organ donation": ["The act of making available organs or tissues from a recently deceased person or a living donor in order to transplant them into another person."], "donor organ": ["Organ which has been taken from a living donor or dead person with prior consent and will be or has been transplanted into another person."], "organ donor": ["Person who agrees to donate organs either alive or after death."], "Ain": ["A department named after the Ain River on the eastern edge of France in the region of Rh\u00f4ne-Alpes."], "ISO 3166-2:FR": ["ISO 3166-2:FR"], "Aisne": ["A department in the northern part of France named after the Aisne River."], "Allier": ["A department in south-central France named after the Allier River."], "Alpes-de-Haute-Provence": ["A French department in the south of France, it was formerly part of the province of Provence."], "Hautes-Alpes": ["A department in southeastern France named after the Alps mountain range."], "Alpes-Maritimes": ["A department in the extreme southeast corner of France."], "Ard\u00e8che": ["A department in south-central France named after the Ard\u00e8che River."], "Ardennes": ["A department in the northeast of France named after the Ardennes area."], "Ari\u00e8ge": ["A department in southwestern France named after the Ari\u00e8ge River."], "Aube": ["A department in the northeastern part of France named after the Aube River."], "Aude": ["A department in south-central France named after the Aude River."], "Aveyron": ["A department in southern France named after the Aveyron River."], "Bouches-du-Rh\u00f4ne": ["A department in the south of France named after the mouth of the Rh\u00f4ne River."], "Calvados": ["The French department of Calvados forms part of the region of Basse-Normandie in Normandy. It takes its name from a cluster of rocks off the coast."], "Cantal": ["A department in south-central France."], "Charente": ["A department in the region of Poitou-Charentes, in central France, named after the Charente River.", "A river in western France, flowing into the Atlantic Ocean. It is 360 km long."], "Charente-Maritime": ["A department on the west coast of France named after the Charente River."], "Cher": ["A department located in the centre of France. It is named after the Cher River."], "Corr\u00e8ze": ["A department in the central part of France, named after the Corr\u00e8ze River."], "C\u00f4te-d'Or": ["A department in the eastern part of France."], "C\u00f4tes-d'Armor": ["A department in the north of Brittany, in northwestern France."], "Creuse": ["A department in central France named after the Creuse River."], "Dordogne": ["A department in central France named after the Dordogne River."], "Doubs": ["A department in eastern France named after the Doubs River."], "Dr\u00f4me": ["A department in southeastern France named after the Dr\u00f4me River."], "Eure": ["A department in the north of France named after the Eure River."], "Eure-et-Loir": ["A French department of the center region, named after the Eure and Loir rivers."], "Finist\u00e8re": ["One of the fifth d\u00e9partement of Brittany in France."], "Corse-du-Sud": ["A French department that is composed of the southern part of the island of Corsica."], "Haute-Corse": ["A French department that constitutes the northern part of the island of Corsica."], "Gard": ["A department located in southern France, named after the river Gardon."], "Haute-Garonne": ["A department in the southwest of France named after the Garonne river."], "Gironde": ["A department in the Aquitaine region situated in southwest France named after the Gironde Estuary.", "A navigable estuary, but often referred to as a river, in southwest France and is formed from the meeting of the rivers Dordogne and Garonne just below the centre of Bordeaux."], "H\u00e9rault": ["A department in the southwest of France named after the H\u00e9rault river."], "Ille-et-Vilaine": ["A department of France, located in the region of Bretagne in the northwest of France."], "Indre": ["A department in the center of France named after the Indre river.", "A river in central France, left tributary of the Loire."], "Indre-et-Loire": ["A departement in west-central France named after the Indre and the Loire rivers."], "Kingdom of Norway": ["A country in Northern Europe, and part of Scandinavia."], "Is\u00e8re": ["A department, in the Rh\u00f4ne-Alpes region in the east of France named after the Is\u00e8re river."], "Jura": ["A department in the east of France named after the Jura mountains.", "A canton in northwestern Switzerland."], "Loir-et-Cher": ["A department in north-central France named after the Loir and the Cher river."], "Loire": ["A department in the east-central part of France occupying the River Loire's upper reaches."], "Haute-Loire": ["A department in south-central France named after the Loire River."], "Loire-Atlantique": ["A department on the west coast of France named after the Loire River and the Atlantic Ocean."], "Loiret": ["A department in north-central France named after the Loiret river."], "Lot": ["A department in the southwest of France named after the Lot river"], "Lot-et-Garonne": ["A department in the southwest of France named after the Lot and Garonne rivers."], "Loz\u00e8re": ["A department in southeast France near the Massif Central."], "Manche": ["A French department in Normandy named after La Manche, the English Channel."], "Landes": ["A d\u00e9partement in southern France."], "Maine-et-Loire": ["A department in west-central France."], "Marne": ["A department in north-eastern France named after the Marne River"], "Haute-Marne": ["A department in the northeast of France named after the Marne river."], "Mayenne": ["A department in northwest France named after the Mayenne river."], "Meurthe-et-Moselle": ["A department in the northeast of France named after the Meurthe and Moselle rivers."], "Meuse": ["A department in northeast France, named after the Meuse River.", "A major European river, rising in France and flowing through Belgium and the Netherlands before draining into the North Sea. It has a total length of 925 km."], "Morbihan": ["A department in the northwest of France named after the Morbihan, a small enclosed sea in Bretagne."], "Moselle": ["A departement in the east of France named after the Moselle River."], "Ni\u00e8vre": ["A department in the center of France named after the Ni\u00e8vre river."], "Nord": ["A department in the far north of France."], "Oise": ["A department in the north of France named after the Oise river."], "Orne": ["A department in the northwest of France named after the Orne river."], "Pas-de-Calais": ["A department in northern France named after the Strait of Dover, which it borders."], "Puy-de-D\u00f4me": ["A department in the center of France named after the dormant volcano."], "Pyr\u00e9n\u00e9es-Atlantiques": ["A department in the southwest of France which takes its name from the Pyrenees mountains and the Atlantic Ocean."], "Hautes-Pyr\u00e9n\u00e9es": ["A department in southwestern France."], "Pyr\u00e9n\u00e9es-Orientales": ["A department of southern France adjacent to the northern Spanish frontier and the Mediterranean Sea."], "Bas-Rhin": ["A d\u00e9partement of France, named after the Rhin river."], "Haut-Rhin": ["A departement of France, named after the Rhine river."], "Rh\u00f4ne": ["A French department located in the central eastern region of Rh\u00f4ne-Alpes, named after the Rh\u00f4ne river."], "Haute-Sa\u00f4ne": ["A French department of the Franche-Comt\u00e9 r\u00e9gion, named after the Sa\u00f4ne river."], "Sa\u00f4ne-et-Loire": ["A French department, named after the Sa\u00f4ne and the Loire rivers."], "Sarthe": ["A French department, named after the Sarthe river."], "Savoie": ["A French department located in the Rh\u00f4ne-Alpes region in the French Alps."], "Haute-Savoie": ["A French department, named for its location in the Alps mountain range."], "Seine-Maritime": ["A French department in Normandy."], "Seine-et-Marne": ["A French department, named after the Seine and Marne rivers."], "Yvelines": ["A French department in the region of \u00cele-de-France."], "Deux-S\u00e8vres": ["A French department named after the S\u00e8vre Nantaise and the S\u00e8vre Niortaise, two rivers which have their sources in the department."], "Somme": ["A French department, named after the Somme River, located in the north of France."], "Tarn": ["A department in the south-west of France, named after the Tarn River."], "stent": ["A tiny tube used to hold open a diseased blood vessel."], "Tarn-et-Garonne": ["A department in the southwest of France."], "flywheel": ["A mechanical device with a significant moment of inertia used as a storage device for rotational energy."], "Corsica": ["The fourth largest island in the Mediterranean Sea (after Sicily, Sardinia, and Cyprus). It is located west of Italy, southeast of France, and north of the island of Sardinia."], "Var": ["A department of southeastern France."], "Vaucluse": ["A department in the southeast of France."], "Vend\u00e9e": ["A department in west central France named after the Vend\u00e9e river."], "Vienne": ["A departement of France, named after the Vienne river."], "Haute-Vienne": ["A French department named after the Vienne River."], "Vosges": ["A French department, named after the Vosges mountain range."], "Yonne": ["A French department named after the Yonne River."], "Territoire de Belfort": ["A department in the Franche-Comt\u00e9 region of eastern France."], "Essonne": ["A French department in the region of \u00cele-de-France named after the Essonne river."], "Hauts-de-Seine": ["A department in France."], "Seine-Saint-Denis": ["A French department located in the \u00cele-de-France region."], "Val-de-Marne": ["A French department, named after the Marne River."], "Val-d'Oise": ["A French department named after the Oise river."], "abolishment": ["The cancellation or suspension of something by a decision of an authority."], "New Caledonia": ["An overseas territory of France, made up of a main island (Grande Terre) and several smaller islands."], "Saint-Pierre and Miquelon": ["A group of small islands off the eastern coast of Canada near Newfoundland that form a French territorial collectivity."], "Gers": ["A department in the southwest of France named after the Gers river."], "ISO 3166-2:IT": ["ISO 3166-2:IT"], "Agrigento": ["A province in the autonomous island region of Sicily in Italy.", "City in the province of Agrigento, in the autonomous island region of Sicily in Italy."], "Chihuahua": ["The largest state in Mexico."], "chihuahua": ["The smallest breed of dog in the world and is named after the Chihuahua State in Mexico."], "ISO 3166-2:MX": ["ISO 3166-2:MX"], "North Holland": ["A province of the Netherlands."], "South Holland": ["A province of the Netherlands."], "entrust": ["To give the custody, care, use etc., to leave in the hands of.", "To confer a trust upon."], "Alessandria": ["An Italian province which forms the south-western part of the region of Piedmont.", "A city in Piedmont, Italy, and the capital of the Province of Alessandria."], "Aosta Valley": ["A mountainous region in north-western Italy."], "agile": ["Refers to the speed of operations within an organization and speed in responding to customers.", "Moving quickly and lightly."], "Ascoli Piceno": ["A province in the Marche region of Italy."], "L'Aquila": ["A mountainous province in the Abruzzo region of Italy."], "admire": ["To look at something with great approval, pleasure or wonder; to watch with admiration.", "To feel respect or admiration for."], "Banteay Mean Chey": ["One of the 20 Cambodian khet or provinces, located in the northwest and bordering Thailand."], "extention": ["The act of making bigger, broader."], "in advance": ["Period of time previous to the moment in which something is expected to happen.", "At an earlier or preceding time than a mentioned event."], "on the contrary": ["[Phrase implying that the following clause is contrary to prior belief].", "An adverb used especially after a negation or to give emphasis to what has just been said."], "Kracheh": ["One of the 20 Cambodian khet or provinces, located in the eastern part of the country."], "clue": ["Evidence that supports a hypothesis or helps to solve a problem."], "Krati\u00e9": ["One of the 20 Cambodian khet or provinces, located in the eastern part of the country."], "Arezzo": ["The easternmost province in the Tuscany region of Italy.", "An old city in central Italy, capital of the province of the same name, located in Tuscany."], "Avellino": ["A province in the Campania region of Italy."], "lay": ["To put one thing over another.", "To cause (as an end result, not a process) an object to be in a new place.", "To place down in a position of rest, or in a horizontal position."], "Bergamo": ["a province in the Lombardy region of Italy."], "Biella": ["A province of Italy located in Piedmont."], "Belluno": ["A province in the Veneto region of Italy."], "Ancona": ["A province in the Marche region of central Italy.", "A city and a seaport in the Marche, a region of central Italy."], "iguana": ["(Iguanidae)A lizard family."], "Rhine": ["A river with a length of 1.320 km that flows through 5 countries: Switzerland, Liechtenstein, Germany, France and the Netherlands"], "ISO 3166-2:KH": ["ISO 3166-2:KH"], "Battambang": ["One of the twenty Cambodian khet or provinces, located in the northwest and bordering on Thailand."], "Baat Dambang": ["One of the twenty Cambodian khet or provinces, located in the northwest and bordering on Thailand."], "Kampong Cham": ["One of the twenty Cambodian khet or provinces, located in the eastern half of the country."], "Kampong Chaam": ["One of the twenty Cambodian khet or provinces, located in the eastern half of the country."], "Kampong Chhnang": ["One of the twenty Cambodian khet or provinces, located in the center of the country."], "Kampong Speu": ["One of the twenty Cambodian khet or provinces, located in the south central part of the country."], "Kampong Spueu": ["One of the twenty Cambodian khet or provinces, located in the south central part of the country."], "Brindisi": ["A province in the Apulia region of Italy."], "Brescia": ["A Province in the region of Lombardy, Italy."], "Barletta-Andria-Trani": ["A province in Apulia, Italy, that will be started in 2009."], "Bolzano": ["An autonomous province of Italy."], "exhausting": ["That makes somebody exhausted."], "within a stone's throw": ["Very close."], "Pyrenees": ["A range in Victoria, Australia near the town of Avoca and a wine growing region."], "Kampong Thom": ["The second-largest of Cambodia's twenty khet or provinces, located in the central area of the country."], "Kampot": ["One of Cambodia's twenty khet or provinces, located in the south."], "alligator": ["(Alligatoridae) A reptile belonging to the order Crocodilia."], "Kandal": ["One of Cambodia's twenty khet or provinces, located in the south and encircling the national capital of Phnom Penh."], "Kandaal": ["One of Cambodia's twenty khet or provinces, located in the south and encircling the national capital of Phnom Penh."], "daring": ["Not knowing fear; fearless.", "Disposed to venture or take risks."], "subdivide": ["Divide into smaller and smaller pieces."], "subdivision": ["A division of some larger or more complex organization."], "in ascending order": ["Moving or going upward."], "axis": ["In architecture: imaginary line that passes through the centre of a building or its parts", "The second cervical vertebra of the spine."], "Alps": ["A mountain range in Europe which extends itself over the northern Italy, southwestern France, Switzerland, Liechtenstein, Austria, the southern Germany and Slovenia."], "Koh Kong": ["One of the twenty Cambodian khet or provinces, located in the southwest."], "Mondolkiri": ["One of the twenty Cambodian khet or provinces, located in the eastern part of the country bordering on Vietnam."], "Mondulkiri": ["One of the twenty Cambodian khet or provinces, located in the eastern part of the country bordering on Vietnam."], "Preah Vihear": ["One of the twenty Cambodian khet or provinces, located in the north and bordering on Thailand."], "Prey Veng": ["One of the twenty Cambodian khet or provinces, located in the south."], "Prey Veaeng": ["One of the twenty Cambodian khet or provinces, located in the south."], "Mason-Dixon line": ["At the time of the American Civil War the demarcation line between the Union and the Southern states."], "Pursat": ["One of the twenty Cambodian khet or provinces, located in the west and bordering on Thailand."], "Pousaat": ["One of the twenty Cambodian khet or provinces, located in the west and bordering on Thailand."], "Ratanakiri": ["One of Cambodia's twenty khet or provinces, located in the northeast and bordering Laos and Vietnam."], "R\u00f4t\u00e2n\u00f4kiri": ["One of Cambodia's twenty khet or provinces, located in the northeast and bordering Laos and Vietnam."], "Siem Reap": ["One of Cambodia's twenty khet or provinces, located in the northwestern part of the country and site of Angkor Wat."], "Stung Treng": ["One of Cambodia's twenty khet or provinces, located in the northwest and bordering on Laos."], "Stueng Traeng": ["One of Cambodia's twenty khet or provinces, located in the northwest and bordering on Laos."], "Cagliari": ["A dialect of the Campidanese Sardinian language spoken around the city of Cagliari.", "A province in the autonomous island region of Sardinia in Italy."], "Campobasso": ["A province in the Molise region of Italy."], "Caserta": ["A province in the Campania region of Italy."], "Chieti": ["A province in the Abruzzo region of Italy."], "Carbonia-Iglesias": ["A province in the autonomous region of Sardinia, Italy."], "Caltanissetta": ["A province in the southern part of Sicily, Italy."], "Como": ["A province in the north of the Lombardy region of Italy"], "Cremona": ["A province in the Lombardy region of Italy."], "Cosenza": ["A province in the Calabria region of Italy."], "Catania": ["A province in the autonomous island region of Sicily in Italy."], "Catanzaro": ["A province of the Calabria region, in Italy."], "Enna": ["A province in the autonomous island region of Sicily in Italy."], "Foggia": ["A province in the Apulia (Puglia) region of Italy."], "Fermo": ["The fifth province of the Marche Region, Italy."], "Forl\u00ec-Cesena": ["A province in the Emilia-Romagna region of Italy."], "Gorizia": ["A province in the autonomous Friuli-Venezia Giulia region of Italy."], "Isernia": ["A province in the Molise region of Italy."], "Crotone": ["A province in the Calabria region of Italy."], "Lecco": ["A province in the Lombardy region of Italy."], "Lecce": ["A province in the Apulia region of Italy."], "Lodi": ["A province in the Lombardy region of Italy."], "Latina": ["A province in the Lazio region of Italy"], "Medio Campidano": ["A province in the autonomous region of Sardinia, Italy."], "Macerata": ["A province in the Marche region of Italy."], "Mantua": ["A province in the Lombardy region of Italy."], "Svay Rieng": ["One of Cambodia's twenty khet or provinces, located in the country's southeast and bordering Vietnam."], "Svaay Rieng": ["One of Cambodia's twenty khet or provinces, located in the country's southeast and bordering Vietnam."], "Takeo": ["One of Cambodia's twenty khet or provinces, located in the south and bordering on Vietnam."], "Taakaev": ["One of Cambodia's twenty khet or provinces, located in the south and bordering on Vietnam."], "Oddar Meancheay": ["One of Cambodia's twenty khet or provinces, located in the northeast and bordering Thailand."], "Otdar Mean Chey": ["One of Cambodia's twenty khet or provinces, located in the northeast and bordering Thailand."], "Eiffel Tower": ["An iron tower beside the River Seine in Paris which was built on the occasion of the Exposition Universelle in 1889."], "Massa-Carrara": ["A province in the Tuscany region of Italy."], "Matera": ["A province in the Basilicata region of Italy."], "Monza and Brianza": ["A province of the Lombardy region in Italy."], "Champ de Mars": ["Large public green-space in Paris, located in the 7th arrondissement, between the Eiffel Tower to the northwest and the \u00c9cole Militaire to the southeast."], "accomplish": ["To bring to a succesful end; to gain with effort.", "To satisfy, carry out, bring to completion (an obligation, a requirement, etc.)."], "The Assumption": ["The taking up of the body and soul of the Virgin Mary when her earthly life had ended."], "assign": ["To give something to (a person), or assign a task to (a person).", "To select something or someone for a specific purpose.", "To assign to someone as his or her lot.", "To attribute or credit to.", "To legally transfer one's right to.", "To associate ownership of (something) to someone."], "aura": ["Distinctive but intangible quality that seems to surround someone or something."], "austerity": ["Reported to one architectonic style: that it avoids every excess, simple and sober."], "Nuoro": ["A province in the autonomous island region of Sardinia in Italy"], "ISO 3166-2:PT": ["The subset of ISO 3166-2 which applies to Portugal", "ISO 3166-2:PT"], "hummingbird": ["A small bird in the family Trochilidae."], "Aveiro": ["A Portuguese city in Beira Litoral, capital of the District of Aveiro.", "District of Portugal, located on the west coast."], "Gerbera": ["(Gerbera) Genus of ornamental plants from the sunflower family (Asteraceae)."], "aquatic bird": ["A bird which lives on or at water."], "ISO 3166-2:GE": ["The code for Georgia in ISO 3166-2.", "ISO 3166-2:GE"], "Ogliastra": ["A province in eastern Sardinia, Italy."], "Olbia-Tempio": ["A province in the autonomous region of Sardinia, Italy."], "Oristano": ["A province in the autonomous island region of Sardinia in Italy."], "Palermo": ["A province in the autonomous region of Sicily, Italy.", "A city in the autonomous region of Sicily, Italy."], "finch": ["(Fringilla coelebs) A songbird."], "Viseu": ["District of Portugal, located in the central inland."], "Adjara": ["An autonomous republic of Georgia, in the southwestern corner of the country, bordered by Turkey to the south and the eastern end of the Black Sea."], "Pescara": ["A province in the Abruzzo region of Italy.", "A city in central Italy, in the region of Abruzzo."], "Guria": ["A region in Georgia, in the western part of the country, bordered by the eastern end of the Black Sea."], "Imereti": ["A province in the western part of Georgia situated along the middle and upper reaches of the Rioni river."], "Kakheti": ["A region in Eastern Georgia bordered by the province of Tusheti and mountain-range of Greater Caucasus to the north, Azerbaijan to the east and the south, and the Georgian region of Kartli to the west."], "Pesaro and Urbino": ["A province in the Marche region of Italy."], "Pesaro e Urbino": ["A province in the Marche region of Italy."], "Samegrelo-Zemo Svaneti": ["A region in western Georgia which includes the historical Georgian provinces of Samegrelo (Mingrelia) and Zemo Svaneti (Upper Svaneti)."], "Racha-Lechkhumi and Kvemo Svaneti": ["A region in the northwest of Georgia which includes the historical provinces of Racha, Lechkhumi and Kvemo Svaneti (Lower Svaneti)."], "Kvemo Kartli": ["A historic province and current administrative region in southeastern Georgia."], "Mtskheta-Mtianeti": ["A region in eastern Georgia which includes the town and the District of Mtskheta together with the adjoining mountainous provinces."], "Shida Kartli": ["A region in Georgia, located on the north of Kartli, between the river Mtkvari and the mountains of Caucasus."], "Samtskhe-Javakheti": ["A region in southern Georgia, bordered by the Autonomous Republic of Adjara to the west and Armenia and Turkey to the South."], "Rabat": ["The capital of Morocco."], "North Brabant": ["A province of the Netherlands."], "archaic": ["Of very old age."], "melancholy": ["A longing for the past, often idealized."], "atavistic": ["Real or supposed evolutionary throwback."], "a very long time ago": ["Describes a period that has passed a long time ago."], "Tripoli": ["The capital of Libya."], "Pavia": ["A province in the Lombardy region of Italy."], "Potenza": ["A province in the Basilicata region of Italy."], "Reggio Calabria": ["A province in the Calabria region of Italy."], "Reggio Emilia": ["A province in the region of Emilia-Romagna in Italy."], "Ragusa": ["A province in the autonomous island region of Sicily in Italy."], "Rieti": ["A province in the Latium region of Italy."], "genuflection": ["An act of reverence consisting of falling onto (usually) one knee."], "Reggio di Calabria": ["A province in the Calabria region of Italy."], "kingfisher": ["(Alcedo atthis) Colourful fish eating bird."], "Lower Kartli": ["A historic province and current administrative region in southeastern Georgia."], "gourde": ["Currency of Haiti (HTG)."], "Haitian gourde": ["Currency of Haiti (HTG)."], "Sungor": ["A Nilo-Saharan language spoken in western Sudan and eastern Chad."], "Rimini": ["A province in the Emilia-Romagna region of Italy."], "Siena": ["A province in the Tuscany region of Italy."], "Sondrio": ["A province in the Lombardy region of Italy."], "La Spezia": ["A province in the Liguria region of Italy.", "The capital city of the province of La Spezia, Italy."], "Syracuse": ["A province in the autonomous island region of Sicily in Italy."], "Sassari": ["A province in the autonomous island region of Sardinia in Italy."], "Taranto": ["A province in the Apulia region of Italy.", "Italian city with about 200,000 inhabitants in the Apulia region of Italy."], "Teramo": ["A province in the Abruzzo region of Italy."], "Trento": ["An autonomous province in the autonomous Trentino-Alto Adige/S\u00fcdtirol region of Italy."], "Turin": ["A province in the Piedmont region of Italy.", "Large city in northern Italy, capital of the Piedmont region and of the province of Turin."], "Trapani": ["A province in the autonomous island region of Sicily in Italy."], "Terni": ["A province in the Umbria region of Italy"], "Trieste": ["A province in the autonomous Friuli-Venezia Giulia region of Italy.", "A city of Italy located on the Adriatic Sea at the eastern part of the Po valley."], "Treviso": ["A province in the Veneto region of Italy."], "Udine": ["A province in the autonomous Friuli-Venezia Giulia region of Italy."], "Verbano-Cusio-Ossola": ["A province in the Italian region of Piedmont."], "Walad Dulla": ["A dialect of the Assangori language.", "An ethnic group of Chad."], "Bognak-Asungorung": ["ISO 639-6 entity"], "Vicenza": ["A province in the Veneto region of northern Italy."], "Verona": ["A province in the Veneto region of Italy."], "Viterbo": ["A province in the Lazio region of Italy."], "Vibo Valentia": ["A province in the Calabria region in Italy."], "nightingale": ["(Luscinia megarhynchos) A songbird."], "Caucasus": ["A mountain system in Eurasia between the Black and the Caspian sea in the Caucasus region.", "A region in Eurasia bordered on the south by Iran, on the southwest by Turkey, on the west by the Black Sea, on the east by the Caspian Sea, and on the north by Russia."], "Caucasia": ["A region in Eurasia bordered on the south by Iran, on the southwest by Turkey, on the west by the Black Sea, on the east by the Caspian Sea, and on the north by Russia."], "Tetun": ["An Austronesian language spoken in East Timor."], "Karelian": ["A language spoken in Karelia, closely related to Finnish, with which it is not necessarily mutually intelligible."], "Ghotuo": ["A language spoken in the Edo State, Owan, and Akoko-Edo areas of Nigeria and surrounding areas."], "Alumu-Tesu": ["A language of Nigeria."], "Ari": ["A language of Papua New Guinea"], "Amal": ["A language of Papua New Guinea."], "Arifama-Miniafia": ["A language of Papua New Guinea"], "Ankave": ["A language of Papua New Guinea."], "Anamb\u00e9": ["A language of Brazil."], "Par\u00e1 Ar\u00e1ra": ["A language of Brazil"], "Eastern Abnaki": ["An extinct language of the USA."], "Abau": ["A language of Papua New Guinea."], "Solong": ["A language of Papua New Guinea."], "Mandobo Atas": ["A language of Indonesia (Papua)."], "Aariya": ["A language of India."], "Amarasi": ["A language of Indonesia (Nusa Tenggara)."], "Ab\u00e9": ["A Kwa language spoken by the Ab\u00e9 people primarily in the Department of Agboville in C\u00f4te d'Ivoire."], "Bankon": ["A language of Cameroon."], "Ambala Ayta": ["A language of Philippines."], "Camarines Norte Agta": ["A language of the Philippines."], "Western Abnaki": ["A language of Canada."], "Abai Sungai": ["A language of Malaysia (Sabah)."], "Abaga": ["A language of Papua New Guinea."], "Abidji": ["A language of C\u00f4te d'Ivoire."], "Abung": ["A language of Indonesia (Sumatra)."], "Abanyom": ["A language of Nigeria."], "Abua": ["A language of Nigeria."], "Abon": ["A language of Nigeria."], "Abenlen Ayta": ["A language of the Philippines."], "celebrate oneself": ["To celebrate or praise themselves (in a solemn manner)."], "Free Trade Agreement": ["Economic integration in which countries eliminate substantially all tariffs and non-tariff barriers among themselves."], "abdominal": ["Relating to or pertaining to the abdomen", "The muscles of the abdomen."], "abrupt": ["Happening quickly and with little or no warning."], "plinth": ["An architectural support or base (as for a column or statue)."], "accidental": ["Happening unexpectedly or by chance."], "accommodation": ["Provision of accommodation for rest or for residence in a room or rooms or in a dwelling place.", "Adjustment, especially that of the eye for various distances."], "headless": ["Without a head."], "Abron": ["A language of Ghana and C\u00f4te d'Ivoire."], "Ambonese Malay": ["A language of Indonesia (Maluku)."], "Ambulas": ["A language of Papua New Guinea."], "Abure": ["A language of C\u00f4te d'Ivoire."], "Pal": ["A language of Papua New Guinea."], "Inabaknon": ["A language of the Philippines."], "Aneme Wake": ["A language of Papua New Guinea"], "Abui": ["A language of Indonesia (Nusa Tenggara)"], "Reggio nell'Emilia": ["A province in the region of Emilia-Romagna in Italy."], "Achagua": ["A language of Colombia."], "\u00c1nc\u00e1": ["A language of Nigeria."], "Cubulco Achi'": ["A language of Guatemala."], "Gikyode": ["A language of Ghana."], "Aceh": ["A Malayo-Polynesian language spoken by the indigenous population of the Aceh province in Indonesia, in the northern part of the Sumatra Island."], "Akar-Bale": ["An extinct language of India."], "Mesopotamian Spoken Arabic": ["A language of Iraq, Iran and Syria."], "Eastern Acipa": ["A language of Nigeria."], "Ta'izzi-Adeni Spoken Arabic": ["A language of Yemen and Djibouti."], "Acro\u00e1": ["An extinct language of Brazil."], "Achterhoeks": ["A language of Netherlands."], "Achuar-Shiwiar": ["A language of Peru and Equador."], "Achumawi": ["A language of the Palaihnihan family spoken by the Pit River people in northeastern California, USA."], "Hijazi Spoken Arabic": ["A language of Saudi Arabia and Eritrea."], "Omani Spoken Arabic": ["A language of Oman, Kenya and Tanzania."], "Cypriot Spoken Arabic": ["A language of Cyprus."], "possessive": ["Desiring to possess and control a beloved being."], "Adabe": ["A language of East Timor."], "Dzodinka": ["A language of Cameroon and Nigeria."], "Adele": ["A language spoken in central eastern Ghana and central western Togo by about 21000 people."], "Dhofari Spoken Arabic": ["A language of Oman."], "Andegerebinha": ["A language of Australia"], "Adi": ["A language of India"], "Adioukrou": ["A language of C\u00f4te d'Ivoire."], "Galo Adi": ["A language of India."], "Adang": ["A language of Indonesia (Nusa Tenggara)."], "Abu": ["A language of Papua New Guinea."], "Adap": ["A language of Bhutan."], "Adonara": ["A language of Indonesia (Nusa Tenggara)."], "Adamorobe Sign Language": ["An indigenous sign language used in Adamorobe, an Akan village in eastern Ghana."], "Adynyamathanha": ["An Australian Aboriginal language spoken by the Adnyamathanha people from the Flinders Ranges in South Australia."], "Aduge": ["A Benue-Congo language spoken by the Aduge people in the Anambra State of Nigeria."], "Amundava": ["A language of Brazil."], "Amdo Tibetan": ["A Tibetan language spoken by the majority of the people of Amdo in North Eastern Tibet, and in the Chinese states of Qinghai and some parts of Sichuan (Aba) and Gansu (Ganlho)."], "Areba": ["A language of Australia."], "Tunisian Spoken Arabic": ["A language of Tunisia."], "Sa`idi Spoken Arabic": ["A language of Egypt."], "Argentine Sign Language": ["A sign language of Argentina."], "Haeke": ["A language of New Caledonia."], "Ambele": ["A language of Cameroon."], "Armenian Sign Language": ["A sign language of Armenia."], "Eastern Arrarnta": ["A language of Australia."], "Alsea": ["An extinct language of the USA."], "Ambakich": ["A language of Papua New Guinea"], "Amerax": ["A language of the USA."], "Amele": ["A language of the Trans-New Guinea branch of the Indo-Pacific family, spoken in Madang District (Madang Province, Papua New Guinea)."], "adaptation": ["Change of a product in order to make sure that it corresponds to the specific requirements of the customers.", "The quality of being adapted.", "The fit of an organism to its environment, which allows successful survival and reproduction."], "Aosta": ["The principal city of the bilingual Aosta Valley in the Italian Alps, 110km north-northwest of Turin."], "amethyst": ["A purple variety of quartz often used as an ornament."], "Gulf Spoken Arabic": ["A language of Iraq, Bahrain, Iran, Kuwait, Om\u00e1n, Quatar, Saudi Arabia and the United Arab Emirates."], "Putukwam": ["A Benue-Congo language spoken in the Cross River state of Nigeria."], "Afrihili": ["A constructed language designed in 1970 to be used as a lingua franca in all of Africa."], "Akrukay": ["A language of Papua New Guinea."], "Defaka": ["An Ijoid language spoken by the Defaka people, in the eastern part of the Niger Delta, Rivers State, Nigeria."], "Eloyi": ["A Benue-Congo language spoken by the Eloyi people, in the Benue, and Plateau Provinces in central Nigeria."], "Afro-Seminole Creole": ["A language of the USA and Mexico."], "Awutu": ["A language of Ghana."], "Obokuitai": ["A language of Indonesia (Papua)."], "Aguano": ["An extinct language of Peru."], "Legbo": ["A language of Nigeria."], "Agatu": ["A language of Nigeria."], "Agarabi": ["A language of Papua New Guinea."], "Angal": ["A language of Papua New Guinea."], "Arguni": ["A language of Indonesia (Papua)."], "Angor": ["A language of Papua New Guinea."], "Ngelima": ["A language of the Democratic Republic of the Congo."], "Argobba": ["A language of Ethiopia."], "Isarog Agta": ["A language of the Philippines."], "Fembe": ["A language of Papua New Guinea."], "Angaatiha": ["A language of Papua New Guinea."], "Agutaynen": ["A language of the Philippines."], "Tainae": ["A language of Papua New Guinea."], "Aghem": ["A language of Cameroon."], "Aguaruna": ["A Jivaroan language of Peru."], "Esimbi": ["A language of Cameroon."], "Central Cagayan Agta": ["A language of the Philippines."], "Awakateko": ["A language of Guatemala."], "Remontado Agta": ["A language of the Philippines."], "Kahua": ["A language of the Solomon Islands."], "Southern Alta": ["A language of the Philippines."], "Mt. Iriga Agta": ["A language of the Philippines."], "Ahanta": ["A language of Ghana."], "Axamb": ["A language of Vanuatu."], "Ahe": ["A language of Indonesia (Kalimantan)."], "Aghu": ["A language of Indonesia (Papua)."], "Tiagbamrin Aizi": ["A language of C\u00f4te d'Ivoire"], "Akha": ["A language of Myanmar, China, Laos, Thailand and Vietnam."], "Mediterranean island": ["An island in the Mediterranean Sea."], "Igo": ["A language of Togo."], "aggressor": ["Male person who has committed an act of aggression", "A person who attacks."], "Mobumrin Aizi": ["A language of C\u00f4te d'Ivoire."], "\u00c0h\u00e0n": ["A language of Nigeria."], "Aproumu Aizi": ["A language of C\u00f4te d'Ivoire."], "Ashe": ["A language of Nigeria."], "Ahtena": ["A language of the USA."], "multinational corporation": ["A business company operating in multiple countries."], "antioxidant": ["Molecules that slow or prevent the oxidation of other chemicals."], "Arosi": ["A language of the Solomon Islands."], "starling": ["(Sturnus vulgaris) A passerine bird in the family Sturnidae."], "complex": ["Hard to accomplish."], "publication": ["Act of publishing."], "prostitute": ["A woman who sells sexual services for money."], "elderly": ["A person that has been living for a relatively long period of time."], "humerus": ["The long bone in the arm that runs from the shoulder to the elbow."], "sacrum": ["Large and triangular bone at the base of the spine and at the upper and back part of the pelvic cavity, where it is inserted like a wedge between the two hip bones. Its upper part connects with the last lumbar vertebra, and bottom part with the coccyx (tailbone)."], "French horn": ["A wind instrument made of a wound copper tube with a wide sound bucket and valves."], "ISO 3166-2:BR": ["The subset of ISO 3166-2 which applies to Brazil."], "ISO 3166-2:CN": ["ISO 3166-2:CN"], "ISO 3166-2:NO": ["ISO 3166-2:NO"], "Miranda do Douro": ["A Romance language spoken by some 15,000 people around Miranda do Douro in northeastern Portugal."], "Ainbai": ["A language of Papua New Guinea."], "Alngith": ["A language of Australia"], "Amara": ["A language of Papua New Guinea."], "Agi": ["A language of Papua New Guinea."], "Antigua and Barbuda Creole English": ["A creole language of Antigua and Barbuda, Anguilla, Dominica, Montserrat and Saint Kitts and Nevis."], "Saint Kitts Creole English": ["A creole language of Antigua and Barbuda, Anguilla, Dominica, Montserrat and Saint Kitts and Nevis."], "Montserrat Creole English": ["A creole language of Antigua and Barbuda, Anguilla, Dominica, Montserrat and Saint Kitts and Nevis."], "Kokoy Creole English": ["A creole language of Antigua and Barbuda, Anguilla, Dominica, Montserrat and Saint Kitts and Nevis."], "Anguillan Creole English": ["A creole language of Antigua and Barbuda, Anguilla, Dominica, Montserrat and Saint Kitts and Nevis."], "Ai-Cham": ["A language spoken in Libo County, Qiannan Buyei and Miao Autonomous Prefecture, Guizhou Province, People's Republic of China.", "A language of China."], "Ake": ["A language of Nigeria."], "Aimele": ["A language of Papua New Guinea."], "Aimol": ["A language of India."], "Burumakok": ["A language of Indonesia (Papua)."], "Aimaq": ["A language of Afghanistan and Iran."], "Airoran": ["A language of Indonesia (Papua)."], "Nataoran Amis": ["A language of Taiwan."], "Arikem": ["An extinct language of Brazil."], "Aigon": ["A language of Papua New Guinea."], "Ali": ["A Gbaya language of the southwestern Central African Republic."], "South Levantine Spoken Arabic": ["A language of Jordan, Israel and Palestine."], "Aja": ["A Nilo-Saharan language of the Central Sudanic subgroup, spoken in the southern Sudanese province of Bahr el Ghazal and along the Sudanese border in the Central African Republic.", "A language of Sudan.", "A language of Benin and Togo."], "Aji\u00eb": ["A language of New Caledonia."], "Judeo-Tunisian Arabic": ["A language of Israel and Tunisia."], "Judeo-Moroccan Arabic": ["A language of Israel and Morocco."], "Amri": ["A language of India."], "Crimean Turkish": ["A Turkic language of Crimea and Uzbekistan."], "porthole": ["A circular window set in the hull of a ship."], "vitreous": ["Relating to or resembling glass or material in a glassy state."], "senator": ["Member of the senate."], "Sergipe": ["The smallest Brazilian state, located in the northeast, on the Atlantic Coast. Its capital is Aracaju."], "Aracaju": ["Capital of the Brazilian state of Sergipe."], "vivid": ["Full of life."], "Par\u00e1": ["One of the 26 Brazilian states, located in the north and bordering on Guyana and Suriname. Its capital is Bel\u00e9m."], "Bel\u00e9m": ["Capital of the Brazilian state of Par\u00e1."], "acidosis": ["A pathologic condition resulting from accumulation of acid or depletion of the alkaline reserve in the blood and body tissues, and characterized by an increase in hydrogen ion concentration."], "retrieve": ["To regain or get back something."], "rectify": ["To correct or amend something; set straight or right."], "Batak Angkola": ["A language of Indonesia (Sumatra)."], "Mpur": ["A language of Indonesia (Papua)."], "Ukpet-Ehom": ["A language of Nigeria."], "Ingarik\u00f3": ["A language of Guyana, Brazil and Venezuela."], "Akpa": ["A language of Nigeria."], "Anakalangu": ["A language of Indonesia (Nusa Tenggara)."], "Angal Heneng": ["A language of Papua New Guinea."], "Aiome": ["A language of Papua New Guinea."], "cockchafer soup": ["A soup made out of maybugs which are roasted without wings and legs and which was eaten in France and Germany until the middle of the 20th century."], "Pyrrhic victory": ["A victory which was achieved with great sacrifice and possibly amounts to a defeat."], "although": ["Despite the fact that.\\n[Expression to indicate that something occurs or is done in the opposite way than what is required or sensible.]", "In defiance of.", "In spite of being."], "Minas Gerais": ["The second-most populous Brazilian state, located in the southeast. The capital is Belo Horizonte."], "Belo Horizonte": ["Capital of the Brazilian state Minas Gerais."], "Roraima": ["The northernmost state of Brazil and also the least populated, bordering Venezuela and Guyana. Its capital is Boa Vista."], "Boa Vista": ["Capital of the Brazilian state of Roraima."], "Mato Grosso do Sul": ["One of the 26 Brazilian states, located in the south (and part of the Center-West economic reporting region) and bordering Paraguay and Bolivia to the west. Its capital is Campo Grande."], "Campo Grande": ["Capital of the Brazilian state of Mato Grosso do Sul."], "Aklanon": ["A language of the Philippines."], "Amikoana": ["A language of Brazil."], "Akurio": ["A language of Suriname."], "Siwu": ["A language of Ghana."], "Ak": ["A language of Papua New Guinea."], "Araki": ["An Oceanic language spoken in the Araki Island in Vanuatu."], "Akaselem": ["A language of Togo."], "Akolet": ["A language of Papua New Guinea."], "Akum": ["A language of Cameroon and Nigeria."], "Akwa": ["A language of Congo."], "Model-view-controller": ["An architectural pattern used in software engineering that decouples data access and business logic from data presentation and user interaction by introducing an intermediate component: the controller."], "software engineering": ["The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. (source: IEEE)"], "architectural pattern": ["A software pattern that offers well-established solutions to architectural problems in software engineering."], "user interface": ["The aggregate of means by which people interact with a particular machine, device, computer program or other complex tool."], "man-machine interaction": ["The study of interaction between people (users) and computers."], "human-computer interaction": ["The study of interaction between people (users) and computers."], "business logic": ["The functional algorithms which handle information exchange between a database and a user interface."], "database management system": ["Computer software designed for the purpose of managing databases."], "fault-tolerance": ["The property that enables a system (often computer-based) to continue operating properly in the event of the failure of some of its components."], "computer networking": ["The engineering discipline concerned with communication between computer systems or devices."], "query language": ["A computer language used to make queries into databases and information systems."], "SQL": ["A language in a computer designed for the retrieval and management of data in relational database management systems as well as database schema and access control management."], "Structured Query Language": ["A language in a computer designed for the retrieval and management of data in relational database management systems as well as database schema and access control management."], "workflow": ["The movement of information and/or tasks through a work process."], "bioinformatics": ["The use of techniques including applied mathematics, informatics, statistics, computer science, artificial intelligence, chemistry, and biochemistry to solve biological problems usually on the molecular level."], "computational biology": ["The use of techniques including applied mathematics, informatics, statistics, computer science, artificial intelligence, chemistry, and biochemistry to solve biological problems usually on the molecular level."], "anodyne": ["Capable of alleviating or eliminating pain."], "analgesic": ["Capable of alleviating or eliminating pain.", "Any medicine, such as aspirin, that reduces pain."], "analgetic": ["Capable of alleviating or eliminating pain."], "applied mathematics": ["A branch of mathematics that concerns itself with the mathematical techniques typically used in the application of mathematical knowledge to other domains."], "antiphlogistic": ["Counteracting inflammation.", "A medicine intended to reduce inflammation."], "anti-inflammatory": ["Counteracting inflammation.", "A medicine intended to reduce inflammation."], "antipyretic": ["Preventing or reducing fever."], "febrifuge": ["Preventing or reducing fever."], "febrifugal": ["Preventing or reducing fever."], "fever-reducing": ["Preventing or reducing fever."], "data mining": ["The nontrivial extraction of implicit, previously unknown, and potentially useful information from data."], "cross-validation": ["The statistical practice of partitioning a sample of data into subsets such that the analysis is initially performed on a single subset, while the other subset(s) are retained for subsequent use in confirming and validating the initial analysis."], "machine learning": ["A broad subfield of artificial intelligence concerned with the design and development of algorithms and techniques that allow computers to \"learn\"."], "set theory": ["The mathematical theory of sets, which represent collections of abstract objects."], "fuzzy set": ["An extension of classical set theory used in fuzzy logic."], "fuzzy logic": ["A logic dealing with reasoning that is approximate rather than precisely deduced from classical predicate logic."], "Yinglish": ["A language of the USA and the United Kingdom."], "Western Yiddish": ["A language of Germany."], "Eastern Yiddish": ["A language of Israel."], "quantitative research": ["The systematic scientific investigation of quantitative properties and phenomena and their relationships."], "negate": ["Say no to something."], "sommelier": ["Trained and knowledgeable wine professional."], "qualitative research": ["Research involving detailed, verbal descriptions of characteristics, cases, and settings."], "case study": ["A method for learning about a complex instance, based on a comprehensive understanding of that instance, obtained by extensive description and analysis of the instance, taken as a whole and in its context."], "reliability": ["The consistency in results of a measuring instrument."], "cartel": ["A group of organisations in an industry which agree on maintaining high prices and effectively killing competition."], "direct marketing": ["Marketing a product through direct channels of communication with the customer."], "focus group": ["A form of qualitative research in which a group of people are asked about their attitude towards a product, service, concept, advertisement, idea, or packaging."], "business intelligence": ["A business management term which refers to applications and technologies which are used to gather, provide access to, and analyze data and information about company operations."], "reverse engineering": ["The process of discovering the technological principles of a device or object or system through analysis of its structure, function and operation."], "Antikythera mechanism": ["An astronomical computer used to predict the positions of heavenly bodies in the sky, dated to about 150-100 BC."], "planetarium": ["A theatre built primarily for presenting educational and entertaining shows about astronomy and the night sky, or for training in celestial navigation."], "astrolabe": ["A historical astronomical instrument used by classical astronomers and astrologers."], "Alago": ["A language of Nigeria."], "Qawasqar": ["A language spoken by the Qawasqar people in the Chilean Patagonia."], "Alladian": ["A language of C\u00f4te d'Ivoire."], "Aleut": ["A language of the Eskimo\u2013Aleut language family spoken by the Aleut people living in the Aleutian Islands, Pribilof Islands, and Commander Islands."], "Alege": ["A language of Nigeria."], "Alawa": ["A language of Australia."], "Amaimon": ["A language of Papua New Guinea."], "Alangan": ["A language of Philippines."], "Amblong": ["A language of Vanuatu."], "hyperlink": ["A reference or navigation element in a document to another section of the same document, another document, or a specified section of another document, that automatically brings the referred information to the user when the navigation element is selected by the user."], "hypermedia": ["A generally non-linear medium of information produced by the combination of graphics, audio, video, plain text and hyperlinks."], "SVG": ["An XML markup language for describing two-dimensional vector graphics, both static and animated."], "Scalable Vector Graphics": ["An XML markup language for describing two-dimensional vector graphics, both static and animated."], "XML": ["A general-purpose markup language."], "Extensible Markup Language": ["A general-purpose markup language."], "vector graphics": ["The use of geometrical primitives such as points, lines, curves, and polygons, which are all based upon mathematical equations to represent images in computer graphics."], "computer graphics": ["A sub-field of computer science and is concerned with digitally synthesizing and manipulating visual content."], "rendering": ["The result of converting words and texts from one language to another.", "The process of generating the pixels of an image from a high-level description of the image's components.", "An explanation of something that is not immediately obvious."], "GPU": ["A dedicated graphics rendering device for a personal computer, workstation, or game console."], "Graphics Processing Unit": ["A dedicated graphics rendering device for a personal computer, workstation, or game console."], "video game console": ["An interactive entertainment computer or electronic device that manipulates the video display signal of a display device (a television, monitor, etc.) to display a game."], "Larike-Wakasihu": ["A language of Indonesia (Maluku)."], "Alune": ["A language of Indonesia (Maluku)."], "Algonquin": ["A language of Canada."], "'Are'are": ["A language spoken by the 'Are'are people in the Solomon Islands."], "Alatil": ["A language of Papua New Guinea."], "Alyawarr": ["A language of Australia."], "Kinaray-A": ["A language of Philippines."], "video game": ["A game that involves interaction with a user interface to generate visual feedback on a video device, most commonly a television or monitor."], "Black Peter": ["One of the many aids to Sinterklaas."], "Amanay\u00e9": ["A language of Brazil."], "Ambo": ["A language of Nigeria."], "Amahuaca": ["A language of Peru and Brazil"], "Amap\u00e1 Creole": ["A language of Brazil."], "Yanesha'": ["A language of Peru."], "Amarag": ["A language of Australia."], "Amis": ["A language of Taiwan."], "liquidation": ["The process by which a company (or part of a company) is brought to an end, and the assets and property of the company redistributed."], "creditor": ["A party (e.g. person, organization, company, or government) that has a claim to the properties or services of a second party."], "partridge": ["(Perdix perdix)A resident bird which occurs in the major part of Europe.", "A medium-sized non-migratory bird of the family Phasianidae."], "apogee": ["The point at which an object in orbit around the Earth is furthest away from the Earth."], "perigee": ["The point at which an object in orbit around the Earth comes closest to the Earth."], "Ambai": ["A language of Indonesia (Papua)."], "Amanab": ["A language of Papua New Guinea."], "Amo": ["A language of Nigeria."], "Alamblak": ["A language of Papua New Guinea"], "Amahai": ["A language of Indonesia (Maluku)."], "Amarakaeri": ["A language of Peru."], "Southern Amami-Oshima": ["A language of Japan."], "Amto": ["A language of Papua New Guinea"], "Ambelau": ["A language of Indonesia (Maluku)."], "Western Neo-Aramaic": ["A modern Aramaic language spoken today in three villages in the Anti-Lebanon mountains of western Syria."], "Anmatyerre": ["A language of Australia."], "Ami": ["A language of Australia."], "Atampaya": ["A language of Australia."], "bovine spongiform enecelophalopathy": ["Cattle disease caused by proteinaceous infectious particles."], "placebo": ["A preparation which is pharmacologically inert but which may have a medical effect based solely on the power of suggestion."], "biota": ["The total collection of organisms of a geographic region or a time period."], "anomaly": ["A deviation from the common rule, type, or form."], "Andaqui": ["An extinct language of Colombia."], "asteroid": ["A small, mostly rocky body orbiting the Sun."], "astrobiology": ["Study of the origin, distribution, and destiny of life in the universe."], "astronomical unit": ["The average Earth-Sun distance, equal to 149.5 million kilometers or 93 million miles."], "AU": ["The average Earth-Sun distance, equal to 149.5 million kilometers or 93 million miles."], "Andoa": ["An extinct language of Peru."], "Ansus": ["A language of Indonesia (Papua)."], "X\u00e2r\u00e2c\u00f9\u00f9": ["A language spoken in the X\u00e2r\u00e2c\u00f9\u00f9 custom area of New Caledonia."], "Animere": ["A language of Ghana."], "Nend": ["A language of Papua New Guinea."], "Anor": ["A language of Papua New Guinea."], "Anu": ["A language of Myanmar."], "Anal": ["A language of India and Myanmar."], "Obolo": ["A language of Nigeria."], "Andoque": ["A language of Colombia."], "sneeze": ["To expel air rapidly as a reflex, usually induced by an irritation in the nose."], "mad cow disease": ["Cattle disease caused by proteinaceous infectious particles."], "Celsius": ["A temperature scale that assigns the value 0\u00b0 C to the freezing point of water and the value of 100\u00b0 C to the boiling point of water at standard pressure."], "absolute zero": ["A theoretical system that neither emits nor absorbs energy. The Absolute zero temperature is known to be 0 K (\u2013273.15 \u00b0C)."], "crater": ["A hole or depression. Most are roughly circular or oval in outline."], "impact crater": ["A circular or oval depression on a surface caused by a collision of a smaller body (meteor) with the surface."], "Jarawa": ["A language of India.", "A language of Nigeria."], "Andh": ["A language of India."], "Anserma": ["An extinct language of Colombia."], "Antakarinya": ["A language of Australia."], "Denya": ["A language of Cameroon."], "Anaang": ["A language of Nigeria."], "Andra-Hus": ["A language of Papua New Guinea"], "Anyin": ["A language of C\u00f4te d'Ivoire and Ghana"], "Anem": ["A language of Papua New Guinea."], "Fahrenheit": ["A temperature scale with the freezing point of water assigned the value 32\u00b0 F and the boiling point of water 212\u00b0 F."], "active volcano": ["A volcano that is currently erupting, or has erupted during recorded history."], "crust": ["The outer layers of the Earth's structure, varying between 6 and 48 km in thickness."], "contour lines": ["Lines used on topographic maps to show the shape and elevation of the land. They connect points of equal elevation."], "isohypse": ["Lines used on topographic maps to show the shape and elevation of the land. They connect points of equal elevation."], "cryosphere": ["The ice and snow on the Earth's surface, such as glaciers; sea, lake, and river ice; snow; and permafrost."], "dormant volcano": ["An active volcano that is in repose but is expected to erupt in the future."], "extinct volcano": ["A volcano that is not expected to erupt again."], "hot spot": ["An area in the middle of a lithospheric plate where magma rises from the mantle and erupts at the Earth's surface."], "mulberry": ["Any tree of the genus Morus, native to warm temperate and subtropical regions of Asia, Africa and North America.", "Fruit of the mulberry tree (genus Morus)."], "lava": ["The magma, once it has erupted onto the Earth's surface."], "magma": ["Molten rock containing liquids, crystals, and dissolved gases that forms within the upper part of the Earth's mantle and crust."], "mudflow": ["A flowing mixture of water and debris (intermediate between a volcanic avalanche and a water flood) that forms on the slopes of a volcano."], "tephra": ["Solid material of all sizes explosively ejected from a volcano into the atmosphere. (source: USGS)"], "volcanic avalanche": ["A large, chaotic mass of soil, rock, and volcanic debris moving swiftly down the slopes of a volcano."], "snowline": ["The lowest elevation at which snow remains from year to year and does not melt during the summer."], "mantle": ["A zone in the Earth's interior between the crust and the core that is 2,900 kilometers (1,740 miles) thick."], "geosphere": ["The nonliving parts of the Earth: the lithosphere, the atmosphere, the cryosphere, and the hydrosphere."], "prevailing winds": ["The direction from which winds most frequently blow at a specific geographic location."], "seismograph": ["A scientific instrument that detects and records vibrations (seismic waves) produced by earthquakes."], "windward": ["The side of a land mass facing the direction from which the wind is blowing."], "asteroid belt": ["A region of space lying between Mars (1.5 AU) and Jupiter (5.2 AU), where the great majority of the asteroids are found."], "geocentric": ["Having the Earth at the center."], "heliocentric": ["Having the Sun at the center."], "magnification": ["The effect of an optical system on the apparent angular size of an object."], "reflecting telescope": ["Telescope that uses mirrors to magnify and focus an image onto an eyepiece."], "refraction": ["The bending of light as it passes from one medium to another."], "refracting telescope": ["Telescope that uses lenses to magnify and focus an image onto an eyepiece."], "rotation": ["A transformation which linearly changes the angle between the vector to a point and one of the axes, without changing the distance of the point from the origin."], "sensitivity": ["The capacity to respond to stimulation."], "spacecraft": ["A vehicle that can travel in outer space."], "planetary orbit": ["The path in space followed by a planet."], "brightness": ["The amount of light coming from an object."], "celestial body": ["A solid object found in space."], "cyclic": ["Moving or recurring in cycles or periods."], "photometry": ["The measurement of light."], "fuzzy variable": ["In fuzzy logic, a quantity that can take on linguistic rather than precise numerical values."], "nephoscope": ["An instrument for determining the direction and relative speed of cloud motion."], "barograph": ["A recording aneroid barometer."], "ceiling balloon": ["An instrument used by meteorologists to determine the height of the base of clouds above ground level during daylight hours."], "ceiling projector": ["An instrument used to measure the height of the base of clouds above the ground."], "ceilometer": ["A device that uses a laser or other light source to determine the height of a cloud base."], "dark adaptor goggles": ["Clear, red tinted, plastic goggles with an adjustable elastic strap to hold them in place that can be used for either adapting the eyes to the dark prior to an observation at night or to aid with the identification of clouds during bright sunshine or glare from snow."], "scaling": ["A transformation in which each coordinate is multipled by a factor."], "ellipse": ["A curved planar figure, the locus of all points which have the same total distance from two fixed points called the foci."], "hue": ["A pure color - one without added white or black."], "Vila Real": ["District of Portugal, located in the north."], "achromatic": ["Without color, as black, white, and shades of gray."], "rectangle": ["A plane figure with 4 sides and 4 right angles."], "main belt": ["A region of space lying between Mars (1.5 AU) and Jupiter (5.2 AU), where the great majority of the asteroids are found."], "snow line": ["The lowest elevation at which snow remains from year to year and does not melt during the summer."], "Copernican system": ["A heliocentric model of the universe."], "anti-aliasing": ["A form of interpolation used in graphics display technology when combining images."], "snowbank": ["A mound of snow accumulated by the wind."], "snowdrift": ["A mound of snow accumulated by the wind."], "snow bank": ["A mound of snow accumulated by the wind."], "snow drift": ["A mound of snow accumulated by the wind."], "llama": ["A South American camelid (Lama glama), widely used as a pack animal by the Incas."], "camelid": ["Members of the biological family Camelidae."], "squirrel": ["A small or medium-sized rodent of the family Sciuridae."], "hamster": ["A rodent belonging to the subfamily Cricetinae."], "domestic rabbit": ["Any of the several varieties of European rabbit that has been domesticated by humans."], "fancy rat": ["A domesticated breed of the Brown Rat (Rattus norvegicus) or, more rarely, of the Black Rat (R. rattus)"], "fancy mouse": ["Domesticated breeds of the common or house mouse (Mus musculus)."], "alpaca": ["A domesticated species of South American camelid developed from the wild alpacas."], "fennec": ["A small fox found in the Sahara Desert of North Africa."], "ferret": ["Small domesticated carnivore of the family Mustelidae (weasel)."], "prostate": ["The exocrine gland of the male mammalian reproductive system responsible for storing and secreting a clear, slightly alkaline fluid that constitutes 10-30% of the volume of the seminal fluid that, along with spermatozoa, constitutes semen."], "specious": ["Seemingly factual but actually misleading."], "British Virgin Islands": ["A British overseas territory, located in the Caribbean to the east of Puerto Rico."], "Abom": ["A language of Papua New Guinea."], "Pemon": ["A language of Venezuela, Brazil and Guyana"], "Andarum": ["A language of Papua New Guinea"], "Angal Enen": ["A language of Papua New Guinea."], "Bragat": ["A language of Papua New Guinea"], "Angoram": ["A language of Papua New Guinea"], "Arma": ["An extinct language of Colombia."], "Anindilyakwa": ["An indigenous Australian language isolate spoken by the Warnindhilyagwa people on Groote Eylandt in the Gulf of Carpentaria in northern Australia."], "Mufian": ["A language of Papua New Guinea"], "Arh\u00f6": ["A language of New Caledonia."], "\u00d6mie": ["A language of Papua New Guinea"], "Bumbita Arapesh": ["A language of Papua New Guinea"], "Aore": ["A language of Vanuatu."], "Taikat": ["A language of Indonesia (Papua)."], "A'tong": ["A language of India."], "Atorada": ["A language of Guyana and Brazil"], "Uab Meto": ["A language of Indonesia (Nusa Tenggara)."], "Sa'a": ["A language of the Solomon Islands."], "green tea": ["A type of tea where the leaves have undergone minimal oxidation in contrast to black tea."], "cockatoo": ["Any of the 21 bird species belonging to the family Cacatuidae."], "subtropical": ["Pertaining to or characteristic of the subtropics."], "canary": ["A small songbird (Serinus canaria) in the finch family originating from Madeira and the Canary Islands."], "subtropics": ["Zones of the Earth situated between the tropics and the temperate latitudes, approximately between latitudes 25\u00b0 and 40\u00b0 north and south."], "macaw": ["Large colorful parrots of the Americas, classified into six of the many Psittacidae genera: Ara, Anodorhynchus, Cyanopsitta, Primolius, Orthopsittaca, and Diopsittaca."], "wild duck": ["A duck (Anas platyrhynchos) which breeds throughout the temperate and sub-tropical areas of America, Europe, Asia, and Australia."], "mallard": ["A duck (Anas platyrhynchos) which breeds throughout the temperate and sub-tropical areas of America, Europe, Asia, and Australia."], "North Levantine Spoken Arabic": ["A language of Syria and Lebanon."], "Sudanese Spoken Arabic": ["A language of Sudan."], "Bukiyip": ["A language of Papua New Guinea"], "Ampanang": ["A language of Indonesia (Kalimantan)."], "Athpariya": ["A language of Nepal."], "Apiac\u00e1": ["A language of Brazil."], "Jicarilla Apache": ["A language of the USA."], "cockatiel": ["A diminutive cockatoo (Nymphicus hollandicus) endemic to Australia and prized as a household pet."], "Kiowa Apache": ["A language of the USA."], "Lipan Apache": ["A language of the USA."], "Mescalero-Chiricahua Apache": ["A language of the USA."], "Apinay\u00e9": ["A language of Brazil."], "lovebird": ["A very social and affectionate parrot of the genus Agapornis."], "Apalik": ["A language of Papua New Guinea."], "Apma": ["A language of Vanuatu."], "Arop-Lukep": ["A language of Papua New Guinea"], "Arop-Sissano": ["A language of Papua New Guinea."], "Apatani": ["A language of India."], "Apurin\u00e3": ["A language of Brazil."], "budgerigar": ["The only species in the Australian genus Melopsittacus (Melopsittacus undulatus), prized as a household pet."], "Western Apache": ["A language of the USA."], "Aputai": ["A language of Indonesia (Maluku)."], "Apala\u00ed": ["A Cariban language spoken in Brazil."], "Safeyoka": ["A language of Papua New Guinea"], "tropical": ["Pertaining to or characteristic of the tropics."], "lamiales": ["An order in the asterid group of dicotyledonous flowering plants."], "temperate zone": ["Those parts of the Earth's surface between the tropics and the polar regions."], "Arigidi": ["A language of Nigeria."], "Atohwaim": ["A language of Indonesia (Papua)."], "Northern Alta": ["A language of Philippines."], "Atakapa": ["An extinct language of the USA"], "Arh\u00e2": ["A language of New Caledonia."], "Arabana": ["A language of Australia."], "Western Arrarnta": ["A language of Australia."], "Arafundi": ["A language of Papua New Guinea"], "Arhuaco": ["A language of Colombia."], "Arapaso": ["A language of Brazil."], "Arikap\u00fa": ["A language of Brazil."], "Arabela": ["A language of Peru."], "Araona": ["An Tacanan language spoken by the Araona people in the headwaters of the Manupari river in northwest Bolivia."], "Arapaho": ["A language of the Algonquian family that is still spoken today by about 1,000 members of the Arapaho people.", "Tribe of Native Americans historically living on the eastern plains of Colorado and Wyoming."], "scrotal": ["Relating to the scrotum."], "Karo": ["A language of Brazil.", "A language of Ethiopia."], "Najdi Spoken Arabic": ["A language of Saudi Arabia, Iraq, Jordan and Syria."], "Arua": ["An extinct language of Brazil."], "Arawak": ["A language of Suriname, French Guiana, Guyana and Venezuela."], "Aru\u00e1": ["A language of Brazil."], "Asu": ["A language of Tanzania."], "Arikara": ["A language of the USA."], "Assiniboine": ["A language of Canada and the USA."], "Casuarina Coast Asmat": ["A language of Indonesia (Papua)."], "Asas": ["A language of Papua New Guinea."], "Australian Sign Language": ["A sign language used in Australia."], "Cishingini": ["A language of Nigeria."], "Abishira": ["An extinct language of Peru."], "Buruwai": ["A language of Indonesia (Papua)."], "Nsari": ["A language of Cameroon."], "Ashkun": ["A language of Afghanistan."], "Asilulu": ["A language of Indonesia (Maluku)."], "Xing\u00fa Asurin\u00ed": ["A language of Brazil"], "Dano": ["A language of Papua New Guinea."], "Algerian Sign Language": ["A sign language used in Algeria."], "Austrian Sign Language": ["A sign language used in Austria."], "Ipulo": ["A language of Cameroon."], "Asurin\u00ed": ["A language of Brazil."], "Australian Aborigines Sign Language": ["A sign language used by Australian Aborigines."], "Muratayak": ["A language of Papua New Guinea."], "Yaosakor Asmat": ["A language of Indonesia (Papua)."], "As": ["A language of Indonesia (Papua)."], "Pele-Ata": ["A language of Papua New Guinea."], "Zaiwa": ["A language of China and Myanmar."], "Atsahuaca": ["An extinct language of Peru."], "Ata Manobo": ["A language of Philippines."], "Atemble": ["A language of Papua New Guinea."], "Palembang": ["A language of Indonesia (Sumatra)."], "slap in the face": ["A blow on the cheek with the open hand."], "Atuence": ["A language of China."], "Ivbie North-Okpela-Arhe": ["A language of Nigeria."], "Atti\u00e9": ["A language of C\u00f4te d'Ivoire."], "Atikamekw": ["A variety of the Cree language spoken by the Atikamekw people of southwestern Quebec."], "bold": ["Text attribute specifing that the letters must be darker than the surrounding text.", "Strong in the face of fear.", "Having or characterized by courage.", "Formatted for emphasis by increasing the width of glyphs."], "Ati": ["A language of Philippines."], "Mt. Iraya Agta": ["A language of Philippines."], "slap": ["To strike on the cheek with the open hand.", "A blow, usually on the cheek, with an open hand."], "Ata": ["A language of the Philippines"], "Ashtiani": ["A language of Iran."], "Atong": ["A language of Cameroon."], "Pudtol Atta": ["A language of the Philippines."], "Aralle-Tabulahan": ["A language of Indonesia (Sulawesi)."], "Atruah\u00ed": ["A language of Brazil."], "Gros Ventre": ["A language of the USA."], "Pamplona Atta": ["A language of the Philippines."], "farewell letter": ["Letter in which someone says goodbye before leaving for a long time or forever."], "suicide note": ["Letter in which someone says goodbye before attempting or committing suicide."], "sea robin": ["Ordinary and commercial name for several species of fish, especially in the genus Prionotus. All of them produce a sound when taken out of the water (produced by deflating the swim bladder), they have a big pyramidal head and pectoral fins with legs to walk at seabed."], "halitosis": ["The condition of having stale or foul-smelling breath."], "femur": ["The bone that extends from the pelvis to the knee in the vertebrate tetrapods, including humans."], "Atsugewi": ["A language of the USA."], "Arutani": ["A language of Brazil and Venezuela"], "Aneityum": ["A language of Vanuatu"], "Arta": ["A language of the Philippines."], "Asumboa": ["A language of the Solomon Islands."], "Waorani": ["A language of Ecuador."], "Aushi": ["A language of Zambia and the Democratic Republic of the Congo"], "Anuki": ["A language of Papua New Guinea."], "Heyo": ["A language of Papua New Guinea."], "Aulua": ["A language of Vanuatu."], "oral malodor": ["The condition of having stale or foul-smelling breath."], "breath odor": ["The condition of having stale or foul-smelling breath."], "foul breath": ["The condition of having stale or foul-smelling breath."], "fetor oris": ["The condition of having stale or foul-smelling breath."], "bad breath": ["The condition of having stale or foul-smelling breath."], "thigh bone": ["The bone that extends from the pelvis to the knee in the vertebrate tetrapods, including humans."], "femoral": ["Of or pertaining to the thigh or femur."], "Molmo One": ["A language of Papua New Guinea."], "Makayam": ["A language of Papua New Guinea."], "Anus": ["A language of Indonesia (Papua)."], "Aruek": ["A language of Papua New Guinea."], "Austral": ["A language of French Polynesia."], "Mangareva": ["A language of French Polynesia."], "North Marquesan": ["The Marquesic, East Central Polynesian language spoken in the northern Marquesas Islands."], "motionless": ["Not moving."], "immobile": ["Not moving.", "Fixed; closely compressed."], "South Marquesan": ["A language of French Polynesia."], "apsis": ["Point of greatest or least distance of the elliptical orbit of an astronomical object from the center of mass of the system, e. g. perihelion or aphelion"], "Rapa": ["A language of French Polynesia."], "Tuamotuan": ["A Tahitic language spoken by about 6700 people in the Tuamotu Islands and an additional 2000 in Tahiti."], "Auye": ["A language of Indonesia (Papua)."], "Rapa Nui": ["An Eastern Polynesian language spoken by the Rapanui, the inhabitants of Easter Island.", "An inhabitant of Easter Island.", "Relating to Easter Island, its inhabitants or their culture."], "Awyi": ["A language of Indonesia (Papua)."], "Aur\u00e1": ["A language of Brazil."], "Awiyaana": ["A language of Papua New Guinea."], "Avau": ["A language of Papua New Guinea."], "Alviri-Vidari": ["A language of Iran."], "Avikam": ["A language of C\u00f4te d'Ivoire."], "Avatime": ["A language of Ghana."], "Galaxy": ["Spiral galaxy in which the Solar System is located."], "Agavotaguerra": ["A language of Brazil."], "Aushiri": ["An extinct language of Peru."], "Au": ["A language of Papua New Guinea."], "Av\u00e1-Canoeiro": ["A language of Brazil."], "Awa": ["A language of Papua New Guinea."], "Western Acipa": ["A language of Nigeria."], "Awet\u00ed": ["A language of Brazil."], "Awbono": ["A language of Indonesia (Papua)."], "Aekyom": ["A language of Papua New Guinea."], "Awabakal": ["An extinct Australian Aboriginal language that was spoken by the Awabakal people around Lake Macquarie and Newcastle in New South Wales."], "Arawum": ["A language of Papua New Guinea."], "Awak": ["A language of Nigeria."], "Awera": ["A language of Indonesia (Papua)."], "South Awyu": ["A language of Indonesia (Papua)."], "Arawet\u00e9": ["A language of Brazil."], "hairless": ["Without hair."], "Central Awyu": ["A language of Indonesia (Papua)."], "nutritionist": ["A health professional with special training in nutrition who can help with dietary choices."], "Mapping": ["A relationship in OmegaWiki as part of data lineage analysis."], "Jair Awyu": ["A language of Indonesia (Papua)."], "Awun": ["A language of Papua New Guinea."], "Awara": ["A language of Papua New Guinea."], "Edera Awyu": ["A language of Indonesia (Papua)."], "Abipon": ["An extinct Guaicuruan language formerly spoken in the eastern province of Chaco, Argentina."], "Mato Grosso Ar\u00e1ra": ["An extinct language of Brazil."], "Yaka": ["A Bantu language spoken in Central African Republic and Congo.", "A language of Congo."], "Xaragure": ["A language spoken in the X\u00e2r\u00e2c\u00f9\u00f9 custom area of New Caledonia, in particular at Thio-Mission (St-Philippo II), in parts of St-Michel, St-Pierre and St-Paul and in all the coastal villages between Thio and N\u2019goye as well as in Ouinan\u00e9, on the West coast of the main island."], "Awar": ["A language of Papua New Guinea."], "Ayizo Gbe": ["A language of Benin."], "Southern Aymara": ["A branch of the Aymaran language spoken in Peru between Lake Titicaca and the Pacific Ocean."], "Ayabadhu": ["A language of Australia."], "Ayere": ["A language of Nigeria."], "Ginyanga": ["A language of Togo."], "Leyigha": ["A language of Nigeria."], "Akuku": ["A language of Nigeria."], "Ayoreo": ["A language of Paraguay and Bolivia"], "North Mesopotamian Spoken Arabic": ["A language of Iraq, Syria and Turkey"], "Ayi": ["A language of Papua New Guinea.", "A language of China."], "Central Aymara": ["A branch of the Aymara language spoken in Bolivia, Argentina, Chile and Peru."], "Sorsogon Ayta": ["A language of the Philippines."], "Bataan Ayta": ["A language of the Philippines."], "Ayu": ["A language of Nigeria."], "Tayabas Ayta": ["An extinct language of the Philippines."], "Mai Brat": ["A language of Indonesia (Papua)."], "Solar System": ["The Sun and the all celestial objects and matter gravitationally bound to it."], "solar system": ["The Sun and the all celestial objects and matter gravitationally bound to it."], "skew": ["Geometry: spatial situation of two straight lines that are not both in the same plane"], "photogenic": ["Looking good or favorable on photographs."], "photochemical": ["Relating to the chemical effects of light."], "Taamim": ["One of the Governorates of Iraq located in north of the country."], "At-Ta'mim": ["One of the Governorates of Iraq located in north of the country."], "Khorasan": ["A region located in north eastern Iran."], "South Azerbaijan": ["A region in northwestern Iran and south of Armenia and the Republic of Azerbaijan."], "Southern Azerbaijan": ["A region in northwestern Iran and south of Armenia and the Republic of Azerbaijan."], "Kerman": ["A city in Iran in the center of Kerman province.", "One of the 30 provinces of Iran located in the south-east of the country."], "Shiraz": ["A city in southwest Iran."], "Fars": ["One of the 30 provinces of Iran, located in the south of the country."], "Pars": ["One of the 30 provinces of Iran, located in the south of the country."], "F\u0101rs": ["One of the 30 provinces of Iran, located in the south of the country."], "Afshar": ["A Turkic language spoken in parts of Afghanistan and Iran."], "East Azerbaijan": ["One of the 30 provinces of Iran, located in the northwest of the country."], "Georgian alphabet": ["The script currently used to write the Georgian language and other Kartvelian languages."], "Abzhywa": ["A dialect of the Abkhazian language spoken in the Cuacasus."], "Ge'ez": ["An abugida script which was originally developed to write Ge'ez, a Semitic language."], "Ge'ez alphabet": ["An abugida script which was originally developed to write Ge'ez, a Semitic language."], "San Pedro Amuzgos Amuzgo": ["A dialect of the Amuzgo language spoken in Southwest Oaxaca, Putla District and San Pedro Amuzgos of Mexico."], "Ipalapa Amuzgo": ["A language of Mexico."], "Awing": ["A language of Cameroon."], "Adzera": ["A language of Papua New Guinea."], "Faire Atta": ["A language of the Philippines."], "Highland Puebla Nahuatl": ["A language of Mexico."], "anamnesis": ["The case history of a medical patient as recalled or known by the patient.", "(Liturgy) The solemn commemoration of death and resurrection of Jesus Christ during the Eucharist."], "Babatana": ["A language of the Solomon Islands."], "Bainouk-Gunyu\u00f1o": ["A language of Guinea-Bissau."], "Badui": ["A language of Indonesia (Java and Bali)."], "Bar\u00e9": ["An extinct language of Venezuela."], "Nubaca": ["A language of Cameroon."], "Tuki": ["A language of Cameroon."], "Bahamas Creole English": ["A language of the Bahamas."], "Barakai": ["A language of Indonesia (Maluku)."], "Waimaha": ["A language of Colombia and Brazil"], "Bantawa": ["A language of Nepal."], "memento": ["An object that helps remembering something."], "Bada": ["A language of Nigeria.", "A language of Indonesia (Sulawesi)"], "Vengo": ["A language of Cameroon."], "Bambili-Bambui": ["A language of Cameroon"], "Bamun": ["A language of Cameroon."], "Batuley": ["A language of Indonesia (Maluku)."], "Tunen": ["A language of Cameroon."], "Baatonum": ["A language of Benin and Nigeria."], "Barai": ["A language of Papua New Guinea."], "Batak Toba": ["A language of Indonesia (Sumatra)."], "Bau": ["A language of Papua New Guinea."], "Bangba": ["A language of Democratic Republic of the Congo."], "Ottoman Turkish": ["A historic language of the Ottoman empire."], "Old Japanese": ["The oldest attested stage of the Japanese language, used until 794."], "Pfaelzisch": ["A language of Germany."], "tender": ["Special procedure to generate competing offers from different bidders.", "Given to sympathy or gentleness or sentimentality.", "Hurting.", "Young and immature.", "Easy to cut or chew."], "WiMAX": ["(Worldwide Interoperability for Microwave Access) A telecommunications protocol that provides fixed and fully mobile internet access."], "daybreak": ["The beginning of the day; the first appearance of daylight in the morning."], "dawn": ["A period of time at the beginning of the day shortly before sunrise during which the light gradually becomes stronger.", "The beginning of the day; the first appearance of daylight in the morning."], "nightfall": ["The beginning of the night; the approach of darkness."], "praying mantis": ["(Mantis religiosa) Insect of the order Mantodea originating in Southern Europe."], "European mantis": ["(Mantis religiosa) Insect of the order Mantodea originating in Southern Europe."], "daylight": ["The light, the brightness of day."], "night air": ["The air during nighttime."], "Baibai": ["A language of Papua New Guinea."], "Barama": ["A language of Gabon."], "Bugan": ["A language of China."], "Barombi": ["A language of Cameroon."], "night owl": ["A person who likes to stay up until late at night."], "Ghom\u00e1l\u00e1'": ["A language of Cameroon."], "Babanki": ["A language of Cameroon."], "Babango": ["A language of the Democratic Republic of the Congo."], "Uneapa": ["A language of Papua New Guinea."], "Northern Bobo Madar\u00e9": ["A language of Burkina Faso and Mali."], "West Central Banda": ["A language of Central African Republic and Sudan."], "Bamali": ["A language of Cameroon"], "Girawa": ["A language of Papua New Guinea"], "Bakpinka": ["A language of Nigeria."], "Ama": ["A language of Papua New Guinea."], "Kulung": ["A language of Nigeria.", "A language of Nepal and India."], "Karnai": ["A language of Papua New Guinea."], "Baba": ["A language of Cameroon."], "biocontrol": ["The use of natural predators or diseases to reduce the damage caused by a pest population."], "Bubia": ["A language of Cameroon."], "Befang": ["A language of Cameroon."], "biotic": ["Relating to life or living organisms."], "Babalia Creole Arabic": ["A language of Chad."], "botanical": ["Of or relating to plants or botany."], "abiotic": ["Of inorganic matter."], "pedology": ["The sub-discipline of soil science that studies soils as a component of natural systems."], "Central Bai": ["A language of China."], "Bainouk-Samik": ["A language of Senegal."], "Southern Balochi": ["A language of Pakistan, Iran, Oman and the United Arab Emirates."], "alien species": ["An organism that is not indigenous to a given place or area and instead has been accidentally or deliberately transported to this new location by human activity."], "North Babar": ["A language of Indonesia (Maluku)."], "Bamenyam": ["A language of Cameroon."], "introduced species": ["An organism that is not indigenous to a given place or area and instead has been accidentally or deliberately transported to this new location by human activity."], "Bamu": ["A language of Papua New Guinea."], "Baga Binari": ["A language of Guinea."], "Bariai": ["A language of Papua New Guinea."], "Baoul\u00e9": ["A language of C\u00f4te d'Ivoire"], "Bardi": ["A language of Australia."], "Bunaba": ["A language of Australia."], "Central Bicolano": ["A Bikol language spoken in the Bicol Region of the Philippines."], "Bannoni": ["A language of Papua New Guinea."], "Kaluli": ["A language of Papua New Guinea."], "Babine": ["A language of Canada."], "Kohumono": ["A language of Nigeria."], "Awad Bing": ["A language of Papua New Guinea."], "Shoo-Minda-Nye": ["A language of Nigeria."], "carrying capacity": ["The maximum number of organisms, in a given species, that can use a given area of habitat without degrading the habitat and without causing stresses that result in the population being reduced."], "bathymetric": ["Of or having to do with the depth of large bodies of water."], "random": ["Having an undefined distribution."], "remediation": ["The process of correcting environmental degradation."], "amelioration": ["The process of correcting environmental degradation."], "symbiotic": ["Refers to a close and mutually beneficial association of organisms of different species."], "Pamona": ["A language of Indonesia (Sulawesi)."], "microhabitat": ["A small area with physical and ecological characteristics that distinguish it from its immediate surrounding area."], "Bainouk-Gunyaamolo": ["A Niger-Congo language spoken north of the Casamance river, in the area delimited by the three cities of Bignona, Tobor and Niamone (Senegal) as well as in Gambia."], "microsite": ["A small area with physical and ecological characteristics that distinguish it from its immediate surrounding area."], "microenvironment": ["A small area with physical and ecological characteristics that distinguish it from its immediate surrounding area."], "mutualism": ["A symbiotic relationship between two organisms in which both organisms benefit from the relationship."], "oligotrophic": ["Refers to a body of water which is poor in dissolved nutrients and usually rich in dissolved oxygen."], "eutrophic": ["Refers to a body of water which is excessively rich in dissolved nutrients and usually poor in dissolved oxygen."], "ephemeral": ["Lasting but one day.", "Lasting or existing for a short time only.", "Anything short-lived, as an insect that lives only for a day in its winged form."], "torrential": ["Referring to rainfall: Very strong, similar to a deluge."], "summer night": ["A night in summer."], "tarantula": ["The common name for a group of hairy, sometimes very large spiders belonging to the family Theraphosidae, of which 800 species have been identified."], "concestor": ["The most recent individual from which all organisms in a group are directly descended."], "most recent common ancestor": ["The most recent individual from which all organisms in a group are directly descended."], "MRCA": ["The most recent individual from which all organisms in a group are directly descended."], "Bayot": ["A language of Senegal and Guinea-Bissau."], "Basap": ["A language of Indonesia (Kalimantan)."], "Ember\u00e1-Baud\u00f3": ["A language of Colombia."], "Bunama": ["A language of Papua New Guinea."], "Bonggi": ["A language of Malaysia (Sabah)."], "Baka": ["A language of Sudan and the Democratic Republic of the Congo.", "A language of Cameroon and Gabon."], "dusk": ["A period of time at the end of the day shortly after sunset during which the light fades gradually."], "Bai": ["A Niger-Congo language spoken by the Bai people in the Southern Sudanese state of Western Bahr el Ghazal."], "Indonesian Bajau": ["A language of Indonesia (Sulawesi)."], "Buduma": ["A language of Chad, Cameroon and Nigeria"], "Yedina": ["A language of Chad, Cameroon and Nigeria"], "perihelion": ["The point in the elliptical orbit of a planet or comet etc where it is nearest to the sun."], "aphelion": ["The point in the elliptical orbit of a planet or comet etc where it is farthest to the sun"], "summer morning": ["A morning in summer."], "native species": ["Species that evolved in a particular region or that evolved nearby and migrated to the region without help from humans."], "naturalized species": ["A non-native species that is reproducing in a new region without help from humans."], "non-native species": ["A species that evolved in one region but has gotten to another distant region, where it would not naturally have migrated because of some barrier, such as an ocean."], "qualitative data": ["Information expressed through words and examples."], "quantitative data": ["Information expressed through numbers."], "wastewater": ["Water that has been used and contains dissolved or suspended waste materials."], "oxygen cycle": ["Cyclic movement of oxygen in different chemical forms from the environment, to organisms, and then back to the environment."], "El Ni\u00f1o": ["A climatic phenomenon occurring irregularly, but generally every 3 to 5 years in the surface waters of the eastern tropical Pacific Ocean."], "combustion": ["Chemical oxidation accompanied by the generation of light and heat."], "cognitive approach": ["An approach to understanding psychology that emphasizes mental processes."], "biological approach": ["An approach to understanding psychology in terms of physiological and molecular mechanisms."], "behaviorist approach": ["An orientation in psychology that emphasizes the importance of environmental determinants on behavior."], "behaviorism": ["A philosophy of psychology based on the proposition that all things which organisms do\u2014including acting, thinking and feeling\u2014can and should be regarded as behaviors."], "clinical psychology": ["A field of psychology that focuses on diagnosis and treatment of psychological disorders."], "psychometric psychology": ["A field of psychology that specializes in the measurement of specific behaviors."], "experimental psychology": ["A field of psycholgoy that typically involves laboratory research in basic areas of the discipline."], "developmental psychology": ["A field of psychology that examines the impact of maturational processes and experience on behavior."], "rationalism": ["A philosophical approach that argues that human behavior can be best understood by the application of reason, logic, and common sense."], "structuralism": ["A psychological approach that emphasized studying the elemental structures of consciousness."], "epistemology": ["The study of the nature of knowledge."], "theism": ["The claim that one God created the world and sustains it while transcending it."], "valid": ["A deductive argument is valid if and only if it is impossible for the conclusion to be false when the premises are true."], "Titan": ["The largest moon of the planet Saturn."], "interface": ["A shared boundary across which information is passed. (Source IEEE)", "A common means for unrelated objects to communicate with each other."], "interoperability": ["The capability of two or more components or component implementations to interact."], "paradigm": ["An outstandingly clear or typical example or pattern that can serve as a model.", "A set of all forms related to a common linguistic element, such as the set of all inflectional forms of a word.", "A person or thing that is typical of or possesses to a high degree the features of a whole class."], "reengineering": ["An engineering process to transform an existing system into a new form through a combination of reverse engineering, restructuring, and forward engineering."], "specification": ["A document that prescribes, in a complete, precise, verifiable manner, the requirements, design, behavior, or characteristics of a system or system component. (source IEEE)"], "concurrent engineering": ["A systematic approach to integrated and concurrent development of a product and its related processes."], "maintainability": ["The effort needed to make specified modifications to a component implementation."], "supportability": ["Those actions related to the reliability, maintainability, and affordability of component implementations, and the integrated logistics support and configuration management required."], "retargeting": ["The engineering process of transforming and hosting or porting the existing system in a new configuration."], "Eboli": ["Town in the province of Salerno, region Campania, Italy."], "Acerno": ["Town in the province of Salerno, region Campania, Italy."], "Bende": ["A language of Tanzania."], "West Coast Bajau": ["A language of Malaysia (Sabah)."], "Bokoto": ["A language of Central African Republic."], "Oroko": ["A language of Cameroon"], "Baham": ["A language of Indonesia (Papua)."], "Budong-Budong": ["A language of Indonesia (Sulawesi)"], "Bandjalang": ["A language of Australia."], "Badeshi": ["A language of Pakistan."], "winter evening": ["An evening in winter."], "winter night": ["A night in winter."], "nightcap": ["A cap which is worn on the head at night in bed."], "word processor": ["Software for entering, editing and printing primarily textual information."], "spreadsheet": ["Software for entering, editing, manipulating and printing structured, tabular information, such as accounting ledger sheets."], "computer aided design": ["Software with the capability of performing standard engineering drawings."], "boycott": ["Social, economic, or political noncooperation.", "To refuse to buy products of or do business with."], "nonviolent struggle": ["A technique of action in conflicts in which participants conduct the struggle by doing - or refusing to do - certain acts without using physical violence."], "nonviolence": ["The behavior of people who in a conflict refrain from violent acts."], "pacifism": ["Several types of belief systems of principled rejection of violence."], "civil disobedience": ["Deliberate, open, and peaceful violation of particular laws, decrees, regulations, military or police orders, or other governmental directives."], "civil society": ["Non-governmental, non-profit making organisations, networks and voluntary associations."], "karyogamy": ["The fusion of nuclei or nuclear material that occurs at fertilization during sexual reproduction."], "karyogram": ["A diagrammatic representation of the full chromosome set of a species, highlighting characteristic physical features of individual chromosomes."], "karyotype": ["The chromosome constitution of a cell, an individual, or of a related group of individuals, as defined both by the number and the morphology of the chromosomes, usually in mitotic metaphase"], "transgenesis": ["The introduction of a gene or genes into animal or plant cells, which leads to the transmission of the input gene (transgene) to successive generations. (source: FAO)"], "transgene": ["An isolated gene sequence used to transform an organism."], "Beaver": ["A language of Canada."], "Bebele": ["A language of Cameroon."], "Iceve-Maci": ["A language of Cameroon and Nigeria"], "Bedoanas": ["A language of Indonesia (Papua)."], "Byangsi": ["A language of India and Nepal."], "Benabena": ["A language of Papua New Guinea."], "Belait": ["A language of Brunei."], "Biali": ["A language of Benin and Burkina Faso"], "Bekati'": ["A language of Indonesia (Kalimantan)."], "Bedawi": ["A language of Sudan and Etitrea."], "Bebeli": ["A language of Papua New Guinea"], "Beami": ["A language of Papua New Guinea."], "Besoa": ["A language of Indonesia (Sulawesi)."], "Beembe": ["A language of Congo."], "Besme": ["A language of Chad."], "Guiberoua B\u00e9te": ["A language of the C\u00f4te d'Ivoire."], "Blagar": ["A language of Indonesia (Nusa Tenggara)."], "Daloa B\u00e9t\u00e9": ["A language of C\u00f4te d'Ivoire."], "Betawi": ["A language of Indonesia (Java and Bali)."], "Jur Modo": ["A language of Sudan."], "Beli": ["A language of Papua New Guinea.", "A language of Sudan."], "Bena": ["A language of Tanzania."], "Northern Bai": ["A language of China."], "Bafut": ["A language of Cameroon"], "Betaf": ["A language of Indonesia (Papua)."], "Bofi": ["A language of the Central African Republic"], "Busang Kayan": ["A language of Indonesia (Kalimantan)."], "Blafe": ["A language of Papua New Guinea."], "Bafanji": ["A language of Cameroon."], "Ban Khor Sign Language": ["A sign language used by about 1,000 people of a rice-farming community in remote areas of Isan (northeastern Thailand)."], "Banda-Nd\u00e9l\u00e9": ["A language of the Central African Republic and Sudan."], "Mmen": ["A language of Cameroon."], "Bunak": ["A language of East Timor and Indonesia (Nusa Tenggara)."], "Malba Birifor": ["A language of Burkina Faso."], "Beba": ["A language of Cameroon."], "Southern Bai": ["A language of China."], "Balti": ["A language of Pakistan and India."], "Gahri": ["A Sino-Tibetan language spoken by the Gahri people on both sides of the India-China border in the western Himalayan mountains."], "Gwamhi-Wuri": ["A language of Nigeria."], "Bobongko": ["A language of Indonesia (Sulawesi)."], "Bangandu": ["A language of Cameroon and Congo."], "Bugun": ["A language of India."], "Giangan": ["A language of the Philippines."], "Bangolan": ["A language of Cameroon"], "Bo": ["A language of Laos.", "A language of Papua New Guinea."], "Baga Mboteni": ["A language of Guinea."], "Western Balochi": ["A language of Pakistan, Afghanistan, Iran and Turkmenistan."], "Baga Koga": ["A language of Guinea."], "Eastern Balochi": ["A language of Pakistan and India."], "Benishangul-Gumuz": ["One of the nine ethnic divisions (kililoch) of Ethiopia, located at the Center West of the country."], "Benshangul/Gumaz": ["One of the nine ethnic divisions (kililoch) of Ethiopia, located at the Center West of the country."], "Guba Koricha": ["One of the 180 woredas in the Oromia Region of Ethiopia."], "Oromia": ["One of the nine ethnic divisions (kililoch) of Ethiopia, covering 353,632 km\u00b2 from the east to the southwest of the country."], "Sirba Abbay": ["One of the 21 woredas in the Benishangul-Gumaz Region of Ethiopia."], "Agalo Mite": ["One of the 21 woredas in the Benishangul-Gumaz Region of Ethiopia."], "Mandura": ["A dialect of the Gumuz language.", "One of the 21 woredas in the Benishangul-Gumaz Region of Ethiopia."], "Amhara": ["One of the nine ethnic divisions (kililoch) of Ethiopia, containing the homeland of the Amhara people.", "An ethnic group in the central highlands of Ethiopia, numbering about 23 million."], "minimum crew": ["The minimal number of people keeping something operational."], "Aboriginal art": ["Art created by indigenous people of a geographical area that is not influenced by any other cultural group or outside people."], "batik": ["A fabric dyeing technique in which the pattern is first drawn with melted beeswax onto the cloth with a metal tool."], "collage": ["Any artistic composition made by gluing assorted materials to a flat surface."], "diorama": ["A three-dimensional replicated scene in which figures, stuffed wildlife, or other objects are arranged in a thematic setting against a painted or decorated background."], "Cubism": ["An art movement which came into being circa 1909, led by Picasso and Braque."], "fisticuff": ["A blow to someone or something with the fist."], "punch": ["To write by entering characters on a keyboard or a typewriter.", "A blow to someone or something with the fist.", "To deliver a blow with the fist.", "To make a hole or several holes into something, such as a sheet of paper to be filed away."], "appliqu\u00e9": ["A sewing technique in which a piece of fabric or textile decoration is attached to a larger piece of material."], "portfolio": ["A collection of works done by a single artist."], "propaganda": ["Psychological images and rhetoric developed to specifically persuade the masses to a particular point of view."], "acetate": ["A manufactured fiber formed by a compound of cellulose.", "Salt or ester of acetic acid."], "silk": ["One of the finest textiles, obtained from cocoons of certain species of caterpillars; it is soft, very strong and absorbent and has a brilliant sheen.", "Made of silk."], "taffeta": ["A lustrous, medium-weight, plain-weave fabric with a slight ribbed appearance in the filling direction."], "nylon": ["A generic designation for a family of synthetic polymers.", "A textile fiber, synthetic, elastic and resistant."], "elastane": ["A synthetic fiber known for its exceptional elasticity."], "spandex": ["A synthetic fiber known for its exceptional elasticity."], "Bawm Chin": ["A language of India, Bangladesh and Myanmar"], "Tagabawa": ["A language of Philippines."], "Bughotu": ["A language of the Solomon Islands."], "Mbongno": ["A language of Nigeria and Cameroon."], "Kamkam": ["A language of Nigeria and Cameroon."], "Warkay-Bipim": ["A language of Indonesia (Papua)."], "Benggoi": ["A language of Indonesia (Maluku)."], "Banggai": ["A language of Indonesia (Sulawesi)."], "zenith": ["Direction pointing vertically above a given location."], "Biga": ["A language of Indonesia (Papua)."], "Odiai": ["A language of Papua New Guinea."], "Binandere": ["A language of Papua New Guinea."], "Bukharic": ["A language of Israel and Uzbekistan."], "Bahing": ["A language of Nepal."], "Albay Bicolano": ["A language of the Philippines."], "Bimin": ["A language of Papua New Guinea."], "Bathari": ["A language of Yemen and Oman."], "Bohtan Neo-Aramaic": ["A modern Eastern Aramaic language spoken originally in a region of Turkey but nowadays in one village in Georgia."], "Bima": ["A language of Indonesia (Nusa Tenggara)."], "Tukang Besi South": ["A language of Indonesia (Sulawesi)."], "Bara Malagasy": ["A language of Madagascar."], "Bahau": ["A language of Indonesia (Kalimantan)."], "Biak": ["A language of Indonesia (Papua)."], "Bhele": ["A language of the Democratic Republic of the Congo."], "Badimaya": ["An Australian Aboriginal language, member of the Kartu subgroup of the Southwest branch of the Pama-Nyungan family, spoken in the area between Mount Magnet and Dalwallinu in Western Australia."], "Bissa": ["A language of Burkina Faso, Ghana and Togo."], "Bikaru": ["A language of Papua New Guinea."], "Bepour": ["A language of Papua New Guinea."], "Biafada": ["A language of Guinea-Bissau."], "Biangai": ["A language of Papua New Guinea."], "Bisu": ["A language of China and Thailand."], "Vaghat-Ya-Bijim-Legeri": ["A language of Nigeria."], "Bile": ["A language of Nigeria."], "Salarpur Khadar": ["A town in Gautam Buddha Nagar district in the Indian state of Uttar Pradesh."], "Uttar Pradesh": ["The most populous and fifth largest state in the Republic of India."], "Bimoba": ["A language of Ghana."], "Edo": ["A language of Nigeria."], "Nai": ["A language of Papua New Guinea."], "Bila": ["A language of Democratic Republic of the Congo"], "Bipi": ["A language of Papua New Guinea."], "Bisorio": ["A language of Papua New Guinea."], "Berinomo": ["A language of Papua New Guinea."], "Biete": ["A language of India."], "Southern Birifor": ["A language of Ghana and the C\u00f4te d'Ivoire-"], "Kol": ["A language of Cameroon.", "A language of Papua New Guinea."], "Baloi": ["A language of Democratic Republic of the Congo."], "Budza": ["A language of the Democratic Republic of the Congo."], "Banggarla": ["An extinct language of Australia."], "Bariji": ["A language of Papua New Guinea."], "boxer": ["A person who engages in a boxing match."], "Bandjigali": ["A language of Australia."], "Barzani Jewish Neo-Aramaic": ["A modern Jewish Aramaic language spoken today only by a few people in Israel."], "Bidyogo": ["A language of Guinea-Bissau"], "Bahinemo": ["A language of Papua New Guinea."], "Barok": ["A language of Papua New Guinea."], "Bulu": ["A language of Papua New Guinea.", "A language of Cameroon."], "Bajelani": ["A language of Iraq."], "Banjar": ["A Malayo-Polynesian language of Indonesia (Kalimantan) and Malaysia (Sabah)."], "Mid-Southern Banda": ["A language of Central African Republic, the Democratic Republic of the Congo and Sudan"], "Southern Betsimisaraka Malagasy": ["A language of Madagascar."], "Binumarien": ["A language of Papua New Guinea."], "Bajan": ["An English-based creole language spoken on the island of Barbados."], "Balanta-Ganja": ["A language of Senegal."], "Busuu": ["A language of Cameroon."], "Bakw\u00e9": ["A language of C\u00f4te d'Ivoire."], "Banao Itneg": ["A language of the Philippines."], "Bayali": ["An extinct language of Australia."], "Baruga": ["A language of Papua New Guinea"], "interdisciplinary": ["Combining or involving several academic disciplines."], "integrity": ["Accordance with the relevant moral values, norms and rules.", "Assuring information will not be accidentally or maliciously altered or destroyed."], "LDAP": ["A protocol for accessing information directories such as organizations, individuals, phone numbers, and addresses."], "Lightweight Directory Access Protocol": ["A protocol for accessing information directories such as organizations, individuals, phone numbers, and addresses."], "hashing": ["A numeric summary that can be used to provide message integrity, popular because it is simple and small."], "marmalade": ["A sweet, gelatinous substance (made from fruit juice, sugar and pectin) that is commonly spread on bread and toast."], "MD5": ["Hashing technique that creates 128-bit message digest."], "Message Digest 5": ["Hashing technique that creates 128-bit message digest."], "microchip": ["A small silicon object containing microscopic circuitry."], "smartcard": ["A pocket-sized card with embedded integrated circuits which can process information."], "smart card": ["A pocket-sized card with embedded integrated circuits which can process information."], "cryptography": ["The study of message secrecy."], "decryption": ["The process of converting encrypted text back into its original form."], "VPN": ["A virtually private network that is constructed by using public wires to connect nodes.", "A computer network that uses a public telecommunication infrastructure such as the Internet to provide remote offices or individual users with secure access to their organization's network."], "Virtual Private Network": ["A virtually private network that is constructed by using public wires to connect nodes."], "Kyak": ["A language of Nigeria"], "Finallig": ["A language of the Philippines."], "Binukid": ["A language of the Philippines."], "byte": ["A unit of measurement of information storage, most often consisting of eight bits."], "Bengkulu": ["A language of Indonesia (Sumatra)."], "Beeke": ["A language of Democratic Republic of the Congo."], "Buraka": ["A language of the Central African Republic and the Democratic Republic of the Congo."], "Bakoko": ["A Bantou language of the Bassa group spoken in the coastal region south-east of Douala, Cameroon."], "Baki": ["A language of Vanuatu."], "Pande": ["A language of Central African Republic."], "kilobyte": ["A unit of information or computer storage equal to either 1,000 bytes or 1,024 bytes (2^10), depending on context."], "Berik": ["A language of Indonesia (Papua)."], "Kom": ["A language spoken by the Kom people of Cameroon.", "A language of India."], "Bukitan": ["A language of Indonesia (Kalimantan) and Malaysia (Sarawak)."], "Kwa'": ["A language of Cameroon."], "Boko": ["A language of Democratic Republic of the Congo.", "A language of Benin and Nigeria"], "Bakair\u00ed": ["A language of Brazil."], "Bakumpai": ["A language of Indonesia (Kalimantan)."], "Masbate Sorsogon": ["A language of the Philippines."], "Buhid": ["A language of the Philippines."], "Bekwarra": ["A language of Nigeria."], "Bekwil": ["A language of Congo, Cameroon and Gabon."], "Baikeno": ["A language of East Timor."], "Bokyi": ["A language of Nigeria and Cameroon"], "Bungku": ["A language of Indonesia (Sulawesi)."], "Bilua": ["A language of the Solomon Islands."], "Bella Coola": ["A language of Canada."], "Bolango": ["A language of Indonesia (Sulawesi)"], "Balanta-Kentohe": ["A language of Guinea-Bissau."], "Buol": ["A language of Indonesia (Sulawesi)."], "Balau": ["A language of Malaysia (Sarawak)."], "Kuwaa": ["A language of Liberia."], "Bolia": ["A language of Democratic Republic of the Congo."], "Boloki": ["A language of Democratic Republic of the Congo."], "Boma": ["A language of Democratic Republic of the Congo."], "Bolondo": ["A language of Democratic Republic of the Congo"], "cladistics": ["A philosophy of classification that arranges organisms only by their order of branching in an evolutionary tree and not by their morphological similarity."], "phylogenetics": ["The study of evolutionary relatedness among various groups of organisms."], "computational phylogenetics": ["The application of computational algorithms, methods and programs to phylogenetic analyses."], "molecular phylogeny": ["The use of the structure of molecules to gain information on an organism's evolutionary relationships."], "evolutionary biology": ["A sub-field of biology concerned with the origin and descent of species, as well as their change, multiplication, and diversity over time."], "monophyletic": ["Of, pertaining to, or affecting a single phylum (or other taxon) of organisms.", "Deriving from a single clade (monophylum)."], "polyphyletic": ["Of or related to a taxonomic group that consists of members that have in common a trait that evolved separately in different places in the phylogenetic tree."], "clade": ["A taxonomic group of organisms consisting of a single common ancestor and all the descendants of that ancestor."], "biological classification": ["A method by which biologists group and categorize species of organisms."], "scientific classification": ["A method by which biologists group and categorize species of organisms."], "taxon": ["Name for a group of organisms that form a systematic unit, e.g. species, genus."], "Bolongan": ["A language of Indonesia (Kalimantan)."], "Pa'o Karen": ["A language of Myanmar and Thailand."], "Biloxi": ["An extinct language of the USA."], "Southern Catanduanes Bicolano": ["A language of the Philippines"], "Anii": ["A language of Benin and Togo."], "starve": ["To die from lack of food.", "To suffer from hunger, to not get enough to eat for an extended amount of time; to feel the need to eat."], "famish": ["To die from lack of food.", "To suffer from hunger, to not get enough to eat for an extended amount of time; to feel the need to eat."], "die of thirst": ["To die from lack of potable liquid."], "Yonggom": ["A language of Papua New Guinea."], "Yopno": ["A language of Papua New Guinea."], "Zenag": ["A language of Papua New Guinea."], "Zimakani": ["A Papuan language spoken in Papua New Guinea by around 1500 people."], "death from starvation": ["Death because of undernutrition."], "hundred euro note": ["A banknote worth one hundred Euro."], "one-hundred euro note": ["A banknote worth one hundred Euro."], "euro banknote": ["Banknote of the single European currency euro, which is in use in the 13 countries of the Eurozone."], "euro coin": ["Coin of the single European currency euro, which is in use in the 15 countries of the Eurozone."], "coinage": ["A means of payment in the form of small pieces of metal."], "hard cash": ["A means of payment in the form of small pieces of metal."], "fifty-cent piece": ["A coin worth fifty cent."], "two-euro coin": ["A coin worth two euro."], "fifty-cent coin": ["A coin worth fifty cent."], "two-euro piece": ["A coin worth two euro."], "one-euro coin": ["A coin worth one euro."], "one-euro piece": ["A coin worth one euro."], "one-cent coin": ["A coin worth one cent."], "two-cent coin": ["A coin worth two cent."], "five-cent coin": ["A coin worth five cent."], "ten-cent coin": ["A coin worth ten cent."], "twenty-cent coin": ["A coin worth twenty cent."], "one-cent piece": ["A coin worth one cent."], "two-cent piece": ["A coin worth two cent."], "five-cent piece": ["A coin worth five cent."], "ten-cent piece": ["A coin worth ten cent."], "twenty-cent piece": ["A coin worth twenty cent."], "Bengali script": ["A variant of the Eastern Nagari script used for writing several languages of India."], "Blablanga": ["A language of the Solomon Islands."], "Baluan-Pam": ["A language of Papua New Guinea."], "Balaesang": ["A language of Indonesia (Sulawesi)."], "Bolo": ["A language of Angola."], "Balangao": ["A language of the Philippines.", "A small local government unit in the Philippines in the Natonin, Mountain Province, and the tribe that inhabit it."], "Mag-Indi Ayta": ["A language of the Philippines spoken within Aeta communities in San Marcelino, Zambales, and in the Pampango municipalities of Floridablanca and Porac."], "Notre": ["A language of Benin."], "Balantak": ["A language of Indonesia (Sulawesi)."], "combine": ["To join or unite, as one thing to another, or as several particulars, so as to increase the number, augment the quantity, enlarge the magnitude, or so as to form into one aggregate; to sum up; to put together mentally, as, to add numbers; to add up a column.", "A group of organisations in an industry which agree on maintaining high prices and effectively killing competition.", "To bring two or more things or activities together.", "To mix together different elements."], "Bembe": ["A language of Democratic Republic of the Congo and Tanzania."], "Biem": ["A language of Papua New Guinea."], "Baga Manduri": ["A language of Guinea."], "Limassa": ["A language of Central African Republic."], "Bom": ["A language of Sierra Leone."], "Bamwe": ["A language of Democratic Republic of the Congo."], "Kein": ["A language of Papua New Guinea."], "Ghayavi": ["A language of Papua New Guinea."], "Bomboli": ["A language of the Democratic Republic of the Congo"], "Northern Betsimisaraka Malagasy": ["A language of Madagascar."], "Bambalang": ["A language of Cameroon."], "Bulgebi": ["A language of Papua New Guinea."], "Bomu": ["A language of Mali and Burkina Faso."], "Muinane": ["A language of Colombia."], "Burum-Mindik": ["A language of Papua New Guinea."], "Bum": ["A language of Cameroon."], "Bomwali": ["A language of Congo and Cameroon"], "Baimak": ["A language of Papua New Guinea."], "Baramu": ["A language of Papua New Guinea."], "Bonerate": ["A language of Indonesia (Sulawesi)."], "Bookan": ["A language of Malaysia (Sabah)."], "Central Bontoc": ["A language of the Philippines."], "rut": ["A settled and monotonous routine that is hard to escape.", "A depression made by the passage of a vehicle or equipment."], "Banda": ["A language of Indonesia (Maluku)."], "Bintauna": ["A language of Indonesia (Sulawesi)."], "Masiwang": ["A language of Indonesia (Maluku)."], "Benga": ["A West Bantu family language spoken by the Benga people in Equatorial Guinea and Gabon."], "Banaw\u00e1": ["A language of Brazil."], "Bangi": ["A language of the Democratic Republic of the Congo and Congo."], "Eastern Tawbuid": ["A language of Philippines."], "Bierebo": ["A language of Vanuatu."], "Patrician house": ["House that was built during the Patrician period."], "lightyear": ["Astronomical unit of length equal to the distance light travels in a vacuum in one year."], "light-year": ["Astronomical unit of length equal to the distance light travels in a vacuum in one year."], "instructional design": ["A system of developing well-structured instructional materials using objectives, related teaching strategies, systematic feedback, and evaluation."], "organizational": ["Of, relating to, or produced by an organization."], "organizational intelligence": ["The ability of an organization to perceive, interpret, and respond to its environment in a manner that simultaneously meets its organizational goals while satisfying its stakeholders, that is, its employees, customers, investors, community, and environment."], "team sport": ["A sport that is practiced between opposing teams, where the players interact directly and simultaneously between them to achieve an objective."], "CRM": ["All aspects of interaction a company has with its customer, whether it be sales or service related."], "customer relationship management": ["All aspects of interaction a company has with its customer, whether it be sales or service related."], "Patrician villa": ["Villa that was built during the Patrician period."], "small harbour": ["Harbour of small dimension."], "brigant": ["Outlaw person."], "prestigious": ["Highly estimated."], "give a new interpretation": ["Take up and give a new meaning."], "Cilento": ["Geographical region in the region of Campania, Italy."], "key to success": ["The central point that leads to success."], "footboard": ["Surface, often of wood or iron, where you can walk on."], "first course": ["First dish served within a meal."], "traditional dishes": ["Way of cooking that recalls the traditions of the place."], "wine list": ["List with all the wines that one can order in a restaurant."], "ecological integrity": ["The ability of an ecosystem to function healthily and continue to\\nprovide natural goods and services and maintain biodiversity."], "orographic": ["Associated with or induced by the presence of mountains."], "silviculture": ["Branch of forestry dealing with the cultivation and care of forests."], "Nunavik": ["Region that occupies the northern third of the province of Quebec, in Canada."], "Bryansk": ["A city in Russia, located 379 km southwest from Moscow."], "Tula": ["An industrial city in the European part of Russia, located 165 km south of Moscow, on the river Upa."], "Orlov": ["A town in Kirov Oblast, Russia."], "Tambov": ["A city in Russia, the administrative center of Tambov Oblast."], "Batanga": ["A language of Equatorial Guinea and Cameroon."], "Bunun": ["A language of Taiwan."], "Bantoanon": ["A language of the Philippines."], "Bola": ["A language of Papua New Guinea."], "Donskoy": ["A town in Tula Oblast, Russia, located in the upper streams of the Don River, 65 km south-east of Tula."], "Bantik": ["A language of Indonesia (Sulawesi)."], "Butmas-Tur": ["A language of Vanuatu."], "Bentong": ["A language of Indonesia (Sulawesi)."], "Bonerif": ["A language of Indonesia (Papua)."], "Bisis": ["A language of Papua New Guinea."], "Bintulu": ["A language of Malaysia (Sarawak)."], "Beezen": ["A Jukunoid language of Cameroon"], "Pskov": ["An ancient city, located in the north-west of Russia about 20 km east from the Estonian border, on the Velikaya River."], "Gan": ["A Chinese language spoken primarily in central China's Jianxi Province and the south-eastern corner of Hubei Province."], "Mandinka": ["A language of Senegal, Gambia and Guinea-Bissau."], "Rotuman": ["An Austronesian language spoken in the island group of Rotuma of Fiji."], "South Saami": ["A language of Sweden and Norway."], "Arkhangelsk": ["A city and the administrative center of Arkhangelsk Oblast, Russia."], "Novosibirsk": ["Russia's third largest city, after Moscow and Saint Petersburg, and the administrative center of Novosibirsk Oblast."], "Bora": ["A language of Peru, Brazil and Colombia."], "Mira\u00f1a": ["A language of Peru, Brazil and Colombia."], "Bakung Kenyah": ["A language of Indonesia (Kalimantan) and Malaysia (Sarawak)."], "Central Tibetan": ["A variety of Tibetan spoken in Central Tibet."], "Mundabli": ["A Bantoid language of Cameroon."], "Bolon": ["A Manding language of Burkina Faso."], "Bamako Sign Language": ["A sign language of Mali."], "Barbare\u00f1o": ["An extinct language of the USA."], "Anjam": ["A language of Papua New Guinea."], "Bonjo": ["An Ubangian language of Congo."], "Berom": ["A language of Nigeria."], "Bine": ["A language of Papua New Guinea."], "Ti\u00e8ma Ci\u00e8w\u00e8 Bozo": ["A Bozo language spoken in Mali."], "Bonkiman": ["A language of Papua New Guinea."], "Nizhny Novgorod": ["The fourth largest city in Russia. It is the economic and cultural center of the vast Volga-Vyatka economic region, and also the administrative center of Nizhny Novgorod Oblast and Volga Federal District."], "Yekaterinburg": ["A major city in the central part of Russia, the administrative center of Sverdlovsk Oblast."], "Bogaya": ["A language of Papua New Guinea."], "Bor\u00f4ro": ["A Macro-G\u00ea language spoken by the Bororo people in the Central Mato Grosso region of Brazil."], "Bondei": ["A language of Tanzania."], "Tuwuli": ["A Kwa language spoken in the Volta Region of Ghana."], "Buamu": ["A language of Burkina Faso."], "thunderclap": ["Short, violent thunder."], "clap of thunder": ["Short, violent thunder."], "peal of thunder": ["Short, violent thunder."], "rolling thunder": ["Prolonged and distant thunder."], "roll of thunder": ["Prolonged and distant thunder."], "thunder machine": ["Machine used to create the sound of thunder in a theatre."], "Tumbuka": ["A language of Malawi and Zambia."], "plasma": ["An extremely hot gas that is composed of free-floating ions and free electrons.", "The clear, yellowish fluid portion of the blood in which cells are suspended.", "Flat-panel display technology that ignites small pockets of gas to light phosphors."], "Sines": ["City of Portugal, in the district of Set\u00fabal."], "ultraviolet": ["The invisible part of the light spectrum whose rays have wavelengths shorter than the violet end of the visible spectrum and longer than X rays.", "Of electromagnetic radiation beyond (higher in frequency than) light visible to the human eye."], "ultraviolet radiation therapy": ["A form of radiation used in the treatment of cancer."], "ulceration": ["The formation of a break on the skin or on the surface of an organ. An ulcer forms when the surface cells die and are cast off. Ulcers may be associated with cancer and other diseases."], "ulcerative colitis": ["A chronic inflammation of the colon that produces ulcers in its lining."], "colon": ["The long, coiled, tubelike organ that removes water from digested food.", "A punctuation mark (:) used after a word introducing a series or an example or an explanation."], "coil": ["Something wound in the form of a helix or spiral."], "colitis": ["Inflammation of the colon."], "colon cancer": ["Cancer that develops in the tissues of the colon."], "colonoscope": ["A thin, lighted tube used to examine the inside of the colon."], "colonoscopy": ["An examination of the inside of the colon using a colonoscope, inserted into the rectum."], "rectum": ["The terminal part of the large intestine through which feces pass."], "colorectal": ["Having to do with the colon or the rectum."], "colostomy": ["An opening into the colon from the outside of the body."], "myeloma": ["Cancer that arises in plasma cells, a type of white blood cell."], "malignant": ["Tumors that can invade and destroy nearby tissue and spread to other parts of the body."], "cancerous": ["Tumors that can invade and destroy nearby tissue and spread to other parts of the body."], "medical castration": ["The use of drugs to suppress the function of the ovaries or testicles."], "mammary": ["Having to do with the breast."], "mammography": ["The use of x-rays to create a picture of the breast."], "melanin": ["The substance that gives color to skin and eyes."], "melanocyte": ["A cell in the skin and eyes that produces and contains the pigment called melanin."], "pigment": ["A highly colored, insoluble substance that impart color to other materials."], "melanoma": ["A form of skin cancer that begins in melanocytes."], "menopause": ["The time of life when a woman's menstrual periods stop."], "from now on": ["Starting at this moment and continuing indefinitely."], "metabolic": ["Having to do with metabolism."], "metastatic": ["Having to do with metastasis, which is the spread of cancer from one part of the body to another."], "metastatic cancer": ["Cancer that has spread from the place in which it started to other parts of the body."], "morphine": ["A narcotic drug used in the treatment of pain."], "vaccinated": ["Treated with a vaccine."], "vaginal": ["Relating to the vagina."], "vasectomy": ["An operation to cut or tie off the two tubes that carry sperm out of the testicles."], "ventricle": ["A fluid-filled cavity in the heart or brain."], "cavity": ["A, often round, piece of nothingness in some solid.", "A hole or hollow area.", "A hollow area within the body.", "A hollow space or pit in a tooth cause by decay."], "video-assisted surgery": ["Surgery that is aided by the use of a video camera that projects and enlarges the image on a television screen."], "viral": ["Relating to a virus."], "virulence": ["The ability of a microorganism to cause damage to its host."], "viscera": ["The soft internal organs of the body, including the lungs, the heart, and the organs of the digestive, excretory, and reproductive systems."], "vitamin A": ["A nutrient essential for proper vision and healthy skin and mucous membranes."], "vitamin B12": ["A vitamin that is needed to make red blood cells and DNA (the genetic material in cells) and to keep nerve cells healthy."], "vitamin C": ["A key nutrient that the body needs to fight infection, heal wounds, and keep tissues healthy, including the blood vessels, cartilage, ligaments, tendons, bones, muscle, skin, teeth, and gums."], "vitamin D": ["A nutrient that helps the body use calcium and phosphorus and make strong bones and teeth."], "vitamin E": ["A substance used in cancer prevention. It belongs to the family of drugs called tocopherols."], "vitamin K": ["A substance that promotes the clotting of blood."], "vitamin Q10": ["A substance found in most tissues in the body, and in many foods. It can also be made in the laboratory. It is used by the body to produce energy for cells, and as an antioxidant."], "vocal cord": ["One of two small bands of muscle within the larynx that vibrates to produce the voice.", "One of the two mucuous membranes in the larynx that vibrate and modulate the flow of air from the lungs during phonation."], "vulvar cancer": ["Cancer of the vulva."], "video-assisted resection": ["Surgery that is aided by the use of a video camera that projects and enlarges the image on a television screen."], "umbra": ["The dark central zone created by an eclipse.", "Central, darkest region of a sunspot."], "penumbra": ["Outer and lighter part of the shadow created by an eclipse."], "nebula": ["A cluster of stars, or a cloud of dust particles and gases."], "magnetosphere": ["The region around an astronomical object which is dominated by its magnetic field."], "infrared": ["An invisible part of light, with longer wavelengths that are felt as heat radiation."], "solar flare": ["A sudden, short lived, burst of energy on the Sun's surface, lasting from minutes to hours."], "sunspot": ["A darker and slightly cooler region on the surface of the sun, created when powerful magnetic fields stop the circulation of gases."], "solar wind": ["A stream of charged particles emitted from the sun."], "infrared lamp": ["An electrical device that emits infrared rays - invisible rays just beyond red in the visible spectrum."], "infrared filter": ["A filter mainly used in infrared photography to remove visible light and only pass infrared light in different wavelengths.", "A substance introduced into a polymer which absorb infrared light."], "infrared spectroscopy": ["The study of the absorption of infrared light by substances."], "completeness": ["The inclusion of all necessary parts or elements.", "An attribute of a logical system that is so constituted that a contradiction arises if any proposition is introduced that cannot be derived from the axioms of the system."], "fecundity": ["The number of young produced per female per unit of time.", "The intellectual productivity of a creative imagination.", "The quality of something that causes or assists healthy growth."], "fertilization": ["The union of male and female cells (e.g. sperm and egg) to form a new individual."], "fire cycle": ["The average time between fires in a given area."], "fjord": ["A long, narrow arm of the sea, usually formed by entrance of the sea into a deep glacial trough."], "forest health": ["A measure of the robustness of forest ecosystems."], "pelagic": ["Refers to fish and animals that live in the open sea, away from the sea bottom."], "pleistocene": ["An epoch of the Quaternary Period characterized by several glacial ages."], "doctor of philosophy": ["A research-oriented doctoral degree which indicates the recipient has done, and is prepared to do, original research in a major discipline."], "Ph.D.": ["A research-oriented doctoral degree which indicates the recipient has done, and is prepared to do, original research in a major discipline.", "One of the highest earned academic degrees conferred by a university."], "natural philosophy": ["The objective study of nature and the physical universe before the development of modern science."], "analytic philosophy": ["A currently dominant form of philosophy in the English speaking world which maintains that philosophy is a (logical) analysis of concepts."], "toy soldier": ["Any of various metal, wooden or primarily plastic figurine toys manufactured to commemorate soldiers who served in any war from the beginning of time to the most recent wars and also imaginary wars (source: Wikipedia)."], "matrushka doll": ["A Russian nesting doll. A set of Matryoshka dolls consists of a wooden figure which can be pulled apart to reveal another figure of the same sort inside, and so on. The number of nested figures is usually six or more."], "complementary colors": ["Two hues directly opposite one another on a color wheel."], "eclecticism": ["The practice of selecting or borrowing from earlier styles and combining the borrowed elements.", "A conceptual approach that does not hold rigidly to a single paradigm or set of assumptions, but instead draws upon multiple theories, styles, or ideas to gain complementary insights into a subject, or applies different theories in particular cases (source: Wikipedia)."], "folk art": ["The art of people who have had no formal, academic training, but whose works are part of an established tradition of style and craftsmanship."], "fresco": ["A painting technique in which pigments suspended in water are applied to a damp lime-plaster surface. The pigments dry to become part of the plaster wall or surface.", "Painting on a wall or ceiling which was created by applying pigments on damp lime-plaster."], "humanism": ["A cultural and intellectual movement during the Renaissance, following the rediscovery of the art and literature of ancient Greece and Rome.", "The broad movement in philosophy and psychology that recognized the person and subjective dimensions of the human experience as central to knowing and valuing (Roy, 1988)."], "humanitarianism": ["The view that all people should be treated with the respect and dignity they deserve as human beings, and that advancing the well-being of humanity is a noble goal."], "kinetic art": ["Art that incorporates actual or apparent movement as part of the design."], "lithograph": ["A printing technique based on the chemical antipathy of oil and water."], "monochromatic": ["A color scheme limited to variations of one hue, a hue with its tints and/or shades.", "Having only one color."], "polychromatic": ["Having many colors; random or intuitive use of color combinations as opposed to color selection based on a specific color scheme."], "stupa": ["The earliest form of Buddhist architecture, probably derived from Indian funeral mounds."], "Buddhism": ["A religion and philosophy based on the teachings of Gautama Buddha."], "Buddhist": ["Of or relating to or supporting Buddhism.", "A practitioner of the religion and philosophy of Buddhism."], "vacancy": ["An empty room at a hotel or motel.", "A defect in the form of an unoccupied lattice position in a crystal."], "vacancy rate": ["The percentage of housing units that are unoccupied in a particular area."], "valuation": ["An estimated value or worth of something."], "wall fresco": ["A fresco on a wall."], "ceiling fresco": ["Fresco on a ceiling."], "well-wooded": ["With lots of forest."], "garden cress": ["(Lepidium sativum) Plant in the family of the Brassicaceae which is used in food preparation."], "potato salad": ["A dish made from cooked and sliced potatoes and other ingredients which vary throughout different regions."], "cow milk": ["Milk from a cow."], "cow's milk": ["Milk from a cow."], "eurocentric": ["Consciously or unconsciously placing emphasis on European (and, generally, Western) concerns, culture and values at the expense of those of other cultures."], "strait": ["A narrow body of water connecting two larger bodies of water."], "peninsula": ["A piece of land extending into the sea almost entirely surrounded by water."], "oasis": ["A spot in a desert where water comes up from an underground spring and trees grow."], "isthmus": ["A narrow strip of land that separates two bodies of water or connects two pieces of land."], "Ti\u00e9yaxo Bozo": ["A Bozo language spoken in Mali."], "Dakaka": ["A language of Vanuatu."], "Barbacoas": ["An extinct language of Colombia."], "Banda-Banda": ["A language of Central African Republic and Sudan"], "Bonggo": ["A language of Indonesia (Papua)."], "Bagupi": ["A language of Papua New Guinea."], "Binji": ["A language of the Democratic Republic of the Congo."], "Orowe": ["A language of New Caledonia"], "Broome Pearling Lugger Pidgin": ["A pidgin developed by the workers in the pearling industry in Broome, Western Australia."], "Biyom": ["A language of Papua New Guinea."], "cape": ["A piece of land extending into water."], "Anasi": ["A language of Indonesia (Papua)."], "Kaure": ["A Papuan language spoken in West Papua, Indonesia."], "Banda Malay": ["A language of Indonesia (Maluku),"], "Koronadal Blaan": ["A language of the Philippines."], "Sarangani Blaan": ["A language of the Philippines."], "Barrow Point": ["A Paman language spoken in Queensland, Australia."], "Bongu": ["A language of Papua New Guinea."], "Bian Marind": ["A language of Indonesia (Papua)."], "ecoregion": ["A relatively large unit of land or water that is characterized by a distinctive climate, ecological features and plant and animal communities."], "Bishnupriya Manipuri": ["An Indo-Aryan language spoken in parts of the Indian states of Assam, Tripura, Manipur and others, as well as in Bangladesh, Burma, and other countries."], "Bilba": ["A language of Indonesia (Nusa Tenggara)."], "indigenous species": ["A species that occurs naturally in an area or habitat."], "threatened species": ["A species that is likely to become endangered in the near future."], "genetic drift": ["Random change in allele frequencies in a population from one generation to the next because of small population size (source: Schmidt, L. 1997)."], "random drift": ["Random change in allele frequencies in a population from one generation to the next because of small population size (source: Schmidt, L. 1997)."], "Tchumbuli": ["A language of Benin."], "Albay": ["A province of the Philippines located in the Bicol Region in Luzon."], "Easter Island": ["An island in the south Pacific Ocean belonging to Chile."], "Eurocentrism": ["The practice, conscious or otherwise, of placing emphasis on European (and, generally, Western) concerns, culture and values at the expense of those of other cultures."], "sheep's milk": ["Milk from sheep."], "sheep milk": ["Milk from sheep."], "cherry tomato": ["A smaller garden variety of tomato which is marketed at a premium to ordinary tomatoes, and is popular as a snack and in salads."], "current": ["A body of air, water, etc. that moves in a definite direction.", "The flow of electrons through a conductor caused by a potential difference.", "A tendency or a course of events.", "Of short expected duration (usually less than one year).", "Being or existing at the present moment.", "Existing or occurring at the moment.", "Generally accepted, used or practiced at the moment.", "Generally reported or known.", "(Of money) Acceptable as a medium of exchange.", "Belonging to the current period of time."], "alternating current": ["A current that flows alternately in one direction and then in the reverwse direction."], "direct current": ["Electricity that flows through a conductor in a single direction."], "current asset": ["Includes cash and those items that can be turned into cash in the near future, usually within one year."], "current liability": ["Debts that the business expects to pay within one year."], "dolt": ["A person with poor judgment or little intelligence."], "Linzer Torte": ["Cake made from shortpastry with ground hazelnuts, a filling of jam and a lattice of dough strips as top layer."], "Linzertorte": ["Cake made from shortpastry with ground hazelnuts, a filling of jam and a lattice of dough strips as top layer."], "cash flow": ["Incoming cash less outgoing cash during a given period."], "cash flow forecast": ["A projection of the cash flows, in and out, over the fiscal period of projection, to determine net cash balances at particular points in time and the need for either additional cash infusions or the opportunities for additional cash investments."], "undercurrent": ["A current flowing underneath another current at a different speed or in the opposite direction."], "Caribbean Current": ["A warm water current that flows into the Caribbean Sea from the east along the coast of South America."], "Caribbean Sea": ["A tropical sea in the Western Hemisphere, part of the Atlantic Ocean, southeast of the Gulf of Mexico."], "Gulf Stream": ["A powerful, warm, and swift Atlantic ocean current that originates in the Gulf of Mexico, exits through the Strait of Florida, and follows the eastern coastlines of the United States and Newfoundland before crossing the Atlantic Ocean."], "Norwegian Current": ["A cold water current that flows north-easterly along the Atlantic coast of Norway."], "Antarctic Circumpolar Current": ["An ocean current that flows from west to east around Antarctica."], "Oyashio Current": ["A cold subarctic ocean current that flows south and circulates counterclockwise in the western North Pacific Ocean."], "Humboldt Current": ["A cold, low salinity ocean current that extends along the West Coast of South America from Northern Peru to the southern tip of Chile."], "starry": ["Abounding with stars."], "star-studded": ["Abounding with stars."], "star-covered": ["Abounding with stars."], "calcareous": ["Containing calcium carbonate."], "correlate": ["To show a definite correspondence in character and stratigraphic position between geologic formations in two or more separated areas.", "To establish a correspondance to something.", "A numeric measure of the strength of linear relationship between two random variables.", "Mutually related."], "glacial": ["Pertaining to the activities of glaciers, or to the features or materials produced thereby."], "glaciation": ["The formation, movement, and recession of glaciers or ice sheets."], "laminated": ["Very thinly layered."], "Quaternary": ["The geologic period beginning two to three million years ago and extending to the present."], "tectonic": ["Pertaining to the forces involved in, or the resulting structures of, tectonics."], "Cape Horn Current": ["A cold water current that flows west-to-east around Cape Horn."], "Cape Horn": ["The southernmost headland of the Tierra del Fuego archipelago of southern Chile."], "adabtability": ["The potential or ability of a population to adapt to changes in the environmental conditions through changes of its genetic structure (source: Koski, V. et al. 1997)."], "adaptedness": ["The state of being adapted that allows a population to survive, reproduce and permanently exist in certain conditions of the environment (source: Koski, V. et al.)."], "agricultural biodiversity": ["The variety and variability of animals, plants and micro-organisms which are necessary to sustain key functions of the agro-ecosystem, its structure and processes for, and in support of, food production and food security."], "agrobiodiversity": ["The variety and variability of animals, plants and micro-organisms which are necessary to sustain key functions of the agro-ecosystem, its structure and processes for, and in support of, food production and food security."], "forest biodiversity": ["The variability among living organisms and the ecological processes of which they are part; this includes diversity of living in forests within species, between species, and of ecosystems."], "gene flow": ["The movement of genes by pollen (dispersal of gametes), seeds (through zygotes) and plants from one population to another."], "absolute error": ["The absolute value of the difference between the measured value of a quantity and its true value."], "bar graph": ["A graph in which the length of a bar (rectangle) is used to represent a numerical amount."], "coefficient": ["The numeric factor in a term."], "cone": ["A three-dimensional figure whose base is a circle and whose shell tapers to a point.", "A photoreceptor cell in the retina of the eye which function best in relatively bright light.", "An animal of the family Conidae, consisting of sea snails, marine gastropod mollusks.", "The fruit of a pine or fir tree."], "correlation": ["The relation between two sets of data."], "cylinder": ["A three-dimensional figure with two congruent bases in parallel planes.", "A three-dimensional figure with two congruent circular bases in parallel planes.", "A single track location on all the platters making up a hard disk.", "A printing plate used on a modern rotary printing press.", "The cylindric chamber or hole in the cylinder block of a combustion engine that houses the pistons and where combustion takes place."], "equilateral": ["In a given shape, all sides have the same length."], "equiangular": ["In a given shape, all angles have the same measure."], "factoring": ["Rewriting a mathematical expression as a product of factors."], "histogram": ["A graph that uses bars to show the frequency of data within equal intervals."], "isosceles triangle": ["A triangle with at least two congruent sides."], "obtuse": ["(An angle measure) greater than 90\u00b0 and less than 180\u00b0."], "probability": ["The chance of an event occurring."], "proportion": ["An equation showing that two ratios are equal.", "A principle of design that refers to the relative size of the parts of a work of art.", "To adjust in size so as to establish a correct relationship with other things."], "random variable": ["A variable that takes any of a range of values that cannot be predicted with certainty."], "relative error": ["The error or uncertainty in a measurement expressed as a fraction of the true value."], "standard deviation": ["The measure of the dispersion of a distribution is equal to the square root of the variance."], "conjecture": ["A tentative solution or generalisation inferred from collected data.", "To believe especially on uncertain or tentative grounds.", "To suppose with contestable premises."], "exchange rate": ["The price of a unit of the currency of one country in terms of the currency of another."], "inflation rate": ["A quantitative measure which indicates the rate at which the price of consumer goods are increasing over time."], "variety show": ["A show with a variety of acts, often including music and comedy skits, especially on television."], "variety of algebras": ["The class of all algebraic structures of a given signature satisfying a given set of identities."], "universal algebra": ["The field of mathematics that studies the ideas common to all algebraic structures."], "genetic variance": ["Variation in a trait within populations, as measured by the variance that is due to genetic differences among individuals."], "additive genetic variance": ["That component of the genetic variance in a character that is attributable to additive effects of alleles."], "dominance genetic variance": ["The component of non-additive genetic variance that is due to within-locus dominance deviations."], "locus": ["Place (locale) of an action or event.", "A site on a chromosome occupied by a specific gene; more loosely, the gene itself, in all its allelic states.", "A small area of a place."], "dominance": ["Of an allele, the extent to which it produces when heterozygous the same phenotype as when homozygous.", "The principle of visual organization that suggests certain elements should assume more importance than others in the same composition or design.", "Of a species, the extent to which it is numerically (or otherwise) predominant in a community."], "homozygote": ["An individual organism that has the same allele at each of its copies of a genetic locus."], "out do": ["(Colloquial) Tu surpass, to take advantage of somebody else."], "heterozygote": ["An individual organism that possesses different alleles at a locus."], "intelligent design": ["The idea that an intelligent designer played a role in some aspect of the evolution of life on earth, usually the origin of life itself."], "dominant allele": ["One of a pair of alleles that is expressed and that suppresses the expression of the other member of the pair when both are present."], "dominant gene": ["A gene that is fully expressed in a heterozygote."], "dorsal": ["On or relating to the back or outer surface of an organ."], "ventral": ["Relating to or pertaining to the abdomen", "Pertaining to the under surface of the abdomen. On the anterior or inner surface of an organ."], "blowhole": ["In cetaceans, the single or paired respiratory opening."], "Masbate": ["An island province of the Philippines located in the Bicol Region."], "shell fish": ["A culinary term for aquatic invertebrates used as food: molluscs, crustaceans, and echinoderms."], "caress": ["To touch or kiss lovingly."], "fondle": ["To touch or kiss lovingly."], "cajole": ["To encourage, influence or persuade by effort."], "coax": ["To encourage, influence or persuade by effort."], "caries": ["The progressive destruction of bone or tooth by decay.\\nAn infection of the teeth that causes demineralization of the hard tissues and destruction of the organic matter of the tooth."], "Cassiopeia": ["A circumpolar constellation of the northern sky representing Queen Cassiopeia from Greek myth.", "In Greek mythology, proud wife of Cepheus and mother of Andromeda, queen of Eritrea."], "cataclysm": ["A sudden, violent event.", "A sudden violent change in the earth's surface."], "Andromeda": ["A constellation in the northern sky named for the princess Andromeda (which is Greek for Ruler over men).", "A Greek mythological figure who was chained to a rock to be eaten by a sea monster and was saved by Perseus, whom she later married."], "macroinvertebrate": ["An organism without a backbone that is large enough to be seen with the unaided eye."], "oil field": ["Area where petroleum is or was removed from the Earth."], "oilfield": ["Area where petroleum is or was removed from the Earth."], "rapid": ["Fast flowing section of a stream, often shallow and with exposed rock or boulders.", "Characterized by speed; acting or moving quickly."], "crossing": ["A place where two or more routes of transportation form a junction or intersection.", "A place where pedestrians can cross a street here - e.g. zebra crossing."], "cemetery": ["A place or area for burying the dead."], "Bagusa": ["A language of Indonesia (Papua)."], "Bung": ["A language of Cameroon."], "Bago-Kusuntu": ["A language of Togo."], "Baima": ["A language of China."], "Bakhtiari": ["A language of Iran", "A group of southwestern Iranian people."], "Banda-Mbr\u00e8s": ["A language of Central African Republic and Sudan."], "Bilakura": ["A language of Papua New Guinea."], "Wumboko": ["A language of Cameroon."], "Bulgarian Sign Language": ["A sign language of Bulgaria."], "Balo": ["A language of Cameroon."], "Busa": ["A language of Nigeria."], "Burusu": ["A language of Indonesia (Kalimantan)."], "Bosngun": ["A language of Papua New Guinea."], "Bamukumbit": ["A language of Cameroon."], "Boguru": ["A language of Sudan."], "Begbere-Ejar": ["A language of Nigeria."], "Buru": ["A language of Nigeria."], "Baangi": ["A language of Nigeria."], "Bali Sign Language": ["A sign language of Indonesia (Java and Bali)."], "Bakaka": ["A language of Cameroon."], "Braj Bhasha": ["A language of India."], "Baraamu": ["A language of Nepal."], "Bera": ["A language of Democratic Republic of the Congo."], "Baure": ["An Arawakan language spoken by the Baure people of the Beni department in Bolivia."], "Mokpwe": ["A language of Cameroon."], "Bieria": ["A language of Vanuatu."], "Birwa": ["A language of Botswana and South Africa."], "Barambu": ["A language of the Democratic Republic of the Congo."], "Boruca": ["A language of Costa Rica"], "Brokkat": ["A Southern Tibetan language spoken by some of the Brokpa people in Dur, in the Bumthang District, in the north-central part of Bhutan."], "Barapasi": ["A language of Indonesia (Papua)."], "Breri": ["A language of Papua New Guinea."], "Birao": ["A language of the Solomon Islands."], "Baras": ["A language of Indonesia (Sulawesi)."], "Bitare": ["A language of Nigeria and Cameroon"], "Burui": ["A language of Papua New Guinea."], "Bilbil": ["A language of Papua New Guinea."], "Abinomn": ["A language isolate spoken in the Papua province of Indonesia."], "Brunei Bisaya": ["A language of Brunei."], "Bassari": ["A language of Senegal, Guinea and Guinea-Bissau"], "Sarawak Bisaya": ["A language of Malaysia (Sarawak)."], "Wushi": ["A language of Cameroon."], "Bauchi": ["A language of Nigeria."], "Bashkardi": ["A language of Iran."], "Kati": ["A dialect of the Kamkata-viri language spoken by the Kata people in Afghanistan and Pakistan."], "Bassossi": ["A language of Cameroon."], "Bangwinji": ["A language of Nigeria."], "Busami": ["A language of Indonesia (Papua)."], "Barasana": ["A language of Colombia."], "Sochi": ["South Russian city on the coast of the Black Sea situated in Krasnodar Krai."], "Baga Sitemu": ["A language of Guinea."], "Bolivian Sign Language": ["A sign language of Bolivia."], "Belgian Sign Language": ["A sign language of Belgium,"], "Brazilian Sign Language": ["A sign language of Brazil."], "Chadian Sign Language": ["A sign language of Chad."], "devil": ["Title given to the supernatural being, who is believed to be a powerful, evil entity and the tempter of humankind.", "To make someone rather angry or impatient; to cause annoyance."], "testosterone": ["A hormone that promotes the development and maintenance of male sex characteristics."], "thalamus": ["An area of the brain that helps process information from the senses and transmit it to other parts of the brain."], "therapeutic": ["Having to do with treating disease and helping healing take place."], "Bassa": ["A language of Liberia and Sierra Leone."], "Bassa-Kontagora": ["A language of Nigeria."], "Bahonsuai": ["A language of Indonesia (Sulawesi)."], "Yangkam": ["A language of Nigeria."], "Sabah Bisaya": ["A language of Malaysia (Sabah)."], "Beti": ["A language of Cameroon.", "A language of the C\u00f4te d'Ivoire"], "Bati": ["A language of Cameroon.", "A language of Indonesia (Maluku)."], "Batak Dairi": ["A language of Indonesia (Sumatra)."], "Gagnoa B\u00e9t\u00e9": ["A language of the C\u00f4te d'Ivoire."], "Biatah": ["A language of Malaysia (Sarawak) and Indonesia (Kalimantan)."], "Burate": ["A language of Indonesia (Papua)."], "thoracic": ["Having to do with the chest."], "thrombocyte": ["A type of blood cell that helps prevent bleeding by causing blood clots to form."], "platelet": ["A type of blood cell that helps prevent bleeding by causing blood clots to form."], "thrombophlebitis": ["Inflammation of a vein that occurs when a blood clot forms."], "phlebitis": ["An inflammation of a vein, usually in the legs."], "photophobia": ["A condition in which the eyes are more sensitive than normal to light."], "physiologic": ["Having to do with the functions of the body."], "pituitary gland": ["The main endocrine gland. It produces hormones that control other glands and many body functions, especially growth."], "outrageous": ["Constituting a grave offense in action or speech.", "Extraordinary in some bad way."], "adaptable": ["Able to adjust easily to new conditions."], "scenery": ["Set of objects that make up a scene."], "specific": ["Distinguishing something particular."], "serene": ["Showing no trouble or agitation.", "Of the weather or the skies: Completely clear and fine."], "contaminated": ["With the presence of something not desired."], "at disposal": ["Which is available."], "back of the hand": ["The upper side of the hand without the fingers."], "intracranial": ["Situated within the cranium."], "requirement": ["In engineering, a singular documented need of what a particular product or service should be or do.", "Indispensable circumstance that makes possible a specific condition."], "genetic programming": ["An evolutionary algorithm based methodology inspired by biological evolution to find computer programs that perform a user-defined task."], "heuristic": ["Pertaining to how something is discovered.", "Any method found through discovery and observation."], "Turing machine": ["Extremely basic abstract symbol-manipulating devices which, despite their simplicity, can be adapted to simulate the logic of any computer that could possibly be constructed."], "linear programming": ["A mathematical procedure for minimizing or maximizing a linear function of several variables, subject to a finite number of linear restrictions on these variables."], "optimization": ["In mathematics, the study of problems in which one seeks to minimize or maximize a real function by systematically choosing the values of variables from within an allowed set."], "monologue": ["A part of a play in which one character speaks alone."], "soliloquy": ["A speech in a play in which a character tells his thoughts by talking aloud as if to himself."], "theme": ["The main idea or ideas emerging from a literary work.", "An important melody that occurs several times throughout a piece of music."], "theme park": ["An amusement park that is designed to carry a theme in one or more areas of the park."], "accompaniment": ["The subordinate music that supports the principal voice or instrument in a piece of music."], "baritone": ["The range of male voice pitch that is deeper than tenor, but not so deep as bass.", "A cylindrical bore instrument, member of the brass instrument family, pitched in B\u266d."], "baroque": ["The period of European music from the early to mid 1600's to the mid 1700's.", "The seventeenth-century period in Europe characterized in the visual arts by dramatic light and shade, turbulent composition, and exaggerated emotional expression."], "classical": ["The period in European music from roughly the mid 1700's to the early 1800's.", "Referring to the culture, art and architecture of ancient Greece and Rome.", "A traditional genre of music conforming to an established form and appealing to critical interest and developed musical taste."], "crescendo": ["In music, a progressive increase in loudness."], "diminuendo": ["Getting progressively softer."], "vibrato": ["The slightly wavering quality that a singer has in his voice while sustaining a tone.", "On string instruments, small but rapid fluctuations in pitch used to intensify a sound."], "periodic": ["Characterized by repetition of patterns in fixed intervals of space or time."], "industrial design": ["An applied art whereby the aesthetics and usability of products may be improved."], "graphic design": ["The use of graphic elements and text to communicate an idea or concept."], "upgrade": ["An improved component or replacement item.", "To replace a program with a later version of itself."], "Bacanese Malay": ["A language of Indonesia (Maluku)."], "Bhatola": ["A language of India."], "terrace": ["An element where a raised flat paved or gravelled section overlooks a prospect."], "Batak Mandailing": ["A language of Indonesia (Sumatra)."], "Ratagnon": ["A language of the Philippines."], "at home": ["At ones house."], "Iriga Bicolano": ["A language of the Philippines."], "Budibud": ["A language of Papua New Guinea."], "Montepertusan": ["A male person from Montepertuso.", "A person from Montepertuso."], "Baetora": ["A language of Vanuatu."], "Batak Simalungun": ["A language of Indonesia (Sumatra)."], "Bete-Bendi": ["A language of Nigeria."], "Batu": ["A language of Nigeria."], "Butuanon": ["A language of the Philippines."], "Batak Karo": ["A language of Indonesia (Sumatra)."], "Bobot": ["A language of Indonesia (Maluku)"], "Batak Alas-Kluet": ["A language of Indonesia (Sumatra)."], "Bua": ["A language of Chad."], "consumer": ["An organism requiring complex organic compounds for food which it obtains by preying on other organisms or by eating particles of organic matter.", "An individual or organization who purchases and uses goods or services."], "electric circuit": ["The complete path of an electric current including usually the source of electric energy."], "circuit": ["The complete path of an electric current including usually the source of electric energy.", "Courts whose jurisdiction extends over one or more counties in the United States with at least one courthouse in each county."], "electric current": ["The flow of electrons through a conductor caused by a potential difference."], "inherited": ["Received from ancestors by genetic transmission."], "kinetic energy": ["Energy that a body has as a result of its motion."], "relativistic kinetic energy": ["Kinetic energy at very high speeds approaching the speed of light."], "special theory of relativity": ["A physical theory of relativity based on the assumption that the speed of light in a vacuum is a constant and the assumption that the laws of physics are invariant in all inertial systems."], "inertial system": ["A non-accelerating coordinate system."], "lightspeed": ["The speed of light in a vacuum which is equal to 299,792,458 metres per second."], "light speed": ["The speed of light in a vacuum which is equal to 299,792,458 metres per second."], "general theory of relativity": ["A fundamental physical theory of gravitation which corrects and extends Newtonian gravitation, especially at the macroscopic level of stars and planets."], "thermal energy": ["A form of energy that is transferred by a difference in temperature: it is equal to the total kinetic energy of the atoms or molecules of a system.", "The kinetic energy of molecular motion. Measured as temperature and perceived as heat."], "Ntcham": ["A language of Togo and Ghana."], "Beothuk": ["An extinct language of Canada."], "Bushoong": ["A language of the Democratic Republic of the Congo."], "fingertip": ["The end or tip of a finger."], "Bugis": ["A language spoken by people mainly in the southern part of Sulawesi, Indonesia and in Malaysia (Sabah)"], "radiant energy": ["Energy traveling in electromagnetic waves, measured in joules."], "potential energy": ["The energy which a body possesses as a consequence of it's position in the field of gravity, the work required to bring the body up against gravity from a standard level."], "chemical energy": ["Energy inherent in the chemical bonds which hold molecules together. Examples are coal and oil, which have energy potential that is released upon combustion."], "renewable energy": ["Energy obtained from sources that are essentially inexhaustible, unlike, for example, the fossil fuels, of which there is a finite supply."], "wind energy": ["Energy obtained from turbine engines powered by wind."], "apastron": ["Point of greatest distance of the elliptical orbit of a star in a binary star system from the center of mass of the system"], "periastron": ["Point of least distance of the elliptical orbit of a star in a binary star system from the center of mass of the system."], "constellation": ["Any one of the 88 areas into which the sky \u2014 or the celestial sphere \u2014 is divided."], "Scorpio": ["One of the twelve constellations of the zodiac."], "Capricorn": ["One of the twelve constellations of the zodiac."], "Aquarius": ["One of the twelve constellations of the zodiac."], "Pisces": ["One of the twelve constellations of the zodiac."], "Aries": ["One of the twelve constellations of the zodiac.", "The first sign of the zodiac which the sun enters at the vernal equinox; the sun is in this sign from about March 21 to April 19.", "A person who is born while the sun is in Aries."], "Taurus": ["One of the twelve constellations of the zodiac.", "The second sign of the zodiac; the sun is in this sign from about April 20 to May 20.", "A person who is born while the sun is in Taurus."], "Gemini": ["One of the twelve constellations of the zodiac.", "The third sign of the zodiac; the sun is in this sign from about May 21 to June 20.", "A person who is born while the sun is in Gemini."], "Leo": ["One of the twelve constellations of the zodiac.", "Male first name."], "Libra": ["One of the twelve constellations of the zodiac."], "Sagittarius": ["One of the twelve constellations of the zodiac."], "speed of light": ["The speed of light in a vacuum which is equal to 299,792,458 metres per second."], "receipt": ["A commercial document issued by a seller to the buyer, indicating products or services already provided to the buyer as well as the corresponding price that the buyer has to pay.", "A written or printed acknowledgement that a specified amount of money or goods has been received as an exchange.", "To report the receipt of."], "Antlia": ["A relatively new constellation as it was only created in the 18th century, being too faint to be acknowledged by the ancient Greeks."], "Apus": ["A faint southern constellation, not visible to the ancient Greeks."], "Aquila": ["A constellation listed by Ptolemy, which lies roughly at the celestial equator."], "Ara": ["A southern constellation situated between the constellations Scorpius and Triangulum Australe."], "Camelopardalis": ["A large and faint northern constellation."], "Caelum": ["A minor southern constellation first recognized in the 17th century."], "Bongili": ["A language of Congo."], "Basa-Gurmana": ["A language of Nigeria."], "Bugawac": ["A language of Papua New Guinea."], "Sherbro": ["A language of Sierra Leone."], "Terei": ["A language of Papua New Guinea."], "Busoa": ["A language of Indonesia (Sulawesi)."], "Brem": ["A language of Papua New Guinea."], "Bokobaru": ["A language of Nigeria."], "Bungain": ["A language of Papua New Guinea."], "Budu": ["A language of Democratic Republic of the Congo."], "Bun": ["A language of Papua New Guinea."], "Bubi": ["A language of Gabon."], "Bullom So": ["A language of Sierra Leone and Guinea."], "Bukwen": ["A language of Nigeria."], "avaricious": ["Immoderately desirous of accumulating property.", "Excessively desirous of money, wealth or possessions."], "Bube": ["A language of Equatorial Guinea."], "Baelelea": ["A language of the Solomon Islands."], "Baeggu": ["A language of the Solomon Islands."], "Berau Malay": ["A language of Indonesia (Kalimantan)."], "Bonkeng": ["A language of Cameroon."], "Belanda Viri": ["A language of Sudan."], "Baan": ["A language of Nigeria."], "Bukat": ["A language of Indonesia (Kalimantan)."], "Bamunka": ["A language of Cameroon."], "Buna": ["A language of Papua New Guinea."], "Bolgo": ["A language of Chad."], "burst": ["To break from internal pressure.", "A sudden increase in brightness along the path of a meteor.", "To cause to burst.", "A radar term for a single pulse of radio energy.", "An instance of, or the act of bursting.", "Break, burst in to pieces violently."], "Burarra": ["A language of Australia."], "Bukit Malay": ["A language of Indonesia (Kalimantan)."], "Baniva": ["An extinct language of Venezuela."], "Dibole": ["A language of Congo."], "Bauzi": ["A language of Indonesia (Papua)."], "year of marriage": ["One year during a marriage."], "cable modem": ["A modulator-demodulator at subscriber locations intended for use in conveying data communications on a cable television system."], "cable television": ["A transmission system that distributes broadcast television signals and other services by means of a cable."], "caller ID": ["A telephony service that transmits the caller's telephone number and in some places the caller's name to the called party's telephone equipment during the ringing signal or when the call is being set up but before the call is answered."], "Bwatoo": ["A language of New Caledonia."], "Namosi-Naitasiri-Serua": ["A language of Fiji."], "Bwile": ["A language of Zambia and the Democratic Republic of the Congo"], "Bwaidoka": ["A language of Papua New Guinea."], "Bwe Karen": ["A language of Myanmar."], "Boselewa": ["A language of Papua New Guinea."], "Barwe": ["A language of Mozambique."], "Bishuo": ["A language of Cameroon."], "Baniwa": ["A language of Brazil and Venezuela."], "L\u00e1\u00e1 L\u00e1\u00e1 Bwamu": ["A language of Burkina Faso."], "Bauwaki": ["A language of Papua New Guinea."], "Bwela": ["A language of the Democratic Republic of the Congo."], "Biwat": ["A language of Papua New Guinea."], "Mandobo Bawah": ["A language of Indonesia (Papua)."], "Southern Bobo Madar\u00e9": ["A language of Burkina Faso."], "Bomboma": ["A language of the Democratic Republic of the Congo"], "Bafaw-Balong": ["A language of Cameroon."], "elastic collision": ["A collision in which no kinetic energy is lost."], "collision detection": ["The use of algorithms for checking for intersection between two given solids, to calculating trajectories, impact times and impact points in a physical simulation."], "virtual reality": ["A computer-based technology for simulating visual, auditory, and other sensory aspects of complex environments."], "Bahau River Kenyah": ["A language of Indonesia (Borneo). (IMPORTANT: Prevoius description said that it is one of the languages of Ghana. However, two different sources are saying different: http://en.wikipedia.org/wiki/Kenyah and http://www.peoplegroups.org/SearchResults.aspx?PID=Kenyah%2C+Bahau+River+-+(bwv)&SelTbl=Language) -- remove this if you solved this issue.)"], "Bwa": ["A language of Democratic Republic of the Congo."], "Cwi Bwamu": ["A language of Burkina Faso."], "Bwisi": ["A language of Congo and Gabon."], "Bauro": ["A language of the Solomon Islands."], "Molengue": ["A language of Equatorial Guinea."], "Birale": ["A language of Ethiopia."], "Bilur": ["A language of Papua New Guinea."], "Bangala": ["A language of Democratic Republic of the Congo."], "Buhutu": ["A language of Papua New Guinea."], "Pirlatapa": ["An extinct language of Australia."], "Bayungu": ["A language of Australia."], "Bukusu": ["A language of Kenya."], "Jalkunan": ["A language of Burkina Faso."], "Burduna": ["A language of Australia."], "Bebil": ["A language of Cameroon."], "Busam": ["A language of Cameroon."], "Buxinhua": ["A language of China."], "Bankagooma": ["A language of Mali."], "Borna": ["A language of the Democratic Republic of the Congo."], "Binahari": ["A language of Papua New Guinea."], "cord": ["A long, thin, flexible length of twisted strands of fibre/fiber, for example rope; (uncountable) such a length of twisted strands considered as a commodity.", "A cross-section measurement of an aircraft's wing.", "A unit of measurement used for firewood, equal to 128 cubic feet (4 x 4 x 8 feet).", "A small flexible conductor assembly of insulated wires, \"lamp\" or \"sweeper\" cords."], "harmony": ["A pleasing combination of elements, or arrangement of sounds.", "Two or more musical notes played simultaneously to produce a chord."], "Batak": ["A language of the Philippines.", "The script used to write the language Batak spoken in the Philippines."], "Bikya": ["A language of Cameroon."], "Ubaghara": ["A language of Nigeria."], "Benyadu'": ["A language of Indonesia (Kalimantan)."], "Pouye": ["A language of Papua New Guinea."], "Bete": ["A language of Nigeria."], "Bujhyal": ["A language of Nepal."], "Buyu": ["A language of the Democratic Republic of the Congo."], "Bina": ["A language of Nigeria."], "Bayono": ["A language of Indonesia (Papua)."], "Bidyara": ["A language of Australia."], "gamut": ["A complete range.", "The subset of colors which can be accurately represented in a given circumstance, such as within a given color space or by a certain output device."], "vocation": ["An occupation, either professional or voluntary, that is seen more to those who carry it out than simply financial reward. Vocations can be seen as providing a psychological or spiritual need for the worker, and are often assumed to carry some form of altruistic intent."], "water main": ["Duct for conveying water to a given place."], "conduit": ["Duct for conveying water to a given place."], "main pipe": ["Duct for conveying water to a given place."], "bounding main": ["The mass of water occupying all of the Earth's surface not occupied by land, but excluding all lakes and inland seas."], "Colorado potato beetle": ["(Leptinotarsa decemlineata) Yellow and black striped beetle from the family of the Chrysomelidae which originates from America and feeds upon parts of the potato plant."], "Colorado beetle": ["(Leptinotarsa decemlineata) Yellow and black striped beetle from the family of the Chrysomelidae which originates from America and feeds upon parts of the potato plant."], "ten-striped spearman": ["(Leptinotarsa decemlineata) Yellow and black striped beetle from the family of the Chrysomelidae which originates from America and feeds upon parts of the potato plant."], "ten-lined potato beetle": ["(Leptinotarsa decemlineata) Yellow and black striped beetle from the family of the Chrysomelidae which originates from America and feeds upon parts of the potato plant."], "potato beetle": ["(Leptinotarsa decemlineata) Yellow and black striped beetle from the family of the Chrysomelidae which originates from America and feeds upon parts of the potato plant."], "charge card": ["A card which requires payment in full upon receipt of the statement."], "debit card": ["A payment method that allows immediate settlement of a payment through direct withdrawal from the cardholder\u2019s account and which comes in form of a rectangle of plastic containing machine-readable information."], "prepaid card": ["A card paid for at point of sale permitting the holder to buy goods and services up to the prepaid value."], "point of sale": ["The location at which a transaction takes place."], "Aconcagua": ["A river in Chile that rises from the joint of two minor tributary rivers at 1430 metres over sea level in the Andes, flows eastward through the Aconcagua's Valley, and enters the Pacific ocean 20 km north of Valpara\u00edso.", "The highest mountain in the Americas, and the highest mountain outside Asia. It is located in the Andes mountain range, in the Argentine province of Mendoza."], "Amazon": ["A river of South America and the largest river in the world by volume, with greater total river flow than the next eight largest rivers combined, and with the largest drainage basin in the world."], "Orinoco": ["One of the longest rivers in South America at 2,410 km, (1,497.5 miles). Its drainage basin covers 880,000 km\u00b2, in Venezuela and Colombia."], "Magdalena": ["The principal river of Colombia, running about 1,540 kilometres (950 miles) from South to North through the western half of the country."], "Caron\u00ed": ["A major river of the Orinoco basin in South America, having its source in South Eastern Venezuela, in the Guiana Highlands."], "Paran\u00e1": ["A river in south central South America, running through Brazil, Paraguay and Argentina over a course of some 2,570 kilometers (1,600 miles)."], "Bilen": ["A Central Cushitic language which is spoken in central Eritrea.", "A language of Eritrea."], "Bumaji": ["A language of Nigeria."], "Baruya": ["A language of Papua New Guinea."], "Burak": ["A language of Nigeria."], "Medumba": ["A language of Cameroon."], "Belhariya": ["A Kiranti language spoken in Eastern Nepal."], "Qaqet": ["A language of Papua New Guinea."], "Buya": ["A language of the Democratic Republic of the Congo."], "Banaro": ["A language of Papua New Guinea."], "Bandi": ["A language of Liberia."], "Andio": ["A language of Indonesia (Sulawesi)."], "Bribri": ["A language of Costa Rica"], "Jenaama Bozo": ["A Bozo language of Mali and Nigeria."], "Sorko": ["A Bozo language of Mali and Nigeria."], "Boikin": ["A language of Papua New Guinea."], "Babuza": ["A language of Taiwan."], "Mapos Buang": ["A language of Papua New Guinea."], "Belize Kriol English": ["A language of Belize."], "Nicaragua Creole English": ["A language of Nicaragua."], "Boano": ["A language of Indonesia (Sulawesi).", "A language of Indonesia (Maluku)"], "Bozaba": ["A language of the Democratic Republic of the Congo."], "Kemberano": ["A language of Indonesia (Papua)."], "Brithenig": ["An attempt to create the Romance language that might have evolved if Latin speakers had been a sufficient number to displace Celtic as the spoken language of the people in Great Britain."], "Burmeso": ["A language of Indonesia (Papua)."], "Bebe": ["A language of Cameroon."], "Basa": ["A language of Nigeria."], "Hainyaxo Bozo": ["A Bozo language spoken in Mali."], "Obanliku": ["A language of Nigeria"], "Evant": ["A language of Nigeria and Cameroon."], "tunnel vault": ["Semi-cylindrical vault."], "magnanimity": ["Liberality in bestowing gifts; extremely liberal and generous of spirit."], "Ch'orti'": ["A Mayan language spoken in Guatemala in the municipalities of Jocot\u00e1n and d'Olopa, located in the department of Chiquimula, as well as in the department of Zacapa."], "Garifuna": ["A language of Honduras, Belize, Guatemala and Nicaragua"], "Lehar": ["A language of Senegal."], "capacity": ["The amount that can be contained (either persons or things)."], "basalt": ["A dense black or grey igneous rock."], "conservationist": ["Someone who advocates the protection of a natural resource, usually by planned management, to prevent its depletion or destruction."], "Arthur Range": ["A mountain range in the South West Wilderness, Tasmania, Australia."], "Australian Alps": ["The highest mountain ranges of mainland Australia. They are located in south-eastern Australia, straddling far southern New South Wales and eastern Victoria."], "Great Dividing Range": ["Australia's most substantial mountain range, it stretches more than 3500km from the northeastern tip of Queensland, running the entire length of the eastern coastline through New South Wales, then into Victoria and turning west, before finally fading into the central plain at the Grampians in western Victoria."], "Eastern Highlands": ["Australia's most substantial mountain range, it stretches more than 3500km from the northeastern tip of Queensland, running the entire length of the eastern coastline through New South Wales, then into Victoria and turning west, before finally fading into the central plain at the Grampians in western Victoria."], "Blue Mountains": ["A range of sandstone geological structures that reach to at least 1190 metres, situated approximately 100 kilometres west of Sydney."], "West Coast Range": ["A group of mountains in the West Coast area of Tasmania in Australia."], "astigmatism": ["A distortion of the image on the retina caused by irregularities in the cornea or lens."], "load": ["To fill to excess so that function is impaired.", "The weight (materials, products, etc.) to be borne or conveyed.", "To transfer from a storage device to a computer's memory.", "To fill or place a load on.", "To provide (a device or weapon) with something necessary."], "helmet": ["any of various forms of protective head covering worn e.g. by soldiers, firefighters, divers, cyclists, etc."], "chiaroscural": ["Relating to the use of chiaroscuro in painting."], "Ubuntu": ["A Linux distribution, based on Debian GNU/Linux.", "An ethic or humanist philosophy focusing on people's allegiances and relations with each other."], "in spite of that": ["in opposition to this fact (Re. restriction, opposition)"], "buckle up": ["To fasten the safety belt (as a driver or passenger in a car, plane etc.)."], "wear one's safety belt": ["To fasten the safety belt (as a driver or passenger in a car, plane etc.)."], "Debian": ["A major Linux distribution, noted for its open development and strict adherence to the open-software philosophy."], "router": ["A networking device that enables one network to connect with another; typically, routers allow several computers to share an internet connection."], "Novell": ["A computer software company, distributor of Novell Netware and SuSE Linux."], "SuSE": ["A retail Linux distribution."], "Windows": ["A microcomputer operating system used on the majority of desktop computers in the world, developed by Microsoft."], "Microsoft": ["The largest computer software company in the world, developer of the Windows operating system and a widely used office suite."], "serif": ["Typeface whose characters include ornamental strokes (called serifs) at the end of a stroke."], "sans serif": ["Typeface whose characters do not include serifs."], "monochrome": ["Having only a single color. Used particularly in computing to describe non-color monitors.", "Having only one color."], "Unix": ["A powerful computer operating system, first developed at AT&T."], "webcam": ["A small video camera attached to a computer and whose output is viewed over the internet."], "downsample": ["To lower the resolution of a digital image, generally to make a file smaller and match the expected output device resolution."], "boilerplate": ["The standard and typically uncustomized legal verbiage included in a computer program\u2019s license agreement.", "An expression or wording that is often and repeatedly used.", "A text template, specifically a sentence repeatedly used as the finishing last one.", "A sentence repeatedly used in speeches, talks, and interviews.", "The always identical final part of an e-mail.", "A piece of text, used as a standard template at the end of a message or notification."], "Tennis Court Oath": ["The oath taken on June 20, 1789 in a tennis court in Versailles by the members of the Third Estate not to separate until France has a constitution."], "French Revolution": ["A period of political and social upheaval in France and Europe which begins with the storming of the Bastille on July 14, 1789 and ends with the coup d'\u00e9tat of 18 Brumaire (November 9, 1799) by Napoleon Bonaparte and marks France's transition from absolute monarchy to republic."], "waist": ["In human beings, the part between the thorax and hips."], "remit": ["A set of responsibilities."], "absolutism": ["Form of government where the monarch has the power to rule his or her state without being restricted or controlled by other persons, institutions or laws."], "absolute monarchy": ["Form of government where the monarch has the power to rule his or her state without being restricted or controlled by other persons, institutions or laws."], "absolutistic": ["Pertaining to or based on absolutism."], "absolutist": ["Pertaining to or based on absolutism."], "Southern Carrier": ["A language of Canada."], "immeasurable": ["Impossible to measure."], "Nivacl\u00e9": ["A language of Paraguay and Argentina"], "Cahuarano": ["A language of Peru."], "Chan\u00e9": ["An extinct language of Argentina."], "Cemuh\u00ee": ["A language of New Caledonia."], "Chambri": ["A language of Papua New Guinea."], "Ch\u00e1cobo": ["A language of Bolivia."], "Chipaya": ["A language of Bolivia."], "Carib": ["A language of Venezuela, Brazil, French Guiana and Guyana"], "Tsiman\u00e9": ["A language of Bolivia."], "Cavine\u00f1a": ["A language of Bolivia."], "Callawalla": ["A language of Bolivia."], "Chiquitano": ["A language of Bolivia."], "Cayuga": ["A Northern Iroquoian language spoken on Six Nations of the Grand River First Nation, Ontario, Canada."], "Canichana": ["An extinct language of Bolivia."], "Cabiyar\u00ed": ["A language of Colombia."], "Karapan\u00e3": ["A language of Colombia and Brazil."], "Carijona": ["A language of Colombia."], "Chipiajes": ["An extinct language of Colombia."], "Chimila": ["A language of Colombia."], "Cagua": ["An extinct language of Colombia."], "Chachi": ["A language of Ecuador."], "Ede Cabe": ["A language of Benin."], "guilty": ["Having committed an offense, crime, violation, or wrong, especially against moral or penal law."], "Bualkhaw Chin": ["A language of Myanmar."], "ordering party": ["A person who orders the realization of an artwork or a work and pays for it."], "Yepocapa Southwestern Kaqchikel": ["A language of Guatemala."], "Izora": ["A language of Nigeria."], "Cashibo-Cacataibo": ["A language of Peru."], "Cashinahua": ["A language of Peru and Brazil."], "Chayahuita": ["A language of Peru."], "Candoshi-Shapra": ["A language of Peru."], "Cacua": ["A language of Colombia."], "Carabayo": ["A language of Colombia."], "abase": ["To lower in level (rank, office, etc). (Re. Military)"], "abate": ["To take one thing from another.", "To make smaller."], "lessen": ["To make smaller."], "chronometer": ["An extremely accurate clock that is relatively unaffected by movement or temperature changes."], "colony": ["A group of the same species of plants or animals that live or grow close together.", "A settlement of people who leave their country to go live in a new land.", "A territory under the immediate political control of a state."], "rift valley": ["A valley created by the formation of a rift."], "Silicon Valley": ["The southern part of the San Francisco Bay Area in northern California, USA, originally referring to the concentration of silicon chip innovators and manufacturers, but eventually becoming a metaphor for the entire concentration of high tech businesses."], "projection": ["The method by which the curved surface of the globe is represented on a flat sheet of paper.", "A magnified image created by light thrown upon a semireflective surface.", "A forecast of future trends in the operation of a business."], "perspective": ["An approximate representation, on a flat surface (such as paper), of an image as it is perceived by the eye."], "Varennes-en-Argonne": ["French city in the d\u00e9partement of Meuse in the Lorraine region."], "Varennes": ["French city in the d\u00e9partement of Meuse in the Lorraine region."], "French Republican Calendar": ["A calendar created during the French Revolution which introduced new conventions for counting hours, days and months."], "French Revolutionary Calendar": ["A calendar created during the French Revolution which introduced new conventions for counting hours, days and months."], "Democratic People's Republic of Korea": ["A country in East Asia whose capital is Pyeongyang."], "Republic of Korea": ["A country in East Asia whose capital is Seul."], "compositional": ["Arranging or grouping."], "Republic of Guyana": ["A country in South America, with capital Georgetown."], "Republic of Mauritius": ["A country in the Indian Ocean with capital Port-Louis."], "Republic of Nauru": ["A country in Oceania."], "Republic of Yemen": ["A country in the Middle East located at the most Southern point of the Arabic peninsula, with capital San\u2018a\u2019."], "prevail": ["To emerge; to be visible or larger in number, quantity, power, status or importance.", "To show or prove superior.", "To be valid, applicable, or true."], "impulse": ["A wish or urge, particularly a sudden one."], "warlock": ["A man who performs witchcraft; performer of the black arts."], "male witch": ["A man who performs witchcraft; performer of the black arts."], "bewitcher": ["A man who performs witchcraft; performer of the black arts."], "abominable": ["Highly detestable. (Source: IPDF)"], "loathsome": ["Highly detestable. (Source: IPDF)"], "abominate": ["To detest on a high degree; to hate completely."], "abomination": ["Extreme hatred or detestation; the feeling of utter dislike.", "Objective cause of extreme disgust and revulsion."], "disgust": ["Extreme hatred or detestation; the feeling of utter dislike.", "A feeling of extreme dislike accompanied by nausea.", "To provoke disgust or strong distaste."], "Bastille": ["Former fort in Paris which was used as a prison and stormed by the people at the beginning of the French Revolution."], "probity": ["Quality of having strong moral principles."], "inadvertent": ["Without intention."], "Cauca": ["An extinct language of Colombia."], "Chamicuro": ["A Western Maipuran language spoken by the Chamicuro people living close to Pampa Hermosa in Peru."], "Chopi": ["A language of Mozambique."], "Samba Daka": ["A language of Nigeria."], "Atsam": ["A language of Nigeria."], "Kasanga": ["A language of Guinea-Bissau."], "Cutchi-Swahili": ["A language of Kenya and Tanzania"], "Malaccan Creole Malay": ["A language of Malaysia (Peninsular)."], "Comaltepec Chinantec": ["A language of Mexico."], "Chaungtha": ["A Tibeto-Burman language spoken by the Chaungtha people in central parts of Myanmar."], "Southern Zhuang": ["A language of China."], "Choni": ["A language of China."], "Chiru": ["A language of India."], "miniskirt": ["Very short skirt, ending several inches above the knee."], "mini-skirt": ["Very short skirt, ending several inches above the knee."], "Chamari": ["A language of India"], "Chepang": ["A language of Nepal."], "Chaudangsi": ["A language of India and Nepal"], "Min Dong": ["A Chinese language mainly spoken in the eastern part of Fujian Province in China, in and near Fuzhou and Ningde. It is also spoken in Brunei, Indonesia (Java and Bali), Malaysia (Peninsular), Singapore and Thailand."], "Cinda-Regi-Tiyal": ["A language of Nigeria."], "bud": ["A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect.", "An undeveloped or embryonic shoot and normally occurs in the axil of a leaf or at the tip of the stem."], "sole of foot": ["The underside of the human foot."], "plantar": ["Of or pertaining to the sole of the foot."], "bridge of the nose": ["The ridge of the nose running from the root of the nose down to the tip."], "iced": ["Chilled with ice."], "water-cooled": ["Chilled with water."], "Lower Chehalis": ["An extinct Tsamosan language formerly spoken in the south of Olympic Peninsula, Washington, USA."], "Chamacoco": ["A language of Paraguay."], "Cent\u00fa\u00fam": ["A language of Nigeria."], "Dijim-Bwilim": ["A language of Nigeria."], "Cara": ["A language of Nigeria."], "Como Karim": ["A language of Nigeria."], "Changriwa": ["A language of Papua New Guinea."], "Kagayanen": ["A language of the Philippines."], "Chiga": ["A language of Uganda."], "Chocangacakha": ["A language of Bhutan."], "Catawba": ["An extinct language of USA."], "Highland Oaxaca Chontal": ["A language of Mexico."], "shadeless": ["Without shade, offering no shade."], "Tabasco Chontal": ["A Mayan language spoken by the Chontal Maya people, an indigenous people of the Mexican state of Tabasco."], "Chinook": ["A language of the USA."], "Ojitl\u00e1n Chinantec": ["A language of Mexico."], "shady": ["Raising suspicion.", "Abounding in shade.", "Offering shade, located in the shade."], "Chuukese": ["A language of Micronesia."], "Cahuilla": ["A language of USA"], "Chinook Wawa": ["A language of Canada and the USA."], "unshaded": ["Without shade, offering no shade."], "Chipewyan": ["A language of Canada."], "Quiotepec Chinantec": ["A language of Mexico."], "Chumash": ["An extinct language of the USA."], "Chol\u00f3n": ["An extinct language of Peru."], "shaded": ["Offering shade, located in the shade."], "Chuwabu": ["A language of Mozambique."], "Chantyal": ["A language of Nepal."], "Ozumac\u00edn Chinantec": ["A language of Mexico."], "Cia-Cia": ["A language of Indonesia (Sulawesi)."], "Ci Gbe": ["A language of Benin."], "Chimariko": ["An extinct language of the USA."], "Earth's crust": ["The outer layers of the Earth's structure, varying between 6 and 48 km in thickness."], "archdiocese": ["Diocese administered by an archbishop."], "downhill": ["Down the slope of a hill or mountain."], "uphill": ["Up the slope of a hill or mountain."], "Kinnauri Chitkuli": ["A language of India."], "Cimbrian": ["An Upper German language spoken in northeastern Italy."], "Cinta Larga": ["A language of Brazil."], "Chiapanec": ["A language of Mexico."], "Tiri": ["A language of New Caledonia."], "Chippewa": ["A language of the USA."], "Chaima": ["A language of Venezuela."], "Western Cham": ["A language of Cambodia, Viet Nam and Thailand"], "Chru": ["A language of Viet Nam."], "Upper Chehalis": ["An extinct language of the USA."], "Chokwe": ["A language of the Democratic Republic of the Congo, Angola and Zambia"], "Eastern Cham": ["A language of Viet Nam."], "Chenapian": ["A language of Papua New Guinea."], "Ash\u00e9ninka Pajonal": ["A language of Peru."], "Cab\u00e9car": ["A language of Costa Rica."], "Chuave": ["A language of Papua New Guinea."], "Jinyu": ["A language of China."], "Tzimbrisch": ["An Upper German language spoken in northeastern Italy."], "Khumi Awa Chin": ["A language of Myanmar."], "Central Kurdish": ["A language of Iraq and Iran."], "Northern Kaqchikel": ["A language of Guatemala."], "Santo Domingo Xenacoj Kaqchikel": ["A language of Guatemala."], "Eastern Kaqchikel": ["A language of Guatemala."], "Southern Kaqchikel": ["A language of Guatemala."], "Chak": ["A language of Myanmar and Bangladesh."], "Santa Mar\u00eda de Jes\u00fas Kaqchikel": ["A language of Guatemala."], "Akatenango Southwestern Kaqchikel": ["A language of Guatemala."], "flow together": ["To merge, to join, or to come out at the same point coming from different points of origin."], "conformity": ["Acting according to certain accepted standards."], "unitary": ["Relating to or characterized by or aiming toward unity."], "promoter": ["The section of DNA that controls the initiation of RNA transcription as a product of a gene.", "An accelerator of a catalyst, though not a catalyst itself"], "consecrate": ["To give entirely to a specific person, activity, or cause."], "exhausted": ["Who lived a hard experience and is therefore drained of energy or effectiveness, or extremely tired."], "praise": ["the act of expressing approval or admiration; commendation; laudation.", "To extol in speech or writing."], "Yucat\u00e1n Maya": ["A Mayan language spoken in the Yucat\u00e1n Peninsula, northern Belize and parts of Guatemala."], "philology": ["The study of a language together with its literature and the historical and cultural contexts that are indispensable for an understanding of the literary works and other culturally significant texts."], "historical": ["Related to history."], "generalization": ["The process of arriving at some general notion from the individual instances belonging to some class."], "legend": ["A table on a map, chart, or the like, listing and explaining the symbols used."], "player": ["A person that plays a designated role in a film or play.", "A person that plays games."], "care about": ["To take the responsibility to look after something."], "administrative": ["Related to administration."], "regional": ["Related to region."], "delimitation": ["Enclosure within boundaries of time, space, etc."], "disappointed": ["Disappointingly unsuccessful; suffering from frustration."], "customer satisfaction": ["A measure of the degree to which a product or service meets the customer's expectations."], "customer care": ["The set of behaviors that a business undertakes during its interaction with its customers."], "customer loyalty": ["The behaviour customers exhibit when they make frequent repeat purchases of a brand."], "fate": ["The power or agency that, according to certain belief systems, predetermines and orders unalterably the course of events.", "Event that unavoidably happens to a person, country, institution, etc.", "An outcome, condition or event that is predetermined by fate [the power that predetermines events].", "To make inevitable."], "Kyoto Climate Change Treaty": ["An international treaty on global warming ratified by 141 countries. Countries which ratify this protocol commit to reduce their emissions of carbon dioxide and five other greenhouse gases, or engage in emissions trading if they maintain or increase emissions of these gases."], "impersonal verb": ["A verb that cannot take a true subject, because it does not represent an action, occurrence, or state-of-being of any specific person, place, or thing (source: Wikipedia)"], "Kyoto Protocol": ["An international treaty on global warming ratified by 141 countries. Countries which ratify this protocol commit to reduce their emissions of carbon dioxide and five other greenhouse gases, or engage in emissions trading if they maintain or increase emissions of these gases."], "devoutness": ["The continuity and perseverance in observing religious practices by virtue of being devout."], "diameter": ["Distance between the intersections of a circle with a straight line through its center"], "shortcoming": ["An imperfection in a device or machine."], "propagation": ["The dissemination of something to a larger area or greater number."], "quadrangular": ["Having four angles."], "gradation": ["(Of colors and sounds) A decrease in intensity."], "curve": ["A term indicating the curvature of an arc.", "Set of points that form an one-dimensional and continuous object."], "languoid": ["ISO.639.4: language object that can be distinguished from other language objects. NOTE: Can be used as a cover-all term for language groups, macrolanguages, languages, dialects and so on."], "Anufo": ["A language of Ghana, Benin and Togo."], "Kairak": ["A language of Papua New Guinea."], "Koasati": ["A language of the USA."], "Kavalan": ["A language of Taiwan."], "Western Kaqchikel": ["A language of Guatemala."], "Caka": ["Language of Cameroon."], "Kaqchikel-K'iche' Mixed Language": ["A language of Guatemala."], "Chilcotin": ["A language of Canada."], "Chaldean Neo-Aramaic": ["A modern Eastern Aramaic language spoken on the Plain of Mosul in northern Iraq."], "Lealao Chinantec": ["A language of Mexico."], "Chakali": ["A language of Ghana."], "Idu-Mishmi": ["A language of India."], "Clallam": ["A language of the USA"], "Lowland Oaxaca Chontal": ["A language of Mexico."], "Caluyanun": ["A language of the Philippines."], "Eastern Highland Chatino": ["A language of Mexico."], "Cerma": ["A language of Burkina Faso and the C\u00f4te d'Ivoire."], "Ember\u00e1-Cham\u00ed": ["A language of Colombia."], "Chimakum": ["An extinct language of USA"], "Campalagian": ["A language of Indonesia (Sulawesi)."], "Mro Chin": ["A language of Myanmar."], "Camtho": ["A language of South Africa."], "Changthang": ["A language of India."], "Chinbon Chin": ["A language of Myanmar."], "C\u00f4\u00f4ng": ["A language of Viet Nam."], "Northern Qiang": ["A language of China."], "Haka Chin": ["A language of Myanmar, Bangladesh and India."], "Ash\u00e1ninka": ["A language of Peru."], "Khumi Chin": ["A language of Myanmar, Bangladesh and India."], "Lalana Chinantec": ["A language of Mexico."], "Ixtat\u00e1n Chuj": ["A language of Guatemala and Mexico"], "Central Asmat": ["A language of Indonesia (Papua)."], "Tepetotutla Chinantec": ["A language of Mexico."], "Ngawn Chin": ["A language of Myanmar."], "lect": ["Usually considered to be a language or specialized form of language such as a dialect."], "abrade": ["To wear down by friction. (V.t.; Re. Geology; Source: IPDF);"], "water-soluble": ["Soluble in water."], "soluble": ["Capable of dissolving in a liquid."], "home run": ["In baseball, a hit in which the batter is able to circle all the bases, ending at home plate and scoring a run himself (along with a run scored by each runner who was already on base), with no errors by the defensive team on the play which result in the batter advancing for extra bases."], "Cocos Islands Malay": ["A dialect of the Malay language spoken in the state of Sabah in Malaysia, as well as in the Cocos Islands and Christmas Islands of Australia."], "Cocopa": ["A language of Mexico and the USA."], "Cocama-Cocamilla": ["A language of Peru, Brazil and Colombia."], "Koreguaje": ["A language of Colombia."], "Chonyi": ["A language of Kenya."], "Santa Teresa Cora": ["A language of Mexico."], "Columbia-Wenatchi": ["A language of the USA."], "Comanche": ["A language of the USA."], "Cof\u00e1n": ["A language of Ecuador and Colombia"], "Comox": ["A language of Canada."], "Coptic": ["A direct descendant of the ancient Egyptian language."], "Coquille": ["An extinct language of the USA."], "Caquinte": ["A language of Peru."], "Wamey": ["A language of Senegal and Guinea."], "Cowlitz": ["An extinct language of the USA."], "Nanti": ["A language of Peru."], "Coyaima": ["An extinct language of Colombia."], "Chochotec": ["A language of Mexico."], "Palantla Chinantec": ["A language of Mexico."], "Ucayali-Yur\u00faa Ash\u00e9ninka": ["A language of Peru and Brazil."], "Ajy\u00edninka Apurucayali": ["A language of Peru."], "Chinese Pidgin English": ["A language of Nauru."], "Cherepon": ["A language of Ghana."], "Capiznon": ["A language of the Philippines."], "Pichis Ash\u00e9ninka": ["A language of Peru."], "Pu-Xian": ["A language of China, Malaysia (Peninsular), Singapore."], "South Ucayali Ash\u00e9ninka": ["A language of Peru."], "Chilean Quechua": ["A language of Chile."], "comfort": ["A consolation; something relieving suffering or worry.", "To provide comfort or moral strength to or relieve suffering."], "destruction": ["Process in which an object is irreversibly reduced in smaller parts or driven to a state where its function cannot be performed anymore.", "The act of devastating."], "elastic": ["Easily resuming original shape after being stretched or expanded."], "Lonwolwol": ["A language of Vanuatu."], "abrasion": ["Act of wearing down by friction. (Noun; Re. Geology; Source: IPDF);", "A broad, shallow injury left by scraping."], "Abraham": ["The father of Isaac. (Noun, given name; Christianity; Source: IPDF);"], "water-insoluble": ["Not soluble in water."], "insoluble": ["Incapable of dissolving in a liquid."], "fat-soluble": ["Soluble in fats or oils."], "lipophilic": ["Soluble in fats or oils."], "hydrophilic": ["Soluble in water."], "hydrophobic": ["Not soluble in water."], "fat-insoluble": ["Not soluble in fats or oils."], "lipophobic": ["Not soluble in fats or oils."], "Coeur d'Alene": ["A language of the USA."], "Caramanta": ["An extinct language of Colombia."], "Michif": ["A language of the USA and Canada."], "Southern East Cree": ["A language of Canada."], "fundraising": ["The soliciting or receiving of monies, resources or other benefits from organisations, trusts or individuals."], "Plains Cree": ["An Algonquian language, often considered a dialect of Cree, spoken in Manitoba, Saskatchewan, Alberta (Canada) and Montana (United States)."], "disciple": ["Someone who believes and helps to spread the doctrine of another."], "fairly good": ["Good enough."], "disgregate": ["Figuratively, to break or detach an entity."], "Northern East Cree": ["A language of Canada."], "Moose Cree": ["A language of Canada."], "El Nayar Cora": ["A language of Mexico."], "Crow": ["A language of the USA."], "Iyo'wujwa Chorote": ["A language of Argentina, Bolivia and Paraguay."], "Carolina Algonquian": ["An extinct Algonquian language formerly spoken in North Carolina, United States."], "Iyojwa'ja Chorote": ["A language of Argentina."], "Car\u00fatana": ["A language of Brazil."], "Carrier": ["A language of Canada."], "Cori": ["A language of Nigeria."], "Cruze\u00f1o": ["An extinct language of USA."], "Chiltepec Chinantec": ["A language of Mexico."], "Catalonian Sign Language": ["A sign language used in Spain, mainly in Catalonia."], "anemoclinometer": ["An instrument that measures the inclination of the wind to the horizontal plane."], "Chiangmai Sign Language": ["A sign language used in Chiang Mai, in Thailand."], "linear": ["Confined to first-degree algebraic terms in the relevant variables.", "Having the form of a line; straight."], "Czech Sign Language": ["A language of Czech Republic"], "Cuba Sign Language": ["A language of Cuba."], "linearity": ["The property of being linear."], "Chilean Sign Language": ["A language of Chile."], "Asho Chin": ["A language of Myanmar and Bangladesh."], "Coast Miwok": ["An extinct language of the USA."], "Jola-Kasa": ["A language of Senegal."], "Chinese Sign Language": ["A language of China."], "Central Sierra Miwok": ["A language of the USA"], "Colombian Sign Language": ["A language of Colombia."], "Sochiapan Chinantec": ["A language of Mexico."], "Croatia Sign Language": ["A language of Croatia."], "Costa Rican Sign Language": ["A language of Costa Rica."], "Southern Ohlone": ["An extinct language of USA."], "Northern Ohlone": ["An extinct language of the USA."], "Swampy Cree": ["A language of Canada."], "Siyin Chin": ["A language of Myanmar"], "Coos": ["A language of USA."], "Tataltepec Chatino": ["A language of Mexico."], "Chetco": ["A language of the USA."], "Tedim Chin": ["A language of Myanmar and India."], "Tepinapa Chinantec": ["A language of Mexico."], "Tila Chol": ["A language of Mexico."], "Tlacoatzintepec Chinantec": ["A language of Mexico."], "Chitimacha": ["An extinct language of the USA."], "Chhintange": ["A language of Nepal."], "Ember\u00e1-Cat\u00edo": ["A language of Colombia and Panama."], "Western Highland Chatino": ["A language of Mexico."], "Northern Catanduanes Bicolano": ["A language of the Philippines."], "Zacatepec Chatino": ["A language of Mexico."], "Cubeo": ["A language of Colombia and Brazil."], "Usila Chinantec": ["A language of Mexico."], "Cung": ["A language of Cameroon."], "Chuka": ["A language of Kenya."], "Cuiba": ["A language of Colombia and Venezuela"], "San Blas Kuna": ["A language of Panama."], "Culina": ["A language of Brazil and Peru."], "Cumeral": ["An extinct language of Colombia."], "Cune'n K'iche'": ["A language of Guatemala."], "Cumanagoto": ["An extinct language of Venezuela."], "Cupe\u00f1o": ["An extinct language of the USA."], "Chhulung": ["A language of Nepal."], "Teutila Cuicatec": ["A language of Mexico."], "Chukwa": ["A language of Nepal."], "Tepeuxila Cuicatec": ["A language of Mexico."], "Valle Nacional Chinantec": ["A language of Mexico."], "Kabwa": ["A language of Tanzania."], "Maindo": ["A language of Mozambique."], "Woods Cree": ["A language of Canada."], "Kwere": ["A language of Tanzania."], "Kuwaataay": ["A language of Senegal."], "Nopala Chatino": ["A language of Mexico."], "Cayubaba": ["An extinct language of Bolivia."], "Cuyonon": ["A language of the Philippines."], "Huizhou": ["A Chinese language spoken in eastern China, primarily in the southern part of Anhui Province on the banks of the Xi'nan River."], "Zenzontepec Chatino": ["A language of Mexico."], "Min Zhong": ["A language of China."], "Zotung Chin": ["A language of Myanmar."], "correctness": ["Conformity to the truth or to fact.", "The state of an algorithm that correctly mirrors its specification."], "culmination": ["The highest level or degree attainable.", "A final climactic stage."], "planetary ring": ["Ring of dust and other small particles orbiting around a planet in a flat disc-shaped region."], "Dambi": ["A language of Papua New Guinea."], "Marik": ["A language of Papua New Guinea."], "Duupa": ["A language of Cameroon."], "Dan": ["A language of C\u00f4te d'Ivoire, Guinea and Liberia."], "Dagbani": ["A Gur language spoken in Ghana."], "Gwahatike": ["A language of Papua New Guinea."], "Day": ["A language of Chad."], "Dakota": ["A Siouan language of the USA and Canada."], "tome": ["One book in a series of volumes."], "Daai Chin": ["A language of Myanmar."], "Nisi": ["A language of India."], "Daho-Doo": ["A language of the C\u00f4te d'Ivoire."], "Darang Deng": ["A language of China."], "Taita": ["A language of Kenya."], "Davawenyo": ["A language of the Philippines."], "Dayi": ["A language of Australia."], "Dao": ["A language of Indonesia (Papua)."], "stance": ["Judgement or belief not founded on certainty or proof.", "The manner, or pose in which one stands.", "A rationalized mental attitude.", "In martial arts, the distribution, foot orientation and body position adopted when attacking, defending, advancing or retreating."], "posture": ["The manner, or pose in which one stands.", "A manner of positioning one's body or a part of it.", "Manner of behaving oneself; manner of acting.", "A rationalized mental attitude.", "To behave affectedly or unnaturally in order to impress other."], "Emiliano-Romagnolo": ["A language of Italy and San Marino"], "depict": ["To represent or show in, or as in, a picture.", "To give a description of."], "apetalous": ["Having no petals."], "Vai": ["A language of Liberia and Sierra Leone."], "Bondum Dom Dogon": ["A language of Mali."], "Dadiya": ["A language of Nigeria."], "Dabe": ["A language of Indonesia (Papua)."], "Edopi": ["A language of Indonesia (Papua)"], "Dogul Dom Dogon": ["A language of Mali."], "Ida'an": ["A language of Malaysia (Sabah)."], "Dyirbal": ["An Australian Aboriginal language spoken in northeast Queensland by about 5 speakers of the Dyirbal tribe."], "Duriankere": ["A language of Indonesia (Papua)."], "Dulbu": ["A language of Nigeria."], "fence": ["To delimit, to mark the boundary of an area.", "Delimitation for an area."], "divinity": ["A supernatural, typically immortal being with superior powers."], "deity": ["A divine being.", "A supernatural, typically immortal being with superior powers."], "dominate": ["To emerge; to be visible or larger in number, quantity, power, status or importance.", "To look down on.", "To rule over; to be in control."], "reproduce": ["To render something by means of a certain material."], "remuneration": ["A fixed amount of money paid to a worker, usually measured on a monthly or annual basis.", "Monetary compensation for a carried out job."], "rectangular": ["Having the form of a rectangle."], "Dungu": ["A language of Nigeria."], "Dibiyaso": ["A language of Papua New Guinea."], "Doondo": ["A language of Congo."], "Fataluku": ["A Papuan language spoken by approximately 30,000 people of Fataluku ethnicity in the eastern areas of East Timor, especially around Lospalos and a dialect of it, Oirata, is spoken in Kisar, Moluccas in Indonesia."], "Diodio": ["A language of Papua New Guinea."], "Jaru": ["A Southwest Pama\u2013Nyungan language spoken in the Western Australia."], "Donno So Dogon": ["A language of Mali."], "Dawera-Daweloor": ["A language of Indonesia (Maluku)."], "Dedua": ["A language of Papua New Guinea."], "Dewoin": ["A language of Liberia."], "Dezfuli": ["A language of Iran."], "Degema": ["A language of Nigeria."], "Dehwari": ["A language of Pakistan."], "Demisa": ["A language of Indonesia (Papua)."], "Dek": ["A language of Cameroon."], "Dem": ["A language of Indonesia (Papua)."], "Pidgin Delaware": ["An extinct language of the USA."], "Deori": ["A language of India."], "Desano": ["A Tucanoan language spoken in Brazil and Colombia."], "Domung": ["A language of Papua New Guinea."], "Dengese": ["A language of Democratic Republic of the Congo."], "Southern Dagaare": ["A language of Ghana"], "Casiguran Dumagat Agta": ["A language of the Philippines."], "Dagaari Dioula": ["A dialect of the Dagaare language spoken mainly in Burkina Faso."], "Degenan": ["A language of Papua New Guinea."], "Northern Dagara": ["A language of Burkina Faso."], "Dagoman": ["An extinct language of Australia."], "Dogri": ["A language of India."], "Dogrib": ["A Northern Athabaskan language spoken by the First Nations T\u0142\u0131\u0328ch\u01eb people of the Canadian territory Northwest Territories."], "Dogoso": ["A language of Burkina Faso."], "Doghoro": ["A language of Papua New Guinea."], "Daga": ["A language of Papua New Guinea."], "docile": ["Being easily influenced by others."], "indulgent": ["Being easily influenced by others."], "Austro-Hungarian Empire": ["A dual-monarchic union state in Central Europe from 1867 to 1918, dissolved at the end of World War I."], "Dhangu": ["An Yol\u014bu language, spoken in Australia's Northern Territory."], "Dhimal": ["A language of Nepal and India."], "Dhalandji": ["A Southwest Pama\u2013Nyungan language of Australia."], "Zemba": ["A Bantu language of Angola and Namibia."], "Dhargari": ["A language of Australia."], "Dhaiso": ["A language of Tanzania."], "Dhurga": ["An extinct language of Australia."], "Dehu": ["A language of New Caledonia."], "due to": ["due to; because of; caused by;", "[Used to indicate the cause of a mentioned outcome of negative connotation.]"], "duchy": ["A territory ruled by a duke or duchess."], "elaboration": ["A political or social construction."], "within": ["To the inside of a place.", "Before the end of a time period."], "heir": ["A person who acquires or has the right to acquire goods, rights or obligations from another person after her death."], "inherit": ["To receive all the propertes belonging to a deceased person."], "repossess": ["To regain possession of something."], "reception": ["A celebration after the wedding ceremony where people congratulate and meet the newlyweds and their families.", "The act of receiving someone or something.", "The act of receiving radio or similar signals.", "The desk of a hotel or office where guests are received.", "The ability to receive radio or similar signals.", "The manner in which someone or something, such as a book, an idea, etc., is received."], "surrender": ["The act of surrendering to the enemy.", "To give up or agree to forgo to the power or possession of another.", "To relinquish possession or control of to another because of demand or compulsion."], "reconstitute": ["To construct, restore or form anew."], "curved": ["Something that is bent as to form an arch"], "Dia": ["A language of Papua New Guinea."], "Lakota Dida": ["A language of the C\u00f4te d'Ivoire."], "Dieri": ["An extinct language of Australia."], "Digo": ["A language of Kenya and Tanzania."], "Kumiai": ["A language of Mexico and the USA."], "Dimbong": ["A language of Cameroon."], "Dai": ["A language of Indonesia (Maluku)."], "Dibo": ["A language of Nigeria."], "Dimli": ["A language of Turkey (Asia)."], "Dirim": ["A language of Nigeria."], "Dimasa": ["A language of India."], "Dirari": ["A language of Australia."], "Diriku": ["A language of Namibia, Angola and Botswana."], "Maldivian": ["A person who originated from or who is a citizen of the Maldives."], "Dixon Reef": ["A language of Vanuatu."], "Diuwe": ["A language of Indonesia (Papua)."], "Ding": ["A language of Democratic Republic of the Congo"], "lingua franca": ["A common language used by speakers of different languages."], "ISO 4217 codes": ["OmegaWiki collection of ISO 4217 currency codes.", "Three-letters codes to define the names of currencies."], "US Dollar": ["The official currency of the United States of America, with symbol \"$\"."], "Aruban guilder": ["The currency of Aruba"], "Swiss franc": ["The currency of Switzerland and Liechtenstein."], "Brazilian real": ["The Brazilian currency."], "desire": ["To express a desire for something or somebody arousing appreciation.", "An inclination to want things."], "ridicule": ["To treat or speak of with contempt."], "regard": ["To account; to esteem; to think; to judge; to hold in opinion; to regard. (Source Webster 1913)", "The establishment of a relationship between two related arguments.", "A long fixed look.", "An attitude of admiration or esteem.", "To look at attentively."], "renew": ["To replace something old with something new of the same type."], "renunciation": ["The resignation of an ecclesiastical office."], "Djinba": ["An Australian Aboriginal language of the Yolngu group spoken in Ngangalala, the Northern Territory."], "prominence": ["Condition of importance and relief."], "Djamindjung": ["An Australian language spoken around the Victoria River in the Northern Territory of Australia."], "Zarma": ["A language of Niger, Burkina Faso, Mali and Nigeria."], "Djangun": ["A language of Australia."], "Djinang": ["A language of Australia."], "Djeebbana": ["A language of Australia."], "Aukan": ["A English Creole language spoken by the Ndyuka people of Suriname."], "Djiwarli": ["An extinct Australian Aboriginal language, of the Mantharta group of the large Southwest branch of the Pama-Nyungan family, formerly spoken in Western Australia."], "Jamsay Dogon": ["A language of Mali and Burkina Faso."], "Djauan": ["A language of Australia."], "Djongkang": ["A language of Indonesia (Kalimantan)."], "Djambarrpuyngu": ["A language of Australia."], "Kapriman": ["A language of Papua New Guinea."], "Djawi": ["A language of Australia."], "aspersion": ["A slanderous remark.", "An abusive attack of a person's reputation by any slanderous communication.", "An abusive attack on a person's character or good name"], "slur": ["A slanderous remark."], "calumny": ["A slanderous remark.", "An abusive attack of a person's reputation by any slanderous communication.", "A false accusation of an offense or a malicious misrepresentation of someone's words or actions."], "unknown": ["Not familiar, not known."], "exultant": ["Being joyful and proud especially because of triumph or success."], "gable roof": ["A single-ridge roof that terminates at gable ends."], "distort": ["To restore or reproduce in any way which is not original or true.", "To twist of natural or regular shape.", "To alter the shape of (something) by stress."], "believer": ["Person that believes in a religion."], "fabulous": ["Causing wonder, admiration or astonishment.", "Characteristic of fables."], "commit adultery": ["As a married person, to have sex with a person other than the spouse."], "Dakpakha": ["A language of Bhutan."], "reorganisation": ["The granting of a new organizational arrangement or a substantial modification of an existing one."], "Kolum So Dogon": ["A language of Mali."], "Kuijau": ["A language of Malaysia (Sabah)."], "awakening": ["Renewed impulse or activity fervor, after one long inertia."], "finishing touch": ["A task performed at the end of a work, to make it complete and refined."], "dense": ["Consisting of components very close to each other.", "Consisting of many people very close to each other."], "variation": ["A partial change in the form, position, state, or qualities of a thing."], "Darlong": ["A language of Bangladesh and India."], "Duma": ["A language of Gabon."], "Dimir": ["A language of Papua New Guinea."], "educate oneself": ["To acquire knowledge and skills in performing a job."], "Upper Kinabatangan": ["A language of Malaysia (Sabah)."], "rosy": ["Of blush color."], "revolve": ["To move in the scope of something or someone.", "To move in an orbit."], "holy": ["Specially recognized as or declared sacred by religious use or authority."], "hectic": ["Very active and nervous."], "splendour": ["Great beauty, splendor or honor."], "finding": ["Something that is found; the final result of a search."], "plunder": ["A violent appropriation made by soldiers in enemy territory after a victory.", "To take the goods of.", "To deprive of something valuable by force."], "firmly": ["Without showing hesitation, indecision, doubt.", "In a steadfast way, without giving in.", "In a steadfast, decided, resolute, determined way."], "scarcity": ["A lack or short supply."], "scale": ["A tool to measure the weight of something.", "The relationship between the dimensions of one graphical representation and the real dimensions of the same figure.", "One of the small flat pieces of skin that cover the bodies of fish."], "cosmological": ["Related to cosmology."], "cosmologist": ["Person specialized in cosmology."], "chisel": ["To cause someone to believe an untruth; to practice trickery or fraud.", "A tool with a cutting edge at the end."], "break up": ["To delay or put off an event or an appointment.", "To end a relationship."], "frame": ["A decorative band that delimits a door, a window, a furniture, etc.", "A rigid structure that is used to support something.", "A rigid and load-bearing structure that is used to support pannels or doors.", "A container for a painting or photograph.", "A data packet that includes frame synchronization, i.e. a sequence of bits or symbols making it possible for the receiver to detect the beginning and end of the packet.", "One of the many still images that compose a video.", "The fixed part of a bicycle, on to which wheels and other components are fitted.", "The part of a snooker match between initial setup of all balls on the table and all balls pocketed or a player having given up or one player cannot win the frame any more."], "screen": ["To protect, hide, or conceal from danger or harm.", "A white or silvered surface where pictures can be projected for viewing.", "The display that is electronically created on the surface of the large end of a cathode-ray tube or some other display technology.", "To test or examine for the presence of disease or infection."], "succession": ["A large group of people or things lined up in a certain way."], "carved": ["Ornamented with protruding shapes."], "thoughtless": ["Without care or thought for others.", "Showing lack of careful thought."], "shock": ["To strike with horror or terror.", "An unpleasant or disappointing surprise."], "blond": ["A light and yellowish, brownish or golden color.", "Having a light and yellowish, brownish or golden color.", "A light and yellowish, brownish or golden hair color."], "cupreous": ["Consisting of copper.", "Having the colour of copper.", "Of, resembling, or containing copper."], "coppery": ["Consisting of copper.", "Having the colour of copper.", "Of, resembling, or containing copper."], "copper-colored": ["Having the colour of copper."], "blackish": ["Having a dark colour, somewhat black."], "cross oneself": ["To trace the shape of a cross over front, shoulders and chest with the hand."], "press conference": ["An event to which corporations, politicians, institutions, celebrities etc. invite representative of the press in order to give a statement and/or answer questions of the journalists."], "news conference": ["An event to which corporations, politicians, institutions, celebrities etc. invite representative of the press in order to give a statement and/or answer questions of the journalists."], "Caribbean": ["A geographical region bordered on the south by South America and Panama, and on the west by Central America, and consisting of the West Indian, and nearby, islands and the Caribbean Sea, a part of the western Atlantic Ocean.", "Of, relating to, characteristic of or located in the Caribbean."], "marmoset": ["A genus of small New World monkeys."], "Middle High German": ["An older stage of the German language, including all High German varieties, which was spoken between circa 1050 and 1350."], "MHG": ["An older stage of the German language, including all High German varieties, which was spoken between circa 1050 and 1350."], "Early New High German": ["An older stage of the German language, which was spoken between circa 1350 and 1650."], "ENHG": ["An older stage of the German language, which was spoken between circa 1350 and 1650."], "casting": ["A manufacturing process which consists of pouring liquid material into a mold and solidifying it to create an object."], "cast iron": ["Alloy of iron and carbon."], "Old High German": ["The earliest stage of the German language attested in written form, used in the period from around 750 to 1050."], "OHG": ["The earliest stage of the German language attested in written form, used in the period from around 750 to 1050."], "Chibemba": ["A Bantu language spoken in Zambia and the Democratic Republic of the Congo by the Bemba people."], "Cibemba": ["A Bantu language spoken in Zambia and the Democratic Republic of the Congo by the Bemba people."], "Ichibemba": ["A Bantu language spoken in Zambia and the Democratic Republic of the Congo by the Bemba people."], "Chiwemba": ["A Bantu language spoken in Zambia and the Democratic Republic of the Congo by the Bemba people."], "go far": ["To succeed in a big way; to get to the top."], "Dama": ["A language of Cameroon."], "Kemezung": ["A language of Cameroon."], "East Damar": ["A language of Indonesia (Maluku)."], "Dampelas": ["A language of Indonesia (Sulawesi)."], "Dubu": ["A language of Indonesia (Papua)."], "Dumpas": ["A language of Malaysia (Sabah)."], "Dema": ["A language of Mozambique."], "Demta": ["A language of Indonesia (Papua)."], "Upper Grand Valley Dani": ["A language of Indonesia (Papua)."], "Daonda": ["A language of Papua New Guinea."], "Ndendeule": ["A language of Tanzania."], "Dungan": ["A language of Kyrgyzstan and Kazakhstan."], "Lower Grand Valley Dani": ["A language of Indonesia (Papua)."], "Dengka": ["A language of Indonesia (Nusa Tenggara)."], "Dz\u00f9\u00f9ngoo": ["A language of Burkina Faso."], "Danaru": ["A language of Papua New Guinea."], "Mid Grand Valley Dani": ["A language of Indonesia (Papua)."], "Western Dani": ["A language of Indonesia (Papua)."], "Den\u00ed": ["A language of Brazil."], "photographic": ["Of or relating to photography."], "Dobu": ["A language of Papua New Guinea."], "upload": ["To send a file from a user workstation to a server.", "The process of sending a file from a user workstation to a server."], "integrate": ["To bring several things into one."], "tell": ["To communicate orally, using a particular language; to express in words.", "To talk about a story giving its details; to give a detailed account of.", "To see someone or something as different from others; to discern or comprehend.", "To give instructions to or direct somebody to do something with authority.", "To give information; to let something be known."], "Domu": ["A language of Papua New Guinea."], "Dondo": ["A language of Indonesia (Sulawesi)."], "Doso": ["A language of Papua New Guinea."], "Toura": ["A language of Papua New Guinea"], "Lukpa": ["A language spoken by some 65500 people of Benin and Togo."], "Dominican Sign Language": ["A language of Dominican Republic."], "oath": ["Promise or solemn declaration in front of an authority, another person or to oneself."], "stimulus": ["Something external that elicits or influences a physiological or psychological activity or response."], "Dori'o": ["A language of Solomon Islands."], "Dogos\u00e9": ["A language of Burkina Faso."], "Dombe": ["A language of Zimbabwe."], "Doyayo": ["A language of Cameroon."], "Dompo": ["A language of Ghana."], "pretentious": ["Having extreme self-confidence and overbearing pride."], "crystal": ["Solid in which the constituent atoms, molecules, or ions are packed in a regularly ordered, repeating pattern extending in all three spatial dimensions.", "An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "contaminate": ["To introduce radioactive pollutants into the environment.", "To make impure."], "violate": ["To force sexual intercourse or other sexual activity upon another person, without their consent.", "To break, disregard or act not according to rules, conventions, etc.", "To remove the consecration from a person or an object."], "popular music": ["Music belonging to any of a number of musical styles that are accessible to the general public and mostly distributed commercially."], "crystal glass": ["High grade, smoothed glass which gleams intensely."], "coarse": ["In reference to a material or quality of something: unrefined."], "populism": ["A political philosophy or rhetorical style that holds that the common person is oppressed by the \"elite\" in society, and that the instruments of the State need to be grasped from this self-serving elite and used for the benefit and advancement of the people as a whole."], "crystalline": ["Made of crystal glass.", "Composed of crystals.", "Clear and transparent like crystal."], "devilish": ["Resembling or characteristic of a devil.", "Pertaining to, or characteristic of a demon or evil spirit."], "diabolic": ["Resembling or characteristic of a devil."], "download": ["Transfer data from a server to the local computer."], "imaginary": ["Existing only in the mind and not in reality."], "Middle French": ["Historical division of the French language which covers the period from roughly 1340 to 1610."], "Late Old Japanese": ["The stage of the Japanese language spoken and written during the Heian Period between 794 and 1185."], "Proto-Indo-European": ["The hypothetical common ancestor of the Indo-European languages."], "PIE": ["The hypothetical common ancestor of the Indo-European languages."], "Community": ["Placeholder for the Community database"], "OmegaWiki functionality": ["Omegawiki internal defined meaning."], "bury": ["To put in the ground and cover with earth."], "semicircular": ["Having the shape of a semicircle"], "serenity": ["A disposition free from stress or emotion."], "slavish": ["Resembling a vassal.", "Abjectly submissive; characteristic of a slave or servant.", "Blindly imitative."], "installation": ["A formal entry into an organization or position or office.", "The act of installing something."], "set up": ["Come to a mutual understanding or agreement or a common plan, to create an appointment, harmonize mutual ideas about a presumed future.", "Position or status with regard to conditions and circumstances.", "To place."], "imprint": ["A concavity in a surface produced by pressing."], "assignment": ["A duty assigned to someone."], "according": ["In agreement with or accordant with.", "As reported or stated by."], "embed": ["To fix in a support or decoration structure.", "To fix or set securely or deeply."], "exploit": ["To usefully and effectively use what is available.", "A piece of software, a chunk of data, or sequence of commands that take advantage of a bug, glitch or vulnerability in order to cause unintended or unanticipated behavior to occur on computer software, hardware, or something electronic (usually computerized). (source: Wikipedia)", "To use for one's own advantage."], "give vent to": ["To show explicitly, forcefully, feelings, sensations and passions."], "exploitation": ["The act of employing some area of land or water in a way that is more profitable or productive or useful."], "inconsistent": ["Not always acting or behaving in the same way."], "become": ["To be convenient or apt to someone or something.", "To begin to be; to come to be; to turn into.", "To undergo a change or development."], "concentrate": ["To increase the strength and diminish the bulk of, as of a liquid or an ore.", "A substance that is in a condensed form.", "To make more concise (e.g. the contents of a book or an article)."], "whitish": ["Referring to a colour: Tending to white."], "anticonstitutionally": ["In a manner that is contrary to the constitution."], "enamel": ["Glossy paint to be applied as protective or decorative coating on wood, metal, glass and other similar materials.", "The hard, glossy, calcareous covering of the crown of a tooth, containing only a slight amount of organic substance."], "intersection": ["A point where two lines or, more in general, two elements intersect.", "A place where several roads meet."], "in fact": ["As an actual or existing fact."], "Israeli Sign Language": ["A language of Israel."], "cluttered": ["Filled or scattered with a disorderly accumulation of objects or rubbish."], "elude": ["To escape or avoid something."], "take place": ["To come to pass."], "stretch": ["To fill the distance between two limit points; to extend to full length.", "To lengthen or become longer when pulled.", "To lengthen by pulling; to make long or longer.", "To get more use than expected from a limited resource.", "To expand unduly the meaning (of a word).", "To expand unduly the meaning of a rule, law, etc.", "To extend one\u2019s limbs or body in order to stretch the muscles.", "To fill a space up to a limit point."], "bevel": ["An edge that is canted, one that is not a 90 degree angle."], "bald patch": ["Hairless patch on the head which is due to hair loss and increases gradually."], "meant": ["Comprised or interpreted."], "interlace": ["to unite or arrange (threads, strips, parts, branches, etc.) so as to intercross one another passing it alternately over and under."], "supporter": ["Someone who defends with conviction one thesis, ideal or plan."], "underground": ["An electric passenger railway operated in underground tunnels.", "Located below the ground level."], "electron beam": ["A stream of electrons (small negatively charged particles found in atoms) that can be used for radiation therapy."], "cathode ray": ["A stream of electrons (small negatively charged particles found in atoms) that can be used for radiation therapy."], "vacuum pump": ["A pump that removes gas molecules from a sealed volume in order to leave behind a partial vacuum."], "electron beam treatment": ["A form of radiotherapy using a special type of rays for which it is easy to control the depth of penetration."], "electron beam welding": ["A welding process where the energy to melt the material is applied by an electron beam."], "electron beam gun": ["Device that produces and accelerates electrons to use in welding and cutting operations."], "electron beam coating": ["A clear coating that dries when exposed to an electron radiation."], "engraving": ["Using an acid or other chemical to form an elevated image on a printing plate or cylinder.", "The practice of incising a design onto a hard, flat surface, by cutting grooves into it."], "virgin fiber": ["A material used to make paper that has not been recycled from previous paper or other materials."], "inscription": ["A laudatory or memorial text about a person or a special event engraved in stone or other materials."], "laser engraving": ["A paper cutting technique whereby laser technology is utilized to cut away certain unmasked areas of the paper.", "An imprinting method by which electronic artwork is etched into acrylic surface by a laser beam."], "foil": ["A piece of thin and flexible sheet metal.", "A device consisting of a flat or curved piece (as a metal plate) so that its surface reacts to the water it is passing through.", "Anything that serves by contrast to call attention to another thing's good qualities.", "A light slender flexible sword tipped by a button.", "A picture consisting of a positive photograph or drawing on a transparent base; viewed with a projector.", "To cover or back with foil.", "To enhance by contrast.", "To hinder or prevent (the efforts, plans, or desires) of."], "data conversion": ["Changing digital data from one format to another so it can be used in another software application or printed on a specific output device."], "data compression": ["A technique to shrink or reduce the size of a data file so it takes up less storage space and is faster to move electronically."], "lasciviousness": ["Feeling morbid sexual desire or a propensity to lewdness."], "data compression ratio": ["The reduction in data quantity produced by a data compression algorithm."], "accentuate": ["To stress, single out as important.", "To put stress on; to utter with an accent."], "overlap": ["To extend over and partly cover something."], "spatial": ["Of or pertaining to the space."], "cathodic": ["Of or pertaining to a cathode.", "Proceeding from a nerve centre."], "cathode": ["The electron-emitting electrode of an electron tube.", "The positive terminal of a galvanic cell.", "The negative terminal of an electrolytic cell."], "two-lane": ["Of roads: Having one lane for traffic in each direction."], "single-lane": ["Of roads: Having a single lane for traffic in both directions."], "cobbled": ["Referred to road pavement: made of stone blocks usually of square or rectangular shape."], "relationship": ["Connection or relationship between two or more elements."], "licentiousness": ["Excessive indulgence in sensual pleasures."], "spinning machine": ["A machine that performs several operations to transform a textile fiber into a thread."], "masterly": ["That has been executed in the manner of one who is a master; extremely competently."], "mortar": ["Paste made of a mixture of a binder (cement, plaster or lime), sand and water used in masonry to make bricks, stones, etc. stick together.", "A bowl used to crush and grind ingredients with a pestle.", "An indirect fire weapon that fires explosive projectiles.", "To use mortar to bond objects together.", "To fire a mortar (weapon)."], "carnation": ["A flowering plant in the family Caryophyllaceae."], "cad": ["Someone who is morally reprehensible."], "dirty dog": ["Someone who is morally reprehensible."], "ethnography": ["The branch of anthropology that scientifically describes specific human cultures and societies."], "smitten": ["Feeling love for someone or something."], "stateless": ["Not having citizenship or nationality in any state."], "forenoon": ["The time of day between morning and noon."], "foot-and-mouth disease": ["A highly contagious and sometimes fatal viral disease of cattle and pigs."], "hoof-and-mouth disease": ["A highly contagious and sometimes fatal viral disease of cattle and pigs."], "FMD": ["A highly contagious and sometimes fatal viral disease of cattle and pigs."], "maturation": ["The process after which a decision, a project, an idea or other, is fully developed and can be brought to fruition.", "The process of an individual organism growing organically."], "pomegranate": ["The red, round fruit of the pomegranate tree, having many red seeds with a tangy flavor."], "crenelated": ["Referred to walls, fortifications, towers, etc.: that is equipped with masonry placed at regular intervals for the purpose of defense or decoration."], "thrust": ["To impose urgently, importunately, or inexorably.", "The act of applying force to propel something.", "A strong blow with a knife or other sharp pointed instrument.", "Verbal criticism.", "The force used in pushing.", "To push forcefully.", "To press or force."], "monasticism": ["A religious way of life in which one renounces worldly pursuits to devote oneself fully to spiritual work."], "admonishment": ["The act of putting on guard from dangers and errors in an authoritative manner."], "grave monument": ["Architecture or sculpture to adorn a tomb."], "pounce": ["To apply an art technique used for transferring an image from one surface to another."], "protrude": ["To extend out or project in space."], "shift": ["To change the position of something or someone.", "To move slightly."], "rip": ["To tear or be torn violently.", "An opening made forcibly as by pulling apart."], "vivisection": ["Dissection on a living animal, as a scientific experiment."], "sleep in": ["To fail to wake up at the intended time."], "oversleep": ["To fail to wake up at the intended time."], "subordination": ["The state of being subordinate to something or someone."], "oblique": ["Neither perpendicular nor parallel.", "Not straightforward.", "Not expressed directly, by opposition to the accepted or proper way."], "superstition": ["A false, irrational belief arising from ignorance or fear."], "stonecutter": ["Someone who cuts or carves stone."], "scene": ["The structure on which a spectacle or play is exhibited.", "To exhibit as a scene.", "An element of fiction writing."], "undulated": ["Having a wavelike or rippled form, surface, edge, etc."], "matte": ["Not bright, not shiny."], "operate": ["To direct or control (e.g. projects, businesses, etc.).", "To handle and cause to function.", "To perform surgery on."], "tortuosity": ["A property of curve having many twists or turns."], "art of goldsmithing": ["The art of working with gold and other precious metals."], "adorn": ["To make more attractive by adding ornament, colour, etc.", "To be beautiful to look at."], "taking place": ["The occurrence and development of an event."], "supporting formwork": ["Structure that has the function of supporting most of the weight (of a building, of a machinery etc.)."], "pavilion": ["The visible part of the ear that resides outside of the head"], "command": ["To look down on.", "That which is enjoined or ordered to one or several persons by a superior authority."], "tablet": ["A flat mobile computer, larger than a mobile phone, with a touch screen for accessing multimedia applications.", "A pill; a small, easily swallowed portion of a substance."], "Papar": ["A language of Malaysia (Sabah)."], "tight": ["Pulled, striving towards something.", "Manifesting, exercising, or favoring rigor.", "(For clothes) Fitting very closely to the body, sometimes in an uncomfortable manner."], "testify": ["To provide evidence for."], "Darmiya": ["A language of India and Nepal."], "Dolpo": ["A Tibetan language spoken by the Dolpo people in the Himalayan range of Dhaulagiri near the Tibetan border, Nepal."], "Rungus": ["A language of Malaysia (Sabah)."], "C'lela": ["A language of Nigeria."], "Darling": ["A language of Australia."], "West Damar": ["A language of Indonesia (Maluku)."], "Daro-Matu": ["A language of Malaysia (Sarawak)."], "Drents": ["A language of the Netherlands."], "Rukai": ["A language of Taiwan."], "Darwazi": ["A dialect of Persan spoken in the Darwaz town of northern Afghanistan."], "Baiji": ["(Lipotes vexillifer) A freshwater dolphin found only in the Yangtze River in China which is probably extinct since circa 2006."], "Chinese River Dolphin": ["(Lipotes vexillifer) A freshwater dolphin found only in the Yangtze River in China which is probably extinct since circa 2006."], "Yangtze River Dolphin": ["(Lipotes vexillifer) A freshwater dolphin found only in the Yangtze River in China which is probably extinct since circa 2006."], "Whitefin Dolphin": ["(Lipotes vexillifer) A freshwater dolphin found only in the Yangtze River in China which is probably extinct since circa 2006."], "Yangtze Dolphin": ["(Lipotes vexillifer) A freshwater dolphin found only in the Yangtze River in China which is probably extinct since circa 2006."], "Pai-chi": ["(Lipotes vexillifer) A freshwater dolphin found only in the Yangtze River in China which is probably extinct since circa 2006."], "so much": ["A great degree or amount of.", "In such a high number or quantity."], "Danish Sign Language": ["A language of Denmark."], "Dusner": ["A language of Indonesia (Papua)."], "terracotta": ["A hard red-brown unglazed earthenware, used for pottery and building construction."], "terra cotta": ["A hard red-brown unglazed earthenware, used for pottery and building construction."], "complacent": ["Contented to a fault with oneself or one's actions.", "Eager to please."], "smug": ["Contented to a fault with oneself or one's actions."], "self-satisfied": ["Contented to a fault with oneself or one's actions."], "South Korean": ["Of or related to South Korea.", "A person originating from or a citizen of South Korea."], "North Korean": ["Of or related to North Korea.", "A person originating from or a citizen of North Korea."], "maroon": ["To leave stranded or isolated with little hope of rescue.", "An exploding firework used as a warning signal."], "trapezoidal": ["Whose shape resembles a trapezoid."], "Labuk-Kinabatangan Kadazan": ["A language of Malaysia (Sabah)."], "Tene Kan Dogon": ["A language of Mali."], "Tomo Kan Dogon": ["A language of Mali and Burkina Faso."], "Central Dusun": ["A language of Malaysia (Sabah)."], "Lotud": ["A language of Malaysia (Sabah)."], "Toro So Dogon": ["A language of Mali."], "Toro Tegu Dogon": ["A language of Mali."], "blass": ["Referred to a work of art and similar: poorly endowed with expressive power and low value."], "papacy": ["Period of time during which a certain pope is in office."], "incline": ["At an angle relative to a level plane or to another plane of reference.", "To bend or move (something) out of a given plane or direction, often the horizontal or vertical.", "To be at an angle; to move downwards."], "putz": ["The male sexual organ for copulation and urination; the tubular portion of the male genitalia (excluding the scrotum).", "A person with poor judgment or little intelligence."], "suburban": ["Relating to or characteristic of or situated in suburbs."], "perpendicularly": ["In a perpendicular way."], "tripartition": ["A division into three parts."], "Duala": ["A language of Cameroon."], "Duna": ["A language of Papua New Guinea."], "Hun-Saare": ["A language of Nigeria."], "Umiray Dumaget Agta": ["A language of Philippines."], "Dumbea": ["A language of New Caledonia."], "Duruma": ["A language of Kenya."], "Dumun": ["A language of Papua New Guinea."], "Dhuwal": ["An Australian Aboriginal language of the Yolngu group spoken in the Northern Territory."], "pine": ["Evergreen coniferous tree of the genus Pinus.", "Wood of the pine tree."], "Duduela": ["A language of Papua New Guinea."], "Alabat Island Agta": ["A language of the Philippines."], "Dusun Deyah": ["A language of Indonesia (Kalimantan)."], "Dupaninan Agta": ["A language of the Philippines."], "Duano'": ["A language of Malaysia (Peninsular)."], "Dusun Malang": ["A language of Indonesia (Kalimantan)."], "Dii": ["A language of Cameroon."], "Dumi": ["A language of Nepal."], "Drung": ["A language of China."], "Duvle": ["A language of Indonesia (Papua)."], "Dusun Witu": ["A language of Indonesia (Kalimantan)."], "Duungooma": ["A language of Mali."], "Dicamay Agta": ["An extinct language of Philippines."], "Duli": ["An extinct language of Cameroon."], "meat loaf": ["Roast dish from hash mixed with spices, white bread and egg."], "meatloaf": ["Roast dish from hash mixed with spices, white bread and egg."], "Duau": ["A language of Papua New Guinea."], "Dutton World Speedwords": ["A language intended to be an international auxiliary language that can also be used as a universal shorthand system."], "Dawawa": ["A language of Papua New Guinea."], "Western honey bee": ["A stinging, social, domesticated insect (Apis mellifera) kept by humans for the creation of beeswax and honey."], "European honey bee": ["A stinging, social, domesticated insect (Apis mellifera) kept by humans for the creation of beeswax and honey."], "hominid": ["Any living or extinct member of the family Hominidae characterized by superior intelligence, articulate speech, and erect carriage.", "Any primate of the family Hominidae, consisting of Homo sapiens, his ancestors and the apes."], "Dyan": ["A language of Burkina Faso."], "Dyaberdyaber": ["A language of Australia."], "Dyugun": ["A language of Australia."], "Villa Viciosa Agta": ["An extinct language of the Philippines."], "Djimini Senoufo": ["A language of the C\u00f4te d'Ivoire."], "Land Dayak": ["A language of Indonesia (Kalimantan)."], "Dyangadi": ["A language of Australia."], "Jola-Fonyi": ["A language of Senegal, Gambia and Guinea-Bissau."], "Jula": ["A language of Burkina Faso and the C\u00f4te d'Ivoire."], "Dyaabugay": ["A language of Australia."], "Duguza": ["A language of Nigeria."], "Dazaga": ["A language of Chad and Niger."], "Dzalakha": ["A language of Bhutan."], "Dzando": ["A language of Democratic Republic of the Congo."], "plenipotentiary": ["Invested with full power regarding a particular decision, treaty or agreement."], "massive": ["Imposing in size or bulk or solidity.", "Being the same substance throughout (e.g. gold, silver, etc.).", "Imposing in scale or scope or degree or power."], "Ebughu": ["A language of Nigeria."], "Eboo Teke": ["A language of Congo and the Democratic Republic of the Congo."], "Ebri\u00e9": ["A language of C\u00f4te d'Ivoire."], "Embu": ["A language of Kenya"], "rest on": ["To have a place in relation to something else."], "Ecuadorian Sign Language": ["A sign language used in Ecuador."], "Efai": ["A language of Nigeria."], "Efik": ["A language of Nigeria."], "Ega": ["A language of the C\u00f4te d'Ivoire."], "Eggon": ["A language of Nigeria."], "archway": ["Architectural structure ajar large of which at least one side is constituted by a series of columns."], "arcade": ["Architectural structure ajar large of which at least one side is constituted by a series of columns."], "Virgin Mary": ["The mother of Jesus Christ."], "uniformity": ["Characteristic of someone or something with coherence and organic unity."], "benefit": ["The advantageous quality of being beneficial.", "To be a benefit.", "A payment made in accordance with an insurance policy or a public assistance scheme."], "efficaciously": ["In an efficacious manner.", "In an efficient or effective manner; with powerful effect."], "venerate": ["To attribute to someone or something a particular devoutness or veneration."], "hold back": ["To resist doing something.", "To hold back, as of a danger or an enemy; check the expansion or influence of."], "restrain": ["To confine by any ligature."], "check": ["An act of testing or checking.", "To see if something is correct.", "An additional proof that something that was believed (some fact or hypothesis or theory) is correct.", "To be compatible, similar or consistent; coincide in their characteristics.", "To develop behaviour by instruction and practice.", "In games such as chess, the threat to capture the king.", "To hold back, as of a danger or an enemy; check the expansion or influence of."], "abstain": ["To refrain from doing something."], "symbol": ["One or a few characters, a picture or an other concrete representation of an idea, a concept and the like."], "vigorous": ["Strong and active physically or mentally."], "brown rat": ["The common rat, Rattus norvegicus, often used as an experimental organism."], "Norway rat": ["The common rat, Rattus norvegicus, often used as an experimental organism."], "Norwegian rat": ["The common rat, Rattus norvegicus, often used as an experimental organism."], "wharf rat": ["The common rat, Rattus norvegicus, often used as an experimental organism."], "black rat": ["A common species of rat, Rattus rattus."], "house mouse": ["A mouse of the species Mus musculus."], "spleen": ["A ductless vascular gland, located in the left upper abdomen near the stomach."], "tea plantation": ["A plantation where tea grows."], "curb oneself": ["To control one's feelings in order not to do something."], "moderate oneself": ["To control one's feelings in order not to do something.", "To curb oneself."], "restrain oneself": ["To control one's feelings in order not to do something.", "To curb oneself (v.)"], "control oneself": ["To control one's feelings in order not to do something.", "curb oneself (v.)"], "repress oneself": ["To control one's feelings in order not to do something.", "To curb oneself."], "refrain oneself": ["To control one's feelings in order not to do something.", "To curb oneself or resist.", "curb oneself (v.)"], "abstain oneself": ["To control one's feelings in order not to do something."], "Ehueun": ["A language of Nigeria."], "Eipomek": ["A language of Indonesia (Papua)."], "Eitiep": ["A language of Papua New Guinea."], "Askopan": ["A language of Papua New Guinea."], "Ejamat": ["A language of Guinea-Bissau and Senegal."], "cadmium sulfide": ["Compound of cadmium and sulfur (CdS)"], "cadmium sulfite": ["Cadmium salt of the sulfurous acid (CdSO3)."], "flux": ["The amount of particles, mass, energy, etc., that are moving through a specific area per timespan.", "To move as a fluid from one position to another (e.g. of people).", "To mix together different elements."], "homograde": ["(Statistics) Concerned with qualitative differences."], "metamorphosis": ["A change from one form to another."], "heterograde": ["(Statistics) Concerned with quantitative differences."], "tibia": ["The larger and stronger of the two bones below the knee of the leg of a biped or hind limb of quadruped."], "shin bone": ["The larger and stronger of the two bones below the knee of the leg of a biped or hind limb of quadruped."], "hip": ["The outward-projecting parts of the pelvis and top of the femur and the overlying tissue."], "visual": ["Pertaining to the sense of sight."], "vivaciously": ["With vivacity and vigour.", "With vivacity and roughness."], "contradictory": ["That which is not coherent, or doesn't follow logical order."], "Ekajuk": ["A language of Nigeria."], "Ekit": ["A language of Nigeria."], "Ekari": ["A language of Indonesia (Papua)."], "Eki": ["A language of Nigeria."], "Elip": ["A language of Cameroon."], "Koti": ["A language of Mozambique."], "Ekpeye": ["A language of Nigeria."], "Yace": ["A language of Nigeria."], "Eastern Kayah": ["A language of Myanmar and Thailand."], "Elepi": ["A language of Papua New Guinea."], "Elkei": ["A language of Papua New Guinea."], "Eleme": ["A language of Nigeria."], "Elpaputih": ["A language of Indonesia (Maluku)."], "Elu": ["A language of Papua New Guinea."], "Emai-Iuleha-Ora": ["A language of Nigeria."], "Embaloh": ["A language of Indonesia (Kalimantan)."], "Emerillon": ["A language of French Guiana."], "Eastern Meohang": ["A language of Nepal."], "convent": ["Place of residence of a religious community.", "A convent for women."], "Mussau-Emira": ["A language of Papua New Guinea."], "Eastern Maninkakan": ["A language of Guinea and Sierra Leone"], "Eman": ["A language of Cameroon."], "Emok": ["An extinct language of Paraguay."], "Northern Ember\u00e1": ["A language of Panama and Colombia."], "Pacific Gulf Yupik": ["A language of the USA."], "Emplawas": ["A language of Indonesia (Maluku)."], "bladder": ["A hollow muscular balloon-shaped organ that stores urine until it is excreted from the body."], "cornice": ["The topmost projecting architectural element of a building, originally used as an ornament or as a means of directing rainwater away from the building's walls."], "custom": ["A pattern of behavior inherited or acquired through frequent repetition."], "ridge": ["Elevated zone of a mountain range, that frequently coincides with the watershed."], "cradle": ["Place of origin and development."], "urinary bladder": ["A hollow muscular balloon-shaped organ that stores urine until it is excreted from the body."], "Apali": ["A language of Papua New Guinea."], "curvilinear": ["Having the form of a curved line."], "truncated cone": ["Having the form of a cone frustum."], "doctoress": ["A female person who has completed a study in mainstream medicine, and and whose profession is to diagnose and cure diseases in patients."], "chimpanzee": ["A great ape of the genus Pan, native to Africa."], "diadromous": ["(aquatic animals:) traveling between fresh and salt water"], "catadromous": ["(Aquatic animal) living in fresh water mostly and traveling into the sea, particularly for breeding."], "anadromous": ["(Aquatic animals:) living in the sea mostly and traveling into fresh water, particularly for breeding"], "ununtrium": ["The temporary name for a synthetic superheavy element in the periodic table with symbol Uut and atomic number 113."], "ununquadium": ["The temporary name for a synthetic superheavy element in the periodic table with symbol Uuq and atomic number 114."], "ununpentium": ["The temporary name for a synthetic superheavy element in the periodic table with symbol Uup and atomic number 115."], "ununhexium": ["The temporary name for a synthetic superheavy element in the periodic table with symbol Uuh and atomic number 116."], "ununseptium": ["The temporary name for a synthetic superheavy element in the periodic table with symbol Uus and atomic number 117."], "Ende": ["A language of Indonesia (Nusa Tenggara)."], "Forest Enets": ["A language of Russia (Asia)."], "Tundra Enets": ["A language of Russia (Asia)"], "Enim": ["A language of Indonesia (Sumatra)."], "Engenni": ["A language of Nigeria."], "Enggano": ["A language of Indonesia (Sumatra)."], "Enga": ["A language of Papua New Guinea."], "Emumu": ["A language of Indonesia (Papua)."], "Enwan": ["A language of Nigeria.", "A language of Nigeria."], "wheat": ["Plant belonging to genus Triticum and to family Poaceae (also known as Gramineae)."], "Epie": ["A language of Nigeria."], "Eruwa": ["A language of Nigeria."], "Ogea": ["A language of Papua New Guinea."], "South Efate": ["A language of Vanuatu."], "Horpa": ["A language of China."], "Erre": ["A language of Australia."], "Eritai": ["A language of Indonesia (Papua)."], "Erokwanas": ["A language of Indonesia (Papua)."], "Ese Ejja": ["A language of Bolivia and Peru."], "Eshtehardi": ["A Tati language spoken in Eshtehard, Iran."], "North Alaskan Inupiatun": ["A language of the USA and Canada."], "Northwest Alaska Inupiatun": ["A language of the USA."], "Egypt Sign Language": ["Sign language used in Egypt."], "Esuma": ["An extinct language of C\u00f4te d'Ivoire."], "Salvadoran Sign Language": ["A sign language used in El Salvador."], "Estonian Sign Language": ["A sign language used in Estonia."], "Esselen": ["An extinct language of USA."], "Central Siberian Yupik": ["A language of USA and Russia."], "Central Yupik": ["A language of USA"], "Etebi": ["A language of Nigeria."], "Ethiopian Sign Language": ["A language of Ethiopia."], "Edolo": ["A language of Papua New Guinea."], "Yekhee": ["A language of Nigeria."], "Ejagham": ["A language of Nigeria and Cameroon."], "Eten": ["A language of Nigeria."], "Semimi": ["A language of Indonesia (Papua)."], "Europanto": ["An artificial language which as a joke was invented by the journalist and interpreter at the European Union headquarter, Diego Marani in Brussels, Belgium, in the year 1996. It biolds a ot on English, but also to a large extent incorporates worda and other elements from each of the official languages of the EU. Specific choices are basically left pretty freely to the user under the premise that the goal is understandability for the actual audience."], "Uvbie": ["A language of Nigeria."], "Ewondo": ["A language of Cameroon."], "Eyak": ["An extinct Na-Den\u00e9 language that was spoken by the Eyak people, indigenous to southcentral Alaska, near the mouth of the Copper River."], "Uzekwe": ["A language of Nigeria."], "Degexit'an": ["A language of the USA."], "Hutterite German": ["A language of Canada and the USA."], "Gwich'in": ["A language of Canada and the USA."], "Northern Haida": ["A language of Canada and the USA."], "Halkomelem": ["A language of Canada and the USA."], "Han": ["A language of USA and Canada."], "Dawson": ["A language of USA and Canada."], "Havasupai-Walapai-Yavapai": ["A native American language of the Yuman family spoken by the Havasupai, Walapai and Yavapai people in western Arizona, USA."], "Upland Yuman": ["A native American language of the Yuman family spoken by the Havasupai, Walapai and Yavapai people in western Arizona, USA."], "Hawai'i Creole English": ["A language of the USA."], "Hawaiian": ["Austronesian language which developed in the island of Hawai'i, and is, along with English, an official language of the State of Hawaii, in the United States of America."], "Hidatsa": ["A language of the USA"], "Ho-Chunk": ["A language of the USA."], "Holikachuk": ["An Athabaskan language formerly spoken at the village of Holikachuk on the Innoko River in central Alaska."], "Hopi": ["A Uto-Aztecan language spoken by the Hopi people in northeastern Arizona, USA."], "Hupa": ["A language of the USA."], "Hoopa": ["A language of the USA."], "Jemez": ["A language of the USA."], "Kalapuya": ["A language of the USA."], "Kalispel-Pend D'oreille": ["A Salish language spoken in northwestern USA."], "Kalispel": ["A Salish language spoken in northwestern USA."], "Kansa": ["A language of the USA"], "Karok": ["A language of the USA."], "Kashaya": ["A language of the USA."], "Kawaiisu": ["A language of the USA."], "Eastern Keres": ["A language of the USA."], "Western Keres": ["A language of the USA."], "Kickapoo": ["A language of the USA and Mexico."], "Kiowa": ["A language of the USA."], "Klamath-Modoc": ["A language of the USA"], "Koyukon": ["A language of the USA."], "Upper Kuskokwim": ["A language of the USA."], "Mcgrath Ingalik": ["A language of the USA."], "Kutenai": ["A language of Canada and the USA"], "Kootenai": ["A language of Canada and the USA"], "Ktunaxa": ["A language of Canada and the USA"], "Lakota": ["A language of the USA and Canada."], "Teton": ["A language of the USA and Canada."], "Lakhota": ["A language of the USA and Canada."], "Luise\u00f1o": ["A language of the USA."], "Lushootseed": ["A language of the USA."], "Northeast Maidu": ["A language of the USA."], "Northwest Maidu": ["A language of the USA."], "Malecite-Passamaquoddy": ["A language of Canada and the USA."], "Mandan": ["A language of the USA."], "Maricopa": ["A Native American language spoken in Arizona, USA."], "Menominee": ["A language of the USA."], "Mesquakie": ["A language of the USA."], "Micmac": ["An Eastern Algonquian language spoken by the Mi'kmaq people in Canada and the United States."], "Mikasuki": ["A language of the USA."], "Hawai'i Pidgin Sign Language": ["A sign language used in Hawaii."], "Lake Miwok": ["A language of the USA"], "Northern Sierra Miwok": ["An Utian language spoken by the Northern Miwok people in the the upper watersheds of the Mokelumne River and the Calaveras River, California, USA."], "Plains Miwok": ["A language of the USA."], "Southern Sierra Miwok": ["A Utian language spoken by the Southern Sierra Miwok, a Native American people in Northern California."], "Meewoc": ["A Utian language spoken by the Southern Sierra Miwok, a Native American people in Northern California."], "Mohave": ["A language of the USA."], "Mohawk": ["A language of Canada and the USA."], "terminator": ["Line between the illuminated and the dark side of a celestial body."], "Mono": ["A language of the USA.", "A free and open source project led by Novell (formerly by Ximian) to create an Ecma standard compliant, .NET-compatible set of tools, including among others a C# compiler and a Common Language Runtime. Mono can be run on Linux, BSD, Unix, Mac OS X, Solaris and Windows operating systems."], "Muskogee": ["A language of the USA."], "Nez Perce": ["A language of the USA."], "Nisenan": ["A language of the USA."], "Neeshenam": ["A language of the USA."], "Okanagan": ["A language of the Interior Salish group of Salishan languages spoken by the Okanagan people of the Southern Interior region of the Canadian province of British Columbia and North Central Washington State."], "Omaha-Ponca": ["A language of the USA."], "Oneida": ["A Northern Iroquoian language spoken primarily by the Oneida people in the U.S. states of New York and Wisconsin, and the Canadian province of Ontario."], "Onondaga": ["A Northern Iroquoian language spoken by the Onondaga people, in the United States and Canada, primarily on the reservation in central New York state, and near Brantford, Ontario."], "Osage": ["A language of the USA."], "Ottawa": ["A dialect of the Ojibwe language, spoken by the Ottawa people in southern Ontario in Canada, and northern Michigan in the United States.", "The capital of Canada"], "Northern Paiute": ["A language of the USA."], "contested": ["That encounters obstacles and impediments."], "composed": ["Made of certain elements.", "(For a person) Serenely self-possessed and free from agitation especially in times of stress."], "Panamint": ["A language of the USA."], "Pawnee": ["A language of USA."], "Plains Indian Sign Language": ["A sign language formerly used as an auxiliary international language between Native Americans of the Great Plains of the United States of America and Canada."], "Central Pomo": ["A language of the USA."], "crusader": ["A Christian who participated in the crusades."], "apex": ["Highest and most elevated point."], "short-sleeved": ["Having short sleeves."], "at the latest": ["Designates the latest possible date on which an event may or must occur."], "not later than": ["Designates the latest possible date on which an event may or must occur."], "Southeastern Pomo": ["A language of the USA."], "Southern Pomo": ["A language of the USA."], "Potawatomi": ["A Central Algonquian language spoken by the Potawatomi people around the Great Lakes in Michigan and Wisconsin, as well as in Kansas in the United States, and in southern Ontario in Canada."], "Quapaw": ["A language of the USA."], "Quechan": ["A language of the USA."], "Quileute": ["A Chimakuan language spoken on the western coast of the Olympic peninsula in Washington state, USA."], "Southern Puget Sound Salish": ["A language of the USA."], "Straits Salish": ["A language of Canada and the USA."], "Sea Island Creole English": ["A language of the USA.", "A creole language based on English and several African languages which is spoken by the Gullah people in the coastal region of the eastern USA."], "Seneca": ["An Iroquoian language of the USA."], "Serrano": ["A language of the USA."], "Shawnee": ["A language of the USA."], "Shoshoni": ["A language of the USA."], "Skagit": ["A language of the USA."], "Snohomish": ["A language of the USA."], "Spokane": ["A language of the USA."], "Tanacross": ["A language of the USA."], "Tanaina": ["An Athabaskan language spoken in the region surrounding Cook Inlet in Alaska, USA."], "Lower Tanana": ["A language of the USA."], "Upper Tanana": ["A language of the USA and Canada."], "Tenino": ["A language of the USA."], "Tewa": ["A language of the USA.", "A language of Indonesia (Nusa Tenggara)."], "Northern Tiwa": ["A language of the USA."], "Southern Tiwa": ["A language of the USA."], "Tlingit": ["A Na-Den\u00e9 language spoken by the Tlingit people of Southeast Alaska and Western Canada."], "Tohono O'odham": ["A language of the USA."], "Tolowa": ["A language of the USA."], "Tsimshian": ["A Tsimshianic language spoken by the Tsimshian nation in northwestern British Columbia and southeastern Alaska."], "T\u00fcbatulabal": ["A language of the USA."], "Tuscarora": ["A Northern Iroquoian language spoken by the Tuscarora people in southern Ontario, Canada, and northwestern New York around Niagara Falls, in the United States."], "Tututni": ["A language of the USA."], "Umatilla": ["A language of the USA."], "Ute-Southern Paiute": ["A language of the USA."], "Walla Walla": ["A language of the USA,"], "Northeast Sahaptin": ["A language of the USA,"], "Wasco-Wishram": ["A language of the USA."], "Washo": ["A language of the USA."], "Wichita": ["An indigenous people of the USA who formed a loose confederation on the Southern Plains of several tribes.", "A language of the USA."], "Wintu": ["A language of the USA."], "Yakima": ["A language of the USA."], "Yaqui": ["A language of Mexico and the USA"], "Yokuts": ["A language of the USA."], "Yuchi": ["A language of the USA."], "Yurok": ["A language of the USA."], "Zuni": ["A language of the Zuni people, indigenous to western New Mexico and eastern Arizona in the United States.", "A Native American tribe, one of the Pueblo peoples, most of whom live in the Pueblo of Zuni on the Zuni River, a tributary of the Little Colorado River, in western New Mexico, United States."], "Lazepe": ["A South Caucasian ethnogaphic group in Turkey and Georgia."], "Jud\u00e6o-Georgian": ["A Jewish South Caucasian language presently spoken in Israel, and to a lesser extent in Georgia. The only South Caucasian Jewish language."], "Gruzinic": ["A Jewish South Caucasian language presently spoken in Israel, and to a lesser extent in Georgia. The only South Caucasian Jewish language."], "Kivruli": ["A Jewish South Caucasian language presently spoken in Israel, and to a lesser extent in Georgia. The only South Caucasian Jewish language."], "Megrelian": ["A South Caucasian language spoken in Georgia."], "Jud\u00e6o-Spanish": ["A Jewish Romance language spoken in Israel and Turkey, developed from Spanish."], "not concrete": ["Art that looks as if it contains little or no recognizable or realistic forms from the physical world."], "nonconcrete": ["Art that looks as if it contains little or no recognizable or realistic forms from the physical world."], "inconcrete": ["Art that looks as if it contains little or no recognizable or realistic forms from the physical world."], "cheesegrater": ["A kitchen implement used to cut food products (such as cheese and carrots) into small strips."], "Thai Sign Language": ["A language of Thailand."], "revert": ["To go back to a previous state."], "neurology": ["The branch of medicine that deals with the nervous system and its disorders."], "tarantella": ["Traditional dance in Campania, Italy."], "ethnic": ["Of or related to a group of people having common racial, national, religious, or cultural origins."], "revaluate": ["To increase the value of."], "recuperate": ["To get something back.", "To return to health and strength after illness."], "physiotherapy": ["Therapy that uses physical techniques such as massage and exercise."], "physical therapy": ["Therapy that uses physical techniques such as massage and exercise."], "Fasu": ["A language of Papua New Guinea."], "Wagi": ["A language of Papua New Guinea."], "Fagani": ["A language of the Solomon Islands."], "Finongan": ["A language of Papua New Guinea."], "Fali of Baissa": ["A language of Nigeria."], "Faiwol": ["A language of Papua New Guinea."], "Faita": ["A language of Papua New Guinea."], "Fang": ["A language of Cameroon.", "A language of Equatorial Guinea, Cameroon, Congo and Gabon"], "South Fali": ["A language of Cameroon."], "Fam": ["A language of Nigeria."], "Palor": ["A language of Senegal."], "Fataleka": ["A language of the Solomon Islands."], "lemon squeezer": ["Kitchen utensil for extracting juice from citrus fruit, such as a lemon or orange."], "bracelet": ["Piece of jewellery worn around the wrist."], "wristlet": ["Piece of jewellery worn around the wrist."], "undress": ["To take off all of one's clothes."], "Duchenne muscular dystrophy": ["An eventually fatal disorder that is characterized by rapidly progressive muscle weakness and atrophy of muscle tissue."], "Fayu": ["A language of Indonesia (Papua)."], "Southwestern Fars": ["A language of Iran."], "Northwestern Fars": ["A language of Iran."], "Quebec Sign Language": ["A language of Canada."], "sloth": ["A herbivorous, arboreal South American mammal of the families Megalonychidae and Bradypodidae, noted for its slowness and inactivity."], "homeostasis": ["That property of either an open system or a closed system, especially a living organism, which regulates its internal environment so as to maintain a stable, constant condition."], "Feroge": ["A language of Sudan."], "Fijian": ["A language of Fiji"], "Fipa": ["A Bantu language of Tanzania spoken by the Fipa people, who live on the Ufipa plateau in the Rukwa Region of South West Tanzania between Lake Tanganyika and Lake Rukwa."], "Firan": ["A language of Nigeria."], "Tornedalen Finnish": ["A language of Sweden and Finland"], "Fiwaga": ["A language of Papua New Guinea."], "Izere": ["A language of Nigeria."], "Kven Finnish": ["A language of Norway."], "Foau": ["A language of Indonesia (Papua)."], "North Fali": ["A language of Nigeria."], "Falam Chin": ["A Kukish language of Myanmar, Bangladesh and India."], "Flinders Island": ["A language of Australia."], "Fuliiru": ["A language of the Democratic Republic of the Congo."], "Tsotsitaal": ["A language of South Africa."], "Fe'fe'": ["A language of Cameroon."], "Fanagalo": ["A language of South Africa, Zambia and Zimbabwe."], "Fania": ["A language of Chad."], "Foodo": ["A Guang language spoken in and around the town of S\u00e8m\u00e8r\u00e8 in the north of Benin."], "Foi": ["A language of Papua New Guinea."], "Foma": ["A language of the Democratic Republic of the Congo."], "Fon": ["A Gbe language spoken mainly in Benin by the Fon people."], "Fore": ["A language of Papua New Guinea."], "Fernando Po Creole English": ["A language of Equatorial Guinea."], "Fas": ["A language of Papua New Guinea"], "Fordata": ["A language of Indonesia (Maluku)."], "ungentlemanly": ["Not adhering to the high moral standards expected of a gentleman."], "impolite": ["Not adhering to the high moral standards expected of a gentleman.", "Bad mannered.", "Exhibiting no courtesy."], "unchivalrous": ["Not adhering to the high moral standards expected of a gentleman."], "unbeknownst": ["Happening or existing without the knowledge of a specified party."], "pretzel": ["A toasted bread or cracker usually in the shape of a loose knot."], "drummer": ["A musician who plays the drums."], "Pirah\u00e3": ["Hunter-gatherer tribe living in the rain forest of northwestern Brazil, mainly on the banks of the Maici River.", "Language spoken by the Pirah\u00e3 tribe in Brazil."], "gallant": ["Very polite with women."], "governing body": ["An assembly of persons that is legally constituted to oversee the operation of an organization."], "ethnic music": ["The traditional and typically anonymous music that is an expression of the life of people in a community."], "traditional music": ["The traditional and typically anonymous music that is an expression of the life of people in a community."], "widow": ["A woman whose spouse has died.", "To make a widow or a widower of."], "septic shock": ["A life-threatening condition caused by infection and sepsis, often after surgery or trauma."], "hypotension": ["An abnormally low blood pressure."], "conglomerate": ["A corporation formed by the combination of several smaller corporations whose activities are unrelated to the corporation's primary activity."], "hypertension": ["Persistently high arterial blood pressure."], "ice hockey": ["A form of hockey played on an ice rink with a puck rather than ball."], "gland": ["Any of various organs that synthesize substances needed by the body and release it through ducts or directly into the bloodstream."], "capillary": ["A minute vessel that connects the arterioles and venules."], "Cushing's syndrome": ["An endocrine disorder caused by high levels of cortisol in the blood."], "hypercortisolism": ["An endocrine disorder caused by high levels of cortisol in the blood."], "adrenal gland": ["The triangle-shaped endocrine glands that sit on top of the kidneys."], "suprarenal gland": ["The triangle-shaped endocrine glands that sit on top of the kidneys."], "World Health Organization": ["A specialized agency of the United Nations designed as a coordinating authority on international health issues."], "sclerotherapy": ["A procedure used to treat blood vessels or blood vessel malformations (vascular malformations) and also those of the lymphatic system."], "syringe": ["A device used to inject fluid into or withdraw fluid from the body.", "To spray liquid into (a body part) with a syringe."], "intravenous": ["Into a vein."], "Achomawi": ["A language of the Palaihnihan family spoken by the Pit River people in northeastern California, USA."], "Ahtna": ["A language of the USA."], "Atna": ["A language of the USA."], "Ahtna-khotana": ["A language of the USA."], "Copper River": ["A language of the USA."], "even-toed ungulate": ["Ungulate mammal from the order Artiodactyla having an even number of toe on each leg."], "revolution": ["A single complete turn.", "A sudden, vast change in a situation, a discipline, or the way of thinking and behaving."], "calcite": ["A widely distributed crystalline form of calcium carbonate, CaCO3, found as limestone, chalk and marble"], "Pirah\u00e1": ["Language spoken by the Pirah\u00e3 tribe in Brazil."], "Pirah\u00e1n": ["Language spoken by the Pirah\u00e3 tribe in Brazil."], "nyctalopia": ["A condition making it difficult or impossible to see in relatively low light."], "night blindness": ["A condition making it difficult or impossible to see in relatively low light."], "landmark": ["A notable building or place with historical, cultural, or geographical significance."], "health insurance": ["Insurance whereby the insurer pays the medical costs of the insured if the insured becomes sick due to covered causes, or due to accidents."], "lesion": ["An area of abnormal tissue change."], "charity": ["Social welfare organisation with programs designed to assist individuals in times of need."], "charitable organization": ["Social welfare organisation with programs designed to assist individuals in times of need."], "multidrug resistance": ["The ability of pathologic cells to withstand chemicals that are designed to aid in the eradication of such cells."], "Forak": ["A language of Papua New Guinea."], "Northern Frisian": ["A minority language of Germany spoken by about 10,000 people on the western coast of Schleswig-Holstein."], "Eastern Frisian": ["A language of Germany."], "Fortsenal": ["A language of Vanuatu."], "Western Frisian": ["A West Germanic language spoken in Friesland in the northwestern Netherlands."], "Finnish Sign Language": ["A language of Finland."], "French Sign Language": ["French Sign Language and Togo."], "Finnish-Swedish Sign Language": ["A language of Finland."], "Adamawa Fulfulde": ["A language of Cameroon, Chad, Nigeria and Sudan."], "East Futuna": ["A language of Wallis and Futuna and New Caledonia."], "Borgu Fulfulde": ["A language of Benin, Nigeria and Togo."], "Pular": ["A language of Guinea, Mali, Senegal and Sierra Leone."], "Northeastern Burkina Faso Fulfulde": ["A language of Niger, Benin and Burkina Faso."], "Bagirmi Fulfulde": ["A language of Chad and the Central African Republic."], "Fum": ["A language of Nigeria."], "Fulni\u00f4": ["An isolated language of Brazil, and the only indigenous language remaining in the northeastern part of that country."], "Futuna-Aniwa": ["A language of Vanuatu."], "Kano-Katsina-Bororro Fulfulde": ["A language of Nigeria, Cameroon and Chad"], "Fuyug": ["A language of Papua New Guinea."], "Fw\u00e2i": ["A language of New Caledonia."], "Fwe": ["A Bantu language spoken by 10,000 people along the Okavango River in Namibia and in the Western Province in Zambia."], "trauma center": ["Specialized hospital facility which provides diagnostic and therapeutic services for trauma patients."], "spoil": ["To hinder or prevent (the efforts, plans, or desires) of.", "Of food, to become bad, sour or rancid; to decay."], "pamper": ["To treat with excessive indulgence.", "To treat with excessive indulgence."], "starfish": ["(Asteroidea) Animals belonging to the echinoderms characterized by five arms extending from a central disk."], "sepia": ["A rich brown pigment produced from the ink of cuttlefish.", "Synthetic pigment that corresponds to the color of the ink of cuttlefish."], "Patello Femoral Pain Syndrome": ["A degenerative condition of the cartilage surface of the back of the knee cap, or patella."], "runner's knee": ["A degenerative condition of the cartilage surface of the back of the knee cap, or patella."], "chondromalacia patellae": ["A degenerative condition of the cartilage surface of the back of the knee cap, or patella."], "CMP": ["A degenerative condition of the cartilage surface of the back of the knee cap, or patella."], "Runner's Knee": ["A degenerative condition of the cartilage surface of the back of the knee cap, or patella."], "Ga": ["A language of Ghana."], "Gabri": ["A language of Chad."], "Gaddang": ["A language of the Philippines."], "Guarequena": ["A language of Venezuela and Brazil."], "Gende": ["A language of Papua New Guinea."], "Alekano": ["A language of Papua New Guinea."], "first language": ["The first language learnt; the language one grew up with."], "great cormorant": ["Medium sized, black water bird from the family of the cormorants (Phalacrocoracidae), scientific name: Phalacrocorax carbo"], "Blissymbols": ["An artificial language that has is a written language only.", "A pictotraphic writing system using a set of symbols created by Charles Kasiel Bliss in the 1940s as a written language."], "death mask": ["A plaster or wax cast made of a person's face following death."], "Rett syndrome": ["A progressive disorder affecting the cerebral cortex of females; present from birth; manifested by autistic behavior, ataxia, dementia, seizures, loss of purposeful usefulness of the hands, cerebral atrophy, and mild hyperammonemia."], "Borei": ["A language of Papua New Guinea."], "Gadsup": ["A language of Papua New Guinea."], "Gamkonora": ["A language of Indonesia (Maluku)."], "Galoli": ["A language of East Timor."], "Kandawo": ["A language of Papua New Guinea."], "Gants": ["A language of Papua New Guinea."], "Gal": ["A language of Papua New Guinea."], "Gata'": ["A language of India."], "Galeya": ["A language of Papua New Guinea."], "Kenati": ["A language of Papua New Guinea."], "Gabutamon": ["A language of Papua New Guinea."], "Nobonob": ["A language of Papua New Guinea."], "Gayo": ["A language of Indonesia (Sumatra)."], "Kaytetye": ["A language of Australia."], "Garawa": ["A language of Australia."], "Karadjeri": ["A language of Australia."], "Niksek": ["A language of Papua New Guinea."], "Gaikundi": ["A language of Papua New Guinea."], "Gbanziri": ["A Ubangian language of the Central African Republic and the Democratic Republic of the Congo."], "Defi Gbe": ["A language of Benin."], "Galela": ["A language of Indonesia (Maluku)."], "Northern Grebo": ["A language of Liberia."], "Gbaya-Bossangoa": ["A language of Central African Republic."], "Gbaya-Bozoum": ["A language of Central African Republic."], "Gbagyi": ["A language of Nigeria."], "Gbesi Gbe": ["A language of Benin."], "Gagadu": ["A language of Australia."], "Gbanu": ["A Gbaya language of the Central African Republic."], "Kinetoscope": ["A device invented by Thomas Edison to view a movie recorded using a kinetograph."], "Eastern Xwla Gbe": ["A language of Benin."], "Gbari": ["A language of Nigeria."], "Zoroastrian Dari": ["A language of Iran."], "sextant": ["A navigational device for deriving angular distances between objects so as to determine latitude and longitude."], "zygomatic bone": ["Paired bone of the human skull, situated on the lateral edge of the eye sockets."], "malar bone": ["Paired bone of the human skull, situated on the lateral edge of the eye sockets."], "cheekbone": ["Paired bone of the human skull, situated on the lateral edge of the eye sockets."], "vetiver": ["Species of grass whose roots are used in perfumery"], "disobedient": ["Not obeying"], "cirrhosis": ["Consequence of chronic liver disease characterized by replacement of liver tissue by fibrotic scar tissue as well as regenerative nodules, leading to progressive loss of liver function."], "Stone Pine": ["High, evergreen tree in the genus Pinus and in the family Pinaceae with an umbrella-shaped crown, long needles and edible seeds."], "Italian Stone Pine": ["High, evergreen tree in the genus Pinus and in the family Pinaceae with an umbrella-shaped crown, long needles and edible seeds."], "Umbrella Pine": ["High, evergreen tree in the genus Pinus and in the family Pinaceae with an umbrella-shaped crown, long needles and edible seeds."], "evergreen": ["(Of plants) Having green leaves or needles throughout the entire year."], "Ganggalida": ["A language of Australia."], "Galice": ["An extinct language of the USA."], "Grenadian Creole English": ["A language of Grenada."], "Gaina": ["A language of Papua New Guinea."], "Colonia Tovar German": ["A language of Venezuela."], "Gugu Badhun": ["A language of Australia."], "Gedaged": ["A language of Papua New Guinea."], "Ga'dang": ["A language of the Philippines."], "Gadjerawang": ["A language of Australia."], "Gundi": ["A language of Central African Republic."], "Gurdjar": ["A language of Australia."], "Laal": ["A language of Chad."], "Umanakaina": ["A language of Papua New Guinea."], "Lomonosov Ridge": ["Circa 1800 km long oceanic ridge in the Arctic Ocean."], "Mehri": ["A language of Yemen and Kuwait."], "Wipi": ["A language of Papua New Guinea."], "Kire": ["A language of Papua New Guinea"], "Gboloo Grebo": ["A language of Liberia."], "Gade": ["A language of Nigeria."], "Gengle": ["A language of Nigeria."], "Gebe": ["A language of Indonesia (Maluku)."], "cudgel": ["A short heavy club with a rounded head used as a weapon."], "club": ["A short heavy club with a rounded head used as a weapon.", "Group of persons meeting or organizing for a common hobby or interest.", "A formal association of people with similar interests."], "truncheon": ["A short heavy club with a rounded head used as a weapon."], "baton": ["A short heavy club with a rounded head used as a weapon."], "night stick": ["A short heavy club with a rounded head used as a weapon."], "Kag-Fer-Jiir-Koor-Ror-Us-Zuksun": ["A language of Nigeria."], "Geman Deng": ["A language of China."], "Geme": ["A language of Central African Republic."], "Geser-Gorom": ["A language of Indonesia (Maluku)."], "Enya": ["A language of Democratic Republic of the Congo."], "Geez": ["An extinct language of Ethiopia and Eritrea"], "Patpatar": ["A language of Papua New Guinea."], "Gafat": ["An extinct language of Ethiopia."], "Gao": ["A language of Solomon Islands."], "in vain": ["Without success, without the desired effect."], "vainly": ["Without success, without the desired effect."], "impalpable": ["Regarding abstractions, namely, concepts, ideas, thoughts etc.(Adj.; Re. Philosophy; Source: IPDF)"], "intangible": ["Regarding abstractions, namely, concepts, ideas, thoughts etc.(Adj.; Re. Philosophy; Source: IPDF)"], "untouchable": ["Regarding abstractions, namely, concepts, ideas, thoughts etc.(Adj.; Re. Philosophy; Source: IPDF)"], "Wolof": ["A language from the Atlantic branch of the Niger-Congo language family spoken in Senegal, Mauritania and the Gambia."], "Aaron": ["A brother of Moses according to the Bible."], "Gbii": ["A language of Liberia."], "Gugadj": ["A language of Australia."], "Guragone": ["An Australian Aboriginal language spoken in Arnhem Land."], "Kungarakany": ["An extinct language of Australia."], "Ganglau": ["A Rai Coast language spoken in Madang Province, Papua New Guinea."], "Eastern Gurung": ["A language of Nepal."], "Aghu Tharnggalu": ["An extinct language of Australia."], "Gogodala": ["A language of Papua New Guinea, close to the Ari language."], "ordeal": ["A primitive method of determining a person's guilt or innocence by subjecting the accused person to dangerous or painful tests believed to be under divine control; escape was usually taken as a sign of innocence.", "A severe or trying experience."], "Peloponnese": ["A large peninsula in southern Greece, forming the part of the country south of the Gulf of Corinth."], "Peloponnesus": ["A large peninsula in southern Greece, forming the part of the country south of the Gulf of Corinth."], "Mount Vesuvius": ["A volcano at the Gulf of Naples in the Southern Italian region of Campania."], "Herculaneum": ["An ancient Roman town in the Italian region of Campania at the Gulf of Naples which was destroyed during the eruption of Mount Vesuvius in 79 CE."], "leatherback sea turtle": ["(Dermochelys coriacea) A sea turtle species of the group of Dermochelyoidae, measuring up to 2 meters long whose skin is very dark blue. This is the only species of this group still existing and the largest living species of turtles."], "cold-blooded": ["(Zoology) Having a body temperature that varies according to the outside temperature.", "Without emotion or feeling.", "Without compunction or human feeling."], "Oscan": ["The language of the Osci in the Sabellic branch of the Italic language family which was spoken in the South of the Italian peninsula in ancient times."], "Osci": ["Ancient Italic people who lived in the Southern Italian region Campania."], "Southern Ghale": ["A Tibetic language spoken by the Southern Ghale people in the Gorkha District of the Gandaki Zone in Nepal."], "Northern Ghale": ["A Tibetic language spoken by the Northern Ghale people in the Gorkha District of the Gandaki Zone in central Nepal."], "Geko Karen": ["A language of Myanmar."], "Ghanongga": ["A language of the Solomon Islands."], "Guhu-Samane": ["A language of Papua New Guinea."], "Kutang Ghale": ["A Tibetic language spoken by the Kutang Ghale people in the northern Gorkha District of the Gandaki Zone in central Nepal."], "Kitja": ["A language of Australia."], "Gibanawa": ["A language of Nigeria."], "Gail": ["A language of South Africa."], "Gimi": ["A Papuan language spoken in Eastern Highlands Province, Papua New Guinea.", "An Austronesian dialect chain of West New Britain, Papua New Guinea."], "Gitxsan": ["A language of Canada."], "Gilima": ["A language of the Democratic Republic of the Congo."], "Giyug": ["A language of Australia."], "Gonja": ["A language of Ghana."], "Guya": ["A language of Papua New Guinea."], "Ndai": ["A language of Cameroon."], "Gokana": ["A language of Nigeria."], "Guinea Kpelle": ["A language of Guinea."], "Scottish Gaelic": ["A language in the Goidelic branch of Celtic languages spoken in Scotland."], "Bon Gula": ["A language of Chad"], "Gula Iro": ["A language of Chad."], "Glaro-Twabo": ["A language of Liberia."], "Gula": ["A language of Chad.", "A language of Central African Republic and Sudan."], "Gambera": ["A language of Australia."], "Gula'alaa": ["A language of the Solomon Islands."], "M\u00e1ghd\u00ec": ["An Adamawa language of Nigeria."], "Gimnime": ["A language of Cameroon."], "Gumalu": ["A language of Papua New Guinea."], "Magoma": ["A Bantu language of Tanzania."], "Kaansa": ["A language of Burkina Faso."], "Gangte": ["A language of India and Myanmar."], "lady's cloak": ["Type of warm and wide garment for women, worn over other clothing."], "shepherdess": ["Woman who tends sheep."], "concomitant": ["Following as a consequence."], "Capri": ["Italian island in the Gulf of Naples."], "Francophile": ["Having a special fondness for France, the French and French culture.", "A person having a special fondness for France, the French and French culture."], "francophobe": ["Having a strong dislike for France, the French and French culture."], "common vole": ["(Microtus arvalis) Rodent in the genus Microtus in the subfamily Arvicolinae which lives primarily in fields and meadows in Europe and some regions of Asia."], "zircon": ["Mineral in the group of silicates, with chemical formula ZrSiO4."], "Gambian Wolof": ["A language of Gambia."], "Ngangam": ["A language of Togo and Benin."], "Lere": ["A nearly extinct Kainji dialect cluster of Nigeria."], "Gooniyandi": ["A language of Australia."], "Gangulu": ["An extinct language of Australia."], "Ginuman": ["A language of Papua New Guinea."], "Gumatj": ["A language of Australia."], "Gureng Gureng": ["An extinct language of Australia."], "Guntai": ["A language of Papua New Guinea."], "Gnau": ["A language of Papua New Guinea."], "Western Bolivian Guaran\u00ed": ["A language of Bolivia."], "Ganzi": ["A language of the Central African Republic."], "Guro": ["A language of C\u00f4te d'Ivoire."], "Playero": ["A language of Colombia."], "Gorakor": ["A language of Papua New Guinea."], "Godi\u00e9": ["A language of C\u00f4te d'Ivoire."], "Gongduk": ["A Tibetic language spoken by the Gongduk people in a few isolated villages located near the Kurichu river in the Mongar District in eastern Bhutan."], "Gogo": ["A Bantu language spoken by the Gogo people of Dodoma Region in Tanzania."], "Gobasi": ["A language of Papua New Guinea."], "Gola": ["A language of Liberia and Sierra Leone."], "Gone Dau": ["A language of Fiji."], "Yeretuar": ["A language of Indonesia (Papua)"], "Gorap": ["A language of Indonesia (Maluku)."], "Gorontalo": ["A language of Indonesia (Sulawesi)."], "Gronings": ["A language of the Netherlands"], "Gobu": ["A dialect of the Banda language spoken by the Banda people in the Democratic Republic of the Congo and the Central African Republic."], "Goundo": ["A language of Chad."], "Gozarkhani": ["A language of Iran."], "17th century": ["The century which lasted from 1601-1700 in the Gregorian calendar."], "metropolitan area": ["An area of population usually with a central or core city and surrounding towns or suburbs."], "subsidiary": ["That is being added as integratory part.", "A company owned by a parent company or holding company.", "Furnishing aid.", "Functioning in a supporting capacity."], "Protestantism": ["The forms of Christian faith and practice that originated with the doctrines of the Reformation."], "textbook": ["Book used in the study of a subject that contains a systematic presentation of the principles and vocabulary of a subject."], "immune response": ["The body's integrated response to an antigen, mediated by lymphocytes"], "macrophage": ["Cell within the tissues that originates from specific white blood cells called monocytes.", "Cells within the tissues that originate from specific white blood cells called monocytes."], "psychologist": ["A practitioner in the field of psychology."], "propinquity": ["The tendency for people to work better or bond with those geographically near them."], "orifice": ["An aperture or hole that opens into a bodily cavity."], "ontogeny": ["The entire sequence of events involved in the development of an individual organism.", "The description of the origin and the development of an organism from the fertilized egg to its mature form and death."], "retirement": ["Withdrawal from one's occupation or active working life: having concluded one's working or professional career."], "Gupa-Abawa": ["A language of Nigeria."], "Taiap": ["A language of Papua New Guinea."], "Guiqiong": ["A language of China."], "Guana": ["An extinct language of Brazil.", "A language of Paraguay."], "Guruntum-Mbaaru": ["A language of Nigeria."], "Gbiri-Niragu": ["A language of Nigeria."], "Ghari": ["A language of the Solomon Islands."], "Southern Grebo": ["A language of Liberia and the C\u00f4te d'Ivoire."], "Kota Marudu Talantang": ["A language of Malaysia (Sabah)."], "Groma": ["A Tibetan language spoken by the Groma people living in southern Tibet in the Chambi Valley between Bhutan and the Indian state of Sikkim."], "Gorovu": ["A language of Papua New Guinea."], "Gresi": ["A language of Indonesia (Papua)."], "Garo": ["A language of India and Bangladesh."], "Kistane": ["A language of Ethiopia."], "Central Grebo": ["A language of Liberia."], "Gweda": ["A language of Papua New Guinea."], "Guriaso": ["A language of Papua New Guinea."], "Barclayville Grebo": ["A language of Liberia"], "Guramalum": ["A language of Papua New Guinea."], "footnote": ["A short piece of text, often numbered, placed at the bottom of a printed page, that adds a comment, citation, reference etc, to a designated part of the main text."], "ornithologist": ["A male person who studies or practices ornithology", "A female person who studies or practices ornithology", "A person who studies or practices ornithology"], "genus": ["A rank in the classification of organisms, below family and above species.", "A number measuring some aspect of the complexity of any of various manifolds or graphs."], "Aztecs": ["All the people linked by trade, custom, religion, and language to the Mexica state and the Triple Alliance."], "Gulf of Tonkin": ["The northwest arm of the South China Sea."], "orthodontics": ["Dental specialty concerned with the prevention and correction of dental and oral anomalies, irregularities and malocclusions."], "adolescent": ["A male juvenile between the onset of puberty and maturity; in the state of development between puberty and maturity.", "A female juvenile between the onset of puberty and maturity; in the state of development between puberty and maturity.", "A juvenile between the onset of puberty and maturity; in the state of development between puberty and maturity."], "sphincter": ["A ring-shaped muscle that relaxes or tightens to open or close a passage or opening in the body."], "18th century": ["The century which lasted from 1701-1800 in the Gregorian calendar."], "Ao Naga": ["A language of India."], "Sudoku": ["A game whose objective is to fill a 9x9 grid so that each column, each row, and each of the nine 3x3 boxes (also called blocks or regions) contains the digits 1 to 9."], "ligature": ["A special character that is used to represent a sequence of characters.", "A symbol that connects multiple notes in some way.", "A device, similar to a tourniquet, usually of thread or string, tied around a limb, blood vessel or similar to restrict blood flow. (source: Wikipedia)"], "Ghanaian Sign Language": ["A language of Ghana."], "German Sign Language": ["The sign language of the deaf community in Germany."], "Gusilay": ["A language of Senegal."], "Guatemalan Sign Language": ["A language of Guatemala."], "Gusan": ["A language of Papua New Guinea."], "Wasembo": ["A language of Papua New Guinea."], "Greek Sign Language": ["A language of Greece."], "Guat\u00f3": ["A possible language isolate spoken by the about 10% Guat\u00f3 people of Brazil."], "retch": ["To regurgitate the contents of the stomach.", "To make a effort to vomit."], "Gbati-ri": ["A language of the Democratic Republic of the Congo."], "Shiki": ["A language of Nigeria."], "reduction": ["Chemical reaction in which an element gains an electron.", "Act of reducing a quantity or a number.", "The amount by which something is reduced.", "The process of thickening a liquid mixture such as a sauce by evaporation", "The act of abating or the state of being abated."], "reduce": ["To thicken a liquid mixture such as a sauce by evaporation.", "To cut down on; to make a reduction in (especially costs, jobs, e.g. with financial and administrative acts).", "Euphemism for \"reduce\", \"make worse, smaller or less\", \"give up\"."], "Guajaj\u00e1ra": ["A language of Brazil."], "Yocobou\u00e9 Dida": ["A language of the C\u00f4te d'Ivoire."], "Gurinji": ["A language of Australia."], "Gupapuyngu": ["A language of Australia."], "Paraguayan Guaran\u00ed": ["The primary variety of Guaran\u00ed which is spoken in Paraguay."], "Guahibo": ["A language of Colombia and Venezuela."], "Eastern Bolivian Guaran\u00ed": ["A language of Bolivia, Argentina and Paraguay"], "Guambiano": ["A language of Colombia."], "Mby\u00e1 Guaran\u00ed": ["A language of Brazil, Argentina and Paraguay"], "Guayabero": ["A language of Colombia."], "Gunwinggu": ["A language of Australia."], "Farefare": ["A language of Ghana and Burkina Faso."], "Ninkare": ["A language of Ghana and Burkina Faso."], "Guinean Sign Language": ["A sign language used in Guinea."], "Mal\u00e9ku Ja\u00edka": ["A language of Costa Rica."], "Yanomam\u00f6": ["A language of Venezuela and Brazil."], "Gey": ["An extinct language of Cameroon."], "Gun": ["A language of Benin and Nigeria"], "Gourmanch\u00e9ma": ["A language of Burkina Faso, Benin, Niger and Togo."], "Gusii": ["A language of Kenya."], "diocese": ["In Christian religions, a region administered by a bishop."], "grid": ["A system for delivery of electricity, consisting of various substations, transformers and generators, connected by wire.", "A pattern of regularly spaced horizontal and vertical lines."], "painkiller": ["Any medicine, such as aspirin, that reduces pain."], "oxytocin": ["(C43H66N12O12S2) Mammalian peptide hormone that acts as a neurotransmitter in the brain."], "immigration": ["The action of coming to a foreign country or region, to which one is not native, in order to settle there."], "significant": ["Worth paying attention to."], "consideration": ["The act or an instance of considering."], "impression": ["The overall effect of something.", "A vague idea in which some confidence is placed."], "rugby": ["A sport originally from Rugby, England where players in a team of 15 attempt to score points by touching an ovid ball to the ground in the area past their opponent\u2019s territory or kicking the ball between goalposts and over a crossbar"], "settle": ["To cause a boat to go down in the water.", "To have permanent residence.", "To bring to an end; to settle conclusively.", "To bring to an agreement.", "To establish a colony.", "To come to an agreement or settlement of a dispute or argument, to attempt to sort something out between parties or to settle a case, to finish animosities."], "accord": ["To bring to an agreement."], "Guanano": ["A language of Brazil and Colombia."], "Duwet": ["A language of Papua New Guinea."], "Golin": ["A language of Papua New Guinea."], "Guaj\u00e1": ["A language of Brazil."], "perfect pitch": ["The ability to identify a musical note without having to hear a reference note previously."], "absolute pitch": ["The ability to identify a musical note without having to hear a reference note previously."], "cuneiform": ["An ancient writing system originating in Mesopotamia."], "Gurmana": ["A language of Nigeria."], "Kuku-Yalanji": ["A language of Australia."], "Gavi\u00e3o do Jiparan\u00e1": ["A language of Brazil."], "Par\u00e1 Gavi\u00e3o": ["A language of Brazil."], "Western Gurung": ["A language of Nepal and India."], "Gumawana": ["A language of Papua New Guinea."], "Guyani": ["An extinct language of Australia."], "instrumental": ["Serving as a means.", "A musical composition or recording without lyrics or any other sort of vocal music."], "sumo": ["A stylised Japanese form of wrestling in which a wrestler loses if he is forced from the ring, or if any part of his body except the soles of his feet touch the ground."], "falsetto": ["A singing technique that produces sounds pitched higher than the singer's normal range."], "Mbato": ["A language of the C\u00f4te d'Ivoire."], "Gwa": ["A language of Nigeria."], "Gweno": ["A Bantu language spoken in the North Pare Mountains in the Kilimanjaro Region of Tanzania."], "Moo": ["A language of Nigeria."], "Gwere": ["A language of Uganda."], "Guwamu": ["A language of Australia."], "Kwini": ["A language of Australia."], "Gua": ["A language of Ghana."], "W\u00e8 Southern": ["A language of the C\u00f4te d'Ivoire."], "Northwest Gbaya": ["A language of the Central African Republic, Cameroon, Congo, Nigeria"], "Garus": ["A language of Papua New Guinea."], "Kayardild": ["A language of Australia."], "Gyem": ["A language of Nigeria."], "Gungabula": ["A language of Australia."], "Gbayi": ["A language of the Central African Republic."], "Gyele": ["A language of Gabon and Equatorial Guinea."], "Ng\u00e4bere": ["A language of Panama."], "Guyanese Creole English": ["A language of Guyana and Suriname"], "Guarayu": ["A language of Bolivia."], "Gunya": ["A language of Australia."], "Ganza": ["A language of Ethiopia"], "Gazi": ["A language of Iran"], "Gane": ["A language of Indonesia (Maluku)."], "Hanoi Sign Language": ["A sign language used in the city of Hanoi in Viet Nam."], "Gurani": ["A language of Iraq and Iran."], "Hawrami": ["A language of Iraq and Iran."], "Hatam": ["A language of Indonesia (Papua)."], "closet": ["An enclosed space or piece of furniture where clothes are kept."], "sprain": ["Injury which occurs to ligaments or joints caused by a sudden overstretching.", "To get an injury to a ligament or a joint caused by a sudden overstretching."], "ecchymosis": ["Injury to biological tissue, generally caused by an impact, in which the capillaries are damaged, allowing blood to seep into the surrounding tissue."], "subsistence": ["Minimal or marginal resources for subsisting."], "substantiate": ["To make real or concrete; give reality or substance to.", "To establish or strengthen with new evidence or facts."], "outspoken": ["Given to expressing yourself freely or insistently.", "Characterized by directness in manner or speech; without subtlety or evasion."], "vocal": ["Given to expressing yourself freely or insistently."], "graduate student": ["A university student, usually already possessing a four year degree, who is working on a master's degree or Ph.D."], "producer": ["An individual or organization that creates goods or services."], "disseminate": ["To make known or public.", "To cause to become widely known."], "bland": ["Lacking in taste or vigor."], "tasteless": ["Having no flavour."], "texture": ["The feel of a surface or a fabric."], "census": ["An official periodic count of a population including such information as sex, age, occupation, etc.", "A count of members of a population, not necessarily human, usually residents in a particular region, often done at regular intervals."], "wrestling": ["A sport consisting of hand-to-hand combat between two unarmed contestants seeking to pin or press each other's shoulders to the ground."], "spirometry": ["The measurement of volume of air inhaled or exhaled by the lung."], "median income": ["The amount which divides the income distribution into two equal groups, half having income above that amount, and half having income below that amount."], "per capita income": ["The mean income computed for every man, woman, and child in a particular group. It is derived by dividing the total income of a particular group by the total population in that group."], "chronic obstructive respiratory disease": ["A group of diseases characterized by the pathological limitation of airflow in the airway that is not fully reversible. COPD is the umbrella term for chronic bronchitis, emphysema and a range of other lung disorders."], "Haiphong Sign Language": ["A sign language used in the city of Haiphong in Viet Nam."], "Hanga": ["A language of Ghana."], "abstruse": ["Difficult to understand."], "vague": ["Expressed in an unclear fashion."], "uncertain": ["Lacking or indicating lack of confidence or assurance."], "complicated": ["Hard to accomplish."], "anode": ["The electron-absorbing electrode of an electron tube.", "The negative terminal of a galvanic cell", "The positive terminal of an electrolytic cell."], "wrestler": ["A person who wrestles."], "weightlifting": ["A form of exercise in which weights are lifted."], "weightlifter": ["A person who uses weights to train the muscles."], "Parkinson disease": ["Progressive, degenerative disorder of the nervous system characterized by tremors, rigidity, bradykinesia, postural instability, and gait abnormalities; caused by a loss of neurons and a decrease of dopamine in the basal ganglia."], "subcapsular sinus": ["The portion of the lymph node between the capsule and cortex. It receives lymph from the afferent lymph vessels and passes it to the cortical sinus."], "afferent": ["Conveying towards a center."], "lateral": ["Situated at or extending to the side."], "boxing": ["A combat sport in which two participants of similar weight fight each other with their fists."], "boxing glove": ["A padded mitten, designed to protect the hand while punching, and worn in boxing."], "Lyme disease": ["Infection by a bacterium of the genus Borrelia which is transmitted by ticks."], "checkmark": ["A mark made to indicate agreement, correctness or acknowledgement."], "19th century": ["The century which lasted from 1801-1900 in the Gregorian calendar."], "linguistic": ["Of or relating to the study of language (linguistics).", "Of or pertaining to language."], "category": ["A group to which items are assigned based on similarity or defined criteria."], "acrolect": ["The variety of speech that is considered the standard form and has the highest prestige."], "censor": ["A person who is authorized to read publications or correspondence or to watch performances and suppress in whole or in part anything considered obscene or unacceptable.", "To read publications or correspondence or to watch performances and suppress in whole or in part anything considered obscene or unacceptable."], "hoax": ["Anything deliberately intended to deceive or trick."], "extinct": ["Of an species of organisms that no longer exist alive."], "insidious": ["Working or spreading in a hidden and usually injurious way."], "woolly rhinoceros": ["(Coelodonta antiquitatis) An extinct species of rhinoceros that lived during the Pleistocene epoch, but survived the last ice age."], "Ming dynasty": ["The ruling dynasty of China from 1368 to 1644."], "bull terrier": ["A breed of dog in the terrier family that is thick-set and muscular with a short, dense coat."], "acupuncture": ["Treatment of pain or disease by inserting the tips of needles at specific points on the skin."], "magnet": ["A material or object that produces a magnetic field."], "glycolysis": ["The breakdown of a monosaccharide, generally glucose, into simpler components, including pyruvate."], "Irish Sign Language": ["A language of Ireland."], "Indonesian Sign Language": ["A language of Indonesia."], "Hahon": ["A language of Papua New Guinea."], "Hakka": ["A Chinese language spoken primarily in South China and in Taiwan by the Hakka people, but also in Brunei, French Guiana, French Polynesia, Indonesia, Malaysia, Panama, Singapore, Suriname and Thailand."], "Norwegian Sign Language": ["A language of Norway."], "Natagaimas": ["An extinct language of Colombia."], "Indian Sign Language": ["A sign language used in India and Bangladesh."], "Salang": ["A Bahnaric language spoken in the southern Laotian province of Attapu and in the neighboring Kon Tum Province of Vietnam."], "Hewa": ["A language of Papua New Guinea."], "Hangaza": ["A language of Tanzania."], "Hak\u00f6": ["A language of Papua New Guinea."], "Hupla": ["A language of Indonesia (Papua)."], "Harari": ["A language of Ethiopia."], "Haisla": ["A language of Canada."], "Havu": ["A language of Democratic Republic of the Congo."], "Southern Haida": ["A language of Canada."], "Haya": ["A language of Tanzania."], "Hazaragi": ["A language of Afghanistan, Iran and Pakistan."], "decennial": ["The tenth anniversary of an event or happening.", "Happening every ten years."], "centenary": ["The 100th anniversary of an event or happening."], "Usher's syndrome": ["An innate reciprocal congenital deafness and progressing loss of vision due to retinitis pigmentosa."], "synthetic": ["Produced by synthesis instead of being isolated from a natural source."], "cognitive": ["Of or being or relating to or involving cognition."], "goldfish": ["A relatively small member of the carp family, the goldfish is a domesticated version of a dark-gray/brown carp native to East Asia."], "equivalence": ["The condition of being essentially equal."], "formal education": ["The process of training and developing people in knowledge, skills, mind, and character in a structured and certified program."], "humorous": ["Arousing laughter.", "Full of or characterized by humour."], "nationalist": ["A man that advocates nationalism.", "A woman that advocates nationalism.", "A person that advocates nationalism.", "Pertaining to nationalism."], "CTLA4": ["Cell marker on the surface of some immune cells."], "cell marker": ["Biochemical or genetic characteristics which distinguish and discriminate between different cell types."], "rope ladder": ["A ladder with side pieces of rope."], "haggard": ["Looking exhausted and unwell."], "retract": ["To take back something one has said."], "prediction": ["An estimate of a future condition.", "A statement of what will happen in the future."], "parsimonious": ["Excessively unwilling to spend."], "penurious": ["Excessively unwilling to spend."], "stingy": ["Excessively unwilling to spend."], "hallucination": ["Subjectively experienced sensations in the absence of an appropriate stimulus, but which are regarded by the individual as real."], "business partner": ["A man who is involved, as a partner, with someone else in a legal general partnership and shares in the management of a business.", "A woman who is involved, as a partner, with someone else in a legal general partnership and shares in the management of a business.", "An individual who is involved, as a partner, with someone else in a legal general partnership and shares in the management of a business."], "drowning": ["Death as caused by suffocation when a liquid causes interruption of the body's absorption of oxygen from the air leading to asphyxia."], "playwright": ["A writer of plays for the theatre."], "shame": ["The consciousness or awareness of dishonor, disgrace, or condemnation."], "step": ["A flat surface or support that facilitates the ascent or descent of a stairway.", "An advance or movement made from one foot to the other.", "To move the foot in walking; to advance or recede by raising and moving one of the feet to another resting place, or by moving both feet in succession."], "searchlight": ["An apparatus with reflectors for projecting a powerful beam of light of approximately parallel rays in a particular direction, usually devised so that it can be swiveled about."], "workload": ["The total amount of work to be performed by an individual, a department, or other group of workers in a period of time."], "oceanographer": ["A man who studies oceanography, the science of oceans.", "A woman who studies oceanography, the science of oceans.", "A person who studies oceanography, the science of oceans."], "plate tectonics": ["A theory of geology that has been developed to explain the observed evidence for large scale motions of the Earth's lithosphere."], "asthenosphere": ["The zone of the Earth's upper mantle, below the lithosphere."], "birthday cake": ["A cake often decorated with candles, made to celebrate someone's birthday."], "instantaneous": ["Happening within an imperceptibly brief period of time."], "divergent": ["Moving in different directions."], "aortic valve stenosis": ["A constriction in the opening of the aortic valve or of the supravalvular or subvalvular regions."], "corpulent": ["Very fat; pretty obese."], "bulky": ["Very fat; pretty obese.", "Being large in size, mass, or volume."], "heavily built": ["Very fat; pretty obese."], "thickset": ["Very fat; pretty obese."], "toothpick": ["A small, usually wooden stick, often pointed at both ends, for removing food residue from the area between the teeth."], "Hamba": ["A language of the Democratic Republic of the Congo."], "Huba": ["A language of Nigeria."], "Habu": ["A language of East Timor."], "Andaman Creole Hindi": ["A language of India."], "Huichol": ["A language of Mexico."], "Honduras Sign Language": ["A language of Honduras."], "Herd\u00e9": ["A language of Chad."], "Helong": ["A language of Indonesia (Nusa Tenggara)."], "Hehe": ["A language of Tanzania."], "Heiltsuk": ["A language of Canada."], "Hemba": ["A language of the Democratic Republic of the Congo."], "Herero": ["A language of the Bantu family spoken by Herero people in Namibia, parts of Botswana and also sporadically in Angola."], "Saan": ["A language of Namibia."], "Haigwai": ["A language of Papua New Guinea."], "Kerak": ["A language of Senegal."], "Hibito": ["An extinct language of Peru."], "Pamosu": ["A language of Papua New Guinea."], "Hijuk": ["A language of Cameroon."], "Seit-Kaitetu": ["A language of Indonesia (Maluku)."], "rant": ["A declamation written, or more often oral, where emotionality supersedes rationality. Its purpose is a call to action, often identifying a target for ire and a path to resolution. Due to the pejorative connotation of the term it is a descriptor that is often subjective, most often applied to messages disagreed with."], "Hiligaynon": ["An Austronesian language spoken in Western Visayas in the Philippines."], "Hietshware": ["A language of Botswana and Zimbabwe."], "Himarim\u00e3": ["A language of Brazil."], "Hiw": ["A language of Vanuatu."], "Kahe": ["A language of Tanzania."], "Hunde": ["A language of the Democratic Republic of the Congo."], "Halia": ["A language of Papua New Guinea."], "pelotte": ["A game played between two or four players, against one or two walls, with a hard wooden racquet and a ball of a size mid-way between a tennis ball and a golf ball."], "Matu Chin": ["A language of Myanmar and India."], "apostate": ["A person who renounces a religion or faith."], "ephemeris": ["A table giving the apparent position of celestial bodies throughout the year."], "Eastern Farsi": ["A dialect of the Persian language spoken in Afghanistan, where it is an official language, and in Pakistan."], "Dari": ["A dialect of the Persian language spoken in Afghanistan, where it is an official language, and in Pakistan."], "conundrum": ["Any problem where the answer is very complex, possibly unsolvable without deep investigation."], "diaphragm": ["An opening in the lightpath of a lens or objective that can regulate the amount of light that passes."], "lens": ["An optical device with perfect or approximate axial symmetry which transmits and refracts light, concentrating or diverging the beam.", "Transparent, biconvex natural lens inside the eye that, along with the cornea, refracts light to be focused on the retina, and whose shape can be modified by muscles to adapt the focal distance."], "Ebola": ["A severe and often fatal disease in humans and nonhuman primates, monkeys and chimpanzees, caused by the Ebola virus.", "The viral genus Ebolavirus (EBOV) named after the Ebola River, where the first recognized outbreak occurred."], "Ebola hemorrhagic fever": ["A severe and often fatal disease in humans and nonhuman primates, monkeys and chimpanzees, caused by the Ebola virus."], "resemble": ["To be like or similar to something else."], "glaucoma": ["A group of diseases characterized by increased intraocular pressure resulting in damage to the optic nerve and retinal nerve fibers."], "spokesman": ["A person who speaks on behalf of others, but is understood not to be necessarily part of the others."], "thermobaric device": ["A bomb that generally detonate in two stages: a small blast creates a cloud of explosive material, which is then ignited with devastating effect."], "fuel-air bomb": ["A bomb that generally detonate in two stages: a small blast creates a cloud of explosive material, which is then ignited with devastating effect.", "A bomb that uses a fuel-air explosive."], "approximate": ["To come near to; to move towards.", "To calculate roughly, often from imperfect data.", "Not quite exact or correct."], "fickle": ["Liable to sudden unpredictable change.", "Marked by erratic changeableness in affections or attachments."], "javelin": ["A metal-tipped spear thrown for distance in an athletic field event"], "porcelain": ["A white translucent dense ceramic material produced by fusing under high temperature a mixture of feldspar, kaolin, quartz, whiting and other substances.", "Made of porcelain."], "alpha male": ["The dominant male in a group of animals."], "prowess": ["A superior skill that can be learned by study, practice and observation."], "intercontinental": ["Taking place between two or more continents."], "untenable": ["Not able to be held, as of an opinion or position."], "junta": ["The ruling council of a military dictatorship."], "baby face": ["A face resembling that of a baby."], "worldwide": ["Involving the entire earth; not limited or provincial in scope.", "Spanning or extending throughout the entire world."], "transparency": ["An openness and willingness to accept public scrutiny that diminishes the capacity for an organisation to practice or harbor deception or deceit.", "A picture consisting of a positive photograph or drawing on a transparent base; viewed with a projector."], "Songhay": ["A group of closely related languages/dialects centered on the middle stretches of the Niger River in the west African states of Mali, Niger, Benin, Burkina Faso, and Nigeria."], "racquet": ["An implement with a handle connected to a round frame strung with wire, sinew, or plastic cords, and used to hit a ball, such as in tennis or a birdie in badminton."], "optic nerve": ["Either of a pair of nerves that carry visual information from the retina to the brain."], "clandestine": ["Kept or done in secret, often in order to conceal an illicit or improper purpose."], "Hiri Motu": ["A language of Papua New Guinea"], "Hmar": ["A language of India."], "Hamtai": ["A language of Papua New Guinea."], "Hamap": ["A language of Indonesia (Nusa Tenggara)."], "Mina": ["A chadic language spoken in Northern Cameroon."], "Hani": ["A language of China, Laos and Viet Nam."], "Hanunoo": ["A language of the Philippines."], "corporal": ["A non-commissioned officer rank in the U.S.A army."], "tenant": ["One who pays a fee (rent) in return for the use of land, buildings, or other property owned by others."], "rostrum": ["The platform a speaker stands on while giving a speech.", "External anatomical structure of birds which is used for taking food and for eating.", "The beak or snout of a Cetacea, such as a dolphin."], "beatboxing": ["The art of vocal percussion."], "Hoava": ["A language of the Solomon Islands."], "Mari": ["A language of Papua New Guinea."], "Horom": ["A language of Nigeria."], "Hoby\u00f3t": ["A language of Oman."], "Holu": ["A language of Angola and the Democratic Republic of the Congo."], "Homa": ["An extinct language of Sudan."], "Holoholo": ["A language of the Democratic Republic of the Congo."], "Ho Chi Minh City Sign Language": ["A sign language used in Ho Chi Minh City in Viet Nam."], "Hote": ["A language of Papua New Guinea."], "Hovongan": ["A language of Indonesia (Kalimantan)."], "Honi": ["A language of China."], "Hpon": ["A language of Myanmar."], "Hrangkhol": ["A language of Myanmar and India."], "Haruku": ["A language of Indonesia (Maluku)."], "Haroi": ["A language of Viet Nam."], "Horuru": ["A language of Indonesia (Maluku)."], "H\u00e9rtevin": ["A modern Eastern Aramaic language spoken in Turkey."], "Hruso": ["A language of India."], "Harzani": ["A language of Iran."], "Southeastern Huastec": ["A language of Mexico."], "Hungarian Sign Language": ["A language of Hungary."], "Hausa Sign Language": ["A language of Nigeria."], "Xiang": ["A Chinese language spoken mainly in Hunan province, but also in Sichuan and Guangxi provinces."], "javeling thrower": ["An athlete who throws a javeling."], "nudism": ["The practice of living unclothed for reasons of comfort or health."], "Harsusi": ["A language of Oman."], "Hoti": ["A language of Indonesia (Maluku)."], "Minica Huitoto": ["A language of Colombia and Peru."], "meltdown": ["Accidental overheating of the core of a nuclear reactor resulting in the core melting and radiation escaping."], "square root": ["Of a number, a number which, when squared, yields the given number; sometimes constrained to be the positive number where two solutions exist."], "Nazi Germany": ["Germany under the government of Adolf Hitler and the National Socialist German Workers Party."], "Third Reich": ["Germany under the government of Adolf Hitler and the National Socialist German Workers Party."], "Ankole-Watusi cattle": ["(Bos primigenius taurus) Breed of cattle native to East Africa with long curved horns."], "Ankole cattle": ["(Bos primigenius taurus) Breed of cattle native to East Africa with long curved horns."], "theorem": ["A mathematical statement of some importance that has been proved to be true."], "on-the-job training": ["Training undertaken in the workplace as part of the productive work of the learner."], "Central Pashto": ["A language of Pakistan."], "Northern Pashto": ["A language of Pakistan and Afghanistan."], "Southern Pashto": ["A language of Pakistan, Afghanistan, Iran and the United Arab Emirates."], "poverty line": ["The minimum level of income deemed necessary to achieve an adequate standard of living."], "astringent": ["A substance which draws tissue together thus restricting the flow of blood.", "Causing the constriction of soft organic tissue."], "reservation": ["A tract of land set apart by the US government for the use of a Native American people.", "An arrangement made in advance to have something at a certain time where only a limited number are available, such as a seat in a transport, a table at a restaurant or a room in a hotel."], "imprisonment": ["Putting someone in prison or in jail as lawful punishment."], "incarceration": ["Putting someone in prison or in jail as lawful punishment."], "civil parish": ["A subnational entity forming the lowest unit of English local government, lower than districts or counties."], "cricketer": ["A person who plays cricket, particularly on a high level."], "qirad": ["One of the financial instruments of the Islamic world."], "discourse": ["A formal lengthy exposition of some subject."], "Hitu": ["An Austronesian spoken on Ambon Island in eastern Indonesia."], "Huambisa": ["A Jivaroan language spoken by the Huambisa people in Amazonas and Loreto, Peru."], "Huaulu": ["A language of Indonesia (Maluku)."], "San Francisco del Mar Huave": ["A language of Mexico."], "Humene": ["A language of Papua New Guinea."], "Huachipaeri": ["A language of Peru."], "Huilliche": ["A language of Chile."], "Hulung": ["A language of Indonesia (Maluku)."], "Hula": ["A language of Papua New Guinea."], "Hungana": ["A language of the Democratic Republic of the Congo."], "Tsat": ["A language of China."], "Humla": ["A language of Nepal."], "Murui Huitoto": ["A language of Peru and Colombia"], "San Mateo del Mar Huave": ["A language of Mexico."], "Hukumina": ["A language of Indonesia (Maluku)"], "N\u00fcpode Huitoto": ["An indigenous American language spoken in Peru."], "Hulaul\u00e1": ["A modern Jewish Aramaic language spoken in Israel."], "San Lu\u00eds Potos\u00ed Huastec": ["A language of Mexico."], "Haitian Vodoun Culture Language": ["A language of Haiti."], "San Dionisio del Mar Huave": ["A language of Mexico."], "Haveke": ["A language of New Caledonia."], "Sabu": ["A language of Indonesia (Nusa Tenggara)."], "Santa Mar\u00eda del Mar Huave": ["A language of Mexico."], "Wan\u00e9": ["A language of C\u00f4te d'Ivoire"], "diversity": ["The presence of a wide range of variation in the qualities or attributes that are being observed."], "expound": ["To lay open the meaning of, to explain or discuss at length."], "damnation": ["Condemnation to everlasting punishment in the future state.", "The state of being damned."], "random assignment": ["An experimental technique for assigning subjects to different treatments, or no treatment."], "replace": ["Making a substitution with a similar object.", "To use in place of something else, with the same function.", "Put something back where it belongs."], "dermatology": ["A medical specialty concerned with the skin, its structure, functions, diseases, and treatment."], "Medieval Latin": ["Medieval form of Latin which was used as literary language and language of education from circa 550 to 1500 in Western Europe."], "differential calculus": ["The branch of calculus that studies how functions change when their inputs are varied."], "Islamabad": ["Capital city of Pakistan."], "Iaai": ["A language of New Caledonia."], "Iatmul": ["A language of Papua New Guinea."], "Iapama": ["A language of Brazil."], "Purari": ["A language of Papua New Guinea."], "times": ["Number of times."], "regular": ["ordered; conform a fixed procedure."], "Lake Karachay": ["Lake in the southern Ural mountains near the city of Kyshtym in the Russian Chelyabinsk Oblast."], "Lake Karachai": ["Lake in the southern Ural mountains near the city of Kyshtym in the Russian Chelyabinsk Oblast."], "tribulation": ["A trying period or event."], "adversity": ["A trying period or event."], "Old Latin": ["Stage of the Latin language in the period before the age of Classical Latin; that is, all Latin before 75 BC."], "Early Latin": ["Stage of the Latin language in the period before the age of Classical Latin; that is, all Latin before 75 BC."], "Archaic Latin": ["Stage of the Latin language in the period before the age of Classical Latin; that is, all Latin before 75 BC."], "bleeding": ["A heavy release of blood within or from the body."], "Etruscans": ["Ancient people which lived in nothern central Italy in today's regions of Tuscany, Umbria and Latium."], "dare": ["To have enough courage (to do something)."], "carnage": ["A ruthless killing of a great number of people."], "Maroon": ["A runaway slave in the West Indies, Central America, South America, or North America."], "Society of Jesus": ["A Christian religious order of the Catholic Church at the service of the universal Church."], "freshet": ["The sudden flooding of a stream because of heavy rain."], "drawback": ["A negative or unwanted consequence or side effect of a solution.", "Something that detracts or takes away.", "Something that detracts or takes away."], "Edman degradation": ["A method of sequencing amino acids in a peptide."], "snakepit": ["A historical European means of imposing capital punishment."], "mountainous": ["Abounding in mountains."], "Ibibio": ["A language of Nigeria."], "Iwaidja": ["A language of Australia."], "Akpes": ["A language of Nigeria."], "Ibanag": ["A language of the Philippines."], "Ibilo": ["A language of Nigeria."], "Ibaloi": ["A language of the Philippines."], "Agoi": ["A language of Nigeria."], "Ibino": ["A language of Nigeria."], "Ibuoro": ["A language of Nigeria."], "Ibu": ["A language of Indonesia (Maluku)."], "Ibani": ["A language of Nigeria."], "Ede Ica": ["A language of Benin."], "Etkywan": ["A language of Nigeria."], "Icelandic Sign Language": ["A language of Iceland."], "Islander Creole English": ["A language of Colombia."], "Wakhi": ["A language of Pakistan, Afghanistan, China and Tajikistan."], "Idakho-Isukha-Tiriki": ["A language of Kenya."], "Indo-Portuguese": ["A language of Sri Lanka."], "Idon": ["A language of Nigeria."], "Ede Idaca": ["A language of Benin."], "Idere": ["A language of Nigeria."], "Dacia": ["The land of the Daci. Dacia was a large district of South-eastern Europe, bounded on the north by the Carpathians, on the south by the Danube, on the west by the Tisia or Tisa, on the east by the Tyras or Nistru"], "supreme": ["Having power over all others."], "facebook": ["A social networking website launched on 2004.", "A college publication distributed at the start of the academic year by university administrations with the intention of helping students get to know each other better."], "Idi": ["A language of Papua New Guinea."], "Indri": ["A language of Sudan."], "Idesa": ["A language of Nigeria."], "Idat\u00e9": ["A language of East Timor."], "Idoma": ["A language of Nigeria."], "elderberry juice": ["Juice made from elderberries."], "pincer": ["Pliers made of steel for removing nails from wood."], "Amganad Ifugao": ["A language of Philippines."], "Batad Ifugao": ["A language of the Philippines."], "If\u00e8": ["A language of Togo and Benin."], "Ifo": ["An extinct language of Vanuatu."], "Tuwali Ifugao": ["A language of Philippines."], "Teke-Fuumu": ["A language of Congo."], "Mayoyao Ifugao": ["A language of Philippines."], "claw hammer": ["A tool primarily used for pounding nails into, or extricating nails from, some other object."], "have fun": ["To enjoy oneself doing something."], "children's home": ["Institution where orphaned children are raised and cared for."], "paternal": ["Of or pertaining to the father, his genes, his relatives, or his side of a family."], "maternal": ["Of or pertaining to the mother, her genes, her relatives, or her side of a family."], "clarification": ["An interpretation that removes obstacles to understanding."], "elucidation": ["An interpretation that removes obstacles to understanding."], "ventive": ["A grammatical category of the verb in some languages indicating that the action is performed in the direction of the speaker."], "affiliate": ["An entity with a relationship with a peer or a larger entity.", "To adopt or accept as a member, subordinate associate, or branch."], "diacritical mark": ["A special mark added to a letter to indicate a different pronunciation, stress, tone, or meaning."], "lemon tree": ["Evergreen tree in the genus Citrus which produces yellow fruits with sour taste."], "kurgan": ["A prehistoric burial mound once used by peoples in Siberia and Central Asia."], "one-eyed": ["Having but one eye."], "monocular": ["Having but one eye."], "panniers": ["Women's undergarments worn in the eighteenth century that extend the width of the skirts at the side while leaving the front and back flat."], "side hoops": ["Women's undergarments worn in the eighteenth century that extend the width of the skirts at the side while leaving the front and back flat."], "bile": ["A bitter brownish-yellow or greenish-yellow secretion produced by the liver, stored in the gallbladder, and discharged into the duodenum where it aids the process of digestion."], "gastrointestinal tract": ["The system of digestive organs stretching from the mouth to the anus, but does not include the accessory glandular organs."], "alimentary canal": ["The system of digestive organs stretching from the mouth to the anus, but does not include the accessory glandular organs."], "jaundice": ["A clinical manifestation of hyperbilirubinemia, consisting of deposition of bile pigments in the skin, resulting in a yellowish staining of the skin and mucous membranes."], "icterus": ["A clinical manifestation of hyperbilirubinemia, consisting of deposition of bile pigments in the skin, resulting in a yellowish staining of the skin and mucous membranes."], "bittern": ["A bird of the family Ardeidae that lives in marshy areas, feeds on amphibians, reptiles, insects and fish and flies with its neck retracted rather than outstretched."], "jaundiced eye": ["A prejudiced view."], "Keley-I Kallahan": ["A language of the Philippines."], "Ebira": ["A language of Nigeria."], "Igede": ["A language of Nigeria."], "Igana": ["A language of Papua New Guinea."], "Igala": ["A language of the Yoruboid branch of the Volta\u2013Niger language family, spoken by the Igala ethnic group of Nigeria."], "Kanggape": ["A language of Papua New Guinea."], "Ignaciano": ["A language of Bolivia."], "Isebe": ["A language of Papua New Guinea."], "Interglossa": ["A constructed language whose vocabulary consists entirely of roots from Greek yet whose grammar was borrowed from Chinese."], "Igwe": ["A language of Nigeria."], "Iha Based Pidgin": ["A language of Indonesia (Papua)."], "Ihievbe": ["A language of Nigeria."], "Iha": ["A language of Indonesia (Papua)."], "Sichuan Yi": ["A sino-tibetan language spoken by the Yi people in rural areas of Sichuan, Yunnan, Guizhou, and Guangxi, in China."], "Kalabari": ["A language of Nigeria."], "Southeast Ijo": ["A language of Nigeria."], "Eastern Canadian Inuktitut": ["A language spoken in Canada by the Inuit people in most of Nunavut, and Nunavik, Quebec."], "Iko": ["A language of Nigeria."], "Ikulu": ["A language of Nigeria."], "Olulumo-Ikom": ["A language of Nigeria."], "Ikpeshi": ["A language of Nigeria."], "Western Canadian Inuktitut": ["A language using the Latin alphabet spoken in the Northwest Territories and in some regions of Nunavut, in Canada."], "Iku-Gora-Ankwa": ["A language of Nigeria."], "Pompeian": ["Pertaining to Pompeii."], "glass splinter": ["A splinter of broken glass."], "stark-naked": ["Absolutely naked."], "glass table": ["Table with a table top made of glass."], "glass door": ["Door made of glass or with inset glass panes."], "glass noodle": ["Thin, almost transparent type of noodle in Asian cuisine made from from mung bean starch and water."], "cellophane noodle": ["Thin, almost transparent type of noodle in Asian cuisine made from from mung bean starch and water."], "autumn rain": ["The rain in autumn."], "tonal language": ["A language where a high-low pitch pattern is permanently associated with the meaning of words."], "tonogenesis": ["The appearance of contrasting tone in a previously non-tonal language"], "atonal": ["Lacking a tonal center or key."], "adhesive bandage": ["A small dressing used for injuries not serious enough to require a full-size bandage."], "philanthropist": ["Someone who makes charitable donations intended to increase human well-being"], "Ikwere": ["A language of Nigeria."], "Ikizu": ["A language of Tanzania."], "gambler": ["Someone who risks loss or injury in the hope of gain or excitement"], "in-band signaling": ["The sending of metadata and control information in the same band, on the same channel, as used for data."], "bellows": ["A device for delivering pressurized air in a controlled quantity to a controlled location.", "A device consisting of a deformable air container which has an outlet nozzle for delivering a current of air to a controlled location such as a fireplace."], "stoning": ["A form of capital punishment whereby an organized group throws stones at the convicted individual until the person dies."], "post office": ["A building, office or shop concerned with the business of delivering letters, post or mail and selling stamps etc."], "oscillation": ["The variation, typically in time, of some measure about a central value, often a point of equilibrium, or between two or more different states."], "ginger": ["Perennial plants having thick branching aromatic rhizomes and leafy reedlike stems.", "To season with ginger."], "judoka": ["A practitioner of the Japanese martial art of Judo."], "doe": ["A female rabbit.", "A female deer.", "A female Roe Deer"], "brazen": ["Having no shame.", "Unrestrained by convention or propriety."], "papal": ["Of, relating to, or issued by the pope."], "martial art": ["Any of several fighting styles which contain systematised methods of training for combat, both armed and unarmed; often practised as a sport."], "faucet": ["A valve with the function of regulating the flow of a liquid or gas through a pipe.", "A device applied to the end of a pipe in order to interrupt and regulate the flow of a liquid or gas."], "stopcock": ["A device applied to the end of a pipe in order to interrupt and regulate the flow of a liquid or gas.", "A valve with the function of regulating the flow of a liquid or gas through a pipe."], "set off": ["To fire a bullet from a firearm."], "bourgeoisie": ["The middle class."], "shameless": ["Without any attempt at concealment; completely obvious.", "Having no shame."], "hepatic portal vein": ["De ader die zuurstofarm, voedingsstofrijk bloed van de darmen, maag en milt naar de lever voert"], "Ile Ape": ["A language of Indonesia (Nusa Tenggara)."], "Ila": ["A language of Zambia."], "Garig-Ilgar": ["A language of Australia."], "Ili Turki": ["A language of China and Kazakhstan"], "Ilongot": ["A language of the Philippines."], "Iranun": ["A language of Malaysia (Sabah)."], "Ili'uun": ["A language of Indonesia (Maluku)."], "Ilue": ["A language of Nigeria."], "Talur": ["A language of Indonesia (Maluku)."], "Imeraguen": ["A language of Mauritania."], "Anamgura": ["A language of Papua New Guinea."], "Imonda": ["A language of Papua New Guinea."], "Imbongu": ["A language of Papua New Guinea."], "Imroing": ["A language of Indonesia (Maluku)."], "Inga": ["A language of Colombia."], "Jungle Inga": ["A language of Colombia."], "heart failure": ["The inability of the heart to pump blood at an adequate rate to fill tissue metabolic requirements or the ability to do so only at an elevated filling pressure."], "atherosclerosis": ["A condition that results from the gradual build-up of fatty substances, including cholesterol, on the walls of the arteries."], "ischemia": ["Blood deficiency in an organ or tissue caused by a constriction or obstruction of its blood vessels."], "bailiff": ["An officer of the court who is employed to execute writs and processes and make arrests."], "bluff": ["A high, steep bank, as by a river or the sea, or beside a ravine or plain; a cliff with a broad face"], "coronary heart disease": ["The imbalance between myocardial functional requirements and the capacity of the coronary vessels to supply sufficient blood flow."], "coronary artery disease": ["The imbalance between myocardial functional requirements and the capacity of the coronary vessels to supply sufficient blood flow."], "drain": ["A conduit allowing liquid to flow out of an otherwise contained volume.", "To cause liquid to flow out.", "An artificial waterway for carrying storm water or industrial discharge.", "A street drainage system building component that serves as intake of surface water on paved surfaces and leads it to underground drainage facilities, such as the sewer tunnel."], "sharpshooter": ["A person trained to shoot precisely with a certain type of rifle."], "marksman": ["A person trained to shoot precisely with a certain type of rifle.", "A man trained to shoot precisely with a certain type of rifle."], "aftermath": ["That which happens after, that which follows."], "Community Database class": ["Community Database class."], "is spoken in": ["Defines a relation between a linguistic entity and a geographic entity."], "Niamey": ["The capital of Niger."], "Saint John's": ["The capital and largest city of Antigua and Barbuda."], "Nassau": ["Capital city of the Bahamas."], "Bridgetown": ["The capital city of Barbados."], "Thimphu": ["The capital of Bhutan"], "Sallands": ["A language of the Netherlands."], "Stellingwerfs": ["A language of the Netherlands."], "Twents": ["A language of the Netherlands"], "tusk": ["An extremely long tooth of certain mammals that protrudes when the mouth is closed."], "Oktoberfest": ["The world's biggest beer festival, taking place in Munich since 1810, during the two week-long period between late September and early October."], "ball-peen hammer": ["A hammer having, besides the normal flat head, an opposite, rounded or peening head."], "Isinai": ["A language of the Philippines."], "Inoke-Yate": ["A language of Papua New Guinea."], "Port Moresby": ["The capital of Papua New Guinea."], "borders on": ["Indicates countries and seas a country is bordering on"], "I\u00f1apari": ["A language of Peru."], "pea": ["An annual plant originally from the Mediterranean basin and the Near East."], "Intha": ["A Burmish language spoken by the Intha in south-west Shan State of Myanmar.", "The members of a Tibeto-Burman ethnic group living around Inle Lake."], "flows through": ["Indicates that a river flows through a country."], "flows into": ["Indicates where a river ends."], "smuggler": ["A man who imports or exports without paying the lawful customs charges or duties.", "A woman who imports or exports without paying the lawful customs charges or duties.", "Someone who imports or exports without paying the lawful customs charges or duties."], "Gulf of Guinea": ["The part of the Atlantic Ocean southwest of Africa."], "Douro": ["One of the major rivers of the Iberian Peninsula, flowing from its source in the province of Soria across northern-central Spain and Portugal to its outlet at Porto."], "is situated at the": ["Indicates that a geographic phenomena is situated at the banks of the river."], "Koblenz": ["A German city situated on both banks of the Rhine at its confluence with the Moselle."], "Kura": ["River in the Caucasus Mountains, starting in Eastern Turkey and flowing through Turkey to Georgia, then to Azerbaijan."], "gallbladder": ["Pear-shaped organ that stores bile, releasing it when the body needs it for digestion."], "Inese\u00f1o": ["An extinct language of USA."], "Inor": ["A language of Ethiopia."], "Tuma-Irumu": ["A language of Papua New Guinea."], "Iowa-Oto": ["An extinct language of the United States of America."], "Ipili": ["A language of Papua New Guinea."], "Ipiko": ["A language of Papua New Guinea."], "Iquito": ["A language of Peru."], "Iresim": ["A language of Indonesia (Papua)."], "Irarutu": ["A language of Indonesia (Papua)."], "Irigwe": ["A language of Nigeria."], "Ikoma": ["A language of Tanzania."], "quay": ["A mole, bank, or wharf, formed toward the sea, or parallel to shoreline, at the side of a harbor, river, or other navigable water, for convenience in loading and unloading vessels."], "Ir\u00e1ntxe": ["A language of Brazil."], "Vientiane": ["The capital of Laos."], "Taipei": ["The capital of Taiwan."], "New Delhi": ["The capital of India."], "Bay of Bengal": ["A bay that forms the northeastern part of the Indian Ocean."], "trailer": ["Any vehicle designed to be towed, with the exception of a caravan."], "is written in the": ["Indicates in what script a language is written in."], "affectionate": ["Having affection or warm regard; loving."], "Kamberau": ["A language of Indonesia (Papua)."], "Iraya": ["A language of the Philippines."], "Manila": ["The capital of the Philippines."], "Isabi": ["A language of Papua New Guinea."], "Persian Gulf": ["An extension of the Indian Ocean located between Iran and the Arabian Peninsula."], "Gulf of Oman": ["A gulf that connects the Arabian Sea with the Strait of Hormuz which then runs to the Persian Gulf"], "Isconahua": ["A language of Peru."], "Isnag": ["A language of the Philippines."], "Italian Sign Language": ["A sign language of Italy."], "signing": ["Communicating in a sign language."], "Esan": ["A language of Nigeria."], "Nkem-Nkum": ["A language of Nigeria."], "Masimasi": ["A language of Indonesia (Papua)."], "Isanzu": ["A language of Tanzania."], "Isoko": ["A language of Nigeria."], "Tunis": ["Capital city of Tunesia."], "Istriot": ["A language of Croatia."], "Isu": ["A language of Cameroon."], "Bight of Bonny": ["A bight off the West African coast, in the easternmost part."], "bight": ["A broad bay formed by an indentation (a bight) in the shoreline."], "Ionian Sea": ["An arm of the Mediterranean Sea, south of the Adriatic Sea."], "Tyrrhenian Sea": ["Part of the Mediterranean Sea off of the western coast of Italy and the east coast of Sardinia."], "Binongan Itneg": ["A language of the Philippines."], "Itene": ["An endangered Chapacuran language spoken in the Beni Department of Bolivia."], "Inlaod Itneg": ["A language of the Philippines."], "strawberry pear": ["The fruit of certain cacti, cultivated in Southeast Asia and Central and South America, having cerise-pink- or yellow-coloured skin and a white or pink sweet fleshy interior with black seeds."], "pitaya": ["The fruit of certain cacti, cultivated in Southeast Asia and Central and South America, having cerise-pink- or yellow-coloured skin and a white or pink sweet fleshy interior with black seeds."], "dragon fruit": ["The fruit of certain cacti, cultivated in Southeast Asia and Central and South America, having cerise-pink- or yellow-coloured skin and a white or pink sweet fleshy interior with black seeds."], "pitahaya": ["The fruit of certain cacti, cultivated in Southeast Asia and Central and South America, having cerise-pink- or yellow-coloured skin and a white or pink sweet fleshy interior with black seeds."], "attach": ["To make something fixed or stable; to cause to be firmly attached.", "To associate ownership of (something) to someone."], "touching": ["Provoking sadness and pity."], "moving": ["Provoking sadness and pity.", "In motion."], "Russian Sign Language": ["A language of Russia (Europe) and Bulgaria"], "mental reservation": ["A deception that does not actually tell an untruth."], "passenger train": ["A train that is equiped to transport people."], "Itu Mbon Uzo": ["A language of Nigeria."], "Itonama": ["A language of Bolivia."], "Iteri": ["A language of Papua New Guinea."], "Isekiri": ["A language of Nigeria."], "Maeng Itneg": ["A language of the Philippines"], "Itutang": ["A language of Papua New Guinea."], "Itawit": ["A language of the Philippines."], "Ito": ["A language of Nigeria."], "Itik": ["A language of Indonesia (Papua)."], "Moyadan Itneg": ["A language of the Philippines"], "Itza'": ["A language of Guatemala."], "Ibatan": ["A language of the Philippines"], "Ivatan": ["A language of the Philippines."], "I-Wak": ["A language of Philippines."], "Iwam": ["A language of Papua New Guinea."], "Iwur": ["A language of Indonesia (Papua)."], "Sepik Iwam": ["A language of Papua New Guinea."], "Ixcatec": ["A language of Mexico."], "Nebaj Ixil": ["A language of Guatemala."], "Chajul Ixil": ["A language of Guatemala."], "Iyayu": ["A language of Nigeria."], "Mesaka": ["A language of Cameroon"], "Ingrian": ["A language of Russia (Europe)."], "Izi-Ezaa-Ikwo-Mgbo": ["A language of Nigeria."], "Jamamad\u00ed": ["A language of Brazil."], "continuous": ["Without break, cessation or interruption."], "Hyam": ["A language of Nigeria."], "non-stop": ["Without break, cessation or interruption."], "endless": ["Without break, cessation or interruption."], "tighten": ["To make tighter."], "turn on": ["To cause to operate by flipping a switch."], "detention": ["A temporary state of custody or confinement, especially of a prisoner awaiting trial."], "gold-plated": ["Coated with a gold layer. (a ring, e.g.) (Re. electroplating)"], "silver-plated": ["Coated with a silver layer (e.g., a ring). (Re. electroplating)"], "shortage": ["A lack or short supply."], "licence plate": ["Metal sheet for alphanumerical identification of vehicles, on their front and/or rear parts."], "slate": ["An official list of candidates during an election."], "pal": ["Close friend."], "comrade": ["Close friend.", "A fellow male member of the Communist Party.", "A fellow female member of the Communist Party.", "A fellow member of the Communist Party."], "chum": ["Close friend."], "radiograph": ["A photograph with x-rays."], "radiogram": ["A photograph with x-rays."], "roentgenogram": ["A photograph with x-rays."], "smash-up": ["Circumstance in which two or more vehicles accidentally collide."], "daiquiri": ["A cocktail made of \u201ccacha\u00e7a\u201d (Brazilian-style tequila) or rum, with fruit juice (lemon) and sugar, all mixed in an electric blender."], "shake": ["Fruit pulp mixed with water or milk and sugar in a blender.", "To cause (something) to move rapidly from side to side.", "To arouse or stir up emotions or feelings.", "To clasp hands to communicate a greeting, feeling, or cognitive state."], "egg-yolk shake": ["Egg yolk mixed by hand or in electric mixer; if by hand it moves rather fast over and over through the yolk in a circular manner until it becomes very firm, when finally one adds sugar and manioc meal or cornmeal to it."], "Jahanka": ["A language of Guinea and Mali"], "Yabem": ["A language of Papua New Guinea."], "Kuala Lumpur": ["Capital of Malaysia."], "Western Jacaltec": ["A language of Guatemala and Mexico."], "Jakun": ["A language of Malaysia (Peninsular)."], "Yalahatan": ["A language of Indonesia (Maluku)."], "Jamaican Creole English": ["A language of Jamaica."], "Lim\u00f3n Creole English": ["A language of Jamaica."], "Panamanian Creole English": ["A language of Jamaica."], "Jaru\u00e1ra": ["A language of Brazil."], "Yaqay": ["A language of Indonesia (Papua)."], "New Caledonian Javanese": ["A language of New Caledonia."], "Caac": ["A language of New Caledonia."], "Hmwaveke": ["A language of New Caledonia."], "Yaur": ["A language of Indonesia (Papua)."], "Singapore City": ["Capital of Singapore."], "Jambi Malay": ["A language of Indonesia (Sumatra)."], "Jarnango": ["A language of Australia."], "Jawe": ["A language of New Caledonia."], "crepitation": ["A crackling sound heard in certain conditions such as the rale heard in pneumonia or the grating sound heard on movement of ends of a broken bone."], "laparoscopy": ["The examination of the abdominal interior with a laparoscope."], "prolapse": ["A condition where organs, such as the uterus, fall down or slip out of place."], "national anthem": ["A generally patriotic musical composition that is formally recognized by a country's government as their state's official national song."], "motto": ["A phrase or a short list of words meant formally to describe the general motivation or intention of an entity, social group, or organization."], "Arandai": ["A language of Indonesia (Papua)."], "Blue Planet": ["The third planet (counted from the center) of our solar system."], "citreous": ["Having the color of a lemon."], "lemon-yellow": ["Having the color of a lemon."], "Lojban": ["A constructed language designed to be culturally neutral, and based on the principles of logic."], "Jabut\u00ed": ["A language of Brazil."], "Jukun Takum": ["A language of Cameroon and Nigeria."], "Jamaican Country Sign Language": ["A sign language used in Jamaica."], "Jad": ["A language of India."], "Judeo-Tat": ["A language of Israel, Azerbaijan and Russia"], "Jebero": ["A language of Peru."], "Jerung": ["A language of Nepal."], "Kathmandu": ["The capital of Nepal."], "accentuation": ["Act of accentuating; applications of accent."], "frolic": ["To behave playfully and uninhibitedly."], "abasement": ["The act of abasing."], "translatable": ["Capable of being translated into another language."], "untranslatable": ["Not capable of being translated into another language."], "Lyons Sign Language": ["A sign language used in the city of Lyon in France."], "appendectomy": ["The surgical removal of the vermiform appendix."], "embolism": ["A block in an artery caused by blood clots, fat globules, infected tissue, or cancer cells."], "fat embolism": ["A type of embolism that is often, but not always, caused by physical trauma."], "ISO 4217 Code": ["Currency standard"], "Danish krone": ["The currency of Denmark."], "McBurney's incision": ["A short diagonal abdominal incision in the lower right quadrant in which the muscle fibers are separated rather than cut; used for appendectomy."], "abash": ["To make ashamed."], "Lao kip": ["The currency of Laos."], "Jeri Kuo": ["A language of C\u00f4te d'Ivoire."], "CFA franc": ["The currency of Benin, Burkina Faso, C\u00f4te d'Ivoire, Guinea-Bissau, Mali, Niger, Senegal and Togo.", "The currency of Cameroon, Central African Republic, Chad, Republic of the Congo, Equatorial Guinea and Gabon."], "fad": ["A fashion that is taken up with great enthusiasm for a brief period of time."], "Yelmek": ["A language of Indonesia (Papua)"], "Dza": ["A language of Nigeria."], "Jere": ["A language of Nigeria."], "Manem": ["A language of Papua New Guinea and Indonesia (Papua)."], "abatement": ["The amount abeted.", "An interruption in the intensity or amount of something.", "The act of abating or the state of being abated."], "Amstel": ["A canalised river in the south of North Holland."], "Ngbee": ["An extinct language of Democratic Republic of the Congo."], "Ngomba": ["A language of Cameroon."], "demonym": ["A word that denotes the members of a people or the inhabitants of a place."], "Cameroonian": ["A person who is living in or is from Cameroon."], "Frenchman": ["A man of French birth or nationality."], "Amsterdammer": ["A person who lives or was born in Amsterdam."], "abduct": ["To take away secretly by force; to carry away (a human being) wrongfully and usually by violence; to kidnap."], "kidnap": ["To take away secretly by force; to carry away (a human being) wrongfully and usually by violence; to kidnap."], "Jibu": ["A language of Nigeria."], "Tol": ["A language of Honduras."], "Gulf of Honduras": ["A large inlet of the Caribbean Sea, indenting the coasts of Belize, Honduras and Guatemala."], "Gulf of Fonseca": ["A gulf in Central America, bordering El Salvador, Honduras and Nicaragua."], "Lempira": ["The currency of Honduras."], "Honduran": ["A person from Honduras or of Honduran descent."], "Bu": ["A language spoken in the Nasarawa State in Nigeria."], "Nigerian": ["A person from Nigeria or of that ancestry.", "Of, from, or pertaining to Nigeria or the Nigerian people."], "Nigerian naira": ["The currency of Nigeria."], "Djingili": ["A language of Australia."], "Jiiddu": ["A language of Somalia"], "Gulf of Aden": ["A gulf located in the Arabian Sea (Indian Ocean) between Yemen on the south coast of the Arabian Peninsula and Somalia in the Horn of Africa."], "Somali shilling": ["The currency of Somalia."], "Jilim": ["A language of Papua New Guinea."], "Jimi": ["A language of Cameroon.", "A language of Nigeria."], "Guanyinqiao": ["A language of China."], "Tok Pisin": ["An English-based creole language spoken throughout Papua New Guinea."], "Papua New Guinean kina": ["The currency of Papua New Guinea."], "Mlomp": ["A language of Senegal."], "Kung-Gobabis": ["A language of Namibia and Botswana"], "pula": ["The currency of Botswana."], "Namibian dollar": ["The currency of Namibia."], "Jita": ["A language of Tanzania."], "Tanzanian shilling": ["The currency of Tanzania."], "Youle Jinuo": ["A language of China."], "Shuar": ["A language of Ecuador."], "Ecuadorian": ["A person of Ecuadorian origin or a person with the Ecuadorian nationality.", "Of or relating to Ecuador or to Ecuadorians."], "Buyuan Jinuo": ["A language of China."], "Kubo": ["A language of Papua New Guinea."], "Labir": ["A language of Nigeria."], "tuber": ["A fleshy, thickened under-ground stem of a plant, usually containing stored starch."], "emerald-green": ["Having the green color of emerald."], "abductor": ["One who abducts.", "Muscle whose function is to move away from the central line of the body the part to which it is connected."], "kidnapper": ["One who abducts."], "abhorrent": ["Causing disgust or detestation."], "Dima": ["A South Omotic language spoken in the northern part of the Selamago district in Ethiopia.", "A language of Papua New Guinea."], "Machame": ["A language of Nigeria."], "Yamdena": ["A language of Indonesia (Maluku)."], "Kamara": ["A language of Ghana."], "Mashi": ["A language of Nigeria."], "Vietnamese \u0111\u1ed3ng": ["The Vietnamese currency."], "abiding": ["Lasting a long time."], "Korea Bay": ["A bay separated from the Bohai Sea by the Liaodong Peninsula, with Dalian at its southernmost point."], "Luzon Strait": ["A strait connecting the Philippine Sea, in the western Pacific, to the South China Sea, between Taiwan and Luzon in the Philippines."], "Taiwan Strait": ["A 180km-wide strait between mainland China and the island of Taiwan."], "dear": ["Having a high price, cost.", "Precious to or greatly valued by someone.", "A formal way of addressing somebody at the beginning of a letter.", "A formal way of addressing somebody one likes or regards kindly.", "Greatly loved."], "Western Juxtlahuaca Mixtec": ["A language of Mexico."], "Ulan Bator": ["The capital of Mongolia."], "T\u00f6gr\u00f6g": ["The currency of Mongolia."], "Kazakhstani tenge": ["The currency of Kazakhstan."], "Tashkent": ["The capital of Uzbekistan."], "Jangshung": ["A language of India."], "Janji": ["A language of Nigeria."], "Rawat": ["A language of Nepal and India."], "Joba": ["A language of Democratic Republic of the Congo."], "Congolese franc": ["The official currency of the Democratic Republic of Congo since 1997."], "aboriginal": ["Species that evolved in a particular region or that evolved nearby and migrated to the region without help from humans.", "Indigenous Australian who is a descendant of the first known human inhabitants of the Australian continent and its nearby islands.", "A descendant of the first known human inhabitants of a region or country.", "Having existed from the beginning; in an earliest or original stage or state."], "enantiomer": ["A stereoisomer that is nonsuperimposable complete mirror images of each other."], "edible part": ["The part of something bigger that is edible."], "Wojenaka": ["A language of C\u00f4te d'Ivoire."], "Jor\u00e1": ["An extinct language of Bolivia."], "Jordanian Sign Language": ["A sign language used in Jordan."], "abstemious": ["Eating and drinking in moderation."], "Jordanian": ["A person who is a citizen of Jordan or originated from Jordan.", "Of or pertaining to Jordan or its inhabitants.", "A woman who is a citizen of Jordan or originated from Jordan."], "Jordanian dinar": ["The currency of Jordan."], "Jowulu": ["A language of Mali."], "stereoisomer": ["Isomeric molecule whose atomic connectivity is the same but whose atomic arrangement in space is different."], "Network Time Protocol": ["A protocol for synchronizing the clocks of computer systems over packet-switched, variable-latency data networks."], "claymore": ["A term used to describe two distinct types of Scottish swords."], "Legendre's conjecture": ["A prime number between n2 and (n+1)2 exists for every positive integer n."], "Dzhidi": ["A language of Israel and Iran."], "Jaqaru": ["A language of Peru."], "Jarai": ["A language of Viet Nam and Cambodia."], "Cambodian riel": ["The currency of Cambodia."], "Gulf of Thailand": ["A gulf that borders but is not part of the South China Sea."], "Cambodian": ["An austroasiatic language spoken primarily in Cambodia where it is an official language, and in the nearby regions of Vietnam.", "A citizen of Cambodia or someone who originates from Cambodia."], "Jiru": ["A language of Nigeria."], "Japrer\u00eda": ["A language of Venezuela."], "abasia": ["The inability to walk due to impaired muscle coordination."], "Japanese Sign Language": ["A language of Japan."], "J\u00fama": ["A language of Brazil."], "slaughter-house": ["A place where animals are butchered for food."], "slaughter": ["The killing and butchering of animals for food or other animal products.", "A ruthless killing of a great number of people.", "To kill animals for food."], "Dili": ["The capital of East Timor."], "pessmism": ["A belief that the experienced world is the worst possible."], "optimism": ["A general disposition to expect the best in all things."], "Norwegian krone": ["The currency of Norway."], "launder": ["To disguise the source of ill-gotten wealth and funds by various means and convert them to legal ones.", "To cleanse with a cleaning agent, such as soap, and water."], "laundrette": ["A place that has facilities for washing and drying clothes that the public may pay to use."], "Wannu": ["A language of Nigeria"], "Worodougou": ["A language of C\u00f4te d'Ivoire."], "H\u00f5ne": ["A language of Nigeria."], "Wapan": ["A language of Nigeria"], "Jirel": ["A Tibetan language spoken by the Jirel tribe in eastern Nepal.", "An ethnic group both ethnically and linguistically related to both the Sherpas and Sunuwars, with a population of 5,300 centered on the Jiri Valley."], "Nepalese rupee": ["The currency of Nepal."], "Jiba": ["A language of Nigeria."], "Hupd\u00eb": ["A language of Brazil and Colombia"], "Jur\u00fana": ["A language of Brazil."], "Jutish": ["A language of Denmark."], "W\u00e3pha": ["A language of Nigeria."], "gentilic": ["A word that denotes the members of a people or the inhabitants of a place."], "Caribbean Javanese": ["A language of Suriname and French Guiana"], "Surinamese dollar": ["The currency of Suriname."], "Jwira-Pepesa": ["A language of Ghana."], "Jiarong": ["A language of China."], "Judeo-Yemeni Arabic": ["A language of Israel and Jemen"], "tessitura": ["Distance from the lowest to the highest pitch a musical instrument can play."], "Guyanese dollar": ["The currency of Guyana."], "Guyanese": ["A person from or a national of Guyana."], "Karakalpak": ["A Turkic language mainly spoken by Karakalpaks in Karakalpakstan (Uzbekistan), as well as by Kazakhs, Bashkirs and Nogay."], "Uzbekistani som": ["The currency of Uzbekistan."], "Jingpho": ["A Tibeto-Burman language mainly spoken in Kachin State, Burma (Myanmar) and Yunnan Province, China."], "Naypyidaw": ["The capital of Myanmar."], "kyat": ["The currency of Myanmar."], "Andaman Sea": ["A body of water to the southeast of the Bay of Bengal, south of Myanmar, west of Thailand and east of the Andaman Islands; it is part of the Indian Ocean."], "Kadara": ["A language of Nigeria."], "Kajaman": ["A language of Malaysia (Sarawak)."], "sampling frequency": ["The number of samples per second, or per other unit, taken from a continuous signal to make a discrete signal."], "Jju": ["A language of Nigeria."], "Kayapa Kallahan": ["A language of the Philippines."], "slaughterer": ["A person who slaughters or dresses meat to be sold."], "annual ring": ["An annual formation of wood in plants, consisting of two concentric layers, one of springwood and one of summerwood."], "archer": ["Someone who shoots an arrow from a bow or a bolt from a crossbow."], "butcher": ["A retailer of meat."], "bakery": ["A baker's shop."], "hedgehog": ["Small mammal characterized by its spiny back and by its habit of rolling itself into a ball when attacked."], "baking powder": ["Any of various powdered mixtures used in baking as a substitute for yeast."], "porcupine": ["A large rodent with long quills that stand straight up when it is attacked or surprised."], "gunpowder": ["An explosive in the form of a powder."], "request stop": ["A stop, where a public means of transport stopped only if a passenger wants it."], "demand stop": ["A stop, where a public means of transport stopped only if a passenger wants it."], "flag stop": ["A stop, where a public means of transport stopped only if a passenger wants it."], "Xaasongaxango": ["A language of Mali and Senegal"], "Xasonga": ["A language of Mali and Senegal"], "Capanahua": ["A language of Peru."], "Katuk\u00edna": ["A language of Brazil."], "Kaxui\u00e2na": ["A language of Brazil."], "Kadiw\u00e9u": ["A language of Brazil."], "Kanju": ["A language of Australia."], "Kakauhua": ["An extinct language of Chile."], "Khamba": ["A language of India."], "Cams\u00e1": ["A language of Colombia."], "Kari": ["A language of Democratic Republic of the Congo."], "Grass Koiari": ["A language of Papua New Guinea."], "radioactively contaminated": ["Contaminated by radioactivity."], "lynx": ["Any of several medium-sized wild cats, mostly of the genus Lynx."], "ocelot": ["(Leopardus pardalis) An American feline carnivore covered with blackish ocellated spots and blotches which are variously arranged."], "top-level domain": ["The last part of an Internet domain name; that is, the letters which follow the final dot of any domain name."], "country code top-level domain": ["An Internet top-level domain generally used or reserved for a country or a dependent territory."], "impala": ["A medium-sized African antelope, Aepyceros melampus."], "hyena": ["A large carnivore of the family Hyaenidae, similar in appearance to a dog and native to Africa and Asia, best known for the sound resembling laughter that it makes when excited."], "hatchling": ["A newborn of animals that develop within eggs."], "secular": ["Not connected with spiritual or religious matters."], "serendipity": ["The act of finding something by looking for something else."], "darkroom": ["A room in which photographs are developed."], "Iwal": ["A language of Papua New Guinea."], "Kare": ["A language of Central African Republic and Cameroon", "A language of Papua New Guinea."], "Kaliko": ["A language of Sudan and the Democratic Republic of the Congo"], "Kabiy\u00e9": ["A language of Togo, Benin and Ghana"], "dazzle": ["To prevent from seeing properly by means of excessive brightness.", "Something that dazzles."], "spa gardens": ["Park for guests in a health resort."], "faithless": ["Not faithful.", "Having no religious faith."], "aback": ["Surprised and usually rather upset."], "marsh tit": ["(Poecile palustris) Bird species in the tit family Paridae which is common in central Europe and northern Asia."], "bird feeder": ["Small house used to supply food for birds, especially in winter."], "birdfeeder": ["Small house used to supply food for birds, especially in winter."], "Gulf of Finland": ["An arm of the Baltic Sea that extends between Finland (to the north) and Estonia (to the south) all the way to the city of Saint Petersburg in Russia."], "Swedish krona": ["The currency of Sweden."], "Skagerrak": ["A strait that runs between Norway and the southwest coast of Sweden and the Jutland peninsula of Denmark, connecting the North Sea and the Kattegat strait, which leads to the Baltic Sea."], "Dalecarlian": ["A language of Sweden."], "Jamtska": ["A language of Sweden."], "Scanian": ["A language of Sweden and Denmark."], "Swedish Sign Language": ["A sign language used in Sweden."], "despondency": ["A feeling of depression or disheartenment.", "Loss of hope."], "serval": ["(Leptailurus serval) A medium-sized African wild cat."], "timezone": ["A range of longitudes where a common standard time is used."], "Kamano": ["A language of Papua New Guinea."], "Kande": ["A language of Gabon."], "Libreville": ["The capital of Gabon."], "N'Djamena": ["The capital of Chad."], "abet": ["To help or encourage to do something wrong.", "The act of inciting or encouraging someone to commit a crime."], "minor": ["A person who is too young to be considered legally competent according to the laws of a jurisdiction."], "Malabo": ["The capital of Equatorial Guinea."], "Bight of Benin": ["A bight on the western African coast that extends eastward for about 640 km (400 miles) from Cape St. Paul to the Nun outlet of the Niger River."], "Aegean Sea": ["A sea arm of the Mediterranean Sea located between the southern Balkan and Anatolian peninsulas."], "Irish Sea": ["A sea that separates the islands of Ireland and Great Britain."], "Mazanderani": ["A language of Iran."], "Icelandic kr\u00f3na": ["The currency of Iceland."], "Nicaraguan c\u00f3rdoba": ["The currency of Nicaragua."], "discriminating": ["The way of treating something or someone differently."], "Libyan dinar": ["The currency of Libya."], "Libyan": ["A person from Libya.", "From or relating to Libya, the Libyan people or the Libyan language."], "Libyan Sign Language": ["A sign language used in Libya."], "Kuwaiti dinar": ["The currency of Kuwait."], "Egyptian pound": ["The currency of Egypt."], "Egyptian Sign Language": ["Sign language used in Egypt."], "gazetteer": ["A geographical dictionary, an important reference for information about places and place-names, used in conjunction with an atlas."], "Ophir": ["Port or region mentioned in the Old Testament of the Bible, famous for its wealth, notably gold."], "ablation": ["Surgical excision or amputation of a body part or tissue."], "ably": ["In an able manner; with great ability."], "ablaze": ["Burning strongly.", "Very bright."], "abnegation": ["Renunciation of your own interests in favor of the interests of others."], "abnormality": ["An anomaly, malformation, or difference from the normal.", "The state or quality of being abnormal."], "Strait of Otranto": ["Strait in the Mediterranean Sea which connects the Adriatic Sea with the Ionian Sea and measures 71km at the narrowest point."], "border river": ["A river which forms a border."], "Costa Rican col\u00f3n": ["The currency of Costa Rica."], "Chorotega": ["An extinct language of Costa Rica."], "general strike": ["Strike action by a critical mass of the labour force and other citizens in a city, region or country."], "Indonesian rupiah": ["The currency of Indonesia."], "aboard": ["On a ship, train, plane or other vehicle."], "Abadi": ["A language of Papua New Guinea."], "abound": ["To occur or exist in great quantities or numbers."], "Dera": ["A language of Indonesia (Papua) and Papua New Guinea", "A language of Nigeria."], "Kaiep": ["A language of Papua New Guinea."], "Ap Ma": ["A language of Papua New Guinea."], "Khanty": ["A language of Russia (Asia)"], "Kawacha": ["A language of Papua New Guinea."], "Lubila": ["A language of Nigeria."], "Ngk\u00e2lmpw Kanum": ["A language of Indonesia (Papua)."], "abortive": ["Failing to accomplish an intended objective."], "abreast": ["Alongside each other, facing in the same direction."], "side by side": ["Alongside each other, facing in the same direction."], "Kaivi": ["A language of Nigeria."], "Ukaan": ["A language of Nigeria."], "Tyap": ["A language of Nigeria."], "Vono": ["A language of Nigeria."], "Kamantan": ["A language of Nigeria."], "Kobiana": ["A language of Guinea-Bissau and Senegal."], "writing system": ["A system of characters used to write one or several languages."], "abridge": ["To reduce in scope while retaining essential elements."], "Kela": ["A language of Papua New Guinea.", "A language of Democratic Republic of the Congo."], "abrogate": ["To annul or rescend."], "abscond": ["To depart secretly."], "Nubi": ["A language of Uganda and Kenya."], "Kenyan shilling": ["The currency of Kenya."], "Parthian shot": ["A military tactic employed by the Parthians, mounted on light horses, they would feign retreat; then, while at a full gallop, turn their bodies back to shoot at the pursuing enemy."], "Yemeni": ["A person who is from Yemen."], "Yemeni rial": ["The currency of Yemen."], "Ethiopic script": ["An abugida script which was originally developed to write Ge'ez, a Semitic language."], "country calling code": ["The numbers that identify a country or a territory at the beginning of a telephone number."], "Omani rial": ["The currency of Oman."], "Omani": ["A person from Oman origin or an Omani citizen."], "Wikipedia article": ["An article in Wikipedia about the concept in that language."], "Croatian kuna": ["The official currency of Croatia."], "convertible mark": ["The currency of Bosnia and Herzegovina."], "Latvian lats": ["The currency of Latvia."], "Daugava": ["A river rising in the Valdai Hills, Russia, flowing through Russia, Belarus, and Latvia, draining into the Gulf of Riga"], "Gulf of Riga": ["A bay of the Baltic Sea between Latvia and Estonia."], "Kinalakna": ["A language of Papua New Guinea."], "Lithuanian litas": ["The currency of Lithuania."], "Estonian kroon": ["The official currency of Estonia."], "dandelion": ["A species of the genus Taraxacum, a large genus of flowering plants in the family Asteraceae."], "potassium nitrate": ["The potassium salt of nitric acid, KNO3"], "magnolia": ["A tree or shrub in any species of the genus Magnolia, many with large flowers and simple leaves."], "Dutch gulden": ["The Dutch currency until the introduction of the euro in 2002."], "paraffin": ["Paraffins. A homologous series of saturated hydrocarbons having the general formula CnH2n+2. Their systematic names end in -ane. They are chemically inert, stable, and flammable. The first four members of the series (methane, ethane, propane, butane) are gases at ordinary temperatures; the next eleven are liquids, and form the main constituents of paraffin oil; the higher members are solids. Paraffin waxs consists mainly of higher alkanes.\\n(Source: UVAROV)", "A group of high molecular weight alkane hydrocarbons with the general formula CnH2n+2, where n is between 22 and 27. Paraffin is also a technical name for an alkane in general, but in most cases it refers specifically to a linear, or normal alkane. It is mostly found as a white, odorless, tasteless, waxy solid, with a melting point between 47C and 65C. It is insoluble in water, but soluble in ether, benzene, and certain esters. Paraffin is unaffected by most common chemical reagents but oxidizes readily."], "screencast": ["A digital recording of computer screen output often containing audio narration."], "Kyrgyzstani som": ["The currency of Kyrgystan."], "Tajikistani somoni": ["The currency of Tajikistan."], "Turkish new lira": ["The currency of Turkey."], "Sea of Marmara": ["The inland sea that connects the Black Sea to the Aegean Sea, thus separating the Asian part of Turkey from its European part."], "Ashgabat": ["The capital of Turkmenistan."], "Turkmenistani manat": ["The currency of Turkmenistan."], "operates on": ["Produces the appropriate effect on."], "screw": ["A shaft with a helical groove or thread formed on its surface. Its main use is as a threaded fastener used to hold objects together.", "To connect or assemble pieces using a screw."], "Bhutanese ngultrum": ["The currency of Bhutan."], "Bulgarian lev": ["The currency of Bulgaria."], "Macedonian denar": ["The currency of Macedonia."], "Albanian lek": ["The currency of Albania."], "Serbian dinar": ["The currency of Serbia"], "Romanian leu": ["The currency of Romania."], "Hungarian forint": ["The Hungarian currency."], "Vorarlberg": ["The westernmost federal state of Austria. It is the second smallest state by both area and population."], "Burgenland": ["The easternmost and least populated federal state of Austria."], "Kamo": ["A language of Nigeria."], "Kaian": ["A language of Papua New Guinea."], "Kami": ["A language of Tanzania.", "A language of Nigeria."], "Dar es Salaam": ["The former capital and largest city of Tanzania."], "Kete": ["A language of Democratic Republic of the Congo"], "Kabwari": ["A language of Democratic Republic of the Congo."], "Konongo": ["A language of Tanzania."], "Worimi": ["An extinct language of Australia."], "Kutu": ["A language of Tanzania"], "Makonde": ["A language of Tanzania and Mozambique."], "Maputo": ["The capital of Mozambique."], "Mozambican": ["A person of Mozambican origin or with the Mozambican nationality."], "Mozambican metical": ["The currency of Mozambique."], "Mozambican Sign Language": ["A sign language used in Mozambique."], "Angolan kwanza": ["The currency of Angola."], "geographic unit": ["An OmegaWiki class for indicating an entity in geography."], "contrail": ["An artificial cloud made by the exhaust of jet aircraft or wingtip vortices that precipitate a stream of tiny ice crystals in moist, frigid upper air."], "Kondensstreifen": ["An artificial cloud made by the exhaust of jet aircraft or wingtip vortices that precipitate a stream of tiny ice crystals in moist, frigid upper air."], "vapor trail": ["An artificial cloud made by the exhaust of jet aircraft or wingtip vortices that precipitate a stream of tiny ice crystals in moist, frigid upper air."], "subcontractor": ["An individual or a business that signs a contract to perform part or all of the obligations of another's contract."], "contractor": ["A person who contracts to supply certain materials or do certain work for a stipulated sum."], "homograph": ["A word that is spelled the same as another, but has a different meaning and usually a different etymology."], "transliterate": ["To rewrite in a different script."], "trancribe": ["To write out from speech or from another text."], "Moldovan leu": ["The currency of Moldova."], "Suva": ["The capital of Fiji."], "Lesotho loti": ["The currency of Lesotho."], "Southern Sotho": ["A Bantu language, belonging to the Niger-Congo language family spoken by the Basotho nation (modern Lesotho)."], "Praia": ["The capital of Cape Verde."], "Cape Verdean escudo": ["The currency of Cape Verde."], "Cape Verdean Creole": ["A Portuguese-based Creole language spoken in the Cape Verde Islands."], "Qatari": ["A person with the Qatari nationality or someone who originated from Qatar.", "From or relating to Qatar."], "Qatari riyal": ["The currency of Qatar."], "Maltese lira": ["The currency of Malta until the end of 2007 when it was replaced by the euro"], "Maltese Sign Language": ["A language of Malta."], "Down syndrome": ["A genetic disorder caused by the presence of all or part of an extra 21st chromosome."], "Down\u2019s syndrome": ["A genetic disorder caused by the presence of all or part of an extra 21st chromosome."], "Brushfield spots": ["Small white spots on the periphery of the iris in the human eye due to aggregation of a normal iris element"], "hypoplasia": ["An incomplete or arrested development of an organ or a part of an organ."], "mental retardation": ["A lack of normal development of intellectual capacities; the diagnosis demands an IQ score below 70."], "Asperger syndrome": ["A neuropsychiatric disorder whose major manifestation is an inability to interact socially; other features include poor verbal and motor skills, single mindedness, and social withdrawal."], "Asperger's syndrome": ["A neuropsychiatric disorder whose major manifestation is an inability to interact socially; other features include poor verbal and motor skills, single mindedness, and social withdrawal."], "pyromania": ["A compulsive disorder characterised by obsession with fire or uncontrollable urges to start fires."], "kleptomania": ["The inability or great difficulty in resisting impulses of stealing"], "agoraphobia": ["An anxiety disorder which primarily consists of the fear of certain settings or unfamiliar environments that may present unexpected challenges or demands."], "New Zealand Sign Language": ["A sign language used in New Zealand."], "New Zealand Dollar": ["The currency of New Zealand"], "shunt": ["A passage that is made to allow blood or other fluid to move from one part of the body to another.", "(Electricity) To divert a part of a current by connecting a circuit element in parallel with another."], "Nobel Prize": ["Award founded by Alfred Nobel which is given yearly for outstanding achievements in the fields of physics, chemistry, physiology or medicine, literature, peace and economics."], "K\u00e9l\u00e9": ["A Bantu language spoken by the Akele people, living along the Ogoou\u00e9 and Ngounie rivers, and in the lake region around Lambar\u00e9n\u00e9, in Gabon."], "Kerewe": ["A language of Tanzania."], "Kpessi": ["A language of Togo."], "Lom\u00e9": ["The capital of Togo."], "Togolese": ["A person with the Togolese nationality or who originated from Togo."], "Kei": ["A language of Indonesia (Maluku)."], "artificial language": ["A language of which the phonology, grammar and/or vocabulary has been specifically devised by an individual or small group."], "created by": ["Indicates the person or authoritative body who brought the item into existence."], "ampoule": ["A small hermetically sealed glass vial containing a sterile chemical substance suitable for injection."], "ampule": ["A small hermetically sealed glass vial containing a sterile chemical substance suitable for injection."], "phial": ["A small hermetically sealed glass vial containing a sterile chemical substance suitable for injection.", "A small bottle."], "injection": ["A method of putting liquid into the body with a hollow needle and a syringe which is pierced through the skin long enough for the material to be forced into the body."], "intravenous infusion": ["A liquid administered directly into the bloodstream via a vein."], "encephalitis": ["Inflammation of the brain due to infection, autoimmune processes, toxins, and other conditions; viral infections are a relatively frequent cause of this condition."], "exude": ["To release a liquid in drops or small quantities."], "eclectic": ["Selecting a mixture of what appear to be best of various doctrines, methods, or styles."], "Kekch\u00ed": ["A Mayan language of Guatemala, Belize and El Salvador."], "Kemak": ["A language of East Timor and Indonesia"], "Kenyang": ["A language of Cameroon."], "was formerly known as": ["Indicates the previous name of an entity. This may co-occur with other changes."], "Rhodesia": ["The common name of the erstwhile British colony of Southern Rhodesia between the renaming of Northern Rhodesia as Zambia in 1964 and the establishment of Zimbabwe-Rhodesia in 1979."], "Zimbabwean": ["A person with the Zimbabwean nationality.", "Relating to Zimbabwe."], "Zimbabwean dollar": ["The currency of Zimbabwe."], "Lusaka": ["The capital of Zambia."], "Zambian": ["A person with the nationality of Zambia or, who originates from Zambia"], "Zambian kwacha": ["The currency of Zambia."], "Zambian Sign Language": ["A language of Zambia"], "profession": ["An occupation requiring specialized knowledge."], "active in": ["Indicates that a profession is active in a particular industry."], "Becker's muscular dystrophy": ["An X-linked recessive inherited disorder characterized by slowly progressive muscle weakness of the legs and pelvis."], "dehydration": ["A condition that results from excessive loss of water from a living organism."], "tree-ring dating": ["The science of dating the age of a tree by studying annual growth rings."], "Vin\u010da culture": ["Early European culture which existed along the Danube in Serbia, Western Romania, Southern Hungary and Eastern Bosnia between 5400 and 4500 BCE."], "Malawian kwacha": ["The currency of Malawi."], "genuflect": ["Bend the knee, as in servitude or worship."], "pidgin": ["A simplified language that develops as a means of communication between two or more groups who do not share a common language, in situations such as trade."], "aseptic meningitis": ["A condition in which the layers lining of the brain, or meninges, become inflamed and a pyogenic bacterial source is not to blame."], "pyogenic": ["Producing pus."], "absenteeism": ["Frequent absence from work etc. without good reason.", "Frequent absence from work or school without good reason."], "Old European Script": ["Markings on prehistoric artifacts found in south-eastern Europe which are believed by some to be a writing system of the Vin\u010da culture, which inhabited the region around 6000-4000 BCE."], "Vin\u010da alphabet": ["Markings on prehistoric artifacts found in south-eastern Europe which are believed by some to be a writing system of the Vin\u010da culture, which inhabited the region around 6000-4000 BCE."], "Vin\u010da script": ["Markings on prehistoric artifacts found in south-eastern Europe which are believed by some to be a writing system of the Vin\u010da culture, which inhabited the region around 6000-4000 BCE."], "Vin\u010da-Turda\u015f script": ["Markings on prehistoric artifacts found in south-eastern Europe which are believed by some to be a writing system of the Vin\u010da culture, which inhabited the region around 6000-4000 BCE."], "Barnard's Star": ["A very low-mass red dwarf star in the constellation Ophiuchus."], "non sequitur": ["A kind of pun that uses a change of word, subject, or meaning to make a joke of the listener's expectation.", "An invalid argument; one in which the conclusion cannot be logically deduced from the premises."], "dowsing": ["Refers to practices which some people claim enables them to detect hidden water, metals, gemstones or other objects, usually obstructed by land or sometimes located on a map (source Wikipedia)."], "ophiuchus": ["One of the 88 constellations and was also one of the 48 listed by Ptolemy."], "diuretic": ["A drug that increases the production of urine.", "Increasing the production of urine."], "Kugbo": ["A language of Nigeria."], "Akebu": ["A language of Togo."], "Kanikkaran": ["A language of India."], "Indian": ["A citizen of India or a person who originated from India."], "Indian rupee": ["The currency of India."], "absolution": ["Forgiveness, especially of sins."], "pus": ["A whitish-yellow or yellow substance produced during inflammatory responses of the body that can be found in regions of pyogenic bacterial infections."], "purulent": ["Producing pus.", "Containing pus."], "suppurative": ["Producing pus."], "pimple": ["A painful, local inflammation of the skin, caused by infection of a hair follicle. Usually, a hard core and pus are present.", "A result of a blockage of the skin's pore."], "desalinate": ["To completely or partially remove salt from."], "desalt": ["To completely or partially remove salt from."], "absolve": ["To pardon or remit (a sin)."], "West Kewa": ["A language of Papua New Guinea."], "Kukele": ["A language of Nigeria."], "get a divorce": ["To have one's marriage legally dissolved."], "get divorced": ["To have one's marriage legally dissolved."], "divorc\u00e9e": ["A divorced woman."], "divorcee": ["A divorced woman."], "divorc\u00e9": ["A divorced man."], "fianc\u00e9e": ["A woman who is engaged to be married."], "fiancee": ["A woman who is engaged to be married."], "fianc\u00e9": ["A man who is engaged to be married."], "fiance": ["A man who is engaged to be married."], "general practitioner": ["Name for a general physician who does peripheral work (not in a hospital) and who is the first station for people with problems with their health in the broadest sence."], "absorbent": ["Capable of absorbing.", "A substance that is capable of absorbing."], "abstention": ["The act of abstaining."], "abusive": ["Using insulting language.", "Containing defamation."], "phagocyte": ["A cell that ingest microorganisms, foreign particles, other cells, or dead tissue."], "abysmal": ["Very great (in a bad sense); very bad.", "Very deep."], "rhinoplasty": ["A plastic surgical operation on the nose, either reconstructive, restorative, or cosmetic."], "get engaged": ["To enter an agreement to marry."], "affiance": ["To enter an agreement to marry.", "To promise to give in marriage."], "accede": ["To agree to."], "betroth": ["To enter an agreement to marry.", "To promise to give in marriage."], "Lozi": ["A language of Zambia, Zimbabwe and Namibia"], "trothplight": ["To promise to give in marriage."], "betrothed": ["A woman who is engaged to be married.", "A man who is engaged to be married.", "A person who is engaged to be married.", "Having formally promised to be married."], "Seri": ["A language of Mexico."], "Lezgi": ["A language spoken by the Lezgins, who live in southern Dagestan (Russia) and northern Azerbaijan."], "suture": ["Thread like material used in surgical procedures to close, ligate, or fasten tissues or structures."], "episiotomy": ["A surgical incision through the perineum made to enlarge the vagina and assist childbirth."], "perineum": ["The body region lying between the genital area and the anus. It is between the vulva and the anus in the female, and between the scrotum and the anus in the male."], "unassisted childbirth": ["A birth without the aid of medical or professional birth attendants."], "acceleration lane": ["A lane, typically on the right side of a roadway, that lets a vehicle increase its speed to where it can safely merge with traffic."], "access code": ["A combination of characters that is used to obtain permission to enter a computer or a communication network."], "papery": ["Resembling paper in texture and thickness."], "paperlike": ["Resembling paper in texture and thickness.", "Of or like paper."], "common walnut": ["Large deciduous tree (Juglans regia) in the Walnut Family (Juglandaceae) which produces an edible fruit with a hard shell and oil-rich seed."], "English walnut": ["Large deciduous tree (Juglans regia) in the Walnut Family (Juglandaceae) which produces an edible fruit with a hard shell and oil-rich seed."], "Persian walnut": ["Large deciduous tree (Juglans regia) in the Walnut Family (Juglandaceae) which produces an edible fruit with a hard shell and oil-rich seed."], "walnut tree": ["Large deciduous tree (Juglans regia) in the Walnut Family (Juglandaceae) which produces an edible fruit with a hard shell and oil-rich seed."], "accessible": ["Able to be reached or approached easily."], "acclaim": ["To applaud or welcome enthusiastically.", "To declare someone ruler, winner etc. by enthusiastic approval.", "Enthusiastic approval.", "To praise or show approval, by clapping the hands."], "acclamation": ["Enthusiastic approval."], "acclimatization": ["Adaptation to a new climate, a new temperature or altitude or environment."], "curettage": ["The removal of tissue with a curette, a spoon-shaped instrument with a sharp edge."], "extravasation": ["The unwanted discharge of a fluid from some container or vessel."], "Kemiehua": ["A language of China."], "Kinnauri": ["A language of India."], "Kung": ["A language of Cameroon"], "Khunsari": ["A language of Iran."], "Kuk": ["A language of Cameroon"], "Korlai Creole Portuguese": ["A language of India."], "acclimatize": ["Get used to a certain climate."], "Kachchi": ["A language of India, Kenia, Malawi and Pakistan."], "accommodating": ["Obliging; helpful."], "Kharam Naga": ["A language of India."], "Kumauni": ["A language of India and Nepal."], "Koromf\u00e9": ["A language of Burkina Faso and Mali."], "accompanist": ["A person who provides musical accompaniment."], "accomplished": ["Highly skilled.", "Successfully completed or brought to an end.", "Past participle of accomplish."], "accordance": ["In agreement with."], "Koyaga": ["A language of C\u00f4te d'Ivoire."], "Kawe": ["A language of Indonesia (Papua)."], "Komering": ["A language of Indonesia (Sumatra)."], "Kube": ["A language of Papua New Guinea."], "Upper Tanudan Kalinga": ["A language of Philippines."], "Selangor Sign Language": ["A sign language used mainly in the state of Selangor in Malaysia."], "Gamale Kham": ["A language of Nepal."], "palliative care": ["Care alleviating symptoms without curing the underlying disease."], "progress": ["The idea of an advance that occurs within the limits of mankind's collective morality and knowledge of its respective environment."], "neglect": ["To fail to attend to."], "baud": ["The number of symbols per second sent over a channel."], "bandwidth": ["A measure for the speed (amount of data) that can be sent through an Internet connection."], "streaming": ["A method of sending audio and video files over the Internet in such a way that the user can view the file while it is being transferred."], "accordingly": ["In agreement."], "according to": ["In agreement with or accordant with.", "In a manner conforming or corresponding to.", "As reported or stated by."], "Kaiw\u00e1": ["A language of Brazil and Argentina."], "accost": ["To approach and speak to, especially in an unfriendly way."], "accountability": ["Responsibility to someone or for some activity."], "accountable": ["Subject to the obligation to report, explain, or justify something."], "accountancy": ["The work of an accountant."], "accrual": ["The act of accumulating.", "(of accounting method) including binding economic flows, property and facts even before they are paid."], "short-lived": ["Lasting or existing for a short time only."], "deciduous": ["(Of plants) Shedding foliage at the end of the growing season, i.e. having green leaves only in spring and summer."], "traditionally": ["In a traditional manner."], "Accra": ["The capital of Ghana."], "accrue": ["To be added as a matter of periodic gain or advantage, as interest on money.", "To heap up; to collect or gather (e.g. work, magazines, etc.)."], "Ghanaian cedi": ["The currency of Ghana."], "accurate": ["Exactly right."], "Ghanaian": ["An citizen of Ghana or someone who is originally from Ghana", "Of, from, or pertaining to Ghana or the Ghanaian people."], "exactly": ["Without diversion from the desired or agreed specification; neither exceeding nor failling short in any way.", "In an exact manner; without approximation."], "precisely": ["In a precise manner."], "accursed": ["Under a curse.", "Hateful."], "Maasina Fulfulde": ["A language of Mali and Ghana."], "Kunggari": ["A language of Australia."], "Karingani": ["A language of Iran."], "Kaing\u00e1ng": ["An indigenous language spoken in the South of Brazil, belonging to the J\u00ea-Kaingang language family."], "Kamoro": ["A language of Indonesia (Papua)."], "Abun": ["A language of Indonesia (Papua)."], "Kumbainggar": ["A language of Australia."], "Somyev": ["A language of Nigeria."], "Kobol": ["A language of Papua New Guinea."], "Karas": ["A language of Indonesia (Papua)."], "Karon Dori": ["A language of Indonesia (Papua)."], "Kamaru": ["A language of Indonesia (Sulawesi)."], "Kyerung": ["A Tibetan language spoken by the Kyerung people on both sides of the Tibet-Nepal border close to Mt Everest."], "Nouakchott": ["The capital of Mauretania."], "accusal": ["An act of accusing or the state of being accused."], "Mauritanian ouguiya": ["The currency of Mauretania."], "accusation": ["An act of accusing or the state of being accused."], "Moroccan dirham": ["The currency of Morocco."], "Moroccan": ["A citizen of Morocco or someone who is originally from Morocco."], "Strait of Gibraltar": ["The strait that connects the Atlantic Ocean to the Mediterranean Sea and separates Spain from Morocco."], "accusatory": ["Containing an accusation."], "Western Sahara": ["A territory in Northwestern Africa."], "bottom line": ["The summary or result; the most important information."], "is administered by": ["Indicates for a territory what country is responsible for its administration."], "central station": ["The biggest and most important passenger train station of a city."], "main station": ["The biggest and most important passenger train station of a city."], "Swiss French": ["The variety of French spoken in the French-speaking area of Switzerland known as Romandy."], "accustomed": ["That has become a habit.", "According to or depending on custom."], "Nuuk": ["The capital of Greenland."], "accuse": ["To lay a charge against; bring an accusation against.", "To blame for, make a claim of wrongdoing against."], "Stanley": ["The capital of the Falkland Islands."], "The Valley": ["The capital of Anguila."], "acetic": ["Relating to or containing acetic acid or vinegar."], "ache": ["A continuous pain.", "To be in continuous pain.", "To have a great desire."], "achievable": ["Possible to do."], "achieve": ["To bring to a succesful end; to gain with effort."], "Iu Mien Written Chinese Script": ["A written form of the Iu Mien language."], "Laos Sign Language": ["A sign language used in Laos."], "Valencian": ["The historical, traditional and official name used in the Valencian Community (Spain) to refer to the language spoken therein."], "acoustic": ["Having to do with hearing or with sound."], "Nostratic": ["Hypothetical language superfamily which is controversial among historical linguists and includes Indo-European, Uralic and Altaic, and according to other opinions also Kartvelian, Dravidian, Afro-Asiatic and Eskimo-Aleut."], "inaugurate": ["To formally start something."], "fluid": ["A substance which deforms continuously under the action of a shear force, however small."], "acquaint": ["To make (usually oneself) familiar (with).", "To inform (somebody) of something."], "beside": ["Having the position next to a given place, location or object"], "acquisitive": ["Eager to get possessions.", "Excessively desirous of money, wealth or possessions."], "acrid": ["Being harsh or corrosive in tone.", "Harsh in smell or taste."], "acrimonious": ["Bitter and sharp in language or tone."], "loquacious": ["Full of trivial conversation."], "chatty": ["Full of trivial conversation."], "paramecium": ["A group of unicellular ciliate protozoa."], "acrimony": ["A rough and bitter manner."], "acrobatic": ["Of, pertaining to, or like an acrobat or acrobatics."], "acrobatics": ["Performance of acrobatic feats."], "Golden Rule": ["Moral rule, according to which it is forbidden to cause somewhat to someone which one does not want to suffer."], "ethic of reciprocity": ["Moral rule, according to which it is forbidden to cause somewhat to someone which one does not want to suffer."], "actionable": ["Giving cause for legal action."], "activate": ["To put into force or operation."], "actively": ["Characterized by energetic work, participation, etc."], "homophonous": ["Having the same pronunciation."], "actuality": ["An actual condition or circumstance."], "actually": ["As an actual or existing fact.", "[Used as sentence modifier to indicate that it is of interest, or contrary to what one might think.]", "In reality, as opposed to possibly, potentially, theoretically, apparently, imaginably, etc."], "indigenous": ["Characteristic of or relating to people inhabiting a region from the beginning.", "A descendant of the first known human inhabitants of a region or country."], "acumen": ["A quick and penetrating intelligence.", "Quickness, accuracy, and keenness of judgment or insight."], "adage": ["A wise saying or proverb."], "addict": ["A drugs addict, someone using drugs.", "A person who has become physiologically dependent on a substance, especially drugs.", "A person who is so ardently devoted to something that it resembles an addiction."], "chicken soup": ["Any soup made with pieces of chicken or chicken broth."], "T\u00f3rshavn": ["The capital of the Faroe Islands."], "tomato soup": ["Soup made from tomatoes."], "exsanguination": ["The fatal process of total blood loss."], "addition sign": ["Sign +."], "plus sign": ["Sign +."], "addressee": ["The person to whom a letter etc is addressed."], "works in a": ["Indicates the location where a profession is practiced."], "butcher shop": ["A shop that is specialized in meat and meat products."], "adept": ["A highly skilled person.", "Very skilled."], "adequacy": ["Sufficiency for a particular purpose."], "Tukang Besi North": ["A language of Indonesia (Sulawesi)."], "adherence": ["Faithful support for a cause or political party or religion."], "B\u00e4di Kanum": ["A language of Indonesia (Papua)"], "adherent": ["Someone who believes and helps to spread the doctrine of another."], "Korowai": ["A language of Indonesia (Papua)."], "Khams Tibetan": ["A language of China."], "Kehu": ["A language of Indonesia (Papua)."], "Kuturmi": ["A language of Nigeria."], "New York City": ["The largest city in the state of New York and the largest city in the United States."], "adjacent": ["Close to; lying near."], "adjournment": ["Suspension until a later stated time."], "adjudge": ["To determine or declare to be by judicial procedure."], "Ukrainian hryvnia": ["The currency of the Ukraine."], "Sea of Azov": ["A northern section of the Black Sea, linked to the larger body through the Strait of Kerch."], "Ukrainian Sign Language": ["A sign language used in Ukraine."], "Dnieper": ["A river which flows from Russia, through Belarus and Ukraine, ending its flow in the Black Sea."], "Moskva": ["A river that flows through the Moscow and Smolensk Oblasts in Russia, and is a tributary of the Oka River.", "A river that flows through the Moscow and Smolensk Oblasts in Russia, and is a tributary of the Oka River."], "Volga": ["The largest river in Europe flowing through the western part of Russia."], "adjudicate": ["To bring to an end; to settle conclusively.", "To act as a judge.", "To put on trial, hear the case and act as the judge."], "Little Bittern": ["A wading bird, Ixobrychus minutus, in the heron family Ardeidae, native to the Old World."], "Squacco Heron": ["A small heron, 40-49 cm long with 82-95 cm wingspan of Old World origins."], "Black-crowned Night Heron": ["A medium-sized heron (Nycticorax nycticorax)."], "Kotava": ["An artificial language created by Staren Fetcey in 1978."], "adjustable": ["Capable to being adjusted."], "predation": ["Instinctual behavior pattern in which food is obtained by killing and consuming other animals."], "Lusi": ["A language of Papua New Guinea."], "administer": ["To have charge of; manage.", "To give or apply (medications).", "To divide something into portions and dispense it."], "administrator": ["Someone who administers a business.", "Someone who administers a computer system or computer network and who has special rights and tasks.", "Someone who manages a government agency or department."], "admissibility": ["Possibility or capability of being admitted."], "admittance": ["The right or permission to enter."], "located in": ["Indicates that something exists in a geographical entity."], "Apennine Mountains": ["A mountain range stretching 1000 km from the north to the south of Italy along its east coast, traversing the entire peninsula, and forming the backbone of the country."], "Tiber": ["The third-longest river in Italy."], "stipulation": ["Something that is stated as a condition for an agreement."], "Ganges": ["A major river in the Indian subcontinent flowing east through the plains of northern India into Bangladesh."], "Shatt al-Arab": ["A river in Iraq of some 200 km in length, formed by the confluence of the Euphrates and the Tigris."], "Melbourne": ["The second most populous city in Australia."], "Yarra": ["A river in southern Victoria, Australia."], "Port Phillip Bay": ["A large bay in southern Victoria, Australia."], "Port Phillip": ["A large bay in southern Victoria, Australia."], "Massif Central": ["A mountainous plateau in southern France that covers almost one sixth of the country."], "admittedly": ["As is generally accepted."], "admonition": ["A gentle reproof.", "A gentle advice or warning given to someone to tell him to be cautious about something."], "Ural Mountains": ["A mountain range that runs roughly north and south through western Russia."], "Rocky Mountains": ["A broad mountain range in western North America."], "isokinetic dynamometry": ["Isokinetic measurements are measurements of muscular torque at a constant velocity"], "Po": ["A river that flows 652 kilometers eastward across northern Italy."], "Dutch auction": ["An auction that starts at a high price that is gradually reduced by the auctioneer until someone is willing to buy."], "auctioneer": ["A person who takes bids to find the best price for a vendor."], "commission": ["A duty that involves fulfilling a request.", "A fee charged for carrying out a transaction.", "A body or group of people, officially tasked with carrying out a particular function.", "To charge with a task."], "adorable": ["Very attractive or delightful."], "adore": ["Love intensely."], "adornment": ["Something that beautifies or adorns."], "adrenaline": ["A hormone secreted by the adrenal medulla which stimulates the heart pulse and provokes the constriction of blood vessels."], "adrift": ["Without direction or purpose."], "adroit": ["Nimble in the use of the hands or body."], "dark red": ["Having a dark red colour."], "justice of the peace": ["A judicial officer with authority to determine minor criminal offences and civil proceedings as set out in a particular statute."], "adroitness": ["Nimble in the use of the hands and body."], "adulate": ["To flatter in an obsequious manner."], "adulteration": ["The product of adulterating."], "adulterer": ["A person who commits adultery."], "adulterous": ["Relating to adultery."], "adulthood": ["(Of a human or animal) state of having attained full size and strength."], "advanced": ["Having made a lot of progress.", "Ahead of the times.", "Comparatively late in a course or stage of development.", "At a higher level in education or knowledge or skill."], "advancement": ["A forward step; an improvement."], "ambition": ["Drive to achieve something."], "communicable diseases": ["A disease caused by a microorganism or other agent, such as a bacterium, fungus, or virus, that enters the body of an organism."], "spokeswoman": ["A female person who represents someone else's policy or purpose."], "Beringia": ["Continuous land bridge which joined present-day Alaska and present-day Siberia until circa 10,000 years ago."], "olympic": ["Of or relating to the Olympic Games."], "Bering land bridge": ["Continuous land bridge which joined present-day Alaska and present-day Siberia until circa 10,000 years ago."], "Olympic Games": ["An international multi-sport event taking place every fourth year."], "quantity": ["A unit that expresses a mass or number."], "corps": ["Closed group of people that belong to the same category."], "police service": ["Someone that works for the police."], "tabletennis player": ["Male person who plays tabletennis.", "A female person who plays tabletennis.", "Person who plays tabletennis."], "tabletennis": ["A sport where two or four players use a bat to play a small, light plastic ball over a net onto a table."], "table tennis": ["A sport where two or four players use a bat to play a small, light plastic ball over a net onto a table."], "Auriga": ["A northern constellation. It was one of the 48 constellations listed by Ptolemy, and counts as one of the 88 modern constellations."], "Bo\u00f6tes": ["One of the 88 modern constellations and was also one of the 48 constellations listed by Ptolemy (source: Wikipedia)."], "Canes Venatici": ["A small northern constellation that represents the dogs Chara and Asterion held on a leash by Bo\u00f6tes."], "Canis Major": ["One of the 88 modern constellations, and was also in Ptolemy's list of 48 constellations."], "Canis Minor": ["One of the 88 modern constellations, and was also in Ptolemy's list of 48 constellations."], "Carina": ["A southern constellation which forms part of the old constellation of Argo Navis. It contains Canopus, the second brightest star in the night sky (source: Wikipedia)."], "canopy": ["A high cover providing shelter, such as a cloth supported above an object, particularly over a bed.", "The layer formed naturally by the leaves and branches of trees and plants."], "advantaged": ["In a position of superiority."], "advantageous": ["Productive, conducive, helpful or good to something or someone.", "Providing an advantage."], "Advent": ["The period beginning four Sundays before Christmas, observed in commemoration of the coming of Christ into the world."], "poly peptide": ["Any of a class of high-molecular weight polymer compounds composed of a variety of alfa-amino acids joined by peptide linkages."], "prolly": ["In all likelihood; in a probable manner"], "spring tide": ["The tide with the most variation in water level, occurring during new moons and full moons."], "mistaken": ["Containing one error or several errors."], "erroneous": ["Containing one error or several errors.", "Contradicting the facts."], "faulty": ["Containing one error or several errors."], "unsound": ["Containing one error or several errors."], "defective": ["Containing one error or several errors."], "foul": ["An act that violates the rules of a sport."], "execrable": ["Highly detestable. (Source: IPDF)"], "repulsive": ["Unpleasant, offensive, or causing dislike."], "cursed": ["Sentenced to eternal punishment in hell."], "heinous": ["Totally reprehensible."], "despicable": ["Morally reprehensible."], "contemptible": ["Deserving of contempt or scorn."], "wretched": ["Morally reprehensible."], "lousy": ["Of very poor quality."], "stinking": ["Having a bad smell."], "vile": ["Morally reprehensible."], "atrocious": ["Totally reprehensible."], "repugnant": ["Unpleasant, offensive, or causing dislike."], "disgusting": ["Causing disgust or detestation.", "Unpleasant to the taste."], "repellent": ["A substance to repel insects."], "awful": ["Dreadful; causing alarm and fear."], "Hercules": ["The fifth largest of the 88 modern constellations. It was also one of Ptolemy's 48 constellations. It was named after the Roman name (Hercules) of the Greek mythological hero Herakles (source: Wikipedia).", "The Roman name for the mythical Greek hero Heracles, son of Zeus and the mortal Alcmena."], "Markov Chain": ["A model that is suitable for modelling a sequence of random variables, in which the probability that a variable assumes any specific value depends only on the value of a specified number of most recent variables that precede it (source: Nature)."], "statistical inference": ["The process whereby data are observed and then statements are made about unknown features of the system that gave rise to the data."], "meteor shower": ["A celestial event where a group of meteors are observed to radiate from one point in the sky."], "novelist": ["Someone who writes novels."], "neap tide": ["The tide with the least variation in water level, occurring during half moons."], "tidal range": ["Difference between the highest water level at high tide and the lowest water level at low tide"], "adventure": ["An exciting or very unusual experience."], "Khandesi": ["A language of India."], "Kapori": ["A language of Indonesia (Papua)."], "Kasua": ["A language of Papua New Guinea."], "Nkhumbi": ["A Bantu language of Angola."], "adventurer": ["A person who has, enjoys, or seeks adventures."], "Kanu": ["A language of Democratic Republic of the Congo."], "Kele": ["A language of Democratic Republic of the Congo."], "Keapara": ["A language of Papua New Guinea."], "Netherlands Antillean gulden": ["The currency of the Netherlands Antilles."], "adventurous": ["Liking or eager for adventure."], "short story": ["Fictional narrative prose that tends to be more concise and to the point than novels."], "novella": ["A narrative work of prose fiction longer than a short story but shorter than a novel."], "Kim": ["A language of Chad."], "Koshin": ["A language of Cameroon."], "Eastern Parbate": ["A language of Nepal."], "Kimaama": ["A language of Indonesia (Papua)."], "Kilmeri": ["A language of Papua New Guinea."], "adversarial": ["Of a person, group or force that opposes or attacks."], "advertise": ["\u0422o make known or popularize (e.g. a product) by announcement or publicity in a paper or journal or on TV.", "To call attention to."], "advertiser": ["Someone whose business is advertising."], "Hag\u00e5t\u00f1a": ["The capital of Guam."], "Kitsai": ["An extinct Caddoan language which was spoken in Oklahoma and became extinct in the 1930s."], "Kilivila": ["A language of Papua New Guinea."], "Gikuyu": ["A Bantu language spoken by the Kikuyu people in the area between Nyeri and Nairobi of Kenya."], "advisable": ["Desirable or wise."], "Kenyan Sign Language": ["A language of Kenya."], "South African Sign Language": ["A language of South Africa."], "advisedly": ["After careful or thorough consideration.", "With intention; in an intentional manner."], "adviser": ["One who gives advice."], "Maritime Sign Language": ["A sign language, derived from British Sign Language, that was formerly used in Nova Scotia, New Brunswick, and Prince Edward Island, Canada."], "Nova Scotian Sign Language": ["A sign language, derived from British Sign Language, that was formerly used in Nova Scotia, New Brunswick, and Prince Edward Island, Canada."], "advocacy": ["The profession or work of an advocate."], "Yucatec Maya Sign Language": ["A sign language used in Mexico."], "aerial": ["A wire or rod (or a set of these) able to send or receive radio waves, etc.", "Of, in, or from the air."], "Alofi": ["The capital of Niue."], "is member of": ["Indicates the membership of an organisation."], "consort": ["The spouse, usually of royalty or of a deity."], "aerobatics": ["Acrobatics performed by an aircraft."], "aerobics": ["A physical fitness program based on such exercises."], "aerodrome": ["An airfield equipped with control tower and hangars as well as accommodations for passengers and cargo."], "Sheshi Kham": ["A language of Nepal."], "Kosadle": ["A language of Indonesia (Papua)."], "Kis": ["A language of Papua New Guinea."], "Agob": ["A language of Papua New Guinea."], "Kirmanjki": ["A language of Turkey (Asia)."], "Kimbu": ["A language of Tanzania."], "Northeast Kiwai": ["A language of Papua New Guinea."], "Kirikiri": ["A language of Indonesia (Papua)."], "Kisi": ["A language of Tanzania."], "aerodynamic": ["Of or relating to aerodynamics."], "aeronautic": ["Of or relating to aeronautics."], "aeronautics": ["The science or practice of flying."], "aesthete": ["One who professes great sensitivity to the beauty of art and nature."], "aesthetic": ["Relating to esthetics.", "Relating to the philosophy or theories of aesthetics."], "homoglyph": ["One of two or more characters with shapes that are either identical, or cannot be differentiated by quick visual inspection."], "lexical category": ["The category a word is assigned to based on its syntactic function within a specified language."], "rolling pin": ["A cylindrical food preparation utensil used to shape and flatten dough."], "Black Sea coast": ["The coast of the Black Sea."], "impluvium": ["Basin used to collect rainwater in the atrium of a Roman house."], "compluvium": ["Rectangular opening in the roof of the atrium of a Roman house which serves as source of light and is used to collect rainwater in the impluvium underneath."], "sweet mustard": ["Mustard made of ground and partially roasted grains of mustard seed, sweetened with sugar, sweetener or apple sauce."], "weisswurst": ["Traditional Bavarian boiled sausage made from finely minced veal and pork bacon flavored with parsley, lemon, mace, onions, ginger and cardamom."], "today's": ["Of the present day"], "present-day": ["Of the present day"], "material name": ["The name for a physical material, such as Gases, Fluids, etc."], "Benelux": ["An economic union in Western Europe comprising three neighbouring monarchies, Belgium, the Netherlands, and Luxembourg."], "affability": ["Showing warmth and friendliness."], "affair": ["Happenings which are connected with a particular person or thing.", "A vaguely specified subject, question, situation, etc. that is or may be an object of consideration or action.", "A love relationship."], "microstraining": ["A process consisting of physical straining of solids through a screen with continuous backwashing, utilizing a rotating drum to support the screen. Static screens are also used in particular applications."], "affecting": ["Moving or exciting the feelings or emotions."], "Mlap": ["A language of Indonesia (Papua)."], "Coastal Konjo": ["A language of Indonesia (Sulawesi)."], "Southern Kiwai": ["A language of Papua New Guinea."], "Kisar": ["A language of Indonesia (Maluku)."], "Khalaj": ["A language of Iran and Azerbaijan."], "Zabana": ["A language of Solomon Islands."], "Honiara": ["The capital of the Salomon Islands."], "Solomon Islands dollar": ["The currency of the Solomon Islands."], "Anuta": ["A language of Solomon Islands."], "Gela": ["A language of Solomon Islands."], "tomato knife": ["Special knife with a serrated edge for cutting tomatoes."], "bread knife": ["Knife for cutting bread with a relatively long and serrated edge."], "Canadian Ukrainian": ["A variety of the Ukrainian language specific to the Ukrainian Canadian community descended from the first two waves of historical Ukrainian emigration to Western Canada."], "affective": ["Causing emotion or feeling."], "Qumuq": ["A Turkic language, spoken by about 200 thousand speakers (the Kumyks) in the Dagestan republic of Russian Federation."], "Kumuk": ["A Turkic language, spoken by about 200 thousand speakers (the Kumyks) in the Dagestan republic of Russian Federation."], "Kumuklar": ["A Turkic language, spoken by about 200 thousand speakers (the Kumyks) in the Dagestan republic of Russian Federation."], "Kumyki": ["A Turkic language, spoken by about 200 thousand speakers (the Kumyks) in the Dagestan republic of Russian Federation."], "affiliated": ["Connected with or joined to (a larger group etc) as a member."], "singulare tantum": ["A noun that appears only in the singular form."], "collective noun": ["Noun that summarizes several similar objects in one term."], "Old Irish": ["Oldest form of the Irish language, used from circa 600 to 900."], "Old Norse": ["Collective name for the North Germanic languages spoken between 800 (begin of Viking era) and 1500 in Scandinavia."], "Police Motu": ["A language of Papua New Guinea"], "Pidgin Motu": ["A language of Papua New Guinea"], "number of days": ["The fixed number of days of a period."], "phosphorus removal": ["The process of conversion of polyphosphates to soluble forms and then to insoluble forms, and subsequent separation of the insoluble phosphorus forms from the wastewater accomplished through chemical percipitation using lime or mineral additives such as alum or ferric chloride (source: USACE)."], "Tuvin": ["A Turkic languages spoken in the Republic of Tuva in south-central Siberia in Russia, in China and Mongolia."], "moiety": ["In organic chemistry, a specific grouping of elements that is characteristic of a class of compounds, and determines some properties and reactions of that class"], "affiliation": ["A social or business relationship."], "affinity": ["An inherent similarity between persons or things."], "affirm": ["To establish or strengthen with new evidence or facts.", "Maintain as true.", "To declare or affirm solemnly and formally as true."], "affirmation": ["The assertion that something exists or is true."], "beehive": ["A box or receptable in which bees are kept for their honey.", "A structure that provides a natural habitation for bees; as in a hollow tree.", "A backcombed hairdo of the Sixties."], "affirmative": ["Expressing agreement or consent."], "afflux": ["A flow to or toward an area, especially of blood or other fluid toward a body part: an afflux of blood to the head."], "afford": ["To be the cause or source of (feeling, effect, etc.)", "To be able to spend money, time etc. on or for something."], "affray": ["The fighting of two or more persons in a public place."], "affront": ["An offense to one's dignity or self-respect.", "To insult or offend.", "To put someone down, or show disrespect by the use of insulting language or dismissive behaviour."], "afresh": ["Once more."], "vesical": ["Pertaining to the urinary bladder."], "Saterfriesisch": ["Frisian language spoken mainly in the municipality Saterland in Germany"], "aftercare": ["Care and treatment of a convalescent patient."], "aftereffect": ["A delayed effect of a drug or therapy."], "afterpains": ["Cramps or pains following childbirth, caused by contractions of the uterus."], "aftertaste": ["A taste remaining after the substance causing it is no longer in the mouth."], "Chttash": ["A Turkic language spoken in the federal subject of Chuvashia, located in central Russia."], "Mar\u0101thi": ["An Indic language spoken mainly in western and southern India."], "afterthought": ["Thinking again about a choice previously made."], "afterwards": ["Later or after something else has happened or happens."], "aged": ["(For a person or an animal) Having lived for a relatively long period of time.", "Being of advanced age."], "ageless": ["Never growing old or never looking older.", "Not showing any signs of age."], "is followed by": ["Indicates the next in a normal succession."], "Community class attributes": ["Community class attributes."], "is played by": ["Names the musician that plays an instrument."], "daf": ["A large-sized frame drum used to accompany both popular and classical music in countries of the Middle East."], "Persian calendar": ["A solar calendar currently used in Iran and Afghanistan."], "Iranian calendar": ["A solar calendar currently used in Iran and Afghanistan."], "saxophonist": ["Someone who plays the saxophone."], "trombonist": ["A person who plays or practices the trombone."], "partners with": ["Indicates that it goes together on the same level."], "brother-in-law": ["The husband of one's sister.", "The brother of one's wife.", "The husband of one's spouse's sister.", "The husband of the sister of one's husband.", "The husband of the sister of one's wife"], "age-old": ["Very old or of long standing."], "flautist": ["A musician who plays the flute.", "A man or boy who plays the flute.", "A woman or girl who plays the flute."], "flutist": ["A musician who plays the flute.", "A man or boy who plays the flute.", "A woman or girl who plays the flute."], "aggression": ["Any offensive action, attack, or procedure."], "autotrophic": ["An organism able to produce its own food through photosynthesis."], "clarinetist": ["A player of the clarinet"], "aggressiveness": ["Behaviour characterized by or tending toward unprovoked offensives."], "aggrieved": ["Unhappy or hurt because of unjust treatment."], "Muharram": ["The first month of the Muslim calendar."], "Dhu al-Hijjah": ["The twelfth month of the Muslim calendar"], "Dhu al-Qa'dah": ["The eleventh month of the Muslim calendar."], "Shawwal": ["The tenth month of the Muslim calendar."], "Sha'aban": ["The eighth month of the Muslim calendar"], "Rajab": ["The seventh month of the Muslim calendar."], "Jumada al-thani": ["The sixth month of the Muslim calendar."], "Jumada al-awwal": ["The fifth month of the Muslim calendar."], "Rabi' al-thani": ["The fourth month of the Muslim calendar."], "Apure": ["A river of western Venezuela, formed by the confluence of the Sarare and Uribante near Guasdualito, in Venezuela.", "One of the 23 states (estados) into which Venezuela is divided, located in de south west of the country."], "Rabi' al-awwal": ["The third month of the Muslim calendar."], "Safar": ["The second month of the Muslim calendar."], "heterotroph": ["An organism that obtains its food though other organisms."], "Arauca": ["A river of Colombia and Venezuela, it rises in the Andes Mountains of north-central Colombia and ends at the Orinoco in Venezuela (soure: Wikipedia).", "A Department of Colombia located in the extreme north of the Orinoco part of Colombia (the Llanos Oriental), bordering Venezuela.", "A municipality and capital city of the Arauca Department of Colombia."], "aghast": ["Struck with horror."], "Barima": ["A tributary of the Orinoco River, entering 4 miles from the Atlantic Ocean. It originates in Guyana, flowing for approximately 210 miles before entering Venezuela about 50 miles from its mouth."], "Casiquiare": ["A distributary of the upper Orinoco, which flows southward into the Rio Negro. As such, it forms a unique natural canal between the Orinoco and Amazon river systems."], "Catatumbo": ["A river rising in northern Colombia, flowing into Lake Maracaibo in Venezuela."], "Maracaibo": ["The largest lake in South America, at 13,210 km\u00b2, and one of the oldest lakes on Earth. It is a large brackish lake in Venezuela, it is connected to the Gulf of Venezuela by a 55km strait on the northern edge of the lake, and fed by numerous rivers.", "The second-largest city in Venezuela after the national capital Caracas and is the capital of Zulia state."], "Black River": ["The largest left tributary of the Amazon and the largest blackwater river in the world. It has its sources along the watershed between the Orinoco and the Amazon basins, and also connects with the Orinoco by way of the Casiquiare canal. In Colombia, where their sources are, it is called the Guain\u00eda River."], "glass fibre": ["Long and thin fibre made of glass"], "quotidian": ["Occurring or returning in the ordinary course of events."], "teddy bear": ["A stuffed toy in the shape of a bear.", "A stuffed toy in the shape of a bear."], "paroxysm": ["A sudden recurrence of a disease."], "recur": ["To occur again."], "relapse": ["The reappearance of a disease after a period of improvement."], "forge": ["To use the intellect to plan or design something.", "A workshop in which metals are shaped by heating and hammering them.", "To make a copy of with the intent to deceive.", "To create and mold by hammering.", "To create something, usually for a specific function."], "smithy": ["A workshop in which metals are shaped by heating and hammering them."], "gauss": ["The unit of magnetic field strength in cgs systems of units, equal to 0.0001 tesla."], "unit of": ["Indicates what is measured by this unit."], "electric charge": ["The fundamental conserved property of some subatomic particles, which determines their electromagnetic interaction, expressed in coulomb."], "amount of substance": ["A physical quantity which is proportional to the number of elementary entities present."], "agility": ["The power of moving quickly and easily."], "agitate": ["To make someone excited and anxious.", "To try to arouse public feeling and action.", "Move or cause to move back and forth."], "miller": ["A person who owns or operates a mill, especially a flour mill."], "cameraman": ["Somebody who operates a movie camera or television camera."], "agog": ["Eager and excited."], "agonize": ["To suffer extreme pain or anguish."], "knock over": ["To cause something to overturn by hitting it."], "fatally ill": ["Suffering from a grave and probably fatal illness."], "terminally ill": ["Suffering from a grave and probably fatal illness."], "drive round": ["To drive round something, particularly in order to avoid it."], "cloture": ["A motion or process aimed at bringing debate to a quick end in a parliamentary procedure."], "Biseni": ["A language of Nigeria."], "inductance": ["Property of an electric circuit: The ratio of the magnetic flux to the current that causes it.", "An electrical phenomenon whereby an electromotive force (EMF) is generated in a closed circuit by a change in the flow of current."], "agonized": ["Showing agony."], "agony": ["Great pain or suffering."], "aid agency": ["An organisation dedicated to distributing aid."], "ailing": ["Unsound or troubled."], "aimless": ["Without purpose."], "airbrush": ["An atomizer to spray paint by means of compressed air."], "air cargo": ["Cargo transported or to be transported by an air carrier."], "skerry": ["Small rocky island off the coast."], "airing": ["Exposure to air for freshening or drying."], "irrational": ["Not characterized by truth or logic.", "Of a real number, that cannot be written as the ratio of two integers.", "Extremely foolish or unwise."], "rational": ["Characterized by truth or logic."], "airer": ["A frame on which clothes are aired or dried."], "Highland Konjo": ["A language of Indonesia (Sulawesi)."], "Western Parbate": ["A language of Nepal."], "Kunjen": ["A language of Australia."], "bank of the Rhine": ["The bank of the Rhine."], "Kinnauri Harijan": ["A language of India."], "Pwo Eastern Karen": ["A language of Myanmar and Thailand."], "Kurudu": ["A language of Indonesia (Papua)."], "East Kewa": ["A language of Papua New Guinea."], "red kite": ["A medium-large bird of prey of the species Milvus milvus."], "Phrae Pwo Karen": ["A language of Thailand."], "Ramopa": ["A language of Papua New Guinea."], "Erave": ["A language of Papua New Guinea."], "Bumthangkha": ["A language of Bhutan."], "echidna": ["Echidnas, also known as \"spiny anteaters\", are the only surviving monotremes apart from the Platypus."], "airless": ["Without wind, without airflow.", "Poorly ventilated, without fresh air."], "stuffy": ["Poorly ventilated, without fresh air."], "airliner": ["A passenger aircraft operated by an airline."], "bruschetta": ["Italian appetizer consisting of roasted bread slices with garlic, salt and olive oil, often also tomatoes and basil."], "perception threshold": ["Threshold above which a stimulus is perceived."], "airlock": ["An airtight chamber, usually located between two regions of unequal pressure, in which air pressure can be regulated."], "Kakanda": ["A language of Nigeria."], "Kwerisa": ["A language of Indonesia (Papua)."], "Odoodee": ["A language of Papua New Guinea."], "Kinuku": ["A language of Nigeria."], "Kakabe": ["A language of Guinea."], "Mabaka Valley Kalinga": ["A language of Philippines."], "Kako": ["A language of Cameroon, Central African Republic and Congo."], "CAS registry number": ["A unique numerical identifier for chemical compounds, polymers, biological sequences, mixtures and alloys as assigned by the Chemical Abstracts Service."], "magnetic flux": ["The measure of quantity of magnetism, taking account of the strength and the extent of a magnetic field."], "airmail": ["A system of carrying mail by air."], "air-raid": ["An attack by aircraft."], "airspace": ["The space in the atmosphere immediately above the earth."], "on Saturdays": ["Every Saturday."], "on Sundays": ["Every Sunday."], "on Tuesdays": ["Every Tuesday."], "on Mondays": ["Every Monday."], "on Wednesdays": ["Every Wednesday."], "on Thursdays": ["Every Thursday."], "on Fridays": ["Every Friday."], "airtight": ["Preventing the entrance or escape of air or gas."], "air trap": ["A contrivance for shutting off foul air or gas from drains, sewers, etc."], "airway": ["A regular course followed by aircraft."], "airy": ["With plenty of (fresh) air.", "Light-hearted and not serious."], "Nobles of the Robe": ["French aristocrats under the Old Regime who owed their titles and rank to administrative posts in the royal government."], "Nobles of the Gown": ["French aristocrats under the Old Regime who owed their titles and rank to administrative posts in the royal government."], "vesicovaginal fistula": ["An abnormal anatomical passage between the urinary bladder and the vagina."], "fistula": ["Abnormal communication most commonly seen between two internal organs, or between an internal organ and the surface of the body."], "electrical conductance": ["Physics: Reciprocal of electrical resistance, measure of the ability of an object to conduct electric current"], "conductance": ["Physics: Reciprocal of electrical resistance, measure of the ability of an object to conduct electric current"], "on Tuesday evenings": ["Every Tuesday evening."], "Tuesday evening": ["The evening of Tuesday."], "Tuesday noon": ["The noon of Tuesday."], "cruise ship": ["Passenger ship for sea voyages where not the transport from one harbor to another is important but rather the stay on the usually comfortably equipped ship."], "cruise liner": ["Passenger ship for sea voyages where not the transport from one harbor to another is important but rather the stay on the usually comfortably equipped ship."], "vacuum cleaner": ["Electronic device that cleans dirt on a surface through suction."], "skyscraper": ["A very tall building with a great number of floors."], "Volturno": ["River in the South of Italy."], "aisle": ["A walkway between or along sections of seats in a theater, classroom, airplane or the like.", "A corridor in a supermarket with shelves on both sides."], "ajar": ["Partly open."], "nasal septum": ["The partition separating the two nasal cavities in the midplane, composed of cartilaginous, membranous and bony parts."], "TaqMan": ["TaqMan single nucleotide polymorphism version of PCR."], "alacrity": ["Cheerful willingness."], "Orang Seletar": ["A language of Malaysia (Peninsular) and Singapore."], "immunoglobulin": ["A protein that acts as an antibody."], "albino": ["A person with pale skin, light hair, pinkish eyes, and visual abnormalities resulting from a hereditary inability to produce the pigment melanin."], "penguin": ["An aquatic, flightless bird living almost exclusively in the Southern Hemisphere."], "drum kit": ["A collection of drums, cymbals and sometimes other percussion instruments arranged for convenient playing by a single drummer."], "albumen": ["The white of an egg, which consists mainly of albumin dissolved in water."], "alchemist": ["A practitioner of alchemy."], "alcoholism": ["The condition suffered by an alcoholic."], "albinism": ["A general term for a number of inherited defects of amino acid metabolism in which there is a deficiency or absence of pigment in the eyes, skin, or hair."], "alias": ["A false name.", "Otherwise called."], "alibi": ["The fact or a statement that a person accused of a crime was somewhere else when it was committed."], "scald": ["To burn oneself through contact with hot or boiling liquid.", "To burn through contact with hot or boiling liquid."], "Yaren": ["The unofficial capital of Nauru."], "transition metal": ["One of a group of metallic elements in which the members have the filling of the outermost shell to 8 electrons interrupted to bring the penultimate shell from 8 to 18 or 32 electrons; includes elements 21 through 29 (scandium through copper), 39 through 47 (yttrium through silver), 57 through 79 (lanthanum through gold), and 89 through 112 (actinium through ununbium) on."], "Afaka script": ["A syllabary of 56 glyphs (letters) devised in 1908 for the Aukan language."], "autonomous": ["Independent of the conscious will, associated in general with the nature of the unconscious and in particular with activated complexes.", "Functioning independently of other components or systems", "Existing or capable of existing independently."], "autonomic nervous system": ["Nerves that control involuntary muscles."], "Big Bang Theory": ["A theory explaining the formation and operation of the Universe."], "biodegradable": ["Subject to decay by microorganisms."], "biotic potential": ["The maximum growth rate of which a population is physiologically capable."], "aquitard": ["A zone within the earth that restricts the flow of groundwater from one aquifer to another."], "boiling point elevation": ["The addition of a nonvolatile solute making a solution boil at a higher temperature."], "Avogadro's Number": ["6.02 X 10^23. An honorary name attached to the calculated value of the number of atoms, molecules, etc. in a gram mole of any chemical substance."], "Avogadro's Principle": ["At equal temperature and pressure, equal volumes of gases contain the same number of molecules."], "antimatter": ["Matter composed of antiparticles."], "Mariotte-Boyle law": ["The volume of a fixed amount of gas varies inversely with the pressure of the gas."], "Boyle's law": ["The volume of a fixed amount of gas varies inversely with the pressure of the gas."], "adenine": ["One of two double carbon ring nitrogen bases in DNA."], "atomic mass number": ["The total number of nucleons (protons and neutrons) found in a nucleus."], "atomic mass unit": ["Unit of mass defined by the convention that the atom 12C has a mass of exactly 12 u; the mass of 1 u is 1.67 x 10^-27 kg."], "Cherenkov radiation": ["Light emitted by particles that move through a medium in which the speed of light is slower than the speed of the particles."], "cyclotron": ["Circular accelerator in which the particle is bent in traveling through a magnetic field, and an oscillating potential difference causes the particles to gain energy."], "curie": ["The original unit used to describe the intensity of radioactivity in a sample of material. One curie equals thirty-seven billion disintegrations per second, or approximately the radioactivity of one gram of radium. This unit is no longer recognized as part of the International System of units. It has been replaced by the becquerel."], "guanine": ["One of the five main nucleobases found in the nucleic acids DNA and RNA."], "adipose": ["Composed of animal fat."], "carcinoma": ["Cancer of the skin or nerve cells."], "cephalothorax": ["The fused head and thorax region of some segmented animals."], "cerebellum": ["The lower back of the brain, responsible for muscle coordination and balance."], "chloroplast": ["The sites of photosynthesis in plants."], "centrifugal force": ["The force that impels a material outward from a center of rotation."], "electromagnetic radiation": ["Radiation consisting of electric and magnetic fields that travel at the speed of light. Examples: light, radio waves, gamma rays, x-rays."], "chromosome mutation": ["A mutation involving some piece of a chromosome."], "fission": ["The splitting of a heavy nucleus into two roughly equal parts (which are nuclei of lower-mass elements), accompanied by the release of a relatively large amount of energy in the form of kinetic energy of the two parts and in the form of emission of neutrons and gamma rays (source: LBL)."], "cloaca": ["A cavity which collects deposits from intestine, urinary bladder, and sex organs."], "Geiger counter": ["A measuring instrument that consists of a gas-filled tube that discharges electrically when ionizing radiation passes through it and a device that records the events."], "coevolution": ["Two or more species changing because of changes in a species with which they are interacting."], "Hubble Constant": ["Ratio of outward speed of galaxies to their distances from Earth."], "induced radioactivity": ["Radioactivity that is created by bombarding a substance with neutrons in a reactor or with charged particles produced by particle accelerators."], "radioisotope": ["An unstable isotope of an element that decays or disintegrates spontaneously, emitting radiation."], "neutrino": ["An electrically neutral particle with negligible mass. It is produced in processes such as beta decay and reactions that involve the weak force (source: LBL)."], "linear accelerator": ["Particle accelerator laid out in a straight line."], "karma": ["The idea that the like results of the good and evil a person does will return either in this life or in a later one."], "astrophysics": ["The branch of astronomy that deals with the physics of the universe, including the physical properties (luminosity, density, temperature, and chemical composition) of celestial objects such as stars, galaxies, and the interstellar medium, as well as their interactions."], "observational astronomy": ["A division of the astronomical science that is concerned with getting data, in contrast with theoretical astrophysics which is mainly concerned with finding out the measurable implications of physical models. (source: Wikipedia)"], "physical cosmology": ["A branch of astronomy, is the study of the large-scale structure of the universe and is concerned with fundamental questions about its formation and evolution. (source Wikipedia)"], "geochemistry": ["Science that involves study of the chemical composition of the Earth and other planets, chemical processes and reactions that govern the composition of rocks and soils, and the cycles of matter and energy that transport the Earth's chemical components in time and space, and their interaction with the hydrosphere and the atmosphere."], "paleobiology": ["A growing and comparatively new discipline which combines the methods and findings of the natural science biology with the methods and findings of the earth science paleontology."], "planetary science": ["The science of planets, or planetary systems, and the solar system."], "earth sciences": ["The sciences related to the planet Earth such as geology and meteorology."], "is practiced by a": ["Indicates the practitioner that is associated with an activity."], "paleontologist": ["Someone who studies or practices paleontology."], "terminologist": ["Someone who studies terminology."], "Ndyuka": ["A English Creole language spoken by the Ndyuka people of Suriname."], "geomorphologist": ["Someone who studies geomorphology."], "alien": ["Being or from or characteristic of another place or part of the world.", "A person who comes from a foreign country.", "A creature from another planet.", "From another planet."], "animal communications": ["Any behaviour on the part of one animal that has an effect on the current or future behaviour of another animal."], "ethnobotany": ["The study of the relationship between plants and people."], "cell biology": ["A branch of the biological sciences which deals with the structure, behaviour, growth, and reproduction of cells and the functions and chemistry of cell components."], "chronobiology": ["A field of science that examines periodic (cyclic) phenomena in living organisms and their adaptation to solar and lunar related rhythms."], "cryobiology": ["The study of living organisms, organs, biological tissues or biological cells at low temperatures."], "entomology": ["The scientific study of insects."], "linnaean taxonomy": ["A method of classifying living things, originally devised by (and named for) Carl Linnaeus, although it has changed considerably since his time."], "neuroscience": ["A field that is devoted to the scientific study of the nervous system."], "phycology": ["A subdiscipline of botany, is the scientific study of algae."], "cryptozoology": ["The search for animals believed to exist, but for which conclusive evidence is missing as well as for known animals believed to be extinct."], "herpetology": ["The branch of zoology concerned with the study of reptiles and amphibians."], "oology": ["The branch of zoology that deals with the study of eggs, especially birds' eggs."], "primatology": ["The study of primates."], "zootomy": ["The dissection of animals."], "physiologist": ["A person who studies or specializes in physiology."], "astrophysicist": ["Someone who studies or practices astrophysics"], "alienate": ["To make withdrawn or isolated or emotionally dissociated.", "To cause to feel less close or friendly.", "To pass to someone else property or other rights about something."], "flush toilet": ["A toilet bowl that can be flushed with water supplied under pressure and that is equipped with a water-sealed trap above the floor level."], "parallel computing": ["A form of computing in which many instructions are carried out simultaneously (source: Almasi and Gottlieb)."], "alienation": ["Emotional isolation or dissociation."], "alight": ["To get down from or out of a vehicle.", "To settle or stay after descending.", "Lighted up by or as by fire or flame."], "philosopher": ["Someone who studies or practices philosophy"], "cheminformatics": ["The use of computer and informational techniques, applied to a range of problems in the field of chemistry."], "chemical informatics": ["The use of computer and informational techniques, applied to a range of problems in the field of chemistry."], "computational chemistry": ["A branch of chemistry that uses rules of theoretical chemistry, incorporated into efficient computer programs, to calculate the structures and properties of molecules."], "quantum chemistry": ["A branch of theoretical chemistry which applies quantum mechanics and quantum field theory to address issues and problems in chemistry. (source: Wikipedia)"], "theoretical chemistry": ["The branch of chemistry that involves the use of physics to explain or predict chemical phenomena."], "theoretical physics": ["Branch of physics that employs mathematical models and abstractions of physics in an attempt to explain experimental data taken of the natural world."], "computational physics": ["The study and implementation of numerical algorithms in order to solve problems in physics for which a quantitative theory already exists."], "cryogenics": ["The study of the production of very low temperatures (below \u2013150 \u00b0C, \u2013238 \u00b0F or 123 K) and the behavior of materials at those temperatures."], "theology": ["The study of religion and religious belief, or a particular system or school of religious beliefs and teachings."], "theologian": ["Someone who studies theology."], "parasitologist": ["Someone who studies or practices parasitology."], "open-pit mining": ["The extraction of metal ores and minerals that lie near the surface by removing the overlying material and breaking and loading the ore."], "especially": ["Mainly.", "In a special manner.", "[Used to indicate a notable or particular example of a previous mentioned group]."], "fluid dynamics": ["The sub-discipline of fluid mechanics dealing with fluids (liquids and gases) in motion."], "fluid mechanics": ["The study of how fluids move."], "fluid statics": ["A field within fluid mechanics that studies fluids at rest."], "hydrostatics": ["A field within fluid mechanics that studies fluids at rest."], "hydrodynamics": ["Fluid dynamics applied to liquids, such as water, alcohol, oil, and blood."], "align": ["To arrange in a straight line.", "To bring into cooperation or agreement with a particular group, party, cause, etc. Be or come into adjustment with.", "To align oneself with a group or a way of thinking.", "To bring (components or parts, e.g., a car's wheels) into proper or desirable coordination correlation."], "eukaryote": ["Any organism whose cells contain a nucleus and other organelles enclosed within membranes."], "prokaryote": ["A group of organisms that lack a cell nucleus (karyon), or any other membrane-bound organelles. Most are unicellular, but some prokaryotes are multicellular organisms. (source: Wikipedia)"], "allay": ["To lessen the intensity of or calm."], "mathematical physics": ["The scientific discipline concerned with the application of mathematics to problems in physics and the development of mathematical methods suitable for such applications and for the formulation of physical theories. (source: Wikipedia)"], "medical physics": ["A branch of applied physics concerning the application of physics to medicine."], "Taurids": ["An annual meteor shower associated with the comet Encke."], "molecular physics": ["The study of the physical properties of molecules and of the chemical bonds between atoms that bind them."], "quantum mechanics": ["The study of the relationship between energy quanta (radiation) and matter, in particular that between valence shell electrons and photons."], "solid-state physics": ["The largest branch of condensed matter physics, is the study of rigid matter, or solids."], "statistical mechanics": ["The application of probability theory, which includes mathematical tools for dealing with large populations, to the field of mechanics, which is concerned with the motion of particles or objects when subjected to a force."], "vehicle dynamics": ["The dynamics of vehicles, here assumed to be ground vehicles."], "acantholysis": ["A breakdown of a cell layer in the epidermis."], "probability theory": ["The branch of mathematics concerned with analysis of random phenomena."], "number theory": ["The branch of pure mathematics concerned with the properties of numbers in general, and integers in particular, as well as the wider classes of problems that arise from their study."], "Rabi`-ul-Akhir": ["The fourth month of the Muslim calendar."], "Jumaada-ul-Akhir": ["The sixth month of the Muslim calendar."], "Jumada-l-Akhra": ["The sixth month of the Muslim calendar."], "allegedly": ["According to what has been alleged."], "allegiance": ["Loyalty or devotion to some person, group, cause, or the like."], "allegorical": ["Of an allegory, expressed with an allegory."], "allegory": ["A representation of an abstract or spiritual meaning through concrete or material forms."], "foreword": ["An introductory section preceding the main text of a book or other document"], "scrutiny": ["A close, careful examination or study."], "scrutinize": ["To examine carefully."], "dial plate": ["A round disk with numbers of 0 to 9 that is used to dial the phone number at old telephones"], "Middle Irish": ["A Goidelic language spoken in Ireland, Scotland and the Isle of Man from the 10th to 12th centuries."], "all-embracing": ["Applying to or including everything."], "allergic": ["Characterized by or caused by allergy."], "alleviate": ["To make easier to endure; provide physical relief, as from pain.", "To make easy or easier."], "alleviation": ["The feeling that comes when something burdensome is removed or reduced."], "zoologist": ["Someone who studies or practices zoology."], "alley cat": ["A homeless cat that scavenges for food in alleys, streets, etc."], "rheumatology": ["A subspecialty of internal medicine and pediatrics devoted to the diagnosis and therapy of rheumatic diseases. Rheumatologists mainly deal with problems involving the joints and the allied conditions of connective tissue."], "Surinamese": ["A creole language spoken in Suriname.", "A person born in Surinam."], "emirate": ["The quality, dignity, office or territorial competence of any Emir."], "Arabian Peninsula": ["A peninsula in Southwest Asia at the junction of Africa and Asia consisting mainly of desert."], "Persian Empire": ["A series of historical empires that ruled over the Iranian plateau, the original Persian homeland, and beyond in Western Asia, Central Asia and the Caucasus. (source:Wikipedia)"], "Ottoman Empire": ["A multi-ethnic and multi-religious Turkish-ruled state. At the height of its power (16th \u2013 17th century), it spanned three continents, controlling much of Southeastern Europe, the Middle East and North Africa, stretching from the Strait of Gibraltar (and, in 1553, the Atlantic coast of Morocco beyond Gibraltar) in the west to the Caspian Sea and Persian Gulf in the east, from the edge of Austria, Slovakia and parts of Ukraine in the north to Sudan, Eritrea, Somalia and Yemen in the south. (source: Wikipedia)"], "protectorate": ["A political entity that formally agrees by treaty to enter into an unequal relationship with another, stronger state, called the protector, which engages to protect it against third parties, in exchange for which the protectorate usually accepts specified obligations, which may vary greatly, depending on the real nature of their relationship. (source: Wikipedia)"], "Arab League": ["A regional organization of Arab States in the Middle East and North Africa."], "freedom of religion": ["A guarantee by a government for freedom of belief for individuals and freedom of worship for individuals and groups."], "Iranian Revolution": ["The revolution that transformed Iran from a monarchy under Shah Mohammad Reza Pahlavi, to an Islamic republic under Ayatollah Ruhollah Khomeini, the leader of the revolution and founder of the Islamic Republic. (source Wikipedia)"], "Muslim": ["An adherent of the religion of Islam."], "Christianity": ["A monotheistic religion centered on the life and teachings of Jesus of Nazareth as depicted in the New Testament."], "Bedouin": ["A desert-dwelling Arab nomadic pastoralist, found throughout most of the desert belt extending from the Atlantic coast of the Sahara via the Western Desert, Sinai, and Negev to the Arabian Desert. (source Wikipedia)"], "pearl": ["A hard, rounded object produced within the soft tissue (specifically the mantle) of a living shelled mollusk."], "Wahhabism": ["A conservative 18th century reform movement of Sunni Islam founded by Muhammad ibn Abd-al-Wahhab, after whom the movement is named."], "Qur'an": ["The central religious text of Islam."], "Sunnah": ["Those religious actions that were instituted by Muhammad during the 23 years of his ministry and which Muslims initially received through consensus of companions of Muhammad (Sahaba), and further through generation-to-generation transmission. (source: Wikipedia)"], "cacao": ["(Theobroma cacao) A small (4\u20138 m tall (15-26 ft)) evergreen tree in the family Sterculiaceae (alternatively Malvaceae), native to the deep tropical region of the Americas."], "Key lime": ["Small tree of the genus Citrus, scientific name: Citrus aurantifolia"], "sexual reproduction": ["A union that results in increasing genetic diversity of the offspring. It is characterized by two processes: meiosis, involving the halving of the number of chromosomes; and fertilization, involving the fusion of two gametes and the restoration of the original number of chromosomes. During meiosis, the chromosomes of each pair usually cross over to achieve genetic recombination. (source:Wikipedia)"], "nucleotide": ["A chemical compound that consists of 3 portions: a heterocyclic base, a sugar, and one or more phosphate groups."], "human genome": ["The genome of Homo sapiens, which is composed of 23 distinct pairs of chromosomes (22 autosomal + X + Y) with a total of approximately 3 billion DNA base pairs containing an estimated 20,000\u201325,000 genes. (source: Wikipedia)"], "thymine": ["One of the four bases in the nucleic acid of DNA. The others are adenine, guanine, and cytosine. Thymine always pairs with adenine."], "cytosine": ["One of the five main nucleobases found in the nucleic acids DNA and RNA."], "molecular mass": ["The mass of one molecule of that substance, relative to the unified atomic mass unit u (equal to 1/12 the mass of one atom of carbon-12)."], "spermatozoon": ["The haploid cell that is the male gamete."], "spermatozoan": ["The haploid cell that is the male gamete."], "sperm cell": ["The haploid cell that is the male gamete."], "herpetologist": ["Someone who studies or practices herpetology."], "chromatin": ["The complex of DNA and protein that makes up chromosomes."], "protein biosynthesis": ["The process in which cells build proteins. The term is sometimes used to refer only to protein translation but more often it refers to a multi-step process, beginning with amino acid synthesis and transcription which are then used for translation. (source: Wikipedia)"], "allied": ["Joined by political agreement or treaty."], "phylum": ["A biological taxon, a group of species, part of a kingdom and consisting of one or more classes."], "allot": ["To appropriate for a special purpose.", "To assign to someone as his or her lot."], "Kokota": ["A language of Solomon Islands."], "Kosarek Yale": ["A language of Indonesia (Papua)."], "Kiong": ["A language of Nigeria."], "Transfer RNA": ["A small RNA chain (73-93 nucleotides) that transfers a specific amino acid to a growing polypeptide chain at the ribosomal site of protein synthesis during translation."], "telomere": ["A region of highly repetitive DNA at the end of a linear chromosome that functions as a disposable buffer."], "centromere": ["A region in the middle of the chromosome involved in cell division and the control of gene expression."], "ribosomal RNA": ["A type of RNA synthesized in the nucleolus by RNA polymerase I, is the central component of the ribosome, the protein manufacturing machinery of all living cells. (source: Wikipedia)"], "RNA Interference": ["A mechanism that inhibits gene expression by causing the degradation of specific RNA molecules or inhibits the transcription of specific genes."], "pseudogene": ["Defunct relatives of known genes that have lost their protein-coding ability or are otherwise no longer expressed in the cell."], "restriction enzyme": ["An enzyme that cuts double-stranded DNA. The enzyme makes two incisions, one through each of the sugar-phosphate backbones (i.e., each strand) of the double helix without damaging the nitrogenous bases."], "genetic fingerprinting": ["Techniques used to distinguish between individuals of the same species using only samples of their DNA."], "DNA testing": ["Techniques used to distinguish between individuals of the same species using only samples of their DNA."], "DNA typing": ["Techniques used to distinguish between individuals of the same species using only samples of their DNA."], "DNA profiling": ["Techniques used to distinguish between individuals of the same species using only samples of their DNA."], "alluring": ["That attracts or tempts by something flattering or desirable.", "That entices."], "oligonucleotide": ["Short sequences of nucleotides (RNA or DNA), typically with twenty or fewer bases."], "recombinant DNA": ["A form of artificial DNA which is engineered through the combination or insertion of one or more DNA strands, thereby combining DNA sequences which would not normally occur together."], "electrical conductivity": ["The ratio of the electric current density to the electric field in a material."], "Zipaquir\u00e1": ["A municipality and town of Colombia in the department of Cundinamarca."], "Via Crucis": ["The depiction of the final hours (or Passion) of Jesus, and the devotion commemorating the Passion."], "Stations of the Cross": ["The depiction of the final hours (or Passion) of Jesus, and the devotion commemorating the Passion."], "diabetes mellitus type 2": ["A metabolic disorder that is primarily characterized by insulin resistance, relative insulin deficiency, and hyperglycemia."], "beta cell": ["A type of cell in the pancreas in areas called the islets of Langerhans. They make up 65-80% of the cells in the islets."], "lutenist": ["Someone who plays the lute."], "lutanist": ["Someone who plays the lute."], "lutist": ["Someone who plays the lute."], "New Orleans": ["Largest city in the U.S. state of Louisiana."], "enumerate": ["To specify each member of a sequence individually in a given order."], "body mass index": ["A statistical measure of the weight of a person scaled according to height, used to estimate if a person is underweight or overweight."], "allusion": ["Passing reference or indirect mention."], "allusive": ["Containing, abounding in, or characterized by allusions."], "Gugubera": ["A language of Australia."], "almanac": ["An annual publication containing a calendar for the coming year, the times of such events and phenomena as anniversaries, sunrises and sunsets, phases of the moon, tides, etc., and other statistical information and related topics."], "Kaiku": ["A language of Democratic Republic of the Congo"], "Kir-Balar": ["A language of Nigeria."], "Koi": ["A language of Nepal."], "Tumi": ["A language of Nigeria."], "Kangean": ["A language of Indonesia (Java and Bali)."], "Teke-Kukuya": ["A language of Congo."], "Kohin": ["A language of Indonesia (Kalimantan)."], "Guguyimidjir": ["A language of Australia."], "Kaska": ["A Northern Athabaskan language spoken by the Kaska people in the southeastern Yukon territory and northern British Columbia in Canada."], "Kiliwa": ["A language of Mexico."], "Kolbila": ["A language of Cameroon."], "Gamilaraay": ["A Pama-Nyungan language of the Wiradhuric subgroup found mostly in South East Australia, traditionally spoken by the Kamilaroi people."], "English (United Kingdom)": ["English as spoken and written in the United Kingdom."], "English (United States)": ["English as spoken and written in the United States of America"], "Serbian (Latin script)": ["Serbian language written in the Latin script."], "concrete noun": ["Noun that denotes a concrete (touchable) object."], "Mandarin (simplified)": ["The Mandarin language written in the simplified script."], "Mandarin (traditional)": ["The Mandarin language written in the traditional script."], "heritability": ["The proportion of phenotypic variation in a population that is attributable to genetic variation among individuals."], "horizontal gene transfer": ["Any process in which an organism transfers genetic material to another cell that is not its offspring."], "reproductive isolation": ["A category of mechanisms that prevent two or more populations from exchanging genes."], "predictive power": ["The ability of a scientific theory to generate testable predictions."], "sun tanning": ["A darkening of the skin (especially of fair-skinned individuals) in a natural physiological response stimulated by exposure to ultraviolet radiation from sunshine (or a sunbed)."], "fixation": ["Condition that occurs when every individual within a population has the same allele at a particular locus."], "RNA world": ["A theory which proposes that a world filled with RNA (ribonucleic acid) based life predates current DNA (deoxyribonucleic acid) based life. (source: Wikipedia)"], "randomness": ["Lack of order, purpose, cause, or predictability in non-scientific parlance."], "radioactive decay": ["The property possessed by some atomic nuclei of disintegrating spontaneously, with loss of energy through emission of a charged particle and/or gamma radiation."], "transposon": ["Sequence of DNA that can move around to different positions within the genome of a single cell in a process called transposition."], "gene family": ["A set of genes defined by presumed homology, i.e. evidence that the genes evolved from a common ancestral gene."], "hazelnut oil": ["Vegetable oil pressed from the nuts of the common hazel (Corylus avellana)."], "epidemiologist": ["Person who studies the frequency and distribution of diseases within populations and environments."], "pharmacologist": ["A physician, scientist, or healthcare provider that investigates the mechanisms underlying the effects of drugs and chemicals on biological or living systems."], "ophthalmology": ["A surgical specialty concerned with the structure and function of the eye and the medical and surgical treatment of its defects and diseases."], "aloft": ["Up in the air."], "aloof": ["Separately, in regard to space or company; in a state of separation.", "Apart or at a distance from other people.", "Not sociable and friendly."], "Tagakaulu Kalagan": ["A language of Philippines."], "Weliki": ["A language of Papua New Guinea."], "binomial nomenclature": ["The formal system of naming specific species."], "Kalumpang": ["A language of Indonesia (Sulawesi)."], "Kono": ["A language of Nigeria.", "A language of Sierra Leone.", "A dialect of the Kpelle language spoken in southern Guinea, in particular in Lola and Doromou."], "alphabetical": ["Relating to an alphabet."], "Alsatian": ["Of or pertaining to Alsace or its inhabitants.", "A breed of dog."], "Kagan Kalagan": ["A language of Philippines."], "Kolom": ["A language of Papua New Guinea."], "alterable": ["Capable of being altered."], "Kapya": ["A language of Nigeria."], "Kamasa": ["A language of Papua New Guinea."], "altercation": ["A heated or angry dispute."], "consumer price index": ["An index number measuring the average price of consumer goods and services purchased by households."], "altimeter": ["An instrument that measures and indicates the height above sea level at which an object, such as an airplane, is located."], "filmic": ["Pertaining to or characteristic of motion pictures, illustrated by means of film."], "cinematic": ["Pertaining to or characteristic of motion pictures, illustrated by means of film."], "alpenhorn": ["A wind instrument, consisting of a natural wooden horn of conical bore, having a cup-shaped mouthpiece, used by mountain dwellers in Switzerland and elsewhere."], "Human Genome Project": ["An international scientific research project whose goal is to understand the genetic make-up of the human species by determining the sequence of chemical base pairs which make up DNA, and to identify the 20,000-25,000 genes of the human genome. (source: Wikipedia)"], "Rumu": ["A language of Papua New Guinea."], "Khaling": ["A language of Nepal and India."], "Nukna": ["A language of Papua New Guinea."], "Klao": ["A language of Liberia and Sierra Leone."], "Maskelynes": ["A language of Vanuatu."], "Lindu": ["A Malayo-Polynesian language spoken around Lindu Lake in Central Sulawesi, Indonesia."], "Koluwawa": ["A language of Papua New Guinea."], "Kalao": ["A language of Indonesia (Sulawesi)."], "Kabola": ["A language of Indonesia (Nusa Tenggara)."], "Konni": ["A Gur language spoken in Ghana."], "Mbundu": ["A Bantu language spoken by the Ambundu in the north-west of Angola."], "Madukayang Kalinga": ["A language of Philippines."], "Bakole": ["A language of Cameroon."], "K\u00e2te": ["A language of Papua New Guinea."], "Kalam": ["A language of Papua New Guinea."], "Limos Kalinga": ["A language of Philippines."], "castanets": ["A percussion instrument consisting of a pair of concave shells joined on one edge by a string, held in the hand and used to produce clicking sounds."], "Lower Tanudan Kalinga": ["A language of Philippines."], "Quebec": ["A province in Canada, and the only province whose people have been recognized as a nation within a united Canada.", "Capital and second biggest city in the province of Quebec, in Canada."], "guayusa": ["A tree of the holly genus, native to the Ecuadorian Amazon Rainforest. Its leaves have the highest caffeine content of any known plant."], "yerba mate": ["A species of holly (family Aquifoliaceae) native to subtropical South America in Argentina, eastern Paraguay, western Uruguay and southern Brazil. (source: Wikipedia)"], "mate": ["A caffeinated infusion prepared by steeping dried leaves of yerba mate (Ilex paraguariensis) in hot water.", "To copulate.", "To fit together without space between.", "To bring two objects, ideas, or people together.", "A ship's officer, subordinate to the master on a commercial ship.", "To copulate with (of male animals)."], "Alu sequence": ["A short stretch of DNA originally characterized by the action of the Alu restriction endonuclease. Alu sequences reveal details of ancestry because individuals will only share a particular Alu sequence insertion if they have a common sexual ancestor."], "Mitochondrial Eve": ["The name given by researchers to the woman who is defined as the matrilineal most recent common ancestor (MRCA) for all living humans."], "Alzheimer's disease": ["A common form of dementia of unknown cause, usually beginning in late middle age, characterized by memory lapses, confusion, emotional instability, and progressive loss of mental ability."], "Masikoro Malagasy": ["A dialect of Malagasy spoken in the Toliara Province of Madagascar."], "Antankarana Malagasy": ["A Barito language spoken by the Antankaranas in the Antsiranana region of northern Madagascar."], "Plateau Malagasy": ["A dialect of Malagasy spoken in the capital of Madagascar and in the central highlands."], "Sakalava Malagasy": ["A dialect of the Malagasy language spoken by the Sakalavas in the western coast of Madagascar."], "Tandroy-Mahafaly Malagasy": ["A dialect of Malagasy spoken in the Toliara Province of Madagascar."], "Tanosy Malagasy": ["A dialect of Malagasy spoken by the Antanosy people in the Anosy region of southeastern Madagascar."], "Tsimihety Malagasy": ["A language of Madagascar."], "tambourine": ["A percussion instrument consisting of a frame, often of wood or plastic, with pairs of small metal jingles."], "bonobo": ["A chimpanzee of the species Pan paniscus."], "amateurish": ["Characteristic of an amateur; not professional."], "common spoonbill": ["(Platalea leucorodia) A wading bird of the ibis and spoonbill family."], "Awtuw": ["A language of Papua New Guinea."], "Kwoma": ["A language of Papua New Guinea."], "Gimme": ["A language of Cameroon."], "Northern Kurdish": ["An Iranian language spoken by the Kurds of northern Syria, Iraq, Turkey and some of the former Soviet republics."], "Kamasau": ["A language of Papua New Guinea."], "Kemtuik": ["A language of Indonesia (Papua)."], "Kanite": ["A language of Papua New Guinea."], "amaze": ["To overwhelm with surprise or sudden wonder."], "amazed": ["Greatly surprised."], "amazement": ["Overwhelming surprise or astonishment.", "A dazed condition."], "amazing": ["Causing wonder, admiration or astonishment.", "Causing great surprise or sudden wonder."], "Karip\u00fana Creole French": ["A Creole French language spoken in the Brazilian state of Amap\u00e1."], "raven": ["A large black bird, similar to the crow, but larger.", "To prey on or hunt for."], "amber": ["A hard yellow or brownish substance, formed from resin, used in making jewellery etc."], "ambiance": ["The set of all natural and human-made surroundings that affect individuals, social groupings, and other life.", "The special atmosphere or mood created by a particular environment."], "ambience": ["The special atmosphere or mood created by a particular environment."], "ambient": ["Of the surrounding area or environment."], "bloom": ["The reproductive structure of angiosperm plants, consisting of stamens and carpels surrounded by petals and sepals all borne on the receptacle.", "The blooming of flowers on a plant.", "(Of a plant) To produce blooms or flowers."], "blossom": ["The reproductive structure of angiosperm plants, consisting of stamens and carpels surrounded by petals and sepals all borne on the receptacle.", "A flower on a tree or bush.", "(Of a plant) To produce blooms or flowers."], "ethanal": ["Aldehyde of ethanol"], "acetaldehyde": ["Aldehyde of ethanol"], "Komo": ["A language of Democratic Republic of the Congo"], "Waboda": ["A language of Papua New Guinea."], "Koma": ["A Gur language spoken in Ghana.", "A language of Nigeria and Cameroon."], "ambit": ["An area in which something acts or operates or has power or control."], "amble": ["To go at a slow, easy pace."], "semiology": ["The study of sign processes, or signification and communication, signs and symbols, both individually and grouped into sign systems."], "amen": ["Interjection said or sung by Jews or Christians to express a wish that the prayer should be fulfilled."], "amenable": ["Ready or willing to answer, act, agree, or yield."], "amenity": ["Something that makes life more pleasant or convenient."], "amiability": ["Sweet and friendly disposition."], "amiable": ["Deserving to be loved.", "Diffusing warmth and friendliness."], "amicalibility": ["Disposition characterized by warmth and friendliness."], "organelle": ["A specialized subunit within a cell that has a specific function, and is separately enclosed within its own lipid membrane."], "Y-chromosomal Adam": ["The patrilineal human most recent common ancestor (mrca) from whom all Y chromosomes in living men are descended."], "population bottleneck": ["An evolutionary event in which a significant percentage of a population or species is killed or otherwise prevented from reproducing, and the population is reduced by 50% or more, often by several orders of magnitude."], "ribosome": ["Complex of RNA and protein that is found in all cells. The ribosomes in the mitochondrion of eukaryotic cells resemble those in bacteria, reflecting the evolutionary origin of this organelle."], "coenzyme": ["Small organic non-protein molecule that carry chemical groups between enzymes."], "amnesia": ["Partial or total loss of memory."], "amniocentesis": ["A medical procedure used in prenatal diagnosis of genetic risk factors."], "amoral": ["Not involving questions of right or wrong."], "amorphous": ["Having no specific shape."], "amp": ["The standard SI unit of electrical current with symbol \"A\"."], "ampersand": ["A punctuation mark (&) used to represent conjunction (and)."], "amphetamine": ["A prescription stimulant commonly used to treat Attention-deficit hyperactivity disorder (ADHD) in adults and children."], "amphibious": ["Living or able to live both on land and in water."], "epithelium": ["Tissue, which consists of one or more layers of epithelial cells and a basement membrane; it covers the external surface of the body and lines the internal surfaces of the anatomical structures. Examples: simple squamous epithelium, glandular cuboidal epithelium, transitional epithelium, myoepithelium."], "amphitheatre": ["An oval or circular building with rows of seats surrounding a central space, used as a theatre or arena."], "ample": ["Abundant, fully sufficient or more than adequate in supply for the purpose or needs.", "More than enough in size or scope or capacity."], "amply": ["In a way that is of large or great size, amount, extent, or capacity."], "amuse": ["To occupy in an agreeable, entertaining or pleasant fashion."], "amusing": ["Arousing laughter.", "Causing laughter or mirth.", "Affording entertainment."], "scaled reptile": ["(Sauria) A reptile of the order Squamata."], "anaemic": ["Lacking vitality and energy."], "anaesthetic": ["A substance, used in surgery etc, that causes lack of feeling in a part of the body or unconsciousness."], "breed": ["A domesticated subspecies or infrasubspecies of an animal."], "is a breed of": ["Indicated what species it is a breed of."], "Toggenburger": ["A breed of goat, named after the region in Switzerland where the breed originated, the Toggenburg valley."], "stridulation": ["The act of producing sound by rubbing together certain body parts."], "anaesthetize": ["To make someone unable to feel pain by giving an anaesthetic."], "snowboarding": ["A sport that involves descending a snow-covered slope on a snowboard that is attached to one's feet using a boot/binding interface."], "karateka": ["A practitioner of karate."], "judoist": ["A practitioner of the Japanese martial art of Judo."], "burglary": ["A crime involves breaking into a house, outbuilding , business, school, place of worship, boat, aircraft, rail car, or motor vehicle with an intent to commit a theft or a felony."], "Flemish Giant": ["A type of rabbit, most famous for its unusually large size compared to other rabbits."], "anatomical": ["Of or pertaining to anatomy."], "ancestral": ["Of or relating to ancestors."], "cross-country skiing": ["A winter sport popular in many countries with large snowfields, primarily Northern Europe and Canada."], "anchorage": ["A place which is safe, or used, for anchoring boats."], "anemone": ["A plant or flower of the genus Anemone."], "anew": ["Again but in a new or different way."], "angelic": ["Like an angel."], "angler": ["A person who fishes with a hook and line."], "nameless": ["Having no name.", "Unknown by name."], "Anglican": ["A member of the Church of England.", "Of or pertaining to the Church of England."], "Anglican Communion": ["The world-wide affiliation of Anglican Churches."], "smoking ban": ["A ban on smoking tobacco in certain locations, issued by legislature or landlords, restaurant owners etc."], "stays": ["Third-person singular indicative present form of the verb 'to stay'."], "curling": ["A team sport with similarities to bowls and bocce, played on a rectangular sheet of carefully prepared ice by two teams of four players each."], "anglophile": ["One who admires England, its people, and its culture."], "anguish": ["Extreme mental distress."], "anise": ["A Mediterranean plant, Pimpinella anisum."], "annalist": ["One who writes annals."], "annals": ["Yearly historical accounts of events."], "figure skating": ["A sport in which individuals, couples, or groups perform spins, jumps, footwork and other choreography on ice."], "dogsled racing": ["A winter dog sport involving the timed competition of teams of sleddogs that pull a sled with the dog driver or musher standing on the runners."], "Lubuagan Kalinga": ["A language of the Philippines."], "Konda": ["A language of Indonesia (Papua)."], "Kankanaey": ["A language of Philippines."], "Mankanya": ["A Bak language spoken in Senegal, Guinea-Bissau, and the Gambia."], "annihilate": ["To destroy completely.", "To kill in large numbers."], "annihilation": ["Total destruction."], "normative": ["Refers to value judgments as to \"what ought to be,\" in contrast to positive which is about \"what is.\""], "nowhere": ["In no place."], "annotate": ["To supply with critical or explanatory notes."], "announcer": ["A person who introduces programmes or reads the news on radio or television."], "annoy": ["To make someone rather angry or impatient; to cause annoyance."], "annoyance": ["Something which annoys."], "annoyed": ["Aroused to impatience or anger.", "Troubled persistently especially with petty annoyances."], "annoying": ["Causing vexation, irritation or annoyance."], "annuity": ["The annual payment of an allowance or income."], "annul": ["To cancel or eliminate officially.", "To make something legally invalid or void.", "To declare that something is not valid and cancel (especially a marriage or legal contract)."], "Moksha": ["A Volga-Finnic language spoken primarily in the western part of Mordovia (Russia) and by the Moksha people worldwide."], "Rinconada Bicolano": ["A language of the Philippines."], "tropic of Cancer": ["The most northern latitude at which the sun can appear directly overhead at noon."], "tropic": ["The farthest points at which the sun can be directly overhead; the boundaries of the torrid zone or tropics."], "torrid zone": ["The region of the earth's surface lying between two parallels of latitude on the earth, one 23\u00b027' north of the equator and the other 23\u00b027' south of the equator, representing the points farthest north and south at which the sun can shine directly overhead and constituting the boundaries of the Torrid Zone.\\n(Source: AMHER)"], "tropic of Capricorn": ["The most southerly latitude at which the sun can appear directly overhead at noon."], "Koongo": ["A language of Democratic Republic of the Congo and Angola"], "anoint": ["To smear or cover with ointment or oil especially in a religious ceremony."], "Kayan River Kenyah": ["A language of Indonesia (Kalimantan)."], "Kanufi": ["A language of Nigeria."], "anomalous": ["Deviating from the normal or common order, form, or rule."], "Akateko": ["Mayan language spoken primarily in the municipality of San Miguel Acat\u00e1n in the western highlands of Guatemala, and by some people in Mexico."], "Western Kanjobal": ["Mayan language spoken primarily in the municipality of San Miguel Acat\u00e1n in the western highlands of Guatemala, and by some people in Mexico."], "Kuranko": ["A language of Sierra Leone and Guinea."], "Keninjal": ["A language of Indonesia (Kalimantan)."], "anorak": ["A kind of heavy jacket."], "Kanamar\u00ed": ["A language of Brazil."], "anorexia nervosa": ["An eating disorder characterized by low body weight and body image distortion with an obsessive fear of gaining weight.", "A psychiatric diagnosis that describes an eating disorder characterized by low body weight and body image distortion with an obsessive fear of gaining weight."], "answerable": ["Having responsibility."], "answering machine": ["A machine that take messages for you when you cannot answer the phone."], "Kwanja": ["A language of Cameroon."], "Kaningra": ["A language of Papua New Guinea."], "Panoan Katuk\u00edna": ["A language of Brazil."], "antagonistic": ["Indicating opposition or resistance."], "Romansch": ["A language of Switzerland."], "intertrigo": ["An inflammation (rash) of the body folds (adjacent areas of skin)."], "fanboy": ["Someone who is utterly devoted to a single subject or hobby, typically to the point where it is considered an obsession."], "vertigo": ["The sensation of spinning or swaying while the body is stationary with respect to the earth or surroundings.", "A sensation of irregular or whirling motion, either of oneself or of external objects."], "meatpuppet": ["Someone who edits on behalf of or as proxy for someone else in a forum or wiki."], "Antarctic": ["At or near the South Pole."], "antelope": ["Any of several ruminants of the family Bovidae, chiefly of Africa and Asia, having permanent, hollow, unbranched horns."], "waterboarding": ["A torture technique that simulates drowning in a controlled environment."], "cheetah": ["A member of the cat family, a poor climber that hunts by speed and stealth."], "sockpuppet": ["An online identity used for purposes of deception within an Internet community.", "A puppet made from a sock (or similar garment) which is placed over the hand of a puppeteer."], "Antartica": ["The area round the South Pole."], "Tabo": ["A language of Papua New Guinea."], "anthill": ["A mound of earth made by ants as they dig their nest."], "anther": ["The pollen-bearing part of a stamen."], "stamen": ["In flowering plants, the male organ in a flower, typically consisting of an anther and a filament."], "anthrax": ["An infectious, usually fatal disease of warm-blooded animals, especially of cattle and sheep, caused by the bacterium Bacillus anthracis."], "spermatophyte": ["Plants that produce seeds. The group comprises the Gymnospermae and the Angiospermae.\\n(Source: ALL)"], "auxiliary": ["A person or persons who provide assistance with some task.", "A verb that accompanies the main verb in a clause in order to make distinctions in tense, mood, voice or aspect.", "That is being added as integratory part.", "Functioning in a supporting capacity."], "Kendayan": ["A language of Indonesia (Kalimantan)."], "Kanyok": ["A language of Democratic Republic of the Congo"], "Kalams\u00e9": ["A language of Burkina Faso and Mali"], "S\u00e0m\u00f2m\u00e1": ["A language of Burkina Faso and Mali"], "Konomala": ["A language of Papua New Guinea."], "perturb": ["To disturb in mind or make uneasy or cause to be worried or alarmed."], "artificial selection": ["The intentional breeding for certain traits, or combinations of traits, over others."], "domestication": ["The process whereby a population of animals or plants becomes accustomed to human provision and control."], "evolutionary algorithm": ["An algorithm that uses some mechanisms inspired by biological evolution: reproduction, mutation, recombination, and selection."], "substrate": ["A molecule upon which an enzyme acts."], "metabolic pathway": ["A series of chemical reactions occurring within a cell where a principal chemical is modified by chemical reactions."], "activation energy": ["The energy that must be overcome in order for a chemical reaction to occur."], "chemical equilibrium": ["The state in which the chemical activities or concentrations of the reactants and products do not change over time."], "artificial enzyme": ["A synthetic, organic molecules prepared to recreate the active site of an enzyme."], "enzyme activator": ["Molecules that bind to enzymes and increase their activity."], "feedback": ["A process whereby some proportion of the output signal of a system is passed (fed back) to the input. This is often used to control the dynamic behavior of the system."], "anticlimax": ["A dull or disappointing ending to a play, activity etc after increasing excitement."], "anticorrosive": ["Something that prevents or counteracts corrosion."], "compulsive": ["With an uncontrolled need to do things."], "obsessive": ["With an uncontrolled need to do things."], "anticyclone": ["A circulation of winds around a central region of high atmospheric pressure, clockwise in the Northern Hemisphere, counterclockwise in the Southern Hemisphere."], "antifreeze": ["A liquid used in the radiator of an internal-combustion engine to lower the freezing point of the cooling medium."], "Northern Sotho": ["A language of South Africa."], "North Saami": ["An Uralic language spoken in the northern parts of Norway, Sweden and Finland as well as northwestern parts of Russia."], "Northern Sami": ["An Uralic language spoken in the northern parts of Norway, Sweden and Finland as well as northwestern parts of Russia."], "Scots": ["A language of the United Kingdom and Ireland."], "antithesis": ["The direct opposite."], "ad nauseam": ["To a nauseating or sickening degree."], "affidavit": ["A signed document wherein someone makes a sworn statement."], "affiant": ["A individual whose statement is contained in an affidavit."], "Congo": ["River in Central Africa."], "half-opened": ["Partly open."], "antler": ["The large and complex horn-like appendages of male deer."], "anxious": ["Worried about what may happen or have happened."], "anymore": ["Any longer."], "aorta": ["The main trunk of the arterial system, conveying blood from the left ventricle of the heart to all of the body except the lungs."], "Aymara": ["A macro language consisting of two languages spoken by the Aymara people of the Andes. It is a Native American language with over a million speakers.", "A native ethnic group in the Andes and Altiplano regions of South America; about 1.6 million live in Bolivia, Peru, Northern Chile, and Northwestern Argentina (in particular in Salta Province)."], "synonymous": ["Having the same meaning."], "apathetic": ["Having or showing little or no emotion.", "Not caring."], "aphrodisiac": ["A drug or other agent that stimulates sexual desire."], "Zazaki": ["An Indo-European language spoken primarily in eastern Turkey."], "Middle Dutch": ["A language of the Netherlands and Belgium, the ancestor of Modern Dutch. 1150-1500 AD."], "Guarani": ["A macro language consisting of five South American languages"], "libido": ["Sexual urge or drive."], "apiece": ["For each piece or thing."], "apnoea": ["Temporary absence or cessation of breathing."], "apnea": ["Temporary absence or cessation of breathing."], "neurofibromatosis": ["An autosomal dominant genetic disorder encompassing a set of distinct genetic disorders that cause tumors to grow along types of nerves and, in addition, can affect the development of non-nervous tissues such as bones and skin."], "apocrypha": ["Various religious writings of uncertain origin regarded by some as inspired, but rejected by most authorities."], "ancient Rome": ["a civilization that grew from a small agricultural community founded on the Italian Peninsula in the 9th century BC to a large empire straddling the Mediterranean Sea. In its 12 centuries of existence, Roman civilization shifted from a monarchy, to a republic based on a combination of oligarchy and democracy, to an autocratic empire. It came to dominate Western Europe and the area surrounding the Mediterranean Sea through conquest and assimilation. (source: Wikipedia)."], "Western Roman Empire": ["The western half of the Roman Empire, from its division by Diocletian in 286. Its capital was in Mediolanum (modern Milan), until it was moved to Ravenna in 402. (source: Wikipedia)", "The western half of the Roman Empire which emerged after the division in 395 AD and ended in 476."], "Eastern Roman Empire": ["The eastern part of the Roman Empire after its division in the 3rd century AD. Its capital city was Constantinople (or New Rome). It represented an administrative division of the Roman Empire, but after the fall of the western part it survived until the fall of Constantinople in 1453. (source: Wikipedia)", "Empire in the eastern Mediterranean which emerged from the eastern part of the Roman Empire in 395 AD and ended with the conquest of Constantinople by the Ottomans in 1453."], "Byzantine Empire": ["The eastern part of the Roman Empire after its division in the 3rd century AD. Its capital city was Constantinople (or New Rome). It represented an administrative division of the Roman Empire, but after the fall of the western part it survived until the fall of Constantinople in 1453. (source: Wikipedia)", "Empire in the eastern Mediterranean which emerged from the eastern part of the Roman Empire in 395 AD and ended with the conquest of Constantinople by the Ottomans in 1453."], "Heian Palace": ["The original imperial palace of Heian-ky\u014d (present-day Kyoto), the capital of Japan from 794 to 1227."], "Heian period": ["The last division of classical Japanese history, running from 794 to 1185."], "Tiananmen Square": ["The large plaza near the center of Beijing, China, named after the Tiananmen (literally, Gate of Heavenly Peace) which sits to its north, separating it from the Forbidden City."], "Forbidden City": ["The Chinese imperial palace from the mid-Ming Dynasty to the end of the Qing Dynasty. It is located in the middle of Beijing, China and now houses the Palace Museum. For almost five centuries, it served as the home of the Emperor and his household, and the ceremonial and political centre of Chinese government. (source: Wikipedia)"], "Great Wall of China": ["A series of stone and earthen fortifications in China, built, rebuilt, and maintained between the 5th century BC and the 16th century to protect the northern borders of the Chinese Empire during the rule of successive dynasties."], "Moscow Kremlin": ["A historic fortified complex at the very heart of Moscow, overlooking the Moskva River (to the south), Saint Basil's Cathedral and Red Square (to the east) and the Alexander Garden (to the west). (source: Wikipedia)"], "apocryphal": ["Being of questionable authenticity."], "apodictic": ["Incontestable because of having been demonstrated or proved to be demonstrable."], "apologetic": ["Containing an apology or excuse for a fault, failure, insult, injury, etc."], "elevator pitch": ["An overview of an idea that be delivered in the time span of an elevator ride or roughly thirty seconds or 100-150 words."], "Krio": ["The national language of Sierra Leone."], "apologize": ["To offer an apology or excuse for some fault, insult, failure, or injury."], "Freetown": ["The capital of Sierra Leone"], "Sierra Leonean leone": ["The currency of Sierra Leone."], "apology": ["An expression of regret at having caused trouble for someone.", "A formal justification, defence."], "anticlockwise": ["In the opposite direction of how the hands of an analogue clock move."], "apoplexy": ["A blockage or hemorrhage of a blood vessel leading to the brain, causing inadequate oxygen supply and, depending on the extent and location of the abnormality, such symptoms as weakness, paralysis of parts of the body, speech difficulties, and, if severe, loss of consciousness or death."], "Kohoroxitari": ["A Yanomam language spoken in Venezuela and Brazil."], "Kodi": ["A language of Indonesia (Nusa Tenggara)."], "Cogui": ["A language of Colombia."], "Koyo": ["A language of Congo."], "Komi-Permyak": ["An Uralic language spoken in Perm Krai of Russia."], "Konjo": ["A language of Uganda and the Democratic Republic of the Congo"], "Kwato": ["A language of Papua New Guinea."], "Kosraean": ["A language of Micronesia."], "Palikir": ["The capital of Micronesia."], "sanctimonious": ["Making a show of being morally better than others."], "expatiate": ["To write or speak at length; to be copious in argument or discussion."], "Pitjantjatjara": ["A language of Australia."], "elicit": ["To obtain information from someone or something."], "apostrophe": ["A mark (') which is used to show that a letter or letters has/have been omitted from a word."], "apotheosis": ["The elevation or exaltation of a person to the rank of a god."], "appal": ["Strike with disgust or revulsion."], "appalling": ["Causing dismay or horror."], "Koke": ["A language of Chad."], "Kudu-Camo": ["A language of Nigeria."], "Kugama": ["A language of Nigeria."], "Coxima": ["An extinct language of Colombia."], "Korak": ["A language of Papua New Guinea."], "l\u00e1ngos": ["A Hungarian speciality, a deep fried flat bread made of potato-based dough, served with toppings of for example sour cream, cheese, powdered sugar etc."], "Comorian": ["Bantu language of the Niger-Congo language family spoken in the Comoros archipelago, as well as the islands of Madagascar and Mayotte", "A person who originated from or is a citizen of the Comoros."], "Moroni": ["The capital of the Comoros."], "Comorian franc": ["The currency of the Comoros."], "appease": ["To bring to a state of peace, quiet, ease, calm, or contentment."], "Malagasy": ["A person from Madagascar or of that ancestry.", "An Austronesian language, national language of Madagascar and also spoken in the Comoros and Mayotte."], "extant": ["Still in existence or alive."], "append": ["To state in addition; to say further.", "To add to the very end, as a supplement, accessory, or appendix."], "appendage": ["A subordinate part attached to something."], "sleepwalking": ["A category of sleep disorders where the sufferer engages in activities that are normally associated with wakefulness while he or she is asleep or in a sleeplike state."], "somnambulism": ["A category of sleep disorders where the sufferer engages in activities that are normally associated with wakefulness while he or she is asleep or in a sleeplike state."], "appendicitis": ["The inflammation of the appendix in the body which usually causes pain and often requires the removal of the appendix by surgery."], "apperception": ["Conscious perception."], "appertain": ["Be a part or attribute of ..."], "appetite": ["A desire for food."], "Curripaco": ["A language of Colombia, Brazil and Venezuela"], "Koba": ["A language of Indonesia (Maluku)."], "Komba": ["A language of Papua New Guinea."], "Kapingamarangi": ["A language of Micronesia."], "Kplang": ["A language of Ghana."], "Kofei": ["A language of Indonesia (Papua)."], "Karaj\u00e1": ["A language of Brazil."], "Kpan": ["A language of Nigeria."], "Tongan": ["A language of Tonga."], "Nuku\u02bbalofa": ["The capital of Tonga."], "pa\u02bbanga": ["The currency of Tonga."], "appetizer": ["A small portion of a food or drink served before or at the beginning of a meal to stimulate the desire to eat."], "appetizing": ["Which increases the appetite."], "Kepkiriw\u00e1t": ["An extinct language of Brazil."], "applaud": ["To praise or show approval, by clapping the hands.", "To strike the palms of the hands together, creating a sharp sound.", "To express approval of."], "GRP": ["Plastic strengthened by fibres of glass and used for making structures such as the outsides of cars and boats"], "glass-reinforced plastic": ["Plastic strengthened by fibres of glass and used for making structures such as the outsides of cars and boats"], "applause": ["Praise or approval, expressed by clapping the hands."], "Mednovskiy": ["A language of the USA."], "Erzya": ["A language of Russia spoken by about 500,000 people in the northern and eastern and north-western parts of the Republic of Mordovia and adjacent regions of Nizhniy Novgorod, Chuvashia, Penza, Samara, Saratov, Orenburg, Ulyanovsk, Tatarstan and Bashkortostan."], "applesauce": ["Puree of stewed apples usually sweetened and spiced."], "reindeer": ["An Arctic and Subarctic-dwelling deer (Rangifer tarandus), of which a number of subspecies exist."], "Kwanyama": ["A language of Angola and Namibia."], "Ndonga": ["A Bantu language spoken in Namibia and parts of Angola."], "Marshallese": ["A language of Marshall Islands.", "A person who originated from or is a citizen of the Marshall Islands."], "Ebon": ["A language of Marshall Islands."], "Majuro": ["The capital of the Marshall Islands."], "appliance": ["An instrument or tool used for a particular job."], "applicability": ["The quality of being applicable or capable of being applied."], "applicable": ["That can be applied."], "Narom": ["A language of Malaysia (Sarawak)."], "Pangasinan": ["A language of Philippines."], "Pitcairn-Norfolk": ["A language of Norfolk Island, Australia, New Zealand and Pitcairn."], "applicant": ["A person who applies."], "Paku Karen": ["A language of Myanmar."], "Korupun-Sela": ["A language of Indonesia (Papua)."], "Korafe": ["A language of Papua New Guinea."], "Tehit": ["A language of Indonesia (Papua)."], "Kafoa": ["A language of Indonesia (Nusa Tenggara)."], "Komi-Zyrian": ["A language of Russia (Europe)."], "Mountain Koiali": ["A language of Papua New Guinea."], "Kiritimati": ["A Pacific Ocean atoll in the northern Line Islands and part of the Republic of Kiribati."], "apposition": ["A grammatical relation between a word and a noun phrase that follows."], "Rundi": ["A language of Burundi and Uganda."], "horse-sleigh": ["A sledge pulled by one or more animals like horses or reindeer."], "Tsonga": ["A language of South Africa, Mozambique, Swaziland and Zimbabwe."], "appraise": ["To estimate the monetary value of.", "To place a value on."], "appraiser": ["One who estimates officially the worth or value or quality of things."], "appreciable": ["Enough to be estimated or measured."], "marriageable": ["Old enough to marry."], "nubile": ["Old enough to marry."], "jejunal": ["Pertaining to the jejunum."], "jejunum": ["One of the three divisions of the small intestine, lying between the duodenum and the ileum."], "appreciative": ["Feeling or showing appreciation.", "Feeling or expressing gratitude."], "Tahitian": ["A language of French Polynesia"], "Papeete": ["The capital of \\tFrench Polynesia."], "CFP franc": ["The currency used in the French overseas possessions of French Polynesia, New Caledonia and Wallis and Futuna."], "apprentice": ["A person who works for another in order to learn a trade."], "apron": ["A piece of cloth, plastic, worn over the front of the clothes for protection against dirt."], "aquarium": ["A tank with transparent sides for keeping fish and other water animals.", "A public building where live fish and other aquatic animals are exhibited."], "archangel": ["An angel ranked above the highest rank in the celestial hierarchy."], "archaeological": ["Of or pertaining to archaeology."], "archaism": ["Something archaic, as a word or expression."], "archbishop": ["A bishop of the highest rank who presides over an archdiocese."], "Tasmanian Devil": ["Largest surviving carnivorous marsupial with usually black fur, squat and thick build and a body length of about 0.6m, native to Tasmania; scientific name: Sarcophilus harrisii"], "archduke": ["A rank above Duke and under King."], "marquis": ["A nobleman of hereditary rank in various European monarchies and some of their colonies."], "archery": ["The art or sport of shooting with a bow."], "archetype": ["The original pattern or model from which all things of the same kind are copied or on which they are based."], "archiepiscopal": ["Of or associated with an archbishop."], "archivist": ["A person in charge of collecting and cataloguing archives."], "Portuguese (Brazil)": ["Portuguese as it is spoken in Brazil"], "Portuguese (Portugal)": ["Portuguese as spoken in Portugal"], "ardent": ["Characterized by intense emotion."], "ardour": ["A feeling of strong eagerness, usually in favor of a person or cause.", "A feeling of strong eagerness."], "arguable": ["Subject, or open, to argument or discussion."], "baron": ["A member of the lowest grade of nobility."], "Arabic numeral": ["The symbolic representation of numbers using the characters 0123456789."], "Roman numeral": ["The symbolic representation of numbers using the characters IVXLCDM"], "viscount": ["A nobleman ranking below an count and above a baron."], "zester": ["A kitchen implement used to remove the zest of citrus fruit."], "megawatt": ["A unit of power, equal to one million watts. Abbreviation MW."], "viviparous eelpout": ["A predatory fish (Zoarces viviparus) whose young, which look like young eels, are born alive."], "gigawatt": ["A unit of power, equal to one milliard watts. Abbreviation GW."], "aristocracy": ["A class of persons holding exceptional rank and privileges, esp. the hereditary nobility.", "The most powerful members of a society."], "arid": ["Barren or unproductive because of lack of moisture."], "aridity": ["Being without moisture.", "The state of being dry, the lack of water or liquid."], "salsify": ["(Tragopogon) Genus of plants of the aster family with edible roots"], "black salsify": ["A plant native to southern Europe and the Near East with edible roots."], "scorzonera": ["A plant native to southern Europe and the Near East with edible roots."], "goatsbeard": ["(Tragopogon) Genus of plants of the aster family with edible roots"], "Dhivehi": ["An Indo-Aryan language spoken in the Republic of Maldives and also in the island of Maliku (Minicoy) in Union territory of Lakshadweep, India."], "Kirundi": ["A language of Burundi and Uganda."], "Fulah": ["A macro language consisting of nine languages"], "Kur\u00f3w": ["A village in South-Eastern Poland, located between Pu\u0142awy and Lublin, on the Kur\u00f3wka River."], "armadillo": ["(family Dasypodidae) Burrowing chiefly nocturnal mammal with body covered with strong horny plates."], "light pollution": ["The brightening of the night (especially of the night sky) by light sources created by humans."], "photopollution": ["The brightening of the night (especially of the night sky) by light sources created by humans."], "luminous pollution": ["The brightening of the night (especially of the night sky) by light sources created by humans."], "Mycenaean Greek": ["The most ancient attested form of the Greek language, spoken on the Greek mainland and on Crete in the 16th to 11th centuries BC."], "armhole": ["An opening in a garment for an arm."], "Mycenaean": ["The most ancient attested form of the Greek language, spoken on the Greek mainland and on Crete in the 16th to 11th centuries BC."], "armoured": ["Protected by armour."], "armourer": ["Someone who makes, sells and repairs arms."], "armpit": ["The hollow under the upper part of the arm at the shoulder."], "armoury": ["The place where weapons are made or kept."], "arms race": ["Competition between countries to achieve superiority in quantity and quality of military arms."], "arraign": ["To bring before a court to answer to an indictment."], "lark": ["Passerine bird of the family Alaudidae."], "arrowhead": ["The tip of an arrow, shaped to a point."], "Mum": ["A language of Papua New Guinea."], "Kovai": ["A language of Papua New Guinea."], "Doromu": ["A language of Papua New Guinea."], "arson": ["The crime of setting fire to a building or a property on purpose."], "tremendous": ["Extremely large."], "arsonist": ["A criminal who commits arson."], "Koy Sanjaq Surat": ["A modern Eastern Aramaic language spoken in Iraq."], "Kalagan": ["A language of the Philippines."], "Kakabai": ["A language of Papua New Guinea."], "apotheosic": ["Pertaining o related to the apotheosis."], "roller coaster": ["An amusement ride consisting of a buggy on a track that rises and falls and twists and turns."], "artful": ["Marked by skill in achieving a desidered goal, usually in a bad sense."], "arthritis": ["Pain and swelling in the joints of the body."], "artichoke": ["A tall, thistlelike composite plant, ''Cynara scolymus'', native to the Mediterranean region, of which the numerous scalelike bracts and receptacle of the immature flower head are eaten as a vegetable."], "artifice": ["A clever trick or stratagem.", "A deceptive maneuver (especially to avoid capture)."], "artificer": ["Someone who carries out work that requires a certain speciality or skill."], "artistry": ["Artistic skill."], "arum": ["Any plant of the family Araceae; have small flowers massed on a spadix surrounded by a large spathe."], "ascendancy": ["The state that exists when one person or group has power over another."], "ascent": ["The act of climbing or going up.", "A slope upwards."], "Sepedi": ["A language of South Africa."], "Sikule": ["A language of Indonesia (Sumatra)."], "ascertain": ["To learn or discover with certainty.", "To establish after a calculation, investigation, experiment, survey, or study."], "run over": ["To drive over someone with a motor vehicle and injure or kill the person."], "ascertainable": ["Capable of being ascertained or found out."], "G\u1ebd": ["A Gbe language spoken in the southeast of Togo in the Maritime Region, and in the Mono Department of Benin."], "Gen-Gbe": ["A Gbe language spoken in the southeast of Togo in the Maritime Region, and in the Mono Department of Benin."], "industrialized": ["Having highly developed industries."], "Chirip\u00e1": ["A language of Paraguay, Argentina and Brazil."], "denouement": ["The conclusion or resolution of the plot in a play, film, or the like."], "d\u00e9nouement": ["The conclusion or resolution of the plot in a play, film, or the like."], "ascetic": ["A person who dedicates his or her life to a pursuit of contemplative ideals and practices extreme self-denial or self-mortification for religious reasons."], "asexual": ["Having no sex or sexual organs."], "Zimbabwe Sign Language": ["A sign language used in Zimbabwe."], "Yugoslavian Sign Language": ["A language of Serbia and Montenegro."], "Yiddish Sign Language": ["A sign language used in Israel."], "Venezuelan Sign Language": ["A language of Venezuela."], "Uruguayan Sign Language": ["A sign language used in Uruguay."], "Urub\u00fa-Kaapor Sign Language": ["A sign language used by a small community of Indigenous Brazilians in the state of Maranh\u00e3o."], "Ugandan Sign Language": ["A language of Uganda."], "Turkish Sign Language": ["A language of Turkey."], "Tunisian Sign Language": ["A language of Tunisia."], "ashamed": ["Feeling shame or guilt."], "Australian dollar": ["The currency of Australia"], "ashen": ["Pale in color.", "Extremely pale.", "Consisting of or made of ash wood."], "chemical symbol": ["Internationally standardized abbreviation of the name of a chemical element"], "Sebat Bet Gurage": ["A language of Ethiopia."], "ashore": ["On or on to the shore."], "Tanzanian Sign Language": ["A language of Tanzania."], "Taiwan Sign Language": ["A language of Taiwan."], "Swiss-Italian Sign Language": ["A sign language used in Switzerland."], "Swiss-German Sign Language": ["A sign language used in Switzerland."], "Swiss-French Sign Language": ["A sign language used in Switzerland."], "Sri Lankan Sign Language": ["A language of Sri Lanka."], "Spanish Sign Language": ["A language of Spain."], "ashtray": ["A receptacle for tobacco ashes and cigarette and cigar butts."], "Slovakian Sign Language": ["A language of Slovakia."], "Singapore Sign Language": ["A language of Singapore."], "Sierra Leone Sign Language": ["A language of Sierra Leone."], "Saudi Arabian Sign Language": ["A language of Saudi Arabia."], "Romanian Sign Language": ["A language of Romania."], "Rennellese Sign Language": ["A language of the Solomon Islands."], "asleep": ["In a sleeping state."], "asp": ["Any of several venomous snakes of Africa, Asia, and Europe."], "asparagus": ["The tender young shoot of a Eurasian plant (Asparagus officinalis), eaten as a vegetable."], "engagement ring": ["Ring which a man gives to his fianc\u00e9e on the occasion of an engagement, sometimes also the woman gives one."], "almond-shaped": ["Having the shape of an almond."], "amygdaloid": ["Having the shape of an almond."], "amygdala": ["Almond-shaped group of neurons in the medial temporal lobes of the brain which plays a central role in the processing and memory of emotions, especially fear."], "optative": ["A grammatical mood that indicates a wish or hope."], "hunter-gatherer": ["Someone who lives off wild plants and animals and does not keep livestock or cultivate land."], "prisoner of war": ["A combatant who is imprisoned by an enemy power during or immediately after an armed conflict."], "POW": ["A combatant who is imprisoned by an enemy power during or immediately after an armed conflict."], "PoW": ["A combatant who is imprisoned by an enemy power during or immediately after an armed conflict."], "PW": ["A combatant who is imprisoned by an enemy power during or immediately after an armed conflict."], "asperse": ["To attack falsely or with malicious intent the good name and reputation of someone."], "Assam": ["A state in north east India."], "asphalt": ["A mixture containing tar, used to make roads, pavements etc.", "To cover with tar or asphalt."], "allotropy": ["A property, exhibited by some elements of existing in multiple forms with different atomic structures."], "asphyxiate": ["To cause to die or lose consciousness by impairing normal breathing."], "allotrope": ["A form of an element that has a distinctly different molecular structure to another form of the same element."], "graphite": ["An allotrope of carbon consisting of planes of carbon atoms arranged in hexagonal arrays with the planes stacked loosely."], "dopant": ["An impurity element added to a crystal or semiconductor lattice in low concentrations in order to alter the optical/electrical properties of a semiconductor."], "aneutronic fusion": ["Any form of fusion power where no more than 1% of the total energy released is carried by neutrons."], "aspiration": ["A will to succeed.", "The act of taking ambient air into the lungs."], "anisotropy": ["Direction dependence of a physical property."], "Thomson scattering": ["The scattering of electromagnetic radiation by a charged particle."], "baby boom": ["Any period of greatly increased birth rate, and usually within certain geographical bounds."], "is an allotrope of": ["Indicates that a substance is an allotrope of an element"], "palette": ["The collection of colors or shades available to a graphic system or program.", "A surface on which a painter mixes colour pigments."], "magenta": ["Purplish red color evoked by lights with less power in yellowish-green wavelengths than in blue and red wavelengths (complements of magenta have wavelength 500\u2013530 nm).", "Of deep purplish red."], "Bezier curve": ["A cubic polynomial curve defined by the end points and two control points which indirectly determine the tangent vectors at the end points."], "fullerene": ["One of a family of carbon allotropes sometimes called buckyballs, when in a spherical configuration."], "assailant": ["A person who attacks."], "assassin": ["A murderer, who kills by a surprise attack and often is hired to do the deed."], "mobilize": ["activate or cause to move.", "To make something mobile."], "isotropy": ["Direction independence of a physical property."], "bremsstrahlung": ["The electromagnetic radiation produced by the acceleration of a charged particle, such as an electron, when it is deflected by another charged particle, such as an atomic nucleus."], "triangulation": ["A method of determining distance based on the principles of geometry.", "The combination of methodologies in the study of the same phenomenon or construct; a method of establishing the accuracy of information by comparing three or more types of independent points of view on data sources."], "claw": ["A curved pointed appendage, found at the end of a toe or finger or, in arthropods, of the tarsus."], "assent": ["Agreement with a statement or proposal to do something.", "To agree or concur.", "To be in accord."], "Yellow": ["The second-longest river in China, after the Yangtze River with 5,464 kilometers (3,398 mi). Originating in the Bayankala Mountains in Qinghai Province in western China, it flows through nine provinces of China and empties into the Bohai Sea."], "Huang He": ["The second-longest river in China, after the Yangtze River with 5,464 kilometers (3,398 mi). Originating in the Bayankala Mountains in Qinghai Province in western China, it flows through nine provinces of China and empties into the Bohai Sea."], "assert": ["To say definitely and categorically.", "To maintain or defend opinions, claims, rights, etc.", "To declare or affirm solemnly and formally as true."], "assertion": ["A positive statement or declaration, often without support or reason."], "spallation": ["A process in which fragments of material (spall) are ejected from a body due to impact or stress."], "assertive": ["Inclined to assert oneself."], "assessment": ["An official valuation of property for the purpose of levying a tax."], "assessor": ["A person who makes assessments, esp. for purposes of taxation."], "assignable": ["Capable of being specified.", "Capable of being attributed.", "Capable of being assigned."], "assignation": ["The act of distributing by allotting or apportioning.", "An appointment for a meeting between lovers."], "bile soap": ["A soap product made of curd soap and bovine bile."], "assignee": ["A person appointed to act for another."], "assimilate": ["To bring into conformity with the customs, attitudes, etc., of a group, nation, or the like.", "To include so that it no longer has separate existence."], "anti-clockwise movement": ["A movement in the opposite direction to the way the hands of an analogue clock move."], "ballet tutu": ["A short skirt worn by ballet dancers."], "Swan Lake": ["A ballet by Pyotr Ilyich Tchaikovsky which premiered in Moscow in 1877."], "craquelure": ["Fine cracks on paintings which form when a painting is subject to temperature fluctuations."], "Forest of Argonne": ["Wooden highland in north-eastern France."], "assist": ["To give assistance or aid to."], "crwth": ["6-string musical instrument of Welsh or Irish origin and played with a bow."], "Kalmyk-Oirat": ["A Mongolic language spoken by the Kalmyk people of the Republic of Kalmykia, a federal subject of the Russian Federation."], "assort": ["Arrange or order by classes or categories."], "low hanging fruit": ["Easily obtained gains; what can be obtained by readily available means."], "paradigm shift": ["A change in basic assumptions within the ruling theory."], "assorted": ["Of or containing various different kinds."], "asterisk": ["A star-shaped mark (*) used in printing to draw attention to a note, etc."], "Luganda": ["Language of Niger-Congo family, spoken in Uganda."], "astern": ["In a position behind a specified vessel or aircraft.", "In a backward direction."], "Nenets": ["A language of Russia (Asia)."], "asthmatic": ["A person suffering from asthma.", "Pertaining to asthma."], "astute": ["Intelligent, smart and capable of taking advantage of a situation."], "astonish": ["To surprise greatly."], "overuse": ["Use excessively and so rendering banal, for ex. a word."], "Mithilakshar": ["The traditional script of the Maithili language."], "jaws": ["The two opposable structures forming, or near the entrance to, the mouth."], "astonishing": ["Causing wonder, admiration or astonishment.", "Causing astonishment or surprise."], "nuclear spallation": ["Smashing of a atomic nucleus into smaller nuclei and neutrons caused by the impact of high energy particles (or radiation)"], "transuranium element": ["Chemical element with an atomic number greater than 92 (the atomic number of uranium)"], "furball": ["A ball of fur, particularly one coughed up by a cat."], "hairball": ["A ball of fur, particularly one coughed up by a cat."], "astonishment": ["Overpowering wonder or surprise."], "astound": ["To make someone very surprised."], "astounding": ["Bewildering or striking dumb with wonder."], "principle": ["A fundamental assumption."], "bilge": ["The compartment at the bottom of the hull of a ship or boat where water collects so that it may be pumped out of the vessel at a later time."], "acute-angled": ["Of a corner: having an angle of less than 90\u00b0."], "Berezina": ["A ca. 613 km long river in Belarus and a tributary of the Dnieper River."], "Beresina": ["A ca. 613 km long river in Belarus and a tributary of the Dnieper River."], "kurchatovium": ["The name proposed by the Russians in honour of Igor Vasilevich Kurchatov for the chemical element that became in the end rutherfordium. (atomic number: 104)"], "astral": ["Being or relating to or resembling or emanating from stars."], "aristocratic": ["Belonging to or characteristic of the nobility or aristocracy."], "aristocratical": ["Belonging to or characteristic of the nobility or aristocracy."], "aristocratically": ["In an aristocratic manner."], "Aristolochia": ["A large plant genus with over 500 species, of the family Aristolochiaceae."], "arithmetically": ["With respect to arithmetic."], "astride": ["With one leg on each side.", "With the legs stretched far apart."], "astrological": ["Relating to or concerned with astrology."], "astrology": ["The study of the stars and their influence on people's lives."], "astonished": ["Filled with the emotional impact of overwhelming surprise or shock."], "astonishingly": ["In an amazing manner; to everyone's surprise."], "additionally": ["By way of addition; in addition to; also."], "highly": ["In a high or esteemed manner."], "academical": ["Belonging to an academy.", "Belonging to a higher institution of learning; scholarly."], "academically": ["In an academic manner."], "academic costume": ["A costume worn on formal occasions by the faculty or students of a university or college."], "academic degree": ["An award conferred by a college, university, or other postsecondary education institution as official recognition for the successful completion of a program of studies. (source: UMLS)"], "academic year": ["The period of time each year when the school is open and people are studying."], "academic department": ["A division of a school or university that is responsible for a given subject."], "academic advisor": ["A faculty or professional staff member trained to help students select courses and plan programs of study for degree or program completion."], "academic freedom": ["The belief that the freedom of inquiry by students and faculty members is essential to the mission of the academy."], "astronomical": ["Of, pertaining to, or connected with astronomy.", "Extremely large."], "astronomic": ["Of, pertaining to, or connected with astronomy."], "astuteness": ["Intelligence manifested by being astute."], "administrable": ["Capable of being administered or managed."], "administratively": ["From an administrative point of view."], "dispense": ["To give or apply (medications).", "To divide something into portions and dispense it."], "asylum seeker": ["An individual who seeks refuge, esp. political asylum, in a foreign country."], "asymmetric": ["Not identical on both sides of a central line."], "antiquity": ["Ancient times; former ages; times long since past."], "asymmetrical": ["Not identical on both sides of a central line."], "asymmetry": ["The quality or state of being asymmetric."], "symmetry": ["Balance among the parts of something."], "atheistic": ["Relative to atheism or an atheist."], "Colombo": ["The capital city of Sri Lanka."], "atheistical": ["Relative to atheism or an atheist."], "athletic": ["With a strong, well-proportioned body and able to move easily and quickly.", "Vigorously active.", "Relating to or befitting athletics or athletes."], "Atlantic": ["The ocean lying between the Americas to the west and Europe and Africa to the east.", "Relating to or bordering the Atlantic Ocean."], "atmospheric": ["Pertaining to, existing in, or consisting of the atmosphere."], "atmospherical": ["Pertaining to, existing in, or consisting of the atmosphere."], "atomize": ["To reduce to fine particles or spray."], "atomizer": ["An apparatus for reducing liquids to a fine spray, as for medicinal or cosmetic application."], "atrocity": ["An atrocious act, thing, or circumstance.", "An excessively violent or vicious attack."], "weedy scorpionfish": ["(Rhinopias frondosa) A carnivorous ray-finned fish with venomous spines that lives in the Indian and Western Pacific oceans"], "world wide web": ["A graphical, interactive, hypertext information system that is cross-platform and can be run locally or over the global Internet. The Web consists of Web servers offering pages of information to Web browsers who view and interact with the pages. Pages can contain formatted text, background colors, graphics, as well as audio and video clips."], "attachable": ["Capable of being fastened or added to something else."], "attach\u00e9 case": ["A flat, usually rigid, rectangular briefcase for carrying business papers, documents, or the like."], "attached": ["Fond and affectionate."], "bedside lamp": ["Lamp on a bedside table near the bed."], "self-inductance": ["Property of an electric circuit: The ratio of the magnetic flux to the current that causes it."], "Samoan": ["The traditional language of Samoa and American Samoa. It is a member of the Austronesian family, and more specifically the Samoic branch of the Polynesian subphylum.", "Someone who is a citizen of Samoa or who is of Samoan origin."], "Apia": ["The capital city of Samoa."], "myocardium": ["The muscular tissue of the heart."], "attacker": ["A person who attacks."], "attain": ["To bring to a succesful end; to gain with effort.", "To arrive at or succeed in reaching or obtaining something (e.g. an objective, a goal)."], "nulliparous": ["Never having given birth to a child."], "nullipara": ["A woman who has never given birth."], "nulligravid": ["Never having been pregnant."], "Quirinal Palace": ["A palace built in 1573 upon the Quirinal Hill in Rome, the official residence of the President of the Italian Republic."], "patchouli oil": ["Essential oil obtained from the leaves of the patchouli plant (Pogostemon cablin or Pogostemon heyneanus)."], "shipowner": ["Someone who owns a ship or a share in a ship."], "attainable": ["Capable of being attained or accomplished."], "arrowsmith": ["A maker of arrows."], "attend": ["To care for medicinally or surgically; to apply medical care to.", "To go to or be present at (e.g. meetings, church services, university, etc.).", "To listen or give attention to.", "To be in charge of or deal with.", "To be a servant for, to work for, to be employed by."], "betray": ["To give away information about somebody.", "To cause someone to believe an untruth; to practice trickery or fraud.", "To be sexually unfaithful to one's spouse or lover."], "denounce": ["To give away information about somebody.", "To report (publicly or not) a dishonest, immoral or illegitimate person or entity."], "deceive": ["To cause someone to believe an untruth; to practice trickery or fraud."], "symmetric": ["With equal distribution about one or more axes."], "symmetrical": ["With equal distribution about one or more axes."], "symmetrically": ["In a symmetrical manner."], "anthropological": ["Of or concerned with the science of anthropology."], "swelling": ["Abnormal protuberance or localized enlargement."], "drown": ["To be suffocated in water or other fluid; to perish by suffocation in water.", "To kill by immersion in water or other liquid."], "eagle": ["Any of several large carnivorous birds in the family Accipitridae, having a powerful hooked bill and keen vision."], "sharpness": ["A quick and penetrating intelligence."], "agronomic": ["Of or pertaining to agronomy."], "agronomical": ["Of or pertaining to agronomy."], "agronomist": ["A scientist whose speciality is agronomy."], "aggressively": ["In an aggressive manner."], "sour": ["Having an acid, sharp or tangy taste.", "To make or become sour or disenchanted.", "Moody and melancholic."], "turn sour": ["To go sour or spoil."], "bittersweet": ["Both bitter and sweet.", "Expressing contrasting emotions of pain and pleasure."], "absolute": ["Loosed from any limitation or condition.", "Viewed apart from modifying influences or without comparison with other objects.", "Complete in itself."], "attendance": ["The act of attending.", "The persons or number of persons present."], "absorbed": ["Taken in through the pores of a surface.", "Fully occupied with one's thoughts.", "Taken in by a body without reflection."], "attendant": ["Following as a consequence.", "A person employed to look after someone or something."], "Sorani": ["A language of Iraq and Iran."], "prepare": ["To make ready for a specific future purpose.", "To make oneself ready.", "To make ready for eating or drinking.", "To produce or make by combining elements.", "To arrange by systematic planning and united effort (e.g. a plot, a strike, a plan).", "To teach by training.", "To undergo training or instruction for a particular role, function, or profession.", "To educate for a future role or function."], "conditioner": ["Anything that improves the condition of something.", "Someone who trains athletes.", "A substance used in washing (clothing or hair) to make things softer.", "A hair care product that improves the texture and appearance of human hair, usually applied after washing."], "attentive": ["Giving attention."], "attenuate": ["To weaken or reduce in force, intensity, effect, quantity."], "attic": ["A room at the top of a house under the roof."], "attire": ["To dress, array, or adorn, esp. for special occasions, ceremonials, etc.", "Clothing of a distinctive style or for a particular occasion."], "agent": ["An active power or cause.", "A representative who acts on behalf of other persons or organizations."], "art gallery": ["A room or series of rooms where works of art are exhibited.", "An institution, building, or room for the exhibition and conservation of works of art."], "arteriosclerosis": ["Hardening, narrowing or loss of elasticity in arteries or blood vessels."], "arthritic": ["Of, or affected by arthritis."], "ruse": ["A deceptive maneuver (especially to avoid capture)."], "gadget": ["A clever device designed for a specific practical use.", "A complicated or awkward device."], "osteoarthritis": ["Chronic breakdown of cartilage in the joints; the most common form of arthritis occurring usually after middle age."], "degenerative arthritis": ["Chronic breakdown of cartilage in the joints; the most common form of arthritis occurring usually after middle age."], "arthrosis": ["Chronic breakdown of cartilage in the joints; the most common form of arthritis occurring usually after middle age."], "stratagem": ["An elaborate or deceitful scheme contrived to deceive or evade.", "A maneuver in a game or conversation."], "subterfuge": ["An indirect or deceptive device or stratagem."], "arable": ["Suitable for cultivation, such as by ploughing."], "arbitrager": ["One who participates in arbitrage."], "arbitrariness": ["State of being arbitrary."], "arbitrate": ["To make a judgment (on a dispute) as an arbitrator or arbiter."], "arbitrator": ["A person to whom the authority to settle or judge a dispute is delegated."], "arboreal": ["Relating to, or resembling a tree.", "Living on or in trees."], "arcane": ["Understood by only a few; obscure; requiring secret or mysterious knowledge."], "triumphal arch": ["Monumental arch that commemorates a victory."], "archetypal": ["Of or pertaining to an archetype."], "arctic": ["Being extremely cold, snowy, or having other properties of extreme winter associated with the Arctic."], "arduously": ["In an arduous manner."], "Argentinian": ["A person from Argentina or of Argentinian descent."], "arguably": ["That is a plausible proposition; defensible because of solid reasons."], "argumentative": ["Prone to argue or dispute."], "arise": ["To get up.", "To start to exist."], "arranger": ["Person who arranges."], "arrogantly": ["In an arrogant manner."], "articulate": ["To pronounce (individual sounds or words) correctly and with good or true diction.", "Clear, effective.", "To make clear or effective.", "Able to bend or hinge at certain points or intervals.", "To bend or hinge something at intervals.", "To speak clearly."], "articulately": ["In an articulate manner."], "artless": ["Having or displaying no guile, cunning, or deceit."], "lattice steel pylon": ["Pylon, consisting of a steel famework, that supports high voltage power lines"], "indigo": ["A blue dye obtained from certain plants (the indigo plant or woad), or a similar synthetic dye.", "A color, between blue and violet, having an electromagnetic spectrum between about 420 and 450 nm in wavelength.", "Having indigo as a color."], "sponsor": ["To donate money to."], "put aside": ["To save money.", "To ignore or intentionally forget something, temporarily or permanently, so that more important things can have one's attention.", "Euphemism for \"ignore\", that is, postpone until the hell freezes over."], "unlikely": ["Not likely to happen; not to be reasonably expected.", "In an improbable manner."], "isolated": ["Distant or otherwise inaccessible."], "look away": ["To look to another place."], "aside": ["To one side so as to be out of the way."], "passionate": ["Characterized by intense emotion.", "(For a person) Given to strong feeling."], "ap\u00e9ritif": ["An alcoholic drink served before a meal as an appetiser."], "Meitei": ["A language of India, Bangladesh and Myanmar."], "Manupuri": ["A language of India, Bangladesh and Myanmar."], "clap": ["To praise or show approval, by clapping the hands.", "To strike the palms of the hands together, creating a sharp sound."], "postponement": ["A delay, as a formal delay in a proceeding.", "Act of putting off to a future time."], "application program": ["Software that has the scope to solve a specific problem."], "representative": ["One who may speak for another in a particular capacity, especially in negotation.", "Capturing the overall sense of a thing; representing something by a form, model, or resemblance.", "An item of information that is representative of a type or class."], "German (Switzerland)": ["The German language as spoken in Switzerland."], "German (Austria)": ["German as spoken in Austria."], "French (Switzerland)": ["French as spoken in Switzerland."], "French (France)": ["French as spoken in France."], "French (Canada)": ["French as spoken in Canada."], "noticeable": ["Capable of being seen or noticed."], "esteem": ["To account; to esteem; to think; to judge; to hold in opinion; to regard. (Source Webster 1913)", "Favourable regard.", "Regard with respect or admiration."], "lean": ["(Of a person or animal) Narrow in size, and usually indicating carrying little fat."], "learning": ["The cognitive process of acquiring skill or knowledge.", "Profound scholarly knowledge."], "apprehension": ["Anticipation, mostly of things unfavorable."], "Nagold": ["City in Baden-W\u00fcrttemberg, Germany, 50km to the south of Pforzheim.", "92 km long river in Baden-W\u00fcrttemberg, Germany, which has its source in the Northern Black Forest and flows into the Enz in Pforzheim."], "atypical": ["Deviating from the normal or common order, form, or rule."], "Linear A": ["A script used in ancient Crete from the 17th until the 15th century BCE which has only been partially deciphered."], "Linear B": ["A syllabary that was used for writing Mycenaean from the 15th until the 12th century BCE."], "katakana": ["A syllabary used in the Japanese language and one component of the Japanese writing system along with hiragana and kanji."], "kana": ["A general term for the syllabic Japanese scripts hiragana, katakana, as well as the old system known as man'y\u014dgana."], "auburn": ["A moderate reddish brown to brown."], "audacious": ["Fearlessly, often recklessly daring.", "Not being daunted or intimidated.", "Disposed to venture or take risks.", "Unrestrained by convention or propriety."], "audibility": ["Capacity of being heard."], "butchery": ["A place where animals are butchered for food.", "A ruthless killing of a great number of people.", "A shop that is specialized in meat and meat products."], "abattoir": ["A place where animals are butchered for food."], "shambles": ["A place where animals are butchered for food."], "archimandrite": ["The head of a monastery of monks."], "venter": ["The lower part of the front of the torso (or a comparable part of an animal), confined by the upper side by the midriff and the lowerside by the pelvis. Contains the intestines."], "fearsome": ["Dreadful; causing alarm and fear."], "frightening": ["Dreadful; causing alarm and fear."], "horrendous": ["Dreadful; causing alarm and fear."], "horrific": ["Dreadful; causing alarm and fear."], "direful": ["Dreadful; causing alarm and fear."], "aweary": ["In need of some rest or sleep, usually as a result of hard work or physical activity."], "weary": ["In need of some rest or sleep, usually as a result of hard work or physical activity.", "To become tired through overuse or great strain or stress.", "To make tired."], "precipitous": ["Happening quickly and with little or no warning."], "absinthe": ["An extract of absinthium and other bitter herbs, containing 60% alcohol."], "absinth": ["An extract of absinthium and other bitter herbs, containing 60% alcohol."], "ridiculous": ["Deserving of ridicule; foolish; absurd."], "speedup": ["The amount by which a speed or velocity increases."], "atom smasher": ["A device that uses electric fields to propel electrically charged particles to high speeds."], "apse": ["A semicircular projection from a building, especially the rounded east-end of a church that contains the altar."], "abundant": ["Abundant, fully sufficient or more than adequate in supply for the purpose or needs.", "Present in great quantity."], "acetylene": ["Any organic compound having one or more carbon-carbon triple bond; an alkyne."], "nitric acid": ["A toxic, corrosive, colorless liquid used to make fertilizers, dyes, explosives, and other chemicals."], "audible": ["Being able to be heard."], "fir": ["An evergreen coniferous tree of the genus Abies."], "grannie": ["The mother of one of someone's parents."], "couple": ["To bring two objects, ideas, or people together.", "Two persons considered as joined together, as a married or engaged pair, lovers, or dance partners."], "chord": ["A combination of three or more notes that blend harmoniously when sounded together."], "acropolis": ["The raised fortified area of an ancient Greek city."], "Adelaide": ["The fifth-largest city in Australia, with a population of over 1.1 million in 2006, and the capital and most populous city of the state of South Australia."], "Ceres": ["Dwarf planet in the asteroid belt"], "auditorium": ["The part of a theatre etc. where the audience sits."], "salpetre acid": ["A toxic, corrosive, colorless liquid used to make fertilizers, dyes, explosives, and other chemicals."], "Mentawai": ["A language of Indonesia (Sumatra)."], "Modest": ["Male Russian first name."], "Fyodor": ["Male Russian first name."], "gill": ["The breathing organ of fish and other aquatic animals."], "aikido": ["A Japanese martial art developed from jujitsu and making use of holds and throws."], "syrup": ["Any thick liquid that is added to or poured over food as a flavouring and has a high sugar content."], "aloe": ["The resin of the trees Aquilaria agallocha and Aquilaria malaccensis, known for their fragrant odour,", "A plant of the genus Aloe."], "friendship": ["The condition of being friends."], "Latin America": ["Those countries in the Americas and related islands which speak Latin-derived languages, mostly Spanish and Portuguese."], "augment": ["To increase in amount or make bigger in size or number."], "snow cover": ["A mass of snow which covers something, for example the soil"], "snow mantle": ["A mass of snow which covers something, for example the soil"], "gain weight": ["To become fatter, heavier."], "put on weight": ["To become fatter, heavier."], "Sater Frisian": ["Frisian language spoken mainly in the municipality Saterland in Germany"], "American Civil War": ["1861-1865 conflict between the Union (Northern states) and the 11 Southern states that seceded and were organized as the Confederate States of America."], "War between the States": ["1861-1865 conflict between the Union (Northern states) and the 11 Southern states that seceded and were organized as the Confederate States of America."], "decoration": ["Something that beautifies or adorns.", "Something that embellishes.", "An award for winning a championship or commemorating some other event."], "encourage": ["To mentally support; to motivate."], "ASCII": ["A 7-bit character set and character encoding."], "American Standard Code for Information Interchange": ["A 7-bit character set and character encoding."], "anti-Semitism": ["Prejudice, discrimination or hostility directed against Jews."], "antisemitism": ["Prejudice, discrimination or hostility directed against Jews."], "torch": ["A stick with a flame on one end used as a light source."], "circulatory system": ["The parts of a animal body comprising the heart, veins, capillaries and arteries."], "counterpoison": ["A remedy to counteract the effects of poison."], "plough": ["An agricultural device pulled through the ground in order to break it open into furrows for planting.", "To use a plough on to prepare for planting."], "St. Kitts and Nevis": ["A country in the Caribbean."], "aupair": ["A young person from abroad employed by a family to look after the children and help with the housework in return for room, meals, pocket money and an opportunity to learn the language."], "capacitance": ["Measure of the amount of electric charge an object can store at a given electric potential."], "uranium hexafluoride": ["Compound of uranium and flourine used in the uranium enrichment process."], "sandstone": ["A sedimentary rock produced by the consolidation and compaction of sand, cemented with clay etc."], "herring": ["A type of small, oily fish of the genus Clupea, often used as food."], "concord": ["Agreement of opinions.", "To be in accord."], "liberal arts": ["Those areas of learning that require and cultivate general intellectual ability rather than technical skills."], "humanities": ["Those areas of learning that require and cultivate general intellectual ability rather than technical skills."], "creative person": ["A person with creative talent who produces artworks."], "artiodactyl": ["Ungulate mammal from the order Artiodactyla having an even number of toe on each leg."], "artiodactyl mammal": ["Ungulate mammal from the order Artiodactyla having an even number of toe on each leg."], "Arctic": ["A region of the Earth above the Arctic Circle, containing the North Pole."], "Red Admiral": ["(Vanessa atalanta) Widespread butterfly with a wingspan of up to 60mm"], "aural": ["Of or pertaining to the ear.", "Of or pertaining to the sense of hearing.", "Relating to or characterized by an aura."], "aurist": ["A physician specializing in the treatment of ear diseases"], "ear specialist": ["A physician specializing in the treatment of ear diseases"], "auspicious": ["Giving hope of success."], "fragance": ["A pleasant smell."], "aroma": ["A pleasant smell."], "archeology": ["The scientific study of the material remains of the cultures of historical or prehistorical peoples.\\n(Source: MGH)"], "arch\u00e6ology": ["The scientific study of the material remains of the cultures of historical or prehistorical peoples.\\n(Source: MGH)"], "repent": ["To feel pain, sorrow, or regret for what one has done or omitted to do."], "fake": ["To cheat; to swindle; to steal; to rob.", "Not genuine; imitating something superior.", "To make a copy of with the intent to deceive."], "artillery": ["Part of the war material that includes guns, mortars, bombs, etc.", "An army unit that uses big guns."], "artillery unit": ["An army unit that uses big guns."], "calumniate": ["To attack falsely or with malicious intent the good name and reputation of someone."], "denigrate": ["To attack falsely or with malicious intent the good name and reputation of someone."], "assaulter": ["A person who attacks."], "inhalation": ["The act of taking ambient air into the lungs."], "breathing in": ["The act of taking ambient air into the lungs."], "opposer": ["Man who is hostile to, feels hatred towards, opposes the interests of, or intends injury to someone else."], "Bronze Age": ["A period in human cultural development when the most advanced metalworking (at least in systematic and widespread use) consists of techniques for smelting copper and tin from naturally occurring outcroppings of ore, and then alloying those metals in order to cast bronze."], "Iron Age": ["The stage in the development of any people in which tools and weapons whose main ingredient was iron were prominent."], "wrinkle": ["A small furrow, ridge or crease in an otherwise smooth surface."], "crease": ["A line or mark made by folding or doubling any pliable substance; hence, a similar mark, however produced."], "Assyria": ["An ancient region on the Upper Tigris river, with capital city of Assur."], "rough": ["Having a texture that has much friction. Not smooth.", "(of sea) With large waves."], "Khe": ["A language of Burkina Faso."], "Asteraceae": ["The second largest family of flowering plants, after Orchidaceae, in terms of number of species. The family comprises more than 1,600 genera and 23,000 species. (source: wikipedia)"], "sunflower family": ["The second largest family of flowering plants, after Orchidaceae, in terms of number of species. The family comprises more than 1,600 genera and 23,000 species. (source: wikipedia)"], "Compositae": ["The second largest family of flowering plants, after Orchidaceae, in terms of number of species. The family comprises more than 1,600 genera and 23,000 species. (source: wikipedia)"], "daisy family": ["The second largest family of flowering plants, after Orchidaceae, in terms of number of species. The family comprises more than 1,600 genera and 23,000 species. (source: wikipedia)"], "Koitabu": ["A language of Papua New Guinea."], "Koromira": ["A language of Papua New Guinea."], "aster family": ["The second largest family of flowering plants, after Orchidaceae, in terms of number of species. The family comprises more than 1,600 genera and 23,000 species. (source: wikipedia)"], "Kotafon Gbe": ["A language of Benin."], "Kyenele": ["A language of Papua New Guinea."], "Khisa": ["A language of C\u00f4te d'Ivoire and Burkina Faso."], "star divination": ["The study of the stars and their influence on people's lives."], "shrewd": ["Intelligent, smart and capable of taking advantage of a situation."], "godlessness": ["The position that no God or gods exist."], "heed": ["To perceive with the ear (paying attention to what is heard)."], "Atlas Mountains": ["A mountain range in northwest Africa extending about 2,400 km (1,500 miles) through Morocco, Algeria, and Tunisia."], "attractiveness": ["The state of being attractive or engaging."], "attractive": ["Pleasing to the eye or mind.", "Pleasing or appealing to the senses.", "Causing attraction; having the quality of attracting by inherent force."], "gravitational attraction": ["Physics: the force of mutual attraction between all masses in the universe."], "barbarian": ["Living outside of civilized societies.", "A person living an uncivilized life, in an original state viewed from a standpoint of the development of mankind from their infestation til today, having had no education in the narrow sense of modern civilisation's education."], "autism": ["Abnormal self-absorption, first observed in childhood, characterised by lack of response to people and limited ability to communicate."], "autobiography": ["A book about the life of a person written by himself or herself."], "autocrat": ["A cruel and oppressive dictator."], "despot": ["A cruel and oppressive dictator."], "tyrant": ["In ancient Greece, a ruler who had seized power without legal right to it.", "Any person who exercises power in a cruel way.", "A cruel and oppressive dictator."], "Kaonde": ["A language of Zambia and the Democratic Republic of the Congo"], "Eastern Krahn": ["A language of Liberia."], "Kimr\u00e9": ["A language of Chad."], "assassinator": ["A murderer, who kills by a surprise attack and often is hired to do the deed."], "Krenak": ["A language of Brazil."], "gather": ["To collect in one place, usually for a purpose.", "To call or bring together.", "To heap up; to collect or gather (e.g. work, magazines, etc.).", "To conclude or infer from evidence."], "Kimaragang": ["A language of Malaysia (Sabah)."], "Northern Kissi": ["A language of Guinea and Sierra Leone."], "Klias River Kadazan": ["A language of Malaysia (Sabah)."], "technical analysis": ["An effort to forecast prices by analyzing market data, ie historical price trends and averages, volumes, open interest, etc."], "factor analysis": ["A statistical technique reducing large data sets to the smallest number of factors required to explain the pattern of relationships in the data."], "SWOT analysis": ["A planning tool used to take a snapshot of a company or project at a point in time. SWOT is an acronym for Strengths, Weaknesses, Opportunities, and Threats."], "quantitative analysis": ["The determination of the absolute or relative abundance (often expressed as a concentration) of one, several or all particular substance(s) present in a sample. (source: Wikipedia)"], "financial analysis": ["An assessment of the viability, stability and profitability of a business, sub-business or project. (source: Wikipedia)"], "vulnerability analysis": ["The process of identifying how people, properties and structures will be damaged by a disastrous event."], "content analysis": ["A standard methodology in the social sciences for studying the content of communication."], "textual analysis": ["A standard methodology in the social sciences for studying the content of communication."], "requirements analysis": ["An analysis that encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders, such as beneficiaries or users."], "numerical analysis": ["The study of algorithms for the problems of continuous mathematics."], "regression analysis": ["A technique that examines the relation of a dependent variable (response variable) to specified independent variables (explanatory variables)."], "profiling": ["The investigation of a program's behavior using information gathered as the program runs."], "performance analysis": ["The investigation of a program's behavior using information gathered as the program runs."], "analysis of algorithms": ["Determination of the amount of resources (such as time and storage) necessary to execute an algorithm."], "image analysis": ["The extraction of meaningful information from images; mainly from digital images by means of digital image processing techniques."], "aviator": ["A person who flies an aircraft."], "warn": ["To scold or rebuke; to counsel in terms of someone's behavior.", "To make someone aware of impending danger, etc."], "saffron": ["A seasoning made from the stigma of the saffron plant.", "A yellow color that resembles that of saffron.", "Having a yellow color, like that of saffron."], "Miluk": ["An extinct language of the United States."], "Karkin": ["An extinct language of the Unites States."], "Kato": ["An extinct language of the United States."], "authenticity": ["The quality or condition of being authentic, trustworthy, or genuine."], "attributable": ["Capable of being attributed."], "Abraham Lincoln": ["The sixteenth President of the United States, serving from 4 March 1861 until his assassination."], "baseball game": ["A bat-and-ball sport played between two teams usually of nine players each."], "authoritarian": ["Considering obedience to authority more important than personal freedom."], "Lumbee": ["An extinct language of the United States."], "fortune": ["Something positive that happens to someone by chance.", "A large amount of possesions or money.", "An outcome, condition or event that is predetermined by fate [the power that predetermines events].", "A prediction or set of predictions about a person's future provided by a fortune teller.", "A small slip of paper with wise or vaguely prophetic words printed on it, baked into a fortune cookie.", "The amount of money one has; especially, if it is vast."], "Azores": ["A Portuguese archipelago in the Atlantic Ocean, about 1,500 km (950 mi) from Lisbon and about 3,900 km (2,400 mi) from the east coast of North America."], "cod": ["A marine fish of the family Gadidae."], "selbri": ["The capacity of a word in the Lojban language to describe a relationship. The definition of a selbri gives a fixed structure and word-order between the relationship and its arguments."], "Bahama Islands": ["A country in the Caribbean with capital Nassau."], "ballet": ["A classical form of dance accompanied by music."], "basketball game": ["A sport in which two opposing teams of five players strive to throw a ball through a hoop."], "ointment": ["A semisolid preparation intended for external application to the skin or mucous membranes. (source: UMLS)"], "unction": ["A semisolid preparation intended for external application to the skin or mucous membranes. (source: UMLS)"], "unguent": ["A semisolid preparation intended for external application to the skin or mucous membranes. (source: UMLS)"], "balm": ["A semisolid preparation intended for external application to the skin or mucous membranes. (source: UMLS)"], "salve": ["A semisolid preparation intended for external application to the skin or mucous membranes. (source: UMLS)"], "bamboo": ["A group of woody perennial evergreen plants in the true grass family Poaceae, subfamily Bambusoideae, tribe Bambuseae."], "Kaxarar\u00ed": ["A language of Brazil."], "Okolod": ["A language of Indonesia (Kalimantan) and Malaysia."], "tray": ["A shallow platform designed for carrying things."], "banquet": ["A large public meal, complete with main courses and desserts."], "feast": ["A large public meal, complete with main courses and desserts."], "inexpensive": ["Low in price."], "authoritative": ["Having authority, ascendancy or influence."], "rod": ["A photoreceptor cell in the retina of the eye that can function in less intense light than can the other type of photoreceptor, cone cells.", "A straight, round stick, shaft or bar.", "A long thin implement made of metal or wood."], "rod cell": ["A photoreceptor cell in the retina of the eye that can function in less intense light than can the other type of photoreceptor, cone cells."], "cone cell": ["A photoreceptor cell in the retina of the eye which function best in relatively bright light."], "pious": ["Of or pertaining to piety, devout, exhibiting piety.", "Believing in and showing reverence for God or a deity."], "abstraction": ["The act of leaving out of consideration one or more properties of a complex object so as to attend to others."], "cease": ["To have an end, in a temporal, spatial, or quantitative sense; either spatial or metaphorical.", "To put an end to a state or an activity."], "full moon": ["The lunar phase during which the moon is in opposition to the sun, making it completely visible."], "Phobos": ["The larger and closer of Mars' two moons."], "aleurone": ["A protein found in protein granules of maturing seeds and tubers."], "Tigrigna": ["A language of Ethiopia, Eritrea and Israel."], "Tigrinya": ["A language of Ethiopia, Eritrea and Israel."], "cyanobacteria": ["Microorganisms, formerly classified as algae but now regarded as bacteria, including nostoc, which contain a blue pigment in addition to chlorophyll.\\n(Source: CED)"], "algaecide": ["Any substance or chemical applied to kill or control algal growth."], "muriatic acid": ["A solution of hydrogen chloride gas in water."], "authorship": ["The state or fact of being an author."], "anatid": ["Member of the bird familly anatidae."], "autobiographical": ["Relating to or in the style of an autobiography."], "South Asia": ["A geographic region of the Asian continent bordered in the north by the countries of Central Asia and in the south by the Arabian Sea and the Bay of Bengal, extending westward into Iran and eastward into China, including Afghanistan, Pakistan, India, Nepal, Bangladesh, Burma, Bhutan and Sri Lanka."], "Southwest Asia": ["A geographic region of Asia that includes Turkey, Iran and other countries of the Middle East and the Arabian peninsula."], "East Asia": ["A geographic region of the Asian continent bordered by the Pacific Ocean in the east that includes China, Japan, Korea, Macao, Taiwan and Siberia."], "downwards": ["From an higher position to a lower one."], "downward": ["From an higher position to a lower one."], "downwardly": ["From an higher position to a lower one."], "birch tree": ["A tree of the genus Betula, with small leaves and a trunk that is white with darker blotches."], "fir tree": ["An evergreen coniferous tree of the genus Abies."], "opened": ["Not closed, something that has been opened."], "tied": ["Bound or restrained by one or more ropes, cords, strings, or the like."], "electric locomotive": ["Locomotive that is propelled by electric motors"], "chetah": ["A member of the cat family, a poor climber that hunts by speed and stealth."], "connect": ["To establish connection between two or more things."], "link up": ["To establish connection between two or more things."], "mentum": ["The bottom of the face, below the mouth."], "ravine": ["A deep narrow valley or gorge in the earth's surface worn by running water."], "bayonet": ["A pointed instrument of the dagger kind fitted on the muzzle of a musket or rifle, so as to give the soldier increased means of offence and defence."], "net profit": ["Income following the deduction of all expenses, taxes, and the like."], "lucre": ["Income following the deduction of all expenses, taxes, and the like."], "profits": ["Income following the deduction of all expenses, taxes, and the like."], "earnings": ["Income following the deduction of all expenses, taxes, and the like."], "glucinium": ["A corrosion-resistant, toxic silvery-white metallic element that occurs chiefly in beryl and is used mainly in x-ray windows and in the manufacture of alloys. Symbol: Be, atomic number: 4."], "autocracy": ["Government by a single person having unlimited power.", "The rule of a despot."], "Bible": ["The collections of canonical religious writings of Judaism and of Christianity.", "The sacred writings of the Christian religions."], "Christian Bible": ["The sacred writings of the Christian religions."], "Book": ["The sacred writings of the Christian religions."], "Good Book": ["The sacred writings of the Christian religions."], "Holy Scripture": ["The sacred writings of the Christian religions."], "Holy Writ": ["The sacred writings of the Christian religions."], "Scripture": ["The sacred writings of the Christian religions."], "Word of God": ["The sacred writings of the Christian religions."], "Word": ["The sacred writings of the Christian religions."], "bovines": ["Medium-sized to large ungulates, including domestic cattle, Bison, the Water Buffalo, the Yak, and the four-horned and spiral-horned antelopes."], "biography": ["A written account of a person's life and the branch of literature concerned with the lives of people."], "aurochs": ["A bison species, Bison bonasus, and the heaviest land animal in Europe."], "bike": ["A vehicle with two wheels in tandem, pedals connected to the rear wheel by a chain, handlebars for steering, and a saddlelike seat."], "cycle": ["A vehicle with two wheels in tandem, pedals connected to the rear wheel by a chain, handlebars for steering, and a saddlelike seat.", "An interval of space or time in which one set of events or phenomena is completed.", "To ride a bicycle.", "To ride a motorcycle."], "biological science": ["A division of the natural sciences concerned with the study of life and living organisms."], "whiteness": ["The quality or state of being white; white color, or freedom from darkness or obscurity on the surface."], "web log": ["A frequent and chronological publication of comments and thoughts on the web."], "blues": ["A musical form, African-American in origin, generally featuring an eight-bar or twelve-bar structure and using the blues scale."], "blouse": ["An outer garment, usually loose, that is similar to a shirt and reaches from the neck to the waist or below."], "billiard": ["A shot in billiards or snooker in which the cue ball strikes two other balls."], "fire fighter": ["A person who is trained to put out fires."], "fire-eater": ["A person who is trained to put out fires."], "lightbulb": ["A filament surrounded by glass which is screwed into the socket of a lamp and which emits light when supplied with current."], "incandescent lamp": ["A filament surrounded by glass which is screwed into the socket of a lamp and which emits light when supplied with current."], "electric light": ["A filament surrounded by glass which is screwed into the socket of a lamp and which emits light when supplied with current."], "electric-light bulb": ["A filament surrounded by glass which is screwed into the socket of a lamp and which emits light when supplied with current."], "incandescent light bulb": ["A filament surrounded by glass which is screwed into the socket of a lamp and which emits light when supplied with current."], "Kalimantan": ["The third largest island in the world and is located at the centre of Maritime Southeast Asia."], "yak": ["To regurgitate the contents of the stomach.", "A long-haired bovine found throughout the Himalayan region of south Central Asia, the Qinghai-Tibetan Plateau and as far north as Mongolia."], "Republic of Bosnia and Herzegovina": ["A country on the Balkan peninsula of southern Europe whose capital is Sarajevo."], "automate": ["To follow or to utilize the principles of automation."], "automobile": ["A four-wheeled motor vehicle used for land transport."], "buoy": ["A float moored in water to mark a location, warn of danger, or indicate a navigational channel.", "A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "botanic": ["Of or relating to plants or botany."], "wedding ceremony": ["A ceremony celebrating the beginning of a marriage, during which the marrying parties exchanges vows."], "nuptials": ["A ceremony celebrating the beginning of a marriage, during which the marrying parties exchanges vows."], "hymeneals": ["A ceremony celebrating the beginning of a marriage, during which the marrying parties exchanges vows."], "marriage ceremony": ["A ceremony celebrating the beginning of a marriage, during which the marrying parties exchanges vows."], "autopsy": ["Inspection and dissection of a body after death, as for determination of the cause of death.", "To perform an autopsy."], "okapi": ["(Okapia johnstoni) Ungulate of the Ituri Rainforest in central Africa, closely related to the giraffe"], "Adonis": ["A genus of about 20-30 species of flowering plants of the family Ranunculaceae, native to Europe and Asia.", "A figure of West Semitic origin, where he is a central cult figure in various mystery religions, who enters Greek mythology in Hellenistic times.", "A handsome young man."], "methane series": ["Paraffins. A homologous series of saturated hydrocarbons having the general formula CnH2n+2. Their systematic names end in -ane. They are chemically inert, stable, and flammable. The first four members of the series (methane, ethane, propane, butane) are gases at ordinary temperatures; the next eleven are liquids, and form the main constituents of paraffin oil; the higher members are solids. Paraffin waxs consists mainly of higher alkanes.\\n(Source: UVAROV)"], "alkane series": ["Paraffins. A homologous series of saturated hydrocarbons having the general formula CnH2n+2. Their systematic names end in -ane. They are chemically inert, stable, and flammable. The first four members of the series (methane, ethane, propane, butane) are gases at ordinary temperatures; the next eleven are liquids, and form the main constituents of paraffin oil; the higher members are solids. Paraffin waxs consists mainly of higher alkanes.\\n(Source: UVAROV)"], "Alberta": ["One of Canada's prairie provinces located in western Canada."], "stud": ["To adorn or garnish with nails.", "A piece of jewelry consisting of a small ornament mounted on a metal post that is passed through the pierced earlobe.", "A vertical member of wood, steel, etc., forming the frame of a wall and covered with plasterwork, siding, etc."], "luncheon": ["Meal usually eaten at midday."], "edible bean": ["A common name for large edible plant seeds of several genera of ''Fabaceae''."], "avail": ["To be of use or value to."], "unfasten": ["To make undone or untied; to free from any fastening."], "unfastened": ["Not closed, something that has been opened."], "Ibrahim": ["The father of Isaac. (Noun, given name; Christianity; Source: IPDF);"], "steep": ["Of a near-vertical gradient; of a slope, surface, curve, etc. that proceeds upward at an angle near vertical."], "beggar": ["A person who begs.", "To make poor."], "lighter": ["A small, reusable, handheld device for creating fire."], "squeeze box": ["A portable, keyed wind instrument, whose tones are generated by play of the wind from a squeezed bellows upon free metallic reeds.", "A musical instrument, such as the accordion and the concertina, that produces sound by compressing and decompressing a flexible bag."], "piano accordion": ["A portable, keyed wind instrument, whose tones are generated by play of the wind from a squeezed bellows upon free metallic reeds."], "comptroller": ["A person who maintains the financial records of other people."], "controller": ["A person who maintains the financial records of other people.", "A mechanism that controls or regulates the operation of a machine, especially a peripheral device in a computer."], "precise": ["Exactly right."], "rigorous": ["Manifesting, exercising, or favoring rigor."], "ethyne": ["Any organic compound having one or more carbon-carbon triple bond; an alkyne."], "availability": ["The state of being suitable or ready for use"], "available": ["Suitable or ready for use."], "avenge": ["To take vengeance or exact satisfaction for."], "avenger": ["Someone who takes vengeance."], "Snow Leopard": ["(Uncia uncia) A large cat native to the mountain ranges of Central Asia."], "ounce": ["(Uncia uncia) A large cat native to the mountain ranges of Central Asia."], "snow leopard": ["(Uncia uncia) A large cat native to the mountain ranges of Central Asia."], "\u00e5ngstr\u00f6m": ["A internationally recognised unit of length that is equal to 0.1 nanometre (nm)."], "angstrom": ["A internationally recognised unit of length that is equal to 0.1 nanometre (nm)."], "elver": ["The young offspring of the eel."], "young eel": ["The young offspring of the eel."], "anus": ["The lower opening of the digestive tract, through which feces pass."], "deixis": ["A process whereby words or expressions rely absolutely on context."], "common year": ["A calendar year with 365 days."], "oil mill": ["A mill where oil is obtained by grinding and squeezing plants."], "oil plant": ["Plant that is used to make vegetable oil and fats."], "coumarin": ["A toxin found in many plants, notably in high concentration in the tonka bean, woodruff, and bison grass."], "aversion": ["Extreme hatred or detestation; the feeling of utter dislike.", "Natural and unrational aversion for someone or something."], "avert": ["To turn away, especially one's eyes.", "Prevent the occurrence of."], "aviary": ["A large cage or a house or enclosure in which birds are kept."], "folate": ["A salt derived from folic acid."], "folic acid": ["A form of the water-soluble Vitamin B9 which occurs naturally in food and can also be taken as supplements."], "avid": ["Having an ardent desire or unbounded craving.", "Marked by active interest and enthusiasm."], "excise tax": ["A tax charged on goods produced within the country."], "avidity": ["Ardent desire or craving.", "A positive feeling of wanting to push ahead with something."], "avionics": ["The science and technology of the development and use of electrical and electronic devices in aviation."], "copyright": ["The right by law to be the entity which determines who may publish, copy and distribute a piece of writing, music, picture or other work of authorship."], "de facto standard": ["A standard that has come into use by general acceptance, custom or convention but have no formal recognition."], "backward compatibility": ["Compatible with earlier models or versions of the same product. A new version of a program is said to be backward compatible if it can use files and data created with an older version of the same program. (source: IEEE)"], "compliance": ["Acting according to certain accepted standards."], "conformation": ["Acting according to certain accepted standards."], "abidance": ["Acting according to certain accepted standards."], "non-conformity": ["The non-fulfillment of a specified requirement."], "stakeholder": ["Any organisation or individual that has a direct interest in actions or decisions."], "Himbeergeist": ["A clear, mild eau-de-vie (brandy) made from double distillation of the fermented juice of rasberries."], "sandbar": ["A somewhat linear landform within or extending into a body of water, typically composed of sand, silt or small pebbles."], "sandbank": ["A somewhat linear landform within or extending into a body of water, typically composed of sand, silt or small pebbles."], "avoidance": ["The act of avoiding or keeping away from."], "avow": ["To declare or affirm solemnly and formally as true.", "To declare or affirm solemnly and formally as true.", "To admit to the truth, particularly in the context of sins or crimes committed."], "avowal": ["An open statement of affirmation."], "protium": ["Hydrogen isotope whose atomic nucleus only consists of a proton"], "prime": ["A natural number which has exactly two natural number divisors, namely 1 and the prime number itself.", "Being a natural number greater than 1 that has only two different divisors: itself and 1."], "abbreviated": ["Cut short."], "briefly": ["In an abbreviated form.", "[Used to introduce a short summary statement.]", "For a brief period."], "antiproton": ["Physics: antiparticle of the proton."], "Tierra del Fuego": ["Archipelago at the southernmost tip of South America."], "amphidromous": ["(aquatic animals:) moving between fresh and salt water during some part of life cycle, but not for breeding."], "awash": ["Overflowing with water."], "potamodromous": ["(aquatic animals:) Migrating within fresh water only."], "short circuit": ["An unintentional electrical connection of low resistance or impedance in a circuitry or installation."], "oceanodromous": ["(aquatic animals) Migrating within salt water only."], "square number": ["Mathematics: An integer that is the product of some integer with itself."], "tavern": ["Establishment where you can get a drink."], "geometric series": ["Sequence of numbers, whose elements are the sum of the first n elements of an geometric sequence."], "hypotenuse": ["Geometry: The side of a right triangle opposite the right angle."], "aberration": ["An optical phenomenon resulting from the failure of a lens or mirror to produce a good image.", "The effect by which the apparent direction of distant astronomical bodies is altered by the velocity of the Earth and the finite speed of light.", "Deviation from what is regarded as normal, correct, or natural."], "optical aberration": ["An optical phenomenon resulting from the failure of a lens or mirror to produce a good image."], "aperture": ["In photography, the camera lens opening and its relative diameter. Measured in f-stops, such as f/8, etc. As the number increases, the size of the aperture decreases, thereby reducing the amount of light passing through the lens and striking the film. (source: Ackland Art Museum)"], "arabesque": ["An elaborate design of intertwined floral figures or complex geometrical patterns, manly used in Islamic Art and architecture."], "automatism": ["Automatic, mechanical, and apparently undirected behavior which is outside of conscious control. (source UMLS)"], "acrylic": ["A group of related thermoplastic or thermosetting plastic substances derived from acrylic acid, methacrylic acid or other related compounds."], "acrylic resin": ["A group of related thermoplastic or thermosetting plastic substances derived from acrylic acid, methacrylic acid or other related compounds."], "analemma": ["A curve representing the angular offset of a celestial body (usually the Sun) from its mean position on the celestial sphere as viewed from another celestial body."], "astrometry": ["The precise measurement of the position and motion of astronomical objects."], "apparition": ["The period of time when it is possible to observe an object in the sky.", "An act of appearing or becoming visible unexpectedly.", "The appearance of a ghostlike figure.", "A ghostly appearing figure.", "Something existing in perception only."], "100BaseTX": ["IEEE physical layer network specification for 100 Mbps over two pairs of Category 5 UTP or STP wire."], "10BaseT": ["IEEE 802.3 Ethernet LAN specification, using unshielded twisted pair wiring running at 10Mbps."], "authentication server": ["A server that provides the management and services of authentication."], "Central Authentication Service": ["A single sign-on protocol designed to allow untrusted web applications to authenticate users against a trusted central server."], "biometric passport": ["A combined paper and electronic identity document that uses biometrics to authenticate the citizenship of travelers."], "biometric": ["Of, pertaining to or using biometrics."], "grater": ["A kitchen implement used to cut food products (such as cheese and carrots) into small strips."], "cheese grater": ["A kitchen implement used to cut food products (such as cheese and carrots) into small strips."], "awe": ["An overwhelming feeling of wonder or admiration."], "awhile": ["For a short time or period."], "Emma": ["Female first name."], "Matilda": ["Female first name."], "Mathilda": ["Female first name."], "Maud": ["Female first name."], "cathetus": ["Either one of the two sides in a right triangle, which form the right angle."], "Betelgeuse": ["The second brightest star in the constellation Orion."], "Bamberg": ["A town in Bavaria, Germany, located in Upper Franconia on the river Regnitz, close to its confluence with the river Main."], "Regnitz": ["A river in Bavaria, Germany. It is a left tributary of the Main and is 58 km in length."], "Main": ["A river in Germany, 524 km (329 miles) long, and one of the more significant tributaries of the Rhine."], "awning": ["A canopy made of canvas to shelter people or things from rain or sun."], "Kandas": ["A language of Papua New Guinea."], "awry": ["Away from the expected or proper direction.", "In an oblique manner."], "axiomatic": ["Of or relating to or derived from axioms."], "azalea": ["Any of various shrubs of the genus Rhododendron having showy, variously colored flowers."], "Kairui-Midiki": ["A language of East Timor."], "Kreen-Akarore": ["A language of Brazil."], "baa": ["To make the sound of a sheep.", "The bleating cry of a sheep."], "babbler": ["An obnoxious and foolish and loquacious talker."], "auto racing": ["Any of various sports in which automobiles (motor cars) are raced, either around a track, on roads or across country."], "hitchhike": ["To try to get a ride in a passing vehicle while standing at the side of a road. Generally by either sticking out ones thumb or holding a sign with one's stated destination."], "hitch": ["To try to get a ride in a passing vehicle while standing at the side of a road. Generally by either sticking out ones thumb or holding a sign with one's stated destination.", "To hook or entangle."], "backgammon": ["A board game for two players, pieces move according to throws of the dice.", "A victory in the game backgammon when the loser has not borne off a stone, and still has one or more stones in the winner's inner home row or on the bar."], "affect": ["To act as if something is true.", "To have an effect upon.", "To have an emotional or cognitive impact upon."], "animate": ["To impart motion or the appearance of motion to (e.g. a cartoon)."], "cheer": ["To show approval or good wishes by shouting.", "To spur on or encourage especially by cheers and shouts."], "backlog": ["A pile of uncompleted work which has been collected."], "Agave": ["A succulent plant of a large botanical genus of the same name, belonging to the family Agavaceae."], "electric motor": ["Electromechanic engine that converts eletrical energy into mechanical energy."], "Almer\u00eda": ["The capital of the province of Almer\u00eda, Spain. It is located in southeastern Spain on the Mediterranean Sea.", "A province of southern Spain. It is bordered by the provinces of Granada, Murcia, and the Mediterranean Sea. Its capital is Almer\u00eda."], "atomic": ["Deriving destructive energy from the release of atomic energy.", "Unable to be split or made any smaller."], "nuclear": ["Deriving destructive energy from the release of atomic energy."], "\u00c1vila": ["The capital of the province of the same name, part of the autonomous community of Castile and Le\u00f3n, Spain.", "A province of central-western Spain, in the southern part of the autonomous community of Castile and Le\u00f3n. It is bordered by the provinces of Toledo, C\u00e1ceres, Salamanca, Valladolid, Segovia, and Madrid."], "Acapulco": ["A city and major sea port in the state of Guerrero on the Pacific coast of Mexico, 300 km (190 miles) southwest from Mexico City."], "accidentally": ["Without advance planning."], "by chance": ["Without advance planning."], "circumstantially": ["Without advance planning."], "unexpectedly": ["Without advance planning."], "aquatic": ["Relating to water; living in or near water, taking place in water."], "African": ["A native of Africa or ethnologically belonging to an African race.", "Of or pertaining to Africa."], "contrite": ["Sincerely penitent or feeling regret or sorrow, especially for one\u2019s own actions."], "repentant": ["Sincerely penitent or feeling regret or sorrow, especially for one\u2019s own actions."], "take in": ["To ingest food, medicine, drugs, etc.", "To express willingness to have (one) in one's home or environment.", "To take into one's family.", "To earn, to gain (money)."], "tributary": ["A river that flows into a larger river or other body of water."], "Alexandria": ["The second-largest city in Egypt, and its largest seaport, with a population of 3.5 to 5 million."], "Adam": ["The first man created by God, according to Book of Genesis."], "Eve": ["Adam's wife, created for and named by Adam, according to Book of Genesis."], "Aguascalientes": ["The capital of the state of Aguascalientes in western central Mexico.", "A state of Mexico, situated in the center of the country."], "isolate": ["To set apart or cut off from others."], "insulate": ["To set apart or cut off from others."], "agglomerate": ["To wind or collect into a ball; hence, to gather into a mass or anything like a mass; to form into one cluster.", "Clustered together but not coherent.", "To heap up; to collect or gather (e.g. work, magazines, etc.)."], "backrest": ["A support that you can lean against while sitting."], "bacon": ["The flesh of the back and sides of a pig, salted and dried, used as food."], "baddie": ["A villainous or criminal person."], "fortress": ["A fortified place; a large and permanent fortification, sometimes including a town."], "baddy": ["A villainous or criminal person."], "Albacete": ["A city and municipality in southeastern Spain, 278 km southeast of Madrid, the capital of the province of Albacete in the autonomous community of Castilla-La Mancha.", "A province of central Spain, in the southern part of the autonomous community of Castila-La Mancha. It is bordered by the provinces of Granada, Murcia, Alicante, Valencia, Cuenca, Ciudad Real and Ja\u00e9n."], "Alpine": ["Of or pertaining to the Alps, or to any lofty mountain."], "Andean": ["Of or pertaining to the Andes mountains in South America."], "analytical": ["Using or skilled in using analysis."], "analytic": ["Using or skilled in using analysis."], "angular": ["Relating to an angle or to angles; having an angle or angles; forming an angle or corner."], "Anzo\u00e1tegui": ["One of the 23 component states of Venezuela, located in the northeastern region of the country."], "Aragua": ["One of the 23 component states of Venezuela, located in the north-central region of the country."], "Antwerp": ["A city and municipality in Belgium and the capital of the Antwerp province in Flanders, one of Belgium's three regions."], "width": ["The extent of something from side to side."], "breadth": ["The extent of something from side to side."], "badmouth": ["To criticize or disparage, often spitefully or unfairly."], "bad-tempered": ["Annoyed and irritable."], "common quail": ["(Coturnix coturnix) Small (17 cm) rotund bird from the pheasant family (Phasianidae)"], "Alzheimers": ["A common form of dementia of unknown cause, usually beginning in late middle age, characterized by memory lapses, confusion, emotional instability, and progressive loss of mental ability."], "breast cancer": ["A cancer that starts in the cells of the breast."], "abdominal pain": ["Sensation of discomfort, distress, or agony in the abdominal region; generally associated with functional disorders, tissue injuries, or diseases. (source: UMLS)"], "attention deficit disorder": ["Behavior disorder originating in childhood in which the essential features are signs of developmentally inappropriate inattention, impulsivity, and hyperactivity."], "environmental": ["Concerned with the ecological effects of altering the environment."], "North Korowai": ["A language of Indonesia (Papua)."], "Kurama": ["A language of Nigeria."], "Krim": ["A language of Sierra Leone."], "Sapo": ["A language of Liberia."], "Korop": ["A language of Nigeria and Cameroon."], "Krui": ["A language of Indonesia (Sumatra)."], "Kru'ng 2": ["A language of the northeastern, Rattanakiri Province and eastern Stung Treng, Cambodia."], "Gbaya": ["A language of Sudan."], "al-Andalus": ["The Arabic name given to those parts of the Iberian Peninsula governed by Muslims, or Moors, at various times in the period between 711 and 1492."], "Western Krahn": ["A language of Liberia and the C\u00f4te d'Ivoire"], "Karon": ["A Niger-Congo language spoken by the Karoninka people, mostly in southern Senegal."], "Sota Kanum": ["A language of Indonesia (Papua)."], "Shuwa-Zamani": ["A language of Nigeria."], "Shambala": ["A language of Tanzania."], "Southern Kalinga": ["A language of Philippines."], "Kuanua": ["A language of Papua New Guinea."], "gammon": ["A victory in the game backgammon when the loser has not borne off any stone"], "audition": ["A trial performance for an actor, singer, musician etc."], "epicontinental": ["Located on a plateau or on continental platform."], "celestial mechanics": ["Division of astronomy dealing with the motions and gravitational effects of celestial objects."], "balding": ["Becoming bald."], "epeiric": ["Located on a plateau or on continental platform."], "supervise": ["To keep under surveillance.", "To be in charge of, direct and control a work done by others."], "ride herd on": ["To keep under surveillance."], "admonisher": ["Someone who gives a warning so that a mistake can be avoided."], "reminder": ["Someone who gives a warning so that a mistake can be avoided."], "unleaded gasoline": ["Petrol, which has no lead additives in it and therefore creates less lead pollution in the atmosphere."], "Andalusian": ["ISO 639-6 entity", "A person whose ancestors are from Andalusia or who resides in Andalusia.", "Of or pertaining to Andalusia or its inhabitants (present or past)."], "nucleon": ["Collective name for the constituents of the atomic nucleus: neutron and proton."], "community": ["A social group of organisms sharing an environment, normally with shared interests."], "concerto": ["A musical work in which one solo instrument is accompanied by an orchestra."], "mya": ["A unit of one million years, used in geology and astronomy."], "global cooling": ["A decrease in the average temperature of the Earth's near-surface air and oceans."], "cisalpine": ["Viewed from Rome: On this side of the Alps."], "transalpine": ["Viewed from Rome: Beyond the Alps."], "diss": ["To put someone down, or show disrespect by the use of insulting language or dismissive behaviour."], "Kuni": ["A language of Papua New Guinea."], "Bafia": ["A language of Cameroon."], "degenerate": ["To lose desirable qualities."], "waistcoat": ["A usually sleeveless garment worn over a shirt."], "whisker": ["A growth of facial hair between the nose and the upper lip.", "A monocrystalline filament that grows from a metallic surface and having a very high tensile strength."], "Cumae": ["Ancient Greek settlement lying to the northwest of Naples in the Italian region of Campania."], "Kusaghe": ["A language of the Solomon Islands."], "Krisa": ["A language of Papua New Guinea."], "Uare": ["A language of Papua New Guinea."], "Kumalu": ["A language of Papua New Guinea."], "Kumba": ["A language of Nigeria."], "bale": ["A large bundle of goods or material, cloth, hay etc. tied together for storage or transport."], "ballad": ["Any light, simple song, esp. one of sentimental or romantic character, having two or more stanzas all sung to the same melody."], "of business": ["Of or related to business."], "of the": ["The contraction of preposition \"de\" with the article \"el\"."], "CD": ["A flat, round, optical medium that can store up to 700 megabytes of digital data or 80 minutes of audio. Data stored is read using a laser."], "ball bearing": ["A bearing consisting of a number of hard balls running in grooves in the surfaces of two concentric rings, one of which is mounted on a rotating or oscillating shaft or the like."], "ball game": ["Any game played with a ball."], "ballistic": ["Of or pertaining to ballistics."], "ball lightning": ["A rare form of lightning, consisting of a bright, luminous ball that moves rapidly along objects or floats in the air."], "econometrics": ["A branch of economics concerned with the tasks of developing and applying quantitative or statistical methods to the study and elucidation of economic principles."], "quantitative": ["Of a measurement based on some quantity or number rather than on some quality."], "illumination": ["An interpretation that removes obstacles to understanding.", "The act of illuminating, or supplying with light; the state of being illuminated."], "interpreting": ["An explanation of something that is not immediately obvious."], "rendition": ["An explanation of something that is not immediately obvious."], "is made of": ["Indicates the material of which something is produced", "Indicates the material of which something consists"], "sawmill": ["A facility where logs are cut into boards."], "fruit product": ["A product containing or made of fruit."], "auspice": ["A favorable omen."], "grapefruit": ["A large yellow citrus fruit with somewhat acid juicy pulp."], "reactive hypoglycemia": ["Recurrent episodes of symptomatic hypoglycemia occurring 2-4 hours after a high carbohydrate meal or an oral glucose load."], "balloonist": ["Someone who flies a balloon."], "hymn": ["A song of praise or worship."], "ballot box": ["A box where voters deposit their ballots."], "ballroom": ["A large room used mainly for dancing.", "Any of a variety of social dances performed by couples in a ballroom."], "epinephrine": ["A hormone secreted by the adrenal medulla which stimulates the heart pulse and provokes the constriction of blood vessels."], "diabetes": ["An heterogeneous group of disorders in which blood glucose (sugar) levels are elevated."], "diabetes mellitus": ["An heterogeneous group of disorders in which blood glucose (sugar) levels are elevated."], "antihypertensive": ["An agent that reduces high blood pressure. (source UMLS)"], "pulse pressure": ["Difference between systolic and diastolic pressures."], "systolic pressure": ["The blood pressure during the contraction of the left ventricle of the heart. (source :UMLS)"], "diastolic pressure": ["The blood pressure after the contraction of the heart while the chambers of the heart refill with blood. (source: UMLS)"], "vasoconstrictor": ["A substance that constrict blood vessels."], "vasodilator": ["A substance that widen blood vessels."], "angioplasty": ["A procedure to widen the interior of a blood vessel with inflation of a balloon on the end of a catheter."], "stenosis": ["An abnormal narrowing in a blood vessel or other tubular organ or structure. (source: Wikipedia)"], "pulmonary valve": ["A valve situated at the entrance to the pulmonary trunk from the right ventricle. (source: UMLS)"], "pulmonic valve": ["A valve situated at the entrance to the pulmonary trunk from the right ventricle. (source: UMLS)"], "pulmonary artery": ["The large artery originating from the superior surface of right ventricle and carrying deoxygenated blood from heart to lung. (source UMLS)"], "arrhythmia": ["An abnormal rhythm of the heart."], "cardiac": ["Relating to the heart."], "fibrillation": ["The rapid, irregular, and unsynchronized contraction of the muscle fibers of the heart. (source: Wikipedia)"], "pericardium": ["A double-walled sac that contains the heart and the roots of the great vessels."], "pericarditis": ["An inflammation of the pericardium."], "inflammation": ["The complex biological response of vascular tissues to harmful stimuli, such as pathogens, damaged cells, or irritants."], "oximetry": ["A non invasive method of measuring the oxygen content of blood."], "pulse oximetry": ["A non invasive method of measuring the oxygen content of blood."], "hypertrophy": ["The increase of the size of an organ or in a select area of the tissue."], "defibrillator": ["A machine to treat abnormal heart rhythms."], "defibrillation": ["The definitive treatment for the life-threatening cardiac arrhythmias ventricular fibrillation and pulseless ventricular tachycardia. (source: Wikipedia)"], "cyanosis": ["A blue coloration of the skin and mucous membranes due to the presence of deoxygenated hemoglobin in blood vessels near the skin surface."], "congenital": ["Present at birth but not necessarily hereditary."], "anticoagulant": ["A drug that delays the clotting of blood.", "Delaying the clotting of blood."], "imperialism": ["Any instance of aggressive extension of authority."], "imperialist": ["A believer in imperialism."], "Grecian": ["Of or relating to Greece, the Greek people, or the Greek language."], "generally": ["Under normal conditions.", "Without reference to specific details.", "As a rule; usually.", "without distinction of one from others."], "broadly": ["Without reference to specific details."], "loosely": ["Without reference to specific details."], "broadly speaking": ["Without reference to specific details."], "by and large": ["As a rule; usually."], "more often than not": ["As a rule; usually."], "mostly": ["As a rule; usually."], "in general": ["without distinction of one from others."], "in the main": ["without distinction of one from others.", "For the most part."], "winner": ["One who has won or often wins."], "baptismal font": ["An article of church furniture or a fixture used for the baptism of children and adults."], "Kasiguranin": ["A language of the Philippines."], "Borong": ["A language of Papua New Guinea."], "Southern Kisi": ["A language of Liberia and Sierra Leone."], "Winy\u00e9": ["A language of Burkina Faso."], "Kusu": ["A language of Democratic Republic of the Congo"], "S'gaw Karen": ["A language of Myanmar and Thailand"], "Kedang": ["A language of Indonesia (Nusa Tenggara)."], "Kokata": ["A language of Australia."], "North Muyu": ["A language of Indonesia (Papua)."], "Plapo Krumen": ["A language of C\u00f4te d'Ivoire."], "Kaniet": ["An extinct language of Papua New Guinea."], "Koroshi": ["A language of Iran."], "Kurti": ["A language of Papua New Guinea."], "Kariti\u00e2na": ["A language of Brazil."], "Kuot": ["A language of Papua New Guinea."], "great-grandfather": ["The father of someone's mother's father", "The father of one's grandfather or grandmother."], "great-grandmother": ["The mother of one's grandfather or grandmother."], "balustrade": ["A railing at the side of a staircase or balcony to prevent people from falling."], "renal": ["Of or pertaining to the kidneys."], "retinitis": ["Inflammation of the retina."], "retrovirus": ["A type of virus that stores its genetic information in a single-\\nstranded RNA molecule, then constructs a double-stranded\\nDNA version of its genes using a special enzyme called\\nreverse transcriptase. (source: AIDSinfo)"], "provirus": ["A DNA version of HIV\u2019s genetic material that has been integrated into the host cell\u2019s own DNA. (source: AIDSinfo)"], "pruritus": ["An intense itching sensation that produces the urge to rub or\\nscratch the skin for relief."], "lactic acidosis": ["A condition caused by a buildup of lactate, a cellular waste\\nproduct, in the blood. (source SIDSinfo)"], "asymptomatic": ["Having no obvious signs or symptoms of disease."], "bilirubin": ["A yellowish substance excreted by the liver."], "biopsy": ["The surgical removal and examination of an organ or tissue to aid in diagnosis and treatment of a health condition."], "bronchoscopy": ["Visual examination of the bronchial passages of the lungs using an endoscope."], "benign": ["Not cancerous. Benign tumors may grow larger but do not spread to other parts of the body."], "beta carotene": ["A vitamin A precursor belonging to the family of fat-soluble vitamins called carotenoids."], "biological": ["Pertaining to biology or to life and living things."], "biologic": ["Pertaining to biology or to life and living things."], "judicial": ["Relating to the administration of justice or the function of a judge."], "juridical": ["Relating to the administration of justice or the function of a judge."], "juridic": ["Relating to the administration of justice or the function of a judge."], "barcode": ["A series of stripes located on a product which allows a scanning device to recognise the product."], "market leader": ["The company, product or brand of product that has the largest sales to the consumer in a particular market."], "seasonal merchandise": ["A line of goods sold in a specific season or period, e.g. summer, winter, Christmas and Easter."], "refund": ["The return of payment to the customer for goods that have been \u00adreturned."], "department store": ["A retail organization which carries a wide range of merchandise that is organized into separate departments for the purpose of promotion, service and control."], "barcode scanner": ["An electronic device used to read barcodes. May be and individual unit for stock processing or attached to Point of Sale systems for sales recording."], "bamboozle": ["To confuse completely by concealing one's true motives from, especially by elaborately feigning good intentions so as to gain an end."], "wagon vault": ["Semi-cylindrical vault."], "barrel vault": ["Semi-cylindrical vault."], "beta-carotene": ["A vitamin A precursor belonging to the family of fat-soluble vitamins called carotenoids."], "banality": ["A saying that is overused or used outside its original context, so that its original impact and meaning are lost.", "Something that is trite, obvious, or predictable."], "Quenya": ["One of the Elvish languages invented by J. R. R. Tolkien, and which were ultimately used in his Lord of the Rings cycle."], "monsoon": ["A seasonal prevailing wind which lasts for several months."], "business broker": ["The person being the intermediary among more people to facilitate the creation and conclusion of a contract."], "dividend": ["That part of the earnings of a corporation that is distributed to its shareholders; usually paid quarterly.", "A bonus or something extra.", "A number to be divided by another number."], "brand loyalty": ["The degree of consumer preference for one brand compared to close substitutes; it is often measured statistically in consumer marketing research."], "captive market": ["The potential clientele of retail or service businesses located in areas where consumers may have no reasonable alternative sources of supply."], "vending machine": ["A retailing format that involves the coin- or card-operated dispensing of goods and services."], "advertising": ["The action of drawing public attention to goods, services or events, often through paid announcements in newspapers, magazines, television or radio.\\n(Source: C / RHW)", "Any paid, nonpersonal communication transmitted through out-of-store mass media by an identified sponsor."], "chain store": ["A collection of business locations (e.g. restaurants or hotels) all related to the same company."], "convenience store": ["A food-oriented retailer that is well located, is open long hours, and carries a moderate number of items."], "data warehousing": ["The process of designing, building, and maintaining a data warehouse system."], "data warehouse": ["A repository of an organization's electronically stored data designed to facilitate reporting and analysis."], "youthful": ["Characteristic of young people."], "Jalisco": ["A state of Mexico. Its capital is the city of Guadalajara."], "Rio de Janeiro": ["The second major city of Brazil, behind S\u00e3o Paulo and the capital of the state of Rio de Janeiro.", "One of the 26 states of Brazil, located in the Brazilian geopolitical region of the Southeast."], "horsewoman": ["A woman who rides a horse."], "working day": ["A day of a week in which work is done."], "Jesus of Nazareth": ["A teacher and prophet born in Bethlehem and active in Nazareth; his life and sermons form the basis for Christianity (circa 4 BC - AD 29)."], "Jesus": ["A teacher and prophet born in Bethlehem and active in Nazareth; his life and sermons form the basis for Christianity (circa 4 BC - AD 29)."], "the Nazarene": ["A teacher and prophet born in Bethlehem and active in Nazareth; his life and sermons form the basis for Christianity (circa 4 BC - AD 29)."], "Jesus Christ": ["A teacher and prophet born in Bethlehem and active in Nazareth; his life and sermons form the basis for Christianity (circa 4 BC - AD 29)."], "Christ": ["A teacher and prophet born in Bethlehem and active in Nazareth; his life and sermons form the basis for Christianity (circa 4 BC - AD 29)."], "Jesuit": ["A member of the Society of Jesus, a Roman Catholic order founded by Ignatius Loyola in 1534."], "courtroom": ["The actual enclosed space in which a judge regularly holds court."], "tribunal": ["The actual enclosed space in which a judge regularly holds court."], "Jurassic": ["(geology) Of or pertaining to the second period of the Mesozoic era, a time still dominated by dinosaurs.", "From 190 million to 135 million years ago."], "curse": ["To use offensive language.", "An appeal or prayer for evil or misfortune to befall someone or something.", "An evil spell."], "cuss": ["To use offensive language.", "A persistently annoying person."], "depone": ["To make a deposition; to declare under oath."], "verify": ["To declare or affirm solemnly and formally as true."], "blaspheme": ["To use offensive language.", "To speak against God or religious doctrine."], "imprecate": ["To use offensive language."], "aver": ["To declare or affirm solemnly and formally as true.", "To report or maintain."], "JPEG": ["In computing, a commonly used method of compression for photographic images. The name JPEG stands for \"Joint Photographic Experts Group\"."], "JPG": ["In computing, a commonly used method of compression for photographic images. The name JPEG stands for \"Joint Photographic Experts Group\"."], "jpeg": ["In computing, a commonly used method of compression for photographic images. The name JPEG stands for \"Joint Photographic Experts Group\"."], "jpg": ["In computing, a commonly used method of compression for photographic images. The name JPEG stands for \"Joint Photographic Experts Group\"."], "Guadalajara": ["The capital city of the Mexican state of Jalisco.", "A province of central/north-central Spain, in the northern part of the autonomous community of Castile-La Mancha."], "motorway link": ["The link roads (sliproads / ramps) leading to and from a motorway. Normally with the same motorway restrictions. .."], "trunk link": ["The link roads (sliproads / ramps) leading to and from a trunk road."], "OpenStreetMap": ["A collaborative project to create free editable maps."], "primary link": ["The link roads (sliproads / ramps) leading to and from a primary road."], "secondary": ["Administrative classification in the UK for a road, generally linking smaller towns and villages", "Succeeding next in order to the first; of second place, origin, rank, etc."], "tertiary": ["A \"C\" road in the UK. Generally for use on roads wider than 4 metres (13') in width, and for faster/wider minor roads that aren't A or B roads. In the UK, they tend to have dashed lines down the middle, whereas unclassified roads don't."], "unsurfaced": ["A road which typically has the same status as an unclassified road. It is part of the public highway (unlike a track) but does not have a paved surface."], "residential": ["Roads accessing or around residential areas but which are not a classified or unclassified highway."], "living street": ["A street where pedestrians have priority over cars, children can play on the street, maximum speed is low."], "bridleway": ["A road for horses, (in the UK, generally footpaths on which horses are also permitted)", "A trail for horses."], "cycleway": ["For designated cycleways, i.e. mainly/exclusively for bicycles."], "footway": ["For designated footpaths, i.e. mainly/exclusively for pedestrians. This includes walking tracks and gravel paths."], "steps": ["For flights of steps on footways", "Plural of step."], "bus guideway": ["A busway that is side guided \"rails like\", not suitable for other traffic."], "mini roundabout": ["Very small roundabout, in contrast to larger ones, which should be junction roundabout. In the UK, mini-roundabouts have a circular sign with a blue background, instead of the usual triangular sign."], "traffic signals": ["Lights that control the traffic."], "stile": ["To allow pedestrians to cross a wall or fence."], "geographic": ["Pertaining to geography.", "Determined by geography (as opposed to magnetic)."], "geographical": ["Pertaining to geography.", "Determined by geography (as opposed to magnetic)."], "cattle grid": ["Bars in the road surface that allow wheeled vehicles but not animals to cross. Sometimes known as a Texas Gate, even outside of Texas."], "toll booth": ["A booth on a toll road or toll bridge where the toll is collected"], "screenplay": ["The text of a film or a television program."], "picture gallery": ["An institution, building, or room for the exhibition and conservation of works of art."], "art museum": ["An institution, building, or room for the exhibition and conservation of works of art."], "Tamanrasset": ["City in Southern Algeria in an oasis of the Sahara."], "pastoral people": ["Ethnic group living primarily of stock-breeding, usually not sedentary."], "pastoral tribe": ["Ethnic group living primarily of stock-breeding, usually not sedentary."], "clothes dryer": ["Household appliance which dries textiles with hot air after washing."], "tumble dryer": ["Household appliance which dries textiles with hot air after washing."], "triclinium": ["The formal dining room in a Roman building."], "protohistory": ["A period between prehistory and history, during which a culture or civilization has not yet developed writing, but other cultures mention it in their writings."], "bass guitar": ["A bass stringed instrument played primarily with the fingers (either by plucking, slapping, popping, or tapping) or using a pick."], "Gothic": ["A style of architecture developed in northern France that spread throughout Europe between the 12th and 16th centuries.", "An extinct language, once spoken by the Goths in what is now Ukraine and Bulgaria."], "Gothic architecture": ["A style of architecture developed in northern France that spread throughout Europe between the 12th and 16th centuries."], "gothic": ["Of or related to the architectural style favored in western Europe in the 12th to 16th centuries."], "Guerrero": ["A state in the southern meridional region of Mexico."], "aerostat": ["Means of air transport, an aircraft lighter than air."], "hot air balloon": ["Means of air transport, an aircraft lighter than air."], "warrior": ["A person who is actively engaged in battle, conflict or warfare."], "etc": ["Continuing in the same way."], "and so forth": ["Continuing in the same way."], "etcetera": ["Continuing in the same way."], "and so on": ["Continuing in the same way."], "petrol engine": ["An internal combustion engine that uses a mixture of air and gasoline vapour as a fuel."], "electric power line": ["Wires conducting electric power from one location to another."], "electric power transmission": ["Wires conducting electric power from one location to another."], "banish": ["To send away, especially as a punishment.", "To accept no longer in a community, group or country, e.g. by official decree.", "To send into exile."], "incline steep": ["Just as incline, only steeper."], "motorway junction": ["A location where traffic can change between different routes, directions, or sometimes modes, of travel."], "turning circle": ["A rounded, widened area usually, but not necessarily, at the end of a road to facilitate easier turning of a vehicle."], "distance": ["The amount of space between two points.", "A considerable amount of space."], "sportive": ["Relating to sports."], "banishment": ["The act of expelling or relegating someone to a country or place by authoritative decree."], "bank account": ["An account with a bank."], "time to come": ["The time ahead; those moments yet to be experienced."], "federal": ["Pertaining to the national government level, as opposed to state, provincial, county, city, or town."], "recluse": ["A person who lives in self-imposed isolation or seclusion from the world."], "format": ["The form of presentation of something.", "The layout of a document."], "formula": ["Any mathematical rule expressed symbolically.", "A plan of action intended to solve a problem."], "Wedding": ["A locality in the borough of Mitte, Berlin, Germany."], "reading glasses": ["Glasses especially suited for reading."], "left-wing": ["Pertaining to the political left; liberal."], "left wing": ["Pertaining to the political left; liberal."], "inferior": ["Of lower quality.", "Of lower rank.", "Located below."], "Maundy Thursday": ["The Thursday before Easter that commemorates the Last Supper of Jesus Christ with the Apostles."], "Holy Thursday": ["The Thursday before Easter that commemorates the Last Supper of Jesus Christ with the Apostles."], "internal": ["Inside of something.", "Of or concerned with matters within the boundaries of a nation, as opposed to its relations with other nations.", "Within the body.", "Concerned with the non-public affairs of a company or other organisation."], "cultural": ["Denoting or deriving from or distinctive of the ways of living built up by a group of people.", "Of or relating to the arts and manners that a group favors.", "Of or relating to the shared knowledge and values of a society."], "Catholic": ["Of the Roman Catholic church.", "A follower of Catholicism.", "Being a follower Catholicism."], "singer": ["A male person who sings, is able to sing, or earns a living by singing.", "A person who sings, is able to sing, or earns a living by singing."], "champion": ["Someone who has been winner in a contest."], "Tibet": ["A plateau region in Central Asia and the home to the indigenous Tibetan people."], "Tibetan Plateau": ["A vast, elevated plateau in Central Asia covering most of the Tibet Autonomous Region, Qinghai Province in the People's Republic of China and Ladakh in Kashmir."], "Qinghai-Tibetan Plateau": ["A vast, elevated plateau in Central Asia covering most of the Tibet Autonomous Region, Qinghai Province in the People's Republic of China and Ladakh in Kashmir."], "Qingzang Plateau": ["A vast, elevated plateau in Central Asia covering most of the Tibet Autonomous Region, Qinghai Province in the People's Republic of China and Ladakh in Kashmir."], "cinema": ["A building where movies are shown to an audience."], "Tibet Autonomous Region": ["Autonomous region of the People's Republic of China."], "Wylie transliteration": ["Method for transliterating the Tibetan script using the keys on a typical English language typewriter."], "Cordova": ["A province of southern Spain, in the north-central part of the autonomous community of Andalusia."], "Cuban": ["A male person from Cuba, or of Cuban ancestry.", "Of or relating to Cuba or Cubans.", "A person from Cuba, or of Cuban ancestry."], "Chilean": ["A male person from Chile, or of Chilean ancestry.", "A female person from Chile, or of Chilean ancestry.", "Of or relating to Chile or Chileans.", "A person from Chile, or of Chilean ancestry."], "critic": ["A male person who appraises on the works of others.", "A female person who appraises on the works of others.", "A person who appraises on the works of others."], "critical": ["Extremely important.", "Inclined to find faults and flaws."], "criticism": ["A negative judgement about something or someone."], "lodge": ["A formal association of people with similar interests."], "Chilean peso": ["The currency of Chile."], "Cuban peso": ["The currency of Cuba."], "Argentine peso": ["The currency of Argentine"], "bank balance": ["The sum of money in a bank account at a specific time."], "banknote": ["A piece of paper money."], "Chehalis": ["A city in Lewis County, Washington, United States."], "Coast Salish": ["A subgroup of the Salishan language family."], "Salishan": ["A language family consisting of twenty-three languages in western Canada and the Pacific Northwest of the United States."], "Salish": ["A language family consisting of twenty-three languages in western Canada and the Pacific Northwest of the United States."], "fictitious": ["Existing only in the mind and not in reality."], "Holy Friday": ["The Friday before Easter Sunday, the day that Christians commemorate the crucifixion of Jesus Christ."], "Great Friday": ["The Friday before Easter Sunday, the day that Christians commemorate the crucifixion of Jesus Christ."], "Uruguayan peso": ["The currency of Uruguay."], "Uruguayan": ["A person from Uruguay, or of Uruguay ancestry.", "Of or relating to Uruguay, or Uruguayan."], "bankrupt": ["Having insufficient assets to cover one's debts.", "Without money."], "weather vane": ["A movable device attached to an elevated object such as a roof for showing the direction of the wind."], "weather cock": ["A wind indicator with the form of a cock."], "barbell": ["A bar to which heavy discs are attached at each end, used in weightlifting."], "bareheaded": ["With the head uncovered."], "Mauritian rupee": ["The currency of Mauritius."], "Mauritian": ["A person from Mauritius, or of Mauritian ancestry."], "barely": ["Scarcely or only just.", "Only a very short time before."], "bareness": ["Without covering or clothing."], "dog-ear": ["To fold over at the corner a page of a book.", "A corner of a page in a book that has been folded down."], "dogear": ["To fold over at the corner a page of a book.", "A corner of a page in a book that has been folded down."], "weathercock": ["A movable device attached to an elevated object such as a roof for showing the direction of the wind."], "weathervane": ["A movable device attached to an elevated object such as a roof for showing the direction of the wind."], "routing": ["A process for sorting and grouping of shipments by destination"], "barn": ["A building in which grain, hay etc are stored."], "hesitant": ["Tending to hesitate, wait, or proceed with caution or reservation."], "crown": ["A royal, imperial or princely headdress; a diadem.", "A restoration of teeth using materials that are fabricated by indirect methods which are cemented into place.", "In bird anatomy, the top of the head."], "Cantabria": ["A Spanish province and autonomous community with Santander as its capital city."], "characterize": ["To depict someone or something a particular way (usually negative.)", "To determine the characteristics of."], "component": ["A smaller, self-contained part of a larger entity. Often refers to a manufactured object that is part of a larger device.", "Something determined in relation to something that includes it.", "An abstract part of something."], "constituent": ["A smaller, self-contained part of a larger entity. Often refers to a manufactured object that is part of a larger device.", "An abstract part of something."], "component part": ["Something determined in relation to something that includes it."], "factor": ["An abstract part of something.", "An integral part", "A cognitive phenomenon that tends to affect the nature, the magnitude, and/or the timing of a consequence."], "live up to": ["To satisfy, carry out, bring to completion (an obligation, a requirement, etc.)."], "animated cartoon": ["A film created from a sequence of several drawings giving the illusion of movement."], "contact": ["The act of touching physically.", "Someone with whom one is in communication.", "The establishment of communication (with).", "To bring something into contact.", "To establish communication with something or someone"], "comedy": ["A light and humorous drama with a happy ending."], "completely": ["To a complete degree or to the full or entire extent.", "In a whole or complete manner."], "cannon": ["A large artillery gun."], "caricature": ["Humorous or satirical cartoon or drawing"], "description": ["The result of putting something in words; a synopsis of what something is.", "A set of characteristics by which someone or something can be recognized."], "classmate": ["A student who is in the same class in a school.", "The person, or a person, sitting next to one in school. ['one' in this context is usually the person speaking]"], "surrogate": ["A person appointed to represent or act on behalf of others."], "idol": ["A representation of a deity, notably a statue or a statuette."], "graven image": ["A representation of a deity, notably a statue or a statuette."], "god": ["A supernatural, typically immortal being with superior powers.", "A representation of a deity, notably a statue or a statuette."], "digital": ["Having to do with digits (fingers or toes); performed with a finger.", "Of or relating to computers or the Computer Age.", "Property of representing values as discrete numbers rather than a continuous spectrum."], "detail": ["Something small enough to escape casual notice.", "To explain in detail."], "discography": ["A methodical repertoire of musical works recorded on a disc."], "phase": ["A particular appearance or state in a regularly recurring cycle of changes."], "P\u00e1ez": ["A language of Colombia."], "Nasa Yuwe": ["A language of Colombia."], "momentum": ["Vectorial physical quantity: the product of mass and velocity of a body."], "officiate": ["To perform duties attached to a particular office or place or function."], "baseless": ["Without foundation or reason."], "encroachment": ["Any entry into an area not previously occupied."], "bashful": ["Uncomfortably diffident and easily embarrassed."], "bastard": ["A strongly disliked person who behaves disgustingly, underhandedly, or nastily, etc.", "A child born of parents not married to each other."], "Kuwaiti": ["Of or relating to Kuwait or Kuwaitis.", "A person from Kuwait, or of Kuwaiti ancestry."], "Kenyan": ["Of or relating to Kenya, or Kenyans.", "A person from Kenya, or of Kenyan ancestry."], "kilohertz": ["The SI unit of frequency, equal to one thousand hertz, with symbol \"kHz\"."], "posca": ["Popular beverage among Roman soldiers which consisted of vinegar or sour wine diluted with water."], "Easter Monday": ["The day after Easter Sunday, celebrated as a holiday in many largely Christian countries."], "miscarriage": ["The premature end of a pregnancy for natural reasons at a stage where the embryo or the fetus is incapable of surviving."], "spontaneous abortion": ["The premature end of a pregnancy for natural reasons at a stage where the embryo or the fetus is incapable of surviving."], "Bretagne": ["One of the six Celtic Nations; a former independent kingdom and duchy, and a province of France."], "Veps": ["A Finnic language spoken by the Vepsians in Russia (Europe)."], "bathing cap": ["A tight-fitting cap that keeps hair dry while swimming."], "sinification": ["The assimilation of peoples to Chinese culture and language.", "The transliteration of foreign scripts to Chinese."], "bathing suit": ["A tight-fitting garment worn for swimming."], "bathrobe": ["A loose-fitting robe worn before and after bathing and for lounging."], "battalion": ["A ground force unit composed of a headquarters and two or more companies or similar units."], "Asherah": ["Goddess of fertility in the ancient Near East, also mentioned in the Bible."], "Aeolian Islands": ["Archipelago in the Tyrrhenian Sea north of Sicily."], "Lipari Islands": ["Archipelago in the Tyrrhenian Sea north of Sicily."], "garment": ["A single item of clothing."], "Parkinson's disease": ["Progressive, degenerative disorder of the nervous system characterized by tremors, rigidity, bradykinesia, postural instability, and gait abnormalities; caused by a loss of neurons and a decrease of dopamine in the basal ganglia."], "remarry": ["To marry again after divorce or death of the spouse."], "battering ram": ["An ancient military device with a heavy horizontal ram for battering down walls, gates, etc."], "battery charger": ["A device for charging or recharging batteries."], "irreversible": ["Impossible to reverse."], "Queensland": ["A state of Australia, occupying the north-eastern corner of the mainland continent."], "Kaduo": ["A language of Laos and China."], "Katabaga": ["An extinct language of the Philippines"], "Kota Marudu Tinagas": ["A language of Malaysia (Sabah)."], "Occitan": ["A Gallo-Romance language spoken in Occitania, that is, Southern France, the Occitan Valleys of Italy, Monaco and in the Aran Valley of Spain."], "South Muyu": ["A language of Indonesia (Papua)."], "Ketum": ["A language of Indonesia (Papua)."], "battle cruiser": ["A large warship with lighter armor but greater maneuverability than a battleship."], "musth": ["A period in which male elephants display aggressive and dominant behaviour."], "Dalai Lama": ["The supreme head of Tibetan Buddhism."], "egg yolk": ["The yellow, spherical part of an egg that is surrounded by the white albumen, and serves as nutriment for the growing young."], "egg white": ["The white of an egg, which consists mainly of albumin dissolved in water."], "glair": ["The white of an egg, which consists mainly of albumin dissolved in water."], "glaire": ["The white of an egg, which consists mainly of albumin dissolved in water."], "refer": ["To refer briefly to; to make reference to.", "To be relevant or of importance to.", "To direct the attention of; to send or direct for treatment, information, or a decision."], "North China Plain": ["Plain in northern China which borders on the Yanshan Mountains in the north, the Taihang Mountains in the west and the Yangtze Plain in the south."], "Shaanxi": ["Province in north-central China with the Capital Xi'an."], "Sichuan": ["A province in western China with its capital at Chengdu."], "Muslim Tat": ["A language of Azerbaijan, Iran and Russia."], "bay leaf": ["The dried leaf of the laurel (Laurus nobilis), used in cookery."], "battle cry": ["A cry or shout of troops in battle."], "battle dress": ["A military uniform designed for field service."], "Kango": ["A language spoken in the Bas-U\u00e9l\u00e9 District of Democratic Republic of the Congo", "A language spoken in the Tshopo District of the Democratic Republic of the Congo"], "Kung-Tsumkwe": ["A language of Botswana and Namibia."], "Venezuelan": ["A citizen of Venezuela or someone of Venezuelan origin.", "Of or relating to Venezuela or Venezuelans."], "Kutep": ["A language of Nigeria and Cameroon."], "'Auhelawa": ["A language of Papua New Guinea."], "Kuman": ["A language of Papua New Guinea."], "Kupa": ["A language of Nigeria."], "coleslaw": ["Salad consisting primarily of shredded cabbage."], "cole slaw": ["Salad consisting primarily of shredded cabbage."], "fat-free": ["Containing no fat."], "nonfat": ["Containing no fat."], "carrot salad": ["Salad made from raw rasped carrots."], "yeast dough": ["Dough made from flour, water, baker's yeast and sometimes other ingredients as well."], "carrot": ["A yellow-orange, longish-rounded root vegetable, which is eaten raw or boiled."], "avouchment": ["An open statement of affirmation."], "computer engineering": ["The discipline that embodies the science and technology of design, construction, implementation, and maintenance of software and hardware components of modern computing systems and computer-controlled equipment. (Source: ACM)"], "Kuria": ["A language of Tanzania and Kenya."], "Kepo'": ["A language of Indonesia (Nusa Tenggara)."], "Kunama": ["A language of Eritrea."], "Kumukio": ["A Papuan language spoken in the Morobe Province of Papua New Guinea."], "Kunimaipa": ["A language of Papua New Guinea."], "Karipun\u00e1": ["A Tupi language spoken in Rond\u00f4nia, Brazil"], "Kusaal": ["A language of Ghana and Burkina Faso."], "Upper Egypt": ["The part of Egypt from modern-day Aswan to modern-day Luxor on both sides of the Nile."], "Lower Egypt": ["The part of Egypt from the Nile Delta near Cairo to the Mediterranean."], "pinacotheca": ["In ancient Rome, the room in a house which contained paintings."], "botulinum toxin": ["Highly poisonous neurotoxin which is produced by the bacterium Clostridium botulinum and is used in medicine and cosmetics."], "Kur": ["A language of Indonesia (Maluku)."], "Kpagua": ["A language of Central African Republic."], "Kukatja": ["A language of Australia."], "Kuuku-Ya'u": ["A language of Australia."], "Kunza": ["An extinct language of Chile."], "Kubu": ["A language of Indonesia (Sumatra)."], "Kove": ["A language of Papua New Guinea."], "Kalabakan": ["A language of Malaysia (Sabah)."], "Kuni-Boazi": ["A language of Papua New Guinea."], "Komodo": ["A language of Indonesia (Nusa Tenggara).", "One of the 17,508 islands that make up the Republic of Indonesia."], "beachcomber": ["A vagrant who lives on the seashore."], "beacon": ["A lighthouse, signal buoy, etc., on a shore or at a dangerous area at sea to warn and guide vessels."], "Three Gorges Dam": ["River dam that spans the Yangtze River in China and that is in use since 2006."], "Yangtze": ["The third longest river in the world which flows from its source in the Chinese Qinghai Province, eastwards into the East China Sea at Shanghai."], "Chang Jiang": ["The third longest river in the world which flows from its source in the Chinese Qinghai Province, eastwards into the East China Sea at Shanghai."], "balise": ["A lighthouse, signal buoy, etc., on a shore or at a dangerous area at sea to warn and guide vessels."], "Qinghai": ["Province in the People's Republic of China located on the northeastern part of the Tibetan Plateau."], "Anno Domini": ["Designates the years after the birth of Jesus Christ in the Gregorian and Julian calendar systems."], "AD": ["Designates the years after the birth of Jesus Christ in the Gregorian and Julian calendar systems."], "A.D.": ["Designates the years after the birth of Jesus Christ in the Gregorian and Julian calendar systems."], "CE": ["Designates the years after the birth of Jesus Christ in the Gregorian and Julian calendar systems."], "Before Christ": ["Designates the years before the birth of Jesus Christ in the Gregorian and Julian calendar systems."], "BC": ["Designates the years before the birth of Jesus Christ in the Gregorian and Julian calendar systems."], "B.C.": ["Designates the years before the birth of Jesus Christ in the Gregorian and Julian calendar systems."], "BCE": ["Designates the years before the birth of Jesus Christ in the Gregorian and Julian calendar systems."], "French fried potatoes": ["A dish of fried strips of potatoes."], "April Fools' Day": ["A day marked by the commission of hoaxes and other practical jokes of varying sophistication on friends, enemies and neighbors, or sending them on fools' errands, the aim of which is to embarrass the gullible"], "beanpole": ["A tall pole for a bean plant to climb on.", "A tall, lanky person."], "Hong Kong": ["One of the two special administrative regions of the People's Republic of China (PRC). It lies on the eastern side of the Pearl River Delta, bordering Guangdong province in the north and facing the South China Sea in the east, west and south. (source: Wikipedia)", "From or relating to Hong Kong."], "The City of New York": ["The largest city in the state of New York and the largest city in the United States."], "Zeus": ["In Greek mythology, the king of the gods, the ruler of Mount Olympus, and the god of the sky and thunder."], "Zulia": ["One of Venezuela's 23 states (estados), located in the northwestern part of the country. Its capital is Maracaibo."], "Zen": ["A school of Mah\u0101y\u0101na Buddhism notable for its emphasis on mindful acceptance of the present moment, spontaneous action, and letting go of self-conscious and judgmental thinking.", "A powerful hallucinogenic drug manufactured from lysergic acid."], "maximum": ["The highest limit."], "computer data storage": ["Computer components, devices and recording media that retain data for some interval of time."], "manga": ["A comic; a non-animated cartoon, especially one done in a Japanese style."], "stomach pain": ["A pain in the stomach area."], "stomachache": ["A pain in the stomach area."], "stomach ache": ["A pain in the stomach area."], "gastralgia": ["A pain in the stomach area."], "gastral": ["Of, or pertaining to the stomach."], "gastric": ["Of, or pertaining to the stomach."], "Extremadura": ["Autonomous community of western Spain with the capital city M\u00e9rida."], "M\u00e9rida": ["The capital of the autonomous community of Extremadura, Spain.", "The capital of the municipality of Libertador and the state of M\u00e9rida, in Venezuela.", "The capital and largest city of the Mexican state of Yucat\u00e1n.", "One of the 23 states (estados) into which Venezuela is divided. Its capital is M\u00e9rida."], "Common Era": ["Designates the years after the birth of Jesus Christ in the Gregorian and Julian calendar systems."], "Before the Common Era": ["Designates the years before the birth of Jesus Christ in the Gregorian and Julian calendar systems."], "two hundred": ["The cardinal number that is equal to two times hundred, represented in Roman numerals as CC and in Arabic numerals as 200."], "seismic wave": ["Wave that travels through the Earth, most often as the result of a tectonic earthquake, sometimes from an explosion"], "Navarre": ["a region in northern Spain, constituting one of its autonomous communities"], "beardless": ["Lacking hair on the face."], "bearskin": ["The skin or pelt of a bear."], "ocean surface wave": ["A moving ridge or swell of water occurring close to the surface of the sea, characterized by oscillating and rising and falling movements, often as a result of the frictional drag of the wind.\\n(Source: OED / INP)"], "beast": ["Any nonhuman animal, esp. a large, four-footed mammal."], "production": ["The presentation of a theatrical work.", "The act of producing.", "The total amount produced."], "Sahel": ["A semi-arid tropical savanna ecoregion in Africa, which forms the transition between the Sahara desert to the north and the more fertile region to the south."], "prince consort": ["The husband of a queen regnant."], "queen regnant": ["A female monarch."], "queen consort": ["The wife of a king."], "Portuguesa": ["One of the 23 states (estados) into which Venezuela is divided. Its capital is Guanare."], "Zaragoza": ["The capital city of the autonomous community of Aragon and the province of Saragossa, Spain, situated on the river Ebro."], "dill": ["(Anethum graveolens) A medical and spice plant originally from Central Asia in the the family of the Apiaceae."], "rosemary": ["(Rosmarinus officinalis) Everygreen perennial herb of the family of the Lamiaceae which is used as ornamental and spice plant."], "Axis powers": ["Those countries opposed to the Allies during World War II, primarily Nazi Germany, Fascist Italy and Imperial Japan."], "Axis alliance": ["Those countries opposed to the Allies during World War II, primarily Nazi Germany, Fascist Italy and Imperial Japan."], "Axis nations": ["Those countries opposed to the Allies during World War II, primarily Nazi Germany, Fascist Italy and Imperial Japan."], "Axis countries": ["Those countries opposed to the Allies during World War II, primarily Nazi Germany, Fascist Italy and Imperial Japan."], "Axis": ["Those countries opposed to the Allies during World War II, primarily Nazi Germany, Fascist Italy and Imperial Japan.", "An open source, XML based Web service framework."], "ornamental plant": ["A plant that is grown for its ornamental qualities."], "Saragossa": ["The capital city of the autonomous community of Aragon and the province of Saragossa, Spain, situated on the river Ebro."], "Salamanca": ["A city in western Spain, the capital of the province of Salamanca, which belongs to the autonomous community of Castile-Leon.", "A province of western Spain, in the western part of the autonomous community of Castile and Le\u00f3n."], "pattern": ["The visual representation of a person or an object.", "Anything proposed for imitation.", "A plan of action intended to solve a problem."], "programming": ["The act of writing a computer program."], "beastly": ["Of or resembling a beast."], "south-southeast": ["The compass point halfway between south and southeast, specifically 157.5\u00b0."], "sou'-sou'-east": ["The compass point halfway between south and southeast, specifically 157.5\u00b0."], "beauty salon": ["A shop where hairdressers and beauticians work."], "man's voice": ["The voice of a man."], "male voice": ["The voice of a man."], "woman's voice": ["The voice of a woman."], "Tibetan script": ["An abugida of Indic origin used to write the Tibetan language as well as the Dzongkha language, Ladakhi language and sometimes the Balti language."], "bedbug": ["A small blood-sucking insect that lives in houses, especially beds."], "unaffordable": ["So expensive that it cannot be afforded."], "unpayable": ["So expensive that it cannot be afforded."], "priceless": ["So precious that the value cannot be measured with money."], "invaluable": ["So precious that the value cannot be measured with money."], "inestimable": ["So precious that the value cannot be measured with money."], "potassium cyanide": ["Very toxic inorganic compound with the formula KCN, it is a salt of hydrogen cyanide in the form of colorless crystals."], "dan": ["A rank of black belt in martial arts.", "Someone who has achieved a level of black belt."], "bedclothes": ["Coverings, such as sheets and blankets, that are ordinarily used on a bed."], "bedding": ["Coverings, such as sheets and blankets, that are ordinarily used on a bed."], "bedding plant": ["An ornamental plant suitable for planting in a flowerbed."], "Korean Sign Language": ["A sign language used in South Korea."], "Brek Karen": ["A language of Myanmar."], "Kendem": ["A language of Cameroon."], "Border Kuna": ["A language of Colombia and Panama."], "Dobel": ["A language of Indonesia (Maluku)."], "Kompane": ["A language of Indonesia (Maluku)."], "Geba Karen": ["A language of Myanmar."], "Kunggara": ["A language of Australia."], "Lahta Karen": ["A language of Myanmar."], "Yinbaw Karen": ["A language of Myanmar."], "Kola": ["A language of Indonesia (Maluku)."], "Wersing": ["A language of Indonesia (Nusa Tenggara)."], "Yintale Karen": ["A language of Myanmar."], "Tsakwambo": ["A language of Indonesia (Papua)."], "D\u00e2w": ["A Nadahup language spoken in the northwestern part of the Amazonas state of Brazil."], "Kwa": ["A language of Nigeria."], "Likwala": ["A language of Congo."], "Kwaio": ["A language of Solomon Islands."], "Kwerba": ["A language of Indonesia (Papua)."], "Kwara'ae": ["A language of Solomon Islands."], "Kowiai": ["A language of Indonesia (Papua)."], "Awa-Cuaiquer": ["A language of Southwest Colombia and Ecuador"], "Kwanga": ["A language of Papua New Guinea."], "Kwakiutl": ["An indigenous language of the Wakashan family spoken by the Kwakwaka'wakw on northern Vancouver Island."], "Kwambi": ["A language of Namibia."], "Kwangali": ["A language of Namibia and Angola."], "Kwomtari": ["A language of Papua New Guinea."], "Kodia": ["A language of C\u00f4te d'Ivoire."], "Kwak": ["A language of Nigeria."], "Kwer": ["A language of Indonesia (Papua)."], "Kwese": ["A language of Democratic Republic of the Congo."], "Kwesten": ["A language of Indonesia (Papua)."], "Kwakum": ["A language of Cameroon."], "Kwinti": ["A language of Suriname."], "San Salvador Kongo": ["A language of Democratic Republic of the Congo and Angola."], "Kairiru": ["A language of Papua New Guinea."], "Krobu": ["A language of C\u00f4te d'Ivoire."], "bedspread": ["A decorative cover for a bed.", "Decorative cover for a bed."], "Kakihum": ["A language of Nigeria."], "statistical": ["Of or pertaining to statistics."], "Manumanaw Karen": ["A language of Myanmar."], "Katingan": ["A language of Indonesia (Kalimantan)."], "Keningau Murut": ["A language of Malaysia (Sabah)."], "Zayein Karen": ["A language of Myanmar."], "Kanowit": ["A language of Malaysia (Sarawak)."], "beech": ["Any tree of the genus Fagus, of temperate regions, having a smooth gray bark and bearing small, edible, triangular nuts.", "Wood of a beech tree."], "Kano\u00e9": ["An extinct language of Brazil."], "Sm\u00e4rky Kanum": ["A language of Indonesia (Papua)."], "Koiwat": ["A language of Papua New Guinea."], "Konai": ["A language of Papua New Guinea."], "Likuba": ["A language of Congo."], "Kerewo": ["A language of Papua New Guinea."], "Magnoliophyta": ["The division of seed plants that includes all the flowering plants, characterized by the possession of flowers. The ovules, which become seeds after fertilization, are enclosed in ovaries. The xylem contains true vessels. The angiospermae are divided into two subclasses: Monocotyledoneae and Dycotiledoneae.\\n(Source: ALL)"], "jackdaw": ["(Corvus monedula) One of the smallest species (34\u201339 cm in length) in the genus of crows and ravens"], "daw": ["(Corvus monedula) One of the smallest species (34\u201339 cm in length) in the genus of crows and ravens"], "Kwaya": ["A language of Tanzania."], "Butbut Kalinga": ["A language of Philippines."], "Kyaka": ["A language of Papua New Guinea."], "Karey": ["A language of Indonesia (Maluku)."], "Krache": ["A language of Ghana."], "Lingua Franca Nova": ["A constructed language created by George Boeree."], "Southern Yukaghir": ["A language of Russia (Asia)."], "Kouya": ["A language of C\u00f4te d'Ivoire."], "Kiput": ["A language of Malaysia (Sarawak)."], "Keyagana": ["A language of Papua New Guinea."], "Karao": ["A language of the Philippines."], "Kamayo": ["A language of the Philippines."], "Kpatili": ["A language of the Central African Republic."], "Karolanos": ["A language of the Philippines."], "Kelon": ["A language of Indonesia (Nusa Tenggara)."], "Kuik\u00faro-Kalap\u00e1lo": ["A language of Brazil."], "Baram Kayan": ["A language of Malaysia (Sarawak)."], "Kayagar": ["A language of Indonesia (Papua)."], "Western Kayah": ["A Tibeto-Burman language spoken by the Western Kayah people in the Kayah State in eastern Myanmar."], "Kayort": ["A language of Nepal."], "Rapoisi": ["A language of Papua New Guinea."], "Kambaira": ["A language of Papua New Guinea."], "Kayab\u00ed": ["A language of Brazil."], "Western Karaboro": ["A language of Burkina Faso."], "Kaibobo": ["A language of Indonesia (Maluku)."], "Bondoukou Kulango": ["A language Niger\u2013Congo spoken around the city of Bondoukou in C\u00f4te d'Ivoire, and Ghana."], "Kosena": ["A language of Papua New Guinea."], "Da'a Kaili": ["A language of Indonesia (Sulawesi)."], "Kenuzi-Dongola": ["A language of Sudan and Egypt."], "Kelabit": ["A language of Malaysia (Sarawak) and Indonesia (Kalimantan)."], "Coastal Kadazan": ["A language of Malaysia (Sabah)."], "Kazukuru": ["An extinct language of the Solomon Islands."], "Kayeli": ["A language of Indonesia (Maluku)."], "Kais": ["A language of Indonesia (Papua)."], "Kokola": ["A language of Malawi and Mozambique."], "Kaningi": ["A language of Gabon."], "Kaidipang": ["A language of Indonesia (Sulawesi)."], "Kaike": ["A Kanauri language spoken in the village of Tichurong and nearby villages in the Dolpa District in the Karnali Zone of north-west Nepal."], "Karang": ["A language of Cameroon and Chad."], "Sugut Dusun": ["A language of Malaysia (Sabah)."], "Tambunan Dusun": ["A language of Malaysia (Sabah)."], "Kayupulau": ["A language of Indonesia (Papua)."], "sake": ["Traditional Japanese alcoholic beverage made from rice."], "Komyandaret": ["A language of Indonesia (Papua)."], "Japanese sake": ["Traditional Japanese alcoholic beverage made from rice."], "Karir\u00ed-Xoc\u00f3": ["An extinct language of Brazil."], "Kamarian": ["A language of Indonesia (Maluku)."], "Kalabra": ["A language of Indonesia (Papua)."], "Lapuyan Subanun": ["A language of the Philippines."], "Lacandon": ["A mayan language spoken by the Lacand\u00f3n people who live in the jungles of the Mexican state of Chiapas."], "Pattani": ["A language of India."], "Langi": ["A language of Tanzania."], "Lambya": ["A language of Malawi and Tanzania."], "beef": ["The flesh of a cow, steer, or bull raised and killed for its meat."], "human being": ["A member of the human species."], "dock": ["An enclosed area of water used for loading, unloading, building or repairing ships."], "dry dock": ["Dock, from which the water can be pumped off"], "boatyard": ["A place for constructing, repairing and storing vessels out of the water."], "weir": ["An adjustable dam placed across a river to regulate the flow of water downstream."], "lowhead dam": ["An adjustable dam placed across a river to regulate the flow of water downstream."], "drydock": ["Dock, from which the water can be pumped off"], "Sundanese script": ["A writing system which is currently used by some Sundanese people."], "Saurashtra script": ["An abugida script used to write the Saurashtra language."], "Colombian": ["A person from Colombia, or of Colombian ancestry.", "Of or relating to Colombia, or Colombians."], "beefy": ["Muscular and heavily built."], "Nhengatu": ["A Tupi language spoken in the Upper Rio Negro region of Amazonas state of Brazil, and in neighboring portions of Colombia and Venezuela."], "familiar": ["Known to one.", "Closely acquainted or intimate.", "Inappropriately intimate or friendly."], "monetary aggregates": ["The total amount of money in a particular economy."], "money stock": ["The total amount of money in a particular economy."], "Lalia": ["A language of Democratic Republic of the Congo."], "Lamba": ["A Bantu language spoken in the northern parts of Zambia and southern fringes of the Democratic Republic of the Congo."], "torture": ["The intentional infliction of physical or mental suffering upon a person or an animal in order to punish, to coerce or for sheer cruelty.", "To intentionally inflict physical or mental suffering upon a person or an animal in order to punish, to coerce or for sheer cruelty."], "tease": ["(Fabric) To use a card device or machine to separate the fibers of a fabric.", "The act of harassing someone playfully or maliciously.", "To harass with persistent criticism or carping."], "impregnate": ["To make pregnant."], "rainwater": ["Water which falls as rain from clouds."], "male choir": ["A choir which consists only of men."], "female choir": ["A choir which consists only of women."], "bioengineering": ["The application of engineering principles and techniques to biology and medicine. It is largely concerned with the design of replacement body parts, such as limbs, heart valves, etc."], "excursion": ["A brief recreational trip; a journey out of the usual way."], "Ingrid": ["Female first name."], "beforehand": ["Being ahead of time or need.", "At an earlier or preceding time than a mentioned event."], "begrudge": ["To envy someone or something."], "Silesian": ["A language of Poland, the Czech Republic and Germany."], "Upper Silesian": ["A language of Poland, the Czech Republic and Germany."], "camel hair coat": ["Coat made of camel hair."], "camel hair": ["The fur of a camel, ranging in color from yellow to reddish brown, which is used to fabricate various textiles."], "fur coat": ["A coat made from animal fur."], "key species": ["A species who by its effect on the ecosystem determines the existence of the niches of other species."], "beguile": ["To charm or amuse a person.", "To attract, arouse and hold attention and interest, as by charm or beauty."], "beguiling": ["Highly attractive and able to arouse hope or desire."], "consent": ["To agree in opinion or sentiment; to consider or hold as true.", "Voluntary agreement or permission.", "To give an affirmative reply to; respond favorably to."], "Animalia": ["A group of multicellular organisms whose classification is based on tissues or organ arrangement; heterotrophic; use sexual reproduction in which a fertilized egg develops in stages; vertebrate and invertebrate types. (source:UMLS)"], "C\u00e1diz": ["Capital of the province C\u00e1diz in the autonomous community of Andalusia in southern Spain."], "mink coat": ["Coat made of the fur of a mink."], "republican": ["Of or belonging to a republic.", "Someone who favours a republic; an anti-monarchist."], "Baal": ["A demon in Judeo-Christian mythology.", "In ancient times the name of several gods in the Levant."], "Ba'al": ["In ancient times the name of several gods in the Levant."], "grimoire": ["A textbook of magic."], "sexual": ["Of or relating to having sex.", "Of or relating to sexuality.", "Of or relating to the sex of an organism."], "manticore": ["A legendary creature in Persian and Greek mythology with the body of a lion, a human head and the tail of a dragon or a scorpion."], "intimate": ["Of or relating to having sex."], "mainly": ["For the most part."], "chiefly": ["For the most part."], "principally": ["For the most part."], "primarily": ["For the most part."], "bronze": ["A copper alloy, usually with tin as the main additive, but sometimes with other elements such as phosphorus, manganese, aluminium, or silicon. (source: Wikipedia)", "To get a tan, from wind or sun."], "eukaryotes": ["Organisms whose cells are organized into complex structures by internal membranes and a cytoskeleton. Animals, plants, fungi, and protists are eukaryotes."], "Weser": ["River in Germany which is formed at Hann. M\u00fcnden by the tributary of the Fulda and Werra and empties into the North Sea near Bremerhaven."], "Victoria Cross": ["The highest military decoration of the United Kingdom awarded for valour \"in the face of the enemy\"."], "VC": ["The highest military decoration of the United Kingdom awarded for valour \"in the face of the enemy\"."], "Baalist": ["A worshipper of Baal."], "happiness": ["Emotions experienced when in a state of well-being."], "behold": ["To have one's eyes, one's attention on something or someone.", "To perceive by the visual faculty.", "To see, discover or determine something, unclear, distant or hidden, by looking carefully."], "beholden": ["Under a moral obligation to someone."], "beige": ["A very light brown color."], "bacteria": ["Group of single-cell micro-organisms, the smallest of the living organisms. Some are vital to sustain life, while others are responsible for causing highly dangerous human diseases, such as anthrax, tetanus and tuberculosis. Bacteria are found everywhere, in the soil, water and air.\\n(Source: MGH / WRIGHT)"], "Ardisia": ["(Coralberry or Marlberry) A genus of flowering plants in the family Myrsinaceae (Myrsine family), native to warm temperate to tropical regions of the Americas, Asia, and Australasia. (source: Wikipedia)"], "being": ["Something that exists.", "Any living person or thing."], "belated": ["Occurring after the expected or usual time."], "belch": ["To give out air noisily from the stomach through the mouth."], "beleaguered": ["Surrounded with troops."], "belfry": ["A tower in which bells are hung."], "believable": ["Capable of eliciting belief or trust.", "Worthy of belief or confidence."], "compatriot": ["Someone from one's own country."], "Laru": ["A Kainji language of Nigeria."], "Laqua": ["A Tai-Kadai language of Viet Nam and China."], "Larteh": ["A language of Ghana."], "Laba": ["A language of Indonesia (Maluku)."], "Lauje": ["A language of Indonesia (Sulawesi)."], "Lemolang": ["A linguistic isolate spoken in Luwu (South Sulawesi, Indonesia)."], "Tiwa": ["A language of India."], "Aribwatsa": ["An extinct Busu language formerly spoken in the area of Lae of the Morobe Province in Papua New Guinea."], "Lui": ["A language of Myanmar."], "Label": ["A language of Papua New Guinea."], "Tinani": ["A language of India."], "Laopang": ["A language of Myanmar."], "La'bi": ["A language of Cameroon."], "Ladakhi": ["A Tibetan language spoken by the Ladakhi people in the northern part of state of Jammu and Kashmir in India and across the border in western Tibet."], "Wampar": ["A language of Papua New Guinea."], "Northern Lorung": ["A language of Nepal."], "Labu": ["A language of Papua New Guinea."], "Lavatbura-Lamusong": ["A language of Papua New Guinea."], "Tolaki": ["A language of Indonesia (Sulawesi)."], "Lawangan": ["A language of Indonesia (Kalimantan)."], "Lamu-Lamu": ["An extinct Paman language of Queensland, Australia."], "Lardil": ["A Tangkic language spoken on Mornington Island in northern Australia."], "Legenyem": ["A language of Indonesia (Papua)."], "Lola": ["A language of Indonesia (Maluku)."], "Loncong": ["A language of Indonesia (Sumatra)."], "Lubu": ["A language of Indonesia (Sumatra)."], "Luchazi": ["A Bantu language of Angola and Zambia."], "Lisela": ["A language of Indonesia (Maluku)."], "Tungag": ["A language of Papua New Guinea."], "Luhu": ["A language of Indonesia (Maluku)."], "Lisabata-Nuniali": ["A language of Indonesia (Maluku)."], "Idun": ["A language of Nigeria."], "billboard": ["A flat surface, as of a panel or of a fence, on which bills are posted."], "Lenyima": ["A language of Nigeria."], "Lamja-Dengsa-Tola": ["A language of Nigeria."], "Laadi": ["A language of Congo and Angola."], "Laari": ["A language of Congo and Angola."], "belittle": ["To make to seem unimportant."], "bellboy": ["Someone employed as an errand boy and luggage carrier around hotels."], "bellicose": ["Having or showing a ready disposition to fight."], "beta": ["The 2nd letter of the Greek alphabet.", "Preliminary, prerelease; refers to an incomplete version of a product released for initial testing."], "bellow": ["To make the deep roaring sound characteristic of a bull.", "The roar of a large animal, such as a bull."], "ferocious": ["Marked by extreme and violent energy."], "side": ["One among many similar or related, yet still distinct features or elements.", "One set of competitors in a game.", "A group having a particular allegiance in a conflict or competition.", "An extended outer surface of an object.", "A lateral surface of an object that is not one of the front, back, top, or bottom.", "A bounding straight edge of a two-dimensional shape.", "One half (left or right, top or bottom, front or back, etc.) of something or someone.", "A region in a specified position.", "A serving of food accompanying, and meant to be consumed with, the main course of a meal."], "handball": ["A team sport where two teams of seven players each (six players and a goalkeeper) pass and bounce a ball trying to throw it in the goal of the opposing team. (source: wikipedia)"], "Lower Silesian": ["A language of Poland, the Czech Republic and Germany"], "bass guitarist": ["A bass guitar player."], "Baltimore": ["An independent city and the largest city in the state of Maryland in the United States."], "sophism": ["A flawed argument superficially correct in its reasoning, usually designed to deceive. An intentional fallacy."], "bell push": ["A button, as on the front door of a house, that rings a bell when pushed."], "bell button": ["A button, as on the front door of a house, that rings a bell when pushed."], "bellyache": ["A pain in the abdomen or bowels."], "beloved": ["Greatly loved.", "A person who is greatly loved."], "bemoan": ["To express disapproval of or regret for."], "Bolivian": ["A person from Bolivia, or of Bolivian ancestry.", "Of or relating to Bolivia, or Bolivians."], "scales": ["A tool to measure the weight of something."], "weighing scale": ["A tool to measure the weight of something."], "bemused": ["Perplexed by many conflicting situations or statements; filled with bewilderment.", "Deeply absorbed in thought.", "Deeply absorbed in thought."], "Lemoro": ["A language of Nigeria."], "Leelau": ["A language of Nigeria."], "Kaan": ["A language of Nigeria."], "Landoma": ["A language of Guinea."], "L\u00e1adan": ["A constructed language for the women's language in Suzette Haden Elgin's novels."], "Loo": ["A language of Nigeria."], "Tso": ["A language of Nigeria."], "Lufu": ["A language of Nigeria."], "Lega-Shabunda": ["A language of Democratic Republic of the Congo"], "Lala-Bisa": ["A language of Zambia and the Democratic Republic of the Congo."], "Leco": ["A language isolate spoken in areas east of Lake Titicaca, Bolivia."], "Ly\u00e9l\u00e9": ["A language of Burkina Faso."], "Lelemi": ["A language of Ghana."], "Lengua": ["A language of Paraguay."], "Lenje": ["A language of Zambia"], "Lemio": ["A language of Papua New Guinea."], "Lengola": ["A language of Democratic Republic of the Congo."], "bend": ["A angular or rounded shape in a thin material (such as paper) where the material abruptly changes direction, typically back toward itself.", "An angle or sharp curve in the course of a road, river, etc.", "Movement that causes the formation of a curve.", "To bend one's back forward.", "To bend a joint."], "beneath": ["In a lower position than."], "benediction": ["An invocation of divine blessing, usually at the end of a church service."], "dead language": ["A language which no longer undergoes changes in grammar and vocabulary."], "modern language": ["A language which has native speakers and is currently in use as a means of communication."], "living language": ["A language which has native speakers and is currently in use as a means of communication."], "goddess": ["A female deity."], "sesame oil": ["A vegetable oil derived from sesame seeds."], "ziggurat": ["Temple tower of the ancient Mesopotamian valley having the form of a terraced pyramid."], "Bilbao": ["The largest city in the Basque Country, Spain and the capital of the province of Biscay."], "normally": ["Under normal conditions.", "Under normal conditions or circumstances."], "originally": ["As it was in the beginning."], "subsequently": ["Coming after; in a subsequent manner."], "rapidly": ["With speed; in a rapid manner."], "quickly": ["With speed; in a rapid manner."], "speedily": ["In a near future.", "With speed; in a rapid manner."], "totally": ["To a complete degree or to the full or entire extent.", "In a whole or complete manner."], "passively": ["In a passive or acquiescent manner; resignedly or submissively."], "submissively": ["In a submissive manner."], "automatically": ["In an automatic manner."], "manually": ["By hand."], "explicitly": ["In an explicit manner."], "attentively": ["In an attentive manner."], "respectfully": ["In a respectful manner."], "respectful": ["Marked or characterized by respect.", "Showing deference."], "gentle": ["Tender and amiable; of a considerate or kindly disposition."], "passive": ["(Something) That is not active, but rather is acted upon.", "Lacking in energy or will.", "Peacefully resistant in response to injustice.", "Expressing that the subject of the sentence is the patient of the action denoted by the verb."], "bequeath": ["To dispose of personal property, esp. money, by last will."], "ethyl alcohol": ["A colorless liquid, miscible with water, used as a reagent and solvent.", "A flammable, colorless liquid which is used amongst others as solvent, disinfectant and intoxicant."], "grain alcohol": ["A colorless liquid, miscible with water, used as a reagent and solvent.", "A flammable, colorless liquid which is used amongst others as solvent, disinfectant and intoxicant."], "bequest": ["A gift of personal property by will."], "alcohol addict": ["A person who regularly consumes a lot of alcohol and is addicted to it."], "deafening": ["Loud enough to cause temporary or permanent hearing loss."], "earsplitting": ["Loud enough to cause temporary or permanent hearing loss."], "roaring": ["Loud enough to cause temporary or permanent hearing loss."], "thunderous": ["Loud enough to cause temporary or permanent hearing loss."], "thundery": ["Loud enough to cause temporary or permanent hearing loss."], "perceptive": ["Having or showing keenness of perception, insight, understanding, or intuition.", "Having or revealing keen insight and good judgment."], "respective": ["Involving two or more people or things, in reference to them as individuals."], "noisy": ["Making a noise, esp. a loud sound."], "egg spoon": ["Small spoon for eating boiled eggs."], "habitual": ["Behaving in a regular manner, as a habit.", "According to or depending on custom."], "abrasive stone": ["A sandstone slab used for grinding and polishing."], "monocausal explanation": ["The attribution of only one cause to the existence of a phenomenon."], "Maya calendar": ["A system of distinct calendars and almanacs used by the Maya civilization of pre-Columbian Mesoamerica, and by some modern Maya communities in highland Guatemala. (source: Wikipedia)"], "life expectancy": ["The average number of years people of a given age are expected to live."], "volcanic ash": ["Finely pulverized pyroclastic material ejected from a volcano in eruption."], "uniformitarianism": ["The assumption that the natural processes operating in the past are the same as those that can be observed operating in the present. (source: Wikipedia)"], "theodolite": ["An instrument for measuring both horizontal and vertical angles, as used in triangulation networks. (source: Wikipedia)"], "diachronic": ["Referring to a chronological perspective that refers to phenomena as they change over time."], "sociobiology": ["A neo-Darwinian synthesis of scientific disciplines that attempts to explain social behavior in all species by considering the evolutionary advantages the behaviors may have."], "solifluction": ["A type of mass wasting where waterlogged sediment slowly moves downslope over impermeable material. (source: Wikipedia)"], "unconformity": ["A buried erosion surface separating two rock masses or strata of different ages, indicating that sediment deposition was not continuous. (source: Wikipedia)"], "petroglyph": ["An image created by removing part of a rock surfaces by incising, pecking, carving, and abrading."], "Paralympic Games": ["A multi-sport event for athletes with physical, mental and sensorial disabilities."], "bereft": ["Deprived of something."], "beret": ["A soft, visorless cap with a close-fitting headband and a wide round top."], "berth": ["A place in a port etc where a ship can be moored.", "Tie up the boat."], "sewer": ["System of pipes, usually underground, for carrying waste water and human waste away from houses and other buildings, to a place where they can be safely get rid of."], "beseech": ["To make urgent appeal."], "low-cost": ["Having a price that can be paid with one's financial means."], "low-priced": ["Having a price that can be paid with one's financial means."], "proscription": ["The act of expelling or relegating someone to a country or place by authoritative decree."], "cinerary urn": ["A container into which cremated remains are placed and kept."], "funerary urn": ["A container into which cremated remains are placed and kept."], "coffee plantation": ["A plantation which grows coffee plants."], "plantation": ["A large farm or estate, especially in a tropical or semitropical country, on which cotton, tobacco, coffee, sugar cane, or trees and the like are cultivated, often includes housing for the owner and workers."], "nail polish": ["A lacquer available in many colors that is applied to the nails of the fingers or toes and serves as decoration, but also as protection for the nails."], "nail varnish": ["A lacquer available in many colors that is applied to the nails of the fingers or toes and serves as decoration, but also as protection for the nails."], "preclude": ["Remove the possibility of."], "cotton plantation": ["A plantation which grows cotton."], "sugar cane plantation": ["A plantation which grows sugar cane."], "eye shadow": ["Make-up article in form of colored powder which is applied on the eyelids and under the eyebrows."], "rouge": ["A cosmetic consisting of red powder which is applied to the cheeks so as to provide a more youthful appearance and to emphasise the cheekbones."], "blusher": ["A cosmetic consisting of red powder which is applied to the cheeks so as to provide a more youthful appearance and to emphasise the cheekbones."], "bot": ["An automated software program that can execute certain commands when it receives a specific input."], "besmear": ["To smear all over."], "besmirch": ["To smear all over."], "besom": ["A broom made of twigs tied together on a long handle."], "bestowal": ["A gift that is bestowed or conferred."], "best-seller": ["A book which sells very many copies."], "boulevard": ["A broad, well-paved and landscaped thoroughfare."], "betide": ["(For an event) Have a real existence."], "betoken": ["To give evidence of."], "betrothal": ["A mutual promise to marry."], "engagement": ["A mutual promise to marry."], "betterment": ["The act or process of bettering."], "bewail": ["To express deep sorrow for."], "grieve": ["To express deep sorrow for.", "To cause to feel sorrow."], "deplore": ["To express deep sorrow for."], "beware": ["To be cautious, wary or careful; to be alert to."], "bewilder": ["To overwhelm with surprise or sudden wonder."], "bewildering": ["Causing dismay or horror."], "anseriformes": ["An order (Anseriformes) of birds with webbed feet; most of them still dwelling in water."], "bibliographer": ["A person who compiles bibliographies."], "bibliophile": ["Someone who loves and usually collects books."], "bibulous": ["Given to or marked by the consumption of alcoholic drink."], "bidet": ["A basin for washing genitals and anal area."], "billy goat": ["A male goat."], "binoculars": ["An instrument for making distant objects look nearer, with separate eyepieces for each eye."], "binominal": ["Having or being characterized by two names, especially those of genus and species in taxonomies."], "biographer": ["A writer of someone's biography."], "biographical": ["Of or relating to biography."], "biographic": ["Of or relating to biography."], "Acehnese": ["A Malayo-Polynesian language spoken by the indigenous population of the Aceh province in Indonesia, in the northern part of the Sumatra Island."], "survive": ["To continue to live or exist in spite of an accident or ordeal."], "bionic": ["Of or relating to bionics."], "bionics": ["The application of biological principles to the study and design of engineering systems, especially electronic systems."], "bipartite": ["Divided into or consisting of two parts."], "biped": ["A two-footed animal.", "Having two feet."], "elementary charge": ["The electric charge of a single proton, or equivalently, the negative of the electric charge of a single electron."], "Kikuyu": ["A Bantu language spoken by the Kikuyu people in the area between Nyeri and Nairobi of Kenya."], "Kuanyama": ["A language of Angola and Namibia."], "web engineering": ["A scientific discipline concerned with the application of systematic and quantifiable approaches (concepts, methods, techniques, tools) to cost-effective requirement analysis, design, implementation, testing, operation and maintenance of high-quality web applications. (source: Kappel et. al.)"], "Leipon": ["A language of Papua New Guinea."], "Nomaande": ["A language of Cameroon."], "Lenca": ["A language of Honduras and El Salvador."], "Leti": ["A language of Cameroon.", "A language of Indonesia (Maluku)."], "Lepcha": ["A language of India, Bhutan and Nepal.", "A person of Lepcha ethnic origin."], "Lembena": ["A language of Papua New Guinea."], "Lenkau": ["A language of Papua New Guinea."], "Lesing-Gelimi": ["A language of Papua New Guinea."], "Lamma": ["A language of Indonesia (Nusa Tenggara)."], "Ledo Kaili": ["A language of Indonesia (Sulawesi)."], "Luang": ["A language spoken on the islands of Luang, Wetang, Moa and Lakor in the Maluku Province, Indonesia."], "Lefa": ["A language of Cameroon."], "Lungga": ["A language of Solomon Islands."], "Laghu": ["A language of Solomon Islands."], "Laghuu": ["A language of Viet Nam."], "Lengilu": ["A language of Indonesia (Kalimantan)."], "Lingarak": ["A language of Vanuatu."], "Wala": ["A language of Solomon Islands."], "Lega-Mwenga": ["A language of Democratic Republic of the Congo."], "Logba": ["A language of Ghana."], "Lengo": ["A language of the Solomon Islands."], "Pahi": ["A language of Papua New Guinea."], "Longgu": ["A language of Solomon Islands."], "Ligenza": ["A language of the Democratic Republic of the Congo."], "biplane": ["An airplane having two pairs of wings fixed at different levels, especially one above and one below the fuselage."], "birdcage": ["A cage for confining birds."], "chocolate pudding": ["Pudding with chocolate flavour."], "vanilla pudding": ["Pudding with vanilla flavour."], "methyl vanillin": ["Organic compound which is used as flavoring agent, it occurs naturally in vanilla beans and can be produced synthetically."], "vanillin": ["Organic compound which is used as flavoring agent, it occurs naturally in vanilla beans and can be produced synthetically."], "Adygei": ["One of the two official languages of the Republic of Adygea in the Russian Federation."], "amenorrh\u0153a": ["The absence of a menstrual period in a woman of reproductive age."], "Victoria": ["A state located in the south-eastern corner of Australia.", "The capital city of the Seychelles."], "amphora": ["A jar with two handles."], "sunflower": ["Annual plant with a large yellow flowering head of the genus Helianthus and the family of the Asteraceae."], "sunflower oil": ["A vegetable oil pressed from sunflower seeds."], "birthplace": ["The place where someone was born."], "cordierite": ["A silicate mineral containing magnesium, iron and aluminium."], "iolite": ["A silicate mineral containing magnesium, iron and aluminium."], "bread machine": ["Electric kitchen appliance which can automatically bake bread after adding the ingredients."], "breadmaker": ["Electric kitchen appliance which can automatically bake bread after adding the ingredients."], "toad in the hole": ["Traditional British dish comprising sausages in Yorkshire pudding batter, usually served with vegetables and gravy."], "toad-in-the-hole": ["Traditional British dish comprising sausages in Yorkshire pudding batter, usually served with vegetables and gravy."], "bisect": ["To divide into two (equal) parts."], "trichoptilosis": ["The splitting of hairs at the ends."], "pizza oven": ["Oven specifically constructed to bake pizzas."], "bisector": ["A line that divides an angle or line into two equal parts."], "bisectrix": ["A line that divides an angle or line into two equal parts."], "bitch": ["A female dog.", "A female fox."], "Lyngngam": ["A language of India and Bangladesh, spoken in the West Khasi hills in Mawshynrut block."], "dark circles": ["Dark areas of skin around the eyes, caused for example by lack of sleep."], "eye circles": ["Dark areas of skin around the eyes, caused for example by lack of sleep."], "electronics assembly": ["Electronic part of a device."], "bivouac": ["A makeshift camp or camping place."], "blab": ["An incessant or indiscreet talker.", "To chatter thoughtlessly or indiscreetly."], "blabbermouth": ["An incessant or indiscreet talker."], "blabber": ["To chatter thoughtlessly or indiscreetly."], "blackboard": ["A dark-coloured board for writing on in chalk used especially in schools."], "blacklist": ["A list of people who are out of favour."], "chalkboard": ["A dark-coloured board for writing on in chalk used especially in schools."], "Live CD": ["A generic term for an operating system distribution that is executed upon boot, without installation on a hard drive."], "classroom": ["A room in a school where lessons are given."], "blackmailer": ["A criminal who extorts money from someone by threatening to expose embarrassing information about him.", "A person who engages in extortion."], "Rubus": ["Genus of flowering plants in the family Rosaceae."], "blameless": ["Free of blame or guilt."], "Lhomi": ["A Tibetan language spoken by the Lhomi people in Nepal, India and China (Tibet)."], "Lahanan": ["A language of Malaysia (Sarawak)."], "Lhokpu": ["A Sino-Tibetan language spoken by the Lhop people in Bhutan."], "Mlahs\u00f6": ["An extinct language of Syria."], "Toga": ["An Austronesian language spoken in Vanuatu, in the Torres islands."], "Lahu": ["A language of China, Laos, Myanmar, Thailand and Vietnam."], "West-Central Limba": ["A language of Sierra Leone."], "Likum": ["A language of Papua New Guinea."], "Nyindrou": ["A language of Papua New Guinea."], "Likila": ["A language of the Democratic Republic of the Congo."], "Limbu": ["A language of Nepal and India."], "Ligbi": ["A language of Ghana and the C\u00f4te d'Ivoire."], "Lihir": ["A language of Papua New Guinea."], "Lingkhim": ["A language of Nepal."], "Lika": ["A language of Democratic Republic of the Congo."], "Lillooet": ["A language of Canada."], "Liki": ["A language of Indonesia (Papua)."], "Sekpele": ["A language of Ghana."], "Liberian English": ["A language of Liberia."], "Lisu": ["A language of China, India, Myammar and Thailand."], "Liv": ["A language of Latvia."], "Lembak": ["A language of Indonesia (Sumatra)."], "Liabuku": ["A language of Indonesia (Sulawesi)."], "Banda-Bambari": ["A language of Central African Republic."], "Libinza": ["A language of Democratic Republic of the Congo."], "Laiyolo": ["A language of Indonesia (Sulawesi)."], "Li'o": ["A language of Indonesia (Nusa Tenggara)."], "Lampung": ["A language of Indonesia (Sumatra)."], "Buffalo": ["The second largest city in New York State. Located in Western New York on the eastern shores of Lake Erie and at the head of the Niagara River. (source Wikipedia)"], "Ayacucho": ["The capital city of Huamanga Province, Ayacucho Region, Peru.", "A region of Peru, located in the south-central Andes of the country. Its capital is the city of Ayacucho."], "blameworthy": ["Deserving blame."], "continental": ["Of or relating to a continent or continents."], "grant": ["To bestow the possession or title of."], "Siouan": ["A native American language family of North America."], "blasphemy": ["The crime of assuming to oneself the rights or qualities of God."], "West African CFA franc": ["The currency of Benin, Burkina Faso, C\u00f4te d'Ivoire, Guinea-Bissau, Mali, Niger, Senegal and Togo."], "Central African CFA franc": ["The currency of Cameroon, Central African Republic, Chad, Republic of the Congo, Equatorial Guinea and Gabon."], "blatant": ["Without any attempt at concealment; completely obvious.", "Conspicuously and offensively loud; given to vehement outcry."], "Bundesliga": ["The name for the premier league of any sport in Germany or Austria."], "basketball player": ["A person who plays basketball, especially professionally."], "blaze": ["To be on fire, especially producing a lot of flames and light.", "To shine like a flame."], "bleach": ["A chemical that removes colors or whitens.", "To treat with bleach, especially so as to whiten (fabric, paper, etc) or lighten (hair)."], "nodule": ["Small aggregation of cells in a body."], "Pap test": ["A method for the early detection of cancer and other abnormalities of the female genital tract. A Pap smear is done by placing a speculum in the vagina, locating the cervix, and then scraping a thin layer of cells from the cervix. The cells are placed on a slide, sent to a laboratory, and analyzed for abnormalities."], "Papanikolaou test": ["A method for the early detection of cancer and other abnormalities of the female genital tract. A Pap smear is done by placing a speculum in the vagina, locating the cervix, and then scraping a thin layer of cells from the cervix. The cells are placed on a slide, sent to a laboratory, and analyzed for abnormalities."], "Papanicolaou test": ["A method for the early detection of cancer and other abnormalities of the female genital tract. A Pap smear is done by placing a speculum in the vagina, locating the cervix, and then scraping a thin layer of cells from the cervix. The cells are placed on a slide, sent to a laboratory, and analyzed for abnormalities."], "cervical smear": ["A method for the early detection of cancer and other abnormalities of the female genital tract. A Pap smear is done by placing a speculum in the vagina, locating the cervix, and then scraping a thin layer of cells from the cervix. The cells are placed on a slide, sent to a laboratory, and analyzed for abnormalities."], "smear test": ["A method for the early detection of cancer and other abnormalities of the female genital tract. A Pap smear is done by placing a speculum in the vagina, locating the cervix, and then scraping a thin layer of cells from the cervix. The cells are placed on a slide, sent to a laboratory, and analyzed for abnormalities."], "bronchocele": ["Enlargement of the thyroid gland."], "pumice": ["A volcanic rock that consists of highly vesicular volcanic glass, which may or may not contain crystals."], "cicatrice": ["A permanent mark on the skin resulting from a wound."], "scar over": ["To form a scar when healing."], "greater white-toothed shrew": ["(Crocidura russula) A small shrew, found in Europe and North Africa."], "beeswax": ["A yellowish or dark brown wax secreted by honeybees for constructing honeycombs."], "blender": ["A tool for mixing things together."], "blessing": ["A prayer for happiness or success."], "blindworm": ["A limbless lizard (Anguis fragilis) of the family Anguidae."], "slowworm": ["A limbless lizard (Anguis fragilis) of the family Anguidae."], "blindfold": ["A bandage to cover the eyes."], "blizzard": ["A very heavy snowstorm with high winds."], "bloater": ["A large salted and smoked herring."], "kipper": ["A large salted and smoked herring.", "To expose food to the smoke of wood fires in order to preserve it."], "fan": ["A hand-held device to agitate or move air or other gas.", "A device that provides air circulation in a closed environment by rotating an helix, in order to cool down someone or something.", "A follower or admirer who likes, knows about, and appreciates a particular interest or activity.", "To blow air on (something) by means of a fan (hand-held, mechanical or electrical) or otherwise."], "Aberdeen": ["Scotland's third largest city with an official population of 202,370, and one of Scotland's 32 local government council areas."], "bioluminescent": ["Of an organism: able to produce light."], "blonde": ["A woman with blond-coloured hair."], "blood heat": ["Temperature of the body; normally 37\u00b0C in humans."], "blood money": ["Money obtained ruthlessly and at a cost of suffering to others.", "Compensation paid by the killer or the killer's family to the family of the killed person."], "blood poisining": ["An infection of the blood."], "Lakalei": ["A language of East Timor."], "Kenyi": ["A language of Uganda."], "Laki": ["A language of Iran."], "Remun": ["A language of Malaysia (Sarawak)."], "Laeko-Libuat": ["A language of Papua New Guinea."], "Lakona": ["A language of Vanuatu."], "Lala-Roba": ["A language of Nigeria."], "Lolo": ["A language of Mozambique."], "Lele": ["A language of Guinea.", "A language of Chad."], "Hermit": ["An extinct language of Papua New Guinea."], "hermit": ["A religious recluse; someone who lives alone for religious reasons."], "Lole": ["A language of Indonesia (Nusa Tenggara)."], "Teke-Laali": ["A language of Congo."], "Lelak": ["A language of Malaysia (Sarawak)."], "Lilau": ["A language of Papua New Guinea."], "Lasalimu": ["A language of Indonesia (Sulawesi)."], "North Efate": ["A language of Vanuatu."], "Lolak": ["A language of Indonesia (Sulawesi)."], "Lithuanian Sign Language": ["A sign language used in Lithuania."], "Lau": ["A language of Solomon Islands."], "Lauan": ["A language of Fiji."], "East Limba": ["A language of Guinea and Sierra Leone."], "Merei": ["A language of Vanuatu."], "Limilngan": ["An extinct indigenous language of Australia formerly spoken in the Arnhem Land region."], "P\u00e9v\u00e9": ["A language of Chad and Cameroon."], "South Lembata": ["A language of Indonesia (Nusa Tenggara)."], "Lamogai": ["A language of Papua New Guinea."], "Lambichhong": ["A language of Nepal."], "West Lembata": ["A language of Indonesia (Nusa Tenggara)."], "Lamkang": ["A language of India and Myanmar."], "Hano": ["A language of Vanuatu."], "Limbum": ["A language of Cameroon and Nigeria."], "Lamatuka": ["A language of Indonesia (Nusa Tenggara)."], "blood-red": ["The deep-red color of blood."], "Lamalera": ["A language of Indonesia (Nusa Tenggara)."], "Lematang": ["A language of Indonesia (Sumatra)."], "Lamenu": ["A language of Vanuatu."], "Lomaiviti": ["A language of Fiji."], "Laimbue": ["A language of Cameroon."], "Lamboya": ["A language of Indonesia (Nusa Tenggara)."], "Langbashe": ["A song of the Central African Republic and the Democratic Republic of the Congo."], "Mbalanhu": ["A language of Namibia."], "Languedocien": ["An Occitan dialect spoken by some people in the part of southern France known as Languedoc, Rouergue, Quercy, Agenais and Southern P\u00e9rigord.", "A language of France."], "Lundayeh": ["A language of Indonesia (Kalimantan), Brunei and Malaysia."], "Langobardic": ["An ancient language of Hungary and Northern Italy. 4th - 9th century AD."], "unripe": ["That is not yet ripe (edible fruit), usually hard and sour."], "raw": ["That has not been cooked (food).", "Bare-bones; nothing else."], "blood sausage": ["A dark sausage made of pig's blood, diced pork fat, and other ingredients such as onions and breadcrumbs."], "bloodstain": ["A spot or stain made by blood."], "blower": ["A device that produces a current of air."], "Cleopatra VII": ["A Hellenistic ruler of Egypt, originally sharing power with her father Ptolemy XII and later with her brothers/husbands Ptolemy XIII and Ptolemy XIV; eventually gaining sole rule of Egypt. (source: Wikipedia)"], "bluebottle": ["A composite plant, Centaurea cyanus, having narrow leaves and blue flower heads.", "A jelly-like marine invertebrate of the family Physaliidae."], "cornflower": ["A composite plant, Centaurea cyanus, having narrow leaves and blue flower heads.", "A shade of blue found in cornflowers."], "Lantanai": ["A language of Papua New Guinea."], "Leningitij": ["An extinct language of Australia."], "blueprint": ["A photographic print of technical drawings."], "blunder": ["A foolish error, especially one made in public."], "blunderer": ["Someone who makes mistakes because of incompetence."], "bristle": ["A stiff or coarse animal hair.", "A stiff, tapering feather with a large rachis but few barbs."], "European garden spider": ["(Araneus diadematus) A very common and well-known orb-weaver spider in Western Europe."], "necklace": ["An article of jewelry that is worn around the neck."], "Las Vegas": ["The most populous city in the state of Nevada, United States, the seat of Clark County, and an internationally renowned major resort city for gambling, shopping, and entertainment. (source: Wikipedia)"], "boarder": ["Someone who temporarily lives, and takes his meals, in someone else's house."], "boarding-house": ["A house where someone can live and takes meals as paying guest."], "child murderer": ["Someone who has murdered a child."], "Saint-Jean-de-Luz": ["ISO 639-6 entity"], "Toulon": ["French commune, located in the department of Var and the Provence-Alpes-C\u00f4te d'Azur."], "commemoration": ["An observance or celebration designed to honor the memory of some person or event."], "oval": ["Any curve resembling an egg or an ellipse."], "ovoid": ["Any curve resembling an egg or an ellipse.", "Shaped like an egg."], "boarding school": ["A school at which the pupils receive board and lodging during the school term."], "pentagram": ["The shape of a five-pointed star drawn with five straight strokes."], "pentalpha": ["The shape of a five-pointed star drawn with five straight strokes."], "pentangle": ["The shape of a five-pointed star drawn with five straight strokes."], "San Sebasti\u00e1n": ["The capital city of the province of Gipuzkoa, in the Basque Country, Spain."], "Valladolid": ["An industrial city and it is a municipality in north-central Spain. The capital of the province of Valladolid and of the autonomous community of Castile and Leon,", "A province of central/northwest Spain, in the central part of the autonomous community of Castile and Le\u00f3n."], "Soviet": ["Pertaining to the Soviet Union or its constituent republics."], "nominate": ["To name someone for a particular role or position, including that of an office."], "Burgos": ["A city of northern Spain, at the edge of the central plateau. It is the capital of the province of Burgos in the autonomous community of Castilla y Le\u00f3n.", "A province of northern Spain, in the northeastern part of the autonomous community of Castile and Le\u00f3n."], "coordinate": ["A number representing the position of a point along a line, arc, or similar one-dimensional figure.", "To bring order and organization to.", "To bring (components or parts, e.g., a car's wheels) into proper or desirable coordination correlation."], "creator": ["One who creates or makes something."], "larva": ["A stage of growth for some insects, in which they are wingless and resemble a caterpillar or grub after hatching from their egg.", "An animal at the larva stage."], "boathouse": ["A building, usually built partly over water, for sheltering a boat or boats."], "boatswain": ["A petty officer on a ship, responsible for the ship's equipment and for controlling the work of the crew."], "shipyard": ["A place for constructing, repairing and storing vessels out of the water."], "neonaticide": ["The killing of a newborn, usually immmediately after birth."], "bobbin": ["A winder around which thread can be wound."], "bodyguard": ["A guard to protect an important person."], "uroscopy": ["The historic medical practice of visually examining a patient's urine in order to make a diagnosis."], "bollard": ["A short post on a wharf around which ropes are fastened.", "A strong vertical post of timber or iron, fixed on the deck of a ship, to which the ship's mooring lines etc. are secured."], "grill": ["To cook food, often meat or fish, over glowing charcoal.", "To cook without any added liquid and at high temperature, such as on a electric grill, a barbecue or an oven."], "roast": ["To cook (food, commonly bread) using a dry heat.", "To expose to heat without adding fat or water until it is cooked, has a brown crust and becomes crispy."], "compact": ["Consisting of components very close to each other."], "packed": ["Consisting of many people very close to each other."], "crowded": ["Consisting of many people very close to each other."], "glorious": ["That has achieved glory.", "Deserving praise; worth to be praised."], "Union of Myanmar": ["A country in Southeast Asia that is located partially on the Indian subcontinent and has borders with Bangladesh, China, India, Laos and Thailand."], "bombardment": ["An attack with bombs."], "bomber": ["A combat aircraft designed to carry and drop bombs."], "quintet": ["A musical composition scored for five voices or instruments."], "quintette": ["A musical composition scored for five voices or instruments."], "yoga": ["A Hindu discipline aimed at training the consciousness for a state of perfect spiritual insight and tranquillity; especially a system of exercises practiced to promote control of the body and mind."], "bookshop": ["A store where books are sold."], "glass eye": ["An artificial eye made of glass."], "flip-flop": ["A flat sandal, usually of rubber, secured by two straps mounted between the big toe and its neighbour."], "arms": ["The two arms of a human being considered as a whole."], "debtee": ["A party (e.g. person, organization, company, or government) that has a claim to the properties or services of a second party."], "mob": ["Disparaging term for the common people.", "To press tightly together or cram."], "freight": ["The goods transported by a vehicle such as a truck, a ship, a train, an airplane, etc."], "torment": ["Anger produced by some annoying irritation", "Pain, anguish or misery, either physical or mental.", "to cause or inflict pain or suffering."], "freight train": ["A train which is exclusively intended for the transport of goods."], "boredom": ["The state of being bored."], "botcher": ["Someone who makes mistakes because of incompetence."], "bothersome": ["Causing vexation, irritation or annoyance.", "Causing bother or annoyance."], "bungler": ["Someone who makes mistakes because of incompetence."], "continuation": ["That act or state of continuing.", "That which extends, increases, supplements, or carries on.", "Any work of literature, film, theater, or music that continues and extends the story of some earlier work."], "officially": ["In an official manner."], "practically": ["In practice, in effect. Not necessarily officially the case but what actually occurs.", "Almost, not completely."], "uniquely": ["In a unique manner."], "immediate": ["Happening right away, instantly, with no delay.", "Very close; direct or adjacent."], "immediately": ["In an immediate manner; instantly or without delay.", "Bearing an immediate relation.", "Near or close by.", "In the time directly following on the present moment."], "relatively": ["Proportionally, in relation to some larger scale thing."], "definitive": ["Definite, authoritative and complete."], "definitively": ["In a definitive manner."], "delay": ["Time during which some action is awaited.", "To put off until a later time.", "Act of putting off to a future time."], "easily": ["With ease."], "exclusively": ["Without any others being included or involved."], "entirely": ["Without any others being included or involved.", "In a whole or complete manner."], "solely": ["Without any others being included or involved."], "clearly": ["In a clear manner."], "previously": ["At a time before that."], "slightly": ["To a small extent or degree."], "somewhat": ["To a small extent or degree."], "partial": ["Existing as a part or portion; incomplete.", "Biased in favor of a person, side, or point of view, especially when dealing with a competition or dispute."], "unfair": ["Biased in favor of a person, side, or point of view, especially when dealing with a competition or dispute."], "partially": ["In part, to some degree, not totally or wholly.", "In part; in some degree; not wholly."], "specifically": ["For a specific purpose or reason.", "For a specific purpose or reason."], "constant": ["Unchanged through time or space; permanent.", "Not subject or susceptible to change or variation in form or quality or nature."], "constantly": ["At all times.", "Constantly during a certain period, or regularly at stated intervals.", "In a constant manner; occurring continuously; persistently."], "historically": ["In a historic manner; as has been done most often in the past."], "concretely": ["In a concrete manner, physically, definitely."], "appropriately": ["In an appropriate manner."], "perfectly": ["In a perfect manner or degree."], "popularly": ["In a popular manner; so as to be generally favored or accepted by the people."], "necessarily": ["In a necessary manner; by necessity.", "In a manner that is impossible to avoid or prevent."], "substantially": ["To a great extent or degree."], "considerably": ["To a great extent or degree."], "noteworthy": ["Worthy of notice."], "notably": ["In a notable manner.", "[Used to indicate a notable or particular example of a previous mentioned group]."], "lynch": ["To commit an act of violence by a mob upon the body of another person.", "To commit an act of violence by a mob upon the body of another person."], "formally": ["In a formal manner."], "with formality": ["In a formal manner."], "bottleneck": ["A narrow entrance or passageway.", "The narrow portion near the opening of a bottle."], "bottle opener": ["An opener for removing caps or corks from bottles."], "typical": ["Capturing the overall sense of a thing; representing something by a form, model, or resemblance."], "typically": ["In a typical or common manner."], "deeply": ["At depth, in a deep way."], "profoundly": ["At depth, in a deep way."], "simultaneous": ["Occurring or transpiring at the same time."], "simultaneously": ["Occurring at the same time.", "At the same time."], "occasional": ["Limited to certain occasions; not very often."], "occasionally": ["From time to time."], "slowly": ["At a slow pace."], "jointly": ["Together, acting as one."], "independently": ["In an independent manner."], "surely": ["With certainty."], "for sure": ["With certainty."], "for certain": ["With certainty."], "sure enough": ["With certainty."], "sure as shooting": ["With certainty."], "elongated": ["Extensive in length.", "Having a shape with one dimension of much greater length than the others."], "Brighton": ["A city located on the south coast of England, and together with its immediate neighbour Hove forms the city of Brighton and Hove."], "Belfast": ["The capital of Northern Ireland. It is the largest urban area in Northern Ireland and the province of Ulster and the second-largest city in Ireland."], "Brisbane": ["The state capital of Queensland. Brisbane is the third largest city in Australia and most populous city of Queensland."], "Cartagena": ["A Spanish Mediterranean city and naval station in the southeast of the Iberian Peninsula in the autonomous community of Region of Murcia.", "A large city seaport on the northern coast of Colombia and the capital of the Bol\u00edvar Department."], "gay": ["Characteristic of homosexual appearance or behavior.", "In good spirits."], "GPL": ["A widely used free software license, originally written by Richard Stallman for the GNU project."], "GNU General Public License": ["A widely used free software license, originally written by Richard Stallman for the GNU project."], "Castell\u00f3n": ["A province in the northern part of the Valencian Community, Spain. It is bordered by the provinces of Valencia, Teruel, Tarragona, and the Mediterranean Sea."], "healing": ["The act or process of regaining health."], "bottomless": ["Having no bottom."], "bottommost": ["Farthest down."], "Germania": ["The Latin exonym for a geographical area of land on the east bank of the Rhine (inner Germania), which included regions of Sarmatia, as well as an area under Roman control on the west bank of the Rhine. (source: Wikipedia)"], "botulism": ["A rare, but serious paralytic illness caused by a toxin, botulin, that is produced by the bacteria Clostridium botulinum."], "gust": ["Sudden, violent and short blast of wind."], "squall": ["Sudden, violent and short blast of wind."], "flurry": ["Sudden short airflow."], "bounty": ["The trait of being willing to give.", "Generosity in giving."], "Faith": ["Female first name."], "Faithe": ["Female first name."], "duplicate key": ["A key which is a copy of another key (often made without permission)."], "bowsprit": ["A spar, extending forward from the stem of a sailing vessel, to which the stays of the foremast are fastened."], "brainchild": ["A product of one's creative work or thought."], "brake fluid": ["The fluid used in a brake system."], "brandy": ["An alcoholic liquor distilled from wine or fermented fruit juice.", "Alcoholic beverage that is produced by distillation as opposed to ethanol fermentation."], "Darling's disease": ["A lung disease caused by the fungus Histoplasma capsulatum with symptoms similar to those of influenza."], "South Central Banda": ["A language of the Central African Republic and the Democratic Republic of the Congo."], "Langam": ["A language of Papua New Guinea."], "Lorediakarkar": ["A language of Vanuatu."], "Lamnso'": ["A language of Cameroon and Nigeria"], "Lintang": ["A language of Indonesia (Sumatra)."], "Longuda": ["A language of Nigeria."], "Lonzo": ["A language of Democratic Republic of the Congo."], "Loloda": ["A language of Indonesia (Maluku)."], "Lobi": ["A Gur language spoken in Burkina Faso and the Ivory Coast."], "Inonhan": ["A language of Philippines."], "Berawan": ["A language of Malaysia (Sarawak)."], "Coastal Saluan": ["A language of Indonesia (Sulawesi)."], "Loma": ["A language of the C\u00f4te d'Ivoire.", "A language of Liberia."], "breakfast room": ["A room where breakfast is eaten."], "have breakfast": ["To eat breakfast."], "Deauville": ["French seaside resort in the Calvados d\u00e9partement in the Basse-Normandie region."], "erectile dysfunction": ["A sexual dysfunction characterized by the inability to develop or maintain an erection of the penis."], "ED": ["A sexual dysfunction characterized by the inability to develop or maintain an erection of the penis.", "A medical treatment facility specialized in treating patients that need to be taken care of quickly without prior appointment."], "male impotence": ["A sexual dysfunction characterized by the inability to develop or maintain an erection of the penis."], "impotence": ["A sexual dysfunction characterized by the inability to develop or maintain an erection of the penis."], "impotent": ["Unable to develop or maintain an erection of the penis."], "breadwinner": ["The member of a household who earns all or most of the income."], "break-in": ["The act of entering with the intent to steal."], "break in": ["The act of entering with the intent to steal.", "To make obedient, docile and tractable; to train to follow orders of the owner. \u2003"], "breakneck": ["Dangerously fast."], "breakout": ["An escape from any restrictive or confining situation."], "breakwater": ["A construction in or around a harbour designed to break the force of the sea and to provide shelter for vessels lying inside."], "bream": ["A European fresh-water cyprinoid fish of the genus Abramis."], "breastbone": ["The central narrow bone in the front of the chest."], "wooden": ["Made or consisting of wood."], "breastplate": ["Armor plate that protects the chest.", "A armor plate that protects the chest; the front part of a cuirass."], "breastpocket": ["A pocket inside of a man's coat."], "breast pocket": ["A pocket inside of a man's coat."], "breaststroke": ["A swimming style swum on the breast."], "crisp up": ["To render crispy again using heat (for example pastry)."], "Christopher": ["Male first name."], "Christian name": ["Name that is given to a person after birth and usually precedes the family name."], "forename": ["Name that is given to a person after birth and usually precedes the family name."], "micturate": ["To allow urine to flow from the bladder out of the body."], "piss": ["To allow urine to flow from the bladder out of the body.", "Liquid excrement consisting of water, salts and urea, which is made in the kidneys, stored in the bladder, then released through the urethra."], "tinkle": ["To allow urine to flow from the bladder out of the body."], "wee": ["To allow urine to flow from the bladder out of the body.", "(used informally) very small."], "deodorant": ["Substance applied to the body, most frequently the armpits, to reduce the body odor caused by the bacterial breakdown of perspiration."], "breathtaking": ["Thrillingly beautiful.", "Very surprising or shocking, causing astonishment."], "breechcloth": ["A cloth worn to cover the loins."], "loincloth": ["A thong underwear or swimsuit, a narrow piece of cloth, leather, or plastic, that covers or holds the genitals, passes between the buttocks, and is attached to a band around the hips.", "A cloth worn to cover the loins."], "breeze": ["A slight wind."], "brewery": ["A place where beer is brewed by fermentation."], "bribery": ["Practice of giving or accepting a bribe."], "xanthelasma": ["A sharply demarcated yellowish collection of cholesterol underneath the skin, usually on or around the eyelids."], "Mornay sauce": ["B\u00e9chamel sauce with shredded or grated cheese added."], "bridesmaid": ["A young woman who attends the bride at a wedding ceremony."], "bridle": ["A piece of equipment used to control a horse."], "bridle path": ["A trail for horses."], "bridle road": ["A trail for horses."], "briefcase": ["A flat, rectangular case with a handle, often of leather, used for carrying papers or books."], "brigade": ["Army unit smaller than a division."], "brilliance": ["Extreme brightness."], "brim": ["The top edge of anything hollow."], "brimful": ["Full to the brim."], "brimfull": ["Full to the brim."], "inability": ["The lack of ability to do something."], "brink": ["The upper edge of a steep."], "brisk": ["For a color or a light: particularly strong and attracting gaze."], "Briton": ["A native or inhabitant of Great Britain."], "broach": ["A spit for roasting meat."], "broad-minded": ["Free from prejudice or bigotry."], "brocade": ["Thick heavy expensive material, usually silk, with a raised pattern."], "broke": ["Without money."], "penniless": ["Without money."], "bronchitis": ["An inflammation of the bronchi."], "brunch": ["A meal that serves as both breakfast and lunch."], "brusqueness": ["An abrupt discourteous manner."], "brutal": ["Very cruel or severe."], "brutality": ["A brutal act or practice."], "budgetary": ["Of or relating to a budget."], "Makasar": ["A Malayo-Polynesian language spoken in the southern tip of South Sulawesi island in Indonesia.", "A city in South Sulawesi, Indonesia."], "buffer": ["A device for lessening the force with which a moving object strikes something.", "A region of memory used to temporarily hold data while it is being moved from one place to another."], "complaisant": ["Eager to please."], "bugler": ["Someone who plays a bugle."], "bulldozer": ["A large tractor for clearing obstacles and levelling ground."], "bulletproof": ["Impenetrable by bullets."], "bumper": ["A metal guard, for protecting the front or rear of an automobile."], "bunch": ["A group of things fastened or growing together.", "A number of things taken collectively; any collection in its entirety."], "bundle": ["Several objects bound together."], "bunk": ["A berth in a ship's cabin."], "bunker": ["An underground shelter against bombs."], "burble": ["Something to be carried."], "bureaucratic": ["Of or relating to a bureaucrat or bureaucracy."], "buttermilk": ["The sour liquid remaining after butter has been separated from cream."], "bullfight": ["A Spanish or Portuguese or Latin American spectacle; a matador baits and kills a bull in an arena before many spectators."], "patty": ["A disc-shaped serving of ground meat or meat substitutes."], "burger": ["A hot sandwich typically consisting of a patty of cooked ground beef placed inside a bun along with various vegetables and condiments."], "gas stove": ["A kitchen stove which uses natural gas as a fuel source."], "kitchen stove": ["A kitchen appliance used for cooking food."], "cookstove": ["A kitchen appliance used for cooking food."], "bullfighter": ["A person who participates in a bullfight."], "bullfinch": ["Pyrrhula pyrrhula, is a small passerine bird in the finch family Fringillidae."], "bullock": ["A castrated bull."], "bullring": ["An arena for a bullfight."], "bungle": ["To work or act ineptly or inefficiently."], "Westphalien": ["A language of Germany."], "burglar": ["A thief who enters a building with intent to steal."], "burqa": ["A loose, usually black or light blue robe that is worn by Muslim women, and that covers the body from head to toe."], "busman": ["A person who drives a bus."], "butane": ["A colourless, flammable gas, hydrocarbon with four carbon atoms."], "propane": ["A colourless, flammable gaseous hydrocarbon with three carbon atoms"], "Lou": ["A language of Papua New Guinea."], "cab": ["A vehicle that may be hired for single journeys by members of the public and driven by a taxi driver."], "cabaret": ["A nightclub providing short programs of live entertainment."], "Loko": ["A language of Sierra Leone.", "An Upper Cross River language of Nigeria."], "Mongo-Nkundu": ["A Bantu language spoken by several of the Mongo peoples in central Democratic Republic of the Congo, mostly south of the Congo River."], "Malawi Lomwe": ["A language of Malawi."], "Lombo": ["A language of Democratic Republic of the Congo."], "cackhanded": ["Lacking grace or skill in manner or movement or performance."], "ethane": ["A colourless, flammable gaseous hydrocarbon with two carbon atoms."], "pentane": ["A colourless, flammable liquid hydrocarbon with five carbon atoms."], "hexane": ["A colourless, flammable liquid hydrocarbon with six carbon atoms."], "heptane": ["A colourless, flammable liquid hydrocarbon with seven carbon atoms."], "octane": ["A colourless, flammable liquid hydrocarbon with eight carbon atoms."], "nonane": ["A colourless, liquid hydrocarbon with nine carbon atoms."], "decane": ["A colourless, liquid hydrocarbon with ten carbon atoms."], "procrustean": ["Marked by arbitrary often ruthless disregard of individual differences or special circumstances"], "cable railway": ["A railway on which the cars are pulled by a moving cable."], "cactaceous": ["Belonging to the Cactaceae, the cactus family of plants."], "caducity": ["The frailty of old age."], "senility": ["The frailty of old age."], "baffled": ["Perplexed by many conflicting situations or statements; filled with bewilderment."], "befuddled": ["Perplexed by many conflicting situations or statements; filled with bewilderment."], "bewildered": ["Perplexed by many conflicting situations or statements; filled with bewilderment."], "confounded": ["Perplexed by many conflicting situations or statements; filled with bewilderment."], "confused": ["Perplexed by many conflicting situations or statements; filled with bewilderment.", "Having lost your bearings; confused as to time or place or personal identity."], "at sea": ["Perplexed by many conflicting situations or statements; filled with bewilderment."], "mixed-up": ["Perplexed by many conflicting situations or statements; filled with bewilderment."], "lost": ["Perplexed by many conflicting situations or statements; filled with bewilderment.", "Past participle of the verb to lose.", "No longer in your possession or control; unable to be found or recovered.", "Spiritually or physically doomed or destroyed.", "Not gained or won.", "Incapable of being recovered or regained.", "Having lost your bearings; confused as to time or place or personal identity.", "Deeply absorbed in thought.", "Not caught with the senses or the mind.", "People who are destined to die soon.", "Unable to function without help."], "mazed": ["Perplexed by many conflicting situations or statements; filled with bewilderment."], "ghrelin": ["A hormone produced in the stomach lining and the pancreas that stimulates appetite."], "befall": ["(For an event) Have a real existence."], "bechance": ["(For an event) Have a real existence."], "low-calorie": ["Containing few calories."], "high-calorie": ["Containing a lot of calories."], "garlic powder": ["Dried ground garlic."], "aioli": ["A sauce made of garlic and olive oil."], "cafeteria": ["A business that sells various non-alcoholic drinks, and usually snacks and simple meals (such as breakfasts and lunches) with facilities to consume them."], "caiman": ["Any of several tropical American crocodilians of the genus Caiman."], "cayman": ["Any of several tropical American crocodilians of the genus Caiman."], "calciferous": ["Of, forming, or containing calcium."], "calculable": ["Capable of being calculated."], "calculate": ["To keep an account of.", "To make a mathematical calculation or computation."], "guacamole": ["Avocado-based dip in Mexican cuisine."], "vegan": ["Someone who does not use or consume animal products of any kind.", "Pertaining to vegans or veganism."], "violets": ["A genus of flowering plants in the family Violaceae."], "highness": ["Title used to address a royal person."], "cherry picking": ["Selecting only the best from a group or other range of choices."], "calender": ["A table showing the months and days of the year."], "calligrapher": ["Someone skilled in penmanship."], "callus": ["A hardened or thickened part of the skin."], "rice vinegar": ["A vinegar made from fermented rice or rice wine."], "cenotaph": ["Tomb or monument for a person or group of persons whose remains are elsewhere."], "mass grave": ["A grave containing multiple, often unidentified human corpses."], "binocular": ["Relating to both eyes."], "cambric": ["A finely woven white linen."], "camp bed": ["A small bed that folds up for storage or transport."], "Luwian": ["An extinct language of the Anatolian branch of the Indo-European language family which was spoken in the 2nd millennium BC."], "Luvian": ["An extinct language of the Anatolian branch of the Indo-European language family which was spoken in the 2nd millennium BC."], "Hieroglyphic Luwian": ["A variant of the Luwian language written in a hieroglyphic script known as Anatolian hieroglyphs."], "Cuneiform Luwian": ["A variant of the Luwian language written in the cuneiform script used in Hittite."], "camphor": ["A resin obtained from the camphor tree."], "mantou": ["Steamed bun made of flour, water and yeast originating from Chinese cuisine.", "A small dumpling filled with seasoned ground meat popular in Turkish cuisine."], "Chinese steamed bun": ["Steamed bun made of flour, water and yeast originating from Chinese cuisine."], "milk farmer": ["Farmer who specializes in the production of milk; the owner of a diary."], "dairy farmer": ["Farmer who specializes in the production of milk; the owner of a diary."], "Low Saxon": ["A language of Germany"], "camshaft": ["An engine shaft fitted with a cam or cams."], "candid": ["Free from prejudice; impartial.", "Characterized by directness in manner or speech; without subtlety or evasion.", "Informal or natural; especially caught off guard or unprepared.", "Straightforward and direct without reserve or secretiveness.", "A spontaneous or unposed photograph."], "candidacy": ["The state, or act of being a candidate."], "candlewick": ["A string that holds the flame of a candle."], "cane sugar": ["Sugar obtained from sugar cane."], "cannery": ["A factory where foodstuffs, as meat, fish, vegetables or fruit are canned."], "cannibalism": ["Eating other individuals of one's own species.", "The eating of human flesh."], "cannon ball": ["A round projectile fired from a cannon."], "canoe": ["A light narrow boat driven by a paddle."], "can opener": ["A device for opening cans."], "canteen": ["A place where meals are sold in a factory or school."], "whisper burner": ["An additional valve in the burner of hot air balloons conceived to make the burner less noisy, in order not to scare the cows or other grazing animals."], "cow burner": ["An additional valve in the burner of hot air balloons conceived to make the burner less noisy, in order not to scare the cows or other grazing animals."], "blazer": ["A sports jacket."], "immaculate": ["Without fault or error."], "impeccable": ["Without fault or error."], "capon": ["Castrated male chicken."], "caprice": ["A sudden, unpredictable change as of one's mind."], "quench one's thirst": ["To drink enough to satisfy thirst."], "quench thirst": ["To satisfy thirst.", "To drink enough to satisfy thirst."], "capriole": ["A playful leap."], "capsule": ["A gelatinous case enclosing a dose of medicine."], "captivity": ["The state or period of being held, imprisoned."], "carafe": ["A bottle with a stopper; for serving wine or water."], "caramel": ["An edible, sweet-tasting confection containing sugar."], "carat": ["A measure of weight for precious stones; 200 milligrams.", "The unit of measurement for the proportion of gold in an alloy."], "carbine": ["A lightweight rifle with a short barrel."], "carburettor": ["A device that blends air and fuel for an internal combustion engine."], "carcinogenic": ["A cancer-causing substance or agent.", "Causing cancer."], "cardboard": ["A stiff kind of paper often made up of several layers."], "carotid": ["Either of the two major arteries, one on each side of the neck, that carry blood to the head."], "oval track": ["A dedicated motorsport circuit, primarily in the USA, which differs from a road course in that it only has turns in one direction, which is almost always left. (source: Wikipedia)"], "Varadero": ["Resort town in the province of Matanzas, Cuba, and one of the largest resort areas in the Caribbean."], "carp": ["A tall freshwater fish from the species Cyprinus carpio with a high back, original from Asia.", "Any of various freshwater fish of the family Cyprinidae."], "triple sec": ["A strong, clear liqueur with an orange flavor similar to Cura\u00e7ao. It is used in making Margaritas."], "cashier": ["An employee in a shop.", "A person who receives and pays out money in a bank, a shop, etc.", "A woman who receives and pays out money in a bank, a shop, etc."], "Lopa": ["A language of Nigeria."], "Lobala": ["A language of Democratic Republic of the Congo."], "T\u00e9\u00e9n": ["A Niger\u2013Congo language of Ivory Coast and Burkina Faso."], "Loniu": ["An Austronesian language spoken on Los Negros Island, Papua New Guinea."], "Lopi": ["A language of Myanmar."], "Tampias Lobu": ["A language of Malaysia (Sabah)."], "Loun": ["A language of Indonesia (Maluku)."], "Lowa": ["A language of Nepal."], "Sylt": ["German island in the North Sea and biggest of the North Frisian Islands."], "cashmere": ["The fine, downy wool of the hair of the Kashmir goat."], "cassock": ["Long robe worn by clergymen."], "cashmere wool": ["The fine, downy wool of the hair of the Kashmir goat."], "cashmere shawl": ["Scarf made of cashmere wool."], "cashmere scarf": ["Scarf made of cashmere wool."], "Kashmir": ["A region in the northwest of the Indian subcontinent."], "simplified Chinese": ["The Mandarin language written in the simplified script."], "traditional Chinese": ["The Mandarin language written in the traditional script."], "Kichai": ["An extinct Caddoan language which was spoken in Oklahoma and became extinct in the 1930s."], "Pamlico": ["An extinct Algonquian language formerly spoken in North Carolina, United States."], "Pannonia": ["Ancient province of the Roman Empire bounded north and east by the Danube and encompassing parts of present-day Hungary, Austria, Serbia, Slowenia and Croatia."], "Roman Empire": ["The territory ruled by the city of Rome between the 6th century BC and the 5th or 6th century AD.", "The government at Rome characterized by an autocratic form of government and its subject territory in Europe and the Mediterranean, from 27 BC until 476 AD (Western Roman Empire) and 1453 AD (Eastern Roman Empire with capital in Constantinople)."], "Roman Republic": ["The government at Rome characterized by a republican form of government and its subject territories after the overthrow of the monarchy and before the establishment of the Empire, lasting from 509 BC to 27 BC."], "Kr\u0161ko": ["Town in the south-east part of Slovenia."], "castaway": ["A shipwrecked person."], "caste": ["A social class especially in India."], "Lelepa": ["A language of Vanuatu."], "Lepki": ["A language of Indonesia (Papua)."], "Lipo": ["A Lolo-Burmese language spoken by the Lisu people in the mountainous regions of Burma, Southwest China, Thailand, and the Indian state of Arunachal Pradesh."], "Lara'": ["A language of Malaysia (Sarawak) and Indonesia (Kalimantan)."], "Northern Luri": ["A language of Iran."], "Laurentian": ["An extinct language of Canada."], "Laragia": ["An extinct Australian language isolate formerly spoken near the city of Darwin in northern Australia."], "caster oil": ["A colorless or pale yellowish oil extracted from the seeds of the castor-oil plant, used pharmaceutically as a laxative and skin softener and industrially as a lubricant."], "casualty": ["A person who is wounded or killed in a battle, accident etc."], "catacomb": ["An underground cemetery consisting of chambers or tunnels with recesses for graves."], "kaftan": ["Traditional long garment worn in the countries east of the Mediterranean Sea."], "catafalque": ["A decorated bier on which a coffin rests in state during a funeral."], "cataract": ["An abnormality of the eye, characterized by opacity of the lens.", "A large and powerful waterfall."], "catarrh": ["Inflammation of mucous membranes, causing a discharge of thick fluid."], "catastrophic": ["Of, relating to, or involving a catastrophe."], "catechism": ["An elementary book containing a summary of the principles of the Christian religion."], "categorical": ["Without exceptions or conditions.", "Not modified or restricted by reservations."], "caterpillar": ["The wormlike larva of a butterfly or moth."], "catfish": ["Any of the numerous fishes of the order or suborder Siluroidei, characterized by barbels around the mouth and the absence of scales."], "Catholicism": ["The faith, system, and practice of the Catholic Church."], "iced tea": ["Drink made of cooled tea, often served with ice cubes, lemon juice and sugar."], "burek": ["Turkish pie made of yufka dough filled with minced meat, cheese, spinach or other vegetables."], "boereg": ["Turkish pie made of yufka dough filled with minced meat, cheese, spinach or other vegetables."], "b\u00f6rek": ["Turkish pie made of yufka dough filled with minced meat, cheese, spinach or other vegetables."], "Khmer numeral": ["The numerals used in the Khmer language."], "causality": ["The relation of cause and effect."], "caption": ["A piece of text appearing on screen as part of a film or broadcast."], "causation": ["The action of causing or producing."], "caution": ["Alertness and prudence in a hazardous situation."], "racist": ["An advocate of racism.", "Of, relating to, or advocating racism."], "caveman": ["A prehistoric or primitive human living in a cave.", "Prehistoric, primitive human living in caves."], "cavity wall": ["A wall built with an enclosed inner space to prevent penetration by water."], "cavy": ["Several species of mammal in the family Caviidae, a family of rodents native to South America."], "German South-West Africa": ["From 1884 until 1915 a German colony on the territory of present-day Namibia."], "German East Africa": ["From 1885 until 1918 a German colony, including present-day Burundi, Rwanda and Tanzania (without Zanibar)."], "catmab": ["An antibody with catalytic activity."], "celebrated": ["Widely known and esteemed."], "cellar": ["The lowermost portion of a building, partly or wholly below ground level, often used for storage."], "tsar": ["Title of the monarch of Russia, at times also of Bulgaria and Serbia."], "czar": ["Title of the monarch of Russia, at times also of Bulgaria and Serbia."], "tzar": ["Title of the monarch of Russia, at times also of Bulgaria and Serbia."], "tsarina": ["Title of a female monarch of Russia, Serbia or Bulgaria or the wife of the monarch."], "czarina": ["Title of a female monarch of Russia, Serbia or Bulgaria or the wife of the monarch."], "tzarina": ["Title of a female monarch of Russia, Serbia or Bulgaria or the wife of the monarch."], "tsarevich": ["Title of the sons of a Russian tsar."], "tsarevitch": ["Title of the sons of a Russian tsar."], "czarevitch": ["Title of the sons of a Russian tsar."], "tzarevitch": ["Title of the sons of a Russian tsar."], "tsesarevich": ["Title of the crown prince of Russia."], "fiend": ["Evil spirit or person that is wicked or cruel in their actions."], "cellophane": ["A thin, flexible, transparent cellulose material made from wood pulp and used as a moistureproof wrapping."], "cellulite": ["Lumpy fat deposits, esp. in the thighs and buttocks."], "Celt": ["A member of an Indo-European people now represented chiefly by the Irish, Gaels, Welsh, and Bretons."], "Kelt": ["A member of an Indo-European people now represented chiefly by the Irish, Gaels, Welsh, and Bretons."], "censer": ["A container, usually covered, in which incense is burned, esp. during religious services."], "thurible": ["A container, usually covered, in which incense is burned, esp. during religious services."], "centenarian": ["A person who is a hundred or more years old."], "meat grinder": ["A culinary tool for grinding meat."], "meat mincer": ["A culinary tool for grinding meat."], "measuring cup": ["A kitchen utensil used to measure the volume of liquid or powder-form cooking ingredients such as water, milk, juice, flour, and sugar"], "deep fryer": ["Electric kitchen appliance used to deep-fry food in hot oil or fat."], "pepper mill": ["A mechanical or electromechanical device used to grind peppercorn."], "salad spinner": ["Kitchen ustensil which removes excessive water from washed lettuce leafs via rotation."], "cheese cover": ["Cover made of glass used to protect cheese and other food from smell or bugs."], "garlic press": ["A kitchen utensil designed to crush garlic cloves efficiently by forcing them through a grid of small holes, usually with some type of piston."], "cheese slicer": ["Kitchen utensil used to cut thin slices from a piece of cheese."], "egg slicer": ["Food preparation utensil used to slice peeled, hard-boiled eggs quickly and evenly."], "potato masher": ["Food preparation utensil used to crush cooked potatoes or other vegetables."], "bean masher": ["Food preparation utensil used to crush cooked potatoes or other vegetables."], "waffle iron": ["Cooking appliance used to make waffles which consists of two heatable metal plates between which the batter is baked."], "rice cooker": ["An electric device used for cooking rice."], "rice steamer": ["An electric device used for cooking rice."], "breast augmentation": ["Surgical procedure where implants are inserted into a woman's breast in order to enlarge the size."], "breast enlargement": ["Surgical procedure where implants are inserted into a woman's breast in order to enlarge the size."], "mammoplasty enlargement": ["Surgical procedure where implants are inserted into a woman's breast in order to enlarge the size."], "boob job": ["Surgical procedure where implants are inserted into a woman's breast in order to enlarge the size."], "stalking": ["The crime of following or harassing another person, causing him or her to fear death or injury"], "centipede": ["Any of various flattened, wormlike arthropods of the class Chilopoda, whose bodies are divided into many segments, each with one pair of legs."], "hollow of the knee": ["Shallow depression at the back of the knee-joint."], "durian": ["The fruit of various trees of the genus Durio found throughout Southeast Asia."], "SS": ["Paramilitary organisation of the German Nazi Party which was instrumental in committing war crimes and genocide during the Second World War."], "Yalta": ["Health and holiday resort with subtropical climate on the southern coast of the Crimean peninsula in the Black Sea in the Ukraine."], "generosity": ["The trait of being willing to give."], "centralize": ["To make central; to bring under a single, central authority."], "centripetal": ["Directed toward the center."], "centurion": ["In the ancient Roman army, an officer who had the command of a hundred men."], "ceremony": ["A formal event performed on a special occasion."], "chaff": ["The dry bracts enclosing mature grains of wheat and some other cereal grasses, removed during threshing."], "engine break-in": ["A process that allows an engine to wear down the high spots of its internal irregularities, providing a smoother surface before the engine experiences the rigors of normal use."], "chainsaw": ["A power saw with cutting teeth linked in an endless chain."], "chain-smoker": ["A heavy smoker who lights one cigarette from the preceding one."], "chalice": ["A wine-cup, especially one used in religious services."], "challenger": ["A person or thing that challenges."], "chambermaid": ["A maid who cleans and cares for bedrooms, as in a hotel."], "chamber music": ["Music for a small group of players, suitable for a room rather than a large hall."], "chamber of horrors": ["A place for the exhibition of gruesome or horrible objects."], "thoracic diaphragm": ["A sheet of muscle extending across the bottom of the ribcage, it separates the diafragma from the abdominal cavity and performs an important function in respiration."], "chamomile": ["Any of several distinct species in the sunflower family (Asteraceae)."], "chandelier": ["A decorative, sometimes ornate, light fixture suspended from a ceiling, usually having branched supports for a number of lights."], "changeability": ["The quality of being changeable."], "trampoline": ["A sports device used to jump and perform acrobatic figures; it consists of a fabric stretched over a steel frame and fixed with coiled springs."], "minced meat": ["Meat finely chopped by a meat grinder."], "mince meat": ["Meat finely chopped by a meat grinder."], "ground beef": ["Beef finely chopped by a meat grinder."], "beef mince": ["Beef finely chopped by a meat grinder."], "minced pork": ["Pork finely chopped by a meat grinder."], "ground pork": ["Pork finely chopped by a meat grinder."], "augmentation mammoplasty": ["Surgical procedure where implants are inserted into a woman's breast in order to enlarge the size."], "changeless": ["Not subject or susceptible to change or variation in form or quality or nature."], "steadfast": ["Not subject or susceptible to change or variation in form or quality or nature.", "Marked by firm determination or resolution; not shakable."], "sunstroke": ["A serious illness caused by being in very hot sunshine for too long.", "A body temperature greater than 40.6 \u00b0C due to environmental heat exposure with lack of thermoregulation."], "changeover": ["A conversion to a different purpose or from one system to another, as in equipment or production techniques."], "vitiligo": ["Usually progressive, chronic pigmentary anomaly of the skin manifested by depigmented white patches that may be surrounded by a hyperpigmented border."], "crus": ["The part of the leg between knee and ankle."], "femoral neck fracture": ["Fracture of the neck of the femur (thigh bone)."], "choppy": ["Having many small, rough waves"], "chant": ["A short, simple melody."], "chaos": ["A state of utter confusion or disorder."], "chaotic": ["Completely confused or disordered."], "rollmops": ["Pickled herring fillet rolled around a piece of pickled cucumber or an onion."], "shankbone": ["The larger and stronger of the two bones below the knee of the leg of a biped or hind limb of quadruped."], "shinbone": ["The larger and stronger of the two bones below the knee of the leg of a biped or hind limb of quadruped."], "fibula": ["The thinner of the two bones of the lower leg, located on the lateral side of the tibia."], "calf bone": ["The thinner of the two bones of the lower leg, located on the lateral side of the tibia."], "home fries": ["Potato dish consisting of par-cooked, peeled and sliced potatoes fried in a pan."], "cottage fries": ["Potato dish consisting of par-cooked, peeled and sliced potatoes fried in a pan."], "BLT sandwich": ["A variety of sandwich containing bacon strips, lettuce leaves and sliced tomatoes between slices of bread. It is named after its main ingredients."], "BLT": ["A variety of sandwich containing bacon strips, lettuce leaves and sliced tomatoes between slices of bread. It is named after its main ingredients."], "dermatosis": ["An impairment of health or a condition of abnormal functioning of the skin."], "skin disease": ["An impairment of health or a condition of abnormal functioning of the skin."], "dressing shaker": ["Small bottle with a lid made from glass or plastic which is used to mix salad dressing."], "salad dressing shaker": ["Small bottle with a lid made from glass or plastic which is used to mix salad dressing."], "honey mustard": ["A blend of Dijon mustard and honey."], "charade": ["A piece of ridiculous pretence which is so obvious that it does not deceive anyone."], "charger": ["An apparatus that charges storage batteries."], "charisma": ["Personal magnetism or charm."], "charitable": ["Relating to or characterized by charity."], "charlatan": ["A person fraudulently claiming knowledge and skills not possessed.", "Someone who practices medicine without proper qualifications and/or promotes ineffective medical treatments."], "charmer": ["One who charms, or has power to charm."], "charnel": ["A place for the bones thrown up when digging new graves in old burial grounds."], "charnel house": ["A place for the bones thrown up when digging new graves in old burial grounds."], "charter": ["A formal written record of transactions, proceedings, etc., as of a society, committee, or legislative body.", "To hold under a lease or rental agreement of goods and services."], "chartreuse": ["A green or yellow liqueur made from herbs and flowers."], "chaste": ["Pure in thought and act."], "chasuble": ["A long sleeveless vestment worn by a priest when celebrating Mass"], "chat": ["To talk in a friendly and informal way.", "An instantaneous exchange of text messages through a computer network.", "To exchange text messages through a computer network in real-time."], "talk show": ["A radio or television show in which a host chats with celebrity guests."], "chat show": ["A radio or television show in which a host chats with celebrity guests."], "chatter": ["Purposeless or foolish talk."], "chatterbox": ["An extremely talkative person."], "insolation": ["A measure of solar radiation energy received on a given surface area in a given time."], "mett": ["Minced pork seasoned with salt and pepper which is consumed raw."], "cheapskate": ["A person who is stingy and miserly."], "lama": ["A master of Tibetan Buddhism."], "Lama": ["A language of Togo, Benin and Ghana.", "A language of Myanmar."], "creamery": ["A place where milk is processed and milk products like butter, cheese etc. are produced.", "A place where milk and milk products are sold."], "dairy": ["A place where milk is processed and milk products like butter, cheese etc. are produced."], "cheat": ["To cause someone to believe an untruth; to practice trickery or fraud.", "A person who acts dishonestly.", "A dishonest act.", "To act dishonestly.", "To be sexually unfaithful to one's spouse or lover.", "To be not totally honest when playing a game."], "impostor": ["A person who acts dishonestly."], "swindler": ["A person who acts dishonestly.", "Person who takes part in a deal to make a profit more or less illegally."], "circulation": ["The flow or motion of a fluid."], "pasta salad": ["A salad made of cooked, cold pasta with legumes, meat or seafood, served with vinaigrette or mayonnaise."], "ranch dressing": ["A condiment made of buttermilk or sour cream, mayonnaise, minced green onion, garlic powder, and other seasonings mixed into a sauce."], "ranch": ["A condiment made of buttermilk or sour cream, mayonnaise, minced green onion, garlic powder, and other seasonings mixed into a sauce."], "Abyssinia": ["Historical name of Ethiopia."], "convection": ["Transport of heat and moisture by the movement of a fluid."], "cumulonimbus": ["A cloud type that is dense and vertically developed and is associated with rain (particularly of a convective nature)."], "composite": ["Any material that consists of two or more components, typically one or more of high strength and one an adhesive binder."], "scallion": ["Any onion of the genus Allium that lacks a fully-developed bulb."], "spring onion": ["Any onion of the genus Allium that lacks a fully-developed bulb."], "green onion": ["Any onion of the genus Allium that lacks a fully-developed bulb."], "salad onion": ["Any onion of the genus Allium that lacks a fully-developed bulb."], "checkerboard": ["A board marked off into 100 squares of two alternating colors, arranged in ten vertical and ten horizontal rows, on which checkers is played."], "checklist": ["A list of items required or things to be done or considered."], "checkmate": ["A move that constitutes an inescapable and indefensible attack on a chess opponent's king."], "checkpoint": ["A place along a road or a border, where travelers are stopped for inspection."], "brick house": ["A house built with brick."], "waterlily": ["Any of various members of the Nymphaeaceae family that are tuberous plants, rooted in soil with leaves and flowers floating on the water surface."], "European white waterlily": ["Plant species (Nymphaea alba) from the water lily family (Nymphaeaceae) with white flowers, which grows in standing or slowly flowing waters in Europe, North Africa and the Middle East."], "white lotus": ["Plant species (Nymphaea alba) from the water lily family (Nymphaeaceae) with white flowers, which grows in standing or slowly flowing waters in Europe, North Africa and the Middle East."], "nenuphar": ["Plant species (Nymphaea alba) from the water lily family (Nymphaeaceae) with white flowers, which grows in standing or slowly flowing waters in Europe, North Africa and the Middle East."], "drowned body": ["Body of a drowned person, especially one which has been lying in the water for a long time and is bloated as a result."], "oxtail soup": ["Soup with oxtail as a main ingredient."], "oxtail": ["The tail of a beef animal."], "cheongsam": ["A body-hugging one-piece Chinese traditional dress for women."], "mandarin gown": ["A body-hugging one-piece Chinese traditional dress for women."], "thermocline": ["The layer of water where temperature rapidly changes from warmer to colder water."], "metalimnion": ["The layer of water where temperature rapidly changes from warmer to colder water."], "active sensor": ["A remote-sensing system that transmits its own radiation to detect an object or area for observation and receives the reflected or transmitted radiation."], "ice age": ["A glacial epoch or time of extensive glacial activity."], "isothermal": ["Of or indicating equality of temperature."], "jet stream": ["Fast flowing, relatively narrow air currents found at the tropopause, located at 10-15 kilometers above the surface of the Earth."], "wavelength": ["The distance between consecutive crests of a wave."], "vector-borne disease": ["A disease in which the pathogenic microorganism is transmitted from an infected individual to another individual by an arthropod or other agent, sometimes with other animals serving as intermediary hosts."], "tropopause": ["The zone of transition between the troposphere and the stratosphere."], "thermosphere": ["The second outermost shell of the atmosphere, between the mesosphere and the exosphere."], "check-up": ["An examination or inspection."], "exosphere": ["The uppermost layer of the atmosphere, its lower boundary is estimated at 500 km to 1000 km above the Earth's surface."], "mesosphere": ["The atmospheric layer above the stratosphere, extending from about 50 to 85 kilometers altitude."], "mesopause": ["The upper boundary of the mesosphere where the temperature of the atmosphere reaches its lowest point."], "photoreceptor": ["A sensor sensitive to light."], "Baloch": ["An Iranian people inhabiting the region of Balochistan in the southeast corner of the Iranian plateau in Southwest Asia, including parts of Iran, Afghanistan, and Pakistan."], "Mount Sipylus": ["A mountain rich in legends and history situated near the city of Manisa in Turkey's Aegean Region."], "cheeky": ["Impudent and audacious."], "advection": ["A transport mechanisms of a substance or a conserved property with a moving fluid."], "albedo": ["The fraction of incident light or radiation reflected by a surface or body, commonly expressed as percentage."], "anthropogenic": ["Of or related to the influence of human beings or their ancestors on natural objects."], "Arctic Circle": ["The parallel of latitude that is approximately 66.5 degrees north of the equator and that circumscribes the northern frigid zone."], "cheep": ["The short weak cry of a young bird.", "To make the shrill sound of a young bird."], "cheerful": ["In good spirits."], "cheery": ["In good spirits."], "colour sample": ["A piece of coloured material, a printed piece of paper or an image that is used to show how a certain colour looks like."], "atmospheric pressure": ["Weight of the earth's atmosphere over a unit area of the earth's surface, measured with a mercury barometer at sea level which corresponds to the pressure required to lift a column of mercury 760 mm."], "attenuation": ["The decrease in the magnitude of current, voltage, or power of a signal in transmission between points."], "azimuth": ["The angular distance of an object around or parallel to the horizon from a predefined zero point."], "bioassay": ["A measurement of the effects of a substance on living organisms."], "biological assay": ["A measurement of the effects of a substance on living organisms."], "biogenic": ["Produced by natural processes."], "boreal": ["Comprising or throughout far northern regions."], "cirrus": ["A type of cloud composed of ice crystals and shaped in the form of hairlike filaments."], "coccolithophore": ["A single-celled marine plant that lives in large numbers throughout the upper layers of the ocean."], "conduction": ["The transfer of heat from one substance to another by direct contact."], "Coriolis force": ["The apparent tendency of a freely moving particle to swing to one side when its motion is referred to a set of axes that is itself rotating in space, such as Earth."], "cumulus": ["Clouds forming in the troposphere which are vertically formed with flat bases and fluffy, rounded tops."], "water war": ["A war waged about the possession of or the access to water ressources."], "postwar": ["Belonging to or pertaining to the period after a war."], "prewar": ["Belonging to or pertaining to the period before a war."], "pre-war": ["Belonging to or pertaining to the period before a war."], "post-war": ["Belonging to or pertaining to the period after a war."], "Amagasaki": ["Industrial city located in the Hy\u014dgo Prefecture on Japan's main island Honshu."], "biopic": ["A film that tells the life story of an actual person."], "biographical motion picture": ["A film that tells the life story of an actual person."], "biographical film": ["A film that tells the life story of an actual person."], "misogamy": ["Hatred of or aversion to marriage."], "miso": ["A traditional Japanese paste produced by fermenting rice, barley and/or soybeans, with salt and the fungus k\u014djikin."], "olive green": ["Having the color of a ripe olive, a dark brownish or yellowish green.", "The color or a ripe olive, a dark brownish or yellowish green."], "olive grove": ["A grove of olive trees."], "olive orchard": ["A grove of olive trees."], "detritus": ["A mass of decomposing organic compounds."], "dew": ["Atmospheric moisture that condenses after a warm day and appears during the night on cool surfaces as small drops."], "diurnal": ["Performed in twenty-four hours, such as the diurnal rotation of the Earth."], "doldrums": ["Region near the equator characterized by low pressure and light shifting winds."], "Intertropical Convergence Zone": ["Region near the equator characterized by low pressure and light shifting winds."], "cheerless": ["Lacking cheer."], "cheeseburger": ["A hamburger cooked with a slice of cheese on top of it."], "cheesecake": ["A cake having a firm custardlike texture, made with cream cheese."], "paranoia": ["A personality disorder in which the individual exhibits extreme suspiciousness of the motives of others."], "paraplegia": ["Paralysis of the lower part of the body, including both legs; usually results from injury to, or disease of, the spinal cord."], "pediatrician": ["A doctor who specializes in the care of infants and children, usually until the age of sixteen."], "pediatrics": ["The branch of medicine that deals with the medical care of infants, children, and adolescents."], "rash": ["An area of reddened, irritated, and inflamed skin."], "perinatal": ["Occurring at or immediately after birth."], "perseveration": ["The repeating of words, motions, or tasks."], "postlingual": ["Occurring after the development of language; usually used to classify hearing losses that begin after a person has learned to speak."], "postnatal": ["Occurring after birth.", "The period beginning immediately after the birth of a child and extending for about six weeks in which the mother recovers from pregnancy and birth."], "postpartum": ["Occurring after birth."], "prelingual": ["Related to a hearing impairment acquired before the development of speech and language."], "prevalence": ["The number of people who have a certain condition at any given time."], "psychomotor": ["Of or pertaining to the function of muscles under the control of the mind."], "agnosia": ["An inability to recognize objects and interpret their meaning; typically resulting from damage to the brain."], "anoxia": ["Deficient amount of oxygen in the tissues of a part of the body or in the bloodstream supplying such a part."], "electrical resonance": ["An effect in which the resistance to the flow of an electrical current becomes very small over a narrow frequency range."], "electromagnetic spectrum": ["The range of wavelengths or frequencies over which electromagnetic radiation extends."], "emissivity": ["The ratio of the radiation emitted by a surface to that emitted by a black body at the same temperature."], "fly-off": ["Discharge of water from the earth's surface to the atmosphere by evaporation from lakes, streams and soil surfaces and by transpiration from plants."], "basic research": ["Research designed to produce new understanding of basic underlying principles and processes."], "pure research": ["Research designed to produce new understanding of basic underlying principles and processes."], "cherub": ["An angel with wings and the plump face and body of a child."], "chemo": ["Treatment using anti-cancer drugs, which kill or prevent the growth and division of cells."], "convalesce": ["To return to health and strength after illness."], "recover": ["To return to health and strength after illness.", "To get back or retrieve something."], "convalescent": ["A person who is recovering from illness."], "flatbread": ["Simple flat and round bread made of grain and water, often without yeast or sourdough."], "dystopia": ["A vision of a society with very bad conditions of life, characterized for example by poverty, discrimination, oppression, violence, totalitarian rule, disease, pollution."], "pearl necklace": ["A necklace made of pearls."], "pearl earring": ["Pearl earring."], "e-Government": ["The public sector's use of information and communication technologies with the aim of improving information and service delivery, encouraging citizen participation in the decision-making process and making government more accountable, transparent and effective. (source: UNESCO)"], "flat bread": ["Simple flat and round bread made of grain and water, often without yeast or sourdough."], "hybridization probe": ["(in genetics) A labelled DNA or RNA sequence used to detect the presence of a complementary sequence by hybridization with a nucleic acid sample.\\n(source:FAO)"], "germline": ["A lineage of cells which, during the development of an organism, are set aside as potential gamete-forming tissues."], "mons pubis": ["The small protuberance consisting of subcutaneous fat which protects the female pubic bone."], "mons veneris": ["The small protuberance consisting of subcutaneous fat which protects the female pubic bone."], "crop failure": ["The failure of crops to produce a marketable surplus."], "cigarette stub": ["The non-smoked stub of a cigarette."], "cigarette butt": ["The non-smoked stub of a cigarette."], "cigar butt": ["The non-smoked rest of a cigar."], "cigar stub": ["The non-smoked rest of a cigar."], "barbed wire": ["Intertwined wires with sharp edges or points arranged at regular intervals along the strand."], "liquid soap": ["Soap in liquid form."], "chervil": ["An herb, Anthriscus cerefolium, of the parsley family, having aromatic leaves used to flavor soups, salads, etc."], "chicory": ["A plant of the species Cichorium intybus whose leaves are used in salads and whose root is roasted, ground and mixed with coffee."], "andrology": ["A scientific or medical discipline concerning the study of male reproductive biology, diseases of the male genital organs, and male infertility."], "childproof": ["Made free of hazard for a child."], "physiatry": ["A branch of medicine dealing with functional restoration of a person affected by physical disability."], "physical medicine and rehabilitation": ["A branch of medicine dealing with functional restoration of a person affected by physical disability."], "geomorphological": ["Of or pertaining to geomorphology.", "Pertaining to geological structure."], "relief": ["The physical shape, configuration or general unevenness of a part of the Earth's surface, considered with reference to variation of height and slope or to irregularities of the land surface; the elevation or difference in elevation, considered collectively, of a land surface.", "Action given to provide assistance.", "A sculptured artwork where a modeled form is raised (or alternatively lowered) from a flattened background without being disconnected from it."], "World Network of Biosphere Reserves": ["A set of biosphere reserves established at the International Conference on Biosphere Reserves in Seville in 1995."], "conjugal": ["Of, or relating to marriage, or the relationship of spouses."], "chill": ["Coldness due to a cold environment.", "To make cold.", "To become less tense, rest, or take one's ease.", "To relax, to lie back."], "coffee mill": ["A mill that grinds coffee beans."], "vernacular architecture": ["Methods of construction which use locally available resources to address local needs."], "chiropodist": ["A specialist in care for the feet."], "pedicure": ["A specialist in care for the feet.", "Cosmetic treatment of the feet and toenails."], "chirpy": ["In good spirits."], "eco-friendly": ["Not or minimally harmful to the environment."], "environmentally friendly": ["Not or minimally harmful to the environment."], "environment-friendly": ["Not or minimally harmful to the environment."], "choreographer": ["A person who creates dance compositions especiallly for ballets."], "scientism": ["A pejorative term for the belief that the methods of natural science should be applied to all areas."], "scientistic": ["Of, or pertaining to scientism."], "succade": ["The candied peel of the citron, fruit of citrus medica."], "subphylum": ["A taxonomic rank intermediate between phylum and superclass."], "megaphone": ["A portable funnel-shaped device that is used to amplify a person\u2019s natural voice in a targeted direction."], "air mass": ["A large body of air having similar horizontal temperature and moisture characteristics."], "continental air mass": ["A dry air mass originating over a large land area."], "maritime air mass": ["Moist air mass originating over the ocean."], "barometric pressure": ["Weight of the earth's atmosphere over a unit area of the earth's surface, measured with a mercury barometer at sea level which corresponds to the pressure required to lift a column of mercury 760 mm."], "air pressure": ["Weight of the earth's atmosphere over a unit area of the earth's surface, measured with a mercury barometer at sea level which corresponds to the pressure required to lift a column of mercury 760 mm."], "time machine": ["A ficticious device that allows time travel to the past or future."], "dirty bomb": ["The use of common explosives to spread radioactive materials over a targeted area."], "malware": ["A program that have been designed with or can be used for malicious intent."], "pescetarianism": ["A semi-vegetarian dietary choice, in which a person only eats vegetables, fruit, and fish or other non-mammalian sea food, but will not eat mammals or birds."], "webinar": ["Online seminar that may contain audio and video."], "phytonutrient": ["Any substance, of plant origin, that provides nutrition."], "soju": ["A distilled beverage native to Korea."], "Europe-wide": ["In all of Europe, spanning all of Europe."], "wonton": ["Stuffed dough wrap found in Chinese cuisine."], "wantan": ["Stuffed dough wrap found in Chinese cuisine."], "wuntun": ["Stuffed dough wrap found in Chinese cuisine."], "Clarke Belt": ["Geostationary orbit; named in honour of Arthur C. Clarke."], "dynamics": ["The branch of physics dealing with the relationship between objects in motion and the forces affecting that motion."], "dynamo": ["A device that generates electric power from the engine's activity."], "geodynamics": ["The branch of geophysics that studies the deformation processes of planetary mantle and crust, and the resulting earthquakes and volcanism."], "geophysical": ["Relating to the study of the physical characteristics and properties of the solid earth, its air and waters, and its relationship to space phenomena."], "geostationary": ["Describing an orbit in which a satellite is always in the same position (appears stationary) with respect to the rotating Earth."], "choreography": ["The art of creating and arranging dances or ballets."], "gigabit": ["Amount of memory equal to 1024 Megabits (1,073,741,824 bits) of information. Abbreviated Gb."], "heat balance": ["An accounting of the distribution of the heat input and output."], "herbaceous": ["Of or pertaining to herbs."], "isobar": ["A line of equal or constant pressure on a graph, plot, or map."], "isotherm": ["A line that connects points on a map that have the same temperature."], "chorus": ["A singing group; a group of people who sing together."], "chronicle": ["A chronological record of events."], "two weeks": ["A period of two weeks."], "respect": ["The way something is manifested or presented.", "An attitude of admiration or esteem.", "To have respect for someone or something; to have regard for something, to observe a custom, practice, rule or right.", "To show respect towards."], "aria": ["A piece for one voice accompanied by instruments (usually an orchestra)."], "operatic aria": ["Piece for one voice which is part of an opera."], "coloratura aria": ["Aria which is ornamented with many coloraturas."], "operatic": ["Of or pertaining to opera.", "Resembling or typical of opera."], "fourteen days": ["A period of two weeks."], "open secret": ["Something which is officially secret and not talked about but is in reality widely known."], "cushion": ["A piece of cloth, or leather filled with a soft material like feathers, rubber foam or similar which is used to sit, lie or lean on."], "chronicler": ["Someone who writes chronicles."], "Andorran": ["Of or relating to Andorra or Andorrans.", "Person of Andorran nationality or descent.", "Woman of Andorran nationality or descent."], "chronological": ["Arranged in the order of time."], "counterfeit money": ["Imitated coins or banknotes which are circulated in order to deceive."], "bogus money": ["Imitated coins or banknotes which are circulated in order to deceive."], "Marburg virus": ["Highly contagious RNA virus which causes the Marburg haemorrhagic fever."], "metadata": ["Structured information that describes, explains, locates, and otherwise makes it easier to retrieve and use a data resource."], "millibar": ["A pressure unit of 1000 dynes/cm-2, often used for reporting atmospheric pressure."], "nautical mile": ["A unit of length which corresponds approximately to one minute of latitude along any meridian. (source: Wikipedia)"], "organic": ["In chemistry: of or relating to any covalently bonded compound containing carbon atoms.", "In biology: relating to or involving an organism or organisms.", "Of or relating to foodstuff grown or raised without synthetic fertilizers or pesticides or hormones."], "photodissociation": ["A chemical reaction in which a chemical compound is broken down by photons."], "photolysis": ["A chemical reaction in which a chemical compound is broken down by photons."], "photodecomposition": ["A chemical reaction in which a chemical compound is broken down by photons."], "meander": ["One curved portion of a sinuous or winding stream channel, consisting of two consecutive loops, one turning clockwise and the other anticlockwise. (source: UNESCO)"], "abrupt wave": ["Translatory wave or rapid increase in depth of water in an open channel caused by a sudden change in conditions of flow. (source: UNESCO)"], "absorption band": ["A range of wavelengths (or, equivalently, frequencies) in the electromagnetic spectrum which are able to excite a particular transition in a substance."], "acidity of water": ["The quantitative capacity of aqueous media to neutralize strong bases."], "adhesive water": ["Water retained by soil constituents as a result of the molecular attraction between the water and the soil."], "humidity": ["The amount of water vapor in the air."], "air humidity": ["The amount of water vapor in the air."], "alluvial": ["Of or relating to alluvium.", "Unconsolidated materials of recent time."], "anoxic": ["Suffering from a reduced supply of oxygen; lacking oxygen."], "IPA": ["An internationally recognized set of symbols for phonetic transcription."], "area of influence": ["The area within the cone of depression of a discharging well or the cone of impression of a recharging well."], "artesian aquifer": ["A confined aquifer containing groundwater that will flow upwards through a well without the need for pumping. (source: Wikipedia)"], "adipocyte": ["One of the cells that primarily compose adipose tissue, specialized in storing energy as fat."], "chrysalis": ["The form taken by some insects at an early stage in their development."], "Gujarati numeral": ["The symbolic representation of numbers using the characters \u0ae6\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef"], "Avari-Tu": ["ISO 639-6 entity"], "Balkan Turkic": ["A Turkic language spoken in European Turkey, Greece, and in the Kumanovo and Bitola areas of Macedonia."], "White Russian-Rom\u00e1": ["A dialect of the Baltic Romani language."], "chrysanthemum": ["A type of garden flower with a large, bushy head."], "agile software development": ["A methodology for software development that promotes development iterations, open collaboration, and adaptability throughout the life-cycle of the project."], "Uzbeks": ["A Turkic people of Central Asia. They comprise the majority population of Uzbekistan, and large populations can also be found in Afghanistan, Tajikstan, Kyrgyzstan, Turkmenistan, Kazakhstan, Russia and the Xinjiang Uyghur Autonomous Region of China. (source: Wikipedia)"], "recovery test": ["Pumping test consisting of the measurement, at pre-determined time intervals, of the rise of the piezometric level or water table in a pumped well or in the surrounding observation wells after stoppage of pumping. (source: IGH)"], "reflectivity": ["The ratio of the intensity of the total radiation reflected from a surface to the total incident on that surface.", "The fraction of incident radiation reflected by a surface."], "reservoir life expectancy": ["Period of time a reservoir can be expected to be economically usable determined by reduced capacity due to sedimentation processes. (source: UNESCO)"], "resurgence": ["A place where water from caves returns to the surface, usually much more substantial than a spring."], "rheology": ["The study of the deformation and flow of materials in terms of stress, strain, temperature, and time."], "Haitian Creole": ["A language of Haiti, the Dominican Republic and Guadeloupe"], "Salzburg": ["A federal state of Austria."], "Tyrol": ["A federal state of Austria which forms the Austrian part of the Tyrol region."], "Upper Austria": ["A federal state of Austria."], "Lower Austria": ["A federal state of Austria."], "ISO 3166-2:CH": ["ISO 3166-2:CH"], "Aargau": ["A canton in northern Switzerland."], "canton of Z\u00fcrich": ["A canton in the north of Switzerland."], "Romansh": ["A language of Switzerland."], "canton of Zug": ["A small canton in Switzerland."], "Zug": ["A small canton in Switzerland."], "chubby": ["Round and plump."], "sunflower seed": ["Edible seed of the sunflower plant."], "canton of Vaud": ["A canton in western Switzerland."], "Vaud": ["A canton in western Switzerland."], "canton of Valais": ["A canton in southern Switzerland."], "Valais": ["A canton in southern Switzerland."], "canton of Uri": ["A canton in Switzerland."], "Uri": ["A canton in Switzerland."], "canton of Ticino": ["A canton in southern Switzerland."], "Ticino": ["A canton in southern Switzerland."], "canton of Thurgau": ["A canton in northern Switzerland."], "Thurgau": ["A canton in northern Switzerland."], "canton of Solothurn": ["A canton in northern Switzerland."], "Solothurn": ["A canton in northern Switzerland."], "canton of Schwyz": ["A canton in central Switzerland."], "Schwyz": ["A canton in central Switzerland."], "canton of Schaffhausen": ["A canton in northern Switzerland."], "Schaffhausen": ["A canton in northern Switzerland."], "canton of Saint Gallen": ["A canton in eastern Switzerland."], "Saint Gallen": ["A canton in eastern Switzerland."], "St Gallen": ["A canton in eastern Switzerland."], "canton of Obwalden": ["A canton in central Switzerland."], "Obwalden": ["A canton in central Switzerland."], "canton of Nidwalden": ["A canton in central Switzerland."], "Nidwalden": ["A canton in central Switzerland."], "canton of Neuch\u00e2tel": ["A canton in western Switzerland."], "Neuch\u00e2tel": ["A canton in western Switzerland."], "canton of Lucerne": ["A canton in central Switzerland."], "Lucerne": ["A canton in central Switzerland."], "canton of Jura": ["A canton in northwestern Switzerland."], "canton of Graub\u00fcnden": ["The largest and easternmost canton of Switzerland."], "canton of Grisons": ["The largest and easternmost canton of Switzerland."], "Graub\u00fcnden": ["The largest and easternmost canton of Switzerland."], "Grisons": ["The largest and easternmost canton of Switzerland."], "canton of Glarus": ["A canton in eastern Switzerland."], "Glarus": ["A canton in eastern Switzerland."], "canton of Geneva": ["The westernmost canton of Switzerland."], "Geneva": ["The westernmost canton of Switzerland."], "canton of Fribourg": ["A canton in western Switzerland."], "Fribourg": ["A canton in western Switzerland."], "canton of Berne": ["A large canton in Switzerland."], "canton of Basel-City": ["The smallest canton in Switzerland."], "Basel-City": ["The smallest canton in Switzerland."], "canton of Basel-Country": ["A canton in northern Switzerland."], "Basel-Country": ["A canton in northern Switzerland."], "canton of Appenzell Innerrhoden": ["A small canton in northeastern Switzerland."], "Appenzell Innerrhoden": ["A small canton in northeastern Switzerland."], "canton of Appenzell Ausserrhoden": ["A small canton in northeast Switzerland."], "Appenzell Ausserrhoden": ["A small canton in northeast Switzerland."], "canton of Aargau": ["A canton in northern Switzerland."], "churchgoer": ["A religious person who goes to church regularly.", "A woman who goes to church regularly.", "A man who goes to church regularly."], "jersey": ["A thick, warm piece of clothing with long sleeves which is put on over the head."], "sweater": ["A thick, warm piece of clothing with long sleeves which is put on over the head."], "Norwegian Bokm\u00e5l": ["One of two official writing standards of Norwegian, derived from Danish, the other being Nynorsk."], "Norwegian Nynorsk": ["One of two official writing standards of Norwegian, derived from dialects, the other being Bokm\u00e5l."], "the Netherlands": ["A country in Europe, north of Belgium, officially the Kingdom of the Netherlands. Also existing of the Netherlands Antilles and Aruba, with capital Amsterdam."], "Netherlands": ["A country in Europe, north of Belgium, officially the Kingdom of the Netherlands. Also existing of the Netherlands Antilles and Aruba, with capital Amsterdam."], "Timor-Leste": ["A republic in Southeast Asia whose capital is Dili."], "high-quality": ["Possessing high quality."], "high-grade": ["Possessing high quality."], "karoshi": ["Sudden death caused by heavy stress and overload at work, the most common direct causes of death being heart attack and stroke."], "kar\u014dshi": ["Sudden death caused by heavy stress and overload at work, the most common direct causes of death being heart attack and stroke."], "fry cook": ["A cook specialized in fried foods."], "raw vegetables": ["A mix of uncooked vegetables cut into strips."], "chocoholic": ["Someone who craves chocolate and consumes large amounts of it."], "carrot bread": ["Bread with grated carrots in the dough."], "bran": ["The hard outer layers of cereal grain."], "buckwheat flour": ["Flour made from the seeds of buckwheat (Fagopyrum esculentum)."], "gluten-free": ["Not containing gluten."], "veggie burger": ["Hamburger with a patty consisting of vegetables, soy, nuts, mushrooms or similar instead of meat."], "soba": ["Thin Japanese noodles made of buckwheat flour."], "udon": ["A type of thick noodle in Japanese cuisine made out of wheat flour, salt and water."], "slurp": ["To eat or drink with a sucking noise."], "cinder track": ["A racetrack paved with fine cinders."], "cinnamon": ["The bark of a tree of the laurel family, used as a spice."], "cipher": ["A secret method of writing.", "To convert ordinary language into code."], "widow woman": ["A woman whose spouse has died."], "noodle soup": ["Dish consisting of noodles and other ingredients served in stock."], "widower": ["A man whose spouse has died."], "widowman": ["A man whose spouse has died."], "visitant": ["Someone who pays a visit to a specific place or event."], "Xinjiang": ["An autonomous region (Xinjiang Uyghur Autonomous Region) of the People's Republic of China. It is a large, sparsely populated area (spanning over 1.6 million sq. km) which takes up about one sixth of the country's territory. (source: Wikipedia)"], "Sinkiang": ["An autonomous region (Xinjiang Uyghur Autonomous Region) of the People's Republic of China. It is a large, sparsely populated area (spanning over 1.6 million sq. km) which takes up about one sixth of the country's territory. (source: Wikipedia)"], "Xinjiang Uighur Autonomous Region": ["An autonomous region (Xinjiang Uyghur Autonomous Region) of the People's Republic of China. It is a large, sparsely populated area (spanning over 1.6 million sq. km) which takes up about one sixth of the country's territory. (source: Wikipedia)"], "yogurt": ["A dairy product produced by bacterial fermentation of milk."], "yoghurt": ["A dairy product produced by bacterial fermentation of milk."], "yoghourt": ["A dairy product produced by bacterial fermentation of milk."], "yogourt": ["A dairy product produced by bacterial fermentation of milk."], "Yokohama": ["The capital of Kanagawa Prefecture, located in the Kant\u014d region of the main island of Honsh\u016b and is a major commercial hub of the Greater Tokyo Area. (source: Wikipedia)"], "disinherit": ["To exclude from inheritance."], "Yom Kippur": ["The conclusion of the Ten Days of Awe and the most solemn and important of the Jewish holidays."], "Day of Atonement": ["The conclusion of the Ten Days of Awe and the most solemn and important of the Jewish holidays."], "Vladivostok": ["Russia's largest port city on the Pacific Ocean and the administrative center of Primorsky Krai. It is situated at the head of the Golden Horn Bay not far from the Russo-Chinese border and North Korea. (source: Wikipedia)"], "volition": ["The capability of conscious choice and decision and intention."], "whiskey": ["Alcoholic beverage that is distilled from fermented grain mash and aged in wooden casks (generally oak)."], "whisky": ["Alcoholic beverage that is distilled from fermented grain mash and aged in wooden casks (generally oak)."], "Wiesbaden": ["A city in southwest Germany, is the capital of the state of Hesse."], "ignominy": ["The consciousness or awareness of dishonor, disgrace, or condemnation.", "A state of extreme dishonor, consisting in being an object of a very serious public reproach approved by the great majority of the population."], "disgrace": ["The consciousness or awareness of dishonor, disgrace, or condemnation.", "To make a person morally inferior."], "Macao": ["One of the special administrative regions of the People's Republic of China."], "Macau": ["One of the special administrative regions of the People's Republic of China."], "Viking": ["A member of the Norse (Scandinavian) peoples, famous as explorers, warriors, merchants, and pirates, who raided and colonized wide areas of Europe from the late 8th to the early 11th century. (source Wikipedia)"], "fraction": ["A small item or part of a whole."], "fiddle": ["A musical instrument of the strings family with four strings tuned in perfect fifths."], "oppress": ["To cause, inflict or threaten with suffering, need, distress, or pain."], "tearing": ["Taking actions, usually deliberate and characterized by violence, that cause or intend to cause injury to people, animals, or non-living objects - often associated with aggression."], "violation": ["The act of forcing sexual intercourse or other sexual activity upon another person against their will.", "An infraction or a failure to follow a rule.", "A crime less serious than a felony."], "ravishment": ["The act of forcing sexual intercourse or other sexual activity upon another person against their will."], "variola": ["A highly contagious viral disease characterized by fever and weakness and skin eruption with pustules that form scabs that slough off leaving scars."], "variola major": ["A highly contagious viral disease characterized by fever and weakness and skin eruption with pustules that form scabs that slough off leaving scars."], "menagerie": ["Area in which animals, especially wild animals, are kept so that people can go and look at them, or study them."], "Zoroaster": ["An ancient Iranian prophet and religious poet. The hymns attributed to him, the Gathas, are at the liturgical core of Zoroastrianism."], "Zarathushtra": ["An ancient Iranian prophet and religious poet. The hymns attributed to him, the Gathas, are at the liturgical core of Zoroastrianism."], "Zartosht": ["An ancient Iranian prophet and religious poet. The hymns attributed to him, the Gathas, are at the liturgical core of Zoroastrianism."], "Zoroastrianism": ["The religion and philosophy based on the teachings ascribed to the prophet Zoroaster."], "Mazdaism": ["The religion and philosophy based on the teachings ascribed to the prophet Zoroaster."], "zoological science": ["The study of animals, including their classification, structure, physiology, and history."], "Guernsey": ["A British Crown dependency in the Channel Islands which includes the islands of Guernsey, Alderney and Sark."], "Balliwick of Guernsey": ["A British Crown dependency in the Channel Islands which includes the islands of Guernsey, Alderney and Sark."], "island of Guernsey": ["A British Crown dependency in the Channel Islands which includes the islands of Guernsey, Alderney and Sark."], "Zambezi": ["The fourth-longest river in Africa, and the largest flowing into the Indian Ocean from Africa. The area of its basin is 1,390,000 km\u00b2 (537,000 miles\u00b2),"], "Yunnan": ["A province of the People's Republic of China, located in the far south of the country spanning approximately 394,000 square kilometers (152,000 square miles). (Source: Wikipedia)"], "congestion": ["A number of vehicles so obstructed that they can scarcely move.", "An excess of mucus or fluid in the respiratory system, consisting of the lungs and the nasal cavity."], "taxicab": ["A vehicle that may be hired for single journeys by members of the public and driven by a taxi driver."], "taksio": ["A vehicle that may be hired for single journeys by members of the public and driven by a taxi driver."], "natural yoghurt": ["Yoghurt produced only with milk or cream and lactobacillales which has a sourish taste."], "fruit yoghurt": ["Yoghurt with added fruit."], "municipal library": ["Library managed by the city which is open for the public."], "academic library": ["A library for students and lecturers operated by a university."], "Jugoslavija": ["Three separate political entities that existed on the Balkan Peninsula in Europe during most of the 20th century."], "marimba": ["Musical instrument made of wooden bars each shaped to resonate at a given pitch when struck."], "xenophobia": ["A pathological fear or hatred of strangers or foreigners."], "cookie cutter": ["Tool to cut out cookie dough in a particular shape."], "whirlpool": ["A rapidly rotating body of water."], "whispering": ["A simultaneous interpreting, whereby the interpreter sits close to the listener and whispers the translation without technical aids."], "for the time being": ["A means or measure or an action taken in preparation of."], "braid": ["a hair style formed by interweaving three or more strands of hair."], "related": ["Related by blood or marriage."], "kin": ["Related by blood or marriage."], "akin": ["Related by blood or marriage."], "splurge": ["To spend lavishly or extravagantly, especially money.", "Any act of immoderate indulgence."], "satellite telephone": ["A type of mobile phone that connects to orbiting satellites instead of terrestrial cell sites."], "satellite phone": ["A type of mobile phone that connects to orbiting satellites instead of terrestrial cell sites."], "satphone": ["A type of mobile phone that connects to orbiting satellites instead of terrestrial cell sites."], "Nanga Parbat": ["The ninth highest mountain on Earth with an elevation of 8,126 metres, situated in Kashmir, Pakistan."], "gold mine": ["A mine where gold is extracted."], "silver mine": ["A mine where silver is extracted."], "copper mine": ["A mine where copper is extracted."], "salt mine": ["A mine where salt is extracted."], "sedan chair": ["A seat mounted on a frame with two poles on which a person can be carried."], "circuitry": ["Electric circuits considered as a group."], "poll": ["An inquiry into public opinion conducted by interviewing a random sample of people."], "opinion poll": ["An inquiry into public opinion conducted by interviewing a random sample of people."], "public opinion poll": ["An inquiry into public opinion conducted by interviewing a random sample of people."], "damp": ["To reduce the intensity of a sound."], "deaden": ["To reduce the intensity of a sound."], "snore": ["Noise produced during sleep by vibration of soft respiratory tissues (soft palate, base of the tongue and pharyngeal walls), particularly during inhalation.", "To make a noise during sleep by vibration of soft respiratory tissues (soft palate, base of the tongue and pharyngeal walls), particularly during inhalation."], "maternal uncle": ["The brother of someone\u2019s mother."], "paternal uncle": ["The brother of someone\u2019s father."], "phonation": ["The process of producing vocal sounds by means of vocal cords vibrating in an expiratory blast of air. (source UMLS)"], "hyperactive": ["Having an increased state of activity"], "hyperactivity": ["Constant and excessive movement and motor activity."], "amniotic fluid": ["Fluid that surrounds and protects the developing fetus."], "tactile": ["Pertaining to sense of touch."], "strabismus": ["A condition in which the eyes are not properly aligned with each other."], "spasticity": ["A disorder of the body motor system, and especially the central nervous system (CNS), in which certain muscles are continuously contracted. (source: Wikipedia)"], "muscular hypertonicity": ["A disorder of the body motor system, and especially the central nervous system (CNS), in which certain muscles are continuously contracted. (source: Wikipedia)"], "sensory": ["Pertaining to reception of stimuli through the senses of smell, sight, hearing, touch, and taste."], "scoliosis": ["A medical condition in which a person's spine is curved from side to side, and may also be rotated. (source: Wikipedia)"], "quadriplegia": ["Severe or complete loss of motor function in all four limbs."], "tetraplegia": ["Severe or complete loss of motor function in all four limbs."], "circumspection": ["The trait of being circumspect and prudent.", "Knowing how to avoid embarrassment or distress."], "prognosis": ["A medical term denoting the doctor's prediction of how a patient's disease will progress, and whether there is chance of recovery."], "prenatal": ["Occurring or existing before birth."], "percentile": ["The value of a variable below which a certain percent of observations fall."], "quartile": ["Any of the three values which divide the sorted data set into four equal parts, so that each part represents 1/4th of the sampled population."], "optometry": ["A health care profession concerned with eyes and related structures, as well as vision, visual systems, and vision information processing in humans. (source: Wikipedia)"], "optometrist": ["A person skilled in testing for defects of vision in order to prescribe corrective glasses."], "oculist": ["A medical specialist who practises ophthalmology."], "neurological": ["Pertaining to the normal and abnormal functions of the nervous system."], "microcephaly": ["A neurological disorder in which the circumference of the head is more than two standard deviations smaller than average for the person's age and sex."], "limb": ["An arm or leg."], "in utero": ["Occurring during fetal development; inside the uterus or womb."], "in vitro": ["Refers to the technique of performing a given experiment in a controlled environment outside of a living organism."], "hemiplegia": ["A condition in which one-half of a patient's body is paralyzed."], "gastrostomy": ["A surgical opening into the stomach."], "flexion": ["A position that is made possible by the joint angle decreasing."], "flexor": ["A muscle whose primary function is flexion at a joint."], "etiology": ["The study of causes or origins of a disease or condition."], "echolalia": ["The repetition of vocalizations made by another person."], "developmental": ["Having to do with steps or stages in growth and development."], "cortex": ["Outermost or superficial layer of an organ, and especially in the brain."], "cerebral cortex": ["Outermost or superficial layer of an organ, and especially in the brain."], "cornea": ["The transparent front part of the eye that covers the iris, pupil, and anterior chamber. (source: Wikipedia)"], "atrophy": ["The partial or complete wasting away of a part of the body."], "aspic": ["A savory jelly made of clarified meat, fish, or vegetable stock and gelatin."], "brown sugar": ["A sucrose sugar product with a distinctive brown color due to the presence of molasses."], "cardamom": ["A pungent aromatic spice made of dried seeds of the cardamom plant. Widely used in Scandinavian and East Indian cooking."], "cayenne pepper": ["A red, hot chili pepper used to flavor dishes, and for medicinal purposes."], "coriander": ["An annual herb in the family Apiaceae whose seeds and leaves are often used in cooking.", "The dried seed of the coriander plant (Coriandrum sativum) which is used as a spice whole or ground."], "chutney": ["A term for a variety of sweet and spicy condiments, originally from the South Asia usually involving a fresh, chopped primary vegetable or fruit with added seasonings."], "cumin": ["A flowering plant in the family Apiaceae, native from the east Mediterranean to East India.", "Spice made from the dried seed of the herb Cuminum cyminum."], "grenadine": ["A red syrup used as an ingredient in cocktails, both for its flavor and to give a pink tinge to mixed drinks."], "kamoboko": ["A variety of Japanese fish paste cake."], "lactose": ["A sugar which is found most notably in milk."], "marinade": ["A highly seasoned liquid in which foods are soaked."], "nopal": ["A vegetable made from the young stem segments of prickly pear, carefully peeled to remove the spines."], "wasabi": ["A member of the Brassicaceae family, which originally grew in Japan and the island of Sakhalin and whose root is used as a hot spice."], "circumstance": ["A condition that influences some event or activity."], "Dom": ["A language of Papua New Guinea."], "Japanese script": ["A writing system using three main scripts: Kanji, characters of Chinese origin, Hiragana, a syllabary, and Katakana, a syllabary."], "hiragana": ["A Japanese syllabary and part of the Japanese writing system. Used, among others, to write particles, suffixes and inflections. Derived from the Grass script style of Chinese characters."], "Lawa-Yunnan": ["A dialect of the Western Lawa language."], "La-Oor Written": ["The written forms of the La-Oor language."], "La-Oor Written Thai Script": ["The La-Oor language written with the Thai Script."], "Western Lawa Written": ["The written forms of the Western Lawa language."], "citadel": ["A fortress in a commanding position in or near a city."], "citizenry": ["The body of citizens of a state or country."], "Northern Thai Written Thai Script": ["The Northern Thai language written with the Thai script."], "Northern Khmer Written": ["The written forms of the Northern Khmer language."], "Khmer script": ["A script used to write the Khmer language which is the official language of Cambodia."], "Northern Thai Written Yuan Script": ["The Northern Thai language written with the Yuan script."], "Khang-Xa": ["A dialect of the Kh\u00e1ng language."], "Kao": ["A dialect of the Western Katu language."], "Lahul Lohar Written Devanagari Script": ["The Lahul Lohar language written with the Devanagari script."], "citizenship": ["The state of being vested with the rights, privileges, and duties of a citizen in a country."], "universally": ["In a universal manner; without exception."], "supported": ["Held in position, especially from below."], "skipjack": ["Any of several unrelated fish, but especially several of the genus Euthynnus resembling tuna."], "skipjack tuna": ["Any of several unrelated fish, but especially several of the genus Euthynnus resembling tuna."], "rite": ["The act of performing divine or solemn service, as established by law, precept, or custom."], "Shinto": ["The native religion of Japan and was once its state religion."], "imperial": ["Related to an empire, emperor, or empress.", "Relating to the British imperial system of measurement."], "distinctly": ["In a distinct manner."], "lactic": ["Of, relating to, or derived from milk."], "chopsticks": ["A pair of small equal-length tapered sticks, which are generally believed to have originated in ancient China, and are the traditional eating utensils of China, Japan, Korea, Taiwan, and Vietnam. (source: Wikipedia)"], "dashi": ["A class of soup and cooking stocks considered fundamental to Japanese cooking."], "tsukemono": ["Japanese pickles, generally served with rice, and sometimes with beverages as an otsumami."], "japonica": ["A short-grain variety of rice (Oryza sativa var. japonica) which is characterized by its unique stickiness and texture.", "A thorny deciduous shrub whose apple-shaped fruits are a golden-yellow color containing red-brown seeds."], "japanese rice": ["A short-grain variety of rice (Oryza sativa var. japonica) which is characterized by its unique stickiness and texture."], "sashimi": ["A Japanese delicacy primarily consisting of very fresh raw seafood, sliced into thin pieces about 2.5cm (1.0in.) wide by 4.0cm (1.5in.) long by 0.5 cm (0.25in.) thick, but dimensions vary depending on the type of item and chef, and served with only a dipping sauce (soy sauce with wasabi paste and thinly-sliced ginger root or ponzu), and a simple garnish such as shiso and shredded daikon radish. (source: Wikipedia)"], "grilling": ["A form of cooking that involves direct heat."], "simmering": ["A cooking technique in which foods are cooked in hot liquids kept at or just barely below the boiling point of water (at average sea level air pressure), 100\u00b0C (212\u00b0F). (source: Wikipedia)"], "steaming": ["A method of cooking using steam that avoids overcooking or burning food."], "deep frying": ["A cooking method in which food is submerged in hot oil or fat."], "cookbook": ["A book containing recipes and instructions for cooking."], "sakana": ["A Japanese term referring to food eaten as an accompaniment to alcohol."], "daikon": ["A mild-flavored East Asian giant white radish."], "perilla": ["A genus of annual herb that is a member of the mint family, Lamiaceae."], "nori": ["The Japanese name for various edible seaweed species of the red alga Porphyra including most notably P. yezoensis and P. tenera.", "The food products created from the nori red alga, similar to the Korean gim. Finished products are made by a shredding and rack-drying process that resembles papermaking."], "makisu": ["A mat woven from bamboo and cotton string that is used in food preparation."], "teriyaki": ["A cooking technique used in Japanese cuisine in which foods are broiled or grilled in a sweet soy sauce marinade."], "frogs' legs": ["One of the better-known delicacies of French and Chinese cuisine. They are often said to taste like chicken because of their mild flavor, with a texture most similar to chicken wings. (source: Wikipedia)"], "turnip": ["A root vegetable commonly grown in temperate climates worldwide for its white, bulbous taproot."], "oyster mushroom": ["An edible basidiomycete mushroom of the Pleurotaceae family whose cap resembles the oyster."], "porcini": ["An edible basidiomycete mushroom found in pine forests and plantations in autumn, the cap of which may reach 25 cm in diameter and 1 kg in weight."], "king bolete": ["An edible basidiomycete mushroom found in pine forests and plantations in autumn, the cap of which may reach 25 cm in diameter and 1 kg in weight."], "penny bun": ["An edible basidiomycete mushroom found in pine forests and plantations in autumn, the cap of which may reach 25 cm in diameter and 1 kg in weight."], "plum": ["Fruit tree belonging to the genus Prunus of the Rosaceae family, cultivated for its fruits, plums", "A fruit of the plum tree."], "gage": ["Fruit tree belonging to the genus Prunus of the Rosaceae family, cultivated for its fruits, plums"], "redcurrant": ["A member of the genus Ribes in the gooseberry family Grossulariaceae, native to parts of western Europe (France, Belgium, Netherlands, Germany, and northern Italy). It is a deciduous shrub normally growing to 1-1.5 m tall, occasionally 2 m, with five-lobed leaves arranged spirally on the stems.", "Berry, fruit of the redcurrant shrub (Ribes rubrum), of the gooseberry family."], "foie gras": ["The liver of a duck or a goose that has been specially fattened by gavage."], "veal": ["Meat produced by a young cow and sold in a butcher's shop."], "horse meat": ["The meat cut from a horse. It is slightly sweet, tender, low in fat, and high in protein.", "The meat of a horse, usually for human consumption."], "cacti": ["The Cactaceae, the cactus family of plants."], "S\u00e3o Paulo": ["The capital of the state of S\u00e3o Paulo, Brazil, the largest city in Brazil and first in South America by population.", "One of the 26 Brazilian states, located in the center west. Its capital is S\u00e3o Paulo."], "Alagoas": ["A small state in northeastern Brazil lying between the states of Pernambuco and Sergipe. Its capital is Macei\u00f3."], "Macei\u00f3": ["The capital and the largest city of the coastal state Alagoas, Brazil."], "Dakka": ["A language of Indonesia (Sulawesi)."], "curry": ["A traditional medium strength Indian preparation utilizing wide variety of oriental spices to give rich flavor with abundant gravy."], "cityscape": ["The characteristic appearance of a city."], "Bristol Channel": ["A bay on the west coast of Great Britain, separating Cornwall and Wales."], "Weston-super-Mare": ["An English seaside resort on the Bristol Channel in North Somerset."], "contaminant": ["A substance that pollutes."], "tofu skin": ["A Chinese and Japanese food product made from soybeans."], "dried beancurd": ["A Chinese and Japanese food product made from soybeans."], "yuba": ["A Chinese and Japanese food product made from soybeans."], "germane": ["Related to the topic being discussed or considered."], "electric potential": ["The amount of electrostatic potential between two points in space. Unit: volt."], "potential difference": ["The amount of electrostatic potential between two points in space. Unit: volt."], "potential drop": ["The amount of electrostatic potential between two points in space. Unit: volt."], "tap water": ["Drinking water which gets to the end user through a network of water pipes and can be taken from a spigot."], "source text": ["Text which is to be translated to another language."], "target text": ["A text which which is the result of the translation of a text to another language."], "vodka": ["A clear, colorless, almost odorless unaged liquor made from potatoes, and sometimes from corn, rye, or wheat."], "money-printing machine": ["A machine which can fabricate money in unlimited quantities."], "source language": ["Language to be translated out of."], "target language": ["Language to be translated into."], "trigger-happy": ["Marked by extreme intensity of emotions or convictions."], "vinery": ["A grape plantation."], "Vilno": ["The capital of Lithuania."], "soporific": ["Something inducing sleep, especially a drug."], "civility": ["A polite action or expression."], "apple core": ["The inner part of an apple containing the seeds.", "The central less appetizing parts of an apple that normally are discarded."], "ankle-deep": ["Reaching up to the ankles."], "knee-deep": ["Reaching up to the knees."], "ankle-length": ["Extending to the knee from above."], "knee-length": ["Extending to the knees from above."], "floor-length": ["Reaching to the floor."], "work force": ["All the workers employed by a specific organisation or nation, or on a specific project."], "Aruban florin": ["The currency of Aruba"], "grape juice": ["Juice made from grapes."], "motherless": ["Having no living or known mother."], "fatherless": ["Having no living or known father."], "childless": ["Having no children."], "parentless": ["Having no living or known parents."], "clanger": ["A foolish error, especially one made in public."], "clarion": ["A medieval brass instrument with a clear shrill tone."], "wart": ["A small, rough tumor, typically on hands and feet, that can resemble a cauliflower or a solid blister."], "wheal": ["A firm, elevated, rounded or flat topped, generally pale red papule or plaque swellings of the skin."], "tinea": ["A group of mycosis infections of the skin caused by parasitic fungi (dermatophytes)."], "dermatophytosis": ["A group of mycosis infections of the skin caused by parasitic fungi (dermatophytes)."], "tungiasis": ["A skin infestation of the Tunga penetrans flea (also known as chigoe flea, jigger, nigua or sand flea), found in the tropical parts of Africa, Caribbean, Central and South America, and India."], "urticaria": ["A skin condition, commonly caused by an allergic reaction, that is characterized by raised red skin wheals (welts)."], "clarity": ["The quality of being clear or transparent to the eye.", "The state of being easy to see, hear or understand.", "The quality of comprehensible language or thought."], "skin tag": ["A small benign tumor that forms primarily in areas where the skin forms creases, such as the neck, armpits and groin. They may also occur on the face, usually on the eyelids. Though larger have been seen, they usually range in size from grain of rice to that of a golf ball."], "acrochordon": ["A small benign tumor that forms primarily in areas where the skin forms creases, such as the neck, armpits and groin. They may also occur on the face, usually on the eyelids. Though larger have been seen, they usually range in size from grain of rice to that of a golf ball."], "psoriasis": ["A disorder which affects the skin and joints. It commonly causes red scaly patches to appear on the skin."], "relative humidity": ["A term used to describe the amount of water vapor that exists in a gaseous mixture of air and water."], "so": ["Concurring with a given set of facts.", "[A word that expresses that something is or should be the consequence of something else].", "The goal being that.", "In truth.", "In such a degree as can not well be expressed.", "In the same manner or to the same extent as mentioned before.", "In the way or manner described, indicated, or suggested", "With the result that.", "[Used as an introductory particle to a consequence but with the causal statement not stated.]", "[Replaces the aforementioned adjective phrase.]", "[Used after a pause for thought to introduce a new topic, question or story.]", "[Used in the sense of \"what do you imply?\"]", "[Used in the beginning of a sentence with the sense of \"well then\", \"in that case\", \"very well\".]"], "refine": ["To reduce to a fine, unmixed, or pure state.", "To improve in accuracy, delicacy, or excellence."], "basic": ["A necessary commodity, a staple requirement.", "Necessary, essential for life or some process.", "An elementary building block.", "(chemistry) Of or pertaining to a base.", "Elementary, simple, fundamental, merely functional.", "Reduced to the simplest and most significant form possible without loss of generality."], "Antikythera": ["A Greek island community with a land area of 20.43 square kilometers, lying 38 kilometers south-east of Kythira."], "Kythira": ["An island of Greece, historically part of the Ionian Islands."], "upper": ["At a higher level, rank or position."], "unusual": ["Unlike what is expected; differing in some way from the norm.", "Out of the ordinary.", "Of strange or extraordinary character.", "Not easily found.", "Out of the ordinary."], "surprising": ["Causing surprise or wonder or amazement."], "surprisingly": ["In a way that causes surprise because it is unexpected, or unusual."], "suggest": ["To imply but stop short of saying explicitly; to intimate by a hint.", "To ask for without demanding.", "To make a proposal, declare a plan for something.", "To imply as a possibility.", "To call to mind."], "suggestive": ["Tending to suggest or imply."], "spiral": ["A curve that is the locus of a point that rotates about a fixed point while continuously increasing its distance from that point.", "That is shaped like a spiral", "To move in a spiral course."], "Saros cycle": ["An eclipse cycle with a period of about 18 years 11 days 8 hours (approximately 6585\u2153 days) that can be used to predict eclipses of the Sun and Moon."], "reconstruction": ["The act of restoring something to an earlier state.", "An attempt to understand in detail how certain events took place.", "A period of United States history from 1865-1877 during which southern states were reorganized politically, ending with the withdrawal of federal troops."], "panhellenic": ["Of or relating to all Greece or all the Greeks."], "output": ["(Economics) The quantity produced, created, or completed.", "(computing) data sent out of the computer, as to output device such as a monitor or printer.", "(computing) to send data out of a computer, as to an output device such as a monitor or printer.", "(economics) to generate, create, or complete."], "Olympiad": ["A period of four years, by which the ancient Greeks reckoned time, being the interval from one celebration of the Olympic games to another, beginning with the victory of Corbus in the foot race, which took place in the year 776 b.c."], "northwestern": ["Of or pertaining to the northwest.", "To the northwest.", "From the northwest."], "northeastern": ["Of or pertaining to the northeast.", "To the northeast.", "From the northeast."], "northeasterly": ["Situated in, or pointing towards the northeast.", "Coming from the northeast."], "northwesterly": ["Situated in, or pointing towards the northwest.", "Coming from the northwest."], "southwestern": ["Of or pertaining to the southwest.", "To the southwest.", "From the southwest."], "southeastern": ["Of or pertaining to the southeast.", "To the southeast.", "From the southeast."], "southeasterly": ["Situated in, or pointing towards the southeast.", "Coming from the southeast."], "southwesterly": ["Situated in, or pointing towards the southwest.", "Coming from the southeast."], "southwest": ["The compass point halfway between south and west, specifically 225\u00b0, abbreviated as SW."], "southeast": ["The direction of the cardinal compass point halfway between south and east, specifically 135\u00b0, abbreviated as SE."], "northeast": ["The cardinal compass point halfway between north and east, specifically 45\u00b0, abbreviated as NE."], "northwest": ["The cardinal compass point halfway between north and west, specifically 315\u00b0, abbreviated as NW."], "newly": ["In a new manner."], "metonic cycle": ["A particular approximate common multiple of the tropical year and the synodic (lunar) month."], "lunar": ["Of, or pertaining to, the moon."], "known": ["That whom other people know, renowned, famous."], "plausible": ["Seemingly or apparently valid, likely, or acceptable; credible."], "implausible": ["Not plausible; unlikely; dubious."], "explore": ["To examine or investigate something systematically."], "dismiss": ["To terminate the employment of one or more employees.", "To discharge; to end the employment or service of."], "correction": ["The act of correcting."], "Corinthian": ["Describing a person or object from Corinth.", "Of the Corinthian classical order, elaborate, ornate."], "contender": ["A woman who competes with one or more other people.", "A man who competes with one or more other people.", "Someone who competes with one or more other people."], "Callippic cycle": ["A particular approximate common multiple of the year (specifically the tropical year) and the synodic month, that was proposed by Callippus in 330 BC."], "in vivo": ["That which takes place inside an organism."], "glycolipid": ["A carbohydrate-attached lipid."], "genetic": ["Relating to genetics or genes."], "vesicle": ["A membrane-bound compartment found in a cell."], "translocate": ["To displace, or move from one place to another."], "reticulum": ["A pattern of interconnected objects.", "The second chamber in the alimentary canal of a ruminant animal"], "require": ["To demand or exact as indispensable.", "To consider obligatory; request and expect."], "itself": ["A thing, previously mentioned, as the object of a verb or preposition.", "A thing, previously mentioned, as an intensifier."], "endoplasm": ["The inner portion of the cytoplasm of a cell."], "endoplasmic": ["Of, or relating to endoplasm."], "endoplasmic reticulum": ["An organelle found in all eukaryotic cells that is an interconnected network of tubules, vesicles and cisternae."], "translocation": ["Removal of things from one place to another; displacement; substitution of one thing for another."], "polar": ["Of, relating to, measured from, or referred to a geographic pole (the North Pole or South Pole)."], "phospholipid": ["A class of lipids, and a major component of all biological membranes, along with glycolipids, cholesterol and proteins. (source: Wikipedia)"], "oligosaccharide": ["A saccharide polymer containing a small number (typically three to ten) of component sugars."], "simple sugar": ["A saccharide polymer containing a small number (typically three to ten) of component sugars."], "flippase": ["Enzyme located in the membrane responsible for aiding the movement of phospholipid molecules between the two leaflets that compose a cell's membrane (transverse diffusion)."], "polyisoprene": ["An elastic hydrocarbon polymer that naturally occurs as a milky colloidal suspension, or latex, in the sap of some plants."], "leaflet": ["One of the components of a compound leaf.", "A small sheet of paper containing information, used for dissemination of said information, often an advertisement."], "clinical": ["Of or pertaining to a medical clinic or facility."], "coincide": ["To occupy exactly the same space.", "To occur at the same time.", "To correspond, concur, or agree.", "To happen at the same time."], "contiguous": ["Very close or connected in space or time."], "dentition": ["The set of natural teeth of an individual.", "The eruption, through the gums of teeth, for example milk teeth."], "dermorphin": ["A hepta-peptide first isolated from the skin of South American frogs belonging to the family Phyllomedusa. (source: Wikipedia)"], "embryonic": ["Of or related to an embryo."], "endogenous": ["Produced, originating or growing from within."], "fibroblast": ["A type of cell that synthesizes and maintains the extracellular matrix of many animal tissues."], "subfamily": ["A biological taxon, a group of animals or plants, part of a family and consisting of one or more genera."], "hybrid": ["Offspring resulting from cross-breeding different entities, e.g. two different species or two purebreed parent strains."], "hypothesis": ["A tentative conjecture explaining an observation, phenomenon, or scientific problem that can be tested by further observation, investigation, and/or experimentation."], "whole-grain bread": ["Bread baked with whole-grain flour."], "whole wheat flour": ["Flour made from whole grain which retains bran, germ, and endosperm."], "incidence": ["The striking of a beam, radiation or projectile upon a surface.", "The extent, or the relative frequency of occurrence of something."], "infancy": ["The earliest period of childhood (crawling rather than walking)."], "infectious": ["Spreading quickly from one individual to another."], "insight": ["Clear or deep perception of a situation."], "intestinal": ["Relating to the intestines."], "intestine": ["The alimentary canal of an animal through which food passes after having passed all stomachs."], "scented candle": ["Perfumed candle which gives off an odour when burning."], "ISO 3166-2:VE": ["The subset of ISO 3166-2 which applies to Venezuela."], "lactone": ["A cyclic ester, the condensation product of an alcohol group and a carboxylic acid group in the same molecule."], "lymphoma": ["A type of solid neoplasm that originates in lymphocytes (a type of white blood cell in the vertebrate immune system). (source: Wikipedia)"], "fusion": ["A change of the state of a substance from the solid phase to the liquid phase. (Source: MGH)"], "misconduct": ["Bad behavior.", "To act improperly."], "more": ["[Used in forming the comparative form of many adjectives and almost all comparable adverbs.]", "In greater number.", "In greater quantity, amount, or proportion.", "That is in addition to (something else)."], "morphogenesis": ["One of three fundamental aspects of developmental biology along with the control of cell growth and cellular differentiation. It is concerned with the shapes of tissues, organs and entire organisms and the positions of the various specialized cell types. (source: Wikipedia)"], "mutagenesis": ["A process by which the genetic information of an organism is changed in a stable manner, either in nature or experimentally by the use of chemicals or radiation. (source: Wikipedia)"], "nanotechnology": ["A field of applied science whose theme is the control of matter on an atomic and molecular scale."], "neural": ["Of, or relating to the nerves, neurons or the nervous system.", "Of, or relating to a neuron."], "passion": ["Suffering; particularly in Christianity, the suffering of Jesus leading up to and during his crucifixion.", "Great emotion.", "A feeling of strong sexual desire."], "patient": ["Not losing one's temper while waiting.", "Someone who receives treatment from a doctor or other medically educated person.", "The noun or noun phrase that is semantically on the receiving end of a verb's action."], "percolation": ["Movement of water through the soil surface into the ground.", "The seepage or filtration of a liquid through a porous substance."], "pluripotent": ["Able to develop into or affect any cell type, i.e. not restricted to a specific system."], "prey": ["Animal hunted or caught for food.", "A person who is the aim of an attack (especially a victim of ridicule or exploitation) by some hostile person or influence.", "To profit from in an exploitatory manner.", "To prey on or hunt for."], "reading": ["Made or used for reading."], "receptor": ["A protein molecule, embedded in either the plasma membrane or cytoplasm of a cell, to which a mobile signaling (or \"signal\") molecule may attach.", "A structure that recognizes a stimulus in the internal or external environment of an organism."], "sensory receptor": ["A structure that recognizes a stimulus in the internal or external environment of an organism."], "response": ["A statement (either spoken or written) that is made in reaction to a question, a request, criticism or accusation"], "restricted": ["Limited within bounds."], "roundworm": ["One of the most common phyla of animals, with over 80,000 different described species (of which over 15,000 are parasitic). They are ubiquitous in freshwater, marine, and terrestrial environments, where they often outnumber other animals in both individual and species counts, and are found in locations as diverse as Antarctica and oceanic trenches."], "self": ["The essential qualities that make a person or a thing distinct from all others."], "running": ["Moving or issuing in a stream.", "The activity of running (moving quickly on foot)."], "abortifacient": ["A substance that induces abortion.", "Causing abortion."], "similarity": ["Closeness of appearance to something else."], "resemblance": ["Closeness of appearance to something else."], "silicate": ["Any salt of silica or of one of the silicic acids.", "Any mineral composed of silicates."], "sugar tongs": ["Small tongs used to grasp sugar cubes."], "lump sugar": ["Sugar pressed to form cubes or cuboids."], "cube sugar": ["Sugar pressed to form cubes or cuboids."], "sugar cube": ["A piece of sugar in form of a cube."], "analogic": ["Of or pertaining to analogy."], "analogical": ["Of or pertaining to analogy."], "autochthonous": ["Originating where it is found."], "stereotype": ["A conventional, formulaic, and oversimplified conception, opinion, or image.", "To make a stereotype of someone or something, or characterize someone by a stereotype."], "hysterectomy": ["The surgical removal of the uterus."], "termination": ["The process of terminating or the state of being terminated.", "A bringing or coming to an end."], "tonne": ["A metric unit of mass equal to 1000 kilograms."], "metric ton": ["A metric unit of mass equal to 1000 kilograms."], "toxic": ["Having a chemical nature that is harmful to health or lethal if consumed or otherwise entering into the body in sufficient quantities."], "transcription": ["The act or process of making a record.", "The process of creating an equivalent RNA copy of a sequence of DNA."], "triad": ["Grammatical number related to precisely 3 objects of the same type"], "turnover": ["The amount of business transacted in a specified time period.", "The act of overturning something."], "venom": ["Poisonous animal secretions forming fluid mixtures of many different enzymes, toxins, and other substances. These substances are produced in specialized glands and secreted through specialized delivery systems (nematocysts, spines, fangs, etc.) for disabling prey or predator. (source: UMLS)"], "agonist": ["The principal character in a work of fiction.", "A muscle that contracts while another relaxes."], "allometry": ["The science studying the differential growth rates of the parts of a living organism's body part or process."], "anteriorly": ["In an anterior direction."], "Amazonian": ["Relating to the Amazon River in South America, and its surrounding region."], "amplification": ["The act, or result of amplifying, enlarging, extending or adding to."], "backlight": ["To illuminate something from behind.", "A spotlight that illuminates a photographic subject from behind."], "blame": ["Culpability for something negative or undesirable."], "broad": ["Very large in expanse or scope."], "spacious": ["Very large in expanse or scope."], "burrow": ["A tunnel or hole, often as dug by a small creature."], "hutch": ["A small crude shelter used as a dwelling."], "immersion blender": ["Kitchen appliance in form of a wand which can be used to blend ingredients or puree food."], "stick blender": ["Kitchen appliance in form of a wand which can be used to blend ingredients or puree food."], "wand blender": ["Kitchen appliance in form of a wand which can be used to blend ingredients or puree food."], "hand blender": ["Kitchen appliance in form of a wand which can be used to blend ingredients or puree food."], "Bermixer": ["Kitchen appliance in form of a wand which can be used to blend ingredients or puree food."], "cornflower blue": ["Having the blue color of cornflowers.", "A shade of blue found in cornflowers."], "peanut allergy": ["A type of food allergy where contact with peanuts or traces of peanuts causes an overreaction of the immune system."], "food allergy": ["A type of allergy which causes an overreation of the immune system upon contact with a certain food."], "peanut oil": ["Vegetable oil derived from peanut seeds."], "smoke point": ["The lowest temperature at which a fat or oil begins to smoke."], "nut allergy": ["A type of allergy which causes an overreation of the immune system upon contact with nuts."], "Egyptology": ["The study of ancient Egyptian history, language, literature, religion, and art from the 5th millennium BC until the end of its native religious practices in the AD 4th century."], "calcic": ["Of, pertaining to, or derived from calcium or lime."], "canister": ["A cylindrical or rectangular container usually of lightweight metal, plastic, or laminated pasteboard used for holding a dry product (as tea, crackers, flour, matches)."], "carbonated": ["Containing carbon-dioxide gas under pressure."], "cellular": ["Of, relating to, consisting of, or resembling a cell or cells."], "Cenozoic": ["The most recent of the three classic geological eras and covers the period from 65.5 million years ago to the present."], "Mesozoic": ["One of three geologic eras of the Phanerozoic eon."], "Paleozoic": ["The earliest of three geologic eras of the Phanerozoic eon."], "carbonatite": ["Any intrusive igneous rock having a majority of carbonate minerals."], "clastic": ["Made up from parts that are easily removable.", "Made from fragments of pre-existing rocks."], "closely": ["In a close manner."], "coexist": ["To exist contemporaneously or in the same area."], "colleague": ["A fellow member of a profession, staff, academic faculty or other organization; an associate."], "colonize": ["To establish a colony."], "commonly": ["Under normal conditions.", "In a typical situation."], "computing": ["Science and technique of data elaboration and of automatic treatment of information."], "conditioned": ["Determined or dependent on some condition.", "Exhibiting a conditioned reflex.", "In good physical condition to perform a physical task, as a result of exercise.", "Prepared for a specific use."], "confined": ["Not free to move.", "Not invading healthy tissue."], "confinement": ["The act of confining or the state of being confined."], "conjugated": ["Joined together in pairs."], "claustrophobic": ["Pertaining to or suffering from claustrophobia."], "clavicle": ["Bone linking the scapula and sternum."], "collar bone": ["Bone linking the scapula and sternum."], "cleanser": ["A detergent, powder, or other chemical agent that removes dirt, grease, or stains."], "object-oriented programming language": ["A programming language that allows or encourages, to some degree, object-oriented programming techniques such as encapsulation, inheritance, modularity, and polymorphism."], "object-oriented programming": ["A programming paradigm that uses \"objects\" and their interactions to design applications and computer programs."], "static": ["Not able to change.", "Of or pertaining to static electricity."], "static analysis": ["The process of evaluating a system or component based on its form, structure, content, or documentation."], "dynamic analysis": ["The process of evaluating a system or component based upon its behaviour during execution. (source: IEEE)"], "reshape": ["To make into a different shape."], "inference": ["The act or process of inferring by deduction or induction."], "inheritance": ["That which a person in entitled to inherit.", "The mechanism whereby parts of a superclass are available to instances of its subclass.", "The hereditary passing of biological attributes from the parents to its offspring."], "Wiki terminology": ["Wiki terminology."], "clean-shaven": ["Closely shaved recently."], "clearance": ["The empty space between two objects."], "cling film": ["A thin plastic film that sticks to itself; used for wrapping food."], "clipboard": ["A small board having at the top a clip for holding papers and serving as a portable writing surface."], "facetious": ["Treating serious issues with deliberately inappropriate humour."], "flippant": ["Treating serious issues with deliberately inappropriate humour."], "clitoridectomy": ["The partial or total removal of the external part of the clitoris."], "actinides": ["A group of 15 radioactive elements some of which occur naturally while others are produced in nuclear reactions. They include plutonium, americium and neptunium. The health hazard presented by the actinides, if they are released into the environment, comes from the potency of their radioactive characteristics. They are alpha-emitters, and therefore can cause intense localized damage in tissues if absorbed into the body.\\n(Source: WRIGHT)"], "bytecode": ["Various forms of instruction sets designed for efficient execution by a software interpreter as well as being suitable for further compilation into machine code."], "heap": ["A great number or large amount of things not placed in a pile.", "An area of memory used for dynamic memory allocation.", "To fill to overflow (e.g. a platter).", "A specialized tree-based data structure that satisfies the heap property: if B is a child node of A, then key(A) \u2265 key(B).", "To put together several things in one pile; to arrange in stacks.", "To bestow in large quantities (e.g. work)."], "harelip": ["A congenital cleft in the middle of the upper lip."], "rupiah": ["The currency of Indonesia."], "denar": ["The currency of Macedonia."], "cleft lip": ["A congenital cleft in the middle of the upper lip."], "dispatch": ["To unlawfully and intentionally kill another human being.", "To send a shipment with promptness.", "To destroy quickly and efficiently.", "To pass on for further processing.", "The act of sending off something.", "An official report.", "The act of killing a person or animal."], "Italian lira": ["The former official currency of Italy, San Marino and the Vatican City."], "clement": ["Inclined to be lenient or merciful."], "despatch": ["To send a shipment with promptness.", "To destroy quickly and efficiently.", "To pass on for further processing.", "An official report.", "The act of killing a person or animal."], "send off": ["To pass on for further processing."], "shipment": ["The act of sending off something."], "communique": ["An official report."], "via": ["By way of; passing through."], "runtime": ["The time during which a program is executing.", "Of, relating to, or happening during run time."], "run time": ["The time during which a program is executing."], "run-time": ["Of, relating to, or happening during run time."], "polymorphic": ["Relating to polymorphism."], "loop": ["A length of thread, line or rope that is doubled over to make an opening; the opening so formed."], "polymorphous": ["Having, or assuming, a variety of forms, characters, or styles."], "atomicity": ["The abstract state of being atomic (that is, of being indivisible).", "The state of a system (often a database system) in which either all stages complete or none complete.", "The number of atoms in a molecule."], "verification": ["An additional proof that something that was believed (some fact or hypothesis or theory) is correct."], "tune up": ["To make adjustments to an engine in order to improve its performance."], "tune-up": ["A series of adjustments to an engine in order to improve its performance."], "them": ["Third personal plural pronoun used after a preposition or as the object of a verb.", "Third person singular accusative pronoun of indeterminate or irrelevant gender", "\"Them\", the plural masculine form of \"him\"."], "pointer": ["A mark to indicate a direction or relation.", "Anything that points or is used for pointing.", "A variable which holds the address of a memory location where, presumeably, a value is stored."], "orient": ["To find one's way (usually by means of a compass)."], "Orient": ["Eastern countries and regions."], "Occident": ["Western countries and regions."], "operator": ["One who operates.", "A function or other mapping that carries variables defined on a domain into another variable or set of variables in a defined range.", "A person who provides assistance to a telephone caller by establishing a network connection with the person to be reacher."], "compiler": ["A program that decodes instructions written in a higher order language and produces an assembly language program."], "evaluate": ["To express an opinion or a valuation, especially on esthetics, morality or the like.", "To draw conclusions from by examining.", "To compute an expression.", "To place a value on."], "expressive": ["Effectively conveying thought or feeling."], "lifetime": ["The duration of the life of someone or something.", "Lasting a lifetime.", "(Of prison sentences) Ending only with death."], "defect": ["A fault or malfunction.", "An imperfection in a device or machine.", "Unfortunate original gap in comparison with the ideal or expected state."], "context": ["The text in which a word or passage appears and which helps ascertain its meaning."], "verifier": ["One who verifies."], "variant": ["Something a little different from others of the same type."], "SAT": ["The problem of determining if the variables of a given Boolean formula can be assigned in such a way as to make the formula evaluate to TRUE."], "Boolean satisfiability problem": ["The problem of determining if the variables of a given Boolean formula can be assigned in such a way as to make the formula evaluate to TRUE."], "strategy": ["The science and art of military command as applied to the overall planning and conduct of warfare.", "A plan of action intended to accomplish a specific goal."], "motivation": ["The psychological feature that arouses an organism to action toward a desired goal."], "intermediate": ["Occurring between two extremes, or in the middle of a range."], "confidentiality": ["The property of being confidential.", "A set of rules or a promise that limits access or places restrictions on certain types of information."], "written": ["Of, relating or characteristic of writing."], "log": ["The trunk of a dead tree.", "To cut lumber, as in woods and forests.", "To add an entry (or more) in a log or logbook, as on ships and planes."], "screenshot": ["A picture or image captured from one's computer's screen."], "clergy": ["The body of people ordained for religious service."], "cleverness": ["The quality of being clever."], "well-read": ["Knowledgeable through having read extensively."], "polynomial": ["An algebraic expression consisting of one or more summed terms, each term consisting of a constant multiplier and one or more variables raised to integral powers.", "Of an algorithm whose performance is specified by a polynomial function."], "polynomial function": ["Any function whose value is the solution of a polynomial."], "proof": ["A sequence of statements (made up of axioms, assumptions and arguments) leading to the establishment of the truth of one final statement."], "optimal": ["Most favorable or desirable."], "query": ["Action of asking for information, a reply or response on a given subject.", "A request for information to a database application, a search engine, or another tool", "To ask for information, a reply or response on a given subject.", "A mapping from structures of one vocabulary to structures of another vocabulary."], "functor": ["A mapping from structures of one vocabulary to structures of another vocabulary.", "A special type of mapping between categories."], "competitive": ["Being inclined to compete.", "Of or pertaining to competition."], "sorting": ["An operation that segregates items into groups according to a specified criterion."], "sorting algorithm": ["An algorithm that puts elements of a list in a certain order."], "scheme": ["A systematic plan of future action.", "An orderly combination of related parts.", "To form intrigues in an underhand manner.", "A schematic or preliminary plan."], "ordering": ["Arrangement in a sequence."], "generalize": ["To draw from specific cases for more general cases."], "inexhaustible": ["So substantial that complete consumption is impossible."], "unexhaustible": ["So substantial that complete consumption is impossible."], "cooling system": ["A mechanism for keeping something cool."], "commodity": ["Anything movable (a good) that is bought and sold.", "Raw materials, agricultural and other primary products as objects of large-scale trading in specialized exchanges."], "bisimulation": ["A binary relation between state transition systems, associating systems which behave in the same way in the sense that one system simulates the other and vice-versa."], "climacteric": ["The time of life when a woman's menstrual periods stop."], "bisimilarity": ["A binary relation between state transition systems, associating systems which behave in the same way in the sense that one system simulates the other and vice-versa."], "tractable": ["Capable of being handled or touched; palpable; practicable; feasible."], "cloakroom": ["A room where coats, hats and other articles may be left temporarily, as in a theater or school."], "computation": ["The act or process of computing; calculation; reckoning."], "coatroom": ["A room where coats, hats and other articles may be left temporarily, as in a theater or school."], "XPath": ["A query language used to identify a set of nodes within a XML document."], "online": ["Accessible via a computer or computer network.", "Performed over the internet."], "on-line": ["Accessible via a computer or computer network.", "Performed over the internet."], "randomized": ["Set up or distributed in a deliberately random way."], "randomized trial": ["A study in which participants are randomly assigned to either a treatment arm or placebo arm of a clinical trial."], "tire": ["A rubber ring placed over the rim of a wheel of a road vehicle to provide traction and reduce road shocks.", "To become tired through overuse or great strain or stress.", "To make tired.", "The rubber covering on a wheel."], "fatigue": ["A state of physical and/or mental weakness and a lack of vigor.", "To become tired through overuse or great strain or stress.", "To make tired."], "war-weary": ["Unwilling to continue war and to commit to it."], "close-up": ["A photograph, film or television shot, taken near the subject and shown at a relatively large scale."], "scoop": ["Ice cream formed like a sphere."], "birthday present": ["A gift someone is given for their birthday."], "confluent": ["which converges."], "notion": ["A general inclusive concept.", "A vague idea in which some confidence is placed."], "computational": ["Of or related to computation."], "bound": ["To surround a territory.", "To spring away from an impact.", "Constrained by a quantifier.", "A value which is known to be greater or smaller than a given set of values."], "locally": ["By a particular locality."], "minimum": ["The lowest limit."], "homomorphism": ["A mapping between mathematical structures of the same type."], "parallel": ["Of two or more (straight) lines, (flat) surfaces etc: Equally distant from one another at all points."], "framework": ["The arrangement of support beams that represent a buildings general shape and size.", "A basic conceptual structure.", "An abstraction in which common code providing generic functionality can be selectively overridden or specialized by user code providing specific functionality."], "underlying": ["Involving basic facts or principles.", "Lying underneath."], "reasoning": ["Thinking that is coherent and logical."], "instance": ["Something that is representative of all such things in a group; an occurrence of something.", "An item of information that is representative of a type or class.", "In object-oriented programming: a created object, one that has had memory allocated for local data storage; an instantiation of a class."], "rank": ["Position of a person, place, thing, or idea in relation to others based on a shared property such as physical location, population, or quality"], "preservation": ["The process of maintaining a structure in its present condition and arresting further deterioration."], "authenticate": ["To establish or to confirm something (or someone) as authentic, that is, that claims made by or about the thing are true."], "exponential": ["Behaving with a pattern of change in which the amount of change that occurs in a quantity during a small interval of time is proportional to the amount of that quantity present."], "stable equilibrium": ["An equilibrium in which the system tends to return to that equilibrium condition whenever it is nudged off of that equilibrium."], "stochastic": ["Randomly determined or having a random probability distribution or pattern that may be analyzed statistically but may not be predicted precisely."], "theoretic": ["Concerned with theories or hypotheses rather than with practical matters."], "undecidable": ["Incapable of being algorithmically decided in finite time."], "recursive": ["Of or relating to a recursion.", "Describing a set for which there exists an algorithm that will determine whether any element is or is not within the set in a finite amount of time."], "recursion": ["The definition of an operation in terms of itself."], "splittable": ["Property of something that can be split."], "widely": ["Commonly; generally; to a great degree."], "automata": ["A self-operating machine or mechanism."], "cellular automaton": ["Simplified mathematical models of spatial interactions, in which sites or cells on a landscape are assigned a particular state, which then changes stepwise according to specific rules conditioned on the states of neighboring cells."], "pushdown automaton": ["A finite automaton that can make use of a stack containing data."], "clotheshorse": ["A frame on which to hang wet laundry for drying."], "finite state automaton": ["A model of behavior composed of a finite number of states, transitions between those states, and actions."], "finite state machine": ["A model of behavior composed of a finite number of states, transitions between those states, and actions."], "state machine": ["A model of behavior composed of a finite number of states, transitions between those states, and actions."], "asymptotically": ["In an asymptotical manner, in the way of an asymptote."], "clothesline": ["A cord on which clothes are hung to dry."], "asymptotical": ["Of, relating to, or being an asymptote."], "asymptotic": ["Of, relating to, or being an asymptote."], "tractability": ["The state of being tractable or docile."], "topological": ["Of or relating to topology."], "sequential": ["Succeeding or following in order."], "isomorphism": ["A bijective map f such that both f and its inverse f' are homomorphisms, i.e., structure-preserving mappings."], "relational": ["Relating to relations."], "deterministic": ["Of, or relating to determinism."], "scheduling": ["A function in many aspects of industry, commerce and computing in which events are timed to take place at the most opportune time."], "efficient": ["Being effective without wasting time or effort or expense."], "input": ["Something fed into a process with the intention of it shaping or affecting the outputs of that process.", "To enter data into a system."], "propose": ["To suggest a plan or course of action.", "To ask for a person's hand in marriage."], "peer": ["Somebody or something who/that is at an equal level.", "A noble with a hereditary title."], "XQuery": ["A query language (with some programming language features) that is designed to query collections of XML data."], "SIMD": ["A technique employed to achieve data level parallelism, as in a vector processor."], "Single Instruction, Multiple Data": ["A technique employed to achieve data level parallelism, as in a vector processor."], "significantly": ["In a significant manner; notably."], "skyline": ["The horizontal line that appears to separate the Earth from the sky.", "The silhouette of a city.", "An operation that filters out a set of interesting points from a potentially large set of data points (A point is interesting if it is not dominated by any other point)."], "aggregate": ["A mass, assemblage, or sum of particulars; something consisting of elements but considered as a whole.", "Formed by a collection of particulars into a whole mass or sum; collective; combined; added up.", "To bring together; to collect into a mass or sum.", "To heap up; to collect or gather (e.g. work, magazines, etc.)."], "congeries": ["A mass, assemblage, or sum of particulars; something consisting of elements but considered as a whole."], "conglomeration": ["A corporation formed by the combination of several smaller corporations whose activities are unrelated to the corporation's primary activity.", "A mass, assemblage, or sum of particulars; something consisting of elements but considered as a whole."], "ranking": ["Relative placement in a list."], "various": ["More than one indeterminate thing."], "selectivity": ["A measure of how selective something is."], "retrieval": ["The act of regaining or saving something lost (or in danger of becoming lost).", "The operation of accessing information from the computer's memory."], "nest": ["To build or settle into a nest.", "A structure built by vertebrates to hold its eggs, its offspring, or occasionally the animal itself and may be composed of organic material such as twigs, grass, and leaves, or may be a simple depression in the ground, or a hole in a rock, tree, or building."], "extensive": ["Large in number or quantity.", "Having broad range or effect."], "experimentally": ["In the manner of an experiment."], "estimator": ["A person who estimates, especially one who estimates costs."], "distribute": ["To divide something into portions and dispense it.", "To cause to become widely known.", "To distribute or disperse widely.", "To make available."], "cache": ["A collection of things that will be required in future, and can be retrieved rapidly, stored in a hidden or inaccessible place.", "A fast temporary storage where most recent or most frequent values are stored to avoid having to reload from a slower storage medium."], "bitmap": ["A series of bits that represents a rasterized graphic image, each pixel being represented as a group of bits."], "dependency": ["A state of being dependent; a refusal to exercise initiative:", "A territory that does not possess full political independence or sovereignty as a State.", "A dependence on a habit-forming substance such as a drug or alcohol."], "dataset": ["A collection of data, usually presented in tabular form."], "data set": ["A collection of data, usually presented in tabular form."], "adaptive": ["Of, pertaining to, characterized by or showing adaptation; making or made fit or suitable."], "schedules": ["Plural of schedule."], "recovery": ["The act or process of regaining or repossession of something lost."], "syntactic": ["Of, related to or connected with syntax."], "syntactical": ["Of, related to or connected with syntax."], "operations": ["Plural form of operation."], "instruction": ["The act of instructing, teaching, or furnishing with information or knowledge.", "That which is enjoined or ordered to one or several persons by a superior authority.", "A single operation of a processor defined by an instruction set architecture."], "consistent": ["Of a regularly occurring, dependable nature.", "Of a set of statements, such that no contradiction logically follows from them."], "documents": ["Plural form of document.", "Third-person singular simple present indicative form of document."], "wavelet": ["A mathematical function used to divide a given function or continuous-time signal into different frequency components and study each component with a resolution that matches its scale. (source: Wikipedia)"], "robust": ["Evincing strength; indicating vigorous health.", "Having a physically sound and strong body."], "robusta": ["An African coffee plant."], "relevant": ["Directly related, connected, or pertinent to a topic."], "software testing": ["The process of checking software, to verify that it satisfies its requirements and to detect errors."], "incomplete": ["Not yet finished."], "contents": ["That which is contained."], "compress": ["Any therapeutic material that is used to cover an injury.", "To make smaller; to press or squeeze together, or to make something occupy a smaller space or volume.", "A soft, cloth pad held in place by a bandage and used to provide pressure or to supply moisture, cold, heat, or medication."], "validate": ["To check or prove the validity of."], "suitably": ["In a suitable manner; fitly; agreeably; with propriety."], "theoretically": ["In a theoretical manner.", "In theory; on paper."], "unexpected": ["Not expected, anticipated or foreseen."], "synopsis": ["A brief summary of the major points of a written work, either as prose or as a table; an abridgment or condensation of a work."], "clothes peg": ["Wood or plastic fastener for holding clothes on a clothesline."], "use case": ["A description of a system\u2019s behaviour as it responds to a request that originates from outside of that system."], "cloudburst": ["A sudden and very heavy rainfall."], "cloudless": ["Free from clouds."], "notation": ["A comment or instruction.", "A system of characters, symbols, or abbreviated expressions used in an art or science or in mathematics or logic to express technical facts or quantities."], "dure": ["To last, continue, endure."], "thread of execution": ["A way for a program to fork (or split) itself into two or more simultaneously (or pseudo-simultaneously) running tasks. In general, a thread is contained inside a process and different threads in the same process share some resources while different processes do not. (source: Wikipedia)"], "grammatical": ["Acceptable as a correct sentence or clause as determined by the rules and conventions of the grammar, or morpho-syntax of the language."], "flexibility": ["The quality of being flexible.", "The quality of being adaptable."], "legacy": ["Something inherited from a predecessor."], "novelty": ["A new product; an innovation."], "overcome": ["To end in success a struggle or contest.", "To surmount a physical or an abstract obstacle."], "process": ["A way of proceeding or doing something, especially a systematic or regular one.", "A series of events to produce a result, especially as contrasted to product.", "To perform a particular process."], "efficiently": ["In an efficient manner."], "correctly": ["In a correct manner."], "construct": ["Something built up of distinct parts.", "To create something by combining or assembling materials or parts or by changing it.", "To build or form (something) by assembling parts.", "To make by combining materials and parts.", "To make things, usually on a large scale, with tools and either physical labor or machinery, out of artificial or natural components or parts."], "consistency": ["The property of holding together and retaining its shape.", "Logical coherence and accordance with the facts."], "conformance": ["Action or behavior in correspondence with current customs, rules, or styles."], "dependent": ["Relying upon; depending upon."], "clove": ["The aromatic flower bud of a clove tree, used as a spice."], "encapsulate": ["To cover something as if in a capsule."], "DBMS": ["Computer software designed for the purpose of managing databases."], "Boolean": ["Pertaining to data items that can have \u201ctrue\u201d and \u201cfalse\u201d (or, equivalently, 1 and 0 respectively) as their only possible values and to operations on such values."], "Kannada script": ["A syllabary (of the type sometimes called an abugida) of the Brahmic family, primarily to write the Kannada language, one of the Dravidian languages in India."], "Kannada Written": ["The written forms of the Kannada language."], "Kannada Written Kannada Script Historical": ["The Kannada language written with the historical Kannada script."], "Rayalasima": ["A dialect of the Telugu language."], "Telugu Written": ["Written forms of the Telugu language."], "Telugu Written Telugu Script Historical": ["The Telugu language written with the historical Telugu script."], "Telugu script": ["An abugida script from the Brahmic family of scripts used to write Telugu language."], "3D": ["Existing in three dimensions."], "three-dimensional": ["Existing in three dimensions."], "mesh": ["A flat, semi-permeable barrier made of connected strands of metal, fiber, or other flexible/ductile material.", "A structure made of connected strands of metal, fiber, or other flexible/ductile material, with evenly spaced openings between them."], "interactive": ["Acting with each other."], "2D": ["Existing in two dimensions."], "two-dimensional": ["Existing in two dimensions."], "synthesis": ["The formation of something complex or coherent by combining simpler things.", "Reasoning from the general to the particular (or from cause to effect)."], "realistic": ["Expressed or represented as being accurate."], "radiance": ["A radiometric measure that describes the amount of light that passes through or is emitted from a particular area, and falls within a given solid angle in a specified direction."], "reflectance": ["The fraction of incident radiation reflected by a surface."], "rigid": ["Incapable of or resistant to bending.", "Incapable of compromise or flexibility.", "Incapable of adapting or changing to meet circumstances."], "spline": ["A special function defined piecewise by polynomials."], "deformation": ["The act of deforming, or state of being deformed."], "physically": ["In a physical manner.", "According to the laws of physics."], "shading": ["Depicting depth in 3D models or illustrations by varying levels of darkness."], "blur": ["Something that appears hazy or indistinct.", "To make indistinct or hazy, to obscure or dim."], "compute": ["To make a mathematical calculation or computation."], "depth": ["The vertical distance below a surface; the amount that something is deep."], "dimensional": ["Of or relating to dimensions."], "discrete": ["Separate and distinct."], "geometric": ["Of, or relating to geometry."], "interactively": ["In an interactive manner."], "gradient": ["The rate of change of a function."], "sparse": ["Having widely spaced intervals.", "Occupied or populated by a small number of people."], "skeletal": ["Of, or relating to the skeleton."], "scan": ["To examine sequentially, part by part.", "To create a digital copy of an image using a scanner.", "To examine hastily (e.g. a newspaper).", "To make a wide, sweeping search of (e.g. the sky)."], "volumetric": ["Relating to the three dimensional qualities of a space."], "visually": ["By means of sight."], "vertex": ["The highest point of something.", "The common point of the two rays of the angle."], "viewpoint": ["The position from which an object is looked at.", "The mental position from which things are viewed.", "A place from which something can be viewed."], "unlike": ["Different from."], "tensor": ["An object which extends the notion of scalar, vector, and matrix.", "A muscle that stretches a body part, or renders it tense."], "successfully": ["In a successful manner; with success; without failing."], "spatially": ["With reference to space or arrangement in space."], "simulate": ["To model, replicate, duplicate the behavior, appearance or properties of.", "To follow as a model or a pattern."], "rotational": ["Of, pertaining to or caused by rotation."], "robustness": ["The property of being strong and healthy in constitution.", "The quality of being able to withstand stresses, pressures, or changes in procedure or circumstance."], "reconstruct": ["To rebuild: to build again."], "clover": ["A plant of the genus Trifolium."], "polymath": ["Person who studied a lot of different sciences."], "cloverleaf": ["A highway interchange at which two highways, one crossing over the other, have a series of entrance and exit ramps resembling the outline of a four-leaf clover and enabling vehicles to proceed in either direction on either highway.", "Shaped like or resembling a leaf of the clover plant."], "initial": ["The first letter of a word (especially a person's name).", "Occurring at the beginning.", "To mark with one's initials."], "clown": ["Someone who makes jokes.", "A comical performer, stereotypically characterized by its grotesque appearance: colored wigs, stylistic makeup, outlandish costumes, unusually large footwear, etc., who entertain spectators by acting in a hilarious fashion."], "incident": ["An event that has caused or has the potential to cause damage to an organization's business systems, facilities, or personnel.", "Falling on or striking a surface."], "perceptual": ["Of the depiction of an object based on direct observation."], "optical": ["Of, or relating to sight."], "minimal": ["The smallest possible amount, quantity, or degree."], "intuitive": ["Obtained through intuition rather than from reasoning or observation."], "indirect": ["Not direct."], "implicit": ["Implied though not directly expressed."], "sculpture": ["Three-dimensional artwork created by shaping hard or plastic material, commonly stone (either rock or marble), metal, or wood.", "Creating figures or designs in three dimensions."], "sculptress": ["A woman sculptor."], "sculptural": ["Related to sculpture."], "printmaking": ["The process of making artworks by printing, normally on paper."], "printmaker": ["An artist who designs and makes prints."], "photographer": ["A person who takes a photograph using a camera."], "fine arts": ["Any art form developed primarily for aesthetics rather than utility."], "stinging nettle": ["A herbaceous perennial flowering plant, native to Europe, Asia, northern Africa, and North America which causes a skin reaction upon touch."], "buckrams": ["Pungent, perennial weedy plant in Europa and north Asia which smells similar to garlic and is often used as cooking ingredient."], "ramsons": ["Pungent, perennial weedy plant in Europa and north Asia which smells similar to garlic and is often used as cooking ingredient."], "wild garlic": ["Pungent, perennial weedy plant in Europa and north Asia which smells similar to garlic and is often used as cooking ingredient."], "broad-leaved garlic": ["Pungent, perennial weedy plant in Europa and north Asia which smells similar to garlic and is often used as cooking ingredient."], "wood garlic": ["Pungent, perennial weedy plant in Europa and north Asia which smells similar to garlic and is often used as cooking ingredient."], "bear's garlic": ["Pungent, perennial weedy plant in Europa and north Asia which smells similar to garlic and is often used as cooking ingredient."], "double standard": ["A situation where, out of two classes of entities, only one is expected to follow a certain standard while the other is treated more leniently."], "blood diamond": ["A diamond mined in a war zone and used to finance armed conflicts."], "converted diamond": ["A diamond mined in a war zone and used to finance armed conflicts."], "conflict diamond": ["A diamond mined in a war zone and used to finance armed conflicts."], "hot diamond": ["A diamond mined in a war zone and used to finance armed conflicts."], "war diamond": ["A diamond mined in a war zone and used to finance armed conflicts."], "subspecies": ["The taxonomic rank immediately subordinate to a species."], "glare": ["To shine intensely."], "facial": ["Of or concerning the face"], "fluorescent": ["Having the ability to emit light when struck by electrons or another form of radiation."], "fluorescent lamp": ["A low pressure mercury electric discharge lamp, tubular in shape in which a fluorescent coating (phosphor) transforms ultraviolet energy into visible light."], "fluorescent tube": ["A low pressure mercury electric discharge lamp, tubular in shape in which a fluorescent coating (phosphor) transforms ultraviolet energy into visible light."], "hierarchical": ["Pertaining to a hierarchy."], "implement": ["To bring something to fulfilment.", "A tool or instrument for working with.", "To bring about; to put into practice."], "look after": ["To care for medicinally or surgically; to apply medical care to.", "To keep under careful scrutiny."], "media": ["Plural form of medium.", "Materials and tools used by the artist to create the visual elements perceived by the viewer.", "Storage and transmission tools used to store and deliver information or data.", "Mass communication means, including books, newspapers, magazines, radio, television, motion pictures and recordings."], "take care": ["To be in charge of or deal with."], "nonlinear": ["Not lying on a straight line.", "Not a linear function of the relevant variables."], "linear function": ["A first degree polynomial function of one variable.", "A function that is a linear map, that is, a map between two vector spaces that preserves vector addition and scalar multiplication."], "non-linear": ["Not a linear function of the relevant variables."], "offline": ["Not directly connected (with a computer, a network, etc.)."], "off-line": ["Not directly connected (with a computer, a network, etc.)."], "precomputed": ["Previously calculated, determined by a previous computation."], "pre-computed": ["Previously calculated, determined by a previous computation."], "powerful": ["Capable of producing great physical force.", "Having, or capable of exerting power, potency or influence.", "Possessing physical strength and weight; rugged and powerful."], "filtering": ["The process of controlling access to a network by analyzing the incoming and outgoing packets."], "packet filtering": ["The process of controlling access to a network by analyzing the incoming and outgoing packets."], "clumsiness": ["The quality of being clumsy."], "content filtering": ["The technique whereby content is blocked or allowed based on analysis of its content, rather than its source or other criteria. It is most widely used on the internet to filter email and web access. (source: Wikipedia)"], "Bayesian filtering": ["A statistical technique whereby the system assigns a spam probability based on training from users."], "recursive Bayesian estimation": ["A general probabilistic approach for estimating an unknown probability density function recursively over time using incoming measurements and a mathematical process model. (source: Wikipedia)"], "Bayesian network": ["A probabilistic graphical model that represents a set of variables and their probabilistic dependencies."], "Bayesian": ["Of or relating to statistical methods based on Bayes' theorem."], "procedural": ["Relating to a programming approach whereby the developer specifies exactly what must be done and in what sequence."], "prior": ["Of that which comes before.", "Making a beginning but not being the real thing."], "transport phenomenon": ["Any of various mechanisms by which particles or quantities move from one place to another. (source: Wikipedia)"], "anisotropic": ["Different in a physical property (absorbance, refractive index, density, etc.) for some material when measured along different axes."], "isotropic": ["Having properties that are identical in all directions; exhibiting isotropy."], "curvature": ["The amount of curving or bending of a line, figure, or body."], "curving": ["Something that is bent as to form an arch"], "bending": ["Movement that causes the formation of a curve."], "radius of curvature": ["The measure of how curved, or bent, a given curve or surface is."], "combination": ["A collection of things that have been combined."], "conventional": ["Following accepted customs and proprieties."], "computed": ["Calculated, determined by computation."], "constrained": ["Lacking spontaneity; not natural."], "coupling": ["The act of joining together to form a couple.", "The act of pairing a male and female for reproductive purposes."], "deformable": ["Capable of being reshaped."], "convolution": ["An image processing technique in which each pixel is altered by some function of the surrounding pixels.", "A mathematical operation on two functions, producing a third function that is typically viewed as a modified version of one of the original functions."], "deconvolution": ["An algorithm-based process used to reverse the effects of convolution on recorded data. (source: Wikipedia)"], "discuss": ["To converse or debate concerning a particular topic."], "derive": ["To reason or establish by deduction.", "To come from; to be connected by a relationship of blood."], "virtual": ["That has conceptual but not actual existence."], "symbolic": ["Pertaining to, of the nature of, or serving as an emblem."], "tetrahedron": ["A polyhedron with four faces."], "widespread": ["Affecting a large area."], "topologically": ["From the point of view of topology."], "translucent": ["Of a material or substance capable of transmitting some light, but not clear enough to be seen through."], "validation": ["The act of validating something."], "visualization": ["The act of visualizing, or something visualized."], "temporally": ["In a temporal manner."], "synchronized": ["Operating in unison."], "synthesize": ["To combine separate elements into one more complex element."], "segmentation": ["Breaking a solid structure into a number of usually equal size pieces."], "rigidity": ["The quality or state of being rigid."], "relaxation": ["The process in which a muscle loosens and returns to a resting stage.", "A period of lessening tension between rivals.", "Relief from work or other activity or responsibility."], "reliable": ["Suitable or fit to be relied on."], "scalability": ["The quality of being scalable."], "seamless": ["Having no seams."], "simplification": ["The elimination of superfluous details."], "smoothness": ["The condition of being smooth."], "statistically": ["In a statistical manner."], "specular": ["Having or relating to the qualities of a mirror."], "spectral": ["Of or relating to a spectrum."], "spectrum": ["A broad range of related objects or values or qualities or ideas or activities."], "smoothly": ["In a smooth manner."], "procedure": ["A series of defined steps or tasks.", "A part of a program that is abstracted as a unit and that can be called from multiple places, often with parameters.", "A particular means of accomplishing something."], "parabolic": ["Having the form of a parabola.", "Resembling or expressed by parables."], "parabolical": ["Having the form of a parabola.", "Resembling or expressed by parables."], "parametric": ["Of, relating to, or defined using parameters."], "particularly": ["Especially; to a great extent."], "perceptually": ["With regard to perception."], "poorly": ["In a poor or improper or unsatisfactory manner."], "programmable": ["Capable of being programmed."], "Realism": ["A visual art style that depicts the actuality of what the eyes can see."], "realism": ["A concern for fact or reality and rejection of the impractical and visionary."], "refractive": ["Capable of bending a light or sound wave as it passes through."], "purely": ["In a pure manner."], "psychophysical": ["Of or pertaining to psychophysics."], "psychophysics": ["The division of psychology that studies the physiological aspects of mental phenomena and in particular the quantitative relations between stimuli and the resultant sensations."], "progressive": ["Proceeding in small stages.", "Favouring or promoting progress.", "Gradually advancing in extent."], "overall": ["Including everything; universal.", "Generally; with everything considered."], "all-encompassing": ["Including everything; universal."], "mask": ["A cover, or partial cover, for the face, used for disguise or protection.", "A pattern of bits or characters that controls the keeping, deleting, or testing of portions of another pattern of bits or characters.", "To hide under a false appearance."], "interaction": ["A kind of action that occurs as two or more objects have an effect upon one another."], "fill": ["To have a right, title, or office.", "To make full."], "fidelity": ["Faithfulness to one's duties.", "Accuracy, or exact correspondence to some given quality or fact."], "extract": ["To remove, usually with some force or effort."], "diffuse": ["To spread over or through as in air, water, or other matter, especially by fluid motion or passive means.", "Not focused or concentrated.", "To cause to become widely known.", "To move outward (e.g. soldiers)."], "accurately": ["With few mistakes."], "affine transformation": ["A linear transformation between vector spaces followed by a translation."], "cluster bomb": ["A projectile that, when dropped from an aircraft or fired through the air, releases explosive fragments over a wide area."], "linear transformation": ["A function between two vector spaces that preserves the operations of vector addition and scalar multiplication."], "linear map": ["A function between two vector spaces that preserves the operations of vector addition and scalar multiplication."], "coherence": ["The quality of being orderly, logical and consistent."], "computationally": ["In a computational manner; Using computation.", "In a computational manner."], "conformal": ["Describing something that conforms, especially that matches the shape of something."], "coachwork": ["The body of a motor vehicle (automobile, bus or truck) which is built around a chassis."], "conformal map": ["An angle-preserving transformation."], "carrossery": ["The body of a motor vehicle (automobile, bus or truck) which is built around a chassis."], "continuously": ["Without pause."], "criterion": ["A standard or test by which individual things or people may be compared and judged."], "directional": ["Relating to or indicating directions in space.", "A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "discretization": ["Approximating the solution of a continuous problem by representing it in terms of a discrete set of elements."], "dissipation": ["The release of energy over time in dynamical systems by mechanical modes, such as waves or oscillations.", "Excessive indulgence in sensual pleasures."], "effectively": ["In an efficient or effective manner; with powerful effect."], "everyday": ["Occurring or returning in the ordinary course of events.", "Appropriate for ordinary use, rather than for special occasions."], "fully": ["In a full manner or degree."], "geometrically": ["With respect to geometry."], "globally": ["In all places or situations."], "greatly": ["To a great extent or degree."], "formulation": ["The quantities and the sources of ingredients used to make a product.", "The action of formulating an idea or explanation in a precise manner."], "encode": ["To convert plain text into code."], "Spanish salsify": ["A plant native to southern Europe and the Near East with edible roots."], "black oyster plant": ["A plant native to southern Europe and the Near East with edible roots."], "serpent root": ["A plant native to southern Europe and the Near East with edible roots."], "viper's herb": ["A plant native to southern Europe and the Near East with edible roots."], "viper's grass": ["A plant native to southern Europe and the Near East with edible roots."], "root vegetable": ["Plant which stores edible material in a root, corm or tuber."], "Facebook": ["A social networking website launched on 2004."], "social": ["Being extroverted or outgoing.", "Of or related to society.", "Of or pertaining to society or social groups and their activities and customs."], "sociable": ["Being extroverted or outgoing."], "Google": ["An American multinational corporation, earning revenue from advertising related to its Internet search, web-based e-mail, online mapping, office productivity, social networking, and video sharing services as well as selling advertising-free versions of the same technologies."], "review": ["A second or subsequent reading of a text or artifact.", "A critical evaluation of a publication such as a book, movie, musical composition or video game.", "To write a critical evaluation of a publication such as a book, movie, musical composition or video game."], "secure": ["Free from danger or risk.", "To make something fixed or stable; to cause to be firmly attached.", "To make certain of."], "flaw": ["An imperfection in a device or machine."], "flash": ["A set of multimedia software created by Macromedia and currently developed and distributed by Adobe Systems.", "A sudden, short, temporary burst of light.", "To display or act proudly, ostentatiously or pretentiously.", "A gaudy and proud outward display."], "Flash": ["A set of multimedia software created by Macromedia and currently developed and distributed by Adobe Systems."], "Adobe Flash": ["A set of multimedia software created by Macromedia and currently developed and distributed by Adobe Systems."], "vulnerability": ["The state of being weak.", "A defect or weakness in the feasibility, design, implementation, operation, or maintenance of a system. (Schneider)"], "Silverlight": ["A programmable web browser plugin that enables features such as animation, vector graphics and audio-video playback that characterize rich internet applications. (source: Wikipedia)"], "Microsoft Silverlight": ["A programmable web browser plugin that enables features such as animation, vector graphics and audio-video playback that characterize rich internet applications. (source: Wikipedia)"], "vendor": ["One who sells or offers to sell."], "Olympics": ["An international multi-sport event taking place every fourth year."], "pack": ["A bundle made up and prepared to be carried.", "To arrange in a container.", "To press tightly together or cram."], "meanwhile": ["During the time."], "holographic": ["In the form of a hologram or holograph.", "Written by a person's own hand."], "holography": ["A technique that allows the light scattered from an object to be recorded and later reconstructed so that it appears as if the object is in the same position relative to the recording medium as it was when recorded."], "hologram": ["The intermediate photograph (or photographic record) that contains information for reproducing a three-dimensional image by holography."], "issue": ["An important question that is in dispute and must be settled.", "Condition that which follows something on which it depends.", "A passage or gate from inside someplace to the outside, that permits escape or release.", "To come out of (e.g. water)."], "coverage": ["The extent to which something is covered."], "gesticulate": ["To show, express or direct through movements."], "coagulate": ["To change from a fluid into a thickened mass."], "coalition": ["An alliance, especially a temporary one, of people, factions, parties, or nations."], "mock strawberry": ["A species from Southeast Asia used as ornamental plant whose fruit looks similar to wild strawberries but has no taste."], "Indian strawberry": ["A species from Southeast Asia used as ornamental plant whose fruit looks similar to wild strawberries but has no taste."], "woodland strawberry": ["Wild strawberry species with edible fruits which grows on the edges and clearings of woods."], "wild strawberry": ["Wild strawberry species with edible fruits which grows on the edges and clearings of woods."], "European strawberry": ["Wild strawberry species with edible fruits which grows on the edges and clearings of woods."], "Alpine strawberry": ["Wild strawberry species with edible fruits which grows on the edges and clearings of woods."], "edge of the wood": ["The outer limit of a forest."], "edge of the forest": ["The outer limit of a forest."], "clearing": ["A tract of land in a forest not covered by trees and bushes."], "mulatto": ["Son of a black parent and a white parent.", "Daughter of a black parent and a white parent."], "quadroon": ["Son of a mulatto parent and a white parent.", "Daughter of a mulatto parent and a white parent."], "octoroon": ["Son of a quarteroon parent and a white parent.", "Daughter of a quarteroon parent and a white parent."], "quintroon": ["Son of an octoroon parent and a white parent.", "Daughter of an octoroon parent and a white parent."], "hexadecaroon": ["Son of an octoroon parent and a white parent.", "Daughter of an octoroon parent and a white parent."], "griffe": ["Son of a black parent and a mulatto parent.", "Daughter of a black parent and a mulatto parent."], "milk chocolate": ["Chocolate containing cocoa mass, cocoa butter, sugar and milk."], "chocolate liquor": ["Liquid mass made from roasted and ground cocoa beans."], "cocoa liquor": ["Liquid mass made from roasted and ground cocoa beans."], "cocoa mass": ["Liquid mass made from roasted and ground cocoa beans."], "cocoa butter": ["Pale yellow vegetable fat obtained by squeezing cocoa beans."], "theobroma oil": ["Pale yellow vegetable fat obtained by squeezing cocoa beans."], "smart": ["Not showing due respect.", "Of high or especially quick cognitive capacity.", "Exhibiting social ability or cleverness.", "Elegant and stylish."], "Symbian": ["An open operating system, designed for mobile devices, with associated libraries, user interface frameworks and reference implementations of common tools, produced by Symbian Ltd. It runs exclusively on ARM processors."], "Symbian OS": ["An open operating system, designed for mobile devices, with associated libraries, user interface frameworks and reference implementations of common tools, produced by Symbian Ltd. It runs exclusively on ARM processors."], "vulnerable": ["Exposed to attack or harm."], "Ruby": ["A dynamic, reflective, general purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features.", "Female first name."], "garden strawberry": ["The most common strawberry species worldwide, created in the 18th century as a hybrid of the Virginia strawberry and the Chilean strawberry."], "Virginia strawberry": ["A strawberry species of North America."], "beach strawberry": ["Strawberry species with large fruits originating from the American Pacific coast."], "Chilean strawberry": ["Strawberry species with large fruits originating from the American Pacific coast."], "sand strawberry": ["Strawberry species with large fruits originating from the American Pacific coast."], "coastal strawberry": ["Strawberry species with large fruits originating from the American Pacific coast."], "strawberry plant": ["Plant of the family Rosaceae with white flowers and edible red fruits."], "lemon cake": ["Cake with lemons in form of lemon gelee, lemon juice or lemon zest."], "meatless": ["Lacking meat."], "discarnate": ["Having no physical body or form."], "incorporeal": ["Having no physical body or form."], "immaterial": ["Not pertinent to the matter under consideration.", "Having no physical body or form."], "asomatous": ["Having no physical body or form."], "lemon cream puff": ["Pastry made of choux pastry filled with lemon cream."], "limoncello": ["A lemon liqueur produced around the Gulf of Naples, along the Amalfi Coast and Sicily."], "penetration": ["An attack that penetrates into enemy territory.", "The ability to make way into or through something."], "preconference": ["The events scheduled previously to the opening of a conference."], "privacy": ["The ability of an individual or group to seclude themselves or information about themselves and thereby reveal themselves selectively."], "proprietary": ["Of or relating to property or ownership."], "proprietary software": ["Computer software on which the producer has set restrictions on use, private modification, copying, or republishing."], "realize": ["To make real or concrete; give reality or substance to.", "To become aware of a fact or situation.", "To earn, to gain (money)."], "randomization": ["Arrangement of data in such a way as to simulate chance occurrence."], "reputation": ["What somebody is known for."], "citrusy": ["Having the flavour or taste of a citrus fruit."], "lemony": ["Having the smell or taste of a lemon."], "lemonish": ["Having the smell or taste of a lemon."], "lemonlike": ["Having the smell or taste of a lemon."], "interview": ["A formal meeting, in person, for the assessment of a candidate or applicant.", "A conversation in which facts or opinions are sought."], "refrigerative": ["Causing cold or cooling."], "refrigerating": ["Causing cold or cooling."], "frigorific": ["Causing cold or cooling."], "chilling": ["Causing cold or cooling."], "IBM": ["A multinational computer technology and consulting corporation headquartered in Armonk, New York, USA."], "International Business Machines": ["A multinational computer technology and consulting corporation headquartered in Armonk, New York, USA."], "Thanatos": ["In Greek mythology, the god of death."], "Hypnos": ["In Greek mythology, the god of sleep."], "Nyx": ["In Greek mythology, the goddess of the night."], "Erebus": ["In Greek mythology, the god of darkness."], "Erebos": ["In Greek mythology, the god of darkness."], "coaster": ["A vessel engaged in coastal trade.", "A flat object on which beverages are put to protect the surface of a table.", "An optical disk that is useless because the data on it cannot be read."], "Hephaestus": ["In Greek mythology, the God of fire, blacksmiths and volcanoes."], "Hades": ["In Greek mythology, the underworld and abode of the dead.", "The ruler of the underworld in Greek mythology."], "cancer-causing": ["Causing cancer."], "cancer-producing": ["Causing cancer."], "alive": ["Having life."], "anywhere": ["In, at or to any place."], "beyond": ["Farther along in space or time or degree."], "canonical": ["In conformity with canon law.", "Reduced to the simplest and most significant form possible without loss of generality.", "Appearing in a biblical canon.", "Of or relating to or required by canon law.", "Conforming to orthodox or recognized rules."], "classic": ["Adhering to established standards and principles.", "A creation of the highest excellence."], "entitle": ["To bestow the right to do (to own, to demand, or to receive) something, to someone."], "equestrian": ["Of horseback riding or horseback riders.", "A person who rides horses."], "everything": ["All the things."], "International Prototype Kilogram": ["Cylinder consisting of a platinum-iridium alloy which is used as a reference for the SI unit kilogram and is kept in Paris."], "IPK": ["Cylinder consisting of a platinum-iridium alloy which is used as a reference for the SI unit kilogram and is kept in Paris."], "nobody": ["Not any person."], "anthropomorphic": ["Having the form of a man."], "anthropomorphous": ["Having the form of a man."], "humanlike": ["Having the form of a man."], "mechanical man": ["Autonomously operating machine with a stature which is based on the human stature."], "humanoid": ["Autonomously operating machine with a stature which is based on the human stature.", "Having the form of a man."], "coastline": ["The outline of a coast."], "shoreline": ["The outline of a coast."], "coat hanger": ["A triangular device made of wire, wood or plastic with a hook on top that is used to store an item of clothing by hanging."], "cockpit": ["A space, usually enclosed, in the forward fuselage of an airplane containing the flying controls, instrument panel, and seats for the pilot and copilot."], "visualize": ["To envisage, or form a mental picture.", "To make (something) visible."], "evolve": ["To change over time; to undergo development or evolution."], "evolutional": ["Of or pertaining to evolution."], "evolutionary": ["Of or pertaining to evolution."], "evolutionism": ["Any of several theories that explain the evolution of systems or organisms."], "fitness": ["The quality of being suitable.", "The ability to perform a function.", "Good physical condition; the condition of being in shape or in condition."], "replication": ["Process by which an object, person, place or idea may be copied mimicked or reproduced."], "regulatory": ["Of or pertaining to regulation."], "functional": ["In good working order.", "Having semantics defined purely in terms of mathematical functions, without side-effects."], "molecular": ["Pertaining to the smallest unit into which a substance can be divided without a change in its chemical nature."], "molecular formula": ["A chemical formula that shows the actual number and kinds of atoms present in a molecule of a compound."], "molecular evolution": ["The process of evolution at the scale of DNA, RNA, and proteins."], "molecular genetics": ["The area of knowledge concerned with the genetic aspects of molecular biology, especially with DNA, RNA and protein molecules."], "molecular clock": ["A technique in molecular evolution to relate the divergence time of two species diverged to the number of molecular differences measured between the species' DNA sequences or proteins. (source: Wikipedia)"], "replicate": ["To make a copy (replica) of.", "To make or do or perform again."], "protocell": ["A self-organized, endogenously ordered, spherical collection of polypeptides proposed as a stepping-stone to the origin of life."], "structural": ["Relating to or having or characterized by structure.", "Pertaining to geological structure."], "speciation": ["The development of one or more species from an existing species. (source: FAO)"], "suicidal": ["Very dangerous and likely to lead to disaster or death.", "Inclined to commit suicide."], "death drive": ["In Freudian psychoanalytic theory, the drive towards death, destruction and non-existence."], "suicidal tendency": ["A tendency to commit suicide."], "silver medal": ["The award presented after winning second place in a sporting event."], "bronze medal": ["The award presented after winning third place in a sporting event."], "sadden": ["To make sad.", "To become sad."], "plasticity": ["The quality or state of being plastic."], "Susan": ["Female first name."], "understood": ["Of things which have been comprehended."], "phenotypic": ["Of or relating to a phenotype."], "reaction": ["An action or statement in response to a stimulus or other event."], "scenario": ["An outline of an hypothesized chain of events.", "A synthetic description of an event or series of actions and events."], "toward": ["In the direction of."], "towards": ["In the direction of."], "replicator": ["Something capable of self-replication, like a gene or meme."], "meme": ["A cultural item or idea that is transmitted by repetition in a manner analogous to the propagation of biological genes."], "rewriting": ["A wide range of potentially non-deterministic methods of replacing subterms of a formula with other terms."], "hallmark": ["A distinguishing feature."], "illustrate": ["To provide a book or other publication with drawings and pictures.", "To clarify something by giving, or serving as, an example or a comparison."], "investigate": ["To look into carefully in order to uncover (find) facts or information."], "likely": ["Having a good chance to happen."], "phenomenom": ["An appearance or occurrence, usually one evoking curiosity."], "neutral": ["Not taking sides in a conflict such as war."], "neurocontroller": ["An artificial network acting as cognitive system within a body, like a robot or a physical computer simulations of such."], "multidimensional": ["Having more than two dimensions."], "multicellular": ["Composed of more than one cell."], "collective": ["Formed by gathering or collecting."], "Darwinian": ["Relating to the to Charles Darwin's theory of evolution.", "Adhering to Darwin's theory of the origin of species."], "classifier": ["Someone who classifies."], "creature": ["A living organism characterized by voluntary movement."], "auditory": ["Of, relating to, or experienced through hearing.", "Of or pertaining to the sense of hearing."], "auditory system": ["The anatomical system that transfers energy from sound waves to neural activity for processing by the auditory centres in the brain."], "evolvability": ["The ability of a particular organism to evolve."], "emergent": ["Protruding above the water surface.", "Becoming prominent."], "Agnes": ["Female first name."], "rewrite": ["To modify or improve something previously written.", "To write again.", "The act of rewriting something."], "miswrite": ["To make an error when writing."], "mistype": ["To make a mistake when writing on a keyboard."], "systematically": ["In a systematic and organized manner."], "unsystematically": ["In an unsystematic and unorganized manner."], "revision": ["The act of revising.", "The act of altering.", "The act of rewriting something."], "rescript": ["The act of rewriting something."], "propositional": ["Relating to, or limited to, propositions."], "propositional calculus": ["The formal logic system used to define the true or false values of objects."], "planner": ["A notebook in which one keeps notations of appointments and contacts.", "A person who makes plans."], "solve": ["To find an answer or solution to a problem or question."], "personality": ["A set of qualities that make a person (or thing) distinct from another."], "causal": ["Of, relating to, or being a cause of something."], "boolean": ["Pertaining to data items that can have \u201ctrue\u201d and \u201cfalse\u201d (or, equivalently, 1 and 0 respectively) as their only possible values and to operations on such values."], "combinatorial": ["Relating to or involving combinations."], "clause": ["Something that is stated as a condition for an agreement.", "A group of words that contains a verb and its subject and is used as a part of a sentence.", "A provision or condition affecting the terms of a contract."], "empirically": ["Based on experience as opposed to theoretical knowledge."], "graphical": ["Written, drawn or engraved."], "Markovian": ["Exhibiting the Markov property, in which the conditional probability distribution of future states of the process, given the present state and all past states, depends only upon the present state and not on any past states."], "qualitative": ["Based on observable qualities."], "transliteration": ["The practice of transcribing a word or text written in one writing system into another writing system or system of rules for such practice."], "presence": ["The fact or condition of being present."], "solver": ["One who solves."], "Greek underworld": ["In Greek mythology, the underworld and abode of the dead."], "Tarama-Minna": ["A dialect of the Miyako language."], "along with": ["Used to connect two homogeneous words or phrases."], "Hateruma": ["An island in the Yaeyama District of Okinawa Prefecture, Japan."], "Hateruma-jima": ["An island in the Yaeyama District of Okinawa Prefecture, Japan."], "Ishigaki": ["An island west of Okinawa Hont\u014d and the second-largest island of the Yaeyama Island group. It is also the name of the main and only city on the islands."], "Yaeyama Islands": ["An archipelago in the Okinawa Prefecture, Japan."], "Kohamajima": ["An island in the Yaeyama Islands group at the southwestern end of the Ryukyu Islands chain, and part of Okinawa Prefecture, Japan."], "Yaeyama Written": ["The written forms of the Yaeyama language."], "Yonaguni Written": ["The written forms of the Yonaguni language."], "Amami Okinawago": ["ISO 639-6 entity"], "coequal": ["Equal with one another, as in rank or size."], "Berlinerisch": ["A dialect spoken in Berlin and its surroundings."], "Berlinisch": ["A dialect spoken in Berlin and its surroundings."], "coercion": ["The use of force or intimidation to obtain compliance."], "coexistence": ["A policy of living peacefully with other nations, religions, etc., despite fundamental disagreements."], "coffee break": ["A break from work for coffee, a snack, etc."], "coffee grounds": ["The dregs remaining after brewing coffee."], "coffin": ["The box in which the body of a dead person is placed for burial."], "representations": ["Plural form of representation."], "relax": ["To make something loose.", "To amuse oneself in a light, frolicsome manner.", "To become less tense, formal, or restrained, and assume a friendlier attitude.", "To become less tense, rest, or take one's ease."], "formalism": ["Strict observance of the established rules.", "An emphasis on form over content or meaning in the arts, literature, or philosophy.", "One of several alternative computational paradigms for a given theory."], "welfare": ["Health, happiness and prosperity."], "reward": ["Something of value given in return for an act.", "Benefit resulting from some event or action.", "The result of an action, whether good or bad."], "regression": ["Retreat of the sea from land areas.", "A defense mechanism leading to the temporary reversion of the ego to an earlier stage of development rather than handling unacceptable impulses in a more adult way.", "A statistical technique used to find the linear relationship between an outcome (dependent) variable and several predictor (independent) variables."], "regression testing": ["Any type of software testing which seeks to uncover software regressions. Such regressions occur whenever software functionality that was previously working correctly stops working as intended. Typically regressions occur as an unintended consequence of program changes. (source: Wikipedia)"], "progression": ["A forward movement in a particular direction.", "A series with a definite pattern of advance."], "intractable problem": ["A problem that can be solved, but not fast enough for the solution to be usable."], "marginal": ["Of, relating to, or located at a margin or an edge."], "clique": ["An exclusive circle of people with a common purpose."], "anaphora": ["An instance of an expression referring to another."], "bipolar": ["Possessing two poles.", "Of or relating to manic depressive illness."], "bipolar disorder": ["A mood disorder with episodes of both depression and mania."], "convex": ["Raised or curved like the surface of a sphere."], "coalescence": ["The fusion or blending of parts."], "conformant": ["In accordance with a set of specifications."], "conjunctive": ["Conjugation form of a verb.", "Serving or tending to connect."], "conjunctiva": ["The delicate membrane that covers the front of the eyeball and lines the inside of the eyelids."], "conjunctive normal form": ["A conjunction of clauses, where clauses are literals or disjunctions of literals."], "disjunction": ["A logical operator that results in true when any of its operands is true."], "disjunctive": ["Serving or tending to divide or separate."], "disjunctive normal form": ["A disjunction of clauses, where clauses are liteals or conjunctions of literals."], "convergence": ["The act of moving toward union or uniformity.", "The simultaneous inward movement of both eyes toward each other, usually in an effort to maintain single binocular vision when viewing an object.", "A process by which unrelated organisms independently acquire similar characteristics while evolving in separate ecosystems."], "consequence": ["Condition that which follows something on which it depends."], "outcome": ["Condition that which follows something on which it depends."], "upshot": ["Condition that which follows something on which it depends."], "constructive": ["Carefully considered and meant to be helpful."], "decentralized": ["Related to an organizational structure in which decision-making authority is not located at the center but is dispersed."], "decentralize": ["To distribute responsibility from a central point to several local points of control."], "desirable": ["Worth having."], "examine": ["To observe or inspect carefully or critically."], "exponentially": ["(Growing or decaying) in an exponential manner."], "granularity": ["The quality of being composed of relatively large particles.", "The smallest size that can be set or addressed."], "graininess": ["The quality of being composed of relatively large particles."], "coarseness": ["The quality of being composed of relatively large particles."], "infinite": ["Having no end, limits or boundaries in time or space or extent or magnitude."], "cogency": ["The quality of being cogent."], "integer": ["A numeric value with no decimal places.", "A data type which stores integer values."], "interesting": ["Arousing or holding the attention or interest of someone."], "naturally": ["In a natural or normal manner.", "As would be expected."], "nondeterministic": ["Unpredictable in terms of observable antecedents and known laws."], "optimize": ["Make optimal."], "reasonable": ["Showing reason or sound judgment.", "Characterized by equity or fairness."], "recognition": ["The act of recognizing or the condition of being recognized.", "Approval."], "satisfying": ["That satisfies, gratifies, pleases or comforts."], "strongly": ["In a strong or powerful manner."], "transitive relation": ["In mathematics, a binary relation R over a set X is transitive if whenever an element a is related to an element b, and b is in turn related to an element c, then a is also related to c."], "unhealthy": ["Posing a risk to health."], "cogent": ["Powerfully persuasive."], "cogitate": ["To think carefully."], "cogitation": ["A carefully considered thought about something."], "cognoscente": ["A person with superior, usually specialized knowledge or highly refined taste."], "cogwheel": ["A wheel with cogs or teeth."], "gear wheel": ["A wheel with cogs or teeth."], "Thai Spoken": ["The dialects of the Thai language."], "cohabit": ["To live together as a couple without being married."], "Thai alphabet": ["An alphabet used to write the Thai language and other minority languages in Thailand. It has forty-four consonants, fifteen vowel symbols that combine into at least twenty-eight vowel forms, and four tone marks."], "serviceability": ["Those actions related to the reliability, maintainability, and affordability of component implementations, and the integrated logistics support and configuration management required."], "re-engineering": ["An engineering process to transform an existing system into a new form through a combination of reverse engineering, restructuring, and forward engineering."], "black box testing": ["A method of test design that takes an external perspective of the test object to derive test cases."], "black-box testing": ["A method of test design that takes an external perspective of the test object to derive test cases."], "acceptance testing": ["Black box testing performed on a system (e.g. software, lots of manufactured mechanical parts, or batches of chemical products) prior to its delivery."], "accidental complexity": ["Complexity that arises in computer programs or their development process (computer programming) which is non-essential to the problem to be solved."], "adaptive software": ["A type of specialized software that is programmed or created to respond to changes in the needs or desires of the user."], "agile development": ["A methodology for software development that promotes development iterations, open collaboration, and adaptability throughout the life-cycle of the project."], "agile method": ["A methodology for software development that promotes development iterations, open collaboration, and adaptability throughout the life-cycle of the project."], "antipattern": ["A design pattern that appears obvious but is ineffective or far from optimal in practice."], "anti-pattern": ["A design pattern that appears obvious but is ineffective or far from optimal in practice."], "domain-specific language": ["A programming language or specification language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique. (source: Wikipedia)"], "audio processing": ["The processing of a representation of auditory signals, or sound."], "audio signal processing": ["The processing of a representation of auditory signals, or sound."], "automatic programming": ["A type of computer programming in which some mechanism generates a computer program rather than have human programmers write the code. (source: Wikipedia)"], "automatic test generation": ["The derivation of test cases from an object to be tested."], "roboticization": ["The act or practice of using machines that need little or no human control, especially to replace workers."], "autonomic computing": ["The development of computer systems capable of self-management, to overcome the rapidly growing complexity of computing systems management, and to reduce the barrier that that complexity poses to further growth."], "Asimov's Laws of Robotics": ["A set of three rules written by Isaac Asimov, which almost all positronic robots appearing in his fiction must obey."], "binary decision diagram": ["A data structure that is used to represent a Boolean function."], "BDD": ["A data structure that is used to represent a Boolean function."], "behavior-driven development": ["An agile software development technique in which the focus is the language and interactions used in the process of software development."], "Behavior Driven Development": ["An agile software development technique in which the focus is the language and interactions used in the process of software development."], "best practice": ["An idea that asserts that there is a technique, method, process, activity, incentive or reward that is more effective at delivering a particular outcome than any other technique, method, process, etc. (source: Wikipedia)"], "business model": ["A broad range of informal and formal descriptions that are used by enterprises to represent various aspects of its business, including its purpose, offerings, strategies, infrastructure, organizational structures, trading practices, and operational processes and policies."], "Business Process Execution Language": ["A language for specifying business process behavior based on Web Services."], "BPEL": ["A language for specifying business process behavior based on Web Services."], "business value": ["An informal term that includes all forms of value that determine the health and well-being of the firm in the long-run."], "Web service": ["A software system designed to support interoperable machine-to-machine interaction over a network. (source: W3C)"], "CMMI": ["A process improvement approach that provides organizations with the essential elements of effective processes, covering now two areas of interest: Development and Acquisition."], "Capability Maturity Model Integration": ["A process improvement approach that provides organizations with the essential elements of effective processes, covering now two areas of interest: Development and Acquisition."], "COCOMO": ["An algorithmic Software Cost Estimation Model which uses a basic regression formula, with parameters that are derived from historical project data and current project characteristics."], "code of ethics": ["A code of professional responsibility, which may dispense with difficult issues of what behavior is considered \"ethical\"."], "ethical code": ["A code of professional responsibility, which may dispense with difficult issues of what behavior is considered \"ethical\"."], "ethic": ["A code of professional responsibility, which may dispense with difficult issues of what behavior is considered \"ethical\"."], "deontology": ["The ethical study of morals, duties, obligations, and rights, with an approach focusing on the rightness or wrongness of actions themselves and not on the goodness or badness of the consequences of those actions. (source: Olson)"], "deontological ethics": ["The ethical study of morals, duties, obligations, and rights, with an approach focusing on the rightness or wrongness of actions themselves and not on the goodness or badness of the consequences of those actions. (source: Olson)"], "deontological": ["Of or relating to deontology."], "software quality": ["A measure of how well software is designed (quality of design), and how well the software conforms to that design (quality of conformance)."], "code quality": ["A measure of how well software is designed (quality of design), and how well the software conforms to that design (quality of conformance)."], "coding": ["The act of writing a computer program.", "The process of encoding or decoding."], "computer programming": ["The act of writing a computer program."], "cognitive bias": ["A person's tendency to make errors in judgment based on cognitive factors. It is a phenomenon studied in cognitive science and social psychology."], "collaboration": ["The process by which people or organizations work together to accomplish a common mission."], "component-based software engineering": ["A branch of the software engineering discipline, with emphasis on decomposition of the engineered systems into functional or logical components with well-defined interfaces used for communication across the components."], "component-based development": ["A branch of the software engineering discipline, with emphasis on decomposition of the engineered systems into functional or logical components with well-defined interfaces used for communication across the components."], "computational science": ["The field of study concerned with constructing mathematical models and numerical solution techniques and using computers to analyse and solve scientific, social scientific and engineering problems. (source: Wikipedia)"], "scientific computing": ["The field of study concerned with constructing mathematical models and numerical solution techniques and using computers to analyse and solve scientific, social scientific and engineering problems. (source: Wikipedia)"], "cross-platform": ["Computer programs, operating systems, computer languages, programming languages, or other computer software and their implementations which can be made to work on multiple computer platforms."], "multi-platform": ["Computer programs, operating systems, computer languages, programming languages, or other computer software and their implementations which can be made to work on multiple computer platforms."], "decision making": ["The process of making an informed choice among the alternative actions that are possible."], "cost engineering": ["The area of engineering practice where engineering judgment and experience are used in the application of scientific principles and techniques to problems of cost estimating, cost control, business planning and management science, profitability analysis, project management, and planning and scheduling. (source: AACE)"], "cost estimation": ["The area of engineering practice where engineering judgment and experience are used in the application of scientific principles and techniques to problems of cost estimating, cost control, business planning and management science, profitability analysis, project management, and planning and scheduling. (source: AACE)"], "cohabitation agreement": ["A form of legal agreement reached between a couple who have chosen to live together."], "dynamic language": ["A class of high level programming languages that execute at runtime many common behaviors that other languages might perform during compilation, if at all."], "coiffure": ["A style of fashion of wearing the hair."], "tit": ["The fleshy organ on the chest of a sexually mature human female containing mammary glands.", "A small passerine bird of the genus Parus or the family Paridae, common in the northern hemisphere."], "Reatino-Aquilano": ["A dialect of the Neapolitan language."], "Iaith Y Cofis": ["A dialect of the Welsh language."], "Cymraeg-C": ["A dialect of the Welsh language."], "Iaith Ynys M\u00f4n": ["A dialect of the Welsh language."], "T\u00fcrk\u00e7e-Formal": ["Turkish dialect."], "T\u00fcrk\u00e7e-Generalisd": ["Turkish dialect."], "T\u00fcrk\u00e7e-NW": ["Turkish dialect."], "coincidence": ["An event that might have been arranged although it was really accidental."], "coincidental": ["Occurring as or resulting from coincidence."], "colander": ["A bowl-shaped kitchen utensil with holes in it used for draining food."], "dispassionate": ["Without emotion or feeling."], "self-pity": ["Pity with oneself, self-indulgent preoccupation with one's own misfortunes and sorrows."], "self-pitying": ["Feeling pity with oneself."], "bullet hole": ["Spot where a bullet has penetrated and created a dent."], "cold-hearted": ["Lacking sympathy or feeling."], "colic": ["Severe pain in the abdomen."], "collaborator": ["Someone who collaborates with an enemy occupying force."], "collapsible": ["Able to be folded up."], "collar": ["The part of a garment that encircles the neck."], "collateral": ["Property acceptable as security for a loan or other obligation."], "collector": ["A person or thing that collects."], "collide": ["To strike together with great force.", "(For clothes) To not look good together.", "To cause to collide."], "collie": ["An active and agile, long-coated sheepdog."], "Norden": ["A town in the district of Aurich, in Lower Saxony, Germany."], "collier": ["Someone who works in a coal mine."], "coal miner": ["Someone who works in a coal mine."], "colliery": ["A workplace consisting of a coal mine plus all the buildings and equipment connected with it."], "colloquy": ["A formal conversation."], "collusion": ["A secret agreement between two or more parties for a fraudulent, illegal, or deceitful purpose."], "unprecedented": ["Without precedent."], "unparalleled": ["Without precedent."], "unexampled": ["Without precedent."], "colonel": ["An army officer in charge of a regiment."], "colonial": ["Of, concerning, or pertaining to a colony."], "murder victim": ["The victim of a murder."], "silk scarf": ["A scarf made of silk."], "colossal": ["Extraordinarily great in size, extent, or degree."], "pashmina scarf": ["A long and wide scarf with fringes made of pashmina."], "colossus": ["Anything colossal, gigantic, or very powerful."], "Buryats": ["The largest ethnic minority group in Siberia, numbering approximately 436,000, mainly concentrated in their homeland, the Buryat Republic, a federal subject of Russia."], "Buryat": ["A Mongolic macrolanguage spoken by the Buryats. The majority live in Russia along the northern border of Mongolia and speak Russia Buriat. There are also smaller, more distinct, communities in both Mongolia and the People's Republic of China."], "Buryat-Formal": ["A dialect of the Mongolia Buriat language."], "Buryat-S": ["A dialect of the Russia Buriat language."], "Russia Buriat Written": ["The written forms of the Russia Buriat language."], "Buriat Script": ["A variant of the Mongolian Script used to write the Russia Buriat language."], "Mongolian script": ["The first of many writing systems created for the Mongolian language, and the most successful until the introduction of Cyrillic to Mongolia in 1946. With minor modification, it is used in Inner Mongolia in China to this day to write Mongolian and the Evenk language.", "A script predominantly used to write the Monglolian language."], "China Buriat Written": ["The written forms of the China Buriat language."], "Mauritian Creole": ["A creole language spoken in Mauritius."], "Kreol Morisyen": ["A creole language spoken in Mauritius."], "French Guiana Creole": ["A French-lexified creole language spoken in French Guiana, and to a lesser degree, in Suriname and Guyana."], "Orlhagu\u00e9s-Carlad\u00e9senc": ["A dialect of the Languedocian language."], "combatant": ["A person who is actively engaged in battle, conflict or warfare.", "A person who is fighting.", "A person who fights or struggles using physical force or weapon."], "widowed": ["Single because of death of the spouse."], "combative": ["Having or showing a ready disposition to fight.", "Tending to argument or strife."], "orphaned": ["Having no living parents."], "combination lock": ["A lock that can be opened only by turning dials in a special sequence."], "combustion chamber": ["A chamber, as in an engine or boiler, where combustion occurs."], "comeback": ["A return to a former higher rank, popularity, position etc."], "Tamil script": ["A Vatteluttu script that is used to write the Tamil language."], "Tamil Written Tamil Script Historical": ["A written form of the Tamil language."], "insubstantial": ["Lacking material form or substance."], "unsubstantial": ["Lacking material form or substance."], "unreal": ["Lacking material form or substance."], "inlet": ["A broad bay formed by an indentation (a bight) in the shoreline."], "comely": ["Pleasant to look at, especially as conforming to ideals of form and proportion."], "handsome": ["Pleasant to look at, especially as conforming to ideals of form and proportion."], "good-looking": ["Pleasant to look at, especially as conforming to ideals of form and proportion."], "comer": ["One that arrives or comes."], "comfortless": ["Providing physical discomfort"], "commander": ["A person who commands."], "commanding": ["Being in command."], "commandment": ["A command given by God, especially one of the ten given to Moses."], "West Central Oromo Written Ethiopic Script": ["A written form of the West Central Oromo language."], "babble": ["Something said, which noone can understand.", "To chatter thoughtlessly or indiscreetly."], "Assamese script": ["A variant of the Eastern Nagari script also used for Bengali and Bishnupriya Manipuri."], "Chalti-Bhasa": ["A dialect of the Bengali language."], "commemorate": ["To keep alive the memory of someone or something, as in a ceremony."], "Andii": ["A language of Russia, part of the Avaro-Andi-Dido group of the Northeast Caucasian languages."], "Barjoulen-Draguignanen": ["A dialect of the Proven\u00e7al language."], "Fourcauquieren-Manousquin": ["A dialect of the Proven\u00e7al language."], "computational complexity theory": ["A branch of the theory of computation in computer science, investigates the problems related to the amounts of resources required for the execution of algorithms (e.g., execution time), and the inherent difficulty in providing efficient algorithms for specific computational problems. (source: Wikipedia)"], "cybersecurity": ["The field dealing with security issues connected to computers, such as privacy protection and measures against manipulation, data theft and sabotage."], "data visualization": ["The study of the visual representation of data, defined as information which has been abstracted in some schematic form, including attributes or variables for the units of information. (source: Wikipedia)"], "decision support system": ["A class of computer-based information systems including knowledge-based systems that support decision-making activities."], "DSS": ["A class of computer-based information systems including knowledge-based systems that support decision-making activities."], "database refactoring": ["A change to a database schema that improves its design while retaining both its behavioral and informational semantics."], "code refactoring": ["The process of changing a computer program's code to make it amenable to change, improve its readability, or simplify its structure, while preserving its existing functionality."], "decoupling": ["The general phenomenon in which the interactions between some physical objects (such as elementary particles) disappear.", "The preventing of undesired coupling between subsystems via the power supply connections.", "The separation of two railroad cars by manipulation of their couplers."], "design by contract": ["An approach to designing computer software that prescribes that software designers should define precise verifiable interface specifications for software components based upon the theory of abstract data types and the conceptual metaphor of a business contract."], "programming by contract": ["An approach to designing computer software that prescribes that software designers should define precise verifiable interface specifications for software components based upon the theory of abstract data types and the conceptual metaphor of a business contract."], "design pattern": ["A formal way of documenting a solution to a design problem in a particular field of expertise.", "A general reusable solution to a commonly occurring problem in software design."], "domain-driven design": ["An approach to the design of software, based on the two premises that complex domain designs should be based on a model, and that, for most software projects, the primary focus should be on the domain and domain logic (as opposed to being the particular technology used to implement the system)."], "ebXML": ["A family of XML based standards whose mission is to provide an open, XML-based infrastructure that enables the global use of electronic business information in an interoperable, secure, and consistent manner by all trading partners."], "Electronic Business using eXtensible Markup Language": ["A family of XML based standards whose mission is to provide an open, XML-based infrastructure that enables the global use of electronic business information in an interoperable, secure, and consistent manner by all trading partners."], "Eclipse": ["A software platform comprising extensible application frameworks, tools and a runtime library for software development and management."], "effort estimation": ["The ability to accurately estimate the time and/or cost taken for a project to come in to its successful conclusion."], "is located in the": ["Indicates a relation of a subject with a surrounding environment"], "empiricism": ["Empirical method or practice."], "enterprise resource planning": ["The planning of how business resources (materials, employees, customers etc.) are acquired and moved from one state to another."], "ERP": ["The planning of how business resources (materials, employees, customers etc.) are acquired and moved from one state to another."], "Management Information System": ["A system designed to provide information primarily concerned with the administrative functions associated with the provision and utilization of services; also includes program planning, etc. (source: UMLS)"], "knowledge base": ["A special kind of database for knowledge management that provides the means for the computerized collection, organization, and retrieval of knowledge."], "supply chain management": ["The process of planning, implementing and controlling the operations of the supply chain as efficiently as possible."], "SCM": ["The process of planning, implementing and controlling the operations of the supply chain as efficiently as possible."], "supply chain": ["The system of organizations, people, technology, activities, information and resources involved in moving a product or service from supplier to customer."], "logistics network": ["The system of organizations, people, technology, activities, information and resources involved in moving a product or service from supplier to customer."], "experimentation": ["The process of testing a hypothesis by collecting data under controlled, repeatable conditions."], "Extreme Programming": ["A software engineering methodology (and a form of agile software development) prescribing a set of daily stakeholder practices that embody and encourage traditional software engineering practices taken to so-called \"extreme\" levels."], "pair programming": ["A software development technique in which two programmers work together at one keyboard. One types in code while the other reviews each line of code as it's typed in. (source: Wikipedia)"], "test-driven development": ["A software development technique consisting of short iterations where new test cases covering the desired improvement or new functionality are written first, then the production code necessary to pass the tests is implemented, and finally the software is refactored to accommodate changes. (source: Wikipedia)"], "unit testing": ["A method of testing that verifies the individual units of source code are working properly."], "JUnit": ["A unit testing framework for the Java programming language."], "integrated development environment": ["A software application that provides comprehensive facilities to computer programmers for software development."], "IDE": ["A software application that provides comprehensive facilities to computer programmers for software development."], "software license": ["A legal instrument governing the usage or redistribution of copyright protected software."], "GNU GPL": ["A widely used free software license, originally written by Richard Stallman for the GNU project."], "functional programming": ["A programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data."], "programming paradigm": ["A fundamental style of computer programming."], "logic programming": ["The use of mathematical logic for computer programming."], "functional language": ["A language that supports and encourages functional programming."], "commend": ["Express approval of.", "To express a good opinion of."], "commendable": ["Worthy of high praise."], "game design": ["The process of designing the content and rules of a game."], "generative programming": ["A type of computer programming in which some mechanism generates a computer program rather than have human programmers write the code. (source: Wikipedia)"], "graphical user interface": ["A type of user interface which allows people to interact with electronic devices like computers, hand-held devices (MP3 Players, Portable Media Players, Gaming devices), household appliances and office equipment."], "GUI": ["A type of user interface which allows people to interact with electronic devices like computers, hand-held devices (MP3 Players, Portable Media Players, Gaming devices), household appliances and office equipment."], "Google Web Toolkit": ["An open source Java software development framework that allows web developers to create Ajax applications in Java."], "GWT": ["An open source Java software development framework that allows web developers to create Ajax applications in Java."], "high-performance computing": ["The use of supercomputers and computer clusters to solve advanced computing problems."], "HPC": ["The use of supercomputers and computer clusters to solve advanced computing problems."], "Hubble": ["A space telescope that was carried into orbit by a Space Shuttle in April 1990."], "Hubble Space Telescope": ["A space telescope that was carried into orbit by a Space Shuttle in April 1990."], "incremental": ["Increasing gradually by regular degrees or additions."], "information visualization": ["The interdisciplinary study of the visual representation of large-scale collections of non-numerical information, such as files and lines of code in software systems, and the use of graphical techniques to help people understand and analyze data. (source: Wikipedia)"], "intuition": ["Instinctive knowledge without the use of rational processes.", "An impression that something might be the case."], "iPhone": ["An internet connected multimedia smartphone with a flush multi-touch screen and a minimal hardware interface."], "JavaScript": ["A scripting language most often used for client-side web development."], "PHP": ["A computer scripting language originally designed for producing dynamic web pages."], "Balkan Romani Written": ["The written forms of the Balkan Romani language."], "commendation": ["The act of commending."], "Sinte Romani": ["A variety of Romani spoken by the Sinti people in Germany, France, Austria, northern Italy and other adjacent regions."], "Cal\u00f3": ["A mixed language based on Spanish grammar, with an adstratum of Romani lexical items spoken by the Spanish, Portuguese, French, Bresilian and Catalan Romanies."], "legacy code": ["Source code that relates to a no-longer supported or manufactured operating system or other computer technology."], "markup language": ["An artificial language using a set of annotations to text that give instructions regarding how text is to be displayed."], "maven": ["A software tool for Java project management and build automation based on an XML format.", "A trusted expert in a particular field, who seeks to pass knowledge on to others."], "intenditore": ["A trusted expert in a particular field, who seeks to pass knowledge on to others."], "Maven": ["A software tool for Java project management and build automation based on an XML format."], "model-based testing": ["Software testing in which test cases are derived in whole or in part from a model that describes some (usually functional) aspects of the system under test."], "multitouch": ["A set of interaction techniques which allow computer users to control graphical applications with several fingers."], "multi-touch": ["A set of interaction techniques which allow computer users to control graphical applications with several fingers."], "functional requirement": ["A particular behavior or functionality required in a software system."], "non-functional requirement": ["A requirement which specify a criterion that can be used to judge the operation of a system, rather than specific behaviors."], "nonfunctional requirement": ["A requirement which specify a criterion that can be used to judge the operation of a system, rather than specific behaviors."], "outsourcing": ["Subcontracting a process, such as product design or manufacturing, to a third-party company."], "process control": ["A statistics and engineering discipline that deals with architectures, mechanisms, and algorithms for controlling the output of a specific process."], "process improvement": ["A series of actions taken to identify, analyze and improve existing processes within an organization to meet new goals and objectives."], "benchmarking": ["The process of comparing the cost, time or quality of what one organisation does against what another organisation does."], "Total Quality Management": ["A business management strategy aimed at embedding awareness of quality in all organizational processes."], "TQM": ["A business management strategy aimed at embedding awareness of quality in all organizational processes."], "project management": ["The discipline of planning, organizing, and managing resources to bring about the successful completion of specific project goals and objectives."], "Python": ["A general-purpose, high-level programming language."], "quality attribute": ["A requirement which specify a criterion that can be used to judge the operation of a system, rather than specific behaviors."], "insist": ["Be emphatic or resolute and refuse to budge."], "follower": ["Someone who believes and helps to spread the doctrine of another."], "permanent": ["Without break, cessation or interruption."], "run-up": ["The approach run during which an athlete gathers speed."], "suppose": ["To have as opinion, belief, or idea.", "To express a supposition.", "To believe especially on uncertain or tentative grounds."], "sorrel": ["Perennial herbaceous plant with edible leaves."], "spinach dock": ["Perennial herbaceous plant with edible leaves."], "common sorrel": ["Perennial herbaceous plant with edible leaves."], "pizza dough": ["Dough made of flour, water, yeast and sometimes salt, olive oil and sugar which is used to bake pizzas."], "contraception": ["The intentional prevention of pregnancy through the use of various devices, practices, surgical procedures or medication."], "dessication": ["The process of drying out."], "readjustment": ["The act of adjusting again to changed circumstances."], "poster": ["A sign posted in a public place as an advertisement."], "placard": ["A sign posted in a public place as an advertisement."], "bread dough": ["Dough made of flour, water, yeast or sourdough and other ingredients which is used to bake bread."], "rejoin": ["To join together again."], "reunite": ["To join together again."], "return to": ["To join together again."], "incite": ["To urge someone to do something.", "To urge on; to cause to act.", "To give an incentive for action."], "take on": ["To give someone work or a job.", "To contend against an opponent in a sport, game, or battle.", "To take on titles, offices, duties, responsibilities.", "To take on a certain form, attribute, or aspect.", "To admit into a group or community."], "commentator": ["A person who makes a living reporting on news and current events."], "shocking": ["Highly disturbing emotionally."], "recruit": ["To engage persons for military service.", "To have one's name formally recorded as a participant or member."], "recruitment": ["The act or process of recruiting."], "prestige": ["Reputation or influence due to success."], "considerable": ["Enough to be estimated or measured."], "terrestrial": ["Relating to Earth or its inhabitants."], "nabothian cyst": ["A benign mucus-filled cyst that develops on the cervix when a mucous gland is obstructed."], "nabothian follicle": ["A benign mucus-filled cyst that develops on the cervix when a mucous gland is obstructed."], "hesitation": ["A delay due to uncertainty of mind or fear.", "A certain degree of unwillingness.", "Indecision in speech or action."], "seism": ["A shaking of the Earth's surface; an earthquake or tremor."], "tremor": ["An unintentional, somewhat rhythmic, muscle movement involving to-and-fro movements (oscillations) of one or more parts of the body.", "A small earthquake."], "bait": ["Anything that serves as an enticement."], "subscriber": ["Someone who contracts to receive and pay for a service or a certain number of issues of a publication."], "diacritical": ["Capable of distinguishing."], "subscription": ["The right to receive a periodical for a sum paid, usually for an agreed number of issues.", "Agreement expressed by (or as if expressed by) signing your name.", "The act of signing your name; writing your signature (as on a document)."], "respectable": ["Having a good reputation or character."], "successive": ["Following one after the other."], "budding knife": ["A knife designed for budding."], "move back": ["To travel backward."], "rear-view mirror": ["A type of mirror found on automobiles and other vehicles, designed to allow the driver to see an area behind the vehicle."], "respite": ["A usually short interval of rest or relief.", "An interruption in the intensity or amount of something."], "phonebook": ["A directory containing an alphabetical list of telephone subscribers and their telephone numbers."], "telephone directory": ["A directory containing an alphabetical list of telephone subscribers and their telephone numbers."], "phone book": ["A directory containing an alphabetical list of telephone subscribers and their telephone numbers."], "advise": ["To inform (somebody) of something.", "To give counsel to.", "To give advice."], "descend": ["To go from a higher to a lower place.", "To come from; to be connected by a relationship of blood.", "To move downward and lower (e.g. of temperature values or falling objects)."], "go down": ["To cause a boat to go down in the water.", "To go from a higher to a lower place.", "[Of a heavenly body, essentially the Sun and the Moon] To disappear below the horizon of a planet or another heavenly body (most often the Earth).", "To move downward and lower (e.g. of temperature values or falling objects)."], "drift": ["To be carried along by currents of water or air.", "To move about aimlessly or without any destination."], "viviparous blenny": ["A predatory fish (Zoarces viviparus) whose young, which look like young eels, are born alive."], "emissary": ["A male person that negotiates something as a representative.", "A female person that negotiates something as a representative.", "A representative sent on a mission or errand."], "blocked": ["That is stopped or impeded the passage or movement through."], "cool down": ["To make cooler or colder."], "jealousy": ["A jealous feeling, disposition, state, or mood."], "depend on": ["To rely on for support; to be conditioned or contingent; to be connected with anything, as a cause of existence, or as a necessary condition."], "disapprove": ["Consider bad or wrong."], "radio-frequency identification": ["An automatic identification method, relying on storing and remotely retrieving data using devices called RFID tags or transponders."], "transponder": ["An automatic device that receives, amplifies, and retransmits a signal on a different frequency.", "A receiver-transmitter that will generate a reply signal upon proper electronic interrogation."], "requirements elicitation": ["The practice of obtaining the requirements of a system from users, customers and other stakeholders."], "requirements management": ["Management of the requirements of a project in order to identify inconsistencies between those requirements and the project's plans and work products. Its practices include change management and traceability."], "requirements specification": ["A complete description of the behavior of the system to be developed."], "scope": ["An area in which something acts or operates or has power or control.", "The sum total of all of the products of a project and their requirements or features.", "An enclosing context where values and expressions are associated."], "service-oriented architecture": ["A methodology for systems development and integration where functionality is grouped around business processes and packaged as interoperable services."], "SOA": ["A methodology for systems development and integration where functionality is grouped around business processes and packaged as interoperable services."], "cloud computing": ["Internet (the Cloud) based development and use of computer technology."], "silver bullet": ["A simple guaranteed solution for a difficult problem."], "software deployment": ["The set of all the activities that make a software system available for use."], "software design": ["A process of problem-solving and planning for a software solution."], "software development process": ["A structure imposed on the development of a software product."], "formal methods": ["Mathematically-based techniques for the specification, development and verification of software and hardware systems."], "programming tool": ["A program or application that software developers use to create, debug, maintain, or otherwise support other programs and applications."], "software development tool": ["A program or application that software developers use to create, debug, maintain, or otherwise support other programs and applications."], "software industry": ["The industry that comprises businesses involved in the development, maintenance and publication of computer software."], "software evolution": ["The process of developing software initially, then repeatedly updating it for various reasons."], "software factory": ["An organizational structure that specializes in producing computer software applications or software components according to specific, externally-defined end-user requirements through an assembly process."], "software maintenance": ["The modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment. (source: Wikipedia)"], "code reuse": ["The use of existing software, or software knowledge, to build new software."], "software reuse": ["The use of existing software, or software knowledge, to build new software."], "native of": ["Born in a particular place or country."], "distract": ["To disturb in mind or make uneasy or cause to be worried or alarmed.", "Draw someone's attention away from something."], "divert": ["Draw someone's attention away from something.", "To withdraw (money) and move into a different location, often secretly and with dishonest intentions."], "statistical process control": ["An effective method of monitoring a process through the use of control charts which enable the use of objective criteria for distinguishing background variation from events of significance based on statistical techniques."], "strategic design": ["The application of future-orientated design principles in order to increase an organisation\u2019s innovative and competitive qualities."], "system architecture": ["The conceptual design that defines the structure and/or behavior of a system."], "systematic review": ["A literature review focused on a single question which tries to identify, appraise, select and synthesize all high quality research evidence relevant to that question."], "systems engineering": ["An interdisciplinary field of engineering that focuses on how complex engineering projects should be designed and managed."], "test automation": ["The use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions."], "ubiquitous computing": ["A post-desktop model of human-computer interaction in which information processing has been thoroughly integrated into everyday objects and activities."], "version control": ["The management of multiple revisions of the same unit of information."], "revision control": ["The management of multiple revisions of the same unit of information."], "source control": ["The management of multiple revisions of the same unit of information."], "take from": ["To remove (e.g. money from an account) and carry elsewhere."], "software architecture": ["The various systems software tools used to construct and operate an application software product."], "quality of service": ["A collective measure of the level of service delivered to the customer."], "QoS": ["A collective measure of the level of service delivered to the customer."], "centric": ["Having or situated at or near a center."], "discipline": ["A subject area or branch of knowledge.", "To develop behaviour by instruction and practice.", "Controlled behavior resulting from disciplinary training."], "reasonably": ["In a reasonable manner."], "overview": ["A brief summary, as of a book or a presentation."], "markup": ["The amount by which price exceeds marginal cost.", "The identification of the components of a document to enable each component to be appropriately formatted, displayed, or used."], "driving": ["The controlled operation of a land vehicle."], "criteria": ["Standards on which a judgment or decision may be based."], "collaborative": ["Of, relating to, or done by collaboration."], "decreasing": ["Becoming less or smaller."], "advise against": ["To convince not to try or do."], "comatose": ["Affected with coma, characterized by coma."], "suppress": ["To cancel or eliminate officially."], "Sun": ["The particular star at the centre of our solar system, from which the Earth gets light and heat."], "preheat": ["To heat before using."], "interval": ["A period of time when something is available."], "abdicate": ["To renounce or relinquish a throne, right, power, claim, responsibility, or the like, in a formal manner."], "physiotherapist": ["A therapist who treats physical injury or dysfunction, usually with exercise."], "stupefy": ["To become stupid, to become intellectually dull.", "To make stupid, uncritical."], "deduction": ["The act or process of deducting.", "Reasoning from the general to the particular (or from cause to effect)."], "test suite": ["A collection of tests used to validate the behavior of a product."], "validation suite": ["A collection of tests used to validate the behavior of a product."], "imbroglio": ["A complicated situation"], "diverge": ["To differ in opinion, character, form, etc.", "To go in a different direction than what is expected."], "plot hole": ["A gap or inconsistency in a storyline which makes a story seem illogical."], "commercialism": ["The principles, practices, and spirit of commerce."], "commercialize": ["To apply methods of business for profit."], "commingle": ["To mix together different elements."], "commiseration": ["Deep awareness of the suffering of another, coupled with the wish to relieve it.", "An expression of sympathy with another's grief."], "diversify": ["To give variety to."], "cavalry": ["The military arm of service that fights while riding horses."], "intermittent": ["Being or succeeding by turns."], "greed": ["An excessive or inordinate desire of gain.", "Excessive desire for possessions and wealth.", "Excessive desire for something."], "greediness": ["Excessive desire for possessions and wealth."], "cupidity": ["An excessive or inordinate desire of gain.", "Excessive desire for possessions and wealth."], "covetousness": ["Excessive desire for possessions and wealth."], "air conditioner": ["A device that keeps air cool and dry."], "mammonism": ["Excessive desire for possessions and wealth.", "Excessive desire for money."], "conflate": ["To mix together different elements."], "immix": ["To mix together different elements."], "fuse": ["To mix together different elements.", "A device to prevent the overloading of an electrical circuit."], "coalesce": ["To mix together different elements."], "meld": ["To mix together different elements."], "greedy": ["Excessively desirous of something.", "Excessively desirous of money, wealth or possessions."], "moneygrubbing": ["Excessively desirous of money, wealth or possessions."], "cash-hungry": ["Excessively desirous of money, wealth or possessions."], "covetous": ["Excessively desirous of money, wealth or possessions."], "greed for power": ["Excessive pursuit of power."], "thirst for power": ["Excessive pursuit of power."], "machthungrig": ["Excessively pursuing power, obsessed with power."], "power hungry": ["Excessively pursuing power, obsessed with power."], "power-thirsty": ["Excessively pursuing power, obsessed with power.", "Consuming a lot of electricity."], "power thirsty": ["Excessively pursuing power, obsessed with power."], "commissionaire": ["A uniformed doorman."], "power-mad": ["Excessively pursuing power, obsessed with power."], "power-obsessed": ["Excessively pursuing power, obsessed with power."], "power- crazed": ["Excessively pursuing power, obsessed with power."], "Asterix": ["Main character of the Asterix comic strips, a brave, cunning warrior, of somewhat diminutive size."], "Obelix": ["Character of the Asterix comic strips, Asterix's closest friend a tall, obese man"], "Dogmatix": ["Character of the Asterix comic strips, Obelix's pet dog"], "Commons category": ["A category at Wikimedia Foundation's Commons, used for digital media files."], "magnetic field": ["A vector field that permeates space and which can exert a magnetic force on moving electric charges and on magnetic dipoles (such as permanent magnets)."], "Mir": ["A Soviet (and later Russian) orbital station. It was the world's first consistently inhabited long-term research station in space, constructed over a number of years with a modular design."], "parsec": ["The distance from which one arcsecond represents one astronomical unit. It equals to about 3.261633 light years."], "SI": ["A complete system of standardized units and prefixes for fundamental quantities of length, time, volume, mass, and so on."], "International System of Units": ["A complete system of standardized units and prefixes for fundamental quantities of length, time, volume, mass, and so on."], "allopathy": ["A method of treating disease with remedies that produce effects different from those caused by the disease itself."], "craftsman": ["Someone who carries out work that requires a certain speciality or skill.", "A person who practices or is highly skilled in a craft."], "door handle": ["A device attached to a door, the rotation of which permits the unlatching of a door."], "pineapple": ["Large sweet fleshy tropical fruit with a terminal tuft of stiff leaves."], "inorganic": ["Relating or belonging to the class of compounds not having a carbon basis."], "antique shop": ["A retail store specializing in the selling of antiques."], "whimsical": ["Given to fanciful idea."], "commissioned": ["Given official approval to act."], "authorized": ["Given official approval to act."], "tarmac": ["A mixture containing tar, used to make roads, pavements etc."], "automaton": ["A self-operating machine or mechanism."], "evening dress": ["Clothing worn for evening social events."], "commodore": ["A commissioned naval officer who ranks above a captain and below a rear admiral."], "Matricaria": ["(Matricaria) Genus of plants in the sunflower family (Asteraceae)"], "antique": ["An old collectible item, which is desirable because of its age, rarity, condition or other unique features."], "commotion": ["A disorderly outburst or tumult."], "bandit": ["A villainous or criminal person."], "moneyed aristocracy": ["Persons who ascended to the highest spheres of society because of their wealth."], "periodical publication": ["A printed work that appears regularly."], "force majeure": ["A non attributable impossibility to redeem an obligation."], "communicative": ["Inclined to communicate or impart."], "communiqu\u00e9": ["An official announcement."], "exile": ["A person banished from his or her native land.", "To send into exile.", "The act of expelling a person from his native land."], "barbaric": ["Of, relating to, or characteristic of barbarians."], "barricade": ["To render passage impossible by physical obstruction.", "A structure set up across a route of access to obstruct the passage of an enemy."], "comparable": ["Capable of being compared."], "thoughtful": ["Characterized by careful thought."], "wok": ["A cooking vessel in the shape of a hemisphere which is used in Chinese and Southeast Asian cusine.", "To cook using a wok."], "quirk": ["A persisting somewhat eccentric idea or habit of a person."], "hemisphere": ["Half of a sphere."], "\u00c9lys\u00e9e Palace": ["The official residence of the President of the French Republic in the center of paris."], "prostaglandin": ["Group of lipid compounds, containing 20 carbon atoms, including a 5-carbon ring, that are derived enzymatically from fatty acids and have important functions in the body."], "prostatectomy": ["Surgical removal of all or part of the prostate gland."], "prostatism": ["A set of urinary symptoms caused by an inflammation of the prostate gland."], "lower urinary tract symptoms": ["A set of urinary symptoms caused by an inflammation of the prostate gland."], "LUTS": ["A set of urinary symptoms caused by an inflammation of the prostate gland."], "powdered milk": ["Dairy product in powder form which is made by dehyrating milk."], "dehumidify": ["To remove moisture from."], "IEEE 802.11": ["A set of standards for wireless local area network (WLAN) computer communication, developed by the IEEE LAN/MAN Standards Committee (IEEE 802) in the 5 GHz and 2.4 GHz public spectrum bands."], "802.11": ["A set of standards for wireless local area network (WLAN) computer communication, developed by the IEEE LAN/MAN Standards Committee (IEEE 802) in the 5 GHz and 2.4 GHz public spectrum bands."], "access control": ["The ability to permit or deny the use of a particular resource by a particular entity."], "admission control": ["A network Quality of Service (QoS) procedure that determines how bandwidth and latency are allocated to streams with various requirements."], "application server": ["A server that hosts an API to expose Business Logic and Business Processes for use by other applications."], "BitTorrent": ["A peer-to-peer file sharing (P2P) communications protocol."], "Bluetooth": ["A wireless protocol utilizing short-range communications technology facilitating data transmission over short distances from fixed and/or mobile devices, creating wireless personal area networks (PANs)."], "Border Gateway Protocol": ["The core routing protocol of the Internet. It works by maintaining a table of IP networks or 'prefixes' which designate network reachability among autonomous systems."], "BGP": ["The core routing protocol of the Internet. It works by maintaining a table of IP networks or 'prefixes' which designate network reachability among autonomous systems."], "concurrency": ["A property of systems in which several computational processes are executing at the same time, and potentially interacting with each other. (source: Wikipedia)"], "distributed computing": ["A form of computing that deals with hardware and software systems containing more than one processing element or storage element, concurrent processes, or multiple programs, running under a loosely or tightly controlled regime."], "distributed systems": ["A form of computing that deals with hardware and software systems containing more than one processing element or storage element, concurrent processes, or multiple programs, running under a loosely or tightly controlled regime."], "e-commerce": ["The buying and selling of products or services over electronic systems such as the Internet and other computer networks."], "electronic commerce": ["The buying and selling of products or services over electronic systems such as the Internet and other computer networks."], "e-government": ["The use of internet technology as a platform for exchanging information, providing services and transacting with citizens, businesses, and other arms of government."], "electronic government": ["The use of internet technology as a platform for exchanging information, providing services and transacting with citizens, businesses, and other arms of government."], "e-learning": ["A type of education where the medium of instruction is computer technology."], "e-voting": ["Several different types of voting, embracing both electronic means of casting a vote and electronic means of counting votes."], "electronic voting": ["Several different types of voting, embracing both electronic means of casting a vote and electronic means of counting votes."], "event-driven architecture": ["A software architecture pattern promoting the production, detection, consumption of, and reaction to events."], "Erlang": ["A general-purpose concurrent programming language and runtime system."], "enterprise application integration": ["The uses of software and computer systems architectural principles to integrate a set of enterprise computer applications."], "EAI": ["The uses of software and computer systems architectural principles to integrate a set of enterprise computer applications."], "EDA": ["A software architecture pattern promoting the production, detection, consumption of, and reaction to events."], "exception handling": ["A programming language construct or computer hardware mechanism designed to handle the occurrence of a condition that changes the normal flow of execution."], "gifted": ["Endowed with talent or talents."], "free speech": ["The right of every person to speak and publish their opinion freely."], "talented": ["Endowed with talent or talents."], "first responder": ["The first medically-trained responder to arrive on scene of an emergency, accident, natural or human-made disaster, or similar event. Such people may be police or other law enforcement, firefighters, emergency medical services, or lay rescuers. (source: Wikipedia)"], "filmmaking": ["The process of making a film, from an initial story idea or commission through scriptwriting, shooting, editing and finally distribution to an audience. Typically it involves a large number of people and can take anywhere between a few months to several years to complete."], "HTML": ["The predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document \u2014 by denoting certain text as links, headings, paragraphs, lists, and so on \u2014 and to supplement that text with interactive forms, embedded images, and other objects. (source: Wikipedia)"], "covet": ["To feel immoderate desire for that which is another's."], "HyperText Markup Language": ["The predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document \u2014 by denoting certain text as links, headings, paragraphs, lists, and so on \u2014 and to supplement that text with interactive forms, embedded images, and other objects. (source: Wikipedia)"], "healthcare": ["The prevention, treatment, and management of illness and the preservation of mental and physical well being through the services offered by the medical, nursing, and allied health professions."], "grid computing": ["A form of distributed computing whereby a \"super and virtual computer\" is composed of a cluster of networked, loosely-coupled computers, acting in concert to perform very large tasks."], "green computing": ["The study and practice of using computing resources efficiently."], "identity theft": ["A fraud that involves stealing money or getting other benefits by pretending to be someone else."], "information retrieval": ["The science of searching for documents, for information within documents and for metadata about documents, as well as that of searching relational databases and the World Wide Web."], "IR": ["The science of searching for documents, for information within documents and for metadata about documents, as well as that of searching relational databases and the World Wide Web."], "hammock": ["A swinging couch or bed, usually made of netting or canvas about six feet (1.8 m) wide, suspended by clews or cords at the ends."], "rocking chair": ["A chair with a curved base which can be gently rocked (swung) back and forth."], "Internet pornography": ["Pornography that is distributed by means of various sectors of the Internet, primarily via websites, peer-to-peer file sharing, or Usenet newsgroups."], "Internet privacy": ["The ability to control what information one reveals about oneself over the Internet, and to control who can access that information."], "Internet radio": ["An audio broadcasting service transmitted via the Internet."], "paladin": ["An heroic champion."], "undersea": ["Located under the surface of the sea."], "ocean surface": ["The surface of the sea."], "subterranean": ["Located below the ground level.", "Lying beyond what is openly revealed or avowed (especially being kept in the background or deliberately concealed)."], "overground": ["Located above ground."], "aboveground": ["Located above ground."], "snowy": ["Covered by snow.", "Having the white color of snow.", "Marked by the presence of snow."], "snow-covered": ["Covered by snow."], "snow-clad": ["Covered by snow."], "gloved": ["Having the hands covered by gloves."], "gloveless": ["Not wearing gloves."], "ungloved": ["Not wearing gloves."], "snow-capped": ["Having the top covered by snow."], "snowcapped": ["Having the top covered by snow."], "ignorant": ["Someone who does not strive after knowledge and insight and thus stays unknowing.", "Uneducated in general; lacking knowledge or sophistication.", "Uneducated in the fundamentals of a given art or branch of learning; lacking knowledge of a specific field.", "Unaware because of a lack of relevant information or knowledge."], "teddy": ["A stuffed toy in the shape of a bear."], "bailout": ["A situation where a bankrupt or nearly bankrupt entity, such as a corporation or a bank, is given a fresh injection of liquidity, in order to meet its short term obligations."], "teapot": ["A container with a lid and handle which is used to prepare and serve tea."], "coffeepot": ["A container with a lid and handle used to serve coffee."], "coffee pot": ["A container with a lid and handle used to serve coffee."], "tired of life": ["Lacking joy in life, lacking the will to live."], "weary of life": ["Lacking joy in life, lacking the will to live."], "snow-white": ["Having the white color of snow."], "lumbago": ["Pain in the lower, or lumbar, region of the back or loins."], "hairy": ["Having many head hairs.", "Covered with hair."], "wallpaper": ["Paper often colored and printed with designs and pasted to a wall as a decorative covering."], "manage": ["To take charge or care of; to dispose of.", "To succeed in achieving a task (despite difficulties).", "To succeed in accomplishing (an action), usually with difficulty.", "To handle or produce effectively (something) with difficulty or effort.", "To handle or control (a situation, job).", "To handle with skill (a tool, weapon etc.)."], "stone louse": ["(Petrophaga lorioti) A fictitious animal created by German humorist Loriot to parody a very popular television series of the German zoologist Bernhard Grzimek on wildlife"], "European adder": ["European poison snake, Vipera berus."], "crossed viper": ["European poison snake, Vipera berus."], "common viper": ["European poison snake, Vipera berus."], "compassionate": ["Having or showing compassion.", "To feel regret and sorrow for someone else because of their suffering or misfortune."], "compatibility": ["Capacity of being connected to another device without the use of special equipment or software."], "attrition": ["A gradual, natural reduction in membership or personnel, as through retirement, resignation, or death."], "succinct": ["Expressed in few words."], "ratify": ["Approve and express assent, responsibility, or obligation."], "gravely ill": ["Suffering from a grave malady."], "railroad": ["To gain formal approval by manipulation of procedure and haste, as of a law or a formal resolution."], "criticize": ["To express negative criticism."], "ratification": ["Making something valid by formally ratifying or confirming it."], "competent": ["Highly skilled."], "duty-free": ["Exempt from duty."], "invest": ["To use a resource (money, time, energy, etc.) with the expectation of obtaining something of greater value."], "promised": ["Being declared that it will or will not be done."], "perambulation": ["An English legal ceremony in which an official from a town or parish walks around it to delineate and record its boundaries."], "bannering": ["An English legal ceremony in which an official from a town or parish walks around it to delineate and record its boundaries."], "carpetbagger": ["A candidate who runs in a district where he or she has not previously held residence."], "pithy": ["Concise and full of meaning."], "underprivileged": ["Lacking the rights and advantages of other members of society."], "gang": ["An association of criminals."], "compel": ["To force somebody to do something."], "compelling": ["Having a powerful and irresistible effect."], "sidekick": ["Close friend.", "An assistant to another person, usually the person's inferior."], "Fulliautomatix": ["Character of the Asterix comic strips, smith of the Gaulish village."], "split ends": ["The splitting of hairs at the ends."], "harvest festival": ["Traditional festival during harvest time to thank God."], "osteitis": ["Inflammation of bone."], "muliebrity": ["The quality or state of being a woman."], "womanhood": ["The quality or state of being a woman.", "Women collectively."], "maidenhood": ["The state or quality of being an unmarried and virgin young woman.", "The time during which one is an unmarried and virgin young woman."], "femininity": ["The quality of being feminine; qualities and behaviours deemed to be typical for women and girls.", "Women collectively."], "womanliness": ["The quality of being feminine; qualities and behaviours deemed to be typical for women and girls."], "womankind": ["Women collectively."], "multimorbid": ["Suffering from several illnesses simultaneously."], "bedsore": ["Lesion of the skin and underlying tissue caused by prolonged pressure, especially areas where skin is directly over bone."], "decubitus ulcer": ["Lesion of the skin and underlying tissue caused by prolonged pressure, especially areas where skin is directly over bone."], "pressure ulcer": ["Lesion of the skin and underlying tissue caused by prolonged pressure, especially areas where skin is directly over bone."], "abed": ["In bed.", "Forced to lie in bed, for example because of an illness or injury."], "bedridden": ["Forced to lie in bed, for example because of an illness or injury."], "bedfast": ["Forced to lie in bed, for example because of an illness or injury."], "bedriddenness": ["The state of being forced to lie in bed because of an illness or injury."], "bedfastness": ["The state of being forced to lie in bed because of an illness or injury."], "jacket text": ["Text on the backside or dust jacket of a book, which summarized the content."], "Ethnohistory": ["The study of ethnographic cultures and indigenous customs by examining historical records. It is also the study of the history of various ethnic groups that may or may not exist today."], "social philosophy": ["The philosophical study of questions about social behavior (typically, of humans)."], "despondence": ["A feeling of depression or disheartenment."], "heartsickness": ["A feeling of depression or disheartenment."], "disconsolateness": ["A feeling of depression or disheartenment."], "asshole": ["A strongly disliked person who behaves disgustingly, underhandedly, or nastily, etc.", "An insulting exclamation directed at a vile, stupid or a worthless person.", "The lower opening of the digestive tract, through which feces pass."], "wine waiter": ["Trained and knowledgeable wine professional."], "folding bicycle": ["A bicycle that can be folded to a smaller size."], "folder": ["A structured listing of the names and characteristics of the files on a storage device.", "A bicycle that can be folded to a smaller size.", "An flat organizer made of cardboard or plastic for storing paper documents together."], "temperature inversion": ["A weather phenomenon where the temperature in the atmosphere rises with increasing altitude."], "Prussia": ["A historic state originating out of the Duchy of Prussia and the Margraviate of Brandenburg."], "indemnities": ["Plural form of indemnity."], "compete": ["To attack as false or wrong.", "To strive against another or others to attain a goal, such as an advantage or a victory."], "stigmergy": ["A mechanism of spontaneous, indirect coordination between agents or actions, where the trace left in the environment by an action stimulates the performance of a subsequent action, by the same or a different agent."], "complacency": ["The feeling you have when you are satisfied with yourself."], "spigot": ["A device applied to the end of a pipe in order to interrupt and regulate the flow of a liquid or gas."], "valve": ["Device that controls the flow of a liquid through a passage or a pipe.", "Biological small structure letting a fluid pass through in one direction but blocking or slowing its flow down in the opposite direction."], "complainant": ["One who commences a legal process by a complaint."], "plaintiff": ["One who commences a legal process by a complaint."], "complementary": ["Forming or serving as a complement."], "complicate": ["To make more complicated."], "complication": ["Something that introduces, usually unexpectedly, some difficulty, problem, change, etc."], "snake pit": ["A historical European means of imposing capital punishment."], "complicity": ["Involvement as an accomplice in a questionable act or a crime."], "compliment": ["An expression of praise or admiration"], "complimentary": ["Obtainable without payment."], "comply": ["To act in accordance with someone's rules, commands, or wishes."], "comportment": ["Manner of behaving oneself; manner of acting.", "Any observable action or response of an organism, group or species to environmental factors."], "conduct": ["Any observable action or response of an organism, group or species to environmental factors.", "To carry, particularly to a particular destination.", "Manner of behaving oneself; manner of acting."], "teething": ["The eruption, through the gums of teeth, for example milk teeth."], "composure": ["Steadiness of mind under stress."], "compote": ["Fruit stewed or cooked in a syrup, usually served as a dessert."], "recession": ["The state of the economy declines."], "comprehend": ["To get the meaning of something."], "grasp": ["To get the meaning of something.", "To hold firmly.", "The understanding of the nature or meaning or quality or magnitude of something.", "An intellectual hold or understanding.", "The limit of capability.", "The act of grasping."], "comprehensibility": ["The quality of comprehensible language or thought."], "comprehensible": ["Capable of being comprehended or understood."], "intelligible": ["Capable of being comprehended or understood."], "compulsion": ["The use of force or intimidation to obtain compliance."], "compunction": ["Feeling of regret or sadness for doing wrong or sinning."], "remorse": ["Feeling of regret or sadness for doing wrong or sinning.", "The keen or hopeless anguish caused by a sense of guilt."], "engross": ["To completely engage the attention of."], "computerization": ["To furnish with a computer or computer system."], "concatenation": ["The state of being linked together as in a chain."], "concave": ["Curved inward like the inside of a bowl."], "conceal": ["To prevent from being seen or discovered."], "secrete": ["To prevent from being seen or discovered."], "concealment": ["The condition of being secret, concealed or hidden."], "concede": ["To concede as true.", "To admit to be true."], "condense": ["To increase the strength and diminish the bulk of, as of a liquid or an ore.", "To make more concise (e.g. the contents of a book or an article)."], "concentrated": ["Undiluted; having a high concentration.", "Intensely focused."], "troglodyte": ["A prehistoric or primitive human living in a cave.", "A person who chooses not to keep up-to-date with the latest software and hardware.", "Prehistoric, primitive human living in caves."], "concentric": ["Having a common center."], "concerned": ["Feeling or showing worry or solicitude."], "concerted": ["Done or performed together or in cooperation."], "concertina": ["A musical instrument resembling an accordion but having buttonlike keys, hexagonal bellows and ends."], "aerospace engineering": ["The branch of engineering behind the design, construction and science of aircraft and spacecraft."], "electronic engineering": ["A discipline dealing with the behavior and effects of electrons (as in electron tubes and transistors) and with electronic devices, systems, or equipment."], "conciliate": ["Make calm and content.", "To mediate in a dispute."], "conciliator": ["A person who conciliates."], "conciliatory": ["Willing to conciliate, or to make concessions."], "concision": ["The property of being concise."], "brevity": ["The property of being concise."], "conciseness": ["The property of being concise."], "terseness": ["The property of being concise."], "Medina": ["A city in the Hejaz region of western Saudi Arabia, and serves as the capital of the Al Madinah Province."], "conclave": ["An assembly or gathering, esp. one that has special authority, power, or influence.", "A meeting of the College of Cardinals in the Sistine Chapel in Rome convened to elect a new pope."], "conclusion": ["An opinion and judgment formed or emitted about something."], "conclusive": ["Pertaining to a conclusion."], "roux": ["A mixture of fat (usually butter) and flour used to thicken sauces and stews."], "age of majority": ["Legal adulthood."], "accompanying": ["Following as a consequence."], "adjoining": ["Following as a consequence."], "concordance": ["In agreement with."], "concordant": ["Being of the same opinion."], "agreeing": ["Being of the same opinion."], "correspondent": ["Being of the same opinion."], "harmonious": ["Being of the same opinion."], "concordat": ["A formal agreement between two nations."], "Lorang": ["A language of Indonesia (Maluku)."], "Larevat": ["A language of Vanuatu."], "concourse": ["A large group of people."], "Vanuatu vatu": ["The currency of Vanuatu."], "Lusengo": ["A language of Democratic Republic of the Congo."], "Latvian Sign Language": ["A sign language used in Latvia."], "Luba-Kasai": ["A language of Democratic Republic of the Congo."], "concupiscence": ["A desire for sexual intimacy."], "Ludian": ["A language of Russia (Europe)."], "Lunanakha": ["A language of Bhutan."], "Lunda": ["A Bantu language of Zambia, Angola and the Democratic Republic of the Congo."], "lust": ["A desire for sexual intimacy."], "Lucumi": ["A language of Cuba."], "Dholuo": ["A language of Cameroon and Tanzania"], "concupiscent": ["Having sexual lust."], "Levuka": ["A language of Indonesia (Nusa Tenggara)."], "Lewotobi": ["A language of Indonesia (Nusa Tenggara)."], "voluptuous": ["Full-figured."], "bifocals": ["Spectacles that have corrective lenses of two different powers; used by people who need both distance and reading glasses."], "gall": ["A bitter brownish-yellow or greenish-yellow secretion produced by the liver, stored in the gallbladder, and discharged into the duodenum where it aids the process of digestion."], "bickering": ["Petty quarreling."], "bicentenary": ["A two-hundred year anniversary."], "xenobiology": ["Study of the origin, distribution, and destiny of life in the universe."], "exobiology": ["Study of the origin, distribution, and destiny of life in the universe."], "concur": ["To be in accord.", "To happen at the same time."], "xenophobe": ["Someone who fears that which is unknown or who fears people who are different from oneself, especially in the case of foreign people."], "xenophile": ["A person infatuated with foreign people and culture."], "X-ray": ["Short wavelength electromagnetic wave usually produced by bombarding a metal target in a vacuum."], "radiography": ["The process of making radiographs.", "Photography that uses other kinds of radiation than visible light."], "zeppelin": ["A type of rigid airship using the relative weight of a gas to float."], "libidinous": ["Having sexual lust."], "lustful": ["Having sexual lust."], "lecherous": ["Having sexual lust."], "salacious": ["Having sexual lust."], "zoetrope": ["An optical toy, in which figures made to revolve on the inside of a cylinder, and viewed through slits in its circumference, appear like a single figure passing through a series of natural motions as if animated or mechanically moved."], "zombie": ["A legendary figure of a corpse reanimated by a supernatural force or a spell, with no soul and no will of its own."], "zeal": ["A feeling of strong eagerness."], "heavy water": ["Water containing deuterium, instead of normal hydrogen."], "pillage": ["A violent appropriation made by soldiers in enemy territory after a victory.", "To take the goods of.", "To deprive of something valuable by force."], "abigeat": ["Theft of cattle."], "rustle": ["To steal cattle or other livestock.", "A soft crackling sound similar to the movement of leaves."], "repudiate": ["To reject the truth or validity of something."], "condemnation": ["An expression of strong disapproval; pronouncing as wrong or morally culpable."], "disapprobation": ["An expression of strong disapproval; pronouncing as wrong or morally culpable."], "condenser": ["Any device for reducing gases or vapors to liquid form."], "condolence": ["An expression of sympathy with another's grief."], "condone": ["To overlook, forgive, or disregard an offence without protest or censure."], "conductive": ["Able to conduct electrical current."], "conductant": ["Able to conduct electrical current."], "confer": ["To have a conference in order to talk something over.", "To bestow upon as a gift, favor, honor, etc."], "Jalapa de D\u00edaz Mazatec": ["A language of Mexico."], "Maasai": ["A language of Kenya and Tanzania."], "Sater\u00e9-Maw\u00e9": ["A language of Brazil."], "Mazahua Central": ["A language of Mexico."], "Macushi": ["A language of Brazil, Guyana and Venezuela."], "Baba Malay": ["A language of Singapore and Malaysia."], "Ilianen Manobo": ["A language of Philippines."], "Maxakal\u00ed": ["A language of Brazil."], "confess": ["To admit to the truth, particularly in the context of sins or crimes committed.", "To declare or acknowledge one's sins, to God or a priest in order to obtain absolution.", "To admit to the truth, particularly in the context of sins or crimes committed."], "recognize": ["To admit to the truth, particularly in the context of sins or crimes committed.", "To detect with the senses."], "confession": ["The act of disclosing sins or faults to a priest in order to obtain sacramental absolution."], "pollock": ["Either of two lean, white marine food fishes, of the genus Pollachius, related to cod."], "stockfish": ["Unsalted fish, especially cod, dried by sun and wind."], "sprat": ["Any of various small, herring-like, marine fish of the genus Sprattus in the family Clupeidae."], "confessional": ["The place set apart for the hearing of confessions by a priest."], "confessor": ["A priest who hears confession and then gives absolution."], "confide": ["To have confidence or faith in.", "To confer a trust upon."], "confine": ["To shut or keep in a limited space or area."], "bonkers": ["Not characterized by truth or logic."], "irrational number": ["A number that cannot be represented as a fraction of two integers."], "confirmation": ["The assertion that something exists or is true.", "An additional proof that something that was believed (some fact or hypothesis or theory) is correct.", "A rite of initiation in Christian churches that confirms the appartenance to the religion established during the baptism."], "conflation": ["The process or result of fusing items into one entity."], "amalgamation": ["The process or result of fusing items into one entity."], "fusing": ["The process or result of fusing items into one entity."], "Spree": ["A river in Eastern Germany of approximately 400 kilometres in length."], "Havel": ["A right tributary of the Elbe river and 325 km in length."], "Elbe": ["One of the major rivers of Central Europe."], "maledictology": ["A branch of psychology, that does research about cursing and blustering."], "take the veil": ["To become a nun in a convent."], "conformist": ["Someone who conforms to established standards of conduct."], "confraternity": ["A group of people with a common interest."], "brotherhood": ["A formal association of people with similar interests.", "A group of people with a common interest."], "Lasi Written": ["The written forms of the Lasi language."], "confrontation": ["An open conflict of opposing ideas, forces, etc."], "confute": ["To prove to be false or invalid."], "disprove": ["To prove to be false or invalid."], "congenial": ["Having the same tastes and temperament."], "sympathetic": ["Having the same tastes and temperament."], "inborn": ["Present at birth but not necessarily hereditary."], "congratulate": ["To express pleasure to a person, as on a happy occasion."], "Magahi Written Kaithi Script": ["A written form of the Magahi language."], "Magahi Written Devanagari Script": ["A written form of the Magahi language."], "Magahi Written Nagari Script": ["A written form of the Magahi language."], "pictogram": ["A picture that represents a word or an idea by illustration."], "forgather": ["To collect in one place, usually for a purpose.", "To call or bring together."], "foregather": ["To collect in one place, usually for a purpose.", "To call or bring together."], "united": ["Done by two or more people or organisations working together.", "Characterized by unity; being or joined into a single entity."], "combined": ["Done by two or more people or organisations working together."], "associated": ["Done by two or more people or organisations working together."], "connubial": ["Of, or relating to marriage, or the relationship of spouses."], "conjuncture": ["A combination of events or circumstances.", "A set of circumstances causing a crisis."], "crisis": ["A set of circumstances causing a crisis.", "A crucial stage or turning point in the course of something."], "conjuror": ["Someone who performs magic tricks to amuse an audience."], "conjurer": ["Someone who performs magic tricks to amuse an audience."], "knitting": ["The process of producing knitted material."], "knit": ["To make fabric by knitting."], "connivance": ["Agreement on a secret plot."], "conspiracy": ["Agreement on a secret plot."], "undertone": ["The associated or secondary meaning of a word or expression in addition to its explicit or primary meaning."], "conqueror": ["A person who conquers or vanquishes."], "vanquisher": ["A person who conquers or vanquishes."], "willingness": ["Voluntary agreement or permission."], "conscience": ["The moral sense of right and wrong."], "conscientious": ["Thorough, careful, or vigilant; implies a desire to do a task well."], "scrupulous": ["Thorough, careful, or vigilant; implies a desire to do a task well."], "painstaking": ["Thorough, careful, or vigilant; implies a desire to do a task well."], "meticulous": ["Thorough, careful, or vigilant; implies a desire to do a task well."], "consciousness": ["The state of being conscious or aware."], "consequent": ["Following as a logical conclusion."], "instructional": ["Intended for purposes of instruction, for teaching."], "\u00e9p\u00e9e": ["The modern derivative of the original duelling sword, the rapier, used in sport fencing."], "ardor": ["A feeling of strong eagerness."], "elan": ["A feeling of strong eagerness."], "subclass": ["The taxonomic rank immediately subordinate to a classes."], "consequential": ["Following as a result."], "conservatism": ["The disposition and tendency to preserve what is established."], "infraclass": ["The taxonomic rank immediately subordinate to a subclass."], "Ho Chi Minh City": ["The largest city of Vietnam."], "conservative": ["A person who is conservative in principles, actions, habits, etc."], "considerate": ["Showing concern for the rights and feelings of others."], "considered": ["Thought about or decided upon with care."], "consolation": ["Someone or something that consoles."], "consonance": ["In agreement with.", "A rhyme that repeats the same consonants while the vowels change."], "conspirator": ["A person who is part of a conspiracy."], "constancy": ["The quality of being free from change or variation."], "consternation": ["A sudden, alarming amazement or dread that results in utter confusion."], "dread": ["An unpleasant, usually localised physical sensation that is often the result of an injury, disease or other ailment.", "A sudden, alarming amazement or dread that results in utter confusion."], "distraction": ["A sudden, alarming amazement or dread that results in utter confusion.", "Something that draws someone's attention away from something."], "fright": ["A sudden, alarming amazement or dread that results in utter confusion."], "constipated": ["Suffering from constipation.", "Suffering from constipation."], "Macanese pataca": ["The currency of Macao."], "offal": ["The rejected or waste parts of a butchered animal.", "The internal organs of an animal other than a bird, these organs being used as food."], "decry": ["Consider bad or wrong.", "To denounce as harmful."], "Burkinab\u00e9": ["A person or a citizen from Burkina Faso.", "From or relating to Burkina Faso."], "Tarawa": ["The capital of Kiribati."], "constructor": ["A person or thing that builds."], "Papua New Guinean": ["Someone who is from Papua New Guinea or who is a Papua New Guinean citizen."], "Luxembourger": ["A person who originated from or is a citizen of Luxembourg"], "construe": ["To give the meaning or intention of."], "Gambian": ["A person from or a citizen of Gambia."], "Dalasi": ["The currency of the Gambia."], "Gambian dalasi": ["The currency of the Gambia."], "consulting room": ["A doctor's room for discussions with patients."], "diaspora": ["Any population sharing common ethnic identity who were either forced to leave or voluntarily left their settled territory, and became residents in areas often far removed from the former."], "contagion": ["The entry and development or multiplication of an infectious agent in the body of a living organism.", "Process in which a disease is transmitted."], "Udmurt": ["A Finno-Permic language spoken by the Udmurts, natives of the Russian constituent republic of Udmurtia, where it is coofficial with the Russian language. It is written in the Cyrillic script with five additional characters."], "contemplation": ["Continued attention of the mind to a particular subject."], "musing": ["Continued attention of the mind to a particular subject."], "Mal\u00e9": ["The capital city of the Maldives."], "Laccadive Sea": ["A sea off the southwest coast of India, north of a line extending from the southern point of Sri Lanka to the southernmost of the Maldive Islands, and east of the Maldives."], "contemptuous": ["Showing contempt."], "washout": ["A sporting fixture that could not be completed because of rain.", "The sudden erosion of soft surfaces by a gush of water usually occurring during a heavy downpour of rain or flooding."], "rival": ["A woman who competes with one or more other people.", "A man who competes with one or more other people.", "Someone who competes with one or more other people.", "To be equal to in quality or ability."], "competitor": ["A woman who competes with one or more other people.", "A man who competes with one or more other people.", "Someone who competes with one or more other people.", "A person who takes part in a contest or competition."], "Port of Spain": ["The capital city of Trinidad and Tobago."], "Trinidad and Tobago dollar": ["The currency of Trinidad and Tobago."], "contentious": ["Tending to argument or strife.", "Marked by heated arguments or controversy."], "quarrelsome": ["Tending to argument or strife."], "belligerent": ["Tending to argument or strife.", "A person who fights or struggles using physical force or weapon."], "contentment": ["The state of being contented."], "satisfaction": ["The state of being contented."], "Roseau": ["The capital city of Dominica"], "East Caribbean dollar": ["The currency of eight of the nine members of the Organisation of Eastern Caribbean States."], "Dominican": ["A person who originated from or is a citizen of the Dominican Republic.", "A member of the religious order founded by St. Dominic.", "A person who originated from or is a citizen of the Commonwealth of Dominica."], "contend": ["To attack as false or wrong.", "To fight or argue in order to get a purpose."], "Barbadian dollar": ["The currency of Barbados."], "Barbadian": ["A person who originated from or is a citizen of Barbados."], "contestant": ["A person who takes part in a contest or competition."], "Birr": ["The currency of Ethiopia."], "Ethiopian": ["A person who originated from or is a citizen of Ethiopia."], "contextual": ["Of, pertaining to, or depending on the context."], "Guinean": ["A person who originated from or is a citizen of Guinea."], "backwards": ["In a backward direction."], "backward": ["In a backward direction."], "Philippine peso": ["The currency of the Philippines."], "Fort-de-France": ["The capital city of Martinique."], "Cayenne": ["The capital city of French Guiana."], "contingent": ["A quota of troops furnished."], "contort": ["To twist in a violent manner."], "X-radiation": ["A penetrating electromagnetic radiation, usually generated by accelerating electrons to high velocity and suddenly stopping them by collision with a solid body, or by inner-shell transitions of atoms with atomic number greater than 10; their wavelength ranges from about 10(-5) angstrom to 10(3) angstroms, the average wavelength used in research being 1 angstrom.\\n(Source: MGH)"], "contractable": ["Having a disease that can be easily passed on to others."], "catching": ["Having a disease that can be easily passed on to others."], "contractual": ["Relating to or part of a binding legal agreement."], "video projector": ["Equipment that takes a video signal and projects the corresponding image on a projection screen using a lens system."], "Lobamba": ["The royal and legislative capital of Swaziland."], "Lilangeni": ["The currency of Swaziland."], "contradistinction": ["Distinction by contrasting or opposing qualities."], "contralto": ["The lowest female singing voice."], "George Town": ["The capital of the Cayman Islands."], "Cayman Islands dollar": ["The currency of the Cayman Islands."], "contrariety": ["Something that is contrary."], "contrariwise": ["An adverb used especially after a negation or to give emphasis to what has just been said.", "In the opposite direction or way."], "contrary": ["The contrary; being opposed to something.", "A relation of direct opposition.", "Resistant to guidance or discipline.", "Resistant to guidance or discipline."], "toxicologist": ["A scientist or physician who speciality is toxicology."], "anklet": ["A piece of jewelry, resembling a bracelet but worn around the ankle."], "double entendre": ["A phrase that has two meanings, one innocent and literal, the other risqu\u00e9 or bawdy."], "sententious": ["Given to trite moralising."], "contravene": ["To exceed or overstep some limit or boundary."], "contravention": ["A breach, violation, or infringement; as of a law, a contract, a right or duty."], "Dutch Antilles": ["Two island groups in the Caribbean that constituted until October 2010 an autonomous country within the Kingdom of the Netherlands. The capital was Willemstad on the island of Cura\u00e7ao."], "Avarua": ["The capital city of the Cook Islands."], "Rarotongan": ["A language of the Cook Islands."], "contrition": ["The keen or hopeless anguish caused by a sense of guilt."], "Grenadian": ["A person who originated of or is a citizen of Grenada."], "Tunisian": ["A person who originated from or is a citizen of Tunisia."], "Tunisian dinar": ["The currency of Tunisia."], "controllable": ["Capable of being controlled."], "Wymysorys": ["A West Germanic language spoken in the small town of Wilamowice, Poland."], "Noum\u00e9a": ["The capital city of New Caledonia."], "Sammarinese": ["A person who originated from or is a citizen of San Marino."], "Waray-Waray": ["A language of Philippines."], "Adamstown": ["The capital city of Pitcairn Islands."], "Anguillian": ["A person who originated from or is a citizen of Anguilla."], "control stick": ["A lever by which a pilot controls the ailerons and elevator of an aircraft."], "control tower": ["A glass-enclosed, elevated structure for the visual observation and control of the air and ground traffic at an airport."], "Guamanian": ["A person who originated from or is a citizen of Guam."], "Tokelauan": ["A language of Tokelau.", "A person originating from or a citizen of Tokelau."], "inquire": ["To ask for information, a reply or response on a given subject."], "excoriate": ["To strongly denounce or censure."], "tithe": ["A one-tenth part of something, paid as a voluntary contribution or as a tax or levy"], "Hamilton": ["The capital city of Bermuda.", "A port city in the Canadian province of Ontario."], "Bermudian dollar": ["The currency of Bermuda."], "Bermudian": ["A person who originated from or is a citizen of Bermuda."], "contuse": ["To injure, esp. without breaking the skin."], "convene": ["To come together for a meeting, assembly etc."], "Cockburn Town": ["The capital city of the Turks and Caicos Islands."], "S\u00e3o Tom\u00e9": ["The capital city of S\u00e3o Tom\u00e9 and Pr\u00edncipe."], "S\u00e3o Tom\u00e9 and Pr\u00edncipe dobra": ["The currency of S\u00e3o Tom\u00e9 and Pr\u00edncipe."], "Futunian": ["A language of Wallis and Futuna and New Caledonia."], "Wallisian": ["A language of Wallis and Futuna and New Caledonia."], "Mata-Utu": ["The capital city of Wallis and Futuna."], "Tuvaluan": ["A language of Tuvalu."], "convenient": ["Requiring little skill or effort; posing no difficulty."], "expedient": ["Providing comfort."], "convergent": ["Tending to come together from different directions."], "conversant": ["Experienced and clever, profesional."], "converse": ["To talk informally with another or others."], "Castries": ["The capital city of Saint Lucia."], "Saint Lucian": ["A person who originated from or is a citizen of Saint Lucia."], "doggerel": ["A derogatory term for poetry considered of little literary value."], "graffiti": ["Writing or drawings scribbled, scratched, or sprayed illicitly on a wall or other surface in a public place."], "fungible": ["Assets, usually securities, that can be exchanged with similar assets and are capable of being \u201cloaned\u201d."], "Mamoudzou": ["The capital city of Mayotte."], "Diego Garcia": ["The capital city of the British Indian Ocean Territory."], "Road Town": ["The capital city of the British Virgin Islands."], "convexity": ["The property possessed by a convex shape."], "conveyance": ["Something that serves as a means of transportation."], "conveyor": ["A moving belt that transports objects."], "conveyor belt": ["A moving belt that transports objects."], "convincing": ["Persuading or assuring by argument or evidence."], "convival": ["Pertaining to a feast or to festivity."], "convivial": ["Pertaining to a feast or to festivity."], "convocation": ["In law, a writ requiring someone to appear in court to give testimony."], "cook book": ["A book containing recipes and instructions for cooking."], "cookery book": ["A book containing recipes and instructions for cooking."], "art of cooking": ["A specific set of cooking traditions and practices, often associated with a specific culture."], "gastronomy": ["A specific set of cooking traditions and practices, often associated with a specific culture."], "cooper": ["Someone who makes or repairs barrels."], "barrel-maker": ["Someone who makes or repairs barrels."], "id\u00e9e fixe": ["A recurring musical theme that is associated with a person or a concept."], "clout": ["The power to affect, control or manipulate something or someone.", "A blow to someone or something with the fist."], "Ganymede": ["The biggest moon circling Jupiter.", "In Greek mythology, a son of the Trojan king Tros."], "kale": ["A form of cabbage (Brassica oleracea Acephala Group), green in color, in which the central leaves do not form a head."], "borecole": ["A form of cabbage (Brassica oleracea Acephala Group), green in color, in which the central leaves do not form a head."], "spruitkool": ["A cultivar group of wild cabbage native to Belgium cultivated for its small (typically 2.5 - 4cm) leafy green buds, which resemble miniature cabbages."], "sauerkraut": ["Finely shredded cabbage that has been fermented by various lactic acid bacteria, including Leuconostoc, Lactobacillus, and Pediococcus."], "papaya": ["The fruit of the plant Carica papaya."], "copier": ["Apparatus that makes copies of typed, written or drawn material."], "duplicator": ["Apparatus that makes copies of typed, written or drawn material."], "photocopier": ["Apparatus that makes copies of typed, written or drawn material."], "copious": ["Abundant, fully sufficient or more than adequate in supply for the purpose or needs.", "Large in number or quantity (especially of discourse)."], "plenteous": ["Abundant, fully sufficient or more than adequate in supply for the purpose or needs."], "plentiful": ["Abundant, fully sufficient or more than adequate in supply for the purpose or needs."], "copiousness": ["An overflowing fullness."], "cop-out": ["Choose not to do something, as out of fear of failing."], "opt out": ["Choose not to do something, as out of fear of failing."], "cordage": ["Cords or ropes, especially the ropes in the rigging of a ship."], "cordate": ["Shaped like a heart.", "Shaped like a heart."], "delight": ["To give pleasure to; to make happy or satisfied.", "A feeling of extreme pleasure or satisfaction.", "To delight to a high degree; to hold spellbound."], "enjoyment": ["A feeling of extreme pleasure or satisfaction.", "The right to derive profit, advantages etc. from a property."], "pick": ["A selection of something from a collection of options or alternatives.", "To hit lightly with a picking motion.", "To look for and gather.", "To remove unwanted substances from (e.g. food), such as feathers, peels or pits."], "spend": ["To pass time in a specific way.", "To pay out or expend money."], "cordite": ["A smokeless propellent made by combining two high explosives: nitrocellulose and nitroglycerine, used in some firearm ammunition."], "corn salad": ["A small annual plant of the family Valerianaceae, used as salad or as a herb", "A plant, of the species Valerianella, used in salads or as a herb."], "rapunzel": ["A small annual plant of the family Valerianaceae, used as salad or as a herb"], "lamb's lettuce": ["A small annual plant of the family Valerianaceae, used as salad or as a herb"], "officious": ["Offensively intrusive or interfering"], "nanomaterial": ["A material with morphological features smaller than a one tenth of a micrometer in at least one dimension."], "fine particle": ["In nanotechnology, a particle whose size is between 100 and 2500 nanometers."], "ultrafine particle": ["In nanotechnology, a particle whose size is between 1 and 100 nanometers."], "Chinese cabbage": ["A Chinese leaf vegetable commonly used in Chinese cuisine."], "cordon": ["A line of police, sentinels, military posts, warships, etc., enclosing or guarding an area."], "cordless": ["(For an electric device) Having no cord, usually using batteries as a source of power."], "corduroy": ["A heavy fabric, usually made of cotton, with vertical ribs."], "cornel": ["Any tree or shrub of the genus Cornus."], "dogwood": ["Any tree or shrub of the genus Cornus.", "A flowering plant native to southern Europe and southwest Asia with edible berries."], "swede": ["A root vegetable that originated as a cross between the cabbage and the turnip."], "rutabaga": ["A root vegetable that originated as a cross between the cabbage and the turnip."], "cornerstone": ["A stone uniting two masonry walls at an intersection.", "Something that is essential, indispensable, or basic.", "The fundamental assumptions from which something is begun or developed or calculated or explained."], "cornet": ["A musical instrument of the brass family, slightly smaller than a trumpet."], "baker's ammonia": ["Leavening agent for flat pastries consisting of ammonium carbonate, ammonium bicarbonate and ammonium carbamate."], "salt of hartshorn": ["Leavening agent for flat pastries consisting of ammonium carbonate, ammonium bicarbonate and ammonium carbamate."], "kabaddi": ["A team sport where two teams occupy opposite halves of a field and take turns sending a \"raider\" into the other half, in order to win points by tagging or wrestling members of the opposing team; the raider then tries to return to his own half, holding his breath during the whole raid."], "ammonium carbonate": ["Leavening agent for flat pastries consisting of ammonium carbonate, ammonium bicarbonate and ammonium carbamate."], "chemical formula": ["A formalization which provides information about the atoms that constitute a particular chemical compound, and how the relationship between those atoms changes in chemical reactions."], "hartshorn": ["The antler of a male red deer."], "leavening agent": ["A substance used in doughs and batters that causes a foaming action intended to lighten and soften the finished product."], "corn poppy": ["A plant of the Papaver rhoeas species in the poppy family."], "field poppy": ["A plant of the Papaver rhoeas species in the poppy family."], "Flanders poppy": ["A plant of the Papaver rhoeas species in the poppy family."], "red poppy": ["A plant of the Papaver rhoeas species in the poppy family."], "corn rose": ["A plant of the Papaver rhoeas species in the poppy family."], "corolla": ["Part of a complete flower, consisting of petals, immediately enveloping organs of fertilization and is usually colored."], "Hertzsprung-Russell diagram": ["A diagram that shows the relationship between absolute magnitude, luminosity, classification, and effective temperature of stars."], "H-R diagram": ["A diagram that shows the relationship between absolute magnitude, luminosity, classification, and effective temperature of stars."], "absolute magnitude": ["The apparent magnitude an object would have if it were at a standard luminosity distance (10 parsecs, 1 AU, or 100 km depending on object type) away from the observer, in the absence of astronomical extinction."], "corporeal": ["Of, relating to, or characteristic of the body."], "bodily": ["Of, relating to, or characteristic of the body."], "tarpaulin": ["A heavy, waterproof sheet of material, often cloth, used as a cover."], "tuning": ["Configuration of an object so that it is able to generate and detect electric waves or sounds of a given frequency."], "receiver": ["A component of a hi-fi system: a combination of a tuner and an amplifier", "The listening device part of a telephone."], "blanch": ["To cook by dipping briefly into boiling water, then directly into cold water.", "To grow or become white."], "blanching": ["A process of food preparation wherein the food substance is plunged into boiling water, removed after a brief, timed interval and finally plunged into iced water or placed under cold running water (shocked) to halt the cooking process."], "lyre": ["A stringed instrument of the Middle Ages, precursor of harp."], "corrigible": ["Capable of being corrected."], "hurdy gurdy": ["A stringed musical instrument in which the strings are sounded by means of a rosined wheel which the strings of the instrument pass over."], "corroborate": ["To strengthen; to make firm.", "To establish or strengthen with new evidence or facts."], "viol": ["Any one of a family of bowed, fretted, stringed musical instruments developed in the 1400s and used primarily in the Renaissance and Baroque periods."], "corrosive": ["Having the capability or tendency to cause corrosion."], "viola da gamba": ["Any one of a family of bowed, fretted, stringed musical instruments developed in the 1400s and used primarily in the Renaissance and Baroque periods."], "pigborn": ["A reed instrument from Wales with generally six finger holes and a thumbhole giving a diatonic compass of an octave."], "corrugated iron": ["Sheet iron bent into a series of alternate ridges and grooves in parallel lines, giving it greater stiffness."], "corrupt": ["To give, or offer a bribe.", "Willing to act dishonestly in return for money or personal gain."], "corruptible": ["Capable of being corrupted."], "corsage": ["A small bouquet of flowers worn at the shoulder or waist or on the wrist."], "rational number": ["Number which can be expressed as quotient of two integers."], "kettledrums": ["A brass percussion instrument with a defined pitch."], "cosh": ["A piece of metal covered by leather with a flexible handle; used for hitting people."], "blackjack": ["A piece of metal covered by leather with a flexible handle; used for hitting people."], "cosine": ["Ratio of the adjacent side to the hypotenuse of a right-angled triangle."], "prevarication": ["A false statement made with the intention to deceive."], "cosmetic": ["A preparation, such as powder or a skin cream, designed to beautify the body by direct application.", "Pertaining only to the surface or external appearance of something.", "Imparting or improving beauty, particularly the beauty of the complexion."], "hammered dulcimer": ["A stringed musical instrument with the strings stretched over a trapezoidal sounding board that is played by tapping on them."], "santur": ["A hammered dulcimer from the Persian musical tradition."], "dulcimer": ["A stringed instrument, with strings stretched across a sounding board, usually trapezoidal played by plucking on the strings or by tapping on them."], "cosmic": ["Of or pertaining to the cosmos."], "cosmography": ["A science that describes and maps the main features of the heavens and the earth, including astronomy, geography, and geology."], "cosmopolitan": ["A sophisticated person who has travelled in many countries."], "cosset": ["To treat with excessive indulgence."], "cymbal": ["A concave plate of brass or bronze that produces a sharp, ringing sound when struck."], "cosy": ["Enjoying or affording comforting warmth and shelter especially in a small space."], "cozy": ["Enjoying or affording comforting warmth and shelter especially in a small space."], "cot": ["A small bed, for a baby.", "A simple portable bed intended to be used in tents during camping.", "A wooden bed frame, slung by its corners from a beam, in which naval officers slept in a ship."], "cot death": ["Sudden and unexpected death of an apparently healthy infant during sleep."], "crib death": ["Sudden and unexpected death of an apparently healthy infant during sleep."], "coterie": ["An exclusive circle of people with a common purpose."], "cotter pin": ["A cotter having a split end that is spread after being pushed through a hole to prevent it from working loose."], "cotter key": ["A cotter having a split end that is spread after being pushed through a hole to prevent it from working loose."], "spit pin": ["A cotter having a split end that is spread after being pushed through a hole to prevent it from working loose."], "countable": ["Able to be counted.", "That can be counted.", "(of a noun) Freely usable with the indefinite article and with numbers, and therefore having a plural form."], "counteraction": ["Action intended to nullify the effects of some previous action."], "neutralization": ["The act of making a solution neutral by adding a base to an acidic solution, or an acid to a basic solution.", "Action intended to nullify the effects of some previous action."], "counterbalance": ["A force or influence equally counteracting another."], "counterpoise": ["A force or influence equally counteracting another."], "counterweight": ["A force or influence equally counteracting another."], "gluteal cleft": ["The groove between the buttocks."], "natal cleft": ["The groove between the buttocks."], "anal cleft": ["The groove between the buttocks."], "butt-crack": ["The groove between the buttocks."], "butt crack": ["The groove between the buttocks."], "buttcrack": ["The groove between the buttocks."], "sudden infant death syndrome": ["Sudden and unexpected death of an apparently healthy infant during sleep."], "SIDS": ["Sudden and unexpected death of an apparently healthy infant during sleep."], "bloodless": ["Pale in color.", "Free from bloodshed."], "unbloody": ["Free from bloodshed."], "debut": ["A first public presentation."], "counterespionage": ["Spying on the spies."], "counterexample": ["Refutation by example."], "counterfeit": ["A copy that is represented as the original.", "Not genuine; imitating something superior.", "To make a copy of with the intent to deceive."], "forgery": ["A copy that is represented as the original."], "etymological dictionary": ["Dictionary which explains the origin and history of words and morphemes."], "muon": ["An elementary particle with negative electric charge and a spin of 1/2."], "lepton": ["One of the Standard Model's family of elementary particles, alongside quarks and gauge bosons ."], "countermeasure": ["An action taken to offset another action."], "countermove": ["A move made in opposition or retaliation to another."], "counteroffensive": ["An attack by an army against an attacking enemy force."], "counterpane": ["Decorative cover for a bed."], "counterpart": ["A person who closely resembles another or has the same function or characteristics as another."], "counterproductive": ["Tending to hinder rather than serve one's purpose."], "countersign": ["To sign a document that has been signed by someone else, in confirmation or authentication."], "unperilous": ["Not presenting any danger."], "innocuous": ["Not presenting any danger.", "Not injurious to physical or mental health.", "Not causing disapproval.", "Lacking intent or capacity to injure."], "harmless": ["Not presenting any danger."], "nonhazardous": ["Not presenting any danger."], "wintry": ["Of, relating to, or characteristic of winter."], "wintery": ["Of, relating to, or characteristic of winter."], "winterly": ["Of, relating to, or characteristic of winter."], "hibernal": ["Of, relating to, or characteristic of winter."], "brumal": ["Of, relating to, or characteristic of winter."], "cinnamon oil": ["Essential oil made from the leaves and bark of the cinnamon tree."], "countless": ["Incapable of being counted."], "innumerable": ["Incapable of being counted."], "coup": ["A sudden, decisive exercise of power whereby the existing government is subverted without the consent of the people."], "coup d\u2019\u00e9tat": ["A sudden, decisive exercise of power whereby the existing government is subverted without the consent of the people."], "lemon grass": ["An aromatic, lemon-flavoured tropical grass, widely used in Indonesian and South-East Asian cooking."], "fenugreek": ["An annual herb of southern Europe and eastern Asia having off-white flowers and aromatic seeds used medicinally and in curry."], "mustard": ["A powder or paste made from seeds of the mustard plant."], "thyme": ["A perennial plant with small grey-green aromatic leaves and small purple flowers and one of the basic herbs used in cooking."], "valiant": ["Having or characterized by courage."], "courier": ["A messenger sent with haste to convey letters or dispatches."], "court case": ["A judicial examination and determination of issues between parties to action; whether they need issues of law or of fact. A judicial examination, in accordance with law of the land, of a cause, either civil or criminal, of the issues between the parties, whether of law or fact, before a court that has proper jurisdiction."], "courtesy": ["A polite action or expression."], "courthouse": ["A building in which courts of law are held."], "aniseed": ["A Mediterranean plant, Pimpinella anisum."], "feudalism": ["A social system based on personal ownership of resources and personal fealty between a suzerain (lord) and a vassal (subject)."], "fellowship": ["A group of people that share the same interest or aim."], "druid": ["A pre-Christian priest among the Celts of ancient Gaul and Britain and Ireland."], "catnip": ["The members of the genus Nepeta who are known as catnip or catmint because of their famed effect on cats."], "catmint": ["The members of the genus Nepeta who are known as catnip or catmint because of their famed effect on cats."], "sangria": ["A cold drink, originating in Spain, consisting of red or white wine, brandy or sherry, fruit juice, sugar and soda water and garnished with orange and other fruit."], "tequila": ["A spirit made primarily in the area surrounding Tequila."], "lowrider": ["A car or truck which has had its suspension system modified (so that it rides as low to the ground as possible."], "suborder": ["The taxonomic rank immediately subordinate to an order."], "sesame": ["A flowering plant in the genus Sesamum with numerous species occurring in Africa and a smaller number in India."], "tabasco": ["A brand of hot sauce made from tabasco peppers (Capsicum frutescens var. tabasco), vinegar, and salt, and aged in white oak barrels for three years."], "fanaticism": ["An emotion of being filled with excessive, uncritical zeal, particularly for an extreme religious or political cause or with an obsessive enthusiasm for a pastime or hobby."], "fashionable": ["Characteristic of or influenced by the current popular trend or style.", "Generally accepted, used or practiced at the moment.", "Actual, fashionable, up to date."], "trendy": ["Characteristic of or influenced by the current popular trend or style."], "fascist": ["A proponent of fascism."], "fatalistic": ["Of or pertaining to the doctrine that all events are subject to fate or inevitable necessity, or predetermined."], "fencing": ["The art or sport of duelling with swords, especially the style that originated in Europe."], "courtly": ["Good mannered."], "court martial": ["A military court."], "flaccid": ["Yielding to the touch, and easily moved or shaken; hanging loose by its own weight."], "flabby": ["Yielding to the touch, and easily moved or shaken; hanging loose by its own weight."], "flee": ["Leaving a dangerous or unpleasant situation."], "run away": ["Leaving a dangerous or unpleasant situation.", "To flee; to take to one's heels; to cut and run."], "flock": ["A large number of animals, especially sheep or goats kept together."], "foundry": ["A factory which produces metal castings from either ferrous or non-ferrous alloys."], "fawn": ["A young deer.", "To act in a very submissive manner."], "courtyard": ["An area wholly or partly surrounded by walls or buildings."], "covenant": ["An international agreement in writing between two states or a number of states. They are binding in international law; some create law only for those states that are parties to them."], "coverlet": ["The top sheet of a bed."], "robotics": ["The science and technology of robots, and their design, manufacture, and application."], "scab": ["An incrustation over a sore, wound, vesicle, or pustule, formed during healing."], "audio engineering": ["A part of audio science dealing with the recording and reproduction of sound through mechanical and electronic means."], "software development methodology": ["A framework that is a used to structure, plan, and control the process of developing information systems."], "broadcast engineering": ["The field of electrical engineering, and now to some extent computer engineering, which deals with radio and television broadcasting."], "Rational Unified Process": ["An iterative software development process framework. It is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs."], "RUP": ["An iterative software development process framework. It is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs."], "bachelor's degree": ["An undergraduate academic degree awarded for a course or major that generally lasts for three, four, or in some cases and countries, five or six years."], "category theory": ["A theory that deals in an abstract way with mathematical structures and relationships between them: it abstracts from sets and functions to objects and morphisms."], "master's degree": ["A degree that provides a mastery or high-order overview of a relevant field of study or area of professional practice. Its graduates possess a range of academic and vocational skills including advanced knowledge of a specialist body of theoretical and applied topics; high order skills in analysis, critical evaluation and/or professional application; and the ability to solve complex problems and think rigorously and independently within the area studied. (source: Wikipedia)"], "tape hiss": ["Hissing noise on analogue magnetic tape."], "graduate school": ["A school that awards advanced academic degrees, such as doctoral degrees with the general requirement that students must have earned a previous undergraduate (bachelor's) degree."], "pneumoconiosis": ["Occupational lung disease caused by the inhalation of dust."], "spiral model": ["A software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts."], "claqueur": ["Someone who is paid to praise without criticism.", "Someone who is paid to applaud in a theatre or other public performance."], "frontage road": ["Any street or narrow stretch of paved surface that leads to a specific destination, such as a main highway."], "abut": ["To touch by means of a mutual border, edge or end."], "Cook Islands Maori": ["A language of the Cook Islands."], "trade union": ["An organization whose members are wholly or mainly workers and whose principal purposes include the regulation of relations between workers and employers or employers' associations."], "Sindarin": ["One of the Elvish languages invented by J. R. R. Tolkien."], "Cirth": ["A script which was invented by J. R. R. Tolkien for the constructed languages he devised and used in his works."], "Buryat script": ["A variant of the Mongolian Script used to write the Russia Buriat language."], "Buriat script": ["A variant of the Mongolian Script used to write the Russia Buriat language."], "rote": ["The process of committing something to memory through repetition, in a mechanical way, usually by hearing and repeating aloud."], "marjoram": ["A perennial herb or undershrub with sweet pine and citrus flavours."], "cover-up": ["To attempt to prevent something scandalous from becoming public."], "cowardly": ["Lacking courage."], "cowboy": ["A man who herds and tends cattle on a ranch, esp. in the western U.S., and who traditionally goes about most of his work on horseback."], "cowlick": ["A tuft of hair that grows in a different direction from the rest of the hair and usually will not lie flat."], "abiogenesis": ["The study of how life on Earth emerged from inanimate organic and inorganic molecules."], "citric acid": ["A weak organic triprotic acid. It is a natural preservative and is also used to add an acidic, or sour, taste to foods and soft drinks."], "cowpox": ["A mild, contagious skin disease of cattle, usually affecting the udder, that is caused by a virus. When the virus is transmitted to humans, as by vaccination, it can confer immunity to smallpox."], "cowshed": ["A barn for cows."], "cowbarn": ["A barn for cows."], "prairie wolf": ["(Canis latrans) A member of the Canidae family native to North America."], "cozen": ["To cause someone to believe an untruth; to practice trickery or fraud."], "crabby": ["Annoyed and irritable."], "crabbed": ["Annoyed and irritable."], "power socket": ["A female electrical connector that have slots or holes which accept the pins or blades of power plugs inserted into them and deliver electricity to the plugs."], "socket": ["A female electrical connector that have slots or holes which accept the pins or blades of power plugs inserted into them and deliver electricity to the plugs.", "An endpoint of a bidirectional inter-process communication flow across an Internet Protocol-based computer network, such as the Internet."], "garrotte": ["A handheld weapon, most often referring to a ligature of chain, rope, scarf, wire or fishing line used to strangle someone to death.", "An execution device where the condemned is tied to a pole and strangulated from behind."], "gauge": ["The quantity, size, weight, distance or capacity of a substance compared to a designated standard."], "gazette": ["A publication (usually published daily or weekly and printed on cheap, low-quality paper) that contains news and other articles."], "gazelle": ["An antelope of the genus Gazella mostly native to Africa and capable of running at high speeds for long periods."], "Gibraltarian": ["A native or inhabitant of Gibraltar."], "Gibraltar pound": ["The currency of Gibraltar."], "godfather": ["A man present at the christening of a baby who promises to help raise the child in the Christian tradition."], "gondola": ["A small long, narrow boat with a high prow and stern, propelled by a single oar."], "craftsmanship": ["A man who practices a craft with great skill."], "crafty": ["Marked by skill in deception."], "gossip": ["Idle talk about someone\u2019s private or personal matters."], "cramp": ["A painful and involuntary muscular contraction."], "spasm": ["A painful and involuntary muscular contraction."], "fired up": ["Very emotional or excited, positively or negatively, regarding something."], "tachograph": ["A device that combines the functions of a clock and a speedometer.", "A device that combines the functions of a clock and a speedometer and records its measurements on paper."], "taekwondist": ["Someone who practices the sport of Taekwondo."], "Taekwondo": ["A martial arts originating in Korea."], "technocrat": ["An individual who makes decisions based solely on technical information and not personal or public opinion."], "crankcase": ["Housing for a crankshaft."], "crankshaft": ["The part of an engine which translates reciprocating linear piston motion into rotation or the other way around."], "telegram": ["A message transmitted by telegraph."], "zoogeography": ["The scientific study of the geographical distribution of animal species."], "zionism": ["An international movement originated for the establishment of a Jewish national or religious community in Palestine and later for the support of modern Israel."], "ramification": ["A consequence or development that complicates a problem.", "The divergence of the stem and limbs of a plant into smaller ones, meaning trunk into branches, branches into increasingly smaller branches."], "Mantoux test": ["A diagnostic tool for tuberculosis."], "galvanometer": ["An instrument for detecting and measuring electric current."], "gasify": ["To convert into gas, or an aeriform fluid."], "geodesist": ["Someone who practices or studies geodesy."], "crave": ["To plead with someone for help or for a favor; to request urgently or persistently."], "craven": ["A person who lacks courage.", "Lacking courage."], "cardamon": ["A pungent aromatic spice made of dried seeds of the cardamom plant. Widely used in Scandinavian and East Indian cooking."], "Yukaghir": ["A family of related languages spoken in the Russian Far East by the Yukaghir, an indigenous people in Eastern Siberia, living in the basin of the Kolyma River.", "A people in the north-eastern Russia."], "paraphyly": ["In phylogenetics, a group of organisms that contains its most recent common ancestor but does not contain all the descendants of that ancestor."], "Frenchwoman": ["A woman who is from France, or is of French ancestry."], "bagpiper": ["Someone who plays the bagpipe."], "countersignature": ["A signature made to confirm or endorse another"], "countryside": ["A rural area, or the rural part of a larger area."], "coup\u00e9": ["A two-seater car, normally a sports car"], "adstringent": ["A substance which draws tissue together thus restricting the flow of blood."], "camera-shy": ["Unwilling to be filmed or photographed."], "cinnamon tea": ["Tea made of cinnamon."], "bacteriologist": ["Person who studies or practices bacteriology."], "Balkans": ["A geographical region in the southeast of Europe."], "ballast": ["Heavy material that is placed in the hold of a ship, to provide stability."], "battleship": ["A large, heavily armoured warship with a main battery consisting of the largest calibre of guns."], "sacrament": ["A sacred act or ceremony in Christianity."], "sacrilege": ["The violation or injurious treatment of a sacred object."], "desecration": ["The violation or injurious treatment of a sacred object.", "Act not respecting the sacred character of a place, a time, an object, a person etc."], "sailboat": ["A boat propelled by the wind in its sails."], "sailing boat": ["A boat propelled by the wind in its sails."], "credibility": ["Capable of being believed."], "scree": ["Loose stony debris on a slope."], "credible": ["Worthy of belief or confidence."], "thrustworthy": ["Worthy of belief or confidence."], "creditable": ["Deserving or possessing reputation or esteem."], "credulity": ["Tendency to believe readily."], "credulous": ["Disposed to believe on little evidence."], "saddler": ["Someone who makes, repairs and sells saddles."], "creepy": ["Causing a sensation as of things crawling on your skin."], "crawly": ["Causing a sensation as of things crawling on your skin."], "eerie": ["Causing a sensation as of things crawling on your skin.", "Inspiring a feeling of fear; strange and frightening."], "macabre": ["Causing a sensation as of things crawling on your skin."], "cremate": ["To burn dead bodies."], "cremation": ["The burning of a dead body."], "crematorium": ["A mortuary where corpses are cremated."], "crematory": ["A mortuary where corpses are cremated."], "Slippery Jack": ["Edible mushroom with a brown, slimy cap which can be found all over the northern hemisphere."], "sticky bun": ["Edible mushroom with a brown, slimy cap which can be found all over the northern hemisphere."], "Sami": ["A people in Finland, Norway, Russia and Sweden."], "crestfallen": ["Brought low in spirit."], "chapfallen": ["Brought low in spirit."], "lipodystrophy": ["A condition characterized by the abnormal distribution of fat tissue."], "latte macchiato": ["Beverage consisting of hot milk with espresso and steamed milk on top."], "rift": ["A thin and usually jagged space opened in a previously solid material."], "crewman": ["Any member of a ship's crew."], "tea infuser": ["Kitchen device for brewing loose tea leaves consisting of a perforated metal container or mesh."], "teaball": ["Kitchen device for brewing loose tea leaves consisting of a perforated metal container or mesh."], "tea egg": ["Kitchen device for brewing loose tea leaves consisting of a perforated metal container or mesh."], "Thousand Islands": ["Archipelago of islands in the USA-Canada border region situated in the Saint Lawrence River as flows out of Lake Ontario.", "Indonesion chain of islands in the Java See."], "Thousand Island dressing": ["Salad dressing of American cusine with mayonnaise, ketchup or tomato paste and peppers seasoned with tabasco sauce."], "Tabasco sauce": ["Spicy hot sauce made from tabasco peppers."], "Tabasco": ["Spicy hot sauce made from tabasco peppers."], "tabasco pepper": ["A variety of the chili pepper species Capsicum frutescens."], "hot sauce": ["Spicy sauce made from chili peppers and other ingredients."], "chili sauce": ["Spicy sauce made from chili peppers and other ingredients."], "pepper sauce": ["Spicy sauce made from chili peppers and other ingredients."], "criminology": ["The scientific study of crime and criminal behaviour and law enforcement."], "crimson": ["A deep and vivid red color."], "crinite": ["Covered with hair."], "bible-abiding": ["Abiding by the commandments of the Bible."], "law-abiding": ["Abiding by the law."], "olive wood": ["Wood of the olive tree."], "oak wood": ["Wood of the oak tree."], "beech wood": ["Wood of a beech tree."], "beechwood": ["Wood of a beech tree."], "beechen": ["Consisting of or made of the wood of the beech tree."], "oaken": ["Consisting of or made of oak wood."], "ash wood": ["Wood of the ash tree."], "maple wood": ["Wood of the maple tree."], "maplewood": ["Wood of the maple tree."], "maple": ["Wood of the maple tree.", "Tree or shrub of the family Acer."], "teak": ["Wood of the teak tree."], "teakwood": ["Wood of the teak tree."], "teak wood": ["Wood of the teak tree."], "birch wood": ["Wood of the birch tree."], "birchwood": ["Wood of the birch tree."], "balsa wood": ["Wood of the balsa tree."], "balsa": ["Wood of the balsa tree."], "Kaingang": ["An indigenous language spoken in the South of Brazil, belonging to the J\u00ea-Kaingang language family."], "cripple": ["A person or animal that is partially unable to use a limb or limbs because of an injury or disability.", "A shortened wooden stud or brace used to construct the portion of a wall above a door or above and below a window."], "crises": ["A set of circumstances causing a crisis."], "crisp bread": ["A flat and dry Nordic type of bread or cracker, containing mostly rye flour."], "crispy": ["Having a crisp texture, brittle yet tender."], "pine wood": ["Wood of the pine tree."], "yew": ["Wood of the yew tree.", "Any tree or shrub of the genus Taxus.", "A species of coniferous tree with dark-green flat needle-like leaves and seeds bearing red arils, native to western, central and southern Europe, northwest Africa, northern Iran and southwest Asia."], "yew wood": ["Wood of the yew tree."], "cherry wood": ["Wood of the cherry tree."], "cherrywood": ["Wood of the cherry tree."], "nutwood": ["Wood of the nut tree."], "nut wood": ["Wood of the nut tree."], "criticise": ["To express negative criticism."], "dolmen": ["A prehistoric megalithic tomb typically having two large upright stones and a capstone."], "cromlech": ["A prehistoric megalithic tomb typically having two large upright stones and a capstone."], "crossfire": ["Fire from two or more points so that the lines of fire cross."], "crosspatch": ["A bad-tempered person."], "grouch": ["A bad-tempered person."], "cross-purpose": ["The understanding of something in a different way than it is meant."], "crotchety": ["Having a difficult and contrary disposition."], "buttercup": ["Any of various plants of the genus Ranunculus."], "crowfoot": ["Any of various plants of the genus Ranunculus."], "crucify": ["To put to death by nailing or binding the hands and feet to a cross."], "crucifixion": ["Execution on a cross."], "cruel": ["Indifference towards the suffering of another and even deriving a positive feeling from it."], "cruise": ["A voyage by sea in a liner for pleasure, usually calling at a number of ports.", "A pleasure voyage on a ship, usually with stops at various ports."], "crumb": ["A very small quantity of something."], "crunchy": ["Having a crisp texture, brittle yet tender."], "crusty": ["Having a crisp texture, brittle yet tender."], "cryptogram": ["A message or writing in code or cipher."], "crystallize": ["To assume a crystalline form."], "fruit infusion": ["Infusion of pieces of fruit without tea leaves."], "fruit tea": ["Infusion of pieces of fruit without tea leaves."], "amnesiac": ["A person suffering from amnesia.", "Suffering from partial loss of memory."], "amnesic": ["A person suffering from amnesia.", "Suffering from partial loss of memory."], "cubist": ["An artist who adheres to the principles of cubism."], "cubit": ["An ancient unit of length based on the length of the forearm."], "ell": ["An ancient unit of length based on the length of the forearm."], "Blin": ["A Central Cushitic language which is spoken in central Eritrea."], "Bilin": ["A Central Cushitic language which is spoken in central Eritrea."], "cuckoo": ["A common European bird, Cuculus canorus, of the family Cuculidae, noted for its characteristic call and its brood parasitism."], "previous year": ["The year before the current one."], "prior year": ["The year before the current one."], "previous month": ["The month before the current one."], "cuckoopint": ["Any plant of the family Araceae; have small flowers massed on a spadix surrounded by a large spathe."], "ultimo": ["In or of the month before the present one."], "ult.": ["In or of the month before the present one."], "thoughtcrime": ["An offense that is only committed in thought."], "panic": ["To be overcome by a sudden fear and lose control.", "To cause sudden fear and loss of control."], "hessian": ["Coarse fabric made from jute fibers."], "Hessian": ["An inhabitant of Hesse."], "bagel": ["Round bread product with a hole in the middle made of yeasted wheat dough."], "heated": ["Made warm or hot."], "cuff link": ["A fastening for a shirt cuff, usually consisting of two buttons or buttonlike parts connected with a chain or shank that passes through two slits in the cuff."], "cufflink": ["A fastening for a shirt cuff, usually consisting of two buttons or buttonlike parts connected with a chain or shank that passes through two slits in the cuff."], "culprit": ["A person who is guilty of a fault or crime."], "cult": ["A particular system of religious worship, esp. with reference to its rites and ceremonies."], "cultivated": ["Having good manners.", "Developed by human care and for human use.", "Prepared for growing crops (e.g. of land)."], "exonerate": ["To free from accusation or blame.", "To free from an obligation, responsibility or task."], "exculpatory": ["Excusing or clearing of any wrongdoing."], "exonerative": ["Excusing or clearing of any wrongdoing."], "cultured": ["Having good manners."], "cumulate": ["To heap up; to collect or gather (e.g. work, magazines, etc.)."], "garner": ["To heap up; to collect or gather (e.g. work, magazines, etc.)."], "acumulate": ["To heap up; to collect or gather (e.g. work, magazines, etc.)."], "cumulative": ["Increasing or growing by accumulation or successive additions."], "cunning": ["Intelligent, smart and capable of taking advantage of a situation.", "The quality of being clever."], "cup final": ["The final match of any cup competition."], "copperlike": ["Of, resembling, or containing copper."], "curable": ["Capable of being cured."], "curative": ["Intended to cure."], "dogma": ["The established belief or doctrine held by a religion, ideology or any kind of organization, thought to be authoritative and not to be disputed, doubted or diverged from."], "cure": ["To get healthy again.", "To remedy an illness using medical or medicamentous treatment; to provide a cure for.", "The act or process of regaining health.", "To return to health and strength after illness.", "A means of healing or restoring to health."], "remedy": ["To correct or amend something; set straight or right.", "A means of healing or restoring to health."], "curio": ["A strange and interesting object which invokes curiosity."], "login": ["The process by which individual access to a computer system is controlled by identification of the user using credentials provided by the user."], "log-in": ["The process by which individual access to a computer system is controlled by identification of the user using credentials provided by the user."], "log in": ["The process by which individual access to a computer system is controlled by identification of the user using credentials provided by the user."], "dogmatic": ["Stubbornly adhering to insufficiently proven beliefs."], "usefulness": ["The extend to which something is useful."], "curiosity": ["The desire to learn or know about anything."], "inquisitiveness": ["The desire to learn or know about anything."], "curler": ["A device on which hair is wound for curling."], "curly": ["(of hair) Curling or tending to curl."], "currant": ["A small kind of seedless raisin, used in cookery."], "imprecation": ["An appeal or prayer for evil or misfortune to befall someone or something."], "malediction": ["An appeal or prayer for evil or misfortune to befall someone or something."], "barbiturate": ["Any of a class of drugs that act as depressants of the central nervous system and are used as sedatives or hypnotics."], "ketamine": ["A pain-killing drug and anaesthetic."], "benzodiazepine": ["Any of a class of psychoactive drugs, structured upon diazepine, used in the treatment of anxiety, insomnia and other disorders"], "khat": ["The young leaves of the khat plant chewed or drunk as a tea for their stimulant effects."], "handwriting": ["The art of writing with the hand and a writing instrument.", "The writing which characterizes a particular person."], "curt": ["Brief or terse, especially to the point of being rude.", "Abruptly or brusquely short."], "curtain": ["A piece of cloth covering a window to keep the sun from shining inside."], "Egyptian Arabic": ["A variety of the Arabic language which is spoken in Egypt and understood across most of the Arab World."], "toilet paper": ["Soft single-use paper to clean after defecation or urination."], "TP": ["Soft single-use paper to clean after defecation or urination."], "leathery": ["Having the texture or appearance of leather."], "leathern": ["Having the texture or appearance of leather.", "Made of leather."], "cussed": ["Persisting in a reactionary stand."], "habit": ["A pattern of behavior inherited or acquired through frequent repetition.", "A dependence on a habit-forming substance such as a drug or alcohol.", "An action done on a regular basis; an established custom.", "An action performed repeatedly and automatically, usually without awareness.", "A long piece of clothing worn by members of a religious order, especially monks and nuns.", "A piece of clothing worn uniformly for a specific activity, e.g. by a horseback rider.", "Customary manner of dress."], "praxis": ["A pattern of behavior inherited or acquired through frequent repetition."], "wont": ["A pattern of behavior inherited or acquired through frequent repetition."], "customary": ["According to or depending on custom."], "normal": ["According to or depending on custom."], "impulse turbine": ["Steam turbine in which the stator is provided with nozzles in which the steam expands and issues at high velocity tangentially to the bucket blades of the rotor."], "Watubela": ["A language of Indonesia (Maluku)."], "cute": ["Lovely or loveable because it is small and pretty."], "colorectal polyp": ["Benign growth on the intestinal mucous membrane extending into the intestine."], "colon polyp": ["Benign growth on the intestinal mucous membrane extending into the intestine."], "cynic": ["Someone who is critical of the motives of others.", "Inclined to believe the worst about people."], "coloscope": ["A thin, lighted tube used to examine the inside of the colon."], "cynicism": ["A cynical feeling of distrust."], "Cypriot": ["A native or inhabitant of Cyprus.", "Of, from, or related to the country of Cyprus."], "cyst": ["A sac or bag-like structure, whether normal or containing morbid matter."], "dab hand": ["A highly skilled person."], "daddy": ["Children word for \"father\"."], "daft": ["Mentally ill; affected with madness or insanity."], "enunciate": ["To make known by stating or announcing.", "To speak clearly."], "pronounce.": ["To speak clearly."], "fanatical": ["Having an extreme, irrational zeal or enthusiasm for a specific cause."], "firewood": ["Wood intended to be burned."], "fraudulent": ["Based on fraud or deception."], "dishonest": ["Based on fraud or deception."], "fricassee": ["Meat or poultry cut into small pieces, stewed or fried and served in its own gravy."], "fugitive": ["A person who is fleeing or escaping from something.", "A person who is wanted by the law"], "furrier": ["A person who sells, makes, repairs, alters, cleans, or otherwise deals in clothing made of fur."], "fundamentalist": ["Someone who stresses strict and literal adherence to a set of basic principles."], "futile": ["Incapable of producing results"], "optional": ["Left to personal choice."], "elective": ["Left to personal choice."], "overdraft": ["The permission to have a minus balance on your bank account.", "A minus balance on a bank account."], "oxymoron": ["A figure of speech in which two words with opposing meanings are used together intentionally for effect."], "helmsman": ["A member of a ship's crew who is responsible for steering"], "heliport": ["A facility designed to let helicopters take off and land."], "hyphen": ["A symbol typically used to join two related words to form a compound noun, or to indicate that a word has been split at the end of a line."], "juxtaposition": ["A logical fallacy on the part of the observer, where two items placed next to each other imply a correlation, when none is actually claimed.", "A placing together done in order to compare or contrast."], "fecklessness": ["The state of general incompetence and ineffectiveness."], "valedictory": ["That is done for the last time to say farewell."], "disparate": ["Composed of inherently different or distinct elements."], "incongruous": ["Lacking in harmony or compatibility or appropriateness."], "damsel": ["A young unmarried woman."], "damson": ["The small, dark-blue or purple fruit of a plum, Prunus insititia."], "grey nomad": ["A person who travels the world in a caravan after retirement."], "dappled": ["Marked with spots of a different colour."], "mottled": ["Marked with spots of a different colour."], "spotted": ["Marked with spots of a different colour."], "speckled": ["Marked with spots of a different colour."], "wipe out": ["To kill in large numbers."], "daredevil": ["A recklessly daring person.", "Presumptuously daring."], "darknesss": ["Absence of light."], "obscurity": ["Absence of light."], "dashboard": ["Instrument panel on an automobile or airplane containing dials and controls.", "A set of icons or other computer visual elements inside a common area of geometrical shape (usually a rectangle), each one corresponding to a software tool."], "dashing": ["Possessing charm and attractiveness."], "unborn": ["Not yet born.", "A child not yet born in the mother's womb."], "antenatal": ["Occurring or existing before birth."], "dauntless": ["Not being daunted or intimidated.", "Not to be daunted or intimidated."], "fearless": ["Not being daunted or intimidated."], "intrepid": ["Not being daunted or intimidated."], "daydream": ["Absentminded dreaming while awake.", "To have a daydream."], "reverie": ["Absentminded dreaming while awake."], "bewildement": ["A dazed condition."], "bafflement": ["A dazed condition."], "perplexity": ["A dazed condition."], "dazzling": ["Extremely bright."], "deadlock": ["A situation in which no progress can be made or no advancement is possible."], "impasse": ["A situation in which no progress can be made or no advancement is possible."], "deal": ["A trading agreement or contract.", "A set of cards or pieces of a player at a given time during a game."], "dearth": ["A lack or short supply."], "paucity": ["A lack or short supply."], "death certificate": ["Form signed by the attending physician indicating an individual's time and cause of death."], "gravidity": ["The condition of being pregnant; the period from conception to birth when a woman carries a developing fetus in her uterus."], "gale": ["A very strong wind, more than a breeze, less than a storm."], "gallicism": ["A loanword borrowed from French."], "germanism": ["A word or idiom of the German language that has been borrowed by another language."], "gladiator": ["A person who entertained the public by engaging in mortal combat."], "balloon": ["Means of air transport, an aircraft lighter than air.", "A flexible bag which is inflated with gas that is lighter than the surrounding air, causing it to rise and float in the atmosphere."], "barter": ["An exchange of goods without the involvement of money.", "To exchange goods without involving money."], "bauxite": ["The principal ore of aluminium."], "bagatelle": ["An unsubstantial thing.", "A short, light-hearted piece of music."], "trifle": ["An unsubstantial thing."], "deficient": ["Lacking something essential."], "junior": ["The younger of two persons.", "A name suffix used after a child's name when his parent has the same name"], "younger": ["The younger of two persons."], "midday": ["Time of day when the sun is in its zenith."], "noon": ["Time of day when the sun is in its zenith."], "joy": ["The feeling of happiness."], "machination": ["A clever scheme or artful plot, usually crafted for evil purposes."], "madrigal": ["An Italian musical form of the 14th century.", "A type of secular vocal music composition, written during the Renaissance and early Baroque eras."], "deathly": ["Causing death or having the ability to cause death."], "deathless": ["Not susceptible to death or aging, never dying or growing older."], "death rate": ["The number of deaths per unit, usually 1000, of population in a given place and time."], "mortality rate": ["The number of deaths per unit, usually 1000, of population in a given place and time."], "debacle": ["A total, often ludicrous failure."], "debar": ["To refuse to accept as valid.", "To prevent from entering; to keep out (e.g. of membership)."], "debase": ["To insult or offend.", "To make a person morally inferior."], "debatable": ["Subject to nonconcordant interpretations.", "Capable of being disproved."], "pastel": ["An art medium in the form of a stick, consisting of pure powdered pigment and a binder."], "coloured pencil": ["A pencil with a coloured core."], "fountain pen": ["A pen with a refillable reservoir that provides a continuous supply of fluid ink to its point."], "breviary": ["A book containing prayers, hymns, and so on for everyday use at the canonical hours."], "debauched": ["Displaying the effect of excessive indulgence in sensual pleasure."], "dissipated": ["Displaying the effect of excessive indulgence in sensual pleasure.", "Unrestrained by convention or morality."], "dissolute": ["Displaying the effect of excessive indulgence in sensual pleasure.", "Unrestrained by convention or morality."], "libertine": ["Displaying the effect of excessive indulgence in sensual pleasure.", "Unrestrained by convention or morality."], "debauchery": ["A wild gathering involving excessive drinking and promiscuity."], "lechery": ["Excessive indulgence in sensual pleasures."], "riot": ["A wild gathering involving excessive drinking and promiscuity."], "voucher": ["A certificate that acknowledges a debt."], "gamble away": ["To lose in a game of chance."], "norovirus": ["A genus of RNA viruses of the Caliciviridae family which causes gastroenteritis."], "Lusophone": ["Someone who speaks the Portuguese language.", "Speaking the Portuguese language."], "terror": ["Extreme or intense fear.", "Something that causes extreme or intense fear."], "debilitate": ["To weaken or reduce in force, intensity, effect, quantity."], "weaken": ["To weaken or reduce in force, intensity, effect, quantity.", "To destroy property or hinder normal operations."], "enervate": ["To weaken or reduce in force, intensity, effect, quantity."], "debility": ["The state of being weak."], "infirmity": ["The state of being weak."], "decrepitude": ["The state of being weak."], "debilitation": ["The state of being weak."], "debonair": ["Courteous, gracious, and having a sophisticated charm."], "breezy": ["Courteous, gracious, and having a sophisticated charm."], "jaunty": ["Courteous, gracious, and having a sophisticated charm."], "buck": ["A male rabbit.", "A bill having a value of 1 American dollar."], "bunion": ["A bump or bulge on the first joint of the big toe caused by the swelling of a sac of fluid under the skin."], "buret": ["A vertical cylindrical piece of laboratory glassware with a volumetric graduation on its full length and a precision tap, or stopcock, on the bottom."], "burette": ["A vertical cylindrical piece of laboratory glassware with a volumetric graduation on its full length and a precision tap, or stopcock, on the bottom."], "rattle": ["A baby's toy designed to make sound when shaken, usually containing loose grains or pellets in a hollow container.", "A wooden instrument that makes a loud knocking noise [used by people watching football games]."], "barb": ["A backward-facing point on a fish hook or similar implement, rendering extraction from the victim's flesh more difficult.", "One of the side branches extending from the central axis of a feather."], "debtor": ["One that owes something to another."], "observance": ["The practice of complying with a law, custom, command or rule."], "knife point": ["The tip of a knife blade."], "decadence": ["Moral degeneration or decay."], "decadent": ["Characterized by decadence."], "decathlete": ["An athlete who takes part in or trains chiefly for a decathlon."], "decathlon": ["An athletic contest consisting of ten different events."], "roach coach": ["A small portable place to buy lunch and snacks at work."], "food truck": ["A small portable place to buy lunch and snacks at work."], "mobile kitchen": ["A small portable place to buy lunch and snacks at work."], "deceit": ["The act or practice of deceiving."], "disrespect": ["Lack of respect, disrespectful attitude."], "disrespectfulness": ["Lack of respect, disrespectful attitude.", "A disrespectful act or statement."], "decency": ["The state or quality of being decent."], "smell a rat": ["To suspect that something is wrong."], "decent": ["Showing integrity, fairness, or other characteristics associated with moral uprightness."], "yoke": ["A device for joining together a pair of draft animals."], "aardvark": ["A burrowing mammal (Orycteropus afer) of southern Africa, having a stocky, hairy body, large ears, a long tubular snout, and powerful digging claws."], "viral disease": ["Disease produced by viruses."], "otter": ["Any of several aquatic, furbearing, weasellike mammals of the genus Lutra , having webbed feet and a long, slightly flattened tail."], "gerontocracy": ["A form of government where power lies in the hands of old people."], "gentrification": ["The transformation of a neighbourhood's demographic and character that ensues when affluent individuals move in, causing real estate value (and thus rent and property taxes) to increase and forcing less affluent long-time resident to relocate."], "instrumentalist": ["A person who plays a musical instrument."], "deception": ["The act or practice of deceiving.", "Deceptive or false appearance; that which misleads the eye or the mind."], "deceptive": ["Not in keeping with the reality or the facts."], "beast of burden": ["An animal used for carrying heavy loads or pulling heavy equipment."], "gluttony": ["Habitual excessive eating and drinking."], "upset": ["In an unhappy and worried mental state."], "decided": ["Inclined to assert oneself."], "decimal": ["A number in the decimal system."], "fur seal": ["Any of several eared seals of the genera Callorhinus or Arctocephalus, having thick, soft underfur."], "declaim": ["To speak aloud in an oratorical manner."], "humpback whale": ["A large whalebone whale of the genus Megaptera."], "mating season": ["The time when animals pair."], "gangway": ["A temporary bridge such as one between a ship and the shore."], "test-tube baby": ["Baby conceived by in vitro fertilization."], "test tube baby": ["Baby conceived by in vitro fertilization."], "grudge": ["Deep-seated animosity or ill-feeling about something or someone."], "test tube": ["A glass tube, rounded at one end and open at the other; used for small-scale laboratory tests."], "fillet": ["A mesh of string, cord, or rope generally used for catching fish or trapping something."], "declamation": ["The act or art of declaiming."], "autoclave": ["A pressurized device designed to heat aqueous solutions above their boiling point at normal atmospheric pressure to achieve sterilization."], "V\u00e4rmlandic": ["A dialect of Swedish who in main is spoken in V\u00e4rmland, Sweden."], "Northern Pintail": ["A widely-occurring duck which breeds in the northern areas of Europe, Asia and North America."], "Pintail": ["A widely-occurring duck which breeds in the northern areas of Europe, Asia and North America."], "decorative": ["Serving or tending to decorate."], "ibex": ["Any of several wild goats of the genus Capra.", "A tahr of the species Nilgiritragus hylocrius endemic to the Nilgiri Hills in southern India."], "decorator": ["A person who decorates rooms, houses etc."], "vaporize": ["To transition from a liquid state into a gaseous state."], "exhalation": ["The act of breathing out."], "glucose": ["A simple monosaccharide sugar, which is a principal source of energy for most living things."], "vacant post": ["An unoccupied employment position."], "estradiol": ["A sex hormone belonging to the group of the estrogens."], "oestradiol": ["A sex hormone belonging to the group of the estrogens."], "Bohemian Waxwing": ["(Bombycilla garrulus) A sleek singing bird, 18-21 cm long with a pointed crest, from the genus Bombycilla."], "chest cavity": ["The cavity in the vertebrate body enclosed by the ribs between the diaphragm and the neck and containing the lungs and heart.", "The enclosed area created by and within the ribs."], "digestive system": ["Group of organs stretching from the mouth to the anus, serving to breakdown foods, assimilate nutrients, and eliminate waste."], "gravestone": ["A memorial stone on a grave which often bears an inscription with the name and date of birth and death of the deceased person."], "headstone": ["A memorial stone on a grave which often bears an inscription with the name and date of birth and death of the deceased person."], "tombstone": ["A memorial stone on a grave which often bears an inscription with the name and date of birth and death of the deceased person."], "date of death": ["The date on which a person has died."], "book review": ["The critical evaluation of a literary work."], "book report": ["The critical evaluation of a literary work."], "literary review": ["The critical evaluation of a literary work."], "bramble": ["A fruit-bearing shrub of the genus Rubus."], "gastric acid": ["The acidic secretion of the stomach; mostly hydrochloric acid."], "stomach acid": ["The acidic secretion of the stomach; mostly hydrochloric acid."], "deductible": ["Capable of being deducted or subtracted.", "An amount that can be deducted, especially for the purposes of calculating income tax."], "deductable": ["Capable of being deducted or subtracted."], "deductive": ["Of or based on deduction."], "small intestine": ["The longest part of the alimentary canal; where digestion is completed."], "thoracic cavity": ["The cavity in the vertebrate body enclosed by the ribs between the diaphragm and the neck and containing the lungs and heart.", "The enclosed area created by and within the ribs."], "ostracize": ["To accept no longer in a community, group or country, e.g. by official decree."], "deface": ["To mar the surface or appearance of."], "blemish": ["To mar the surface or appearance of.", "A small flaw which spoils the appearance of something."], "defamation": ["An abusive attack of a person's reputation by any slanderous communication.", "A false accusation of an offense or a malicious misrepresentation of someone's words or actions."], "slander": ["To attack falsely or with malicious intent the good name and reputation of someone.", "An abusive attack of a person's reputation by any slanderous communication."], "derogatory": ["An abusive attack of a person's reputation by any slanderous communication.", "Containing defamation.", "Having a negative denotation or connotation."], "sexuality": ["The sexual functions, activities, attitudes, and orientations of an individual."], "during": ["During a time"], "whilst": ["During a time"], "defame": ["To attack falsely or with malicious intent the good name and reputation of someone."], "defamatory": ["Containing defamation."], "injurious": ["Containing defamation.", "Causing damage or harm."], "invidious": ["Containing defamation."], "opprobrious": ["Containing defamation."], "libelous": ["Containing defamation."], "after-lunch nap": ["A short nap after lunch."], "afternoon nap": ["A short nap in the afternoon."], "numb": ["To become insensitive."], "deafen": ["To render deaf."], "go blind": ["To become blind."], "made-up": ["Consisting of a lie."], "fabricated": ["Consisting of a lie."], "concocted": ["Consisting of a lie."], "defeatism": ["A state of mind in which one expects and accepts defeat too easily."], "inauguration": ["The ceremonial induction into a position."], "windpipe": ["The passage for the breath from the larynx to the lungs."], "trachea": ["The passage for the breath from the larynx to the lungs."], "feces": ["Substance that human and animal bodies release from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon."], "faeces": ["Substance that human and animal bodies release from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon."], "f\u00e6ces": ["Substance that human and animal bodies release from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon."], "crap": ["Substance that human and animal bodies release from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon.", "To excrete feces from one's body through the anus.", "Worthless object of bad quality.", "Of poor quality."], "poo": ["Substance that human and animal bodies release from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon."], "poop": ["Substance that human and animal bodies release from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon."], "fecal matter": ["Substance that human and animal bodies release from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon."], "M\u00f6hne Reservoir": ["An artificial lake in North Rhine-Westphalia, Germany."], "Karlsruhe": ["Third-biggest city in Baden-W\u00fcrttemberg, Germany which was founded in the 18th century and whose streets form a fan."], "lie to": ["To tell someone a lie."], "defecation": ["The elimination of fecal waste through the anus."], "bladder stone": ["Stone-shaped deposits in the urinary bladder."], "shot to the head": ["A shot in the head with a projectile."], "shot in the head": ["A shot in the head with a projectile."], "shot in the leg": ["A shot in the leg with a projectile."], "bored": ["Feeling tired of a person or situation that is perceived as uninteresting."], "gullet": ["The tube by which food passes from the mouth to the stomach."], "oesophagus": ["The tube by which food passes from the mouth to the stomach."], "multiple sclerosis": ["An autoimmune condition in which the immune system attacks the central nervous system, leading to demyelination."], "autophagy": ["A function of cell metabolism which involves the degradation of cell components which are not needed anymore.", "Pathological desire to eat parts of one's own body."], "autophagocytosis": ["A function of cell metabolism which involves the degradation of cell components which are not needed anymore."], "esophagus": ["The tube by which food passes from the mouth to the stomach."], "computer-generated": ["Generated by a computer."], "self-cannibalism": ["Pathological desire to eat parts of one's own body."], "autocannibalism": ["Pathological desire to eat parts of one's own body."], "autosarcophagy": ["Pathological desire to eat parts of one's own body."], "defenceless": ["Helpless or without protection."], "defenseless": ["Helpless or without protection."], "defend": ["To keep something or someone safe or prevent harm coming to someone or something.", "To argue or speak in defense of."], "defender": ["Someone who defends with conviction one thesis, ideal or plan.", "The person or process that mitigates or prevents an attack."], "defensible": ["Capable of being defended."], "defendable": ["Capable of being defended."], "cerebral palsy": ["A loss or deficiency of motor control with involuntary spasms caused by permanent brain damage present at birth."], "antebellum": ["Belonging to or pertaining to the period before a war.", "In the United States: Pertaining to the period before the Civil War."], "brain haemorrhage": ["A bleeding in the brain caused by the rupture of a blood vessel within the head."], "pre-Civil War": ["In the United States: Pertaining to the period before the Civil War."], "cerebral haemorrhage": ["A bleeding in the brain caused by the rupture of a blood vessel within the head."], "pass gas": ["To emit digestive gases through the anus."], "let rip": ["To emit digestive gases through the anus."], "gasoline tank": ["Container used to store fuel, for example in a car."], "fuel tank": ["Container used to store fuel, for example in a car."], "fear of flying": ["Pathological fear of flying."], "aerophobia": ["Pathological fear of flying."], "aviatophobia": ["Pathological fear of flying."], "aviophobia": ["Pathological fear of flying."], "pteromechanophobia": ["Pathological fear of flying."], "water tank": ["A large container used to store water."], "mastication": ["The process by which food is crushed and ground by teeth."], "chewing": ["The process by which food is crushed and ground by teeth."], "wainscot": ["An area of wooden (especially oaken) panelling on the lower part of a room\u2019s walls."], "holistic": ["Relating to an analysis of the whole instead of a separation into parts."], "stomach cancer": ["A type of cancer that can develop in any part of the stomach and may spread throughout the stomach and to other organs; particularly the esophagus, lungs and the liver."], "gastric cancer": ["A type of cancer that can develop in any part of the stomach and may spread throughout the stomach and to other organs; particularly the esophagus, lungs and the liver."], "deference": ["Favourable regard."], "deferential": ["Showing deference."], "gastritis": ["Inflammation of the lining of the stomach."], "secretion": ["The regulated release of a substance by a cell or group of cells."], "elimination": ["The act of discharging or excreting from the body waste products that arise as a result of metabolic activity.", "The act of eliminating.", "The complete destruction of every trace of something."], "deferment": ["Act of putting off to a future time."], "defiance": ["The feeling, or spirit of being defiant."], "disrespectful": ["Showing a lack of deference.", "Exhibiting no courtesy."], "defiant": ["Boldly resisting opposition."], "recalcitrant": ["Boldly resisting opposition."], "deficiency": ["A shortage or absence of what is needed."], "inadequacy": ["A shortage or absence of what is needed."], "insufficiency": ["A shortage or absence of what is needed."], "good-bye": ["An interjection of parting."], "V\u00f5ro": ["a language belonging to the Baltic-Finnic branch of the Finno-Ugric languages spoken in Estonia."], "Gulf of Bothnia": ["The northernmost arm of the Baltic Sea."], "definable": ["Capable of being defined."], "orange flower water": ["Distillate of bitter-orange blossoms which is used to flavour desserts and pastry."], "orange blossom water": ["Distillate of bitter-orange blossoms which is used to flavour desserts and pastry."], "distillate": ["A purified liquid produced by condensation from vapor in distillation."], "deformed": ["Unusual of shape."], "deformity": ["The state of being badly shaped or formed."], "defrost": ["To remove frost from."], "dexterity": ["Nimble in the use of the hands and body."], "deftness": ["Nimble in the use of the hands and body."], "delectable": ["Pleasing to the taste.", "Capable of arousing desire."], "luscious": ["Pleasing to the taste.", "Capable of arousing desire."], "pleasant-tasting": ["Pleasing to the taste."], "scrumptious": ["Pleasing to the taste."], "toothsome": ["Pleasing to the taste."], "enchanting": ["Capable of arousing desire."], "predate": ["To assign to a date earlier than the actual date.", "To prey on or hunt for."], "antedate": ["To assign to a date earlier than the actual date."], "backdate": ["To assign to a date earlier than the actual date."], "postdate": ["To assign a date later than the acutal date."], "antiquise": ["To imitate the style of the classical antiquity."], "delegacy": ["A group of people authorised to represent a person or organisation."], "sinusitis": ["Inflammation of a sinus or the sinuses."], "cholera": ["A highly infectious, often fatal disease occurring in hot countries."], "nougat": ["A chewy or brittle candy containing almonds or other nuts and sometimes fruit."], "delicacy": ["Something delightful or pleasing.", "The state or quality of being delicate.", "An especially delicious comestible."], "delicate": ["Easily damaged or requiring careful handling."], "marzipan": ["A confection of almond paste and sugar."], "marchpane": ["A confection of almond paste and sugar."], "titbit": ["Something delightful or pleasing."], "fatty acid": ["Any of a large group of organic acids, especially those found in animal and vegetable fats and oils."], "prussic acid": ["An aqueous solution of hydrogen cyanide."], "dizziness": ["A sensation of irregular or whirling motion, either of oneself or of external objects."], "giddiness": ["A sensation of irregular or whirling motion, either of oneself or of external objects."], "cocoa": ["Dried and fully fermented fatty seed of the cacao tree from which chocolate is made.", "A brown powder made from roasted, ground cocoa beans, used in making chocolate, and in cooking."], "candy": ["Food item that is rich in sugar."], "alder": ["Any of several trees or shrubs of the genus Alnus, belonging to the birch family."], "vermiculite": ["Any of a group of platy minerals, hydrous silicates of aluminum, magnesium, and iron, that expand markedly on being heated: used in the expanded state for heat insulation and as a plant growth medium."], "overspend": ["To spend more money than one can afford."], "chicken wire": ["A mesh of wire commonly used to fence poultry livestock."], "poultry netting": ["A mesh of wire commonly used to fence poultry livestock."], "cloudberry": ["A low herb (Rubus chamaemorus) that bear edible yellow aggregate fruits.", "The fruit of the cloudberry plant."], "olive tree": ["A tree of the genus Olea cultivated for its fruit."], "stray dog": ["A dog without a home."], "foundling": ["An abandoned child."], "Blutenburg Castle": ["Castle in the west of Munich, Germany."], "anorexic": ["Suffering from anorexia nervosa.", "A person suffering from anorexia nervosa.", "Female person suffering from anorexia nervosa.", "Male person suffering from anorexia nervosa."], "anorectic": ["Suffering from anorexia nervosa.", "A person suffering from anorexia nervosa.", "Having no appetite.", "Causing a loss of appetite.", "A substance that reduces the appetite and causes a person to eat less."], "anorectous": ["Having no appetite."], "anoretic": ["Having no appetite.", "Causing a loss of appetite.", "A substance that reduces the appetite and causes a person to eat less."], "anorexigenic": ["Causing a loss of appetite.", "A substance that reduces the appetite and causes a person to eat less."], "appetite suppressant": ["A substance that reduces the appetite and causes a person to eat less."], "suicide attempt": ["An attempt to kill oneself."], "power-sapping": ["Consuming a lot of electricity."], "power-saving": ["Consuming little electricity."], "shelf warmer": ["Merchandise that is slow-selling or does not sell at all and therefore remains in the shop or storage."], "defecate": ["To excrete feces from one's body through the anus."], "deceased": ["No longer living."], "defunct": ["No longer living."], "departed": ["No longer living."], "sleeveless": ["Without sleeves."], "nephrectomy": ["The surgical removal of a kidney."], "insolvent": ["Having insufficient assets to cover one's debts."], "cash-strapped": ["Having insufficient money."], "orderly": ["Having a systematic arrangement."], "old-fashioned": ["Of a style that is no longer in vogue or fashionable."], "retirement home": ["A multi-residence housing facility intended for the elderly."], "sewer rat": ["Rat that lives in the sewers."], "epiphany": ["An appearance or manifestation of a deitiy or a superhuman being.", "A sudden realization or discovery which results in a feeling of elation and clarity."], "delead": ["To remove lead from."], "credit event": ["The event when a debtor is unable meet his obligations."], "coven": ["A clique that shares common interests or activities.", "A formal group or assembly of witches"], "road sign": ["A sign erected at the side of a road to provide information to road users."], "traffic sign": ["A sign erected at the side of a road to provide information to road users."], "long-distance relationship": ["Intimate relationship in which the partners live far away from each other."], "LDR": ["Intimate relationship in which the partners live far away from each other."], "weekend relationship": ["Intimate relationship with two partners who don't live together and see each other only on weekends."], "poke": ["To touch something lightly with a narrow pointed object, like a finger or a stick.", "To strike hard with the hand, fist, or some heavy instrument, usually repeatedly.", "To search or inquire intrusively.", "To poke or thrust abruptly."], "racehorse": ["A horse bred for racing."], "flatter": ["To flatter in an obsequious manner.", "To praise somewhat dishonestly."], "blandish": ["To flatter in an obsequious manner.", "To praise somewhat dishonestly."], "blarney": ["To encourage, influence or persuade by effort.", "To flatter in an obsequious manner."], "soaking wet": ["Very wet."], "become widowed": ["To become a widow or a widower."], "drenched": ["Very wet."], "dripping wet": ["Very wet."], "sopping wet": ["Very wet."], "wringing wet": ["Very wet."], "soppy": ["Very wet."], "sopping": ["Very wet."], "acerola": ["A tropical shrub or small tree in the family Malpighiaceae with edible fruit that are rich in vitamin C."], "acerolla": ["A tropical shrub or small tree in the family Malpighiaceae with edible fruit that are rich in vitamin C."], "Barbados cherry": ["A tropical shrub or small tree in the family Malpighiaceae with edible fruit that are rich in vitamin C.", "The small, red, round fruit of the acerola shrub which is rich in Vitamin C."], "wild crapemyrtle": ["A tropical shrub or small tree in the family Malpighiaceae with edible fruit that are rich in vitamin C."], "acerola juice": ["Juice made of the fruit of the acerola."], "lemon juice": ["The juice of lemons."], "lime juice": ["The juice of limes."], "paintbrush": ["A small brush used to paint artwork."], "is an ingredient of": ["an ingredient of foo is an item used to make foo."], "distilled beverage": ["Alcoholic beverage produced through destillation, regardless of alcohol content."], "thriller": ["A suspenseful, sensational story or film."], "demagogue": ["A political leader who seeks support by appealing to popular passions and prejudices."], "slum": ["A run-down area of a city where the poor and socially disadvantaged live and which is characterized by substandard housing, overpopulation and lack of infrastructure such as clean water, sanitation and electricity."], "informal settlement": ["Settlement on the outskirts of a city, often built without authorization, where poor people live in improvised dwellings made from carton, wood or corrugated metal."], "shanty town": ["Settlement on the outskirts of a city, often built without authorization, where poor people live in improvised dwellings made from carton, wood or corrugated metal."], "impoverished": ["Reduced to poverty, having lost one's wealth."], "pauperized": ["Reduced to poverty, having lost one's wealth."], "pauperize": ["To become poor or poorer.", "To make poor."], "legalize": ["To make legal, to authorize by law."], "decriminalize": ["To make legal, to authorize by law."], "criminalize": ["To make illegal, to make punishable as a crime."], "illegalize": ["To make illegal, to make punishable as a crime."], "outlaw": ["A person that has conducted a criminal act.", "To make illegal, to make punishable as a crime."], "nudge": ["To touch something lightly with a narrow pointed object, like a finger or a stick."], "demagogy": ["Impassioned appeals to the prejudices and emotions of the populace."], "demagoguery": ["Impassioned appeals to the prejudices and emotions of the populace."], "sled": ["A small sledge without runners intended for pleasure rides downslopes on snow.", "To ride a sled."], "kohlrabi": ["Cultivar of cabbage (Brassica oleracea var. Gongylodes) that is grown for its swollen, edible stem rather than its leaves."], "commuter": ["A person who travels to work daily."], "jockey": ["A person who rides horses professionally in races."], "dementia": ["Severe and progressive impairment or loss of intellectual capacity and personality integration, due to the loss of or damage to neurons in the brain."], "menopausal": ["Pertaining to or characteristic of menopause."], "post-menopausal": ["Pertaining to or characteristic of the time after menopause."], "postmenopausal": ["Pertaining to or characteristic of the time after menopause."], "pre-menopausal": ["Pertaining to or characteristic of the time before menopause."], "premenopausal": ["Pertaining to or characteristic of the time before menopause."], "credit-financed": ["Financed by means of credit."], "paternal grandfather": ["The father of someone's father."], "maternal grandfather": ["The father of someone's mother."], "Knesset": ["The parliament of Israel, located in Jerusalem."], "white cabbage": ["Form of cabbage (Brassica oleracea var. capitata f. alba) that forms large, tightly closed heads with light-colored leaves."], "cabbage turnip": ["Cultivar of cabbage (Brassica oleracea var. Gongylodes) that is grown for its swollen, edible stem rather than its leaves."], "glutinous rice": ["Asian rice which is especially sticky when cooked."], "sticky rice": ["Asian rice which is especially sticky when cooked."], "sweet rice": ["Asian rice which is especially sticky when cooked."], "waxy rice": ["Asian rice which is especially sticky when cooked."], "botan rice": ["Asian rice which is especially sticky when cooked."], "mochi rice": ["Asian rice which is especially sticky when cooked."], "pearl rice": ["Asian rice which is especially sticky when cooked."], "fiat currency": ["Money that does not have any intrinsic value and that is not backed up by real values such as gold or silver, it derives its value only from government decree."], "fiat money": ["Money that does not have any intrinsic value and that is not backed up by real values such as gold or silver, it derives its value only from government decree."], "propeller": ["A mechanical device, with shaped blades that turn on a shaft, to push against air or water, especially one used for propelling an aircraft or boat."], "fried sticky rice": ["A dish of Chinese cuisine consisting of sticky rice with Chinese sausage, chopped Chinese mushrooms and chopped barbecue pork."], "democrat": ["An advocate of democracy."], "new car": ["Car that was just recently built and that has no previous owners."], "oncological": ["Of or relating to oncology."], "caoutchouc": ["An elastic hydrocarbon polymer that naturally occurs as a milky colloidal suspension, or latex, in the sap of some plants."], "democratize": ["To make democratic.", "To become democratic."], "demonstrable": ["Capable of being demonstrated or proved."], "wheelchair-bound": ["Unable to walk and forced to sit in a wheelchair."], "confined to a wheelchair": ["Unable to walk and forced to sit in a wheelchair."], "cave dweller": ["Prehistoric, primitive human living in caves."], "pretext": ["Something serving to conceal plans."], "cloak": ["Something serving to conceal plans.", "A long outer garment worn over the shoulders covering the back; a cape, often with a hood. \u2003"], "demotivate": ["To make someone lose motivation."], "demur": ["To make objection.", "The act of making objection."], "demure": ["Characterized by shyness and modesty."], "denary": ["Containing or having as a basis the number ten."], "tenfold": ["Containing or having as a basis the number ten."], "grammatical property": ["Property of a word, as transitive or intransitive for a verb, countable for a noun or comparable for an adjective."], "pedagogue": ["A person who studies and practices the science of teaching."], "sandpaper": ["Strong paper coated with a layer of sand or other abrasive, used for smoothing or polishing."], "denigration": ["An abusive attack of a person's reputation by any slanderous communication.", "An abusive attack on a person's character or good name"], "denominator": ["(Mathematics) The expression written below the line in a common fraction that indicates the number of parts into which one whole is divided."], "body part": ["Part of the body of a human or an animal, as a head or a foot."], "denim": ["A kind of cotton cloth, often blue, used for making jeans, overalls and other work and leisure garments."], "of course": ["As would be expected."], "dent": ["A hollow or depression in a surface."], "exaggerate": ["To make something appear to be, or describe it as, greater than it really is."], "bedpan": ["A small quite flat bowl used f ex in health care to collect urine from those confined to bed."], "knuckle": ["The joint that connects the fingers to the back of the hand, and which on a closed fist stands out as protrusions from the back of the hand."], "midriff": ["A sheet of muscle extending across the bottom of the ribcage, it separates the diafragma from the abdominal cavity and performs an important function in respiration."], "big toe": ["The largest of the toes on the foot."], "eyelid": ["A skin flap that can be closed over an eye."], "dentures": ["A partial or complete set of artificial teeth for either the upper or lower jaw."], "sickness": ["A definite pathological process having a characteristic set of signs and symptoms which are detrimental to the well-being of the individual."], "depart": ["To go away from a place; to leave.", "To move away from a place into another direction."], "quit": ["To give up from a job or position.", "To go away from a place; to leave.", "To put an end to a state or an activity."], "departure": ["The act of departing."], "dependable": ["Worthy of being depended on."], "dependence": ["The state of relying on or being controlled by someone or something else.", "A compulsive or chronic need."], "ulna": ["The smaller of the two bones of the forearm, that connects to the wrist on the side opposite to the thumb."], "elbow bone": ["The smaller of the two bones of the forearm, that connects to the wrist on the side opposite to the thumb."], "one-armed": ["With only one arm."], "single-arm": ["With only one arm."], "depiction": ["Representation by drawing or painting etc."], "depilate": ["To remove hair from the body."], "epilate": ["To remove hair from the body."], "Earth-like": ["Resembling planet Earth."], "Kaqchikel": ["An indigenous Mesoamerican language and a member of the Quichean-Mamean branch of the Mayan languages family, spoken by the indigenous Kaqchikel people in central Guatemala."], "K'iche'": ["A language of Guatemala."], "self-love": ["The love of oneself."], "self love": ["The love of oneself."], "self-hate": ["A feeling of hate and anger towards oneself."], "self-hatred": ["A feeling of hate and anger towards oneself."], "autophobia": ["A feeling of hate and anger towards oneself."], "depopulate": ["To remove or reduce the population of, as by destruction or expulsion."], "self-loathing": ["A feeling of hate and anger towards oneself."], "barefaced": ["With the face uncovered.", "Unrestrained by convention or propriety."], "barehanded": ["With no covering on the hands."], "deport": ["To expel from a country."], "ear lobe": ["The lower fleshy part of the human ear."], "fishing line": ["A line intended to fasten hooks in when fishing."], "aftershave": ["A scented, astringent lotion for applying to the face after shaving."], "ball-shaped": ["Shaped like a sphere."], "orbicular": ["Shaped like a sphere."], "certainty": ["Something which cannot be doubted."], "identity card": ["A card for identifying the bearer, giving name, address, and other personal data."], "identification card": ["A card for identifying the bearer, giving name, address, and other personal data."], "deprecate": ["Consider bad or wrong."], "Chontal": ["A Mayan language spoken by the Chontal Maya people, an indigenous people of the Mexican state of Tabasco."], "Chol": ["Mayan language spoken by the Ch'ol people in the Mexican state of Chiapas."], "Chort\u00ed": ["A Mayan language spoken in Guatemala in the municipalities of Jocot\u00e1n and d'Olopa, located in the department of Chiquimula, as well as in the department of Zacapa."], "Tzeltal": ["A mayan language of the Tzeltalan group spoken in the Mexican state of Chiapas."], "Tzotzil": ["A Maya language spoken by the indigenous Tzotzil Maya people in the Mexican state of Chiapas."], "Chicomuceltec": ["An extinct Mayan language formerly spoken in the region defined by the municipios of Chicomuselo, Mazapa de Madero, and Amatenango de la Frontera in Chiapas, Mexico, as well as some nearby areas of Guatemala."], "Huastec": ["Mayan language of Mexico, spoken by the Huastecs living in rural areas of San Luis Potos\u00ed and northern Veracruz."], "Chuj": ["A language of Guatemala."], "Tojolabal": ["A Mayan language spoken by the Tojolabal people primarily in the departments of Las Margaritas and Altamirano, in Chiapas, Mexico."], "depreciate": ["To attack falsely or with malicious intent the good name and reputation of someone."], "depressant": ["A drug that reduces excitability and calms a person."], "Jakalteko": ["A Mayan language spoken in Guatemala by the Jakaltek people in the department of Huehuetenango and the adjoining part of Chiapas in southern Mexico."], "Kanjobal": ["A language of Guatemala."], "downy": ["A drug that reduces excitability and calms a person."], "tranquilizer": ["A drug that reduces excitability and calms a person."], "sedative": ["A drug that reduces excitability and calms a person."], "deprivation": ["The withholding of something needed."], "marmot": ["A member of the genus Marmota, in the rodent family Sciuridae (squirrels)."], "deprived": ["Suffering from hardship."], "Mocho": ["A Maya language spoken in the Mexican state of Chiapas."], "Ixil": ["A Mayan language spoken in the three villages of San Gaspar Chajul, San Juan Cotzal, and San Maria Nebaj in Guatemala."], "Mam": ["A Mayan language spoken by the Mam people of the highlands of western Guatemala and in Chiapas, Mexico."], "Tektiteko": ["A Mayan language of the Quichean-Mamean branch spoken by the Tektitek people, which are primarily settled in the municipality of Tectit\u00e1n, department of Huehuetenango, Guatemala and in Mexico."], "chicken egg": ["An egg laid by a hen."], "hen's egg": ["An egg laid by a hen."], "Thika": ["A river that flows through central Kenya."], "gold ring": ["A finger ring made of gold."], "silver ring": ["A finger ring made of silver."], "deputation": ["A group of people authorised to represent a person or organisation."], "depute": ["To authorise someone to act on his/her behalf.", "To give something to (a person), or assign a task to (a person)."], "faloodeh": ["A Persian sorbet made of thin vermicelli noodles frozen with corn starch, rose water, lime juice, and often ground pistachios."], "alabaster": ["Made of alabaster.", "Resembling alabaster."], "Poqomam": ["A mayan language spoken by the Poqomam people in Guatemala, mostly in the municipalities of Chinautla (Guatemala department), Pal\u00edn (Escuintla department), and in San Luis Jilotepeque (Jalapa department)."], "Poqomchi'": ["A Mayan language spoken in Guatemala, in the municipalities of Purulh\u00e1 (Baja Verapaz department), Santa Cruz Verapaz, San Crist\u00f3bal Verapaz, Tactic, Tamah\u00fa, Tucur\u00fa (Alta Verapaz department) and Chicam\u00e1n (El Quich\u00e9 department)."], "Achi": ["Mayan language spoken by the Achi people, primarily in the department of Baja Verapaz in Guatemala."], "Tz'utujil": ["A Mayan language spoken in the region to the south of Lake Atitl\u00e1n in Guatemala."], "derailment": ["An accident in which a train runs off its track."], "Sacapulteco": ["A language spoken in Sacapulas, a municipality in the Guatemalan Department of Quich\u00e9."], "credit default swap": ["A contract where the buyer of the swap makes regular payments to the seller and in return receives a payoff in case the debtor of the underlying financial instrument defaults."], "Tz'utujiil": ["A Mayan language spoken in the region to the south of Lake Atitl\u00e1n in Guatemala."], "former name": ["Label to link the current name with a former name."], "flamingo": ["Any of several aquatic birds of the family Phoenicopteridae, having very long legs and neck, a bill bent downward at the tip, and pinkish to scarlet plumage."], "derelict": ["A person abandoned by society, esp. a person without a permanent home and means of support."], "vagrant": ["A person abandoned by society, esp. a person without a permanent home and means of support."], "vagabond": ["A person abandoned by society, esp. a person without a permanent home and means of support."], "tramp": ["A person abandoned by society, esp. a person without a permanent home and means of support.", "To move about aimlessly or without any destination."], "derogate": ["To attack falsely or with malicious intent the good name and reputation of someone."], "transitive": ["Pertaining to a verb: can be accompanied by a direct object in active sentences."], "intransitive": ["Pertaining to a verb: cannot be accompanied by a direct object in active sentences"], "reflexive": ["Pertaining to a verb: subject and direct object are always identical."], "impersonal": ["Pertaining to a verb: cannot take a true subject, because it does not represent an action, occurrence, or state-of-being of any specific person, place, or thing"], "standard value": ["A value that is used when no value is specified."], "default value": ["A value that is used when no value is specified."], "strawberry field": ["Area where strawberries are cultivated."], "strawberry plantation": ["Area where strawberries are cultivated."], "Archangel": ["A city and the administrative center of Arkhangelsk Oblast, Russia."], "dereliction": ["The act of abandoning something."], "desertion": ["The act of abandoning something.", "The act of giving something up."], "deride": ["To treat or speak of with contempt."], "gibe": ["To treat or speak of with contempt."], "jibe": ["To be compatible, similar or consistent; coincide in their characteristics.", "To treat or speak of with contempt."], "hoot": ["To treat or speak of with contempt."], "jeer": ["To treat or speak of with contempt."], "mock": ["To treat or speak of with contempt."], "taunt": ["To treat or speak of with contempt.", "To harass with persistent criticism or carping."], "flout": ["To treat or speak of with contempt."], "double-blind experiment": ["An experiment where neither the individuals nor the researchers know who belongs to the control group and the experimental group."], "double-blind trial": ["An experiment where neither the individuals nor the researchers know who belongs to the control group and the experimental group."], "double-blind study": ["An experiment where neither the individuals nor the researchers know who belongs to the control group and the experimental group."], "Rio": ["The second major city of Brazil, behind S\u00e3o Paulo and the capital of the state of Rio de Janeiro."], "Magdalena River": ["The principal river of Colombia, running about 1,540 kilometres (950 miles) from South to North through the western half of the country."], "talk into": ["Persuade somebody to do something."], "Yuma River": ["The principal river of Colombia, running about 1,540 kilometres (950 miles) from South to North through the western half of the country."], "Tyvan": ["A Turkic languages spoken in the Republic of Tuva in south-central Siberia in Russia, in China and Mongolia."], "separable": ["Pertaining to a verb: composed of a stem and an affix, which can be detached from the stem in several inflected forms"], "inseparable": ["Pertaining to a verb: Not composed of a stem and an affix, which can be detached from the stem."], "Malay Archipelago": ["A group of 20,000 islands between the Indian and Pacific Oceans."], "Maritime Southeast Asia": ["A group of 20,000 islands between the Indian and Pacific Oceans."], "benign pseudohypertrophic muscular dystrophy": ["An X-linked recessive inherited disorder characterized by slowly progressive muscle weakness of the legs and pelvis."], "scythe": ["A farm tool consisting of a long bent blade attached to a shaft, that is designed for cutting straws of grass or grain from an upright position.", "To cut with or as with if a scythe."], "gas guzzler": ["A vehicle that needs a lot of fuel."], "gas-guzzler": ["A vehicle that needs a lot of fuel."], "kowtow": ["An act of respect common in Imperial China which consists of kneeling down and bowing so low as to touch the head to the ground.", "To kneel and bow so low as to touch one\u2019s forehead to the ground in expression of respect, worship, or submission.", "To act in a very submissive manner."], "enslave": ["To make (someone) a slave."], "enslaved": ["Reduced to slavery."], "enslaver": ["Someone who takes slaves."], "tedious": ["Causing boredom."], "biblical": ["Of, pertaining to, contained in or in accordance with the Bible.", "Evocative of the Bible or biblical times."], "Biblical": ["Of, pertaining to, contained in or in accordance with the Bible.", "Evocative of the Bible or biblical times."], "manic depression": ["A mood disorder with episodes of both depression and mania."], "bipolar affective disorder": ["A mood disorder with episodes of both depression and mania."], "Melanesian Pidgin English": ["An English-based creole language spoken throughout Papua New Guinea."], "Neo-Melanesian": ["An English-based creole language spoken throughout Papua New Guinea."], "New Guinea Pidgin": ["An English-based creole language spoken throughout Papua New Guinea."], "Sipacapense": ["A Mayan language, spoken natively within indigenous Sipakapense communities, primarily based in the Guatemalan municipality of Sipacapa, department of San Marcos."], "descry": ["To see, discover or determine something, unclear, distant or hidden, by looking carefully."], "discern": ["To see, discover or determine something, unclear, distant or hidden, by looking carefully.", "To detect with the senses."], "espy": ["To see, discover or determine something, unclear, distant or hidden, by looking carefully."], "Uspanteco": ["A Mayan language of the Greater Quichean group, spoken in the Uspant\u00e1n and Playa Grande Ixc\u00e1n municipalities, in the department El Quich\u00e9 of Guatemala."], "desecrate": ["To remove the consecration from a person or an object."], "defile": ["To make filthy.", "To remove the consecration from a person or an object."], "pollute": ["To remove the consecration from a person or an object.", "To make impure."], "profane": ["To remove the consecration from a person or an object.", "Not to respect the sacred character of."], "forsake": ["To leave someone who needs or counts on you."], "panettone": ["A cake specialty of Milan that is eaten around Christmas and New Year's."], "disc jockey": ["A person who selects, plays, and announces records at a discotheque."], "cummin": ["A flowering plant in the family Apiaceae, native from the east Mediterranean to East India."], "F": ["Music note between mi and sol.", "The abbreviation for folio, a book size.", "The abbreviation for folio, a book size."], "A": ["A musical note between G and B."], "D": ["Musical note between C and E.", "In snooker billards, the area on the table where the white cue ball has its frame-initial position."], "G": ["Musical note between F and A."], "garrote": ["A handheld weapon, most often referring to a ligature of chain, rope, scarf, wire or fishing line used to strangle someone to death.", "An execution device where the condemned is tied to a pole and strangulated from behind.", "To strangle with or as if with a garrote."], "garotte": ["A handheld weapon, most often referring to a ligature of chain, rope, scarf, wire or fishing line used to strangle someone to death.", "An execution device where the condemned is tied to a pole and strangulated from behind."], "Mantoux screening test": ["A diagnostic tool for tuberculosis."], "tuberculin sensitivity test": ["A diagnostic tool for tuberculosis."], "Pirquet test": ["A diagnostic tool for tuberculosis."], "PPD test": ["A diagnostic tool for tuberculosis."], "deserter": ["A person who deserts from the army."], "deservedly": ["In a deserved manner."], "justly": ["In a deserved manner."], "rightly": ["In a deserved manner."], "desiccated": ["Completely dried out."], "dehydrate": ["Completely dried out."], "desideratum": ["Something considered necessary or highly desirable."], "designation": ["Defined usage or destination for something."], "desirability": ["The extent to which something is desirable."], "drop earring": ["A piece of jewelry with a pendant that is worn on the ear."], "eardrop": ["A piece of jewelry with a pendant that is worn on the ear."], "MS": ["An autoimmune condition in which the immune system attacks the central nervous system, leading to demyelination."], "disseminated sclerosis": ["An autoimmune condition in which the immune system attacks the central nervous system, leading to demyelination."], "encephalomyelitis disseminata": ["An autoimmune condition in which the immune system attacks the central nervous system, leading to demyelination."], "Asperger's disorder": ["A neuropsychiatric disorder whose major manifestation is an inability to interact socially; other features include poor verbal and motor skills, single mindedness, and social withdrawal."], "Asperger's": ["A neuropsychiatric disorder whose major manifestation is an inability to interact socially; other features include poor verbal and motor skills, single mindedness, and social withdrawal."], "AS": ["A neuropsychiatric disorder whose major manifestation is an inability to interact socially; other features include poor verbal and motor skills, single mindedness, and social withdrawal."], "eidetic memory": ["Ability to recall images, sounds, or objects in memory with extreme accuracy and in abundant volume."], "photographic memory": ["Ability to recall images, sounds, or objects in memory with extreme accuracy and in abundant volume."], "total recall": ["Ability to recall images, sounds, or objects in memory with extreme accuracy and in abundant volume."], "desk clerk": ["A hotel receptionist."], "Diclofenac": ["A non-steroidal anti-inflammatory drug (NSAID) taken to reduce inflammation and as an analgesic reducing pain in conditions such as arthritis or acute injury."], "desolate": ["Barren and lifeless.", "To cause extensive destruction or ruin utterly.", "Which does not have inhabitants."], "desolation": ["Sadness resulting from being forsaken or abandoned."], "forlornness": ["Sadness resulting from being forsaken or abandoned."], "dispairing": ["Indicating despair."], "hopeless": ["Indicating despair."], "goshawk": ["A medium-large bird of prey in the family Accipitridae."], "cortisone": ["A natural glucocortico\u00efde hormone with formula C21H28O5."], "desperation": ["Loss of hope."], "despise": ["To regard with contempt."], "scorn": ["The feeling or attitude of regarding someone or something as inferior, base, or worthless.", "To regard with contempt."], "despite": ["In defiance of."], "notwithstanding": ["In defiance of."], "tapioca": ["A flavorless, colorless, odorless starch extracted from the root of the plant species Manihot esculenta."], "stereophonic decoder": ["Device for deriving the left- and right-hand signals from a stereophonic signal."], "despoil": ["To deprive of something valuable by force."], "despondent": ["Deeply agitated especially from emotion."], "despotic": ["Characteristic of, or pertaining to, a despot."], "despotism": ["The rule of a despot."], "tyranny": ["The rule of a despot."], "venous ulcer": ["Wound, usually on the leg, caused by malfunctioning veins that do not move blood back toward the heart normally."], "varicose ulcer": ["Wound, usually on the leg, caused by malfunctioning veins that do not move blood back toward the heart normally."], "sencha": ["The most popular green tea in Japan which is treated with hot steam in order to prevent oxidization."], "brown rice tea": ["Japanese green tea mixed with roasted rice grains."], "genmaicha": ["Japanese green tea mixed with roasted rice grains."], "E-Prime": ["A modified form of English that eliminates all forms of the word \"to be\" in order to prevent the passive voice and force the writer or speaker to name the agent of a statement."], "English-Prime": ["A modified form of English that eliminates all forms of the word \"to be\" in order to prevent the passive voice and force the writer or speaker to name the agent of a statement."], "glottogony": ["The scientific study of the origin of language.", "The undatable first emergence of a complex system of verbal communication."], "origin of language": ["The undatable first emergence of a complex system of verbal communication."], "undatable": ["That cannot be given a date."], "datable": ["That can be given a date."], "Lazi": ["A South Caucasian ethnogaphic group in Turkey and Georgia."], "Acateco": ["Mayan language spoken primarily in the municipality of San Miguel Acat\u00e1n in the western highlands of Guatemala, and by some people in Mexico."], "Acatec": ["Mayan language spoken primarily in the municipality of San Miguel Acat\u00e1n in the western highlands of Guatemala, and by some people in Mexico."], "Conob": ["Mayan language spoken primarily in the municipality of San Miguel Acat\u00e1n in the western highlands of Guatemala, and by some people in Mexico."], "Akatek": ["Mayan language spoken primarily in the municipality of San Miguel Acat\u00e1n in the western highlands of Guatemala, and by some people in Mexico."], "Old Greek": ["A historic language spoken widely with Greece as its centre"], "destine": ["To assign for a specific end, use, or purpose; to design or destine."], "destiny": ["The power or agency that, according to certain belief systems, predetermines and orders unalterably the course of events.", "Event that unavoidably happens to a person, country, institution, etc.", "An outcome, condition or event that is predetermined by fate [the power that predetermines events]."], "city apartment": ["Apartment in a city."], "constipation": ["A condition characterized by infrequent, incomplete or very hard bowel movements."], "costiveness": ["A condition characterized by infrequent, incomplete or very hard bowel movements.", "Extreme reluctance to spend money."], "irregularity": ["A condition characterized by infrequent, incomplete or very hard bowel movements."], "costive": ["Suffering from constipation."], "popess": ["A female pope"], "papess": ["A female pope"], "destitute": ["In great need of food, shelter, clothing etc.", "Completely wanting or lacking."], "destitution": ["Lack of the means of subsistence."], "privation": ["Lack of the means of subsistence."], "penury": ["Lack of the means of subsistence."], "Wastek": ["Mayan language of Mexico, spoken by the Huastecs living in rural areas of San Luis Potos\u00ed and northern Veracruz."], "muskmelon": ["An plant (Cucumis melo) of the family Cucurbitaceae characterized by relatively large edible fruits with hard shells and soft juicy flesh."], "destruct": ["To cause the destruction of."], "destructive": ["Causing or able to cause destruction."], "detached": ["Not joined to another house on either side.", "Having little or no emotions or interest towards someone else.", "Not influenced by anyone else.", "Not attached."], "windowless": ["Lacking windows."], "doorless": ["Lacking doors."], "separated": ["Not attached."], "unscrupulous": ["Unrestrained by scruples."], "nosocomial": ["Occurring or acquired in a hospital."], "nosocomial infection": ["Infection that a patient who seeks treatment for a different condition acquires in a hospital or other healthcare service unit."], "hospital-acquired infection": ["Infection that a patient who seeks treatment for a different condition acquires in a hospital or other healthcare service unit."], "milkless": ["Having no milk."], "Phad Thai": ["Traditional dish of Thai cuisine with rice noodles, scrambled egg, fish sauce, chili peppers, tamarind juice plus any combination of bean sprouts, shrimp, chicken, or tofu, garnished with crushed peanuts, coriander and lemon."], "Pad Thai": ["Traditional dish of Thai cuisine with rice noodles, scrambled egg, fish sauce, chili peppers, tamarind juice plus any combination of bean sprouts, shrimp, chicken, or tofu, garnished with crushed peanuts, coriander and lemon."], "summarize": ["To bring information in fewer words; to describe roughly or briefly.", "To restate the main points, or ideas, in a condensed form."], "clear off": ["To tell someone to go away."], "U-boat": ["A boat that can go underwater."], "underwater": ["Located under the surface of the sea."], "musk melon": ["An plant (Cucumis melo) of the family Cucurbitaceae characterized by relatively large edible fruits with hard shells and soft juicy flesh."], "detain": ["To keep under guard."], "rye": ["Biennial plant from the genus Secale of the family Poaceae, used as a cereal or for forage."], "rye bread": ["A bread made with rye flour."], "Mongol": ["A person who originated from or is a citizen of Mongolia."], "Civil War": ["1861-1865 conflict between the Union (Northern states) and the 11 Southern states that seceded and were organized as the Confederate States of America."], "Confederate States of America": ["A confederation that was created in 1861 by eleven southern states of the United States of America that had declared their secession from the U.S and ended in 1865 after military defeat."], "Confederacy": ["A confederation that was created in 1861 by eleven southern states of the United States of America that had declared their secession from the U.S and ended in 1865 after military defeat."], "CSA": ["A confederation that was created in 1861 by eleven southern states of the United States of America that had declared their secession from the U.S and ended in 1865 after military defeat."], "Confederate States": ["A confederation that was created in 1861 by eleven southern states of the United States of America that had declared their secession from the U.S and ended in 1865 after military defeat."], "detainee": ["A person held in custody."], "d\u00e9tente": ["A period of lessening tension between rivals."], "deter": ["To prevent or discourage from acting."], "detestation": ["Extreme hatred or detestation; the feeling of utter dislike."], "freedman": ["A man who has been freed from slavery."], "freedwoman": ["A woman who has been freed from slavery."], "free negro": ["Term used prior to the abolition of slavery in the United States to describe African Americans who were not slaves."], "free black": ["Term used prior to the abolition of slavery in the United States to describe African Americans who were not slaves."], "detonator": ["A device, as a percussion cap, used to make another substance explode."], "detour": ["A roundabout way, especially a road used temporarily instead of a main route."], "slave girl": ["A girl who is reduced to slavery."], "slave-girl": ["A girl who is reduced to slavery."], "slave boy": ["A boy who is reduced to slavery."], "slave-boy": ["A boy who is reduced to slavery."], "detrimental": ["Causing damage or harm."], "detriment": ["A cause of loss or damage."], "pu-erh tea": ["A type of tea made from a \"large leaf\" variety of the tea plant Camellia sinensis and named after Pu'er county near Simao, Yunnan, China."], "pu'er tea": ["A type of tea made from a \"large leaf\" variety of the tea plant Camellia sinensis and named after Pu'er county near Simao, Yunnan, China."], "puer tea": ["A type of tea made from a \"large leaf\" variety of the tea plant Camellia sinensis and named after Pu'er county near Simao, Yunnan, China."], "Bolay tea": ["A type of tea made from a \"large leaf\" variety of the tea plant Camellia sinensis and named after Pu'er county near Simao, Yunnan, China."], "Waziristan": ["A mountainous region of northwest Pakistan, bordering Afghanistan."], "Punjab": ["Former province in British India that was divided between India and Pakistan in 1947.", "A state in northwest India.", "The most populous province of Pakistan, situated in the east of the country."], "Panjab": ["Former province in British India that was divided between India and Pakistan in 1947."], "physical examination": ["A medical check-up undertaken by a physician; usually done on a regular basis on apparently healthy individuals in order to discover any illnesses or ailments."], "triphtong": ["Combination of three vocalic elements in a single\\nsyllable."], "streetwalker": ["A prostitute who walks the streets to attract customers."], "floozy": ["A prostitute who walks the streets to attract customers.", "A permissive, sexually promiscuous woman."], "floozie": ["A prostitute who walks the streets to attract customers.", "A permissive, sexually promiscuous woman."], "street prostitute": ["A prostitute who walks the streets to attract customers."], "street strumpet": ["A prostitute who walks the streets to attract customers."], "street hooker": ["A prostitute who walks the streets to attract customers."], "street harlot": ["A prostitute who walks the streets to attract customers."], "germy": ["Full of germs."], "peppermint": ["Medicinal and spice plant of the genus Mentha that is a cross between the watermint (Mentha aquatica) and spearmint (Mentha spicata)."], "devalue": ["Reduce the value of."], "devaluate": ["Reduce the value of."], "slut": ["A permissive, sexually promiscuous woman."], "slattern": ["A permissive, sexually promiscuous woman."], "floosie": ["A permissive, sexually promiscuous woman."], "floosy": ["A permissive, sexually promiscuous woman."], "tart": ["Having an acid, sharp or tangy taste.", "A permissive, sexually promiscuous woman.", "A pastry dish, usually sweet, that is a type of pie with an open top not covered with pastry."], "devastation": ["The act of devastating."], "deviance": ["A state or condition markedly different from the norm."], "deviant": ["Deviating from the normal or common order, form, or rule.", "Characterized by deviation."], "deviation": ["A state or condition markedly different from the norm."], "demoniac": ["Pertaining to, or characteristic of a demon or evil spirit.", "Controlled or influenced by a demon.", "Someone who is controlled or influenced by a demon."], "demonic": ["Pertaining to, or characteristic of a demon or evil spirit."], "demoniacal": ["Pertaining to, or characteristic of a demon or evil spirit."], "possessed": ["Controlled by an evil spirit."], "tuna": ["Several species of ocean-dwelling fish in the family Scombridae, mostly in the genus Thunnus."], "force-feeding": ["The practice of feeding a person or an animal against their will, especially by mechanical means."], "gavage": ["The practice of feeding a person or an animal against their will, especially by mechanical means."], "force-feed": ["To feed a person or an animal against their will, especially by mechanical means."], "devise": ["To use the intellect to plan or design something.", "To arrange by systematic planning and united effort (e.g. a plot, a strike, a plan).", "To give by will, especially real property."], "devote": ["To give entirely to a specific person, activity, or cause."], "devoted": ["Zealous or ardent in attachment, loyalty, or affection."], "devotion": ["A profound dedication."], "devotional": ["Characterized by devotion."], "devout": ["Of a person or group who is bound or obligated, as under a pledge to a particular cause, action, or attitude.", "Characterized by devotion.", "Believing in and showing reverence for God or a deity."], "dexterous": ["Nimble in the use of the hands or body."], "diabolical": ["Resembling or characteristic of a devil."], "diagonal": ["A line joining two nonconsecutive corners of a polygon or polyhedron."], "diametrical": ["Characterized by opposite extremes."], "diaphanous": ["Almost completely transparent or translucent."], "diarist": ["A person who keeps a diary."], "dick": ["The male sexual organ for copulation and urination; the tubular portion of the male genitalia (excluding the scrotum)."], "dictate": ["To express as instruction to be executed by the receiver, in accordance with an authority acknowledged by him.", "An authoritative rule.", "To say aloud to be recorded or written by another.", "To state officially or with authority"], "slave state": ["A U.S. state in which slavery of African Americans was legal."], "blood bath": ["A ruthless killing of a great number of people."], "free state": ["A U.S. state in the period before the Civil War in which slavery of African Americans was prohibited or eliminated over time."], "hip hop music": ["Music genre typically consisting of a rhythmic vocal style called rap which is accompanied with backing beats."], "dictation": ["Speech intended for reproduction in writing."], "dictatorial": ["Of or pertaining to a dictator or dictatorship."], "didactic": ["Teaching or intending to teach a moral lesson."], "diehard": ["One who adheres to traditional views or ideas.", "Resisting vigorously and stubbornly to the last."], "traditionalist": ["One who adheres to traditional views or ideas."], "mastectomy": ["The surgical removal of one or both breasts."], "breast removal": ["The surgical removal of one or both breasts."], "mammectomy": ["The surgical removal of one or both breasts."], "dyscalculia": ["Disability involving innate difficulty in learning or comprehending mathematics, in particular simple calculations."], "math disability": ["Disability involving innate difficulty in learning or comprehending mathematics, in particular simple calculations."], "acalculia": ["Loss of the capacity of performing simple mathematical tasks."], "dietetics": ["The science concerned with the nutritional planning and preparation of foods."], "mirror agnosia": ["Type of agnosia caracterized in the inability to recognize that a reflected object is not a real object behind the mirror."], "anosognosia": ["Neuropsychological disability where the individual denies the existence of his illness or infirmity."], "melting point": ["The temperature at which a solid becomes a liquid at standard atmospheric pressure."], "fusing point": ["The temperature at which a solid becomes a liquid at standard atmospheric pressure."], "pray": ["To make a request in a humble manner; to call upon in supplication.", "To address God or a higher being with praise, thanksgiving, confession or supplication."], "radicotomy": ["Resection of nerve roots."], "rhizotomy": ["Resection of nerve roots."], "supplicate": ["To make a request in a humble manner; to call upon in supplication."], "spinal marrow": ["A thick, whitish cord of nerve tissue which is a major part of the vertebrate central nervous system. It extends from the brainstem down through the spine, with nerves branching off to various parts of the body. It is enclosed in and protected by the vertebral column."], "pray to the porcelain god": ["To regurgitate the contents of the stomach."], "barf": ["To regurgitate the contents of the stomach."], "throw up": ["To regurgitate the contents of the stomach."], "drive the porcelain bus": ["To regurgitate the contents of the stomach."], "toss one's cookies": ["To regurgitate the contents of the stomach."], "cordotomy": ["Surgical procedure that disables selected pain-conducting tracts in the spinal cord."], "chordotomy": ["Surgical procedure that disables selected pain-conducting tracts in the spinal cord."], "trigeminal nerve": ["Cranial nerve responsible for sensation in the face."], "fifth cranial nerve": ["Cranial nerve responsible for sensation in the face."], "fifth nerve": ["Cranial nerve responsible for sensation in the face."], "V": ["Cranial nerve responsible for sensation in the face."], "upchuck": ["To regurgitate the contents of the stomach."], "ralph": ["To regurgitate the contents of the stomach."], "puke up": ["To regurgitate the contents of the stomach."], "hurl": ["To regurgitate the contents of the stomach."], "chunder": ["To regurgitate the contents of the stomach."], "inhumation": ["The ritual placing of a corpse in a grave."], "sepulture": ["The ritual placing of a corpse in a grave."], "entombment": ["The ritual placing of a corpse in a grave."], "French Alps": ["Those parts of the Alps mountain range which lie on French territory."], "Swiss Alps": ["The portion of the Alps mountain range that lies on Swiss territory."], "Italian Alps": ["The part of the Alps mountain range that lies on Italian territory."], "Austrian Alps": ["The part of the Alps mountain range that lies on Austrian territory."], "German Alps": ["The part of the Alps mountain range that lies on German territory."], "rename": ["To give a new name to."], "water kettel": ["A metal container used to boil water."], "means of transport": ["Something that serves as a means of transportation."], "sour cherry": ["A cherry, Prunus cerasus, characterized by gray bark.", "The edible fruit of the Prunus cerasus."], "enmity": ["The feeling opposed to friendship."], "antipathy": ["Natural and unrational aversion for someone or something."], "morello cherry": ["The edible fruit of the Prunus cerasus."], "pie cherry": ["The edible fruit of the Prunus cerasus."], "electrostatics": ["The branch of physics that deals with static electricity."], "diffident": ["Lacking self-confidence."], "gooseberry wine": ["Wine made of gooseberries."], "national bankruptcy": ["The formal declaration of a government to not or only partially be able to pay its debts or the de facto cessation of due payments."], "national insolvency": ["The formal declaration of a government to not or only partially be able to pay its debts or the de facto cessation of due payments."], "airport terminal": ["A building in an airport where passengers transfer from ground transportation to the facilities that allow them to board aeroplanes."], "rough-textured": ["Having a texture that has much friction. Not smooth."], "etymon": ["An earlier form of a word in the same language or in an ancestor language.", "A word in a foreign language from which a particular loanword is derived."], "etymologize": ["To find or examine the etymology or etymon of a given word."], "etymologist": ["A female linguist who specializes in etymology.", "A linguist who specializes in etymology."], "ambitransitive": ["(Of a verb) Which can be used transitively or intransitively without requiring morphological change."], "ambitransitive verb": ["A verb that can be used both as intransitive or as transitive without requiring a morphological change."], "agnate": ["Genealogy: A blood relative in the male line."], "blood relative": ["One related by blood or origin with another, especially a person sharing an ancestor with another."], "blood relation": ["One related by blood or origin with another, especially a person sharing an ancestor with another."], "digestibility": ["The quality of being digestible."], "digestible": ["Capable of being digested."], "dignified": ["Showing honesty, probity and deserving esteem ; having or expressing dignity."], "dignify": ["To confer dignity or honor."], "dilapidate": ["To fall into ruin."], "insuperable": ["Impossible to surmount.", "Incapable of being excelled or surpassed."], "unsurmountable": ["Impossible to surmount."], "insurmountable": ["Impossible to surmount."], "unsurpassable": ["Incapable of being excelled or surpassed."], "decaffeinate": ["To remove the caffeine from something."], "decaffeinated": ["Having the caffeine removed."], "decaf": ["Having the caffeine removed."], "morgen": ["A \"morgen\" was an area that could be plowed in one morning. This is most often less that one hectare. The precise size differed per region."], "daily": ["A daily or twice daily published publication (usually printed on cheap, low-quality paper) that contains news and other articles.", "Happening every day.", "Every day."], "mass medium": ["A means of communication that reaches large numbers of people, such as television, newspapers, magazines and radio."], "dine": ["To eat the principal meal of the day."], "diner": ["A person who dines."], "dining room": ["A room in which meals are eaten, as in a home or hotel, esp. the room in which the major or more formal meals are eaten."], "eggplant": ["Violet oval-shaped vegetable, the fruit of Solanum melongena.", "An Asian plant, Solanum melongena, cultivated for its edible purple, green, or white ovoid fruit."], "diphteria": ["An infectious disease of the throat."], "diplomacy": ["The art and practice of conducting negotiations between representatives of groups or states. It usually refers to international diplomacy."], "diplomatic": ["Of, pertaining to, or engaged in diplomacy."], "dip net": ["A net bag on a long handle, used to scoop fish from water."], "metastasize": ["(Of malignant tumors and infections) To spread to other parts of the body.", "To spread in a destructive and injurious way."], "secondary tumor": ["A cancerous growth created by cancerous cells that have spread from a primary growth located elsewhere in the body."], "metastatic tumor": ["A cancerous growth created by cancerous cells that have spread from a primary growth located elsewhere in the body."], "dipsomania": ["The condition suffered by an alcoholic."], "dipstick": ["A graduated rod dipped into a container to indicate the fluid level"], "directness": ["The quality of being honest and straightforward in attitude and speech."], "candor": ["The quality of being honest and straightforward in attitude and speech."], "dirge": ["A mournful poem or piece of music composed or performed as a memorial to a dead person."], "dirigible": ["Capable of being directed."], "dirk": ["A short knife with a pointed blade used for piercing or stabbing."], "dirt": ["Any unclean substance, such as mud, dust, dung etc."], "disability": ["A physical or mental handicap, that prevents a person from living a full, normal life or from holding a gainful job."], "disagree": ["Be of different opinions."], "disagreeable": ["Not to one's liking.", "Unpleasant, offensive, or causing dislike."], "unpleasant": ["Not to one's liking."], "disagreement": ["Difference of opinion."], "disappearance": ["The act of leaving secretly or without explanation."], "evadable": ["Possible to avoid."], "dactyloscopy": ["A method of studying and comparing fingerprints to establish identification."], "fingerprint identification": ["A method of studying and comparing fingerprints to establish identification."], "fingerprint": ["An impression of the friction ridges of all or part of the fingertip."], "dactylogram": ["An impression of the friction ridges of all or part of the fingertip."], "dactyl": ["One of the five extremities that can be found on a hand or a foot.", "A type of meter consisting of one stressed syllable followed by two unstressed syllables in accentual verse or one long syllable followed by two short syllables in quantitative verse."], "dacite": ["Grey igneous rock with a high iron content."], "tear stone": ["A concretion in the tear ducts or tear sac."], "ophthalmolith": ["A concretion in the tear ducts or tear sac."], "dacryolith": ["A concretion in the tear ducts or tear sac."], "dacryolithiasis": ["The formation and presence of concretions in the tear ducts and tear sac."], "disappoint": ["To bring or cause disappointment."], "disappointing": ["Failing to fulfill one's hopes or expectations."], "disarmament": ["The reduction or the abolition of the military forces and armaments of a nation, and of its capability to wage war."], "disaster area": ["An area that officially qualifies for emergency governmental aid as a result of a catastrophe, such as an earthquake or flood."], "daltonism": ["The inability to distinguish red from green."], "red-green color blindness": ["The inability to distinguish red from green."], "Daltonism": ["The inability to distinguish red from green."], "disastrous": ["Causing great distress or injury; bringing ruin."], "will to live": ["The will to stay alive and to cope with life."], "Damascene": ["An inhabitant of Damascus.", "Of, pertaining to or characteristic of the city of Damascus or its inhabitants."], "Damascus steel": ["Hard, flexible steel with wavy patterns that was popular in the Middle Ages especially for sword blades."], "damascene": ["Of or pertaining to the art of damascening.", "To inlay metal with other metal, typically gold and silver."], "damascening": ["The art of inlaying one metal, typically gold and silver, into another."], "dangerously": ["In a dangerous manner."], "Mason-Dixon Line": ["The traditional boundary between the the Northern United States and the Southern United States."], "Mason and Dixon's Line": ["The traditional boundary between the the Northern United States and the Southern United States."], "flaying": ["The removal of skin from the body of a human as a method of torture or execution.", "The removal of skin from the body of an animal as preparation for consumption of the meat beneath and/or use for the fur."], "skinning": ["The removal of skin from the body of an animal as preparation for consumption of the meat beneath and/or use for the fur."], "Standard Tibetan": ["A language of the Sino-Tibetan family, spoken in China, Bhutan, India and Nepal; official language in the Tibet Autonomous Region of China."], "Colognian": ["Local language being used in the city of Cologne in Germany and close about."], "disavowal": ["A denial of knowledge, relationship, and/or responsibility towards something or someone."], "Fulfulde": ["A macro language consisting of nine languages"], "Fula": ["A macro language consisting of nine languages"], "Fulani": ["A macro language consisting of nine languages"], "disbeliever": ["One who disbelieves, or refuses belief."], "unbeliever": ["One who disbelieves, or refuses belief."], "discernible": ["Capable of being discerned."], "distinguishable": ["Capable of being discerned."], "Gothenburg": ["The second largest city in Sweden after Stockholm. The city is located on the south west-coast."], "the damned": ["Theology: The souls condemned to eternal punishment."], "damned": ["Sentenced to eternal punishment in hell."], "reprobate": ["Sentenced to eternal punishment in hell."], "doomed": ["Sentenced to eternal punishment in hell.", "People who are destined to die soon."], "Daniel": ["Male first name of West Semitic origin."], "David": ["A male first name of West Semitic origin."], "discering": ["Having or revealing keen insight and good judgment."], "perspicacious": ["Having or revealing keen insight and good judgment."], "disciplinary": ["Of, relating to, or used for discipline."], "disclose": ["To make known something heretofore kept secret."], "Unhygienix": ["Character of the Asterix comic strips, fishmonger of the Gaulish village."], "anthropophagous": ["Eating other humans (speaking about a human)."], "cannibalistic": ["Eating other humans (speaking about a human)."], "man-eater": ["Human who eats other humans.", "A woman who is considered to be dangerously seductive."], "disclosure": ["The making known of a fact that had previously been hidden.", "The speech act of making something evident."], "discomfiture": ["A sudden, alarming amazement or dread that results in utter confusion."], "discomposure": ["The state of being discomposed."], "disconcerting": ["Causing an emotional disturbance."], "antiziganism": ["Hostility, prejudice or racism directed at the Roma people."], "Anti-Romanyism": ["Hostility, prejudice or racism directed at the Roma people."], "disconnect": ["To sever or interrupt a connection."], "Saint Mary": ["The mother of Jesus Christ."], "Holy Mary": ["The mother of Jesus Christ."], "Blessed Virgin Mary": ["The mother of Jesus Christ."], "Mother of God": ["The mother of Jesus Christ."], "Madonna": ["An image of Mary, mother of Jesus, in the shape of a painting, statue, icon, etc.", "The mother of Jesus Christ."], "Madonna and Child": ["An image of Mary and infant Jesus in the shape of a painting, sculpture, icon, etc."], "Madonna with Child": ["An image of Mary and infant Jesus in the shape of a painting, sculpture, icon, etc."], "Republic of Tatarstan": ["A republic of Russia located in Povolzhye."], "Uspantaneco": ["A Mayan language of the Greater Quichean group, spoken in the Uspant\u00e1n and Playa Grande Ixc\u00e1n municipalities, in the department El Quich\u00e9 of Guatemala."], "Uspanteca": ["A Mayan language of the Greater Quichean group, spoken in the Uspant\u00e1n and Playa Grande Ixc\u00e1n municipalities, in the department El Quich\u00e9 of Guatemala."], "Uspanteko": ["A Mayan language of the Greater Quichean group, spoken in the Uspant\u00e1n and Playa Grande Ixc\u00e1n municipalities, in the department El Quich\u00e9 of Guatemala."], "Uspantec": ["A Mayan language of the Greater Quichean group, spoken in the Uspant\u00e1n and Playa Grande Ixc\u00e1n municipalities, in the department El Quich\u00e9 of Guatemala."], "decant": ["To pour a liquid (especially wine) gently so as not to disturb the sediment."], "decalcomania": ["Decorative technique which consists of transferring pictures or designs on a specially prepared paper to materials like wood, pottery, glass etc."], "decalcification": ["The act or process of removing calcareous matter.", "The loss of calcium from bone, teeth, or soil."], "decalcify": ["To remove calcium or calcium compounds from.", "To lose calcium or calcium compounds."], "delimitable": ["Possible to delimit."], "democratically": ["In a democratic way."], "undemocratically": ["In an undemocratic way."], "Karen languages": ["A group of languages of the Tibeto-Burman group of the Sino-Tibetan family, spoken by the Karen people, in Myanmar."], "eunuch": ["A man whose testicles (and sometimes penis) have been cut off."], "castrate": ["A man whose testicles (and sometimes penis) have been cut off.", "To remove the testicles (and sometimes penis) of a male animal or to render the testicles unfunctional.", "To remove the ovaries of.", "To deprive of strength or vigor."], "penectomy": ["The surgical removal of the penis."], "disconsolate": ["Incapable of being consoled.", "Without consolation.", "Making despondent or depressive."], "discontentment": ["A longing for something better than the present situation."], "discontent": ["A longing for something better than the present situation.", "The fact or feeling of being displeased."], "dissatisfaction": ["A longing for something better than the present situation."], "discontented": ["Not content or satisfied.", "Feeling or exhibiting a lack of contentment or satisfaction."], "discord": ["Lack of concord or harmony between persons or things.", "(Music) An inharmonious combination of musical tones sounded together.", "Lack of harmony."], "discordant": ["Not being in accord.", "Disagreeable to the ear."], "dissonant": ["Disagreeable to the ear."], "discourage": ["Deprive of courage or hope."], "virginal": ["Of, pertaining to, characteristic of, or befitting a virgin."], "discourteous": ["Exhibiting no courtesy."], "deodorization": ["The act of removing an odour, especially an unpleasant one."], "dancing": ["The activity of making rhythmic movements to music."], "danburite": ["A crystalline mineral similar to topaz."], "Danielle": ["Female first name and female form of the male first name Daniel."], "Daniella": ["Female first name and female form of the male first name Daniel."], "dancer": ["A person who dances.", "A person who dances professionally."], "dangerousness": ["The quality of being dangerous."], "dynamically": ["In a dynamic way."], "dumortierite": ["A fibrous, variably colored aluminium boro-silicate mineral."], "duodecimal": ["A numeral system using twelve as its base.", "One of 12 equal parts of a whole.", "Of, relating to, or based on the number 12."], "base-12": ["A numeral system using twelve as its base."], "dozenal": ["A numeral system using twelve as its base."], "twelfth": ["One of 12 equal parts of a whole."], "fifth": ["One of 5 equal parts of a whole.", "The ordinal form of the cardinal number five."], "sixth": ["One of 6 equal parts of a whole.", "Which comes after the fifth."], "seventh": ["One of 7 equal parts of a whole.", "After the sixth and before the eighth in a sequence."], "eighth": ["One of 8 equal parts of a whole."], "ninth": ["One of 9 equal parts of a whole.", "Which comes after the eighth.", "A compound musical interval consisting of an octave plus a second."], "tenth": ["One of 10 equal parts of a whole.", "Which comes after the ninth."], "eleventh": ["One of 11 equal parts of a whole."], "thirteenth": ["One of 13 equal parts of a whole."], "fourteenth": ["One of 14 equal parts of a whole."], "fifteenth": ["One of 15 equal parts of a whole.", "The ordinal form of the number 15."], "sixteenth": ["One of 16 equal parts of a whole."], "criminologist": ["A person who is skilled in, or practices criminology."], "Mop\u00e1n Maya": ["A Mayan language of Belize and Guatemala."], "Mopan": ["A Mayan language of Belize and Guatemala."], "Yucateco": ["A Mayan language spoken in the Yucat\u00e1n Peninsula, northern Belize and parts of Guatemala."], "discourtesy": ["Lack of courtesy."], "Dorothy": ["A female first name."], "Dorothea": ["A female first name."], "disastrously": ["In a disastrous way."], "catastrophically": ["In a disastrous way."], "diplomatically": ["In a diplomatic way."], "desperately": ["In a desperate way."], "despairingly": ["In a desperate way."], "discoverer": ["One who discovers."], "dechlorinate": ["To remove chlorine from."], "disyllabic": ["Comprising two syllables."], "dissyllabic": ["Comprising two syllables."], "disyllable": ["A word consisting of two syllables."], "dissyllable": ["A word consisting of two syllables."], "monosyllabic": ["Consisting of only one syllable."], "monosyllable": ["A word consisting of two syllables."], "polysyllabic": ["Consisting of more than one syllable."], "monosyllabic language": ["A language in which most words consist of a single syllable."], "discredit": ["Loss or lack of belief or confidence."], "discretion": ["The quality of being discreet.", "Knowing how to avoid embarrassment or distress."], "discreet": ["Marked by prudence or modesty and wise self-restraint."], "disdain": ["A feeling of contempt for anything regarded as unworthy."], "disdainful": ["Expressive of disdain."], "disembark": ["To remove or unload cargo or passengers from a ship, aircraft, or other vehicle."], "Thai basil": ["A cultivar group of basil whcih has a more assertive taste than many other sweet basils and is often used in Thai and Vietnamese cuisine."], "trisyllabic": ["Consisting of three syllables."], "trisyllable": ["A word consisting of three syllables."], "Republic of Venice": ["A state originating from the Italien city of Venice which existed from the late 7th century AD until the year 1797."], "Most Serene Republic of Venice": ["A state originating from the Italien city of Venice which existed from the late 7th century AD until the year 1797."], "Venetian Republic": ["A state originating from the Italien city of Venice which existed from the late 7th century AD until the year 1797."], "Most Serene Republic": ["A state originating from the Italien city of Venice which existed from the late 7th century AD until the year 1797."], "thirtieth": ["One of thirty equal parts of a whole."], "neurotheology": ["Science that studies the correlations between neural activities and subjective experiences of spirituality."], "biotheology": ["Science that studies the correlations between neural activities and subjective experiences of spirituality."], "spiritual neuroscience": ["Science that studies the correlations between neural activities and subjective experiences of spirituality."], "twentieth": ["One of twenty equal parts of a whole."], "thirty-second": ["One of thirty-two equal parts of a whole."], "hundredth": ["One of a hundred equal parts of a whole."], "thousandth": ["One of a thousand equal parts of a whole."], "millionth": ["One of a million equal parts of a whole."], "Marvari": ["An Indo-Aryan language spoken in the Indian state of Rajasthan, and also in the neighboring state of Gujarat and in Eastern Pakistan."], "Marwadi": ["An Indo-Aryan language spoken in the Indian state of Rajasthan, and also in the neighboring state of Gujarat and in Eastern Pakistan."], "Marvadi": ["An Indo-Aryan language spoken in the Indian state of Rajasthan, and also in the neighboring state of Gujarat and in Eastern Pakistan."], "Jakaltek": ["A Mayan language spoken in Guatemala by the Jakaltek people in the department of Huehuetenango and the adjoining part of Chiapas in southern Mexico."], "dampen": ["To become moist.", "To make moist."], "Popt\u00ed": ["A Mayan language spoken in Guatemala by the Jakaltek people in the department of Huehuetenango and the adjoining part of Chiapas in southern Mexico."], "moisten": ["To become moist.", "To make moist."], "Mocho'": ["A Maya language spoken in the Mexican state of Chiapas."], "referral": ["The recommendation by a physician and/or health plan for a member to receive care from a different physician or facility."], "historical novel": ["A work of prose that is set among real historical events and figures but introduces fictional characters and elements."], "historical fiction": ["A work of prose that is set among real historical events and figures but introduces fictional characters and elements."], "Ligures": ["An ancient people who lived in a region from northern Italy into southern Gaul before they were assimilated by Celts and Romans."], "disfavour": ["The state of being out of favor."], "desfigure": ["To mar the appearance or beauty of."], "disfigurement": ["The state of being badly shaped or formed."], "medical referral": ["The recommendation by a physician and/or health plan for a member to receive care from a different physician or facility."], "secret treaty": ["A treaty between two or more nations that is kept secret."], "Komi Republic": ["A republic of Russia located west of the Urals."], "darken": ["To become dark or darker.", "To make dark or darker.", "To reduce the quantity of light or brightness of something."], "rot off": ["To disintegrate or come off due to decay."], "rot": ["To become overridden with bacteria and other infectious agents, hereby becoming unfit for consumption (referring to food).", "To corrupt, decompose organic matter."], "decompose": ["To become overridden with bacteria and other infectious agents, hereby becoming unfit for consumption (referring to food)."], "decay": ["To become overridden with bacteria and other infectious agents, hereby becoming unfit for consumption (referring to food)."], "rot away": ["To disintegrate or come off due to decay."], "nervous": ["Easily agitated or distressed.", "Causing or fraught with or showing anxiety."], "disgraceful": ["Bringing or deserving disgrace."], "decasyllable": ["A word or verse line of ten syllables."], "decasyllabic": ["Consisting of ten syllables."], "democratization": ["The process of making something conform to democratic norms."], "disgruntled": ["Not content or satisfied."], "disgusted": ["Filled with disgust."], "disharmony": ["Lack of harmony."], "dishcloth": ["A cloth for use in washing dishes."], "dishearten": ["Deprive of courage or hope."], "dishrag": ["A cloth for use in washing dishes."], "dishtowel": ["A towel for drying dishes."], "dish towel": ["A towel for drying dishes."], "tea towel": ["A towel for drying dishes."], "drinking chocolate": ["Chocolate in form of a bar that is melted in hot milk or water and then consumed as beverage."], "drawbridge": ["A movable bridge which can be lifted in order to block the entrance to a castle."], "damping": ["The reduction in the amplitude of oscillations by the dissipation of energy."], "decarbonize": ["To remove carbon from."], "decarburize": ["To remove carbon from."], "decoke": ["To remove carbon from."], "darning": ["The act of mending a hole in a garment with needle and thread."], "dishonesty": ["Lack of honesty or integrity."], "dishonour": ["Lack or loss of honor.", "To deprive of honor."], "dishwasher": ["A machine for washing dishes and kitchen utensils, automatically."], "dishwater": ["Water in which dishes are, or have been, washed."], "disillusion": ["Freeing from false belief or illusions.", "To free from an illusion.", "Realization of the truth, especially after a period of deceit."], "disenchantment": ["Freeing from false belief or illusions."], "disinclination": ["A certain degree of unwillingness."], "reluctance": ["A certain degree of unwillingness."], "disinclined": ["Lacking desire or willingness."], "unwilling": ["Lacking desire or willingness."], "averse": ["Having a dislike for.", "Lacking desire or willingness."], "loath": ["Lacking desire or willingness."], "disinfect": ["To free from infectious or contagious matter."], "Tyva Republic": ["A republic of Russia located in south central Siberia."], "Republic of Khakassia": ["A republic of Russia located in south central Siberia."], "megalomanic": ["A person afflicted with megalomania.", "Suffering from megalomania."], "megalomanical": ["Suffering from megalomania."], "disingenuous": ["Falsely or hypocritically ingenuous."], "disinheritance": ["The act by a donor that terminates the right of a person to inherit."], "Republic of Kalmykia": ["A republic of Russia located in Povolzhye."], "disinterest": ["Absence of interest."], "indifference": ["Absence of interest."], "fruit shake": ["Fruit pulp mixed with water or milk and sugar in a blender."], "fruit juice shake": ["Fruit pulp mixed with water or milk and sugar in a blender."], "Front": ["A municipality in the Province of Turin in the Italian region Piedmont, located about 25 km north of Turin."], "dislike": ["A feeling of aversion or antipathy.", "To have or feel a dislike or distaste for."], "dismantle": ["To disassemble or pull down."], "dismay": ["To convince not to try or do.", "Loss of hope."], "dismayed": ["Struck with fear, dread, or consternation."], "Khmer Rouge": ["A communist political party and guerilla army which ruled Cambodia (renamed Democratic Kampuchea) from 1975 to 1979."], "flawless": ["Without fault or shortcomings."], "paddy farmer": ["A farmer who cultivates rice."], "chlorinate": ["To add chlorine to."], "perchlorinate": ["To add the maximum amount of chlorine to."], "disobedience": ["Neglect or refusal to obey."], "disobey": ["To neglect or refuse to obey."], "chlorinated": ["Charged with chlorine."], "perchlorinated": ["Charged with the maximum amount of chlorine."], "geld": ["To remove the testicles (and sometimes penis) of a male animal or to render the testicles unfunctional."], "emasculate": ["To remove the testicles (and sometimes penis) of a male animal or to render the testicles unfunctional.", "To deprive of strength or vigor.", "Having unsuitable feminine qualities."], "desex": ["To remove the testicles (and sometimes penis) of a male animal or to render the testicles unfunctional."], "unsex": ["To remove the testicles (and sometimes penis) of a male animal or to render the testicles unfunctional."], "caponize": ["To remove the reproductive organs of a rooster."], "caponization": ["The removal of the reproductive organs of a rooster."], "Agilolfings": ["The first dynasty of Bavarian dukes which ruled from the 6th until the 8th century."], "Agilolfingian": ["Of or pertaining to the Agilolfings."], "cassata": ["Traditional cake of Sicily which consists of ricotta cheese, sponge cake, candied fruit and icing."], "frustration": ["An emotional response to circumstances where one is obstructed from arriving at a goal.", "A thing that frustrates."], "convoluted": ["Highly complex or intricate and occasionally devious.", "Rolled longitudinally upon itself."], "disordered": ["Lacking organization or in confusion."], "disorderly": ["Characterized by disorder."], "disorganized": ["Lacking order or methodical arrangement or function."], "disorganised": ["Lacking order or methodical arrangement or function."], "misread": ["To read inaccurately or wrongly.", "To fail to understand or interpret the meaning of words or behaviour correctly."], "misinterpret": ["To fail to understand or interpret the meaning of words or behaviour correctly."], "misunderstand": ["To fail to understand or interpret the meaning of words or behaviour correctly."], "misconstrue": ["To fail to understand or interpret the meaning of words or behaviour correctly."], "misapprehend": ["To fail to understand or interpret the meaning of words or behaviour correctly."], "misconceive": ["To fail to understand or interpret the meaning of words or behaviour correctly."], "decury": ["In the Roman military, a squad of ten men, lead by a decurio."], "decurio": ["In Roman military, the leader of a squad of ten men (decury)."], "disparity": ["The state of being unequal."], "dispel": ["Force to go away."], "dispensable": ["Able to be done without."], "expendable": ["Able to be done without."], "unessential": ["Able to be done without."], "disforestation": ["The removal of forest and undergrowth to increase the surface of arable land or to use the timber for construction or industrial purposes."], "disillusionment": ["Freeing from false belief or illusions."], "dryness": ["The state of being dry, the lack of water or liquid."], "aridness": ["The state of being dry, the lack of water or liquid."], "drouth": ["A period of abnormally dry weather sufficiently prolonged so that the lack of water causes a serious hydrologic imbalance (such as crop damage, water supply shortage) in the affected area."], "dispirit": ["To destroy somebody's confidence or happiness; to humiliate."], "dispiriting": ["Making despondent or depressive."], "modern period": ["In European and Western history, the period that succeeded the Middle Ages (which ended approximately 1500 AD)."], "modern era": ["In European and Western history, the period that succeeded the Middle Ages (which ended approximately 1500 AD)."], "modern times": ["In European and Western history, the period that succeeded the Middle Ages (which ended approximately 1500 AD)."], "displace": ["To cause to move to a new place."], "smartphone": ["A mobile phone offering advanced capabilities, often with PC-like functionality."], "accelerometer": ["A device that measures the acceleration it experiences relative to freefall."], "touchscreen": ["A display which can detect the presence and location of a touch within the display area."], "camera phone": ["A mobile phone which is able to capture either still photographs or motion video."], "Windows Mobile": ["A compact operating system combined with a suite of basic applications for mobile devices based on the Microsoft Win32 API."], "Android": ["A software platform and operating system for mobile devices, based on the Linux kernel, developed by Google and later the Open Handset Alliance."], "Merovingians": ["Salian Frankish royal dynasty that ruled the Franks from the 5th century until 751."], "Merovings": ["Salian Frankish royal dynasty that ruled the Franks from the 5th century until 751."], "Merovingian": ["Of or pertaining to the Merovingians."], "Amarula": ["South African cream liqueur made with sugar, cream and the fruit of the African Marula tree (Sclerocarya birrea)."], "cream liqueur": ["A liqueur which includes cream among other ingredients."], "cr\u00e8me liqueur": ["A liqueur that contains a great deal of additional sugar and has a near-syrup consistency."], "displease": ["To be unpleasant."], "displeased": ["Not content or satisfied."], "displeasing": ["Causing displeasure or dissatisfaction.", "Unpleasant, offensive, or causing dislike."], "displeasure": ["The fact or feeling of being displeased."], "disport": ["To amuse oneself in a light, frolicsome manner."], "disposable": ["An item that can be disposed of after it has been used.", "Designed to be disposed of after use."], "throwaway": ["An item that can be disposed of after it has been used."], "nonreturnable": ["An item that can be disposed of after it has been used."], "not reusable": ["An item that can be disposed of after it has been used."], "disproportion": ["Something out of proportion."], "Hooverville": ["Shanty town built by homeless people on the outskirts of cities in America during the Great Depression."], "tent city": ["Temporary housing made using tents."], "disproportionate": ["Out of proportion, as in size, shape, or amount."], "disputable": ["Capable of being disproved."], "questionable": ["Capable of being disproved."], "disputation": ["The act of disputing."], "disqualification": ["The act of disqualifying."], "Republic of Ingushetia": ["A republic of Russia located in the North Caucasus."], "menstruate": ["To undergo menstruation."], "menstruation": ["The period in the menstrual cycle when the endometrium is shed when conception did not take place."], "menses": ["The period in the menstrual cycle when the endometrium is shed when conception did not take place."], "disqualify": ["To put out of a competition for breaking rules."], "disquiet": ["To disturb in mind or make uneasy or cause to be worried or alarmed.", "Lack of calm, peace, or ease.", "To deprive of peace or rest."], "uneasiness": ["Lack of calm, peace, or ease."], "disturbing": ["Causing anxiety or uneasiness."], "disregard": ["To pay no attention or heed to."], "disreputable": ["Having or causing a bad reputation."], "discreditable": ["Having or causing a bad reputation."], "menorrhea": ["The period in the menstrual cycle when the endometrium is shed when conception did not take place."], "menorrhoea": ["The period in the menstrual cycle when the endometrium is shed when conception did not take place."], "menstrual period": ["The period in the menstrual cycle when the endometrium is shed when conception did not take place."], "menarche": ["The first menstrual period of a girl which occurs during puberty."], "spermarche": ["The beginning of production of sperm in the testes of an adolescent boy."], "ejacularche": ["The first ejaculation of sperm of an adolescent boy."], "thelarche": ["The beginning of the development of the breast which usually occurs at the start of puberty in girls."], "menstrual": ["Of or pertaining to menstruation."], "premenstrual": ["Of or relating to or occurring during the period just before menstruation."], "disrepute": ["Loss or lack of belief or confidence."], "dissatisfied": ["Feeling or exhibiting a lack of contentment or satisfaction."], "dissect": ["To cut apart or separate tissue, especially for anatomical study."], "dissection": ["Separation and isolation of tissues for surgical purposes, or for the analysis or study of their structures."], "dissemble": ["To conceal the truth or real nature of.", "To speak or behave hypocritically, unnaturally or affectedly."], "month-long": ["Lasting for a month."], "monthlong": ["Lasting for a month."], "monthly": ["Lasting for a month.", "Occurring or appearing once a month.", "Once a month; every month.", "A magazine that is published once a month."], "dissembler": ["Someone who dissembles."], "phoney": ["Someone who dissembles."], "pretender": ["Someone who dissembles."], "monthlies": ["The period in the menstrual cycle when the endometrium is shed when conception did not take place."], "Belhare": ["A Kiranti language spoken in Eastern Nepal."], "cow-eyed": ["Having eyes that resemble those of a cow."], "dissension": ["Lack of concord or harmony between persons or things."], "dissidence": ["Lack of concord or harmony between persons or things."], "dissimilar": ["Not the same."], "dissimilarity": ["The state of being unequal."], "dissimilitude": ["The state of being unequal."], "inequality": ["The state of being unequal."], "bimonthly": ["Occurring every two months.", "Occurring twice a month.", "Every two months.", "Twice a month.", "A publication that appears twice a month, that is every two weeks.", "A publication that appears every two months."], "bi-monthly": ["Occurring every two months.", "Occurring twice a month.", "Every two months.", "Twice a month.", "A publication that appears twice a month, that is every two weeks.", "A publication that appears every two months."], "semimonthly": ["Occurring twice a month.", "Twice a month.", "A publication that appears twice a month, that is every two weeks."], "semi-monthly": ["Occurring twice a month.", "Twice a month.", "A publication that appears twice a month, that is every two weeks."], "biweekly": ["A publication that appears twice a month, that is every two weeks."], "fortnightly": ["A publication that appears twice a month, that is every two weeks."], "bi-weekly": ["A publication that appears twice a month, that is every two weeks."], "awaken": ["To stop sleeping.", "To make someone stop sleeping."], "waken": ["To stop sleeping.", "To make someone stop sleeping."], "wake up": ["To stop sleeping.", "To make someone stop sleeping."], "rouse": ["To stop sleeping.", "To make someone stop sleeping."], "arouse": ["To stop sleeping.", "To make someone stop sleeping."], "severely disabled": ["Having a severe disability."], "severely handicapped": ["Having a severe disability."], "severely disabled person": ["Someone who has a severe disability."], "severely handicapped person": ["Someone who has a severe disability."], "yearlong": ["Lasting one year."], "manipulative": ["Able to influence and control others to one's own advantage."], "unsuccessfulness": ["Lack of success."], "dissenter": ["One who differs in opinion, or declares his disagreement."], "dissertation": ["A formal, usually lengthy, systematic discourse on some subject."], "dissimulate": ["To speak or behave hypocritically, unnaturally or affectedly."], "feign": ["To act as if something is true.", "To make an appearance of."], "rancid": ["Having the disagreeable odor or taste of decomposing oils or fats."], "dissolvent": ["A liquid substance capable of dissolving other substances."], "dissonance": ["(Music) An inharmonious combination of musical tones sounded together."], "pleasure": ["Enjoyable feeling limited in time caused by a particular event or action."], "distaste": ["A feeling of strong dislike or hostility.", "Natural and unrational aversion for someone or something."], "distasteful": ["Unpleasant, offensive, or causing dislike.", "Unpleasant to the taste."], "unpalatable": ["Unpleasant to the taste."], "distension": ["The act of expanding by pressure from within."], "distention": ["The act of expanding by pressure from within."], "scintilla": ["A small or barely detectable amount."], "iota": ["A small or barely detectable amount."], "jot": ["A small or barely detectable amount."], "whit": ["A small or barely detectable amount."], "Republic of Bashkortostan": ["A republic of Russia located in the Urals."], "Bashkiria": ["A republic of Russia located in the Urals."], "Republic of Bashkiria": ["A republic of Russia located in the Urals."], "distillery": ["A place or establishment where distilling, esp. the distilling of liquors, is done."], "distinguished": ["Standing above others in character or attainment or reputation."], "epistaxis": ["Bleeding of the nose."], "peter out": ["To diminish gradually and stop."], "taper off": ["To diminish gradually and stop."], "fizzle out": ["To diminish gradually and stop."], "bilge-water": ["Water that builds up in the bottom of a ship's bilge."], "distress signal": ["An internationally recognized signal sent out by a ship or plane indicating that help is needed."], "abruptly": ["In a sudden and unexpected way."], "all of a sudden": ["In a sudden and unexpected way."], "out of the blue": ["In a sudden and unexpected way."], "distress": ["An unpleasant, usually localised physical sensation that is often the result of an injury, disease or other ailment."], "cash desk": ["A counter where one can pay."], "distressed": ["Affected with or suffering from distress."], "distressing": ["Causing anxiety or uneasiness.", "Causing distress or worry or anxiety."], "distributive": ["Characterized by or pertaining to distribution."], "distributor": ["One that markets or sells merchandise, especially a wholesaler.", "Electrical device that distributes voltage to the spark plugs of a gasoline engine in the order of the firing sequence."], "gardening": ["The act of cultivating or tending a garden."], "vigilante justice": ["The (unlawful) retaliation for an injustice that the affected person carries out himself."], "self-administered justice": ["The (unlawful) retaliation for an injustice that the affected person carries out himself."], "comb over": ["A hairstyle worn by bald or partially bald men that consists of draping the remaining hair on the head so as to conceal the hairless spots."], "combover": ["A hairstyle worn by bald or partially bald men that consists of draping the remaining hair on the head so as to conceal the hairless spots."], "carbinol": ["A colourless, toxic, inflammable liquid. The simplest aliphatic alcohol, CH3OH."], "wood alcohol": ["A colourless, toxic, inflammable liquid. The simplest aliphatic alcohol, CH3OH."], "wood naphtha": ["A colourless, toxic, inflammable liquid. The simplest aliphatic alcohol, CH3OH."], "wood spirit": ["A colourless, toxic, inflammable liquid. The simplest aliphatic alcohol, CH3OH."], "methyl alcohol": ["A colourless, toxic, inflammable liquid. The simplest aliphatic alcohol, CH3OH."], "pure alcohol": ["A colorless liquid, miscible with water, used as a reagent and solvent."], "drinking alcohol": ["A colorless liquid, miscible with water, used as a reagent and solvent."], "upriver": ["Toward or near the source of a river."], "downriver": ["Toward or near the mouth of a river."], "flatulence": ["The emission of digestive gases through the anus."], "distrustful": ["Feeling or showing doubt."], "disturb": ["To have an unwanted negative influence on someone, to be distractive to or for someone, impress someone or something in a troublesome or uneasy way.", "To involve oneself causing disturbance."], "disturbance": ["Something that disturbs."], "disturbed": ["Showing symptoms of mental illness."], "disunit": ["To sever the union of."], "disjoin": ["To sever the union of."], "disunity": ["Difference of opinion."], "Carlovingians": ["Frankish noble family which ruled the Franks from 751 until 987."], "Carolings": ["Frankish noble family which ruled the Franks from 751 until 987."], "Karlings": ["Frankish noble family which ruled the Franks from 751 until 987."], "Carolingians": ["Frankish noble family which ruled the Franks from 751 until 987."], "Carolingian": ["Of or pertaining to the Carolingians."], "nasogastric tube": ["Tube that is inserted through a patient's nose, throat and esophagus in order to put food directly into the stomach."], "NG tube": ["Tube that is inserted through a patient's nose, throat and esophagus in order to put food directly into the stomach."], "Mari El Republic": ["A republic of Russia located in Volga-Vyatka."], "divergence": ["The act, fact, or amount of diverging."], "divergency": ["The act, fact, or amount of diverging."], "Aramaic alphabet": ["A consonantal alphabet used for writing Aramaic that was adapted from the Phoenician alphabet in the 8th century BCE."], "Aramaeans": ["West Semitic semi-nomadic and pastoralist people who lived in upper Mesopotamia and Syria."], "Arameans": ["West Semitic semi-nomadic and pastoralist people who lived in upper Mesopotamia and Syria."], "diverse": ["Of a different kind, form, character, etc."], "Altai Republic": ["A republic of Russia located in West Siberia."], "diviner": ["A person who divines."], "soothsayer": ["A person who divines."], "prophet": ["A person who divines."], "parasol": ["A small handheld umbrella used as protection from the sun, especially by women."], "ASL": ["The dominant sign language of the Deaf community in the United States, in the English-speaking parts of Canada, and in parts of Mexico."], "jemmy": ["A tool consisting of a metal bar with a single curved end and flattened points, often with a small fissure on the curved end for removing nails."], "nail bar": ["A tool consisting of a metal bar with a single curved end and flattened points, often with a small fissure on the curved end for removing nails."], "pry bar": ["A tool consisting of a metal bar with a single curved end and flattened points, often with a small fissure on the curved end for removing nails."], "MSL": ["A sign language, derived from British Sign Language, that was formerly used in Nova Scotia, New Brunswick, and Prince Edward Island, Canada."], "BKSL": ["A sign language used by about 1,000 people of a rice-farming community in remote areas of Isan (northeastern Thailand)."], "Rapanui": ["An Eastern Polynesian language spoken by the Rapanui, the inhabitants of Easter Island.", "An inhabitant of Easter Island.", "Relating to Easter Island, its inhabitants or their culture."], "Urub\u00fa Sign Language": ["A sign language used by a small community of Indigenous Brazilians in the state of Maranh\u00e3o."], "Official Aramaic": ["An ancient Afro-Asiatic language spoken in the Near East between about 700 BCE and 300 BCE."], "Imperial Aramaic": ["An ancient Afro-Asiatic language spoken in the Near East between about 700 BCE and 300 BCE."], "diving bell": ["A diving apparatus for underwater work."], "wet bell": ["A diving apparatus for underwater work."], "diving board": ["An often flexible board from which a dive may be executed."], "springboard": ["An often flexible board from which a dive may be executed."], "divisor": ["A number by which another number, the dividend, is divided."], "divulgence": ["An enlightening or astonishing disclosure."], "divvy": ["To divide an object, area or space into sections or parts."], "dizzy": ["A state in which a group of people is continuously making silly jokes, that can nevertheless lead to laughing fits as a reaction. Under the right circumstances, the state can maintain itself or be induced in others contageously. The use of weed (Cannabis sativa) promotes the state in some individuals, but it can also be induced by a joke or reference to an (earlier) funny event.", "Having a sensation of whirling and a tendency to fall."], "docility": ["The trait of being agreeably submissive and manageable."], "docker": ["A laborer who loads and unloads vessels in a port."], "dockhand": ["A laborer who loads and unloads vessels in a port."], "dockworker": ["A laborer who loads and unloads vessels in a port."], "Palatinate German": ["A language of Germany."], "Rotwelsch": ["A language based on German with Yiddish and Romani influences that was spoken especially by delinquents, travelling craftspeople and vagrants."], "thieves' cant": ["A secret language formerly used by thieves, beggars and hustlers of various kinds in Great Britain and a few other English-speaking countries."], "cryptolect": ["A secret or private language used by various groups to prevent outsiders from understanding their conversations."], "cant": ["Language that is higly informal, considered below what is considered standard educated speech, and consisting of new words, old words used with new meanings, or words considered taboo by people of a higher social status.", "Terminology which is especially defined in relationship to a specific activity, profession, group, or event.", "A secret or private language used by various groups to prevent outsiders from understanding their conversations."], "doctorate": ["One of the highest earned academic degrees conferred by a university."], "doctrinal": ["Of, pertaining to, or concerned with doctrine."], "dogged": ["Who persevers stubbornly."], "dogmatism": ["Arrogant, stubborn assertion of opinion or belief."], "dog-tired": ["Very tired."], "doing": ["Something done voluntarily by a person, and of such a nature that certain legal consequences attach to it."], "doleful": ["Feeling mentally uncomfortable because something is missing or wrong."], "dolorous": ["Feeling mentally uncomfortable because something is missing or wrong."], "doltish": ["Showing a lack of good sense, wisdom or forethought."], "domination": ["Control or power over another or others."], "domed": ["Having or resembling a dome."], "domineering": ["Inclined to rule arbitrarily or despotically."], "conlang": ["A language of which the phonology, grammar and/or vocabulary has been specifically devised by an individual or small group."], "planned language": ["A language of which the phonology, grammar and/or vocabulary has been specifically devised by an individual or small group."], "domino": ["An oblong piece of wood or plastic etc marked with spots with which the game of dominoes is played."], "doomsday": ["The day of the Last Judgment, at the end of the world."], "doorkeeper": ["A uniformed doorman."], "doorman": ["A uniformed doorman."], "doorway": ["An opening, or passage in a fence or wall; the entrance through which you enter or leave a room or building.", "The passage or opening into a building, room, etc., closed and opened by a door."], "Calypso": ["Natural satellite of the planet Saturn."], "draconian": ["Exceedingly harsh."], "drastic": ["Forceful, severe and having a wide effect."], "drawing pin": ["A nail with a large head."], "dressy": ["Showy or elegant in dress or appearance."], "dubiety": ["Challenge about the truth or accuracy of a matter."], "dubious": ["Subject to nonconcordant interpretations."], "dutitable": ["Subject to nonconcordant interpretations."], "dupery": ["The act or practice of deceiving."], "Old Aramaic": ["The version of Aramaic that was spoken until 700 BCE."], "Ancient Aramaic": ["The version of Aramaic that was spoken until 700 BCE."], "insomnia": ["Difficulty in going to sleep or getting enough sleep."], "dutiable": ["Of goods on which tax is to be paid."], "dutiful": ["Performing the duties expected or required of one."], "butter dish": ["A dish in which butter or margarine is kept."], "dynamism": ["The forcefulness of an energetic personality."], "dynamite": ["A type of powerful explosive."], "goose bumps": ["Raised skin, usually on the neck or arms caused by cold, excitement, or fear."], "dysentery": ["An infectious disease with severe diarrhoea."], "dysfunctional": ["Impaired in function, especially of a bodily system or organ."], "eagle-eyed": ["A keen eyesight."], "clear-sighted": ["A keen eyesight."], "hawk-eyed": ["A keen eyesight."], "sharp-eyed": ["A keen eyesight."], "copycat": ["One who imitates others' work or behaviour without adding ingenuity."], "copy cat": ["One who imitates others' work or behaviour without adding ingenuity."], "ikebana": ["The Japanese art of flower arrangement, also known as kad\u014d."], "hirsutism": ["Excess hair in females and children with an adult male pattern of distribution."], "origami": ["The traditional Japanese art of paper folding."], "orbits around": ["Indicates that a moon moves around a planet."], "crotales": ["Percussion instruments consisting of small, tuned bronze or brass disks, each is about 4 inches in diameter with a flat top surface and a nipple on the base."], "ear mite": ["A mite that lives in the ears of animals."], "scabies": ["An infestation of parasitic mites, Sarcoptes scabiei, causing intense itching caused by the mites burrowing into the skin of humans and other animals."], "hijack": ["To take arbitrarily or by force, possibly associated with the kidnapping of its occupants."], "eagle owl": ["Any of several large owls of the genus Bubo, having prominent tufts of feathers on each side of the head."], "earner": ["Someone who earn wages in return for their labor."], "earnest": ["Serious in intention, purpose, or effort."], "earphones": ["A sound receiver that fits in or over the ear, as of a radio or telephone."], "earplug": ["A plug of soft, pliable material inserted into the opening of the outer ear, esp. to keep out water or noise."], "earshot": ["The distance within which a sound, voice, etc., can be heard."], "earreach": ["The distance within which a sound, voice, etc., can be heard."], "ear-splitting": ["Disagreeably loud or shrill."], "unmarriable": ["Not suitable for marriage."], "unmarriageable": ["Not suitable for marriage."], "Assyrian Neo-Aramaic": ["A modern Eastern Aramaic language spoken in a worldwide diaspora."], "Lishanid Noshan": ["A modern Jewish Aramaic language spoken mostly in Israel."], "Hula'ula": ["A modern Jewish Aramaic language spoken in Israel."], "Galigalu": ["A modern Jewish Aramaic language spoken mostly in Israel."], "Kurdit": ["A modern Jewish Aramaic language spoken mostly in Israel."], "earthy": ["Of or characteristic of this world."], "worldly": ["Of or characteristic of this world."], "skillet": ["Cooking utensil relatively flat, having a handle, used to cook food such as meat, vegetables or eggs, usually in oil or butter."], "frying pan": ["Cooking utensil relatively flat, having a handle, used to cook food such as meat, vegetables or eggs, usually in oil or butter."], "frying-pan": ["Cooking utensil relatively flat, having a handle, used to cook food such as meat, vegetables or eggs, usually in oil or butter."], "fry pan": ["Cooking utensil relatively flat, having a handle, used to cook food such as meat, vegetables or eggs, usually in oil or butter."], "frypan": ["Cooking utensil relatively flat, having a handle, used to cook food such as meat, vegetables or eggs, usually in oil or butter."], "fry-pan": ["Cooking utensil relatively flat, having a handle, used to cook food such as meat, vegetables or eggs, usually in oil or butter."], "earwax": ["A yellowish, waxlike secretion from certain glands in the external auditory canal."], "cerumen": ["A yellowish, waxlike secretion from certain glands in the external auditory canal."], "artificial cheese": ["A product that, unlike traditional cheese, isn't made only from milk and ripens for several months but is mixed from different ingredients, among other things milkfat is replaced by animal or vegetable fat."], "analogue cheese": ["A product that, unlike traditional cheese, isn't made only from milk and ripens for several months but is mixed from different ingredients, among other things milkfat is replaced by animal or vegetable fat."], "plant virus": ["Virus which is pathogenic to vascular plants"], "plant virology": ["The study of viruses which infect plants."], "animal virology": ["The study of viruses which infect animals."], "Hebraize": ["To use expressions or constructions distinctive of the Hebrew language.", "To convert into a Hebraic form."], "Hebraicize": ["To convert into a Hebraic form."], "Hebraism": ["A linguistic feature typical of the Hebrew language occurring especially in another language.", "A word in another language which is derived from Hebrew.", "The character, philosophy, principles, or practices distinctive of the Hebrew people."], "submicroscopic": ["Too small to be seen through an optical microscope."], "submicroscopical": ["Too small to be seen through an optical microscope."], "calypso": ["A type of music and dance that originated in the West Indies."], "reliquary": ["An artistically designed container for relics."], "monstrance": ["A vessel (usually made of gold or silver) in which the consecrated Host is exposed for adoration."], "ostensory": ["A vessel (usually made of gold or silver) in which the consecrated Host is exposed for adoration."], "philatory": ["A transparent reliquary designed to contain and exhibit the bones and relics of saints."], "chiasmus": ["A figure of speech which consists of an inversion of the word order in the second of two otherwise parallel phrases."], "gyrate": ["To position by moving an object around its axis."], "enormity": ["Anything that is especially big, bulky, heavy, long, huge, etc. which is often being recognized with astonishment or admiration."], "internal combustion engine": ["A type of combustion engine where the combustion takes place inside the engine."], "flue": ["A duct, pipe, or chimney for conveying exhaust gases from a fireplace, furnace, water heater, boiler, or generator to the outdoors. (Source: Wikipedia)"], "headphones": ["A pair of headphones meant to be worn on the head, such as those used with stereo installations."], "honeysuckle": ["A genus of climbing plants and shrubs, which occurs in Europe, China, Northeast of Asia and the United States."], "nettle": ["To make someone rather angry or impatient; to cause annoyance.", "The common name for between 30-45 species of flowering plants with a cosmopolitan though mainly temperate distribution. They are mostly herbaceous perennial plants, but some are annual and a few are shrubby."], "escalator": ["A motor-driven mechanical device consisting of a continuous loop of steps that automatically conveys people from one floor to another."], "stairs": ["A contiguous set of steps connecting two floors."], "tamarind": ["A tropical tree, native to Africa, including Sudan and parts of the Madagascar dry deciduous forests."], "crook of the arm": ["The inside of the elbow."], "epilator": ["Electrical device which removes hair by pulling it out of the roots."], "epilation": ["The removal of hair including the roots."], "depilation": ["The removal of the visible part of the hair, not including the part below the surface of the skin."], "pubic hair": ["Dense, coarse hair that grows on the male and female genital area beginning in puberty.", "A single hair growing in the pubic region."], "a thousand million": ["1,000,000,000 (10^9 = thousand millions)"], "electric power generating plant": ["A stationary plant containing apparatus for large-scale conversion of some form of energy (such as hydraulic, steam, chemical, or nuclear energy) into electrical energy."], "stench": ["An unpleasant smell."], "Cornwall": ["A county in England, a duchy of the United Kingdom, and one of the six Celtic nations."], "Job's news": ["Very bad news."], "evil tidings": ["Very bad news."], "midway": ["In the middle of a distance between two points."], "halfway": ["In the middle of a distance between two points."], "sleep disorder": ["Medical disorder of the sleep patterns of a person or animal. (Source: Wikipedia)"], "somnipathy": ["Medical disorder of the sleep patterns of a person or animal. (Source: Wikipedia)"], "St. Peter Port": ["The capital city of Guernsey."], "eatable": ["That can be eaten without harm, non-toxic to humans; suitable for consumption."], "esculent": ["That can be eaten without harm, non-toxic to humans; suitable for consumption."], "heart disease": ["Disease that affects the heart."], "cardiopathy": ["Disease that affects the heart."], "swine influenza": ["Acute and mortal infectious disease of the respiratory system in pigs (swines).", "Influenza-like illness in humans caused by an influenza A virus subtype H1N1 that seems to have mutated from the swine influenza virus, and can pass easily from humans to humans."], "swine flu": ["Acute and mortal infectious disease of the respiratory system in pigs (swines).", "Influenza-like illness in humans caused by an influenza A virus subtype H1N1 that seems to have mutated from the swine influenza virus, and can pass easily from humans to humans."], "agrobiotechnology": ["An advanced technology that allows plant breeders to make precise genetic changes to impart beneficial traits to crop plants."], "agrotechnology": ["A discipline concerned with developing and improving the means for providing food and fiber for mankind's needs.\\n(Source: MGH)"], "leukocyte": ["A cell of the immune system defending the body against infectious disease and foreign materials."], "white blood cell": ["A cell of the immune system defending the body against infectious disease and foreign materials."], "WBC": ["A cell of the immune system defending the body against infectious disease and foreign materials."], "leucocyte": ["A cell of the immune system defending the body against infectious disease and foreign materials."], "erythrocyte": ["The most common type of blood cell in vertebrates which serves to deliver oxygen to the body tissues via the blood."], "red blood cell": ["The most common type of blood cell in vertebrates which serves to deliver oxygen to the body tissues via the blood."], "RBC": ["The most common type of blood cell in vertebrates which serves to deliver oxygen to the body tissues via the blood."], "red blood corpuscle": ["The most common type of blood cell in vertebrates which serves to deliver oxygen to the body tissues via the blood."], "haematid": ["The most common type of blood cell in vertebrates which serves to deliver oxygen to the body tissues via the blood."], "erythropoiesis": ["The process by which red blood cells (erythrocytes) are produced."], "Black Death": ["A pandemic (thought to be caused by the bacterium Yersinia pestis) which ravaged Asia und Europe in the 14th century (peaking between 1347 and 1351) and is estimated to have killed 30-60% of Europe's population."], "Black Plague": ["A pandemic (thought to be caused by the bacterium Yersinia pestis) which ravaged Asia und Europe in the 14th century (peaking between 1347 and 1351) and is estimated to have killed 30-60% of Europe's population."], "bubonic plague": ["The best known manifestation of the plague which is caused by the bite of a flea infected with Yersinia pestis and leads to swollen and necrotic lymph nodes and finally death if untreated."], "Cornishman": ["A male person of Cornish ethnicity."], "Cornishwoman": ["A female person of Cornish ethnicity."], "septicemic plague": ["A manifestation of the plague that is caused by the bacterium Yersinia pestis entering the bloodstream and leads to death within 36 hours if untreated."], "septicaemic plague": ["A manifestation of the plague that is caused by the bacterium Yersinia pestis entering the bloodstream and leads to death within 36 hours if untreated."], "pneumonic plague": ["The least common form of the plague which occurs when Yersinia pestis is inhaled or as a secondary infection when septicemic plague spreads into lung tissue from the bloodstream."], "commit suicide": ["To end one's own life purposefully."], "kill oneself": ["To end one's own life purposefully."], "off oneself": ["To end one's own life purposefully."], "take one's own life": ["To end one's own life purposefully."], "ease": ["A state of tranquility, quiet, and harmony, e.g., a state free from civil disturbance.", "To make easy or easier.", "Relief from work or other activity or responsibility."], "easel": ["An upright frame, typically on three legs, for displaying or supporting something, such as an artist\u2019s canvas."], "eating disorder": ["A disorder of the normal eating routine."], "eavesdropper": ["A secret listener to private conversations."], "eve": ["The evening before a certain day.", "The day before."], "planetary wind": ["Air movements within the Earth's atmospheric circulation; also called planetary winds. Two main components are recognized: first, the latitudinal meridional component due to the Coriolis force (a deflecting motion or force discussed by G.G. de Coriolis in 1835. The rotation of the Earth causes a body moving across its surface to be deflected to the right in the N hemisphere and to the left in the S hemisphere); and secondly, the longitudinal component and the vertical movement, resulting largely from varying pressure distributions due to differential heating and cooling of the Earth's surface.\\n(Source: WHIT)"], "board of trustees": ["All representatives in a company that have the assignment to administrate the company itself."], "directorate": ["An agency usually headed by a director, often a subdivision of a major government department."], "executive board": ["All representatives in a company that have the assignment to administrate the company itself."], "board of directors": ["All representatives in a company that have the assignment to administrate the company itself."], "board of governors": ["All representatives in a company that have the assignment to administrate the company itself."], "board of managers": ["All representatives in a company that have the assignment to administrate the company itself."], "Ebola fever": ["A severe and often fatal disease in humans and nonhuman primates (monkeys and chimpanzees) caused by the Ebola virus."], "ebonite": ["A hard nonresilient rubber formed by vulcanizing natural rubber."], "ebony": ["Any of various tropical Asian or African trees of the genus Diospyros.", "A type of wood, usually black and almost as heavy and hard as stone.", "A dark, deep, lustrous black.", "Made of or suggesting ebony.", "Black in color."], "ebon": ["A dark, deep, lustrous black."], "ebullience": ["Overflowing with eager enjoyment or approval."], "exuberance": ["An overflowing fullness.", "Overflowing with eager enjoyment or approval."], "ebullient": ["Joyously unrestrained."], "eccentric": ["A person who has an unusual, peculiar, or odd personality, or behaviour pattern.", "Deviating from the recognized or customary character, practice, etc.", "Not having a common center."], "air out": ["To expose to fresh air.", "To expose to cool or cold air so as to cool or freshen."], "gilded cage": ["The situation of living in luxury but having no freedom."], "Diola-Fogny": ["A language of Senegal, Gambia and Guinea-Bissau."], "high caloric": ["Containing a high amount of calories."], "high-caloric": ["Containing a high amount of calories."], "mien": ["An expression or appearance indicating a certain state of mind."], "aluminium oxide": ["A natural or synthetic oxide of aluminum widely distributed in nature, often found as a constituent part of clays, feldspars, micas and other minerals, and as a major component of bauxite."], "aluminium trioxide": ["A natural or synthetic oxide of aluminum widely distributed in nature, often found as a constituent part of clays, feldspars, micas and other minerals, and as a major component of bauxite."], "eccentricity": ["An oddity or peculiarity, as of conduct, or the quality of being eccentric.", "The distance between the centers of two cylindrical objects one of which surrounds the other.", "Geometry: measure of the deviation of a conic section from circular shape."], "ecclesiastic": ["Of the church or clergy."], "ecclesiastical": ["Of the church or clergy."], "echelon": ["A level of responsibility or authority in a hierarchy."], "echo": ["A repetition of sound produced by the reflection of sound waves from a wall, mountain, or other obstructing surface."], "ecologist": ["A scientist who studies ecology.", "One who advocates for the protection of the biosphere from misuse from human activity through such measures as ecosystem protection, waste reduction and pollution prevention."], "educate": ["To give an education or training to.", "To teach by training."], "faun": ["A mythical creature with the lower body of a goat and the upper body of a man."], "ecological": ["Not or minimally harmful to the environment."], "economize": ["To spend goods or money more carefully."], "ecumenical": ["Pertaining to the whole Christian church."], "edgy": ["Easily irritated."], "edifice": ["A building, esp. one of large size or imposing appearance."], "educational": ["Intended for purposes of instruction, for teaching."], "educationalist": ["A specialist in the theory and methods of education."], "educationist": ["A specialist in the theory and methods of education."], "educative": ["Serving to educate."], "educator": ["A person who educates, esp. a teacher, principal, or other person involved in planning or directing education."], "efface": ["To remove markings or information.", "To rub or wipe out."], "white tea": ["Unoxidized tea which contains buds and young tea leaves."], "black tea": ["Tea made of the oxidized leaves of Camellia sinensis which tastes stronger and contains more caffeine than other, less oxidized teas."], "demented": ["Suffering from dementia."], "syzygy": ["Astronomy, astrology: The alignment of three or more celestial bodies in the same gravitational system along a plane.", "Zoology: The pairing of chromosomes in meiosis."], "effectual": ["Producing a decided or decisive effect."], "effectuate": ["To effect or execute something."], "effeminacy": ["The state or quality of being effeminate."], "effeminate": ["Of a man: Having qualities that are traditionally associated with women.", "Having unsuitable feminine qualities."], "Mlahs\u00f4": ["A modern West Syriac language and dialect of Aramaic that was traditionally spoken in eastern Turkey and north-eastern Syria but is now extinct."], "Lishana Deni": ["A modern Jewish Aramaic language originally spoken in the town of Zakho and its surrounding villages in northern Iraq but now mostly in Israel."], "Jewish Zakho Neo-Aramaic": ["A modern Jewish Aramaic language originally spoken in the town of Zakho and its surrounding villages in northern Iraq but now mostly in Israel."], "Lishan Hozaye": ["A modern Jewish Aramaic language originally spoken in the town of Zakho and its surrounding villages in northern Iraq but now mostly in Israel."], "Classical Mandaic": ["A Semitic language in the Eastern Aramaic branch that is used as liturgical language in the Mandaean religion."], "Neo-Mandaic": ["A Semitic language of the Eastern Aramaic sub-family which developed from Classical Mandaic and is spoken by a small community in Iran."], "Mandaic": ["A Semitic language of the Eastern Aramaic sub-family which developed from Classical Mandaic and is spoken by a small community in Iran."], "Mandaean": ["A Semitic language of the Eastern Aramaic sub-family which developed from Classical Mandaic and is spoken by a small community in Iran."], "Modern Mandaic": ["A Semitic language of the Eastern Aramaic sub-family which developed from Classical Mandaic and is spoken by a small community in Iran."], "effortless": ["Requiring or involving no effort."], "effrontery": ["Shameless boldness."], "effusive": ["Excessive in emotional expression."], "eggshell": ["The shell or exterior covering of an egg.", "A pale yellowish-white color."], "ego": ["The \u201cI\u201d of any person."], "egocentric": ["Interested in oneself only."], "egoism": ["The tendency to think of self and self-interest."], "egotism": ["The tendency to think of self and self-interest."], "selfishness": ["The tendency to think of self and self-interest."], "egoistic": ["Pertaining to or of the nature of egoism."], "egotistic": ["Pertaining to or of the nature of egoism.", "Characteristic of false pride."], "egregious": ["Extraordinary in some bad way."], "scandalous": ["Extraordinary in some bad way."], "oversalt": ["To spoil by adding too much salt."], "oversalted": ["Seasoned with too much salt."], "liturgical language": ["Language that is used in church service of a religion but is not spoken in daily life."], "sacred language": ["A language that is used only in religious context but not in everyday life."], "death day": ["The day a person has died."], "obit": ["The day a person has died."], "angel of death": ["An angel that brings death to people or accompanies them to the afterlife or receives them there.", "A type of criminal offender who is usually employed as a caregiver and intentionally harms or kills persons under their care."], "eider": ["Any species of sea duck of the genera Polysticta or Somateria, which lines its nest with fine down taken from its own body."], "eider duck": ["Any species of sea duck of the genera Polysticta or Somateria, which lines its nest with fine down taken from its own body."], "salted": ["Preserved in salt."], "eiderdown": ["The down of the eider duck, used as stuffing for quilts and pillows."], "lifelong": ["Lasting a lifetime."], "eject": ["To force a person or persons to leave a place.", "To throw out violently.", "To come out of a machine."], "throw out": ["To force a person or persons to leave a place.", "To Oust or expel, especially people."], "elated": ["Both very happy and proud."], "elation": ["A feeling or state of great joy or pride."], "electrical": ["Utilising electricity.", "By means of electricity"], "electrify": ["To equip for the use of electric power, as a railroad."], "electrocardiogram": ["Measurement and interpretation of electrical manifestations of heart activity."], "electrocute": ["To kill or injure a person etc accidentally by electricity."], "electrode": ["A conductor through which a current of electricity enters or leaves a battery etc."], "electromagnet": ["A device, consisting of an iron or steel core that is magnetized by electric current in a coil that surrounds it."], "elevate": ["To raise something to a higher position.", "To promote someone to a higher rank."], "mozzarella stick": ["A rectangular or cylindrical piece of mozzarella cheese that is battered or breaded and then deep-fried."], "mozz stick": ["A rectangular or cylindrical piece of mozzarella cheese that is battered or breaded and then deep-fried."], "mozza stick": ["A rectangular or cylindrical piece of mozzarella cheese that is battered or breaded and then deep-fried."], "macaroni and cheese": ["A dish popular in the US and Canada which consists of cooked macaroni and a cheese sauce prepared with cheddar."], "macaroni cheese": ["A dish popular in the US and Canada which consists of cooked macaroni and a cheese sauce prepared with cheddar."], "mac 'n' cheese": ["A dish popular in the US and Canada which consists of cooked macaroni and a cheese sauce prepared with cheddar."], "antiapoptotic": ["Acting to prevent apoptosis."], "eliminate": ["To remove or get rid of, as being in some way undesirable.", "To kill in large numbers.", "To remove from a contest or race."], "Elizabethan": ["Of or pertaining to the reign of Elizabeth I, queen of England, or to her times."], "elliptic": ["Pertaining to or having the form of an ellipse."], "elliptical": ["Pertaining to or having the form of an ellipse."], "manlike": ["Having the form of a man.", "Possessing qualities befitting a man."], "Mandaic alphabet": ["An alphabet based on the Aramaic alphabet which is used for writing the Mandaic language."], "Samaritan Aramaic": ["A dialect of Aramaic used by the Samaritans that ceased to be spoken actively some time between the 10th and the 12th centuries and is only a liturgical language today."], "Samaritan": ["A dialect of Aramaic used by the Samaritans that ceased to be spoken actively some time between the 10th and the 12th centuries and is only a liturgical language today.", "A descendant of Biblical Hebrew that is used as liturgical language by Samaritans today."], "elocution": ["The art of speaking clearly and effectively."], "elongate": ["To draw out to greater length.", "To increase in length."], "lengthen": ["To draw out to greater length."], "elongation": ["Something that is elongated.", "An addition to the length of something.", "The act of lengthening something."], "eloquent": ["Characterized by persuasive, powerful discourse."], "elsewhere": ["In some other place."], "Samaritan Hebrew": ["A descendant of Biblical Hebrew that is used as liturgical language by Samaritans today."], "emaciated": ["Marked by emaciation especially from disease, hunger or cold."], "emanate": ["To come or send forth, as from a source."], "emancipate": ["To set free from the power of another."], "liberate": ["To set free from the power of another."], "embalm": ["To treat a corpse with preservatives in order to prevent decomposition."], "embellish": ["To make more attractive by adding ornament, colour, etc.", "To make more beautiful.", "To be beautiful to look at."], "decorate": ["To make more attractive by adding ornament, colour, etc.", "To be beautiful to look at."], "garnish": ["To make more attractive by adding ornament, colour, etc."], "embezzle": ["To appropriate fraudulently to one's own use, as property intrusted to one's care."], "diction": ["The manner in which something is expressed in words."], "anatids": ["A family of waterfowl, including ducks, geese, mergansers, pochards and swans, scientific name Anatidae, in the order Anseriformes."], "emblazon": ["To make more attractive by adding ornament, colour, etc."], "embitter": ["To make bitter and resentful."], "emblem": ["An object or a representation that functions as a symbol."], "emblematic": ["Pertaining to, of the nature of, or serving as an emblem."], "emblematical": ["Pertaining to, of the nature of, or serving as an emblem."], "symbolical": ["Pertaining to, of the nature of, or serving as an emblem."], "embodiment": ["The act of embodying or the state of being embodied."], "embody": ["To give a concrete, bodily form to.", "To represent, as of a character on stage.", "To represent or express something abstract in tangible form."], "embolden": ["To mentally support; to motivate."], "embroider": ["To stitch a decorative design on fabric with needle and thread of various colours."], "cloud cuckoo land": ["A fantasy world completely out of touch with reality which someone imagines."], "Acadian French": ["A variety or dialect of French spoken by francophone Acadians in the Canadian Maritime provinces, the Saint John River Valley in northern Maine, the Magdalen Islands and Havre-Saint-Pierre, along the St. Lawrence's north shore."], "Guatemalteco": ["A Spanish language dialect of the Americano-S branch."], "Avranchin-Mortainais": ["An O\u00efl language spoken in the arrondissement of Avranches, Manche department, France."], "Fongoro Spoken": ["The dialects of the Fongoro language."], "Kaba Deme Spoken": ["The dialects of the Kaba Deme language."], "embroidery": ["The ornamentation of fabric using needlework."], "embroil": ["To draw into a situation."], "Misato-S": ["A dialect of the Central Okinawan language."], "Misato-N": ["A dialect of the Central Okinawan language."], "Shuri": ["A dialect of the Central Okinawan language."], "Onna-S": ["A dialect of the Central Okinawan language."], "Nancowry": ["A dialect of the Central Nicobarese language."], "Camorta": ["A dialect of the Central Nicobarese language."], "Trinkat": ["A dialect of the Central Nicobarese language."], "emerald": ["A type of precious stone, green in colour.", "Having a clear, deep-green color.", "A transparent piece of emerald that has been cut and polished and is valued as a precious gem.", "The green color of an emerald."], "Bu-Dong": ["A dialect of the Central Mnong language."], "Pusan-U": ["A dialect of the Hankukmal-SE language."], "Khalkha-Formal": ["A dialect of the Halh Mongolian language."], "Zaki-Maratsa Spoken": ["The dialects of the Zaki-Maratsa language."], "Abedju-Azaki": ["A dialect of the Zaki-Maratsa language."], "emeritus": ["Retired or honorably discharged from active professional duty, but retaining the title of one's office or position."], "emery board": ["A small, stiff strip of paper or cardboard, coated with powdered emery, used in manicuring."], "nail file": ["A small, stiff strip of paper or cardboard, coated with powdered emery, used in manicuring."], "emetic": ["An agent that causes vomiting.", "Causing vomiting."], "emigrant bird": ["A bird which migrates in a group."], "emigrate": ["To leave one country or region to settle in another."], "emigration": ["The act of emigrating.", "Migration from a place."], "eminence": ["High station, status, rank, importance, or repute."], "emotive": ["Determined or actuated by emotion rather than reason."], "emollient": ["Softening and soothing, especially to the skin.", "An agent that softens or soothes the skin."], "emphatic": ["Uttered with emphasis."], "emphysema": ["A chronic, irreversible disease of the lungs characterized by abnormal enlargement of air spaces in the lungs accompanied by destruction of the tissue lining the walls of the air spaces."], "empiric": ["Relying upon or derived from observation or experiment."], "employable": ["Able to be employed."], "utilizable": ["Able to be employed."], "Biscayan": ["A dialect of the Basque language spoken mainly in Biscay, one of the provinces of the Basque Country of Spain."], "Bizkaian": ["A dialect of the Basque language spoken mainly in Biscay, one of the provinces of the Basque Country of Spain."], "employer": ["A person who employs others."], "emporium": ["A large retail store, esp. one selling a great variety of articles."], "empress": ["A female ruler of an empire."], "emptiness": ["The state of being empty."], "hollowness": ["The state of being empty."], "emu": ["A large flightless bird native to Australia (Dromaius novaehollandiae)."], "emulsify": ["To make into an emulsion."], "enchanter": ["A person who enchants.", "To please greatly."], "encase": ["To enclose in or as in a case."], "incase": ["To enclose in or as in a case."], "enchant": ["To please greatly.", "To delight to a high degree; to hold spellbound.", "To attract, arouse and hold attention and interest, as by charm or beauty."], "encouragement": ["The act of encouraging."], "encyclopedic": ["Pertaining to or of the nature of an encyclopedia."], "enema": ["The injection of a fluid into the rectum to cause a bowel movement."], "Arumanian Spoken": ["The dialects of the Macedo Romanian language."], "Vlor\u00eb-Berat": ["A dialect of the Macedo Romanian language."], "energetic": ["(For a person) Possessing or exhibiting energy."], "energetical": ["(For a person) Possessing or exhibiting energy."], "Aromanian Written": ["The written forms of the Macedo Romanian language."], "Aromanian Written Latin Script": ["The Macedo Romanian language written with the Latin script."], "Aromanian Written Greek Script": ["The Macedo Romanian language written with the Greek script."], "energize": ["To rouse into activity.", "To supply electrical current to or store electrical energy in."], "IRC": ["A form of real-time Internet text messaging (chat) or synchronous conferencing."], "Internet Relay Chat": ["A form of real-time Internet text messaging (chat) or synchronous conferencing."], "neuroimaging": ["The use of various techniques to either directly or indirectly image the structure, function/pharmacology of the brain. (source: Wikipedia)"], "engaging": ["Possessing charm and attractiveness."], "engrossing": ["Fully occupying the mind or attention."], "enigmatic": ["Resembling an enigma."], "enjoin": ["To lay upon, as an order or command.", "To give instructions to or direct somebody to do something with authority."], "enjoyable": ["Giving or capable of giving joy or pleasure."], "enlighten": ["To give spiritual or intellectual insight to."], "conceited": ["Characteristic of false pride."], "egotistical": ["Characteristic of false pride."], "self-conceited": ["Characteristic of false pride."], "swollen": ["Characteristic of false pride."], "swollen-headed": ["Characteristic of false pride."], "vain": ["Characteristic of false pride."], "enliven": ["To make sprightly or cheerful.", "To make vigorous or active."], "brighten": ["To make sprightly or cheerful."], "envigorate": ["To make vigorous or active."], "enmesh": ["To confuse completely by concealing one's true motives from, especially by elaborately feigning good intentions so as to gain an end."], "entangle": ["To confuse completely by concealing one's true motives from, especially by elaborately feigning good intentions so as to gain an end.", "To twist together or entwine into a confusing mass."], "enrich": ["To make rich with any kind of wealth."], "enrage": ["To make very angry."], "enrapture": ["To delight to a high degree; to hold spellbound.", "To fill with rapture or delight."], "Pearl": ["A female first name."], "mutagenic": ["Capable of inducing genetic mutation or increasing the rate of mutation."], "Muggle": ["A person without magical abilities in the works of J.K. Rowling."], "entail": ["To have as a logical consequence.", "To impose, involve, or imply as a necessary accompaniment or result.", "To limit the inheritance of property to a specific class of heirs.", "Land received by fee tail.", "The act of entailing property; the creation of a fee tail from a fee simple."], "enteritis": ["Inflammation of the small intestine."], "iniatiative": ["Willingness to undertake new ventures."], "enterprising": ["Showing initiative and willingness to undertake new projects."], "herb garden": ["A garden where herbs for the kitchen or medical purposes are cultivated."], "female corpse": ["The dead body of a woman."], "male corpse": ["The dead body of a man."], "child's corpse": ["The dead body of a child."], "kitchen garden": ["A garden that is used to grow edible plants and other plants that are useful in a household."], "potager": ["A garden that is used to grow edible plants and other plants that are useful in a household."], "vegetable patch": ["A patch of land used for the cultivation of vegetables."], "vegetable plot": ["A patch of land used for the cultivation of vegetables."], "sacred": ["Concerned with religion or religious purpose."], "sacral": ["Concerned with religion or religious purpose."], "sabbatical": ["An extended period of leave, often one year long, taken by an employee in order to carry out projects not otherwise associated with the employee's job."], "entertain": ["To have as a guest.", "To hold the attention of pleasantly or agreeably.", "To hold in the mind.", "To maintain (a theory, thoughts, or feelings)."], "gastroenteritis": ["Inflammation of the stomach and the small intestine."], "gastro": ["Inflammation of the stomach and the small intestine."], "gastric flu": ["Inflammation of the stomach and the small intestine."], "stomach flu": ["Inflammation of the stomach and the small intestine."], "entertaining": ["Affording entertainment."], "diverting": ["Affording entertainment."], "Senaya": ["A modern Eastern Aramaic language that is only spoken by a few families in Iran today."], "unfold": ["To spread out or open from a closed or folded state."], "spread out": ["To move outward (e.g. soldiers).", "To strew or distribute over an area.", "To set out or stretch in a line, succession, or series."], "entral": ["To delight to a high degree; to hold spellbound."], "enthrone": ["To place on a throne."], "enthronement": ["The act of enthroning or the state of being enthroned."], "enthronisation": ["The act of enthroning or the state of being enthroned."], "enthronization": ["The act of enthroning or the state of being enthroned."], "ramjet": ["A jet engine in which forward motion forces air into an inlet, compressing it, and where combustion is subsonic."], "jet": ["An aeroplane using jet engines rather than propellers."], "enthuse": ["To be enthusiastic.", "To fill with enthusiasm."], "Jewish Babylonian Aramaic": ["The form of Middle Aramaic used by Jewish writers in Babylonia between the 4th century and the 11th century CE."], "Babylonian Talmudic Aramaic": ["The form of Middle Aramaic used by Jewish writers in Babylonia between the 4th century and the 11th century CE."], "Lish\u00e1n Did\u00e1n": ["A modern Jewish Aramaic language originally spoken in Iranian Azerbaijan but now most speakers live in Israel."], "Turoyo": ["A variant of Aramaic that is spoken in eastern Turkey and north-eastern Syria."], "Surayt": ["A variant of Aramaic that is spoken in eastern Turkey and north-eastern Syria."], "wage earner": ["Someone who earn wages in return for their labor."], "tenacious": ["Sticking together."], "airheaded": ["A state in which a group of people is continuously making silly jokes, that can nevertheless lead to laughing fits as a reaction. Under the right circumstances, the state can maintain itself or be induced in others contageously. The use of weed (Cannabis sativa) promotes the state in some individuals, but it can also be induced by a joke or reference to an (earlier) funny event."], "empty-headed": ["A state in which a group of people is continuously making silly jokes, that can nevertheless lead to laughing fits as a reaction. Under the right circumstances, the state can maintain itself or be induced in others contageously. The use of weed (Cannabis sativa) promotes the state in some individuals, but it can also be induced by a joke or reference to an (earlier) funny event."], "featherbrained": ["A state in which a group of people is continuously making silly jokes, that can nevertheless lead to laughing fits as a reaction. Under the right circumstances, the state can maintain itself or be induced in others contageously. The use of weed (Cannabis sativa) promotes the state in some individuals, but it can also be induced by a joke or reference to an (earlier) funny event."], "light-headed": ["A state in which a group of people is continuously making silly jokes, that can nevertheless lead to laughing fits as a reaction. Under the right circumstances, the state can maintain itself or be induced in others contageously. The use of weed (Cannabis sativa) promotes the state in some individuals, but it can also be induced by a joke or reference to an (earlier) funny event."], "lightheaded": ["A state in which a group of people is continuously making silly jokes, that can nevertheless lead to laughing fits as a reaction. Under the right circumstances, the state can maintain itself or be induced in others contageously. The use of weed (Cannabis sativa) promotes the state in some individuals, but it can also be induced by a joke or reference to an (earlier) funny event."], "mitochondrial DNA": ["The DNA located in organelles called mitochondria."], "mtDNA": ["The DNA located in organelles called mitochondria."], "cell membrane": ["The biological membrane separating the interior of a cell from the outside environment."], "electron microscopy": ["A type of microscope that uses a particle beam of electrons to illuminate a specimen and create a highly-magnified image (source: Wikipedia)."], "circular DNA": ["A form of DNA that is found in bacteria and archaea as well as in eukaryotic cells in the form of mitochondrial DNA (source: Wikipedia)."], "nuclear DNA": ["DNA contained within a nucleus of eukaryotic organisms."], "genetic recombination": ["The process by which a strand of genetic material (usually DNA; but can also be RNA) is broken and then joined to a different DNA molecule."], "mutation rate": ["The chance of a mutation occurring in an organism or gene in each generation (or, in the case of multicellular organisms, cell division) (source: Wikipedia)."], "circumstantial evidence": ["A collection of facts that, when considered together, can be used to infer a conclusion about something unknown (source: Wikipedia)."], "matrilineality": ["A system in which lineage is traced through the mother and maternal ancestors."], "evolutionary tree": ["A tree showing the evolutionary relationships among various biological species or other entities that are believed to have a common ancestor (source: Wikipedia)."], "phylogenetic tree": ["A tree showing the evolutionary relationships among various biological species or other entities that are believed to have a common ancestor (source: Wikipedia)."], "genetic bottleneck": ["An evolutionary event in which a significant percentage of a population or species is killed or otherwise prevented from reproducing, and the population is reduced by 50% or more, often by several orders of magnitude."], "molecular phylogenetics": ["The use of the structure of molecules to gain information on an organism's evolutionary relationships."], "Simula": ["A programming language, developed in the 1960s at the Norwegian Computing Center in Oslo, introducing objects, classes, subclasses, virtual methods, coroutines, discrete event simulation, and featuring garbage collection."], "Simula 67": ["A programming language, developed in the 1960s at the Norwegian Computing Center in Oslo, introducing objects, classes, subclasses, virtual methods, coroutines, discrete event simulation, and featuring garbage collection."], "software engineer": ["A person who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as chips, work (source: Wikipedia)."], "IEEE Computer Society": ["An organizational unit of the Institute of Electrical and Electronics Engineers (IEEE) established in 1963."], "SWEBOK": ["The sum of knowledge within the profession of software engineering as established by a Committee sponsored by the IEEE Computer Society, which has become an ISO standard."], "software engineering body of knowledge": ["The sum of knowledge within the profession of software engineering as established by a Committee sponsored by the IEEE Computer Society, which has become an ISO standard."], "software requirements": ["A sub-field of Software engineering that deals with the elicitation, analysis, specification, and validation of requirements for software (source: Wikipedia)."], "software configuration management": ["The task of tracking and controlling changes in the software. Configuration management practices include revision control and the establishment of baselines."], "CASE": ["The scientific application of a set of tools and methods to a software which is meant to result in high-quality, defect-free, and maintainable software products."], "computer-aided software engineering": ["The scientific application of a set of tools and methods to a software which is meant to result in high-quality, defect-free, and maintainable software products."], "system lifecycle": ["An examination of a system or proposed system that addresses all phases of its existence to include system design and development, production and/or construction, distribution, operation, maintenance and support, retirement, phase-out and disposal."], "systems engineering process": ["A process for applying systems engineering techniques to the development of all kinds of systems (source: Wikipedia)."], "grievous": ["Totally reprehensible."], "monstrous": ["Totally reprehensible."], "pupa": ["The form taken by some insects at an early stage in their development.", "A life stage of some insects undergoing transformation."], "holometabolism": ["The specific kind of insect development which includes four life stages - as an embryo, a larva, a pupa and an imago (source: Wikipedia)."], "complete metamorphism": ["The specific kind of insect development which includes four life stages - as an embryo, a larva, a pupa and an imago (source: Wikipedia)."], "enthusiastic": ["Full of or characterized by enthusiasm."], "entice": ["To dispose or incline or entice to; to be attractive by arousing hope or desire.", "To attract or provoke someone to do something through (often false or exaggerated) promises or persuasion."], "vessel": ["A tube or canal that carries fluid in an animal or plant.", "A general term for all kinds of craft designed for transportation on water, such as ships or boats.", "An object used as a container (e.g. for liquids)."], "daimon": ["Inspiring spirit of good or bad actions."], "genius": ["An intelligent person.", "Inspiring spirit of good or bad actions."], "sense of smell": ["The sense of smell."], "enticement": ["Qualities that attract by seeming to promise some kind of reward.", "Something that entices."], "allurement": ["Something that entices."], "enticing": ["That entices."], "attracting": ["That entices."], "gigolo": ["A male prostitute."], "entirety": ["The state of being entire."], "entomb": ["To put in the ground and cover with earth."], "entomologist": ["A person who is trained in or working in entomology."], "allotype": ["A specimen of the opposite sex to the holotype."], "entourage": ["The set of all natural and human-made surroundings that affect individuals, social groupings, and other life.", "A group of followers, especially of a person of high rank."], "entrance fee": ["The fee charged for admission."], "entrance money": ["The fee charged for admission."], "admission price": ["The fee charged for admission."], "admission fee": ["The fee charged for admission."], "admission charge": ["The fee charged for admission."], "entreat": ["To plead with someone for help or for a favor; to request urgently or persistently."], "entreaty": ["Earnest request or petition."], "entrepot": ["A trading post where merchandise can be imported and exported without paying import duties."], "Zacchaeus": ["A superintendent of customs; a chief tax-gatherer (publicanus) at Jericho (Luke 19:1-10)."], "cockerel": ["A male chicken (Gallus gallus domesticus), a domestic bird.", "A young rooster."], "envolop": ["To surround completely."], "enviable": ["Fitted to excite envy."], "environmentalist": ["One who advocates for the protection of the biosphere from misuse from human activity through such measures as ecosystem protection, waste reduction and pollution prevention."], "envoy": ["A male person that negotiates something as a representative.", "A female person that negotiates something as a representative.", "One who may speak for another in a particular capacity, especially in negotation."], "envy": ["A feeling of discontent or covetousness with regard to another's advantages, success, possessions, etc.", "To feel envy of."], "enwrap": ["To surround on all sides by creating a cover or protection."], "temerity": ["Fearless daring.", "The quality of not showing due respect."], "impudence": ["The quality of not showing due respect."], "epic": ["An epic poem."], "take aback": ["To cause someone to feel surprise."], "epidermis": ["The upper or outer layer of the two main layers of tissue that make up the skin."], "epiderm": ["The upper or outer layer of the two main layers of tissue that make up the skin."], "epidural": ["An injection into the epidural space of the spine."], "Zayse-Zergulla Spoken": ["The dialects of the Zayse-Zergulla language."], "epiglottis": ["A thin, triangular plate of cartilage at the base of the tongue that covers the glottis during swallowing to keep food from entering the trachea."], "epileptic": ["A person who suffers from epilepsy.", "Of, or caused by, epilepsy."], "episcopal": ["Of or relating to a bishop."], "episcopate": ["The office and dignity of a bishop."], "bishopric": ["In Christian religions, a region administered by a bishop.", "The office and dignity of a bishop."], "episodic": ["Occurring sporadically or incidentally."], "epitaph": ["An inscription on a tombstone in memory of the one buried there."], "hawser": ["A thick rope mostly used in mooring ships."], "epitome": ["A person or thing that is typical of or possesses to a high degree the features of a whole class.", "A brief summary, as of a book or article."], "aristotelianism": ["A tradition of philosophy that takes its defining inspiration from the work of Aristotle."], "scenography": ["The communicative organisation and manipulation of space and its perception, through time, as an act of artistic expression."], "lien": ["A legal claim; a charge upon real or personal property for the satisfaction of some debt or duty."], "self-righteous": ["Excessively or hypocritically pious."], "equable": ["Free from many changes or variations."], "racial segregation": ["The separation of different racial groups in daily life, such as eating in a restaurant, drinking from a water fountain, using a rest room, attending school, going to the movies, or in the rental or purchase of a home."], "racial integration": ["The process of ending systematic racial segregation."], "equality": ["The state or quality of being equal."], "Armenian people": ["A nation and ethnic group originating in the Caucasus and in the Armenian Highlands."], "Armenians": ["A nation and ethnic group originating in the Caucasus and in the Armenian Highlands."], "equalization": ["The act of equalizing, or state of being equalized."], "equalize": ["To make equal."], "equalizer": ["A person or thing that equalizes."], "calmness": ["The state of being calm, stable and composed, especially under stress."], "equate": ["To regard, treat, or represent as equivalent.", "To consider or describe as similar, equal, or analogous."], "dependent territory": ["A territory that does not possess full political independence or sovereignty as a State."], "dependent area": ["A territory that does not possess full political independence or sovereignty as a State."], "Saint Helena": ["An island of volcanic origin in the South Atlantic Ocean.", "A British overseas territory in the South Atlantic Ocean, which consists of the island of Saint Helena, and the dependencies of Ascension Island and Tristan da Cunha."], "lifebelt": ["A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "equatorial": ["Of or near the equator."], "lifebuoy": ["A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "lifering": ["A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "life belt": ["A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "lifesaver": ["A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "life ring": ["A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "life sentence": ["Sentence of imprisonment for the rest of the defendant's life."], "carboxyl group": ["A set of four atoms bonded together and present in carboxylic acids, including amino acids."], "aspartame": ["An artificial, non-saccharide sweetener. In the European Union, it is known under the E number (additive code) E951."], "equip": ["To furnish with whatever is needed for use or for any undertaking."], "equitable": ["Characterized by equity or fairness."], "thankful": ["Feeling or expressing gratitude."], "grateful": ["Feeling or expressing gratitude."], "gratitude": ["The state of feeling grateful."], "vacate": ["To give up from a job or position."], "renounce": ["To give up from a job or position.", "To renounce or relinquish a throne, right, power, claim, responsibility, or the like, in a formal manner."], "ignore": ["To be ignorant of or in the dark about.", "Euphemism for \"ignore\", that is, postpone until the hell freezes over."], "distinguish": ["To see someone or something as different from others; to discern or comprehend.", "To detect with the senses.", "To identify as in botany or biology, for example."], "differentiate": ["To see someone or something as different from others; to discern or comprehend.", "Evolve so as to lead to a new species or develop in a way most suited to the environment."], "tell apart": ["To see someone or something as different from others; to discern or comprehend.", "To detect with the senses."], "equivocal": ["Of uncertain significance."], "equivocate": ["To use ambiguous or unclear expressions, usually to avoid commitment or in order to mislead."], "equivacation": ["The use of equivocal or ambiguous expressions, esp. in order to mislead."], "erect": ["Being in a vertical, upright position.", "To make by combining materials and parts.", "To place in vertical or quasi-vertical position, stable by the sole combined effect of gravity and support(s) reaction."], "smelly": ["Having a bad smell."], "fetid": ["Having a bad smell."], "foetid": ["Having a bad smell."], "foul-smelling": ["Having a bad smell."], "funky": ["Having a bad smell."], "noisome": ["Posing a risk to health.", "Having a bad smell."], "putrid": ["Having a bad smell."], "smart bomb": ["A guided weapon intended to precisely hit a specific target, and to minimize damage to things other than the target."], "guided bomb unit": ["A guided weapon intended to precisely hit a specific target, and to minimize damage to things other than the target."], "phlebology": ["The study of veins and their diseases"], "phlebologist": ["A physician who specializes in treatment of vein disorders."], "erection": ["A distended and rigid state of an organ or part containing erectile tissue, esp. of the penis or the clitoris.", "An erect penis."], "ermine": ["Any of various weasels having a white winter coat."], "phlebectomy": ["Surgical removal or all or part of a vein; sometimes done in cases of severe varicose veins."], "phlebogram": ["An X-ray of a vein that has been injected with an opaque material."], "venogram": ["An X-ray of a vein that has been injected with an opaque material."], "phlebography": ["An X-ray examination of a system of veins that have been injected with a contrast medium."], "erogenous": ["Especially sensitive to sexual stimulation, as certain areas of the body."], "erotic": ["Of or concerning sexual love and desire.", "Giving sexual pleasure; sexually arousing."], "balaclava": ["Garment, made of wool or other tissues, wich covers the whole head but the eyes or the face, used to hide identity or to protect from the cold wheather."], "autophagie": ["A function of cell metabolism which involves the degradation of cell components which are not needed anymore."], "erotism": ["The sexual or erotic quality or character of something."], "errand": ["A short trip taken to perform a specified task, usually for another."], "erratic": ["Liable to sudden unpredictable change.", "Inclined to be irregular."], "erratum": ["An error, especially one in a printed work."], "erstwhile": ["Of times past."], "error message": ["A message displayed when an unexpected condition occurs, usually on a computer or other device."], "badinage": ["Frivolous banter."], "erudite": ["Characterized by great knowledge."], "erudition": ["Knowledge acquired by study, research, etc."], "erupt": ["To violently eject.", "To appear on the skin.", "To start to burn or burst into flames."], "neoplasia": ["The abnormal proliferation of cells."], "escalate": ["To increase in intensity, magnitude, etc."], "escalation": ["An increasing in intensity, magnitude, etc."], "escapade": ["A daring or adventurous act, often one that is disapproved of by others."], "lager": ["A pale bottom-fermented beer."], "escape clause": ["A provision in a contract that enables a party to terminate contractual obligations in specified circumstances."], "eschew": ["To avoid, as something wrong, or from a feeling of distaste."], "hector": ["To intimidate or dominate in a blustering way."], "escort": ["To go or travel in the company of someone.", "A group of persons, or a single person, accompanying another or others for protection, guidance, or courtesy.", "To accompany or attend as escort.", "A female prostitute who can be hired by telephone."], "tallow": ["A hard animal fat obtained from suet etc.; used to make candles, soap and lubricants."], "twice-yearly": ["Occuring twice every year."], "shun": ["To avoid, as something wrong, or from a feeling of distaste."], "Eskimo": ["A member of an indigenous people of Greenland, northern Canada, Alaska, and northeastern Siberia."], "demographic": ["Of or pertaining to demography."], "espionage": ["The act or practice of spying or of using spies to obtain secret information."], "esplanade": ["Any open, level space, esp. one serving for public walks or drives."], "essayist": ["A writer of essays."], "esthetic": ["Relating to the philosophy or theories of aesthetics."], "estrange": ["To cause to feel less close or friendly."], "estrangement": ["Emotional isolation or dissociation."], "etch": ["To make designs on metal, glass etc using an acid to eat out the lines."], "eternal": ["Lasting forever."], "eternity": ["A state of eternal existence believed in some religions to characterize the afterlife.", "Time without end.", "A seemingly endless time interval."], "ethereal": ["Light, airy, or tenuous."], "hectare": ["A unit of area equal to 10,000 square metres (107,639 sq ft), or one square hectometre (100 metres, squared), and commonly used for measuring land area."], "ethnologist": ["A specialist in ethnology."], "territorial": ["Of or relating to a territory."], "vision": ["The sense or ability of sight.", "An ideal or a goal toward which one aspires.", "Something imaginary one thinks one sees."], "presidential": ["Presiding or watching over.", "Of or pertaining to a president."], "operating": ["Involved in a kind of operation."], "mythologic": ["Of or pertaining to myths or mythology."], "mythological": ["Of or pertaining to myths or mythology."], "mythology": ["The systematic collection and study of myths.", "Myths collectively; the body of stories associated with a culture or institution or person."], "municipal": ["Of or pertaining to a municipality."], "historian": ["A writer of history; a chronicler; an annalist."], "constitutional": ["Relating to the constitution."], "constitutionally": ["In a manner conform to a constitution."], "North American": ["A person from or living in North America.", "Of or pertaining to or characteristic of the continent or countries of North America or their peoples."], "revolutionary": ["Of or pertaining to a revolution in government.", "Pertaining to something that portends of great change."], "expedition": ["A long journey undertaken by a group of people with a definite objective."], "with respect to": ["Regarding; concerning; pertaining to."], "difficulty": ["The state of being difficult, or hard to do."], "electoral": ["Of, or relating to elections.", "Composed of electors."], "platform": ["A raised horizontal surface from which speeches are made and on which musical and other performances are made.", "The combination of a particular computer and a particular operating system.", "A set of components shared by several vehicle models.", "A raised structure from which passengers can enter or leave a train, metro etc."], "ethnologic": ["Of or relating to ethnology."], "etiquette": ["A prescribed or accepted code of usage in matters of ceremony, as at a court or in official or other formal observances."], "etymological": ["Of or relating to etymology or based on the principles of etymology."], "eucalyptus": ["A type of large Australian evergreen tree, giving timber, gum and an oil that is used in the treatment of colds."], "rodomontade": ["Pretentious and ridiculous attitude.", "To display a pretentious and ridiculous attitude."], "rhodomontade": ["Pretentious and ridiculous attitude.", "To display a pretentious and ridiculous attitude."], "rodomont": ["Person displaying a pretentious and ridiculous attitude."], "carte blanche": ["Authorization given to a person allowing him or her to do whatever he or she wants."], "free hand": ["Authorization given to a person allowing him or her to do whatever he or she wants."], "signed blank paper": ["Signed paper left blank so that another person can fill it with what he or she wants."], "anal": ["Of or relating to the anus."], "make darker": ["To reduce the quantity of light or brightness of something."], "make easier": ["To make easy or easier."], "injure": ["To cause physical harm to a living creature."], "leave out": ["To exclude; to specify as being an exception."], "leave off": ["To exclude; to specify as being an exception."], "omit": ["To exclude; to specify as being an exception."], "take out": ["To exclude; to specify as being an exception.", "To give vent to a bad feeling on someone who did not originate it.", "To take and put outside (of a cupboard, a building, etc.)."], "manufacture": ["To make things, usually on a large scale, with tools and either physical labor or machinery, out of artificial or natural components or parts.", "To make up something artificial or untrue.", "To produce naturally (e.g. of a plant)."], "financial capacity": ["The capacity to carry burdens, particularly financial burdens."], "Eucharist": ["A sacrament and the central act of worship in many Christian churches, which was instituted at the Last Supper and in which bread and wine are consecrated and consumed in remembrance of Jesus's death."], "eugenics": ["The study of hereditary improvement of the human race by controlled selective breeding."], "eugenic": ["Of or relating to eugenics."], "hygroscopic": ["Inclined to absorbing water from the atmosphere, through either absorption or adsorption."], "eulogize": ["To extol in speech or writing."], "eulogy": ["A laudatory speech or written tribute, especially one praising someone who has died."], "euphemistic": ["Of or pertaining to euphemism."], "euphoria": ["A feeling of great happiness or well-being, commonly exaggerated and not necessarily well founded."], "accompanied": ["Having companions or an escort."], "learned": ["Knowledgeable through having read extensively."], "assumed": ["Past participle of assume."], "traverse": ["To go beyond, to pass here."], "pass over": ["To go beyond, to pass here."], "get over": ["To go beyond, to pass here."], "get across": ["To go beyond, to pass here."], "cut through": ["To go beyond, to pass here."], "cut across": ["To go beyond, to pass here."], "evanescent": ["Of short duration, passing away quickly."], "let go": ["To give freedom; to release from confinement or restraint."], "ugliness": ["The condition of being ugly."], "evaporator": ["A device in which evaporation takes place."], "evasion": ["An act or instance of escaping, avoiding, or shirking something."], "evenhanded": ["Showing no partiality."], "fallen": ["Having dropped by the force of gravity.", "Killed in battle."], "Republic of San Marino": ["A country in Europe within Italy."], "winter time": ["The \"normal\" time, as opposed to summer time."], "standard time": ["The \"normal\" time, as opposed to summer time."], "quadrennial": ["Happening once every four years."], "quadriennial": ["Happening once every four years."], "triennial": ["Happening once every three years."], "quinquennial": ["Happening once every five years."], "sexennial": ["Happening once every six years."], "septennial": ["Happening once every seven years."], "octennial": ["Happening once every eight years."], "novennial": ["Happening once every nine years."], "undecennial": ["Happening once every eleven years."], "duodecennial": ["Happening once every twelve years."], "quindecennial": ["Happening once every fifteen years."], "vicennial": ["Happening once every twenty years."], "tricennial": ["Happening once every thirty years."], "suspected": ["Believed likely."], "anthropomorphitism": ["The attribution of human characteristics to non-human beings, objects, phenomena or concepts."], "anthropomorphization": ["The attribution of human characteristics to non-human beings, objects, phenomena or concepts."], "anthropomorphosis": ["The attribution of human characteristics to non-human beings, objects, phenomena or concepts."], "anthropomorphism": ["The attribution of human characteristics to non-human beings, objects, phenomena or concepts."], "reduced": ["Made less in size or amount or degree."], "poisoned chalice": ["A thing or situation which appears to be good when it is received or experienced but is found to be bad."], "retired": ["Past participle of the verb to retire."], "Trojan horse": ["A thing or situation which appears to be good when it is received or experienced but is found to be bad."], "tought": ["Past participle of the verb to think."], "proceed": ["To maintain an action, state or condition without interruption.", "To follow a certain course.", "To continue talking."], "furnish": ["To give what is needed or desired."], "originate": ["To take first existence; to have origin or beginning; to begin to exist or act."], "populate": ["To fill with people or supply with inhabitants.", "To fill with data."], "everlasting": ["Lasting or continuing for an indefinitely long time."], "unending": ["Lasting or continuing for an indefinitely long time."], "evict": ["To expel a person, from land, a property, a building, etc., by a legal process."], "published": ["Past participle of the verb to publish."], "jerk": ["A strongly disliked person who behaves disgustingly, underhandedly, or nastily, etc.", "To make a sudden uncontrolled movement.", "A dull stupid fatuous person."], "stud earring": ["A piece of jewelry consisting of a small ornament mounted on a metal post that is passed through the pierced earlobe."], "superorder": ["A taxonomic rank used in the classification of organisms, immediately higher than order."], "evil": ["Intending to harm.", "That which is evil."], "information security": ["The protection of information and information systems from unauthorized access, use, disclosure, disruption, modification or destruction."], "access control list": ["A list of permissions attached to an object which specifies who or what is allowed to access the object and what operations are allowed to be performed on the object.", "A method of keeping in check the Internet traffic that attempts to flow through a given hub, router, firewall, or similar device."], "audit trail": ["A chronological sequence of audit records, each of which contains evidence directly pertaining to and resulting from the execution of a business process or system function. (source: Wikipedia)"], "audit log": ["A chronological sequence of audit records, each of which contains evidence directly pertaining to and resulting from the execution of a business process or system function. (source: Wikipedia)"], "automated theorem proving": ["The proving of mathematical theorems by a computer program."], "automated deduction": ["The proving of mathematical theorems by a computer program."], "buffer overflow": ["An anomaly where a process stores data in a buffer outside the memory the programmer set aside for it."], "integer overflow": ["A condition that occurs when an arithmetic operation attempts to create a numeric value that is larger than can be represented within the available storage space."], "file hosting service": ["An Internet hosting service specifically designed to host static content, typically large files that are not web pages. (source: Wikipedia)"], "analytical engine": ["A mechanical general-purpose computer designed by the British mathematician Charles Babbage in the 19th century."], "approximation algorithm": ["An algorithm used to find approximate solutions to optimization problems."], "assembly code": ["A family of low-level languages for programming computers. They implement a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture. (source: Wikipedia)"], "assembly language": ["A family of low-level languages for programming computers. They implement a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture. (source: Wikipedia)"], "asymptotically optimal algorithm": ["An algorithm that for large inputs performs at worst a constant factor (independent of the input size) worse than the best possible algorithm. (source: Wikipedia)."], "backtracking": ["A general algorithm for finding all (or some) solutions to some computational problem, that incrementally builds candidates to the solutions, and abandons each partial candidate c (\"backtracks\") as soon as it determines that c cannot possibly be completed to a valid solution. (source: Wikipedia)"], "big O notation": ["A notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity, usually in terms of simpler functions."], "asymptotic notation": ["A notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity, usually in terms of simpler functions."], "data structure": ["A particular way of storing and organizing data in a computer so that it can be used efficiently. (source: Wikipedia)"], "distributed algorithm": ["An algorithm designed to run on computer hardware constructed from interconnected processors."], "flowchart": ["A common type of chart, that represents an algorithm or process, showing the steps as boxes of various kinds, and their order by connecting these with arrows."], "formal system": ["A formal language together with a deductive system which consists of a set of inference rules and/or axioms."], "greedy algorithm": ["An algorithm that follows the problem solving metaheuristic of making the locally optimal choice at each stage with the hope of finding the global optimum."], "metaheuristic": ["A heuristic method for solving a very general class of computational problems by combining user-given black-box procedures \u2014 usually heuristics themselves \u2014 in the hope of obtaining a more efficient or more robust procedure. (source: Wikipedia)"], "heuristics": ["A strategy using readily accessible, though loosely applicable, information to control problem solving in human beings and machines."], "memoization": ["An optimization technique used primarily to speed up computer programs by having function calls avoid repeating the calculation of results for previously-processed inputs. (source: Wikipedia)"], "twitch": ["To make a sudden uncontrolled movement.", "Involuntary, spasmodic movement of a muscle."], "hang": ["To listen or give attention to.", "To be or remain suspended.", "To kill by hanging.", "To cause to be hanging or suspended."], "parallel algorithm": ["An algorithm which can be executed a piece at a time on many different processing devices, and then put back together again at the end to get the correct result."], "simulated annealing": ["A generic probabilistic metaheuristic for the global optimization problem of applied mathematics, namely locating a good approximation to the global minimum of a given function in a large search space. (source: Wikipedia)"], "parsing": ["The process of analyzing a text, made of a sequence of tokens (for example, words), to determine its grammatical structure with respect to a given (more or less) formal grammar."], "syntactic analysis": ["The process of analyzing a text, made of a sequence of tokens (for example, words), to determine its grammatical structure with respect to a given (more or less) formal grammar."], "catharsis": ["Purging of the digestive system.", "The release of ideas, thoughts, and repressed material from the unconscious, accompanied by an emotional response and relief."], "graph theory": ["The study of graphs: mathematical structures used to model pairwise relations between objects from a certain collection."], "halting problem": ["A decision problem which can be stated as follows: given a description of a program and a finite input, decide whether the program finishes running or will run forever, given that input."], "Vandal": ["A member of the East Germanic tribe that entered the late Roman Empire during the 5th century."], "pile up": ["To get or gather together.", "To put together several things in one pile; to arrange in stacks."], "pile": ["A great number or large amount of things not placed in a pile.", "To put together several things in one pile; to arrange in stacks.", "To press tightly together or cram."], "offshore outsourcing": ["The practice of hiring an external organization to perform some business functions in a country other than the one where the products or services are actually developed or manufactured. (source: Wikipedia)"], "offshoring": ["The relocation by a company of a business process from one country to another."], "virtual machine": ["A software implementation of a machine (computer) that executes programs like a real machine."], "extensibility": ["A system design principle where the implementation takes into consideration future growth.", "The capability of being extended."], "flop": ["To lose one's balance and hit the ground."], "flop down": ["To lose one's balance and hit the ground."], "heave": ["To cause an object to have a higher location than previously."], "precentor": ["Person who directs the choir in a cathedral or a monastery."], "conch": ["Large concave marine shell, of the bivalves species."], "grow lonely": ["To become increasingly lonely."], "misogynous": ["Hating women in particular."], "misanthropist": ["Someone who dislikes people in general."], "latchkey kid": ["A child that returns to an empty home because the parents are at work and therefore has a key to open the door."], "latchkey child": ["A child that returns to an empty home because the parents are at work and therefore has a key to open the door."], "gender-neutral marriage": ["Marriage between two persons of the same biological gender."], "logistics": ["The management of the flow of goods, information and other resources, including energy and people, between the point of origin and the point of consumption in order to meet the requirements of consumers. (source: Wikipedia)"], "intersexual": ["Person with sex characteristics that are neither clearly male nor female."], "cathartic": ["A substance which accelerates defecation."], "depressing": ["Making despondent or depressive."], "dismal": ["Making despondent or depressive."], "possess": ["To have rightful possession of property, goods or capital.", "To be in possession (of an object)."], "disfavor": ["The state of being out of favor."], "hesitancy": ["A certain degree of unwillingness."], "indisposition": ["A certain degree of unwillingness."], "artificial life": ["A field of study and an associated art form which examine systems related to life, its processes, and its evolution through simulations using computer models, robotics, and biochemistry."], "biostatistics": ["The application of statistics to a wide range of topics in biology."], "competitive exclusion principle": ["A proposition which states that two species competing for the same resources cannot stably coexist if other ecological factors are constant."], "macroevolution": ["A scale of analysis of evolution in separated gene pools."], "microevolution": ["The occurrence of small-scale changes in allele frequencies in a population, over a few generations, also known as change below the species level."], "myxobacteria": ["A group of bacteria that predominantly live in the soil and produce a number of biomedically and industrially useful chemicals, such as antibiotics."], "sexual selection": ["The theory proposed by Charles Darwin that states that certain evolutionary traits can be explained by intraspecific competition."], "last universal ancestor": ["The most recent organism from which all organisms now living on Earth descend."], "experimental evolution": ["The field of evolutionary biology concerned with testing hypotheses and theories of evolution by use of controlled experiments."], "pulmonary embolism": ["A blockage of the pulmonary artery or one of its branches, usually occurring when a deep vein blood clot from a vein becomes dislodged from its site of formation and travels, or embolizes, to the arterial blood supply of one of the lungs."], "endosymbiont": ["Any organism that lives within the body or cells of another organism, i.e. forming an endosymbiosis."], "endosymbiosis": ["Mutually beneficial cooperation between two living organisms, thus a form of symbiosis, where one is contained by the other"], "symbiogenesis": ["The merging of two separate organisms to form a single new organism."], "natural selection": ["The process by which heritable traits that make it more likely for an organism to survive and successfully reproduce become more common in a population over successive generations."], "vertebra": ["Any of the small bones which make up the backbone."], "sickle cell anemia": ["A life-long blood disorder characterized by red blood cells that assume an abnormal, rigid, sickle shape."], "sickle-cell disease": ["A life-long blood disorder characterized by red blood cells that assume an abnormal, rigid, sickle shape."], "drepanocytosis": ["A life-long blood disorder characterized by red blood cells that assume an abnormal, rigid, sickle shape."], "sexual dimorphism": ["The systematic difference in form between individuals of different sex in the same species."], "polydactyly": ["A congenital physical anomaly in humans having supernumerary fingers or toes."], "pesticide resistance": ["The adaptation of pest species targeted by a pesticide resulting in decreased susceptibility to that chemical."], "as soft as butter": ["As soft as butter; very soft."], "station book stall": ["A bookstore at a station with an assortment that specializes on travellers."], "station bookstall": ["A bookstore at a station with an assortment that specializes on travellers."], "inform": ["To inform (somebody) of something."], "evocative": ["That evokes, brings to mind, a memory, mood or image."], "evoke": ["To call up or produce memories, feelings, etc.", "To summon into action or bring into existence.", "To call to mind."], "exacerbate": ["To embitter the feelings of a person.", "To irritate or provoke to a high degree.", "To make worse."], "exacting": ["Requiring close application or attention."], "homeobox": ["A DNA sequence found within genes that are involved in the regulation of patterns of development (morphogenesis) in animals, fungi and plants."], "preadaptation": ["A situation where an organism uses a preexisting anatomical structure inherited from an ancestor for a potentially unrelated purpose."], "exagerrated": ["That has been described as greater than it actually is."], "exaggeration": ["An extreme exaggeration or overstatement; especially as a literary or rhetorical device.", "The act of exaggerating or overstating."], "Gantt chart": ["A type of bar chart that illustrates a project schedule."], "exalt": ["To confer dignity or honor.", "To praise, glorify, or honor (e.g. a virtue)."], "vendetta": ["Violent argument between two families or clans, lasting many years."], "blood feud": ["Violent argument between two families or clans, lasting many years."], "understaffed": ["Not having enough people or employees to accomplish its mission."], "under-staffed": ["Not having enough people or employees to accomplish its mission."], "undermanned": ["Not having enough people or employees to accomplish its mission."], "merciless": ["Showing no mercy."], "mercilessly": ["In a merciless manner."], "mercilessness": ["The property of being merciless."], "exasperate": ["To irritate or provoke to a high degree.", "To make worse.", "To make furious."], "exasperating": ["That exasperates, infuriates, annoys or irritates."], "excavate": ["To make a hole in something.", "To make a hole, tunnel, etc. by removing material.", "To uncover or open up a structure etc. remaining from earlier times by digging."], "exceedingly": ["To an unusual degree."], "exceptionable": ["Liable to exception or objection."], "objectionable": ["Liable to exception or objection."], "diamond ring": ["A finger ring with one or more diamonds."], "superfamily": ["A taxonomic rank used in the classification of organisms, immediately higher than family."], "speleologist": ["A person who practices speology or the exploration of caves."], "timpano": ["A brass percussion instrument with a defined pitch."], "deathly boring": ["Very boring."], "dead boring": ["Very boring."], "deadly boring": ["Very boring."], "excerpt": ["A passage or segment taken from a longer work, such as a literary or musical composition, a document, or a film."], "excessive": ["characterized by excess."], "exchangeable": ["Capable of being exchanged."], "terse": ["Abruptly or brusquely short."], "linseed": ["The seed of flax, especially when used as the source of linseed oil.", "A plant with blue flowers which is cultivated for its edible seeds and for its fibers that are used to make cloth."], "flaxseed": ["The seed of flax, especially when used as the source of linseed oil."], "excite": ["To arouse or stir up emotions or feelings.", "To act as a stimulant.", "To stimulate feelings."], "exciting": ["Creating or producing excitement.", "(For a music, song, etc.) Having a stimulating effect, such as giving the desire to dance."], "exclaim": ["To make known by stating or announcing.", "To call out or declare loudly.", "To utter aloud; often with surprise, horror, or joy."], "exclamation": ["A loud calling or crying out.", "A mark or sign by which outcry or emphatic utterance is marked."], "exclamation point": ["A mark or sign by which outcry or emphatic utterance is marked."], "exclamation mark": ["A mark or sign by which outcry or emphatic utterance is marked."], "exclusion zone": ["An area where entry is forbidden."], "excommunicate": ["To cut off from communion with a church or exclude from the sacraments of a church by ecclesiastical sentence."], "excommunication": ["The ecclesiastical sentence by which a person is excommunicated."], "excrement": ["Substance that human and animal bodies release from time to time as a little pile of waste remaining from digestion, after it has been collected in the colon.", "To shit little lumps of feces."], "excrescence": ["An abnormal outgrowth, usually harmless, on an animal or vegetable body."], "excreta": ["Waste matter, such as sweat, urine, or feces, discharged from the body."], "Gurkha": ["People from Nepal and northern India who take their name from the eighth century Hindu warrior-saint Guru Gorakhnath."], "excrete": ["To separate and eliminate from an organic body."], "execrate": ["To detest on a high degree; to hate completely.", "To detest utterly."], "exemplar": ["A typical example or instance."], "exemplary": ["Good to serve as an example to others.", "Of or pertaining to an admonition."], "exemplification": ["Something that exemplifies."], "exemption": ["The state of being exempt."], "exert": ["To put in vigorous action.", "To put to use (e.g. power or influence)."], "exhaust": ["To use up resources or materials.", "System consisting of the parts of an engine through which burned gases or steam are discharged."], "threatening": ["Which threatens or menaces."], "menacing": ["Which threatens or menaces."], "threateningly": ["In a threatening or menacing manner."], "menacingly": ["In a threatening or menacing manner."], "exhaustion": ["A state of physical and/or mental weakness and a lack of vigor.", "Supreme tiredness."], "wet-nurse": ["Woman hired to breastfeed the child of another woman."], "wet nurse": ["Woman hired to breastfeed the child of another woman."], "nana": ["The mother of one of someone's parents.", "A woman who watches over someone else's kids usually as a full-time job."], "be silent": ["To stop speaking or making noise.", "Not say anything."], "keep silent": ["To stop speaking or making noise."], "hold one's tongue": ["To stop speaking or making noise."], "remain silent": ["To stop speaking or making noise."], "keep quiet": ["To stop speaking or making noise."], "decline": ["To not want to do what is being asked.", "The act of abating or the state of being abated."], "nourish": ["To give food."], "nurture": ["To give food."], "caretaker": ["Person who is legally in charge of a child or another person."], "custodian": ["Person who is legally in charge of a child or another person."], "laconic": ["Abruptly or brusquely short."], "exculpate": ["To clear from a charge of guilt or fault."], "exhibitionism": ["A disorder characterized esp. by a compulsion to exhibit the genitals in public."], "exhibitor": ["Someone who exhibits something."], "exhilarate": ["To make sprightly or cheerful."], "exhilarating": ["Creating or producing excitement."], "exhort": ["To advise earnestly.", "To force or impel in a given direction.", "To spur on or encourage especially by cheers and shouts."], "exhortation": ["The act of inciting to laudable deeds."], "eagerly": ["In an eager manner."], "knave": ["A tricky, deceitful fellow; a dishonest person.", "A playing card marked with the figure of a servant or soldier."], "rogue": ["A tricky, deceitful fellow; a dishonest person."], "jack": ["A male rabbit.", "A playing card marked with the figure of a servant or soldier.", "A mechanical device used to lift heavy loads."], "sore": ["An injured, infected, inflamed or diseased patch of skin.", "Irritated and roused to anger."], "drub": ["To criticize harshly."], "snub": ["A deliberate affront or slight."], "post mortem": ["Inspection and dissection of a body after death, as for determination of the cause of death.", "Any investigation after something considered unsuccessful, especially used of meetings and bridge games.", "Occurring after death."], "exhoration": ["Language intended to incite and encourage."], "exhume": ["To remove from a grave."], "disinter": ["To remove from a grave."], "exigency": ["An urgent situation."], "exigent": ["Needing immediate action.", "Requiring much effort or expense."], "existance": ["The state of being, existing, or occurring."], "existent": ["Real and not potential.", "Having existence."], "existing": ["Having existence."], "existential": ["Of, or relating to existence."], "existentialism": ["A movement in twentieth-century literature and philosophy. Existentialism stresses that people are entirely free and therefore responsible for what they make of themselves."], "Chikomuselteko": ["An extinct Mayan language formerly spoken in the region defined by the municipios of Chicomuselo, Mazapa de Madero, and Amatenango de la Frontera in Chiapas, Mexico, as well as some nearby areas of Guatemala."], "Chicomucelteco": ["An extinct Mayan language formerly spoken in the region defined by the municipios of Chicomuselo, Mazapa de Madero, and Amatenango de la Frontera in Chiapas, Mexico, as well as some nearby areas of Guatemala."], "Ch'ol": ["Mayan language spoken by the Ch'ol people in the Mexican state of Chiapas."], "Sipakapense": ["A Mayan language, spoken natively within indigenous Sipakapense communities, primarily based in the Guatemalan municipality of Sipacapa, department of San Marcos."], "Vilamovian": ["A West Germanic language spoken in the small town of Wilamowice, Poland."], "Wilamowicean": ["A West Germanic language spoken in the small town of Wilamowice, Poland."], "exodus": ["A sudden departure of a large number of people."], "exoneration": ["The act of disburdening, discharging, or freeing morally from a charge or imputation."], "exorbitance": ["The state of being exorbitant."], "exorbitant": ["Exceeding proper limits."], "exorcism": ["The ritual act of driving out supposed evil spirits from persons, places or things who are possessed by them."], "exorcist": ["A person, especially a priest, who practices exorcism."], "earnestly": ["In an earnest manner."], "each time": ["Every time that."], "tall story": ["A retelling or account of events, especially a fictional or exaggerated one."], "cabal": ["A clever scheme or artful plot, usually crafted for evil purposes.", "A usually secret exclusive organization of individuals gathered for a nefarious purpose."], "earthly": ["Like or resembling the earth or of the earth."], "ecliptic": ["(Astronomy) The apparent path that the Sun traces out in the sky during the year."], "Egyptologist": ["A person who is skilled or practices Egyptology."], "ebullioscope": ["(Physics) An instrument for observing the boiling point of liquids, especially for determining the alcoholic strength of a mixture by the temperature at which it boils."], "Epicureanism": ["A system of philosophy based upon the teachings of Epicurus (c. 341\u2013c. 270 BCE)."], "good faith": ["Good, honest intentions, even if producing unfortunate results."], "expansive": ["Able to be expanded."], "eastern": ["Of, facing, situated in, or related to the east."], "expectancy": ["The state of expecting something."], "expectant": ["Marked by expectation."], "expectorant": ["An agent that promotes the discharge or expulsion of mucus from the respiratory tract."], "seriously": ["In an earnest manner."], "in earnest": ["In an earnest manner."], "faction": ["A usually secret exclusive organization of individuals gathered for a nefarious purpose."], "junto": ["A usually secret exclusive organization of individuals gathered for a nefarious purpose."], "camarilla": ["A usually secret exclusive organization of individuals gathered for a nefarious purpose."], "Lakshadweep": ["A group of islands 200 to 300 km off of the coast of Kerala in the Laccadive Sea."], "D\u00e1il \u00c9ireann": ["The principal chamber of the Oireachtas (Irish parliament)."], "expectorate": ["To cough up fluid from the lungs."], "expediency": ["Suitability for particular circumstance or situation."], "eggcup": ["A small cup used for serving boiled eggs within their shell."], "egg-cup": ["A small cup used for serving boiled eggs within their shell."], "to the": ["The contraction of preposition \"a\" with the article \"el\"."], "hubris": ["Excessive pride, presumption or arrogance originally toward the gods."], "exasperation": ["The act of exasperating or the state of being exasperated."], "worsen": ["To make worse.", "To grow worse."], "aggravate": ["To irritate or provoke to a high degree.", "To make worse."], "eternally": ["For all time, for all eternity; for an infinite amount of time."], "everlastingly": ["For all time, for all eternity; for an infinite amount of time."], "evermore": ["For all time, for all eternity; for an infinite amount of time."], "shudder": ["To shake nervously, as if from fear."], "shiver": ["To shake nervously, as if from fear."], "throb": ["To shake nervously, as if from fear."], "thrill": ["To shake nervously, as if from fear."], "smash": ["A song that is very popular for a while.", "To hit extremely hard.", "A hard return hitting a ball above your head.", "To hit (a ball) in a powerful overhead stroke.", "To hit violently."], "boom": ["To hit extremely hard."], "blast": ["Intense adverse criticism.", "To hit extremely hard."], "spirit": ["The undying essence of a human."], "atrociously": ["In an atrocious manner."], "terribly": ["In an atrocious manner.", "Of a dreadful kind."], "awfully": ["In an atrocious manner.", "Of a dreadful kind."], "abominably": ["In an atrocious manner."], "abysmally": ["In an atrocious manner."], "rottenly": ["In an atrocious manner."], "violently": ["In a violent manner."], "dreadfully": ["Of a dreadful kind."], "horribly": ["Of a dreadful kind."], "abundantly": ["In an abundant manner."], "copiously": ["In an abundant manner."], "extravagantly": ["In an abundant manner.", "In a wasteful manner.", "In a rich and lavish manner."], "conscientiously": ["In a conscientious manner."], "scrupulously": ["In a conscientious manner."], "religiously": ["In a conscientious manner."], "sincerely": ["In a sincere or earnest manner."], "unfeignedly": ["In a sincere or earnest manner."], "truly": ["In a sincere or earnest manner."], "irremediably": ["In a manner, or to a degree, that precludes remedy, cure, or correction."], "irremediable": ["Unable to be remedied, cured, corrected or repaired.", "(Of a disease) Impossible to cure."], "remediable": ["Capable of being remedied."], "remediate": ["To correct or amend something; set straight or right."], "strangely": ["In a strange or coincidental manner."], "mentally": ["With the mind."], "invariability": ["The quality of being invariable."], "invariably": ["Without variation."], "instinctively": ["Innately, by instinct, without being taught."], "undoubtably": ["In a manner that leaves no possibility of doubt."], "unquestionably": ["In a manner that leaves no possibility of doubt."], "doubtlessly": ["In a manner that leaves no possibility of doubt."], "indubitably": ["In a manner that leaves no possibility of doubt."], "evidently": ["With evidence."], "incredibly": ["In an incredible manner.", "In a wonderful manner."], "intensely": ["In an intense manner."], "faithfully": ["In a faithful manner."], "dependably": ["In a faithful manner."], "reliably": ["In a faithful manner."], "voluntarily": ["In a voluntary manner."], "visibly": ["in a visible manner."], "vertiginously": ["In a vertiginous manner."], "sadly": ["In an unfortunate manner.", "With sadness."], "quietly": ["In a quiet manner."], "take time": ["To spend time to do something."], "react": ["To act or perform a second time."], "shrink": ["To decrease in size, range, or extent."], "shrivel": ["To decrease in size, range, or extent."], "whisper": ["To speak in a quiet voice, without vibration of the vocal cords."], "startle": ["To excite by sudden alarm, surprise, or apprehension."], "resume": ["To start (something) again that has been stopped or paused from the point at which it was stopped or paused; to begin anew.", "To assume anew (a job, an activity, etc.)."], "opportunism": ["Taking advantage of opportunities without regard for the consequences for others."], "icy": ["Covered with or containing or consisting of ice."], "misfortune": ["An undesirable event such as an accident."], "bad luck": ["An undesirable event such as an accident."], "sensation": ["A physical feeling or perception from something that comes into contact with the body."], "feeling": ["The experiencing of affective and emotional states.", "A vague idea in which some confidence is placed."], "on top": ["In a higher position, with respect to a lower one."], "quartz": ["The second most abundant mineral in the Earth's continental crust (after feldspar). It is made up of a continuous framework of SiO4 silicon-oxygen tetrahedra, with each oxygen being shared between two tetrahedra, giving an overall formula SiO2. (source: Wikipedia)"], "prism": ["Optical device having a triangular shape and made of glass or quartz."], "optical prism": ["Optical device having a triangular shape and made of glass or quartz."], "opal": ["A mineraloid gel which is deposited at a relatively low temperature and may occur in the fissures of almost any kind of rock, being most commonly found with limonite, sandstone, rhyolite, marl and basalt. (source: Wikipedia)"], "motif": ["A recurring or dominant element."], "impossible": ["Not possible, not able to be done."], "bonfire": ["A large, controlled outdoor fire."], "missing": ["Not able to be found."], "ametrine": ["A naturally occurring variety of quartz. It is a mixture of amethyst and citrine with zones of purple and yellow or orange."], "ammolite": ["A rare and valuable opal-like organic gemstone found primarily along the eastern slopes of the Rocky Mountains of the United States and Canada."], "reproductive": ["Producing new life or offspring."], "parental": ["Of, or related to a parent."], "plumage": ["A branching, hair-like structure that grows on the skin of birds and protects them against coldness and water and allows their wings to create lift.", "The light horny waterproof structure forming the external covering of birds."], "plume": ["A branching, hair-like structure that grows on the skin of birds and protects them against coldness and water and allows their wings to create lift.", "The light horny waterproof structure forming the external covering of birds."], "immune": ["Exempt; not subject to."], "correlated": ["Mutually related."], "correlative": ["Mutually related."], "trade-off": ["Any situation in which one thing must be decreased for another to be increased."], "tradeoff": ["Any situation in which one thing must be decreased for another to be increased."], "thermal": ["Pertaining to heat or temperature.", "Providing efficient insulation so as to keep the body warm."], "tactic": ["A manoeuvre, or action calculated to achieve some end."], "tactical": ["Of, or relating to tactics."], "switch": ["To give something in return for something received.", "A device to turn electric current on and off or direct its flow.", "To change (something) to the specified state using a switch."], "switch off": ["To interrupt the operation of a machine by disconnecting it from its source of power."], "sexually": ["In a sexual manner.", "In an erotic manner."], "erotically": ["In an erotic manner."], "selective": ["Of or pertaining to the process of selection."], "reciprocity": ["The mutual exchange of commercial or other privileges.", "A relation of mutual dependence or action or influence."], "predict": ["To state, or make something known in advance, especially using inference or special knowledge.", "To make a prediction or prophecy."], "foretell": ["To state, or make something known in advance, especially using inference or special knowledge.", "To make a prediction or prophecy."], "prognosticate": ["To state, or make something known in advance, especially using inference or special knowledge."], "forebode": ["To state, or make something known in advance, especially using inference or special knowledge."], "physiological": ["Of, or relating to physiology."], "mitochondrial": ["Of, or relating to mitochondria."], "mediate": ["To resolve differences, or to bring about a settlement, between conflicting parties."], "maternally": ["In a maternal manner."], "intraspecific": ["Occuring among members of the same species."], "interspecific": ["Occuring among members of different species."], "inclusive": ["Including (almost) everything within its scope."], "heterogeneity": ["The quality of being diverse and not comparable in kind."], "heritable": ["Capable of being inherited."], "genetically": ["In a manner relating to genes or genetics."], "extrinsic": ["External, separable from the thing itself, inessential."], "dimorphism": ["The occurrence in an species of two distinct types of individual.", "A property of certain substances that enables them to exist in two distinct crystalline forms."], "behavioural": ["Of or pertaining to behaviour."], "rental": ["Of or relating to rent.", "Transfer to another person, by the owner, of the use of something, for a certain time, at a certain price.", "Something that is rented.", "The payment made to rent something."], "postindustrial": ["Of or relating to a society or economy marked by a lessened importance of manufacturing and an increase of services, information, and research."], "post-industrial": ["Of or relating to a society or economy marked by a lessened importance of manufacturing and an increase of services, information, and research."], "wage": ["An amount of money paid to a worker that depends on the number of hours of work."], "tenure": ["The right to hold property."], "substantial": ["Belonging to substance."], "socioeconomic": ["Involving social as well as economic factors."], "socio-economic": ["Involving social as well as economic factors."], "racial": ["Of or pertaining to a race."], "occupational": ["Of, relating to, or caused by an occupation."], "mobility": ["The condition of being mobile."], "mobilise": ["To make something mobile."], "mobilisation": ["The act of mobilising."], "manufacturing": ["The action of the verb to manufacture."], "inner-city": ["In the United States, United Kingdom and Ireland: Part of a city at or near the centre, especially a slum area where poor people live in bad housing."], "innercity": ["In the United States, United Kingdom and Ireland: Part of a city at or near the centre, especially a slum area where poor people live in bad housing."], "decision-making": ["Having the ability to make decisions."], "groove": ["A settled and monotonous routine that is hard to escape."], "old-hat": ["Repeated too often; overfamiliar through overuse."], "shopworn": ["Repeated too often; overfamiliar through overuse."], "threadbare": ["Repeated too often; overfamiliar through overuse.", "Of fabric or clothing: Used so much that the warp threads show."], "timeworn": ["Repeated too often; overfamiliar through overuse."], "well-worn": ["Repeated too often; overfamiliar through overuse."], "trito": ["Repeated too often; overfamiliar through overuse."], "glum": ["Moody and melancholic."], "tagine": ["Traditional cooking pot of North African cuisine which is made of clay and has a cone-shaped lid which allows condensated water to flow back down.", "Traditional dish of North African cuisine which is named after the cooking pot of the same name."], "tajine": ["Traditional cooking pot of North African cuisine which is made of clay and has a cone-shaped lid which allows condensated water to flow back down.", "Traditional dish of North African cuisine which is named after the cooking pot of the same name."], "agelaste": ["Person who does not laugh, who does not understand humor."], "dour": ["Moody and melancholic."], "glowering": ["Moody and melancholic."], "moody": ["Moody and melancholic.", "Subject to sharply varying moods."], "morose": ["Moody and melancholic."], "saturnine": ["Moody and melancholic."], "sullen": ["Moody and melancholic."], "architectural engineering": ["The application of engineering principles and technology to building design and construction."], "expeditious": ["Characterized by speed; acting or moving quickly."], "speedy": ["Characterized by speed; acting or moving quickly."], "swift": ["Characterized by speed; acting or moving quickly."], "expend": ["To pay out or expend money.", "To consume fully."], "expense account": ["An account of business expenditures, as travel, hotel room, meals, and entertainment connected with work, for which an employee will be reimbursed by an employer."], "ecologically": ["In an ecological manner."], "eastward": ["Situated or directed towards the east."], "eastwards": ["Situated or directed towards the east."], "exothermic": ["(chemistry) Of a chemical reaction that releases energy in the form of heat."], "turbidness": ["Cloudy or hazy appearance in a naturally clear liquid caused by a suspension of colloidal liquid droplets or fine solids."], "carefully": ["In a careful manner ; with care."], "harmful": ["Causing damage or harm."], "prejudicial": ["Causing damage or harm.", "Exhibiting prejudice or bias."], "snarl-up": ["A number of vehicles so obstructed that they can scarcely move."], "traffic congestion": ["A number of vehicles so obstructed that they can scarcely move."], "stopper": ["Conical or cylindrical-shaped plug that is pushed in the bottleneck of a (wine) bottle to stop it up."], "bottle stopper": ["Conical or cylindrical-shaped plug that is pushed in the bottleneck of a (wine) bottle to stop it up."], "vanquish": ["To end in success a struggle or contest."], "dietary": ["Of or relating to the diet."], "intervention": ["The act of intervening."], "supplemental": ["That is being added as integratory part.", "Functioning in a supporting capacity."], "proliferation": ["A rapid increase in number."], "oxidative": ["Taking place in the presence of oxygen."], "nutritional": ["Of or relating to or providing nutrition."], "mucosal": ["Of or relating to mucous membranes."], "mucose": ["Of or secreting or covered with or resembling mucus."], "mucous": ["Of or secreting or covered with or resembling mucus."], "micronutrient": ["A substance needed only in small amounts for normal body function."], "long-term": ["Relating to or extending over a relatively long time."], "long-run": ["Relating to or extending over a relatively long time."], "insecurity": ["The anxiety you experience when you feel vulnerable and insecure.", "The state of being subject to danger or injury."], "inflammatory": ["Causing or caused by inflammation.", "Arousing to action or rebellion."], "breast-feeding": ["The feeding of an infant or young child with breast milk directly from human breasts rather than from a baby bottle or other container."], "nursing": ["The feeding of an infant or young child with breast milk directly from human breasts rather than from a baby bottle or other container."], "breast feeding": ["The feeding of an infant or young child with breast milk directly from human breasts rather than from a baby bottle or other container."], "breastfeeding": ["The feeding of an infant or young child with breast milk directly from human breasts rather than from a baby bottle or other container."], "antiinflammatory": ["Counteracting inflammation.", "A medicine intended to reduce inflammation."], "anti-inflammatory drug": ["A medicine intended to reduce inflammation."], "unclear": ["Liable to more than one interpretation.", "Expressed in an unclear fashion."], "systolic": ["Of or relating to a systole or happening during a systole."], "synthase": ["An enzyme which catalyzes a synthesis process."], "subsequent": ["Following in time or order."], "stimulation": ["The act of arousing an organism to action."], "responsible": ["Being the agent or cause."], "randomly": ["In a random manner."], "indiscriminately": ["In a random manner."], "haphazardly": ["In a random manner."], "willy-nilly": ["In a random manner."], "arbitrarily": ["In a random manner."], "at random": ["In a random manner."], "every which way": ["In a random manner."], "pulmonary": ["Relating to or affecting the lungs."], "pneumonic": ["Relating to or affecting the lungs."], "pulmonic": ["Relating to or affecting the lungs."], "protective": ["Intended or wishing to protect."], "positively": ["In a positive manner."], "turbulence": ["Disturbance in a gas or fluid, characterized by evidence of internal motion or unrest."], "peripheral": ["On the periphery or boundary.", "A device attached to a host computer but not part of it, and is more or less dependent on the host."], "orally": ["By mouth.", "By spoken rather than written means."], "oat": ["A species of grass (Avena sativa) grown for its seed."], "neuronal": ["Of, or relating to a neuron."], "negatively": ["In a negative manner."], "neuronic": ["Of, or relating to a neuron."], "logistic": ["Relating to logistics."], "lipoprotein": ["A biochemical assembly that contains both proteins and lipids."], "largely": ["In a widespread or large manner."], "inversely": ["By inversion."], "reciprocally": ["By inversion."], "enzymatic": ["of, relating to, or caused by enzymes."], "efficacy": ["The ability to produce a desired amount of a desired effect."], "efficaciousness": ["The ability to produce a desired amount of a desired effect."], "subjugate": ["To put somebody under one's authority."], "thermodynamic temperature": ["The temperature measured with regard to the absolute zero."], "uproar": ["The noise as made by a crowd."], "isobaric": ["(Of a thermodynamic process) Having a constant pressure throughout."], "feverish": ["Very active and nervous.", "Having a fever."], "Japanese horseradish": ["A member of the Brassicaceae family, which originally grew in Japan and the island of Sakhalin and whose root is used as a hot spice."], "differential": ["Of, or relating to a difference."], "diabetic": ["Of or pertaining to diabetes, especially diabetes mellitus.", "A person who has diabetes.", "Having diabetes.", "A woman who has diabetes."], "circumference": ["The line that bounds a circle."], "bacterial": ["Of, relating to, or caused by bacteria."], "transgenic": ["Of, or pertaining to an organism whose genome has been changed by the addition of a gene from another species; genetically modified."], "susceptibility": ["The condition of being susceptible."], "unstable": ["Lacking physical stability."], "instable": ["Lacking physical stability."], "unstably": ["In an unstable manner."], "instably": ["In an unstable manner."], "scrawl": ["An irregular and illegible handwriting.", "To write with an irregular and illegible handwriting."], "stimulate": ["To arouse or stir up emotions or feelings.", "To encourage into action; to cause to act in a specified manner.", "To act as a stimulant."], "generation gap": ["A disconnect between members of one generation and members of the next based on the later generation developing habits, attitudes, and preferences inconsistent with the experience of the former."], "expiate": ["To atone for."], "expiation": ["An act of atonement for a sin or wrongdoing."], "scholarly": ["Of, or related to scholars or scholarship."], "institutional": ["Organized as or forming an institution."], "intellectual": ["Belonging to, or performed by, the intellect."], "increasingly": ["Increasing in amount or intensity."], "charismatic": ["Of, related to, or having charisma."], "undergraduate": ["A student at a university who has not yet received a degree."], "sustainability": ["The ability to sustain something."], "submission": ["The act of submitting.", "The thing which has been submitted."], "routinely": ["In a way that has become common or expected."], "reader": ["A person who reads a publication."], "pottery": ["Fired ceramic wares that contain clay when formed.", "Pottery of baked or hardened clay."], "narrative": ["Telling a story."], "literary": ["Relating to literature."], "innovative": ["Characterized by the creation of new ideas or things.", "Ahead of the times."], "fundamentally": ["In a fundamental, essential or basic manner.", "To the very core of the matter."], "end user": ["The final consumer of a product."], "end-user": ["The final consumer of a product."], "e-book": ["Electronic book, a book published in electronic form."], "Washington, D.C.": ["The capital of the United States of America, located in the District of Columbia."], "Tirane": ["The capital and largest city of Albania."], "aby": ["To atone for."], "abye": ["To atone for."], "expiry": ["Expiration of breath.", "An expiration, especially of a contract or an agreement.", "The cessation of life and all associated processes."], "expiry date": ["The last date that a product, as food, should be used before it is considered spoiled or ineffective, usually specified on the label or package."], "expiration date": ["The last date that a product, as food, should be used before it is considered spoiled or ineffective, usually specified on the label or package."], "circumvent": ["To beset or surround with armed forces, for the purpose of compelling to surrender.", "To avoid an obstacle by going around it."], "embrass": ["To include completely; to describe fully or comprehensively."], "numerical": ["Of or pertaining to numbers."], "lattice": ["A flat panel constructed with widely-spaced crossed thin strips of wood or other material. It is commonly used as a garden trellis.", "A regular spacing or arrangement of geometric points, often decorated with a motif."], "numeric": ["Of or pertaining to numbers."], "vibrational": ["Of or pertaining to vibration."], "vibrating": ["Moving very rapidly to and from or up and down."], "vibratory": ["Moving very rapidly to and from or up and down."], "velocity": ["A scalar measure of the rate of movement of a body expressed either as the distance travelled divided by the time taken (average speed) or the rate of change of position with respect to time at a particular point (instantaneous speed). It is measured in metres per second, miles per hour, etc."], "strength": ["The quality of being strong.", "Muscular capacity to modify the speed of an external physical object, to deform it or to oppose another force."], "resonance": ["The condition of being resonant.", "A resonant sound.", "Something that evokes an association, or a strong emotion."], "regime": ["Mode of rule or management."], "explanatory": ["Intended to serve as an explanation."], "qubit": ["A quantum bit; the unit of quantum information."], "intensity": ["The magnitude of the physiological sensation produced by a sound, which varies directly with the physical intensity of sound but also depends on frequency of sound and waveform.", "The quality of being intense."], "explicable": ["Able to be explained.", "Able to be explained."], "walker": ["A person who walks."], "explicate": ["To inform about the reason for something, how something works, or how to do something.", "To make plain and comprehensible."], "Vega": ["The brightest star in the constellation Lyra, the fifth brightest star in the night sky and the second brightest star in the northern celestial hemisphere, after Arcturus."], "Veracruz": ["A major port city and municipality on the Gulf of Mexico in the Mexican state of Veracruz.", "One of the 31 states of Mexico, located east-central part of the country."], "zoological": ["Of, or relating to, animals.", "Of, or relating to, zoology."], "city planning": ["The study and theory of building and other physical needs in cities or predominantly urban cultures."], "town planning": ["The study and theory of building and other physical needs in cities or predominantly urban cultures."], "town-planning": ["The study and theory of building and other physical needs in cities or predominantly urban cultures."], "revolt": ["Collective violent action against an established power or arbitrary authority."], "uprising": ["Collective violent action against an established power or arbitrary authority."], "hydrographic": ["Of or relating to the science of hydrography."], "hydroelectric": ["Of or relating to or used in the production of electricity by waterpower."], "self-appraisal": ["Appraisal of one's own personal qualities or traits (source: UMLS)."], "self-mutilation": ["The act of injuring one's own body to the extent of cutting off or permanently destroying a limb or other essential part of a body (source: UMLS)."], "put on a big spread": ["To spend a lot of money to receive someone, particularly for a meal."], "school backpack": ["A bag for carrying school supplies and textbooks."], "pervasive": ["Manifested throughout."], "penetrating": ["Manifested throughout."], "pervading": ["Manifested throughout."], "permeating": ["Manifested throughout."], "exploratory": ["Pertaining to or concerned with exploration.", "Making a beginning but not being the real thing."], "postpartum period": ["The period beginning immediately after the birth of a child and extending for about six weeks in which the mother recovers from pregnancy and birth."], "puerperium": ["The period beginning immediately after the birth of a child and extending for about six weeks in which the mother recovers from pregnancy and birth."], "condensate": ["A liquid that is the product of condensation."], "childbed": ["The period beginning immediately after the birth of a child and extending for about six weeks in which the mother recovers from pregnancy and birth."], "woman in childbed": ["A woman who has recently given birth and recovers from pregnancy and childbirth."], "valence": ["A measure of the number of chemical bonds formed by the atoms of a given element (source: Wikipedia)."], "valency": ["A measure of the number of chemical bonds formed by the atoms of a given element (source: Wikipedia)."], "valency number": ["A measure of the number of chemical bonds formed by the atoms of a given element (source: Wikipedia)."], "lochia": ["Vaginal discharge after childbirth which contains blood, mucus and placental tissue and lasts for about 4-6 weeks."], "unconventional": ["Not adhering to convention or accepted standards."], "life-size": ["Being of the natural size of a person, object etc."], "life-sized": ["Being of the natural size of a person, object etc."], "larger-than-life": ["Being larger than the natural size of a person, object etc."], "larger than life": ["Being larger than the natural size of a person, object etc."], "less than life-size": ["Being smaller than the natural size of a person, object etc."], "thwartwise": ["Across something in a perpendicular or oblique way."], "transverse": ["Across something in a perpendicular or oblique way.", "In a crosswise direction."], "transversal": ["Across something in a perpendicular or oblique way."], "transversely": ["In a transverse manner."], "transversally": ["In a transverse manner."], "crossways": ["In a transverse manner."], "yaws": ["Tropical infection of the skin, bones and joints caused by the spirochete bacterium \"Treponema pallidum pertenue\"."], "thymosis": ["Tropical infection of the skin, bones and joints caused by the spirochete bacterium \"Treponema pallidum pertenue\"."], "polypapilloma tropicum": ["Tropical infection of the skin, bones and joints caused by the spirochete bacterium \"Treponema pallidum pertenue\"."], "pian": ["Tropical infection of the skin, bones and joints caused by the spirochete bacterium \"Treponema pallidum pertenue\"."], "parangi": ["Tropical infection of the skin, bones and joints caused by the spirochete bacterium \"Treponema pallidum pertenue\"."], "hoaxer": ["Someone who makes jokes or play on words in poor tastes."], "thickness": ["The property of being thick (in dimension)."], "stationary": ["Not capable of being moved.", "Not moving; standing still."], "Angouma": ["Tree in the family Burseraceae used mainly for the manufacture of plywood."], "Gaboon": ["Tree in the family Burseraceae used mainly for the manufacture of plywood."], "Okoum\u00e9": ["Tree in the family Burseraceae used mainly for the manufacture of plywood."], "decrepit": ["(Of a person) Very weakened or worn-down by age."], "worn-out": ["(For clothes) Whose colors have faded as a consequence of being worn intensively."], "age worn": ["(Of a person) Very weakened or worn-down by age."], "age-worn": ["(Of a person) Very weakened or worn-down by age."], "worn out": ["(For clothes) Whose colors have faded as a consequence of being worn intensively."], "ragged": ["(For clothes) Damaged, with holes, as a consequence of being worn intensively."], "resonant": ["Inducing resonance.", "Characterized by reverberation."], "tattered": ["(For clothes) Damaged, with holes, as a consequence of being worn intensively."], "resonating": ["Characterized by reverberation."], "reverberating": ["Characterized by reverberation."], "resounding": ["Characterized by reverberation."], "reverberative": ["Characterized by reverberation."], "rolling": ["Characterized by reverberation."], "realization": ["The act of realizing."], "pulsed": ["Produced or transmitted or modulated in short bursts or pulses."], "khedive": ["Hereditary title given since 1867 to the viceroy of Egypt."], "horse dealer": ["Person whose occupation is to buy or sell horses."], "horse trader": ["Person whose occupation is to buy or sell horses."], "trafficker": ["Person who takes part in a deal to make a profit more or less illegally."], "frauder": ["Person who takes part in a deal to make a profit more or less illegally."], "defrauder": ["Person who takes part in a deal to make a profit more or less illegally."], "fraudster": ["Person who takes part in a deal to make a profit more or less illegally."], "epigone": ["A person who follows the style of a personality, by admiration."], "pulsate": ["To produce or modulate.", "To expand and contract rhythmically (e.g. of the heart)."], "time-dependent": ["Determined by the value of a variable representing time."], "photonics": ["The science and technology of generating and controlling photons, particularly in the visible and near infrared light spectrum."], "photonic": ["Of, or relating to photons or to photonics."], "photoelectron": ["An electron ejected from the surface of a material by the photoelectric effect."], "photoelectric effect": ["A phenomenon in which electrons are emitted from matter (metals and non-metallic solids, liquids, or gases) after the absorption of energy from electromagnetic radiation such as X-rays or visible light."], "photoelectric": ["Of, or relating to the electric effects of electromagnetic radiation, especially to the ejection of an electron from a surface by a photon."], "photoelectric cell": ["A transducer that generates an electric current proportional to the light intensity."], "numerically": ["In terms of numbers."], "microfluidics": ["A discipline that deals with the behavior, precise control and manipulation of fluids that are geometrically constrained to a small, typically sub-millimeter, scale."], "microfluidic": ["Of, pertaining to, or using microfluidics."], "kinetic": ["Characterized by motion."], "kinetics": ["The branch of classical mechanics that is concerned with the relationship between the motion of bodies and its causes, namely forces and torques (source: Wikipedia)."], "instability": ["The lack of stability."], "prankster": ["Someone who makes jokes or play on words in poor tastes."], "cut-up": ["Someone who makes jokes or play on words in poor tastes."], "trickster": ["A person who acts dishonestly.", "Someone who makes jokes or play on words in poor tastes."], "tricker": ["Someone who makes jokes or play on words in poor tastes."], "practical joker": ["Someone who makes jokes or play on words in poor tastes."], "explorer": ["A person who by means of travel searches out new information."], "impurity": ["A component or additive that renders something else impure.", "The condition of being impure, because of contamination, pollution, etc."], "galactic": ["Relating to the galaxy or a galaxy."], "ferromagnetic": ["Of a material, such as iron or nickel, that is easily magnetized."], "dynamical": ["In motion usually as the result of an external force."], "ferromagnetism": ["The basic mechanism by which certain materials (such as iron or nickel) form permanent magnets and/or exhibit strong interactions with magnets."], "trouser pocket": ["A pocket in a pair of pants, trousers, or shorts."], "trembling": ["Vibrating slightly and irregularly."], "quaking": ["Vibrating slightly and irregularly."], "quivering": ["Vibrating slightly and irregularly."], "shaking": ["Vibrating slightly and irregularly."], "shaky": ["Vibrating slightly and irregularly."], "shivering": ["Vibrating slightly and irregularly."], "tact": ["Careful consideration in dealing with others to avoid giving offense."], "silhouette": ["A representation of the outlines of an object filled in with a single color."], "rumour": ["A piece of information of questionable accuracy, from no known reliable source, usually spread by word of mouth."], "exponent": ["One who supports something.", "(Mathematics) A number placed above and to the right of another number to show that it has been raised to a power.", "One who expounds, represents or advocates."], "coffer": ["Each of the sunken panels in a ceiling, soffit or vault."], "coffering": ["Each of the sunken panels in a ceiling, soffit or vault."], "exposed": ["Left or being without shelter or protection."], "obliquely": ["In an oblique manner."], "against the clock": ["In a time-restricted manner."], "against time": ["In a time-restricted manner."], "at once": ["In an immediate manner; instantly or without delay.", "At the same time.", "In the time directly following on the present moment."], "purposely": ["With intention; in an intentional manner."], "dorsoventral": ["Of, pertaining to, or situated at the back and belly of something."], "dorsoventrally": ["In a dorsoventral manner."], "mistakenly": ["By mistake."], "erroneously": ["By mistake."], "jubilantly": ["With jubilation or triumph."], "happily": ["With jubilation or triumph.", "[An adverb used in expressions of good wish, meaning: happily, with no worries]"], "merrily": ["With jubilation or triumph.", "In a cheerful or merry manner."], "mirthfully": ["With jubilation or triumph."], "gayly": ["With jubilation or triumph.", "In a cheerful or merry manner."], "blithely": ["With jubilation or triumph."], "with happiness": ["With jubilation or triumph."], "wonderfully": ["In a wonderful manner."], "wondrous": ["Causing wonder, admiration or astonishment.", "In a wonderful manner."], "wondrously": ["In a wonderful manner."], "superbly": ["In a wonderful manner."], "toppingly": ["In a wonderful manner."], "marvellously": ["In a wonderful manner."], "terrifically": ["In a wonderful manner."], "marvelously": ["In a wonderful manner."], "surgically": ["In a surgical manner; by means of surgery."], "surgical": ["Of, relating to, used in, or resulting from surgery."], "thoroughly": ["In a thorough or complete manner."], "soundly": ["In a thorough or complete manner."], "heartily": ["In a hearty manner."], "cordially": ["In a hearty manner."], "warmly": ["In a hearty manner."], "gentlemanly": ["Befitting a man of good breeding."], "gentlemanlike": ["Befitting a man of good breeding."], "snout": ["The muzzle of swine (Suidae), like that of the pig and wild boar."], "Eurasia": ["The largest landmass on Earth, consisting of Europe and Asia."], "Port-au-Prince": ["The capital and largest city of Haiti."], "commercially": ["In a commercial manner."], "inevitably": ["In a manner that is impossible to avoid or prevent."], "inexorably": ["In a manner that is impossible to avoid or prevent."], "of necessity": ["In a manner that is impossible to avoid or prevent."], "needs": ["In a manner that is impossible to avoid or prevent."], "categorically": ["In a categorical manner."], "flatly": ["In a categorical manner."], "unconditionally": ["Without question.", "In a categorical manner."], "timidly": ["In a timid manner."], "bashfully": ["In a timid manner."], "shyly": ["In a timid manner."], "stuff": ["Miscellaneous items.", "To press or force."], "whatchamacalli": ["Miscellaneous items."], "whatsis": ["Miscellaneous items."], "sundry": ["Miscellaneous items."], "sundries": ["Miscellaneous items."], "don't-know": ["A person who responds `I don't know' in a public opinion poll."], "O.K.": ["In a satisfactory or adequate manner."], "all right": ["In a satisfactory or adequate manner."], "alright": ["In a satisfactory or adequate manner."], "struggle": ["An energetic attempt to achieve something.", "To make a strenuous or labored effort."], "faux Cyrillic": ["The use of Cyrillic letters in Latin text to evoke the Soviet Union or Russia."], "pseudo-Cyrillic": ["The use of Cyrillic letters in Latin text to evoke the Soviet Union or Russia."], "pseudo-Russian": ["The use of Cyrillic letters in Latin text to evoke the Soviet Union or Russia."], "faux Russian": ["The use of Cyrillic letters in Latin text to evoke the Soviet Union or Russia."], "Cyrillic script": ["An alphabet used for several East and South Slavic languages and many other languages of the former Soviet Union, Asia and Eastern Europe."], "Western Baltic Cluster": ["The western branch of a group of related languages belonging to the Indo-European language family and spoken mainly in areas extending east and southeast of the Baltic Sea in Northern Europe."], "Sudovian": ["An extinct western Baltic language in Northeastern Europe."], "Jatvingian": ["An extinct western Baltic language in Northeastern Europe."], "Skalvian": ["An extinct language in the western branch of the Western Baltic Cluster, formerly spoken by the Scalovians around the city of Neman in Lithuania."], "Selonian": ["A language spoken by the Eastern Baltic tribe of Selonians, who lived until the 15th century in Selonia, a territory in South Eastern Latvia and North Eastern Lithuania."], "electrostatic": ["Of or pertaining to static electricity."], "Taoism": ["A variety of related philosophical and religious traditions and concepts that have influenced East Asia for over two millennia and the West for over two centuries."], "reporter": ["A person who investigates and reports or edits news stories."], "newsman": ["A person who investigates and reports or edits news stories."], "newsperson": ["A person who investigates and reports or edits news stories."], "newswoman": ["A female person who investigates and reports or edits news stories."], "teamster": ["A man who drives a truck.", "A woman who drives a truck.", "A person who drives a truck."], "trucker": ["A man who drives a truck.", "A woman who drives a truck.", "A person who drives a truck."], "truck driver": ["A man who drives a truck.", "A woman who drives a truck.", "A person who drives a truck."], "frivolity": ["A frivolous act."], "frivolous": ["Not serious in content or attitude or behavior."], "sheaf": ["Several objects bound together."], "insulator": ["A substance that does not transmit heat (thermal insulator), sound (acoustic insulator) or electricity (electrical insulator)."], "curriculum vitae": ["A written account of one's life comprising one's education, accomplishments, work experience, publications, etc.; especially, one used to apply for a job."], "flagpole": ["A tall pole up which one or more flags may be raised and flown."], "flagstaff": ["A tall pole up which one or more flags may be raised and flown."], "heath": ["Any small evergreen shrub of the genus Erica."], "shareholder": ["One who owns shares of stock."], "pliers": ["A gripping tool that multiplies the strength of the user's hand."], "anesthesiology": ["The science, study, or practice of the use of anesthesia or anesthetics."], "self-esteem": ["Personal feelings or opinions of oneself."], "self-respect": ["Personal feelings or opinions of oneself."], "self-regard": ["Personal feelings or opinions of oneself."], "scholarship holder": ["Grant-holder, scholarship-holder."], "educable": ["Capable of being educated."], "educatable": ["Capable of being educated."], "cofactor": ["A contributing factor."], "Costa Rican": ["A person from Costa Rica, or of Costa Rican ancestry.", "Of or relating to Costa Rica or Costa Rican."], "docosanol": ["A saturated fatty alcohol used mainly as an antiviral agent, specifically for treatment of cold sores."], "dalmatian": ["A large breed having a smooth white coat with black or brown spots; originated in Dalmatia."], "Dalmatia": ["A region on the eastern coast of the Adriatic Sea and is situated chiefly in modern Croatia."], "friction": ["The rubbing of one object or surface against another."], "photochemistry": ["The study of photochemical reactions."], "fluorocarbon": ["Any derivative of a hydrocarbon in which every hydrogen atom has been replaced by fluorine."], "forger": ["Person who falsifies documents with intent to defraud, eg, to create a false will."], "stapler": ["A device which binds together sheets of paper by driving a thin metal staple through the sheets and simultaneously folding over the ends of the staple against the back surface of the paper."], "enclosure": ["An area, domain, or amount of something partially or entirely enclosed by barriers."], "scarlet fever": ["A streptococcal infection, mainly occuring among children, and characterized by a red skin rash, sore throat and fever."], "electromechanical": ["Related to electricity (or electronics) and mechanics."], "ambush": ["The act of concealing yourself and lying in wait to attack by surprise.", "To station in ambush with a view to surprise an enemy."], "lying in wait": ["The act of concealing yourself and lying in wait to attack by surprise."], "ambuscade": ["The act of concealing yourself and lying in wait to attack by surprise."], "disguise": ["An attire (e.g. clothing) used to hide one's identity or assume another."], "tasting": ["The taking of a small amount of food or drink into the mouth in order to taste it."], "cent": ["A subunit of currency equal to one-hundredth of the main unit of currency in many countries."], "teaspoon": ["A small spoon used to stir the contents of a cup or glass."], "wallet": ["A flat, foldable, pocket case, for keeping paper money, credit cards, identification cards, etc."], "billfold": ["A flat, foldable, pocket case, for keeping paper money, credit cards, identification cards, etc."], "notecase": ["A flat, foldable, pocket case, for keeping paper money, credit cards, identification cards, etc."], "pocketbook": ["A flat, foldable, pocket case, for keeping paper money, credit cards, identification cards, etc."], "road roller": ["A heavy engineering vehicle used to compact asphalt in the construction of roads."], "honesty": ["The act, quality, or condition of being honest; to be truthful."], "honestness": ["The act, quality, or condition of being honest; to be truthful."], "Latin American": ["A native or inhabitant of Latin America, or of such descent.", "Of or relating to Latin America, its people, or its culture."], "luminol": ["A chemical that exhibits blue chemiluminescence when mixed with an appropriate oxidizing agent."], "meagre": ["A fish (Argyrosomus regius) of the Sciaenidae family."], "ignorance": ["Lack of knowledge or information."], "businessman": ["A man in business, one who works at a commercial institution."], "Madrilenian": ["Someone from Madrid.", "Of or pertaining to Madrid, or to its inhabitants."], "washing machine": ["A machine, usually automatic, which washes clothes etc."], "extremist": ["A supporter or advocate of extreme doctrines or practices.", "Of, or relating to extremism."], "extremism": ["Extreme ideas or actions."], "extrapolate": ["To infer an unknown from something that is known."], "extrapolation": ["An inference about some hypothetical situation based on known facts."], "eyebolt": ["A bolt having a ring-shaped head."], "electromechanics": ["A discipline that combines the fields of electromagnetism of electrical engineering and mechanics."], "pneumatic": ["Of, or related to air or other gases."], "pneumatics": ["The branch of mechanics that deals with the mechanical properties of gases."], "modernization": ["The process of modernizing."], "Ivorian": ["A person from Cote d'Ivoire, or of Ivorian ancestry.", "Of or relating to Cote d'Ivoire or Ivorians."], "ordinate": ["In the Cartesian system, the vertical coordinate."], "abscissa": ["In the Cartesian system, the horizontal coordinate."], "footbridge": ["A bridge over a road, railway, river, etc for pedestrians."], "penicillin": ["A group of antibiotics derived from Penicillium fungi."], "perfection": ["The quality or state of being perfect or complete."], "dilemma": ["A circumstance in which a choice must be made between two or more alternatives that seem equally undesirable."], "eyelet": ["A small hole, usually round and finished along the edge, as in cloth or leather for the passage of a lace or cord or as in embroidery for ornamental effect."], "exudation": ["The act of exuding.", "Something that is exuded."], "extrusion": ["The act of extruding or the state of being extruded."], "extruder": ["A machine that extrudes material through shaped dies."], "extraterrestrial": ["Originating, located, or occurring outside Earth or its atmosphere."], "extraordinarily": ["Beyond what is ordinary or usual."], "extrados": ["The exterior curve or surface of an arch or vault."], "extortionist": ["A person who engages in extortion."], "extortion": ["The practice of extorting money or other property."], "extort": ["To gain money, a promise, etc. by compulsion or violence."], "eye bolt": ["A bolt having a ring-shaped head."], "extrusive": ["Of or related to extrusion."], "extirpation": ["The act of destroying or getting rid of something.", "The complete destruction of every trace of something."], "extinguisher": ["Any of various portable devices for extinguishing a fire with chemicals."], "exterminator": ["A person or business establishment specializing in the elimination of vermin, insects, etc."], "inordinately": ["Beyond what is ordinary or usual."], "extortioner": ["A person who engages in extortion."], "extinguishant": ["That serves to extinguish."], "regenerative brake": ["A mechanism that reduces vehicle speed by converting some of its kinetic energy into a storeable form of energy instead of dissipating it as heat as with a conventional brake (source: Wikipedia)."], "KERS": ["A mechanism that reduces vehicle speed by converting some of its kinetic energy into a storeable form of energy instead of dissipating it as heat as with a conventional brake (source: Wikipedia)."], "racer": ["Someone who takes part in a race."], "pole position": ["The most favorable position at the start of a race."], "extermination": ["The act of exterminating."], "exterminate": ["To destroy completely leaving no trace.", "To get rid of by destroying.", "To kill in large numbers."], "extenuating": ["That lessens the seriousness of something by providing an excuse."], "Thomasina": ["A female given name, the feminine form of Thomas."], "Thomasine": ["A female given name, the feminine form of Thomas."], "Tamsin": ["A female given name, the feminine form of Thomas."], "pasta plate": ["A deep plate used especially for pasta dishes."], "pasta bowl": ["A deep plate used especially for pasta dishes."], "porcelain plate": ["A plate made of porcelain."], "buttery": ["As soft as butter; very soft."], "religious": ["Believing in and showing reverence for God or a deity."], "believing": ["Believing in and showing reverence for God or a deity."], "God-fearing": ["Believing in and showing reverence for God or a deity."], "emergency lie": ["A lie that is told in an emergency situation in order to spare someone or to prevent something bad from happening."], "white lie": ["A lie that is told to avoid offense and to maintain harmony."], "Peronist": ["A supporter of Juan Per\u00f3n, Eva Per\u00f3n, or their regime."], "Chavista": ["A follower of Hugo Ch\u00e1vez."], "pirate": ["A criminal who plunders at sea; commonly attacking merchant vessels, though often pillaging port towns.", "A member of a pirate party."], "safe-conduct": ["Permit issued by an authority which guarantees a person to enter and spend time in a place in which otherwise she could not enter."], "Senegalese": ["A person from Senegal or of Senegalese descent.", "Of, from, or pertaining to Senegal, the Senegalese people or the Senegalese language."], "pencil sharpener": ["A device used to sharpen pencils by shaving the wood at one end."], "topographer": ["A person who studies or records topography."], "topographic": ["Of, or relating to topography."], "whooping cough": ["A contagious disease of the respiratory system that usually affects children."], "chin cough": ["A contagious disease of the respiratory system that usually affects children."], "extensometer": ["An instrument for measuring minute degrees of expansion, contraction, or deformation."], "extensively": ["In an extensive manner."], "extensible": ["Capable of being extended."], "expulsion": ["The act of expelling or the state of being expelled."], "expressionist": ["A painter who paints in this style.", "Of, pertaining to, or in the style of expressionism."], "forced abortion": ["An abortion performed against the will of the pregnant woman."], "compulsory sterilization": ["Sterilization without the consent of the person concerned."], "forced sterilization": ["Sterilization without the consent of the person concerned."], "forced marriage": ["A marriage against the will of one or both parties concerned."], "arranged marriage": ["A marriage that is not arranged by the bride or groom but by a third party (for example the parents)."], "prearranged marriage": ["A marriage that is not arranged by the bride or groom but by a third party (for example the parents)."], "expressible": ["Able to be expressed."], "explainable": ["Able to be explained."], "expectoration": ["The act of expectorating.", "Matter that is expectorated."], "expatriation": ["Migration from a place.", "The act of expelling a person from his native land."], "cheesecloth": ["A loosewoven cotton cloth used in cheese making."], "expansionist": ["An advocate of expansionism.", "Of or pertaining to expansionism."], "expansionary": ["Of or pertaining to expansionism."], "Manifest Destiny": ["A term used in the 19th century to designate the belief that the United States of America was destined to expand across the North American continent, from the Atlantic seaboard to the Pacific Ocean."], "Santa": ["Symbol of Christmas gift-giving.", "A Mongolic language spoken by the Dongxiang people in northwest China."], "Saint Nicholas": ["Symbol of Christmas gift-giving."], "Kris Kringle": ["Symbol of Christmas gift-giving."], "expandable": ["Able to be expanded."], "exogamy": ["The custom of marrying outside a specified group of people to which a person belongs."], "exigible": ["Liable to be exacted."], "requirable": ["Liable to be exacted."], "exhumation": ["The act of digging a dead body out of the earth."], "anecdotical": ["Pertaining to or resembling anecdotes."], "anecdotic": ["Pertaining to or resembling anecdotes."], "anecdotal": ["Pertaining to or resembling anecdotes."], "cherry-sized": ["Having the size of a cherry."], "kneel": ["To go down on one or both knees.", "To remain in a position where the bodyweight rests on one or both knees."], "kneel down": ["To go down on one or both knees."], "monochromic": ["Having only one color."], "monochromical": ["Having only one color."], "polychrome": ["Having many colors."], "bichrome": ["Having two colors."], "dichromic": ["Having two colors."], "dichroic": ["Having two colors.", "Exhibiting dichroism."], "out-migration": ["Migration from a place."], "deportation": ["The act of expelling a person from his native land."], "far-reaching": ["Having broad range or effect."], "sweeping": ["Having broad range or effect."], "medal": ["A stamped or cast metal disc, particularly one awarded as a prize.", "An award for winning a championship or commemorating some other event."], "tripe": ["The lining of the large stomach of ruminating animals, when prepared for food."], "morality": ["Recognition of the distinction between good and evil or between right and wrong."], "agate": ["A semipellucid, uncrystallized variety of quartz, presenting various tints in the same specimen."], "abciximab": ["An antiplatelet drug used to reduce the risk of a heart attack during coronary surgery."], "oat bran": ["The outer layer of oat grains which is a byproduct of milling and contains a lot of dietary fiber."], "uninhabited": ["Lacking inhabitants."], "unoccupied": ["Lacking inhabitants."], "maternal grandmother": ["The mother of someone's mother."], "paternal grandmother": ["The mother of someone's father."], "admirer": ["One who admires someone or something."], "bounty hunter": ["Someone who traces and captures fugitives for monetary reward."], "bail enforcement agent": ["Someone who traces and captures fugitives for monetary reward."], "fugitive recovery agent": ["Someone who traces and captures fugitives for monetary reward."], "bail fugitive investigator": ["Someone who traces and captures fugitives for monetary reward."], "agar": ["A gelatinous material obtained from the marine algae, used as a bacterial culture medium, in electrophoresis and as a food additive."], "allose": ["An epimer of glucose found in some African shrubs."], "dichroism": ["The property of some crystals of transmitting different colours of light in different directions."], "anesthesiologist": ["A medical specialist who deals with anesthetizing patients for operations or for pain."], "illiteracy": ["The inability to read."], "analphabetism": ["The inability to read."], "aneurysm": ["An abnormal blood-filled swelling of an artery or vein, resulting from a localized weakness in the wall of the vessel."], "aneurism": ["An abnormal blood-filled swelling of an artery or vein, resulting from a localized weakness in the wall of the vessel."], "angiography": ["A medical imaging technique in which an X-ray image is taken to visualize the inside of blood vessels and organs of the body, with particular interest in the arteries, veins and the heart chambers."], "angiogram": ["An X-ray image of the blood vessels gained after the injection of a radiopaque contrast medium."], "Angolan": ["A person from Angola, or of Angolan ancestry.", "Of or relating to Angola or Angolans."], "antecedent": ["Any thing that precedes another thing, especially the cause of the second thing."], "extremophile": ["An organism that thrives in and even may require physically or geochemically extreme conditions that are detrimental to the majority of life on Earth."], "extremophilic": ["Living in physically or geochemically extreme conditions."], "coup de th\u00e9\u00e2tre": ["Sudden and very surprising event happening through one person or a few people and modifying deeply a situation, so evoking a play."], "coup de theatre": ["Sudden and very surprising event happening through one person or a few people and modifying deeply a situation, so evoking a play."], "dramatic turn of events": ["Sudden and very surprising event happening through one person or a few people and modifying deeply a situation, so evoking a play."], "estragon": ["A perennial herb, Artemisia dracunculus, from Europe and parts of Asia.", "The leaves of this plant (Artemisia dracunculus) either fresh, or preserved in vinegar, used as a seasoning."], "tarragon": ["A perennial herb, Artemisia dracunculus, from Europe and parts of Asia.", "The leaves of this plant (Artemisia dracunculus) either fresh, or preserved in vinegar, used as a seasoning."], "expansionism": ["A policy of expansion, as of territory or currency."], "Armenian Soviet Socialist Republic": ["One of the republics of the former Soviet Union from 1922-1991, now present-day Armenia."], "Armenian SSR": ["One of the republics of the former Soviet Union from 1922-1991, now present-day Armenia."], "scrum": ["An iterative incremental framework for managing complex work (such as new product development) commonly used with agile software development."], "exhaustive": ["Treating all parts or aspects without omission."], "thorough": ["Treating all parts or aspects without omission."], "exhaustible": ["Capable of being used up."], "exfoliation": ["The act, state, or process of exfoliating."], "Transcaucasian Socialist Federative Soviet Republic": ["A short-lived republic of the former Soviet Union made up of the Transcaucasian Republics (Armenian SSR, Georgian SSR and Azerbaijan SSR) from 1922-1936."], "Transcaucasian SFSR": ["A short-lived republic of the former Soviet Union made up of the Transcaucasian Republics (Armenian SSR, Georgian SSR and Azerbaijan SSR) from 1922-1936."], "exeresis": ["Surgical removal of any part or organ."], "excision": ["Surgical removal of any part or organ."], "exequatur": ["A written recognition of a consul by the government of the state in which he or she is stationed giving authorization to exercise appropriate powers."], "exegesis": ["Critical explanation or interpretation of a text or portion of a text, esp. of the Bible."], "excitedly": ["With excitement."], "oblast": ["A type of administrative division in Slavic countries, including some countries of the former Soviet Union."], "obsolescent": ["In the process of becoming obsolete, but not obsolete yet."], "deprecated": ["In the process of becoming obsolete, but not obsolete yet."], "exemplify": ["To show or illustrate by example."], "excessively": ["To an excessive degree."], "excellence": ["The fact or state of excelling."], "vampiress": ["A female immortal being which drinks the blood of mortals to survive."], "rigor mortis": ["A stiffening of the muscles which sets in 1-2 hours after death."], "exarch": ["The ruler of a province in the Byzantine Empire."], "examinee": ["A person who is examined."], "breastfeed": ["To let a baby drink from the breast."], "penmanship": ["The writing which characterizes a particular person."], "chicken scratch": ["An irregular and illegible handwriting."], "eat up": ["To use up resources or materials.", "To consume wholly."], "eat out": ["To have a meal at a restaurant instead of at home.", "To perform oral sex on a female."], "go out for a meal": ["To have a meal at a restaurant instead of at home."], "go for a meal": ["To have a meal at a restaurant instead of at home."], "illuminated manuscript": ["A manuscript in which the text is supplemented by the addition of decoration, such as decorated initials, borders and miniature illustrations."], "give head": ["To provide sexual gratification to a man through oral stimulation.", "To perform oral sex on a female."], "exam": ["A session in which a product or piece of equipment is placed under everyday and/or extreme conditions and is examined for its durability, etc."], "exaction": ["The practice of extorting money or other property."], "ex cathedra": ["In Catholic theology, the Latin phrase ex cathedra, literally meaning \"from the chair\", refers to a teaching by the pope that is considered to be made with the intention of invoking infallibility."], "ex aequo": ["A Latin expression that means \"equal\"."], "schlemiel": ["Someone who always has bad luck in life."], "shlemiel": ["Someone who always has bad luck in life."], "schlemihl": ["Someone who always has bad luck in life."], "jinx": ["A person supposed to bring bad luck.", "To cast a spell on someone or something.", "An evil spell."], "hoodoo": ["A person supposed to bring bad luck.", "Something believed to bring bad luck."], "delete": ["To remove markings or information."], "evangelist": ["A preacher of the gospel."], "evade": ["To get away from by artifice."], "eagerness": ["A positive feeling of wanting to push ahead with something.", "Prompt willingness."], "avidness": ["A positive feeling of wanting to push ahead with something."], "keenness": ["A positive feeling of wanting to push ahead with something."], "readiness": ["Ease in learning or doing something.", "Prompt willingness."], "earthernware": ["Pottery of baked or hardened clay."], "earthenware": ["Pottery of baked or hardened clay."], "fur-lined": ["Lined with a layer of fur."], "lined": ["Furnished with a layer of warming cloth."], "eclogue": ["A pastoral poem, often in the form of a shepherd's monologue or a dialogue between shepherds."], "economically": ["With respect to economic science; in an economical manner."], "economism": ["A theory or doctrine that attaches principal importance to economic goals."], "kvas": ["Traditional Eastern European beverage made from fermented bread, which has a very low alcohol content."], "kvass": ["Traditional Eastern European beverage made from fermented bread, which has a very low alcohol content."], "bread drink": ["Traditional Eastern European beverage made from fermented bread, which has a very low alcohol content."], "okroshka": ["Traditional Russian soup made of kvas, sour cream, boiled eggs and potatoes, cucumber and sausage which is served cold."], "gazpacho": ["Cold Spanish soup made of tomatoes, cucumber, peppers, garlic, onion, olive oil, vinegar, salt and, sometimes, white bread or bell peppers."], "recital": ["A musical performance. It can highlight a single performer, sometimes accompanied by piano, or a performance of the works of a single composer."], "economizer": ["Is a mechanical device intended to reduce energy consumption, or to perform another useful function like preheating a fluid."], "edaphon": ["The aggregate of organisms that live in the soil."], "editable": ["Capable of being edited."], "editorialist": ["One who write opinion pieces, especially for a newspaper."], "columnist": ["One who write opinion pieces, especially for a newspaper."], "educationally": ["In an educational manner."], "When in Rome do as the Romans do": ["A proverb which means that when one is a guest, one should behave similarly to the host."], "When in Rome": ["A proverb which means that when one is a guest, one should behave similarly to the host."], "All roads lead to Rome": ["A proverb which means that there are different paths that lead to the same goal."], "Curiosity killed the cat": ["A proverb which means that certain knowledge may be dangerous, so one need not be constantly curious."], "borshch": ["Traditional Eastern European soup usually made of beetroot and beef."], "borscht": ["Traditional Eastern European soup usually made of beetroot and beef."], "borsht": ["Traditional Eastern European soup usually made of beetroot and beef."], "borsch": ["Traditional Eastern European soup usually made of beetroot and beef."], "effervescence": ["The property of giving off bubbles."], "efflorescence": ["An area of reddened, irritated, and inflamed skin.", "The blooming of flowers on a plant."], "flowering": ["The blooming of flowers on a plant."], "blossoming": ["The blooming of flowers on a plant."], "effortlessly": ["Without effort or apparent effort."], "egalitarianism": ["The doctrine of the equality of mankind and the desirability of political and economic and social equality."], "ejector": ["A device using a jet of water, air, or steam to withdraw a fluid or gas from a space."], "electret": ["A dielectric that possesses a permanent or semipermanent electric polarity, analogous to a permanent magnet."], "electroanalysis": ["Chemical analysis using electrolytic techniques."], "electrochemical": ["Of or involving electrochemistry."], "electrodynamic": ["Related to or employing the effects of changing electric and magnetic fields."], "electrodynamics": ["The branch of physics concerned with the interactions between electrical and mechanical forces."], "electrodynamometer": ["An instrument that measures electric current by indicating the level of magnetic attraction or repulsion between a fixed and a movable coil, one of which carries the current to be measured."], "low-hanging fruit": ["Easily obtained gains; what can be obtained by readily available means."], "mainstream": ["The most common and popular way of thinking among a population.", "Genre of jazz music that appeared in the years 1950."], "multiseat": ["Relative to the simultaneous use of one common computer central unit by several people though several input-output devices (typically at least one screen, one keyboard and one mouse per user)."], "multistation": ["Relative to the simultaneous use of one common computer central unit by several people though several input-output devices (typically at least one screen, one keyboard and one mouse per user)."], "multi-station": ["Relative to the simultaneous use of one common computer central unit by several people though several input-output devices (typically at least one screen, one keyboard and one mouse per user)."], "multiterminal": ["Relative to the simultaneous use of one common computer central unit by several people though several input-output devices (typically at least one screen, one keyboard and one mouse per user)."], "electrogalvanism": ["The flow of electric current between two different metals in an electrolyte solution."], "electroluminescence": ["Direct conversion of electric energy to light."], "mainstream jazz": ["Genre of jazz music that appeared in the years 1950."], "electrolytic": ["Of or concerned with or produced by electrolysis"], "electrometallurgy": ["The use of electric and electrolytic processes to purify metals or reduce metallic compounds to metals."], "electrometer": ["Meter to measure electrostatic voltage."], "electromotive": ["Of, relating to, or producing electric current."], "electronically": ["By electronic means."], "electrophorus": ["An apparatus for generating static electricity."], "electroplating": ["The process of coating the surface of a conducting material with a metal."], "electrostriction": ["A property of all electrical non-conductors, or dielectrics, that causes them to change their shape under the application of an electric field."], "electrotechnics": ["An engineering field that deals with the study and/or application of electricity, electronics and electromagnetism."], "electrotype": ["A metal plate used in letterpress printing, made by electroplating a lead or plastic mold of the page to be printed."], "electrotyping": ["The act or the process of making electrotypes."], "electrum": ["An alloy of silver and gold."], "elegantly": ["In a gracefully elegant manner."], "elegance": ["Refinement, grace, and beauty in movement, appearance, or manners."], "eligibility": ["The quality or state of being eligible."], "eliminatory": ["Tending to eliminate."], "elitism": ["The belief that society should be governed by a small group of people who are superior to everyone else."], "elitist": ["Aimed at the elite."], "ellipsoid": ["A three-dimensional geometric figure resembling a flattened sphere."], "tiff": ["A small argument; a petty quarrel."], "eluate": ["The solution of solvent and dissolved matter resulting from elution."], "eluent": ["A substance used as a solvent in separating materials in elution."], "elution": ["The process of extracting a substance that is adsorbed to another by washing it with a solvent."], "elutriation": ["The process of separating the lighter particles from the heavier ones by means of an upward directed stream of gas or liquid."], "eluviation": ["The sideways or downward movement of dissolved or suspended material within soil caused by rainfall."], "elytron": ["A modified, hardened forewing of certain insect orders."], "embark": ["To go on board a ship or aircraft."], "embarrass": ["To make someone feel shy, ashamed, or guilty about something."], "embellishment": ["Something that embellishes.", "The process of making or becoming more beautiful."], "ember": ["A small, glowing piece of coal or wood, as in a dying fire."], "embezzlement": ["The fraudulent appropriation of funds or property entrusted to your care but actually owned by someone else."], "misappropriation": ["The fraudulent appropriation of funds or property entrusted to your care but actually owned by someone else.", "Appropriation or allocation of public funds to a use unrelated to its function."], "peculation": ["The fraudulent appropriation of funds or property entrusted to your care but actually owned by someone else."], "embourgeoisement": ["Conversion to bourgeois values, loyalties, or tastes."], "embossing": ["Art of producing raised patterns on the surface of metal, leather, textiles, paper, and other similar substances."], "embryologist": ["A specialist in embryology."], "emery": ["A very hard rock type used to make abrasive powder."], "emir": ["An independent ruler in the Islamic world."], "Emmental": ["Hard pale yellow cheese with many holes from Switzerland."], "Emmentaler": ["Hard pale yellow cheese with many holes from Switzerland."], "Emmenthal": ["Hard pale yellow cheese with many holes from Switzerland."], "Emmenthaler": ["Hard pale yellow cheese with many holes from Switzerland."], "emotionally": ["In an emotional manner."], "emotiveness": ["Susceptibility to emotion."], "empathic": ["Of, relating to, or characterized by empathy."], "empathetic": ["Of, relating to, or characterized by empathy."], "emphatically": ["Without question and beyond doubt."], "decidedly": ["Without question and beyond doubt."], "emphaticalness": ["The quality of being emphatic."], "assertiveness": ["The quality of being emphatic."], "casino": ["A public building or room for entertainment, especially gambling."], "empiricist": ["A philosopher who subscribes to empiricism."], "otaku": ["A fan of manga and anime, sometimes taking it to excessive points."], "months": ["More than one month; the plural form of \"month\"."], "moons": ["More than one moon."], "man overboard": ["A cry said on a ship when someone (man or woman) falls into the water in order to alert the crew, usually resulting in the ship being stopped.", "A situation in which one of the crew members of a ship has fallen into the water."], "man over board": ["A cry said on a ship when someone (man or woman) falls into the water in order to alert the crew, usually resulting in the ship being stopped."], "empyema": ["A collection of pus in a body cavity."], "emulate": ["To imitate the function of another system, as by modifications to hardware or software that allow the imitating system to accept the same data, execute the same programs, and achieve the same results as the imitated system.", "To strive to equal or match, especially by imitating.", "To compete with successfully; approach or reach equality with."], "emulator": ["Someone who copies the words or behavior of another."], "aper": ["Someone who copies the words or behavior of another."], "imitator": ["Someone who copies the words or behavior of another."], "emulsifier": ["A substance that helps to combine two liquids, esp. a water-based liquid and an oil."], "encrypt": ["To convert ordinary language into code."], "encipher": ["To convert ordinary language into code."], "cypher": ["To convert ordinary language into code."], "endemical": ["Of or relating to a disease constantly present to greater or lesser extent in a particular locality."], "ending": ["A bringing or coming to an end."], "commercial agent": ["Natural person or legal entity providing, as a regular activity, a commercial service for the sake of another entity to which he/she/it is not subordinated."], "endocarp": ["The hard inner layer of the pericarp of many fruits, such as the pit or stone of a cherry, peach, or olive."], "endodontist": ["A dentist specializing in diseases of the dental pulp and nerve."], "endodontology": ["The branch of dentistry that deals with diseases of the tooth root, dental pulp, and surrounding tissue."], "drawer": ["A sliding compartment of a piece of furniture, open on its top, that can be pulled to access to its content more easily."], "endogamy": ["Marriage within a particular group in accordance with custom or law.", "Breeding between members of a relatively small population, especially one in which most members are related."], "endophyte": ["An organism, especially a fungus or microorganism, that lives inside a plant."], "endosperm": ["Nutritive tissue surrounding the embryo within seeds of flowering plants."], "lucky devil": ["Someone who always has good luck in life."], "lucky dog": ["Someone who always has good luck in life."], "endothermic": ["Relating to a chemical reaction that absorbs heat."], "concubine": ["Among polygamour peoples a wife of inferior rank than the first wife.", "A woman who cohabits with an important man, but who is not his wife."], "secondary wife": ["Among polygamour peoples a wife of inferior rank than the first wife."], "jeans": ["Pants made of denim that are a popular casual dress around the world."], "denim shirt": ["A shirt made from denim."], "denim skirt": ["A skirt made from denim."], "denim jacket": ["A jacket made from denim."], "denim blouse": ["A blouse made from denim."], "sunglasses": ["Special glasses that protect the eyes from strong sunlight and uv rays."], "sun glasses": ["Special glasses that protect the eyes from strong sunlight and uv rays."], "shades": ["Special glasses that protect the eyes from strong sunlight and uv rays."], "sun cheaters": ["Special glasses that protect the eyes from strong sunlight and uv rays."], "vixen": ["A female animal of the genus Vulpes."], "fox cub": ["A young animal of the genus Vulpes."], "manufacturer\u2019s agent": ["Natural person or legal entity providing, as a regular activity, a commercial service for the sake of another entity to which he/she/it is not subordinated.", "Natural person or legal entity providing, as a regular activity, a commercial service for the sake of a manufacturer to which he/she/it is not subordinated."], "sales agent": ["Natural person or legal entity providing, as a regular activity, a commercial service for the sake of another entity to which he/she/it is not subordinated."], "commission agent": ["Natural person or legal entity providing, as a regular activity, a commercial service for the sake of another entity to which he/she/it is not subordinated."], "landline telephone": ["Device with a wire through which it transmits and receives in real time signals enabling the user to discuss from afar."], "landline": ["Device with a wire through which it transmits and receives in real time signals enabling the user to discuss from afar."], "land phone": ["Device with a wire through which it transmits and receives in real time signals enabling the user to discuss from afar."], "land line": ["Device with a wire through which it transmits and receives in real time signals enabling the user to discuss from afar."], "chutzpah": ["Nearly arrogant courage; utter audacity, effrontery or impudence; supreme self-confidence."], "endwise": ["On end or upright."], "endways": ["On end or upright."], "energetically": ["In an energetic manner."], "enforce": ["Ensure observance of laws and rules."], "enlarger": ["Photographic equipment consisting of an optical projector used to enlarge a photograph."], "Tektitek": ["A Mayan language of the Quichean-Mamean branch spoken by the Tektitek people, which are primarily settled in the municipality of Tectit\u00e1n, department of Huehuetenango, Guatemala and in Mexico."], "Tectiteco": ["A Mayan language of the Quichean-Mamean branch spoken by the Tektitek people, which are primarily settled in the municipality of Tectit\u00e1n, department of Huehuetenango, Guatemala and in Mexico."], "Teco": ["A Mayan language of the Quichean-Mamean branch spoken by the Tektitek people, which are primarily settled in the municipality of Tectit\u00e1n, department of Huehuetenango, Guatemala and in Mexico."], "B'a'aj": ["A Mayan language of the Quichean-Mamean branch spoken by the Tektitek people, which are primarily settled in the municipality of Tectit\u00e1n, department of Huehuetenango, Guatemala and in Mexico."], "whole milk": ["Milk that contains at least 3.5% fat."], "unskimmed milk": ["Milk that contains at least 3.5% fat."], "full cream milk": ["Milk that contains at least 3.5% fat."], "hutzpah": ["Nearly arrogant courage; utter audacity, effrontery or impudence; supreme self-confidence."], "full fat milk": ["Milk that contains at least 3.5% fat."], "skim milk": ["Milk with a very low percentage of fat."], "skimmed milk": ["Milk with a very low percentage of fat."], "raw milk": ["Milk that has not been pasteurized or homogenized."], "brazenness": ["Nearly arrogant courage; utter audacity, effrontery or impudence; supreme self-confidence."], "raw milk cheese": ["Cheese made from untreated, raw milk."], "enlistment": ["The act of enlisting, as in a military service."], "enormously": ["Greatly exceeding the common size."], "enquiry": ["The act of inquiring or of seeking information by questioning."], "investigation": ["The act of inquiring or of seeking information by questioning."], "wherein": ["Place in which."], "indoor swimming pool": ["A swimming pool in a building."], "enrol": ["To have one's name formally recorded as a participant or member.", "To roll or wrap up."], "enroll": ["To have one's name formally recorded as a participant or member."], "Aranese": ["A form of the Pyrenean Gascon variety of the Occitan language spoken in the Aran Valley, in northwestern Catalonia on the border between Spain and France."], "enthusiastically": ["In an enthusiastic manner."], "enumerable": ["That can be counted."], "denumerable": ["That can be counted."], "numerable": ["That can be counted."], "enumeration": ["A numbered or ordered list.", "Reciting numbers in ascending order."], "numbering": ["A numbered or ordered list."], "indoor pool": ["A swimming pool in a building."], "dead drunk person": ["Someone who lies sleeping in public after drinking too much beer."], "eosin": ["A red fluorescent dye resulting from the action of bromine on fluorescein; used in cosmetics and as a biological stain for studying cell structures."], "bromeosin": ["A red fluorescent dye resulting from the action of bromine on fluorescein; used in cosmetics and as a biological stain for studying cell structures."], "eosinophile": ["A leukocyte readily stained with eosin."], "eosinophil": ["A leukocyte readily stained with eosin."], "knickers": ["Piece of cloth adapted to cover the genitals and buttocks of a man or a woman."], "panties": ["Piece of cloth adapted to cover the genitals and buttocks of a man or a woman."], "pantie": ["Piece of cloth adapted to cover the genitals and buttocks of a man or a woman."], "panty": ["Piece of cloth adapted to cover the genitals and buttocks of a man or a woman."], "underpants": ["Piece of cloth adapted to cover the genitals and buttocks of a man or a woman."], "epenthesis": ["The insertion of a vowel or consonant into a word to make its pronunciation easier."], "epenthetic": ["Of or pertaining to epenthesis."], "parasitic": ["Of or pertaining to epenthesis.", "Of, pertaining to, or characteristic of parasites."], "epexegesis": ["An additional explanation or explanatory material."], "epicanthus": ["A vertical fold of skin over the nasal canthus."], "big tent party": ["A political party that seeks to be attractive for voters from all social stratums and various backgrounds."], "catch-all party": ["A political party that seeks to be attractive for voters from all social stratums and various backgrounds."], "crepe pan": ["A large, flat pan with a low rim that is used to make crepes."], "epicureanism": ["A system of philosophy based upon the teachings of Epicurus (c. 340\u2013c. 270 BC)."], "epicycloid": ["A line generated by a point on a circle rolling around another circle."], "extended desktop": ["Computer configuration in which 2 or more physical display devices (usually monitors) behave together as if they where parts of one display device, each device displaying a part of the unique graphical working space."], "felt pen": ["A pen with a small tip made of felt or fibre."], "felt tip pen": ["A pen with a small tip made of felt or fibre."], "felt-tip pen": ["A pen with a wide tip made of felt or fibre.", "A pen with a small tip made of felt or fibre."], "epigastrium": ["The upper middle region of the abdomen."], "epigraphy": ["The study of ancient inscriptions."], "multi-seat": ["Relative to the simultaneous use of one common computer central unit by several people though several input-output devices (typically at least one screen, one keyboard and one mouse per user)."], "equilibrist": ["A person who performs feats of balance, such as tightrope walking."], "equipollent": ["Equal in power, effect, etc."], "Poitevin": ["Of or pertaining to Poitou, Poitiers, the Poitevin people or the Poitevin language."], "equitation": ["The art and practice of riding a horse."], "eradication": ["The complete destruction of every trace of something."], "obliteration": ["The complete destruction of every trace of something."], "erasable": ["Capable of being erased."], "effaceable": ["Capable of being erased."], "ergograph": ["An instrument that records the amount of work done when a muscle contracts."], "Eritrean": ["Relating to or coming from Eritrea."], "erlang": ["A unit of traffic intensity in a telephone system."], "erysipelas": ["An infectious disease of the skin marked by inflammation and accompanied by fever."], "cycloid": ["Curve defined by the path of a point on the perimeter of a circle as the circle rolls along a straight line."], "escarole": ["A variety of endive (Cichorium endivia var. latifolium) having leaves with irregular frilled edges and often used in salads."], "chicory escarole": ["A variety of endive (Cichorium endivia var. latifolium) having leaves with irregular frilled edges and often used in salads."], "car accident": ["An accident with a car."], "car crash": ["An accident with a car."], "auto accident": ["An accident with a car."], "washable": ["Capable of being washed."], "bike accident": ["Accident involving a bike."], "bicycle accident": ["Accident involving a bike."], "rosebud": ["A bud on a rosebush."], "electrochemistry": ["A branch of chemistry that studies chemical reactions which take place in a solution at the interface of an electron conductor (a metal or a semiconductor) and an ionic conductor (the electrolyte), and which involve electron transfer between the electrode and the electrolyte or species in solution."], "beer tent": ["At a fair or festival, a tent or wood construction in which beer, other alcoholic and non-alcoholic beverages and food are served and consumed, often accompanied by a live band."], "escarpment": ["A long steep slope or cliff at the edge of a plateau or ridge."], "scarp": ["A long steep slope or cliff at the edge of a plateau or ridge."], "eschatology": ["The branch of theology concerned with the end of the world."], "nuclear submarine": ["A submarine powered by a nuclear reactor."], "plateau": ["Elevated and plain extensive tract of land."], "tableland": ["Elevated and plain extensive tract of land."], "escritoire": ["A desk used for writing."], "secretaire": ["A desk used for writing."], "writing table": ["A desk used for writing."], "submergible": ["Capable of being submerged."], "submersible": ["Capable of being submerged."], "leprous": ["Concerning lepra, suffering from lepra."], "ethically": ["From an ethical point of view."], "lazar house": ["A place where leprous people are isolated from the rest of the population."], "leprosarium": ["A place where leprous people are isolated from the rest of the population."], "leper colony": ["A place where leprous people are isolated from the rest of the population."], "leprosy": ["A chronic infectious disease caused by the bacteria Mycobacterium leprae and Mycobacterium lepromatosis which causes permanent damage to the skin, nerves, limbs and eyes if left untreated."], "Hansen's disease": ["A chronic infectious disease caused by the bacteria Mycobacterium leprae and Mycobacterium lepromatosis which causes permanent damage to the skin, nerves, limbs and eyes if left untreated."], "leper": ["A person who has leprosy."], "lazar": ["A person who has leprosy."], "barbary fig": ["A species of cactus (Opuntia ficus-indica) with edible fruit that grows in many arid and semiarid parts of the world.", "The sweet, yellow or red fruit of the barbery fig cactus (Opuntia ficus-indica)."], "Indian fig": ["A species of cactus (Opuntia ficus-indica) with edible fruit that grows in many arid and semiarid parts of the world."], "ethnocide": ["Deliberately destroying a culture. It is related to genocide."], "route planner": ["Software to plan the route between two points."], "ethnographer": ["An anthropologist who does ethnography."], "tremendously": ["Greatly exceeding the common size."], "hugely": ["Greatly exceeding the common size."], "staggeringly": ["Greatly exceeding the common size."], "ethnographic": ["Of or pertaining to ethnography."], "sausage finger": ["A very thick, stumpy finger."], "weekend marriage": ["A marriage where the partners only see each other on the weekend."], "vitamin overdose": ["A condition of high storage levels of vitamins, which can lead to toxic symptoms."], "vitamin poisoning": ["A condition of high storage levels of vitamins, which can lead to toxic symptoms."], "hypervitaminosis": ["A condition of high storage levels of vitamins, which can lead to toxic symptoms."], "avitaminosis": ["The complete absence of a vitamin in the human body."], "hypovitaminosis": ["Conditions and symptoms that arise due to a lack of vitamins."], "ex-wife": ["A woman who was formerly the wife of a certain man."], "ex": ["A woman who was formerly the wife of a certain man.", "A man who was formerly the husband of a certain woman.", "A man who was formerly the boyfriend of a certain woman.", "A woman who was formerly the girlfriend of a certain man."], "ex-husband": ["A man who was formerly the husband of a certain woman."], "ex-boyfriend": ["A man who was formerly the boyfriend of a certain woman."], "ex-girlfriend": ["A woman who was formerly the girlfriend of a certain man."], "eudiometer": ["Measuring instrument consisting of a graduated glass tube for measuring volume changes in chemical reactions between gases."], "euphony": ["A pleasantness to the ear."], "pastry": ["A baked delicacy."], "Euclidean": ["Of or pertaining to Euclid, or adopting his postulates."], "eventuality": ["A possible event or occurrence or result."], "contingence": ["A possible event or occurrence or result."], "contingency": ["A possible event or occurrence or result.", "The state of being contingent on something."], "evidential": ["Serving as or based on evidence."], "evidentiary": ["Serving as or based on evidence."], "evolute": ["The locus of the centers of curvature of a given curve."], "evolvent": ["The involute of a curve."], "involute": ["The involute of a curve."], "apparatchik": ["High ranked member of the government in Soviet Union."], "nomenklatura": ["Elite of the Communist Party of the Soviet Union."], "Ancient Macedonian": ["Indo-European language spoken by ancient Macedonians during the first millenium before Christ."], "pessimistic": ["Having the tendency to judge things by their most unfavorable or negative qualities."], "antipope": ["A pope who is elected by opponents of the rightful pope while he is still alive and holding office."], "toreutics": ["The art of working metal."], "life-saver": ["A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "life buoy": ["A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "abampere": ["The unit of electromagnetic current (aA) in the centimeter-gram-second system, equal to ten amperes."], "abamp": ["The unit of electromagnetic current (aA) in the centimeter-gram-second system, equal to ten amperes."], "fast food restaurant": ["A type of restaurant, often part of a restaurant chain, that has no or minimal table service and offers food that is cooked in advance and kept hot."], "quick service restaurant": ["A type of restaurant, often part of a restaurant chain, that has no or minimal table service and offers food that is cooked in advance and kept hot."], "QSR": ["A type of restaurant, often part of a restaurant chain, that has no or minimal table service and offers food that is cooked in advance and kept hot."], "fast food joint": ["A type of restaurant, often part of a restaurant chain, that has no or minimal table service and offers food that is cooked in advance and kept hot."], "self-service restaurant": ["A restaurant where the clients have to get their food themselves by putting it on trays and carrying it to a table."], "Bundt pan": ["A round cake mould with a hole for Kugelhupf and other cakes."], "prophet of doom": ["A person that predicts future misfortunes."], "abandonment": ["The act of giving something up.", "The act of withdrawing support or help despite allegiance or responsibility."], "forsaking": ["The act of giving something up."], "defection": ["The act of withdrawing support or help despite allegiance or responsibility."], "ablative": ["The case indicating the agent in passive sentences or the instrument or manner or place of the action described by the verb.", "Relating to the ablative, a grammatical case that exists in some languages.", "Relating to the ablation of a material."], "sourdough": ["A dough containing flour, water, lactic acid bacteria and yeast which is used to bake bread."], "illegal copy": ["Illegally created copy of a work protected by copyright, for example a CD or DVD."], "pirated copy": ["Illegally created copy of a work protected by copyright, for example a CD or DVD."], "abnormally": ["In an abnormal manner."], "unusually": ["In an abnormal manner."], "abolitionism": ["The doctrine that calls for the abolition of slavery.", "Opposition to slavery."], "abortionist": ["A person (typically a doctor) who terminates pregnancies."], "abortion doctor": ["A doctor who performs abortions."], "back-street abortionist": ["A woman who perfoms illegal abortions, often in unsanitary conditions and using unsafe methods.", "A man who perfoms illegal abortions, often in unsanitary conditions and using unsafe methods."], "caloric": ["Of or pertaining to calories."], "inflict": ["To dispense (punishment or suffering)."], "zit": ["A painful, local inflammation of the skin, caused by infection of a hair follicle. Usually, a hard core and pus are present."], "premature": ["Occurring too soon.", "A baby that was born before 37 weeks of pregnancy."], "untimely": ["Occurring too soon."], "preemie": ["A baby that was born before 37 weeks of pregnancy."], "premature infant": ["A baby that was born before 37 weeks of pregnancy."], "premie": ["A baby that was born before 37 weeks of pregnancy."], "preterm": ["A baby that was born before 37 weeks of pregnancy."], "tax evasion": ["The act of avoiding to pay taxes by illegal means."], "illogical": ["Not characterized by truth or logic."], "tattoo": ["A marking made by inserting ink into the layers of skin to change the pigment permanently for decorative or other reasons.", "To insert ink into the skin in order to create a permanent mark."], "tatt": ["A marking made by inserting ink into the layers of skin to change the pigment permanently for decorative or other reasons."], "tat": ["A marking made by inserting ink into the layers of skin to change the pigment permanently for decorative or other reasons."], "zoster": ["Viral disease caused by the varicella zoster virus characterized by a painful skin rash with blisters in a limited area of the body."], "herpes zoster": ["Viral disease caused by the varicella zoster virus characterized by a painful skin rash with blisters in a limited area of the body."], "shingles": ["Viral disease caused by the varicella zoster virus characterized by a painful skin rash with blisters in a limited area of the body."], "zona": ["Viral disease caused by the varicella zoster virus characterized by a painful skin rash with blisters in a limited area of the body."], "sycophant": ["Person who flatters others for the purpose of obtaining a personnal advantage."], "toady": ["Person who flatters others for the purpose of obtaining a personnal advantage."], "lickspittle": ["Person who flatters others for the purpose of obtaining a personnal advantage."], "bootlicker": ["Person who flatters others for the purpose of obtaining a personnal advantage."], "brown-nose": ["Person who flatters others for the purpose of obtaining a personnal advantage."], "brown-noser": ["Person who flatters others for the purpose of obtaining a personnal advantage."], "ass-kisser": ["Person who flatters others for the purpose of obtaining a personnal advantage."], "apple-polisher": ["Person who flatters others for the purpose of obtaining a personnal advantage."], "apple polisher": ["Person who flatters others for the purpose of obtaining a personnal advantage."], "scalp": ["The skin covering the top of the human head and from which the hair grows."], "moai": ["Monolithic human figures carved from rock on the Polynesian island of Rapa Nui (Easter Island) between the years 1250 and 1500."], "seawater": ["Water found in the seas or oceans which has an average salinity of about 3.5%."], "saline water": ["Water that contains dissolved salts."], "saltwater": ["Water that contains dissolved salts."], "intoxicated": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "shit-faced": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "juiced": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "sozzled": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "sloshed": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "drunken": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "inebriated": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "inebriate": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "ebrious": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "canned": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "no one": ["Not any person."], "groggy": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "blitzed": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "wasted": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "smashed": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "well-oiled": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "trashed": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "out of it": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "boozed-up": ["Being in a temporary state in which one's physical and mental faculties are impaired due to excessive consumption of alcohol."], "tipsy": ["Slightly drunk."], "buzzed": ["Slightly drunk."], "tiddly": ["Slightly drunk."], "gynarchy": ["A government ruled by a woman or women."], "gynocracy": ["A government ruled by a woman or women."], "gynecocracy": ["A government ruled by a woman or women."], "rolled oats": ["Oat grains whose outer husk has been removed and who are then steamed and rolled into flat flakes."], "light switch": ["A mechanical switch operated by hand which is used to turn the lighting on or off."], "uninsurable": ["Not capable of being insured."], "uterine": ["Of or pertaining to the uterus."], "two-headed": ["Having two heads."], "dicephalous": ["Having two heads."], "sober": ["Not under the influence of alcohol or other drugs.", "To remove oneself from a state of drunkenness; to become sober."], "sober up": ["To remove oneself from a state of drunkenness; to become sober."], "enchantress": ["A woman who is considered to be dangerously seductive."], "temptress": ["A woman who is considered to be dangerously seductive."], "siren": ["A woman who is considered to be dangerously seductive.", "A device, either mechanical or electronic, that makes a piercingly loud sound as an alarm or signal."], "Delilah": ["A woman who is considered to be dangerously seductive."], "femme fatale": ["A woman who is considered to be dangerously seductive."], "courtesan": ["A woman who cohabits with an important man, but who is not his wife."], "doxy": ["A woman who cohabits with an important man, but who is not his wife."], "odalisque": ["A woman who cohabits with an important man, but who is not his wife."], "paramour": ["A woman who cohabits with an important man, but who is not his wife."], "new moon": ["The phase of the moon occurring when it passes between the earth and the sun and is invisible to the naked eye."], "endemic": ["Of or relating to a disease constantly present to greater or lesser extent in a particular locality.", "A plant that is native to a certain limited area; \"it is an endemic found only this island\".", "Native to or confined to a certain region.", "Species which is restricted to a specific geographic location."], "pee-pee": ["Liquid excrement consisting of water, salts and urea, which is made in the kidneys, stored in the bladder, then released through the urethra."], "wee-wee": ["Liquid excrement consisting of water, salts and urea, which is made in the kidneys, stored in the bladder, then released through the urethra."], "empty word": ["A word that has lost its meaning, because it has been used extensively and inappropriately."], "vampire bat": ["Bat feeding on the blood (hematophagous) of large mammals such as horses or bovines."], "Live and let die": ["An expression meaning to not interfere in the business of others, even if it means to save another's life, for there is the risk that person will not be greatful to his savior and hunt him down for the rest of his life."], "no good deed goes unpunished": ["An expression meaning to not interfere in the business of others, even if it means to save another's life, for there is the risk that person will not be greatful to his savior and hunt him down for the rest of his life."], "man overbord": ["A cry said on a ship when someone (man or woman) falls into the water in order to alert the crew, usually resulting in the ship being stopped."], "live and let live": ["Expression saying everyone should mind their own business, so they can all leave in peace and not fear what others may do to them."], "common vampire bat": ["Bat feeding on the blood (hematophagous) of large mammals such as horses or bovines."], "Gaelic football": ["Form of football, also close to rugby, played mainly in Ireland."], "Gaelic": ["Form of football, also close to rugby, played mainly in Ireland."], "Gah": ["Form of football, also close to rugby, played mainly in Ireland."], "Code of Hammurabi": ["A well-preserved ancient law code, created ca. 1790 BC in ancient Babylon, enacted by the sixth Babylonian king, Hammurabi."], "carbonation": ["A process that occurs when carbon dioxide is dissolved in water or an aqueous solution."], "pyrogen": ["Any substance that produces fever, or a rise in body temperature."], "pyretic": ["Causing fever."], "pyrogenic": ["Causing fever."], "hormonal birth control": ["A method to prevent pregnancy that consists of the administration of the hormones estrogen and gestagen which prevent ovulation and hinder the passage of sperm through the cervical mucus."], "hormonal contraception": ["A method to prevent pregnancy that consists of the administration of the hormones estrogen and gestagen which prevent ovulation and hinder the passage of sperm through the cervical mucus."], "humourous": ["Full of or characterized by humour."], "joking": ["Playful and characterized by jokes."], "joky": ["Playful and characterized by jokes."], "jokey": ["Playful and characterized by jokes."], "count for nothing": ["To have no importance."], "Kuril Islands": ["Volcanic archipelago that stretches approximately 1,300 km northeast from Hokkaid\u014d, Japan, to Kamchatka, Russia, separating the Sea of Okhotsk from the North Pacific Ocean. It consists of 56 islands."], "Kurile Islands": ["Volcanic archipelago that stretches approximately 1,300 km northeast from Hokkaid\u014d, Japan, to Kamchatka, Russia, separating the Sea of Okhotsk from the North Pacific Ocean. It consists of 56 islands."], "coal mine": ["A mine from which coal is extracted."], "abrasiometer": ["One of the many devices used to test abrasion of a coating."], "coalmine": ["A mine from which coal is extracted."], "goldmine": ["A mine where gold is extracted."], "gold-mine": ["A mine where gold is extracted."], "diamond mine": ["A mine from which diamond is extracted."], "iron mine": ["A mine from which iron is extracted."], "white poplar": ["Species of poplar whose leaves have a distinctive silvery-white color on the underside."], "brackish": ["(Of water) Salty or slightly salty, as a mixture of fresh and sea water."], "poplar plantation": ["Place where poplars are grown, in particular for the production of wood."], "orange grove": ["Place where orange trees are grown, in particular for their fruits."], "female condom": ["A thin pouch that is inserted into the vagina before sexual intercourse and is meant to protect against pregnancy and sexually transmitted diseases."], "intrauterine system": ["A contraceptive device that is inserted into the uterus and releases the hormone progestagen."], "IUS": ["A contraceptive device that is inserted into the uterus and releases the hormone progestagen."], "hamlet": ["A group of houses, smaller than a village."], "jujube": ["Species of tree of the genus Ziziphus whose edible fruits have the consistency and taste of an apple and look like a small date.", "Edible fruit of the jujube tree (Ziziphus zizyphus), whose consistency and taste are similar to that of an apple and which looks like a small date."], "jujube tree": ["Species of tree of the genus Ziziphus whose edible fruits have the consistency and taste of an apple and look like a small date."], "red date": ["Species of tree of the genus Ziziphus whose edible fruits have the consistency and taste of an apple and look like a small date.", "Edible fruit of the jujube tree (Ziziphus zizyphus), whose consistency and taste are similar to that of an apple and which looks like a small date."], "Chinese date": ["Species of tree of the genus Ziziphus whose edible fruits have the consistency and taste of an apple and look like a small date.", "Edible fruit of the jujube tree (Ziziphus zizyphus), whose consistency and taste are similar to that of an apple and which looks like a small date."], "jujube fruit": ["Edible fruit of the jujube tree (Ziziphus zizyphus), whose consistency and taste are similar to that of an apple and which looks like a small date."], "oleaster": ["Genus of lowering plants of the Elaeagnaceae family having a whitish to grey-brown colour."], "silverberry": ["Genus of lowering plants of the Elaeagnaceae family having a whitish to grey-brown colour."], "tamarisk": ["Genus of flowering plants in the family Tamaricaceae, native to drier areas of Eurasia and Africa."], "salt cedar": ["Genus of flowering plants in the family Tamaricaceae, native to drier areas of Eurasia and Africa."], "absorptiometer": ["Device used to measure absorption."], "absorptiometry": ["The use of an absorptiometer to determine the amount of radiation absorbed."], "abstractionism": ["An abstract genre of art."], "absurdly": ["In an absurd manner."], "acephalia": ["Congenital absence of the head."], "acephaly": ["Congenital absence of the head."], "acephalism": ["Congenital absence of the head."], "acephalous": ["Without a head."], "acetabulum": ["A concave surface of the pelvis."], "aeronautical": ["Of or relating to aeronautics."], "acephalic": ["Without a head."], "afterbirth": ["The placenta and fetal membranes expelled from the uterus after childbirth."], "philistinism": ["Attitude of a person who despises art and litterature."], "philistine": ["A person who despises art and literature.", "Smug, ignorant, indifferent or hostile to artistic and cultural values.", "Of or relating to ancient Philistia or its culture or its people.", "A member of an Aegean people who settled ancient Philistia around the 12th century BC."], "Philistine": ["A person who despises art and literature."], "abulia": ["A loss of will power."], "aboulia": ["A loss of will power."], "abvolt": ["A unit of potential equal to one-hundred-millionth of a volt"], "academician": ["Someone with academic degree, graduates of high education."], "depredation": ["Robbery or pillage involving damages."], "Euro-sceptical": ["Having strong doubts regarding the purpose and effectiveness of the European Union."], "Eurosceptical": ["Having strong doubts regarding the purpose and effectiveness of the European Union."], "Eurosceptic": ["Person who has strong doubts regarding the purpose and effectiveness of the European Union."], "Euro-sceptic": ["Having strong doubts regarding the purpose and effectiveness of the European Union.", "Person who has strong doubts regarding the purpose and effectiveness of the European Union."], "Euroscepticism": ["Political idea consisting of having strong doubts regarding the purpose and effectiveness of the European Union."], "Euro-scepticism": ["Political idea consisting of having strong doubts regarding the purpose and effectiveness of the European Union."], "spin doctor": ["Someone who gives a positive interpretation to events."], "northern German": ["Inhabitant of Northern Germany."], "albatross": ["Large sea bird, found chiefly in the southern oceans and northern Pacific, which has extraordinary powers of flight."], "cleaning mania": ["Excessive cleaning of one's home."], "polar bear skin": ["The skin of a polar bear."], "hair's breadth": ["A very short distance.", "Having the breadth of a hair; very narrow."], "academism": ["A style of painting and sculpture produced under the influence of European academies or universities."], "acidimeter": ["Instrument for measuring the amount of acid in a solution."], "acidimetry": ["The measurement of the strength of acids."], "pimp": ["A person who solicits customers for prostitution and profits from the prostitutes earnings."], "mac": ["A person who solicits customers for prostitution and profits from the prostitutes earnings."], "pander": ["A person who solicits customers for prostitution and profits from the prostitutes earnings."], "fleshmonger": ["A person who solicits customers for prostitution and profits from the prostitutes earnings."], "whoremaster": ["Male client of a prostitute."], "world music": ["Music style which differs from the main occidental trends."], "cannabis": ["A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect."], "marihuana": ["A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect."], "ganja": ["A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect."], "Mary Jane": ["A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect."], "pot": ["A generic kitchen utensil used for cooking food by boiling, frying or other methods.", "A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect.", "A great number or large amount of things not placed in a pile.", "To knock a ball into a pocket of a snooker table, or similar game table."], "reefer": ["A drug prepared from the cannabis plant, that is smoked or ingested for its euphoric effect."], "spliff": ["A cigarette rolled using cannabis."], "doobie": ["A cigarette rolled using cannabis."], "J": ["A cigarette rolled using cannabis."], "jay": ["A cigarette rolled using cannabis."], "blunt": ["A cigar that has been unrolled, gutted of its inner tobacco, and then re-rolled with cannabis inside.", "Characterized by directness in manner or speech; without subtlety or evasion.", "Having a thick edge or point, as an instrument; not sharp."], "opiate": ["Substance derived from opium."], "early bird": ["Person who prefers to get up early in the morning."], "early riser": ["Person who prefers to get up early in the morning."], "morning person": ["Person who prefers to get up early in the morning."], "late riser": ["Person who prefers to get up late in the morning."], "morning grouch": ["Person who is in a bad mood after getting up in the morning."], "bong": ["A smoking device, generally used with cannabis or tobacco, which uses water to filter out heavier particles from reaching the smoker's airways."], "water pipe": ["A smoking device, generally used with cannabis or tobacco, which uses water to filter out heavier particles from reaching the smoker's airways."], "male professor": ["A male teacher or faculty member at a college or university."], "female professor": ["A female teacher or faculty member at a college or university."], "male author": ["Man responsible for the content of a published novel, book or text."], "male writer": ["Man responsible for the content of a published novel, book or text."], "female author": ["Woman responsible for the content of a published novel, book or text."], "female writer": ["Woman responsible for the content of a published novel, book or text."], "red-haired": ["Having red-coloured hairs."], "redheaded": ["Having red-coloured hairs."], "airsickness bag": ["A small bag impervious to fluids which is provided to passengers onboard airplanes to collect vomit in case of sickness."], "airsick bag": ["A small bag impervious to fluids which is provided to passengers onboard airplanes to collect vomit in case of sickness."], "sick bag": ["A small bag impervious to fluids which is provided to passengers onboard airplanes to collect vomit in case of sickness."], "barf bag": ["A small bag impervious to fluids which is provided to passengers onboard airplanes to collect vomit in case of sickness."], "motion sickness bag": ["A small bag impervious to fluids which is provided to passengers onboard airplanes to collect vomit in case of sickness."], "freshly caught": ["Caught a short time ago."], "actuate": ["To put into action or motion."], "actuator": ["A mechanism that puts something into action."], "zealous": ["Marked by active interest and enthusiasm."], "fish population": ["The population of fish in a certain area."], "sea floor": ["The bottom of the ocean."], "sea bottom": ["The bottom of the ocean."], "scrap motorcar": ["Car which is no longer functional and may be dismantled for spare parts or completely demolished."], "GNP": ["Value of all goods and services produced in a country in one year, plus income earned by its citizens abroad, minus income earned by foreigners in the country."], "government debt": ["The total amount of all government securities outstanding."], "national debt": ["The total amount of all government securities outstanding."], "inland": ["Of or concerned with matters within the boundaries of a nation, as opposed to its relations with other nations.", "In or toward the interior of a country, away from the sea or the frontier.", "Away from the ocean or from open water.", "Limited to the land, or to inland routes; not passing on, or over, the sea."], "upcountry": ["In or toward the interior of a country, away from the sea or the frontier."], "seaward": ["Facing toward the sea.", "Toward the sea."], "seawards": ["Toward the sea."], "asea": ["Toward the sea."], "insoul": ["To endow with a soul."], "ensoul": ["To endow with a soul."], "nosegay": ["A small bunch of flowers typically given as a gift and often held together by a string around the flower stems."], "posey": ["A small bunch of flowers typically given as a gift and often held together by a string around the flower stems."], "posie": ["A small bunch of flowers typically given as a gift and often held together by a string around the flower stems."], "posy": ["A small bunch of flowers typically given as a gift and often held together by a string around the flower stems."], "tussie-mussie": ["A small bunch of flowers typically given as a gift and often held together by a string around the flower stems."], "flower bouquet": ["A small bunch of flowers typically given as a gift and often held together by a string around the flower stems."], "bouquet": ["A small bunch of flowers typically given as a gift and often held together by a string around the flower stems."], "backpedal": ["To retreat or withdraw from a formerly made statement or formerly held position."], "frugalista": ["A person who has a frugal lifestyle while being fashion and in good health."], "zymosis": ["Any enzymatic transformation of organic substrates, especially carbohydrates, generally accompanied by the evolution of gas."], "working elephant": ["Elephant that is used as a working animal, for example to carry heavy loads."], "working animal": ["Animal that is kept by humans and trained to perform tasks."], "rabbit kit": ["Young rabbit."], "rabbit cub": ["Young rabbit."], "zapping": ["The act of changing channels with a remote control."], "zeolite": ["Any of a family of glassy minerals analogous to feldspar containing hydrated aluminum silicates of calcium or sodium or potassium."], "L": ["A cigarette rolled using cannabis."], "optimisation": ["In mathematics, the study of problems in which one seeks to minimize or maximize a real function by systematically choosing the values of variables from within an allowed set."], "Kaqchiquel": ["An indigenous Mesoamerican language and a member of the Quichean-Mamean branch of the Mayan languages family, spoken by the indigenous Kaqchikel people in central Guatemala."], "zoanthropy": ["A kind of monomania in which the patient believes himself transformed into one of the lower animals."], "VSD": ["Pathological hole in the heart septum, connecting the 2 ventricles."], "ventricular septal defect": ["Pathological hole in the heart septum, connecting the 2 ventricles."], "interventricular septal defect": ["Pathological hole in the heart septum, connecting the 2 ventricles."], "islet": ["A small island."], "zwitterion": ["Ion which has a negative and positive charge."], "zonal": ["Of or pertaining to a zone."], "zoisite": ["A calcium-aluminum-silicate belonging to the epidote group of minerals."], "mood": ["Grammatical category that manifests the reality or intent degree of a verb.", "A mental or emotional state."], "Yankee": ["An inhabitant of the Northern States as distinguished from a Southerner, also applied sometimes by foreigners to any inhabitant of the United States."], "sleep apnea": ["A sleep disorder characterized by pauses in breathing during sleep, lasting at least 10 seconds."], "\u01c1Ani": ["A Khoisan language of Botswana with uvular clicks, one of the Kxoe dialects."], "\u01c1Ani-kxoe": ["A Khoisan language of Botswana with uvular clicks, one of the Kxoe dialects."], "\u01c0Anda": ["A Khoisan language of Botswana with uvular clicks, one of the Kxoe dialects."], "Byzantine": ["Of or relating to Byzantium.", "Excessively subtile or intricate."], "pointless": ["Relating to an argument, senseless or without defined meaning."], "byzantine": ["Excessively subtile or intricate."], "ad-supported": ["Financed by the display of advertisements."], "yearbook": ["A reference book that is published regularly once every year."], "orthotopic": ["In the normal or usual anatomical position."], "heterotopic": ["In an abnormal or unusual anatomical position."], "St. Martin's Day": ["The feast day of Martin of Tours on November 11."], "dickey bird": ["A small bird."], "dickey": ["A small bird."], "liquid petroleum": ["Oil which derives from petroleum and is made up of hydrocarbons."], "petrodollar": ["A United States dollar earned by a country through the sale of petroleum."], "folks": ["A cultural community connected by the same language and ancestory."], "youngster": ["A young person."], "yielding": ["Inclined to yield to argument or influence or control."], "yesterday morning": ["In the morning of the day before today."], "yesterday evening": ["On the evening of the day before today."], "yesterday noon": ["On the noon of the day before today."], "yesterday afternoon": ["On the afternoon of the day before today."], "presumption": ["That which one holds to be true; the acceptance of a fact, opinion, or assertion as real or true despite a lack of strong evidence or knowledge."], "wafer": ["Thin disk of unleavened bread used in a religious service, especially in the celebration of the eucharist.", "A thin, crisp, flat, dry and sweet biscuit, often with a patterned surface."], "trumpeter": ["A musician that plays the trumpet."], "trumpet player": ["A musician that plays the trumpet."], "trumpetress": ["A woman who plays the trumpet."], "English-speaking": ["Speaking the English language."], "Spanish-speaking": ["Speaking the Spanish language."], "Arabic-speaking": ["Speaking the Arabic language."], "Urdu-speaking": ["Speaking the Urdu language."], "Berber-speaking": ["Speaking the Berber language."], "Turkish-speaking": ["Speaking the Turkish language."], "Catalan-speaking": ["Speaking the Catalan language."], "Danish-speaking": ["Speaking the Danish language."], "Greek-speaking": ["Speaking the Greek language."], "Italian-speaking": ["Speaking the Italian language."], "Lingala-speaking": ["Speaking the Lingala language."], "Dutch-speaking": ["Speaking the Dutch language."], "Occitan-speaking": ["Speaking the Occitan language."], "Russian-speaking": ["Speaking the Russian language."], "Chinese-speaking": ["Speaking the Chinese language."], "Swedish-speaking": ["Speaking the Swedish language."], "Swahili-speaking": ["Speaking the Swahili language."], "Hindi-speaking": ["Speaking the Hindi language."], "Esperanto-speaking": ["Speaking the Esperanto language."], "water softening": ["Reduction of the hardness of water by removing hardness-forming ions."], "lovage": ["A perennial plant of the Apiaceae family, up to 1 meter high, the leaves and seeds of which are used to flavor food."], "high-rise": ["Any tall, multistoried structure or edifice that is equipped with elevators."], "hunch": ["An impression that something might be the case."], "suspicion": ["Lack of trust, suspicious and cautious attitude.", "An impression that something might be the case."], "Sranan Tongo": ["A creole language spoken in Suriname."], "Suriname Creole": ["A creole language spoken in Suriname."], "Taki Taki": ["A creole language spoken in Suriname."], "Eastern long-beaked echidna": ["A species of the genus Zaglossus living in the mountains of New Guinea, having five claws on its fore feet and four on its hind feet, weighting between 5\u201310 kg with a length ranging from 60\u2013100 cm."], "Barton's long-beaked echidna": ["A species of the genus Zaglossus living in the mountains of New Guinea, having five claws on its fore feet and four on its hind feet, weighting between 5\u201310 kg with a length ranging from 60\u2013100 cm."], "Barton's echidna": ["A species of the genus Zaglossus living in the mountains of New Guinea, having five claws on its fore feet and four on its hind feet, weighting between 5\u201310 kg with a length ranging from 60\u2013100 cm."], "xanthoma": ["(medicine) A skin disease marked by the development of irregular yellowish patches upon the skin."], "xerographic": ["Of or relating to xerography."], "xerophilous": ["Drought-loving; able withstand the absence or lack of moisture."], "sauce boat": ["A small recipient with a handle and a spout that is used to serve sauce and gravy at the table."], "sauci\u00e8re": ["A small recipient with a handle and a spout that is used to serve sauce and gravy at the table."], "tureen": ["A serving dish for soups or stews."], "dale": ["Any low-lying land bordered by higher ground; especially an elongate, relatively large, gently sloping depression of the Earth's surface, commonly situated between two mountains or between ranges of hills or mountains, and often containing a stream with an outlet."], "Spanish Maquis": ["Spanish guerrillas who fought Francisco Franco's dictatorial regime from the conclusion of the Spanish Civil War until 1965."], "relay antenna": ["Transmitter-receiver for mobile communication used to convert in both ways electromagnetic signals into electrical signals."], "xerosis": ["(Medicine) Excessive dryness."], "xylem": ["The woody part of plants: the supporting and water-conducting tissue."], "by heart": ["Completely and faithfully, refering to something that has been learnt and memorized."], "by memory": ["Completely and faithfully, refering to something that has been learnt and memorized."], "stand up": ["To not show up at an appointment.", "To rise from a lying or sitting position."], "Iberia": ["A peninsula located in southwestern Europe, joined with the continent by the Pyrenees mountains and bordered in the east by the Atlantic Ocean, in the west by the Mediterranean Sea, and in the south by the Strait of Gibraltar."], "Iberian Peninsula": ["A peninsula located in southwestern Europe, joined with the continent by the Pyrenees mountains and bordered in the east by the Atlantic Ocean, in the west by the Mediterranean Sea, and in the south by the Strait of Gibraltar."], "Hispania": ["All of the provinces of ancient Rome in which the Iberian peninsula was divided."], "by rote": ["Completely and faithfully, refering to something that has been learnt and memorized."], "common sole": ["A species of fish in the Soleidae family, found in the Eastern Atlantic ocean, from the south of Norway to Senegal, and in almost all of the Mediterranean Sea."], "Dove sole": ["A species of fish in the Soleidae family, found in the Eastern Atlantic ocean, from the south of Norway to Senegal, and in almost all of the Mediterranean Sea."], "Wagnerian": ["Of or resembling the music or style of the German composer Richard Wagner.", "Of or resembling the music or style of the German composer Richard Wagner."], "Wagnerism": ["An attachment, sometimes fanatical, to the music of Wagner."], "wail": ["A cry of sorrow and grief."], "lamentation": ["A cry of sorrow and grief."], "plaint": ["A cry of sorrow and grief."], "waistband": ["The band which encompasses the waist; esp., one on the upper part of breeches, trousers, pantaloons, skirts, or the like."], "girdle": ["The band which encompasses the waist; esp., one on the upper part of breeches, trousers, pantaloons, skirts, or the like."], "cincture": ["The band which encompasses the waist; esp., one on the upper part of breeches, trousers, pantaloons, skirts, or the like."], "sash": ["The band which encompasses the waist; esp., one on the upper part of breeches, trousers, pantaloons, skirts, or the like."], "waistcloth": ["The band which encompasses the waist; esp., one on the upper part of breeches, trousers, pantaloons, skirts, or the like."], "walkie-talkie": ["Small portable radio link, receiver and transmitter."], "walky-talky": ["Small portable radio link, receiver and transmitter."], "wander": ["To move about aimlessly or without any destination."], "bullshit": ["Something being said without sense, utterly wrong, of no use at all."], "warily": ["In a wary manner."], "gourmet food": ["Non-everyday food of high quality or specially prepared food, for example caviar, oysters, frogs' legs, salads or wines."], "fine food": ["Non-everyday food of high quality or specially prepared food, for example caviar, oysters, frogs' legs, salads or wines."], "specialty food": ["Non-everyday food of high quality or specially prepared food, for example caviar, oysters, frogs' legs, salads or wines."], "warmth": ["The quality or state of being warm."], "warranty": ["A guarantee by a seller to a buyer that in the event of a product requiring repair or remedy of a problem within a certain period after its purchase, the seller will repair the problem at no cost to the buyer."], "warrant": ["A guarantee by a seller to a buyer that in the event of a product requiring repair or remedy of a problem within a certain period after its purchase, the seller will repair the problem at no cost to the buyer."], "warrantee": ["A guarantee by a seller to a buyer that in the event of a product requiring repair or remedy of a problem within a certain period after its purchase, the seller will repair the problem at no cost to the buyer."], "guaranty": ["A guarantee by a seller to a buyer that in the event of a product requiring repair or remedy of a problem within a certain period after its purchase, the seller will repair the problem at no cost to the buyer."], "the great unwashed": ["The mass of a community as distinguished from a special class (elite)."], "wary": ["Characterized by caution.", "Openly distrustful and unwilling to confide."], "guarded": ["Characterized by caution."], "washbowl": ["A bathroom or lavatory sink that is permanently installed and connected to a water supply and drainpipe."], "washbasin": ["A bathroom or lavatory sink that is permanently installed and connected to a water supply and drainpipe."], "washstand": ["A bathroom or lavatory sink that is permanently installed and connected to a water supply and drainpipe."], "dainty": ["An especially delicious comestible."], "culinary delight": ["An especially delicious comestible."], "What's new": ["Please share with me information about recent events."], "cunt": ["The genitalia of a woman."], "twat": ["The genitalia of a woman."], "pussy": ["A cat that is hold as a pet.", "Containing pus.", "The genitalia of a woman."], "snatch": ["The genitalia of a woman."], "slit": ["Line separating the two labia majora in women.", "To make a clean cut through."], "puss": ["A cat that is hold as a pet.", "The genitalia of a woman."], "kitty-cat": ["A cat that is hold as a pet."], "kitty": ["A young cat.", "A cat that is hold as a pet."], "pussycat": ["A cat that is hold as a pet."], "domestic cat": ["A cat that is hold as a pet."], "washing": ["The work of cleansing, usually with water and soap."], "waster": ["A person or thing that wastes time, money, etc."], "timeline": ["A graphical representation of a chronological sequence of events."], "watchmaker": ["Someone who makes or repairs watches."], "horologist": ["Someone who makes or repairs watches."], "horologer": ["Someone who makes or repairs watches."], "clockmaker": ["Someone who makes or repairs watches."], "teaching hospital": ["A hospital affiliated to a university."], "university hospital": ["A hospital affiliated to a university."], "watchtower": ["A tower in which a sentinel is placed to watch for enemies, the approach of danger, or the like."], "flamenco dancer": ["A person who dances flamenco."], "phallus": ["An erect penis."], "watercolour": ["Water-soluble pigment.", "A painting produced with watercolors.", "Paint with watercolors."], "Fiji Hindi": ["An Indo-Iranian language spoken in Fiji by most Fijian citizens of Indian descent."], "Fijian Hindi": ["An Indo-Iranian language spoken in Fiji by most Fijian citizens of Indian descent."], "Humburi Senni": ["Dialect of the Songhay language spoken around the city of Hombori in Mali"], "Songhay of Hombori": ["Dialect of the Songhay language spoken around the city of Hombori in Mali"], "Humburi Senni Songhai": ["Dialect of the Songhay language spoken around the city of Hombori in Mali"], "Humburi Senni Songai": ["Dialect of the Songhay language spoken around the city of Hombori in Mali"], "Icetot": ["A language of the Kuliak subgroup of Nilo-Saharan languages spoken by the Ik people living in the mountains of northeastern Uganda near the border with Kenya."], "Cape Verdean": ["A person from Cape Verde, or of Cape Verdean ancestry."], "aristocracise": ["To convert to aristocracy."], "aristocracize": ["To convert to aristocracy."], "inside and outside": ["The two sides of an object."], "atrial septal defect": ["Pathological hole in the heart septum, connecting the 2 atria."], "interatrial septal defect": ["Pathological hole in the heart septum, connecting the 2 atria."], "ASD": ["Pathological hole in the heart septum, connecting the 2 atria."], "fellatio": ["The oral stimulation of the penis; fellatio."], "blowjob": ["The oral stimulation of the penis; fellatio."], "cock sucking": ["The oral stimulation of the penis; fellatio."], "fellation": ["The oral stimulation of the penis; fellatio."], "cunnilingus": ["The oral stimulation of the vulva or clitoris."], "cunnilinctus": ["The oral stimulation of the vulva or clitoris."], "wattmeter": ["An instrument for measuring power in watts, much used in measuring the energy of an electric current."], "wayward": ["Resistant to guidance or discipline."], "headstrong": ["Resistant to guidance or discipline."], "weakling": ["A physically weak or feeble person.", "A person of weak character who lacks courage and/or moral strength."], "wuss": ["A person of weak character who lacks courage and/or moral strength."], "doormat": ["A flat object for wiping one\u2019s shoes, laid on the floor immediately outside or inside the entrance to a building."], "unshod": ["Not wearing shoes.", "Of a horse: Not wearing horseshoes."], "unshoed": ["Not wearing shoes."], "shod": ["Wearing shoes.", "Of a horse: Wearing horseshoes."], "dry milk": ["Dairy product in powder form which is made by dehyrating milk."], "Murnau am Staffelsee": ["A market town in the district of Garmisch-Partenkirchen, in the Oberbayern region of Bavaria, Germany."], "Murnau": ["A market town in the district of Garmisch-Partenkirchen, in the Oberbayern region of Bavaria, Germany."], "Baltic languages": ["A group of related languages belonging to the Indo-European language family and spoken mainly in areas extending east and southeast of the Baltic Sea in Northern Europe."], "Wagiman": ["A near-extinct indigenous Australian language spoken in and around Pine Creek, in the Katherine Region of the Northern Territory."], "Wakiman": ["A near-extinct indigenous Australian language spoken in and around Pine Creek, in the Katherine Region of the Northern Territory."], "Wogeman": ["A near-extinct indigenous Australian language spoken in and around Pine Creek, in the Katherine Region of the Northern Territory."], "Swabian Alb": ["A low mountain range in Baden-W\u00fcrttemberg, Germany, extending 220 km from southwest to northeast and 40 to 70 km in width."], "Swabian Jura": ["A low mountain range in Baden-W\u00fcrttemberg, Germany, extending 220 km from southwest to northeast and 40 to 70 km in width."], "Swabian Mountains": ["A low mountain range in Baden-W\u00fcrttemberg, Germany, extending 220 km from southwest to northeast and 40 to 70 km in width."], "Tajiki Arabic": ["A variety of Arabic spoken by a few thousand people in Afghanistan and Tajikistan."], "Jugari": ["A variety of Arabic spoken by a few thousand people in Afghanistan and Tajikistan."], "Bukhara Arabic": ["A variety of Arabic spoken by a few thousand people in Afghanistan and Tajikistan."], "Buxara Arabic": ["A variety of Arabic spoken by a few thousand people in Afghanistan and Tajikistan."], "Tajiji Arabic": ["A variety of Arabic spoken by a few thousand people in Afghanistan and Tajikistan."], "Balkh Arabic": ["A variety of Arabic spoken by a few thousand people in Afghanistan and Tajikistan."], "wimp": ["A person of weak character who lacks courage and/or moral strength."], "pansy": ["A person of weak character who lacks courage and/or moral strength.", "A plant of the genus Viola having four upswept petals and a broader one pointing downward."], "sissy": ["A person of weak character who lacks courage and/or moral strength.", "Having unsuitable feminine qualities."], "Saint Lucian Creole": ["A Antillean creole language spoken in Saint Lucia, Dominica, Grenada and Trinidad and Tobago."], "washcloth": ["A small rectangular piece of cloth, often formed like a pouch, that is made of terrycloth and used to wash one's body."], "Algerian Arabic": ["An Arabic language of the Maghrebi Arabic group spoken in Algeria."], "Algerian Saharan Arabic": ["A variety of Arabic of the Bedouin group spoken by about 100,000 people in Algeria, predominantly along the Moroccan border with the Atlas mountains range."], "Saharan Arabic": ["A variety of Arabic of the Bedouin group spoken by about 100,000 people in Algeria, predominantly along the Moroccan border with the Atlas mountains range."], "Tamanrasset Arabic": ["A variety of Arabic of the Bedouin group spoken by about 100,000 people in Algeria, predominantly along the Moroccan border with the Atlas mountains range."], "Tamanghasset Arabic": ["A variety of Arabic of the Bedouin group spoken by about 100,000 people in Algeria, predominantly along the Moroccan border with the Atlas mountains range."], "infectious agent": ["Any disease-producing agent or microorganism."], "carbon tax": ["Compulsory charges levied on fuels to reduce the output of carbon dioxide (CO2)."], "Baharna Arabic": ["A variety of Arabic spoken by the Bahranis of Bahrain and some parts of Saudi Eastern Province, and also in Oman."], "Bahrani Arabic": ["A variety of Arabic spoken by the Bahranis of Bahrain and some parts of Saudi Eastern Province, and also in Oman."], "Baharnah": ["A variety of Arabic spoken by the Bahranis of Bahrain and some parts of Saudi Eastern Province, and also in Oman."], "Bahrani": ["A variety of Arabic spoken by the Bahranis of Bahrain and some parts of Saudi Eastern Province, and also in Oman."], "GMO": ["An organism that has undergone external processes by which its basic set of genes has been altered."], "Upper Guinea Creole": ["A group of Portuguese-based creoles spoken around Cape Verde and Guinea-Bissau."], "Upper Guinea Creole Spoken": ["Variants of the Upper Guinea Creole used in oral communication."], "chestnut cream": ["Cream made of chestnuts and, often, sugar and vanilla."], "sandy beach": ["A beach that consists of sand."], "stockinged": ["Wearing stockings."], "unstockinged": ["Not wearing stockings."], "level crossing": ["A point where a railway line crosses a road or a path on one level (that is, without a tunnel or a bridge)."], "railroad crossing": ["A point where a railway line crosses a road or a path on one level (that is, without a tunnel or a bridge)."], "road through railroad": ["A point where a railway line crosses a road or a path on one level (that is, without a tunnel or a bridge)."], "train crossing": ["A point where a railway line crosses a road or a path on one level (that is, without a tunnel or a bridge)."], "grade crossing": ["A point where a railway line crosses a road or a path on one level (that is, without a tunnel or a bridge)."], "weakening": ["Becoming weaker."], "wtf": ["Exclamation of amazement."], "what the fuck": ["Exclamation of amazement."], "as of now": ["Starting at this moment and continuing indefinitely."], "henceforth": ["Starting at this moment and continuing indefinitely."], "henceforward": ["Starting at this moment and continuing indefinitely."], "penitence": ["An act of atonement for a sin or wrongdoing."], "horizontal": ["Parallel to or in the plane of the horizon or a base line."], "horizontally": ["In a horizontal direction or position."], "happy as a sandboy": ["Extremely happy."], "happy as a king": ["Extremely happy."], "happy as a clam": ["Extremely happy."], "happy as a clam at high tide": ["Extremely happy."], "happy as a lark": ["Extremely happy."], "happy as can be": ["Extremely happy."], "crossbill": ["A bird genus in the finch family having mandibles crossing at their tips."], "over the moon": ["Extremely happy."], "lab": ["A room or building with scientific equipment for doing scientific tests or for teaching science, or a place where chemicals or medicines are produced."], "delighted": ["Very happy."], "educatress": ["A woman who educates, esp. a teacher, principal, or other person involved in planning or directing education."], "female educator": ["A woman who educates, esp. a teacher, principal, or other person involved in planning or directing education."], "male educator": ["A man who educates, esp. a teacher, principal, or other person involved in planning or directing education."], "horseflesh": ["The meat of a horse, usually for human consumption."], "horsemeat": ["The meat of a horse, usually for human consumption."], "hippophagy": ["The consumption of horsemeat."], "hippophagism": ["The consumption of horsemeat."], "weakness": ["The quality or state of being weak."], "feebleness": ["The quality or state of being weak."], "wearily": ["In a weary manner."], "weekly": ["A publication issued once in seven days, or appearing once a week.", "Done, produced, or happening once a week."], "weep": ["To shed tears due to the impact of an emotion."], "weird": ["Of strange or extraordinary character."], "unearthly": ["Of strange or extraordinary character."], "unnatural": ["Of strange or extraordinary character."], "weldability": ["Refers to a material its ability to be welded.", "Refers to a material its ability to be welded."], "oenophilia": ["The love of wine."], "wine fault": ["An undesirable gustatory, olfactory or optical characteristic of wine, often resulting from poor winemaking practices or storage conditions."], "wine defect": ["An undesirable gustatory, olfactory or optical characteristic of wine, often resulting from poor winemaking practices or storage conditions."], "lungless": ["Not having lungs."], "eyeless": ["Not having eyes."], "whaler": ["A seaman who works on a ship that hunts whales.", "A ship engaged in whale fishing."], "whaling ship": ["A ship engaged in whale fishing."], "barc": ["A sailing ship with three or more masts, fore-and-aft sails on the aftermost mast and square sails on all other masts."], "wheelbase": ["The distance between the center of the front wheels and the center of the rear wheels."], "ampul": ["A small hermetically sealed glass vial containing a sterile chemical substance suitable for injection."], "vial": ["A small bottle."], "cesspool": ["A reservoir for faeces that are used as manure."], "cesspit": ["A reservoir for faeces that are used as manure."], "track width": ["The distance between the right and the left wheels of an axle."], "whence": ["From which place?", "From which place."], "wherefrom": ["From which place?"], "whenever": ["At every or any time."], "whensoever": ["At every or any time."], "campfire": ["A small, controlled outdoor fire."], "Coptic Egyptian": ["A direct descendant of the ancient Egyptian language."], "workday": ["A day of a week in which work is done."], "steering wheel": ["A circular object used to steer certain types of vehicles."], "novel adaptation": ["The transfer of a novel to a feature film."], "persimmon": ["Edible fruit of a number of species of trees of the genus Diospyros in the ebony wood family."], "kaki": ["Edible fruit of a number of species of trees of the genus Diospyros in the ebony wood family."], "Japanese persimmon": ["Edible fruit of a number of species of trees of the genus Diospyros in the ebony wood family."], "Asian persimmon": ["Edible fruit of a number of species of trees of the genus Diospyros in the ebony wood family."], "mulching": ["The spreading of leaves, straw or other loose material on the ground to prevent erosion, evaporation or freezing of plant roots."], "gas station": ["A place where petrol and other supplies for motorists are sold."], "millage tax": ["A tax laid upon the legal or beneficial owner of real property, and apportioned upon the assessed value of his land."], "property tax": ["A tax laid upon the legal or beneficial owner of real property, and apportioned upon the assessed value of his land."], "rial": ["The currency of Yemen."], "domestic sheep": ["A quadrupedal, ruminant mammal kept as livestock for its meat, milk and wool."], "wherever": ["In or at or to what place."], "wheresoever": ["In or at or to what place."], "puppy": ["A young dog."], "whelp": ["A young dog."], "red snapper": ["Reef fish of the snapper family found in the Gulf of Mexico and the southeastern Atlantic coast of the United States."], "whim": ["A sudden, unpredictable change as of one's mind."], "wholeheartedly": ["Fully or completely sincere."], "wholly": ["In a whole or complete manner."], "whore": ["A woman who sells sexual services for money.", "To have sexual relations with prostitutes.", "To offer sexual services in exchange for money."], "harlot": ["A woman who sells sexual services for money."], "strumpet": ["A woman who sells sexual services for money."], "hooker": ["A woman who sells sexual services for money."], "trollop": ["A woman who sells sexual services for money."], "boner": ["An erect penis."], "man reaction": ["An erect penis."], "premiere": ["The first public performance of a play, piece of music or movie."], "dysphemism": ["An offensive or disparaging expression that is substituted for an inoffensive one.", "The use of an offensive or disparaging expression that is substituted for an inoffensive one."], "dysphemistic": ["Substituting a neutral term with a negative one."], "mass noun": ["A noun that normally cannot be counted and thus does not form plurals and presents entities as an indivisible mass."], "uncountable noun": ["A noun that normally cannot be counted and thus does not form plurals and presents entities as an indivisible mass."], "non-count noun": ["A noun that normally cannot be counted and thus does not form plurals and presents entities as an indivisible mass."], "uncountable": ["(of a noun) That cannot be used freely with numbers or the indefinite article."], "brothel": ["A facility in which sexual services are offered for money."], "sparerib": ["A cut of pork meat including the rib bones."], "whorehouse": ["A facility in which sexual services are offered for money."], "spare rib": ["A cut of pork meat including the rib bones."], "pothead": ["Someone who frequently smokes marijuana."], "Geonames ID": ["The unique numerical Geonames identifier of a geographic unit."], "drums": ["A collection of drums, cymbals and sometimes other percussion instruments arranged for convenient playing by a single drummer."], "oak tree": ["Any tree of the genus Quercus in the order Fagales, characterized by simple, usually lobed leaves, scaly winter buds, a star-shaped pith, and its fruit, the acorn, which is a nut; the wood is tough, hard, and durable, generally having a distinct pattern."], "widening": ["An increase in width."], "broadening": ["An increase in width."], "willemite": ["A zinc silicate mineral."], "willing": ["Ready to do something that is not a matter of course."], "World Factbook URI": ["The Universal Resource Identifier (URI) identifying the World Factbook non-information resource of the country."], "DBpedia resource URI": ["The DBpedia resource URI for a given DM."], "willingly": ["Freely and spontaneously; with pleasure.", "Freely and spontaneously."], "gladly": ["Freely and spontaneously; with pleasure."], "\u0111\u1ed3ng": ["The Vietnamese currency."], "wilting": ["The drying out, drooping, and withering of the leaves of a plant due to inadequate water supply, excessive transpiration, or vascular disease."], "winding": ["Something wound around something else."], "orrery": ["A mechanical device that illustrates the relative positions and motions of the planets and moons in the solar system in a heliocentric model."], "tellurion": ["A model that shows the movements of Earth, Moon and Sun and illustrates the phenomena of day and night change, the seasons, the lunar phases and eclipses."], "tellurian": ["A model that shows the movements of Earth, Moon and Sun and illustrates the phenomena of day and night change, the seasons, the lunar phases and eclipses."], "jovilabium": ["A model of Jupiter and its four moons, Io, Europa, Ganymede and Callisto."], "Io": ["The innermost of the four Galilean moons of the planet Jupiter.", "In Greek mythology, a priestess of Hera in Argos who was seduced by Zeus and changed into a heifer to escape detection."], "thigh-length boot": ["A type of boot that extends above the knees."], "thigh-high boot": ["A type of boot that extends above the knees."], "thigh boot": ["A type of boot that extends above the knees."], "over-the-knee boot": ["A type of boot that extends above the knees."], "Ganymedes": ["In Greek mythology, a son of the Trojan king Tros."], "Callisto": ["The second largest moon of the planet Jupiter.", "In Greek mythology, a nymph of Artemis who was transformed into a bear and set among the stars."], "daytime serial": ["A television serial about the lives of melodramatic characters, which are often filled with strong emotions, highly dramatic situations and suspense."], "Coast Tsimshian": ["A Tsimshianic language spoken by the Tsimshian nation in northwestern British Columbia and southeastern Alaska."], "Tsimshian proper": ["A Tsimshianic language spoken by the Tsimshian nation in northwestern British Columbia and southeastern Alaska."], "Sm'algyax\u0323": ["A Tsimshianic language spoken by the Tsimshian nation in northwestern British Columbia and southeastern Alaska."], "Sm'algax": ["A Tsimshianic language spoken by the Tsimshian nation in northwestern British Columbia and southeastern Alaska."], "Mi'kmaq": ["An Eastern Algonquian language spoken by the Mi'kmaq people in Canada and the United States."], "chewing tobacco": ["A type of tobacco which consists of whole leaves that are placed into the mouth and chewed."], "chew": ["A type of tobacco which consists of whole leaves that are placed into the mouth and chewed.", "To crush with the teeth by repeated closing and opening of the jaws; done to food to soften it and break it down by the action of saliva before it is swallowed."], "chaw": ["A type of tobacco which consists of whole leaves that are placed into the mouth and chewed."], "nicotine": ["An alkaloid found in the nightshade family of plants, especially in the tabacco plant and which is addictive and toxic in larger doses."], "windscreen": ["The front window of an aircraft, automobile, bus, motorcycle, or tram.", "Mat used to protect the plants from the wind."], "wine cellar": ["A cellar for the storage of wine."], "chemise cagoule": ["A heavy nightshirt worn by Catholic men and women during the Middle Ages, with a hole to allow for sexual intercourse with a minimum of physical contact."], "hygienics": ["The study and use of practical measures for the preservation of public health."], "job market": ["The conjuncture of supply and demand for labour in a national economy."], "employment market": ["The conjuncture of supply and demand for labour in a national economy."], "shindig": ["A large and noisy party, gathering or festivity."], "bride-to-be": ["A woman who is engaged to be married."], "groom-to-be": ["A man who is engaged to be married."], "OpenCyc Concept URI": ["The undated URI of the OpenCyc concept corresponding to the Defined Meaning."], "wink": ["To close and reopen both eyes quickly.", "To close and open the eyelid of one eye deliberately, as to convey a message, signal, or suggestion.", "A signal or hint conveyed by winking."], "penile": ["Of or relating to the penis."], "East German": ["Of or relating to Eastern Germany."], "Western German": ["Of or relating to Western Germany."], "bleed to death": ["To die because of massive loss of blood."], "lexical class": ["The category a word is assigned to based on its syntactic function within a specified language."], "word class": ["The category a word is assigned to based on its syntactic function within a specified language."], "bordello": ["A facility in which sexual services are offered for money."], "comparative": ["A degree of comparison of adjectives and adverbs."], "superlative": ["Highest degree of comparison of adjectives and adverbs."], "children's book": ["A book that is written for children."], "children's film": ["A film that is intended for children."], "neuter gender": ["The neutrally determined gender of a kind of word as used by some languages."], "demean": ["To make a person morally inferior."], "degrade": ["To make a person morally inferior.", "To lower the grade or worth of something."], "demeaning": ["Which makes a person morally inferior."], "debasing": ["Which makes a person morally inferior."], "degrading": ["Which makes a person morally inferior."], "wiper": ["One who wipes."], "wisely": ["In a wise manner."], "surfboard": ["A shaped waterproof plank used to surf on waves.", "A wrestling hold in which the wrestler puts one foot on the back of the opponent, pulling back his arms, almost like riding on a surfboard."], "witless": ["Lacking in intelligence."], "stage direction": ["An instruction for an actor or for the director that is written into the script of a play."], "Bernstein's hypothesis": ["A linguistic hypothesis developed by Basil Bernstein in 1958 which is based on the Sapir-Whorf hypothesis and postulates that the language variety used by the middle and upper classes differs from that used by the lower classes."], "elaborated code": ["According to Bernstein's hypothesis, the language variety used by the middle and upper classes which is more complex and less predictable."], "formal language": ["According to Bernstein's hypothesis, the language variety used by the middle and upper classes which is more complex and less predictable."], "restricted code": ["According to Bernstein's hypothesis, the language variety used by the lower classes which is less complex and more predictable."], "public language": ["According to Bernstein's hypothesis, the language variety used by the lower classes which is less complex and more predictable."], "Bari Kakwa": ["A language of the Bari family spoken by the Kakwa people in northwestern Uganda, South Sudan and Orientale province of the Democratic Republic of the Congo."], "Kakua": ["A language of the Bari family spoken by the Kakwa people in northwestern Uganda, South Sudan and Orientale province of the Democratic Republic of the Congo."], "Kwakwak": ["A language of the Bari family spoken by the Kakwa people in northwestern Uganda, South Sudan and Orientale province of the Democratic Republic of the Congo."], "Southern Auvergnat": ["A dialect of Auvergnat spoken in the departments of Cantal, Haute-Loire, a part of Ard\u00e8che and most of Loz\u00e8re."], "Upper Auvergnat": ["A dialect of Auvergnat spoken in the departments of Cantal, Haute-Loire, a part of Ard\u00e8che and most of Loz\u00e8re."], "cecity": ["The condition of being unable to see."], "sightlessness": ["The condition of being unable to see."], "ablepsy": ["The condition of being unable to see."], "radical": ["Going completely and thoroughly to the root or source."], "rolled dough": ["Piece of dough that has been flattened with a rolling pin."], "rolled-out pastry": ["Piece of dough that has been flattened with a rolling pin."], "wollastonite": ["A calcium inosilicate mineral."], "martyr": ["A man who suffers for the sake of principle.", "A person who suffers for the sake of principle."], "bra": ["An item of women's underwear designed to support and elevate the breasts."], "brassiere": ["An item of women's underwear designed to support and elevate the breasts."], "uxoricide": ["The murder of one's wife.", "A husband who murders his wife."], "uxoricidal": ["Of, pertaining to or tending to uxoricide."], "Cuban Spanish": ["A Spanish language dialect of the Americano-S branch."], "Chilean Spanish": ["A Spanish language dialect of the Americano-S branch."], "matricide": ["The killing of one's mother.", "One who kills one's mother."], "Ecuadorian Spanish": ["A Spanish language dialect of the Americano-S branch."], "matricidal": ["Of, pertaining to or tending to matricide."], "mariticide": ["The killing of one's spouse.", "The murder of a husband by his wife.", "A woman who has killed her husband."], "mariticidal": ["Of, pertaining to or tending to mariticide."], "Uruguayan Spanish": ["A Spanish language dialect of the Americano-S branch."], "nemesis": ["A righteous infliction of retribution through an appropriate agent."], "Nemesis": ["The goddess of divine retribution and vengeance in Greek mythology; punishes hubris."], "let the buyer beware": ["A warning to anyone buying something that there might be unforeseen problems or faults with what is bought."], "compliant": ["In accordance with a set of specifications."], "brainiac": ["An intelligent person."], "mastermind": ["An intelligent person."], "Einstein": ["An intelligent person."], "einstein": ["Unit of measurement for the number of photons."], "depressor": ["Muscle whose function is to pull down the parts of the body to which it is connected.", "(For a muscle) Whose function is to pull down the parts of the body to which it is connected."], "simpleton": ["A person with poor judgment or little intelligence."], "depressor muscle": ["Muscle whose function is to pull down the parts of the body to which it is connected."], "tongue depressor": ["Device used to depress and maintain the tongue in order to examine the back of the mouth and the throat."], "workbench": ["A strong worktable for a carpenter or mechanic."], "worker": ["A person who works."], "flap": ["A hinged leaf, as of a table or shutter. (Webster, 1913)", "The motion of anything broad and loose, or a stroke or sound made with it; as, the flap of a sail or of a wing. (Webster 1913)"], "world-wide": ["Involving the entire earth; not limited or provincial in scope.", "All around the world, international, involving everyone in the world."], "worrisome": ["Not reassuring."], "unreassuring": ["Not reassuring."], "worshipper": ["A person who worships, especially at a place of assembly for religious services."], "nationalistic": ["Pertaining to nationalism."], "parity": ["Numerical equality."], "Sapir-Whorf hypothesis": ["In linguistics a hypothesis which states that a person's native tongue influences the way he thinks and behaves."], "camper": ["A motor vehicle with interior furnishings suitable for living.", "A person living temporarily in a tent or lodge for recreation."], "motorhome": ["A motor vehicle with interior furnishings suitable for living."], "motor caravan": ["A motor vehicle with interior furnishings suitable for living."], "buddy": ["Close friend."], "worthwhile": ["Sufficiently valuable to justify the investment of time or interest."], "motion-picture photography": ["The discipline of making lighting and camera choices when recording photographic images for the cinema."], "freebase": ["To use purified cocaine by burning it and inhaling the fumes."], "veganism": ["A way of life which strictly avoids use of any kind of animal for any purpose."], "next to": ["Having the position next to a given place, location or object"], "acquiescent": ["Willing to carry out the orders or wishes of another without protest."], "biddable": ["Willing to carry out the orders or wishes of another without protest."], "contrabandist": ["A man who imports or exports without paying the lawful customs charges or duties.", "A woman who imports or exports without paying the lawful customs charges or duties.", "Someone who imports or exports without paying the lawful customs charges or duties."], "runner": ["A man who imports or exports without paying the lawful customs charges or duties.", "A woman who imports or exports without paying the lawful customs charges or duties.", "Someone who imports or exports without paying the lawful customs charges or duties.", "Someone who travels on foot by running.", "A trained athlete who competes in foot races."], "moon curser": ["A man who imports or exports without paying the lawful customs charges or duties.", "A woman who imports or exports without paying the lawful customs charges or duties.", "Someone who imports or exports without paying the lawful customs charges or duties."], "moon-curser": ["A man who imports or exports without paying the lawful customs charges or duties.", "A woman who imports or exports without paying the lawful customs charges or duties.", "Someone who imports or exports without paying the lawful customs charges or duties."], "patent ductus arteriosus": ["Pathology consisting in that the foetal communication between the pulmonary artery and the aorta has not been closed."], "PDA": ["Pathology consisting in that the foetal communication between the pulmonary artery and the aorta has not been closed."], "cheek pouch": ["Pouch located on each side of the mouth, between the cheeks and the jaw, in several mammals who use it to store their food for a short time."], "TLD": ["The last part of an Internet domain name; that is, the letters which follow the final dot of any domain name."], "NTP": ["A protocol for synchronizing the clocks of computer systems over packet-switched, variable-latency data networks."], "grid pattern": ["A pattern of regularly spaced horizontal and vertical lines."], "plucked string instrument": ["A string instrument that is played by plucking its strings."], "plucked instrument": ["A string instrument that is played by plucking its strings."], "bowed instrument": ["A string instrument that is played by bowing its strings with a bow or a wheel."], "bowed string instrument": ["A string instrument that is played by bowing its strings with a bow or a wheel."], "stringed instrument": ["A musical instrument on which sounds are produced by setting strings in vibration."], "low-grade": ["Of lower quality."], "vocalist": ["A male person who sings, is able to sing, or earns a living by singing.", "A person who sings, is able to sing, or earns a living by singing."], "apostolic administrator": ["A prelate appointed by the Pope to serve as the ordinary for an apostolic administration of the Roman Catholic Church."], "fleece": ["To remove the fleece from a sheep etc. by clipping.", "To ask an unreasonable price."], "wrapping": ["All products made of any materials of any nature to be used for the containment, protection, handling, delivery and presentation of goods, from raw materials to processed goods, from the producer to the user or the consumer."], "wristband": ["A strip of material worn around the wrist to absorb perspiration, especially in sports."], "writing": ["Material of any kind, regardless of physical form, which furnishes information, evidence or ideas, including items such as contracts, bills of sale, letters, audio and video recordings, and machine readable data files.", "A system of characters used to write one or several languages.", "The art of writing with the hand and a writing instrument."], "wronly": ["Deviating from what is considered right or proper or good."], "wrongly": ["Not adhering to ethical or moral principles.", "In a wrong manner."], "point of view": ["The position from which an object is looked at.", "The mental position from which things are viewed."], "standpoint": ["The mental position from which things are viewed."], "ingenue": ["An innocent, unsophisticated, na\u00efve girl or young woman.", "The role of an innocent, artless young woman in a play."], "ing\u00e9nue": ["An innocent, unsophisticated, na\u00efve girl or young woman.", "The role of an innocent, artless young woman in a play."], "spinster": ["Someone who gives a positive interpretation to events.", "An elderly unmarried woman.", "Someone who spins (who twists fibers into threads)."], "old maid": ["An elderly unmarried woman."], "spinner": ["Someone who spins (who twists fibers into threads)."], "thread maker": ["Someone who spins (who twists fibers into threads)."], "jocose": ["Playful and characterized by jokes."], "illusionist": ["Someone who performs magic tricks to amuse an audience."], "prestidigitator": ["Someone who performs magic tricks to amuse an audience."], "pessimist": ["A person who expects the worst and looks on the downside of things."], "optimist": ["A person who expects the best and looks on the upside of things."], "insectivorous": ["(For an animal) Feeding on insects.", "(Of a plant) Capable of trapping and absorbing insects."], "logging": ["The act or process of felling or uprooting standing trees."], "animal slaughter": ["The killing and butchering of animals for food or other animal products."], "deluge": ["An extreme heavy shower."], "torrent": ["An extreme heavy shower."], "every evening": ["Taking place every evening."], "deem": ["To have as an opinion.", "To account; to esteem; to think; to judge; to hold in opinion; to regard. (Source Webster 1913)"], "worrywart": ["A person who expects the worst and looks on the downside of things."], "alarmist": ["A person who expects the worst and looks on the downside of things.", "A person who alarms others needlessly."], "unlicensed viewer": ["Someone who watches TV illegaly, that is to say without paying fees although it is demanded."], "merchant of doom": ["A person that predicts future misfortunes."], "hold in opinion": ["To account; to esteem; to think; to judge; to hold in opinion; to regard. (Source Webster 1913)"], "yes man": ["A person who categorically agrees to stay in someone's good favor."], "yes-man": ["A person who categorically agrees to stay in someone's good favor."], "Computer Engineering": ["The discipline that embodies the science and technology of design, construction, implementation, and maintenance of software and hardware components of modern computing systems and computer-controlled equipment. (Source: ACM)"], "Electronic and Computer Engineering": ["The discipline that embodies the science and technology of design, construction, implementation, and maintenance of software and hardware components of modern computing systems and computer-controlled equipment. (Source: ACM)"], "Computer Systems Engineering": ["The discipline that embodies the science and technology of design, construction, implementation, and maintenance of software and hardware components of modern computing systems and computer-controlled equipment. (Source: ACM)"], "splendid": ["Of the highest quality."], "fantabulous": ["Of the highest quality."], "nope": ["A word used to show disagreement of something."], "bastardize": ["To cause the natural qualities of a race, or a species to be lost."], "bastardization": ["Act or process of causing the natural qualities of a race, or a species to be lost."], "bastardisation": ["Act or process of causing the natural qualities of a race, or a species to be lost."], "bastardise": ["To cause the natural qualities of a race, or a species to be lost."], "proof-of-concept": ["A short and/or incomplete realization of a certain method or idea(s) to demonstrate its feasibility."], "wulfenite": ["A lead molybdate with the chemical formula PbMoO4."], "verbal abuse": ["Coarse, insulting speech or expression."], "vacillation": ["Indecision in speech or action.", "Changing location by moving back and forth."], "wavering": ["Indecision in speech or action."], "swinging": ["Changing location by moving back and forth."], "first-class": ["Of the highest quality."], "gait": ["Manner of walking or stepping; bearing or carriage while moving. (Webster 1913)", "A manner of walking."], "paved": ["Covered with a firm surface."], "unpaved": ["Not having a paved surface."], "crony": ["Close friend."], "vamp": ["A seductive woman who uses her sex appeal to exploit men."], "coquette": ["A seductive woman who uses her sex appeal to exploit men."], "hay chute": ["Opening in an attic above a stable, through which hay is thrown."], "hay-chute": ["Opening in an attic above a stable, through which hay is thrown."], "vandalic": ["Of or pertaining to vandalism."], "vanilla": ["Any tropical, climbing orchid of the genus Vanilla (especially Vanilla planifolia), bearing podlike fruit yielding an extract used in flavoring food or in perfumes.", "A flavoring derived from orchids of the genus Vanilla native to Mexico"], "nonproprietary": ["Not protected by trademark.", "Not protected by trademark or patent or copyright."], "generic product": ["Any product that can be sold without a brand name."], "in the future": ["In the future."], "vanilla planifolia": ["Any tropical, climbing orchid of the genus Vanilla (especially Vanilla planifolia), bearing podlike fruit yielding an extract used in flavoring food or in perfumes."], "icicle": ["A spike of ice that forms when water dripping an object freezes."], "vanity": ["Feeling of excessive pride.", "The quality of being valueless or futile.", "Low table with mirror or mirrors where one sits while dressing or applying makeup."], "vacuity": ["The quality of being valueless or futile."], "dressing table": ["Low table with mirror or mirrors where one sits while dressing or applying makeup."], "toilet table": ["Low table with mirror or mirrors where one sits while dressing or applying makeup."], "vaporization": ["Conversion from a liquid or solid state to a vapour."], "vaporizer": ["A device used to vaporize a liquid."], "vaporous": ["Resembling or characteristic of vapor."], "sea-buckthorn": ["A deciduous shrub in the genus Hippophae, 0.5 to 6 m tall typically occuring in dry, sandy areas."], "sea buckthorn": ["A deciduous shrub in the genus Hippophae, 0.5 to 6 m tall typically occuring in dry, sandy areas."], "seabuckthorn": ["A deciduous shrub in the genus Hippophae, 0.5 to 6 m tall typically occuring in dry, sandy areas."], "sandthorn": ["A deciduous shrub in the genus Hippophae, 0.5 to 6 m tall typically occuring in dry, sandy areas."], "seaberry": ["A deciduous shrub in the genus Hippophae, 0.5 to 6 m tall typically occuring in dry, sandy areas."], "common sea-buckthorn": ["A deciduous shrub in the genus Hippophae, 0.5 to 6 m tall typically occuring in dry, sandy areas."], "Christmassy": ["Pertaining or relating to Christmas."], "Christmasy": ["Pertaining or relating to Christmas."], "lampshade": ["A shade placed over a lamp used to diffuse the light."], "minimal pair": ["A pair of words or phrases in a particular language that differ only in one phoneme."], "close to": ["[Said for a quantity (time, size, place, ...) that is given] in a imprecise way but close to the real value."], "just about": ["[Said for a quantity (time, size, place, ...) that is given] in a imprecise way but close to the real value."], "varactor": ["A type of diode which has a variable capacitance."], "varicap diode": ["A type of diode which has a variable capacitance."], "varactor diode": ["A type of diode which has a variable capacitance."], "variable capacitance diode": ["A type of diode which has a variable capacitance."], "variable reactance diode": ["A type of diode which has a variable capacitance."], "tuning diode": ["A type of diode which has a variable capacitance."], "buying power": ["The value of a currency as measured by the amount of goods one can buy with it."], "formula symbol": ["A symbol used in mathematics, natural science and engineering science for the quantitative and qualitative description of magnitudes and concepts in formulas."], "abat-son": ["Large louver in a church bell tower which directs the sound of the bell toward the ground."], "in future": ["In the future."], "Tell me about it!": ["An idiom used in reply to something someone said that means that it is already known and agreed upon emphatically."], "No change there then!": ["An idiom used in reply to something someone said that means that it is already known and agreed upon emphatically."], "Tell me something I don't know!": ["An idiom used in reply to something someone said that means that it is already known and agreed upon emphatically."], "That's an understatement!": ["An idiom used in reply to something someone said that means that it is already known and agreed upon emphatically."], "deceptiveness": ["Deceptive or false appearance; that which misleads the eye or the mind."], "illusion": ["Deceptive or false appearance; that which misleads the eye or the mind."], "vanguard": ["The leading units moving at the head of an army.", "A creative group active in the innovation and application of new concepts and techniques in a given field, especially in the arts.", "The position of greatest importance or advancement; the leading position in a movement or field."], "van": ["The leading units moving at the head of an army.", "A creative group active in the innovation and application of new concepts and techniques in a given field, especially in the arts."], "avant-garde": ["A creative group active in the innovation and application of new concepts and techniques in a given field, especially in the arts."], "forefront": ["The position of greatest importance or advancement; the leading position in a movement or field."], "new wave": ["A creative group active in the innovation and application of new concepts and techniques in a given field, especially in the arts."], "cutting edge": ["The position of greatest importance or advancement; the leading position in a movement or field."], "advance guard": ["The leading units moving at the head of an army."], "camping bus": ["A motor vehicle with interior furnishings suitable for living."], "inductive": ["Of reasoning: Proceeding from particular facts to a general conclusion."], "toilet lid": ["The upper part of a toilet seat which can be opened and closed."], "elegant gait": ["Elegance in walking; elegance while walking."], "alliteration": ["The repetition of the same sound beginning several words in close succession."], "North German": ["Pertaining to or being from or characteristic of North Germany."], "South German": ["Pertaining to or being from or characteristic of South Germany."], "celestial orbit": ["The path, usually elliptical, described by one celestial body in its revolution about another."], "electron orbit": ["The path of an electron around the nucleus of an atom."], "orbital cavity": ["The bony cavity in the skull containing the eyeball."], "cranial orbit": ["The bony cavity in the skull containing the eyeball."], "eye socket": ["The bony cavity in the skull containing the eyeball."], "circulate": ["To divide or distribute something in an even way.", "To move in circles.", "To cause to become widely known.", "To become widely known and passed on.", "To move through a space, circuit or system, and then return to the starting point (e.g. of blood)."], "pathetic fallacy": ["The treatment of inanimate objects as if they had human feelings, thought, or sensations."], "anthropomorphic fallacy": ["The treatment of inanimate objects as if they had human feelings, thought, or sensations."], "animistic fallacy": ["The logical fallacy of arguing that an event or situation is evidence that someone consciously acted to cause it."], "reification": ["The consideration of an abstract thing as if it were concrete or material."], "hypostatisation": ["The consideration of an abstract thing as if it were concrete or material."], "concretism": ["The consideration of an abstract thing as if it were concrete or material."], "reify": ["To consider (something abstract) as if it had concrete or material existence."], "abatis": ["A fortification obstacle formed of the branches of trees laid in a row, with the sharpened tops directed towards the enemy."], "abattis": ["A fortification obstacle formed of the branches of trees laid in a row, with the sharpened tops directed towards the enemy."], "abbattis": ["A fortification obstacle formed of the branches of trees laid in a row, with the sharpened tops directed towards the enemy."], "thorax": ["The cavity in the vertebrate body enclosed by the ribs between the diaphragm and the neck and containing the lungs and heart.", "The middle of three distinct divisions in an insect, crustacean or arachnid body."], "disquieting": ["Causing anxiety or uneasiness."], "treasure map": ["A map that marks the location of and/or describes the way to a buried treasure, a lost mine, a valuable secret or a hidden locale; more common in fiction than in reality."], "sci-fi": ["A form of literature or film which handles the future."], "genre": ["A manner of expression.", "A category of artistic works characterized by a particular form, style, or purpose."], "variator": ["A mechanical power transmission device that can change its gear ratio continuously, rather than in steps."], "variegated": ["Having a variety of colors."], "varicolored": ["Having a variety of colors."], "varicoloured": ["Having a variety of colors."], "unwaveringly": ["Without showing hesitation, indecision, doubt."], "without hesitation": ["Without showing hesitation, indecision, doubt."], "steadfastly": ["Without showing hesitation, indecision, doubt.", "In a steadfast, decided, resolute, determined way."], "anthroponym": ["A proper noun applied to a human being."], "hodonym": ["A toponym applied to travelways."], "oronym": ["A toponym applied to an elevation of the ground such as a mountain or a mountain range."], "deportment": ["Manner of behaving oneself; manner of acting."], "demeanor": ["Manner of behaving oneself; manner of acting."], "Rheinische Dokumenta": ["A phonetic script, or writing system, designed in the 1980s for the so called Rhinelandic languages in the West Central German group of languages, and some neighboring ones, derived from the variant of the modern Latin script predominant in Germany, Luxembourg, and East Belgium."], "variscite": ["A hydrated aluminium phosphate mineral."], "trope": ["A rhetorical figure of speech in which a word or phrase is used other than in a literal manner."], "rebound": ["A movement back from an impact.", "A reaction to a crisis or setback or frustration.", "The act of securing possession of the rebounding basketball after a missed shot.", "To spring away from an impact.", "To return from a worse to a former better condition."], "recoil": ["A movement back from an impact.", "To spring away from an impact.", "To retreat unwillingly and/or suddenly, often caused by sudden pain, shock, scare, fright, surprise, or similar."], "repercussion": ["A movement back from an impact.", "A consequence or ensuing result of some action."], "bounce": ["To spring away from an impact.", "To hit something so that it bounces."], "backlash": ["A movement back from an impact."], "resile": ["To spring away from an impact."], "rally": ["To return from a worse to a former better condition."], "reverberate": ["To spring away from an impact."], "ricochet": ["To spring away from an impact."], "cataclysmic": ["Being severely destructive."], "cataclysmal": ["Being severely destructive."], "lay waste to": ["To cause extensive destruction or ruin utterly."], "argus-eyed": ["Carefully observant and or attentive."], "open-eyed": ["Carefully observant and or attentive."], "irreversibility": ["The quality of a process that precludes a prior state from being attained again."], "deviate": ["Deviating from the normal or common order, form, or rule.", "To go in a different direction than what is expected."], "stormwater drain": ["A street drainage system building component that serves as intake of surface water on paved surfaces and leads it to underground drainage facilities, such as the sewer tunnel."], "manhole": ["An opening in the ground used to access the sewers or other underground installations."], "utility hole": ["An opening in the ground used to access the sewers or other underground installations."], "maintenance hole": ["An opening in the ground used to access the sewers or other underground installations."], "watercraft": ["A vehicle that is designed to travel through or across water."], "land vehicle": ["A vehicle that travels primarily on land in contact with the surface."], "crook": ["A person that has conducted a criminal act.", "An angle or sharp curve in the course of a road, river, etc."], "varistor": ["An electronic component with a significant non-ohmic current\u2013voltage characteristic."], "abat-vent": ["Device consisting of small parallel and inclined strips, protecting the openings of a building against wind and rain, but allowing air and light in."], "wind screen": ["Mat used to protect the plants from the wind."], "abatvoix": ["The sounding board over a pulpit."], "abat-voix": ["The sounding board over a pulpit."], "abbatial": ["Relating to, or pertaining to an abbey, abbot, or abbess.", "Relating to, or pertaining to an abbot or abbess.", "Relating to, or pertaining to an abbey."], "windshield": ["The front window of an aircraft, automobile, bus, motorcycle, or tram.", "Mat used to protect the plants from the wind."], "rolling stock": ["A powered or unpowered vehicle that moves on a railway."], "railway carriage": ["A railway vehicle that is drawn by a locomotive."], "stampede": ["A headlong rush of people on a common impulse.", "A wild headlong rush of frightened animals."], "rashly": ["In a hasty and foolhardy manner."], "headlong": ["In a hasty and foolhardy manner.", "With the head foremost."], "headfirst": ["With the head foremost."], "cunningly": ["In an artful manner.", "In an attractive manner."], "craftily": ["In an artful manner."], "foxily": ["In an artful manner."], "cutely": ["In an attractive manner."], "knavishly": ["In an artful manner."], "slyly": ["In an artful manner."], "trickily": ["In an artful manner."], "artfully": ["In an artful manner."], "genitalia": ["The sexual organs: the testicles and penis of a male; or the labia, clitoris, and vagina of a female."], "sex organ": ["Any of those parts of the body which are involved in sexual reproduction and constitute the reproductive system in an complex organism."], "varying": ["Marked by diversity or difference."], "changing": ["Marked by diversity or difference."], "sexual organ": ["Any of those parts of the body which are involved in sexual reproduction and constitute the reproductive system in an complex organism."], "external genital organ": ["An externally visible sex organ that is used for sexual intercourse."], "internal genital organ": ["An externally not visible sex organ that is used for reproduction."], "male genital organ": ["A sexual organ of male mammals."], "female genital organ": ["A sexual organ of female mammals."], "crotch": ["An externally visible sex organ that is used for sexual intercourse.", "The area on a person\u2019s body between the legs where they join the trunk."], "private part": ["An externally visible sex organ that is used for sexual intercourse."], "road vehicle": ["A vehicle that is designed to travel on roads."], "closed place": ["Closed area destined to a given purpose."], "enclosed place": ["Closed area destined to a given purpose."], "indoor place": ["Closed area destined to a given purpose."], "grok": ["To get the meaning of something."], "savvy": ["To get the meaning of something.", "The cognitive condition of someone who understands."], "get the picture": ["To get the meaning of something."], "vassal": ["A person who held land from a feudal lord and received protection in return for homage and allegiance.", "Resembling a vassal."], "unagitated": ["Showing no trouble or agitation."], "tranquil": ["Showing no trouble or agitation."], "unclouded": ["Of the weather or the skies: Completely clear and fine."], "clouded": ["Covered with clouds."], "meddle": ["To intrude in other people's affairs or business; interfere unwantedly."], "tamper": ["To intrude in other people's affairs or business; interfere unwantedly."], "take part": ["To join in, to take part, to involve oneself."], "venue": ["Place (locale) of an action or event."], "locale": ["Place (locale) of an action or event.", "A small area of a place."], "good sense": ["Sound practical judgment."], "horse sense": ["Sound practical judgment."], "mother wit": ["Sound practical judgment."], "locality": ["The set of all natural and human-made surroundings that affect individuals, social groupings, and other life.", "A small area of a place."], "urban zone": ["The area within a city or town, as indicated by appropriate traffic signs (or, in the United Kingdom, by the presence of street lights), where different traffic rules are in effect, such as a reduction of the speed limit."], "urban region": ["The area within a city or town, as indicated by appropriate traffic signs (or, in the United Kingdom, by the presence of street lights), where different traffic rules are in effect, such as a reduction of the speed limit."], "unbearable": ["That cannot be borne or endured."], "insufferable": ["That cannot be borne or endured."], "unsupportable": ["That cannot be borne or endured."], "intolerable": ["That cannot be borne or endured."], "insupportable": ["That cannot be borne or endured."], "acceptation": ["The specific meaning in which a word or expression is understood."], "servile": ["Resembling a vassal."], "full of grace": ["Endowed with graces; usually attributed to The Virgin Mary, who received the Grace of God."], "word meaning": ["The specific meaning in which a word or expression is understood."], "word sense": ["The specific meaning in which a word or expression is understood."], "wrapping paper": ["Colorful paper that is used to wrap gifts."], "gift wrap paper": ["Colorful paper that is used to wrap gifts."], "rambunctious": ["Noisy and lacking in restraint or discipline."], "doorpost": ["The frame that supports a door."], "door-post": ["The frame that supports a door."], "door post": ["The frame that supports a door."], "doorjamb": ["The frame that supports a door."], "dork": ["A dull stupid fatuous person."], "chancel": ["The area around the altar of a church for the clergy and choir; often enclosed by a lattice or railing."], "bema": ["The area around the altar of a church for the clergy and choir; often enclosed by a lattice or railing."], "robustious": ["Noisy and lacking in restraint or discipline."], "rumbustious": ["Noisy and lacking in restraint or discipline."], "niggard": ["A person who is stingy and miserly."], "lambswool": ["Wool of a young sheep."], "fathom": ["A linear unit of measurement, equal to 6 feet, for water depth."], "table manners": ["Way of behaving at a table."], "limelight": ["A very bright light obtained by directing an oxyhydrogen flame at a piece of quicklime (calcium oxide).", "A focus of public attention."], "grate": ["Metal framework which holds burning fuel."], "cajolery": ["Flattery intended to persuade."], "blandishment": ["Flattery intended to persuade."], "flattery": ["Flattery intended to persuade."], "sweet-talk": ["To encourage, influence or persuade by effort.", "Flattery intended to persuade."], "hairpiece": ["A false substitute for a person's hair.", "A toupee or wig, usually when worn by a man."], "toupee": ["A false substitute for a person's hair."], "hairbrush": ["A brush for cleansing and smoothing the hair."], "slave rebellion": ["An armed uprising by slaves against their enslavers."], "haddock": ["A marine fish of the North Atlantic, important as a food fish."], "hailstorm": ["A storm accompanied with hail."], "hairbreadth": ["Having the breadth of a hair; very narrow."], "environs": ["The set of all natural and human-made surroundings that affect individuals, social groupings, and other life."], "neighborhood": ["The open set containing given point."], "Herculean": ["Pertaining to, from Herculaneum."], "Hercul\u00e6an": ["Pertaining to, from Herculaneum."], "iconoclasm": ["The deliberate destruction within a culture of the culture's own religious icons and other symbols or monuments, usually for religious or political motives."], "Khmer Surin": ["Dialect of the Khmer language spoken by the Khmer native to the Thai provinces of Surin, Sisaket, Buriram and Roi Et."], "Seychellois Creole": ["French dialect spoken in Seychelles.", "A French-based creole language of Seychelles."], "Seselwa": ["French dialect spoken in Seychelles."], "French of Senegal": ["French dialect spoken in Senegal."], "R\u00e9union Creole": ["A French-based cr\u00e9ole language spoken in R\u00e9union."], "Reunionese Creole": ["A French-based cr\u00e9ole language spoken in R\u00e9union."], "invincibility": ["The quality or state of being invincible."], "invincibleness": ["The quality or state of being invincible."], "indomitability": ["The quality or state of being invincible."], "somnambulist": ["A person suffering from somnambulism or sleepwalking."], "sleepwalker": ["A person suffering from somnambulism or sleepwalking."], "nightwalker": ["A person suffering from somnambulism or sleepwalking."], "juvenesence": ["The state of being young."], "knee-pan": ["A small flat triangular bone in front of the knee that protects the knee joint."], "kneepan": ["A small flat triangular bone in front of the knee that protects the knee joint."], "knee pan": ["A small flat triangular bone in front of the knee that protects the knee joint."], "kneecap": ["A small flat triangular bone in front of the knee that protects the knee joint."], "patella": ["A small flat triangular bone in front of the knee that protects the knee joint."], "properly speaking": ["In actual fact."], "strictly speaking": ["In actual fact."], "to be precise": ["In actual fact."], "in the proper meaning of the word": ["In actual fact."], "old spelling": ["The spelling of a German word before the reform of German orthography of 1996."], "messiness": ["A state of confusion and disorderliness."], "muss": ["A state of confusion and disorderliness."], "mussiness": ["A state of confusion and disorderliness."], "disorderliness": ["A condition in which things are not in their expected places."], "legionary": ["A member of a legion."], "orderliness": ["A condition of regular or proper arrangement."], "legionnaire": ["A member of a legion."], "machiavellian": ["Attempting to achieve what one wants by cunning, scheming and unscrupulous methods."], "stag-hound": ["A hound trained to hunt stags and similar animals."], "staghound": ["A hound trained to hunt stags and similar animals."], "nanna": ["The mother of one of someone's parents."], "oarsmanship": ["Skill as an oarsman."], "monastic order": ["A group of person living under a religious rule."], "order of magnitude": ["A degree in a continuum of size or quantity."], "checker": ["One who verifies."], "nacre": ["A pearly substance which lines the interior of many shells."], "ophthalmia": ["An inflammation of the eye."], "ophthalmitis": ["An inflammation of the eye."], "blazing": ["Without any attempt at concealment; completely obvious.", "Extremely bright."], "clamant": ["Conspicuously and offensively loud; given to vehement outcry."], "clamorous": ["Conspicuously and offensively loud; given to vehement outcry."], "strident": ["Conspicuously and offensively loud; given to vehement outcry."], "vociferous": ["Conspicuously and offensively loud; given to vehement outcry."], "pardonable": ["Not requiring the execution of penalty."], "excusable": ["Not requiring the execution of penalty."], "forgivable": ["Not requiring the execution of penalty."], "venial": ["Not requiring the execution of penalty."], "Old Frankish": ["A West Germanic language formerly spoken by the Franks in areas covering modern Belgium, the Netherlands, Luxembourg and adjacent parts of France and Germany."], "waltz": ["A dance in 3/4 time, performed primarily in closed position.", "To dance a waltz.", "Music composed in triple time for waltzing.", "An assured victory (especially in an election)."], "coming into court": ["The formal attendance (in court or at a hearing) of a party in an action."], "appearing": ["The formal attendance (in court or at a hearing) of a party in an action."], "symbols per second": ["The number of symbols per second sent over a channel."], "pulses per second": ["The number of symbols per second sent over a channel."], "add together": ["To perform the arithmetical operation of addition."], "impart": ["To apply a quality on (a person)."], "knock unconscious": ["To kill or stun with a heavy weapon or a violent blow."], "knock out": ["To kill or stun with a heavy weapon or a violent blow."], "digital bandwidth": ["A measure for the speed (amount of data) that can be sent through an Internet connection."], "network bandwidth": ["A measure for the speed (amount of data) that can be sent through an Internet connection."], "legion": ["A large, military force concerned mainly with ground operations.", "A great number of.", "A large military unit.", "A vast multitude.", "An association of ex-servicemen."], "predicative": ["[Of adjectives: relating to or occurring within the predicate of a sentence.]"], "attributive": ["Of adjectives: placed before the nouns they modify."], "prenominal": ["Of adjectives: placed before the nouns they modify."], "horde": ["A vast multitude."], "dated": ["Marked by features of the immediate and usually discounted past."], "disused": ["No longer in use."], "classical music": ["A traditional genre of music conforming to an established form and appealing to critical interest and developed musical taste."], "serious music": ["A traditional genre of music conforming to an established form and appealing to critical interest and developed musical taste."], "D major": ["A key of the major scale based on the root d, consisting of the pitches D, E, F\u266f, G, A, B, and C\u266f, and having a key signature of two sharps."], "questionnaire": ["Document containing a list of questions to be answered."], "valse": ["A dance in 3/4 time, performed primarily in closed position."], "waltz around": ["To dance a waltz."], "waltz music": ["Music composed in triple time for waltzing."], "walk-in": ["An assured victory (especially in an election)."], "dance palace": ["A large room used mainly for dancing."], "ballroom dance": ["Any of a variety of social dances performed by couples in a ballroom."], "social dance": ["Any of a variety of social dances performed by couples in a ballroom."], "asocial": ["Given to avoiding association with others.", "Hostile to or disruptive of normal standards of social behavior."], "antisocial": ["Hostile to or disruptive of normal standards of social behavior."], "anti-social": ["Hostile to or disruptive of normal standards of social behavior."], "encumbered": ["Loaded to excess or impeded by a heavy load."], "retardation": ["A lack of normal development of intellectual capacities; the diagnosis demands an IQ score below 70."], "backwardness": ["A lack of normal development of intellectual capacities; the diagnosis demands an IQ score below 70."], "intellectual giftedness": ["An intellectual ability significantly higher than average."], "clench": ["To hold in a tight grasp.", "The act of grasping."], "clinch": ["To hold in a tight grasp."], "aerosol container": ["An aerosol can for applying paint, deodorant, etc., as a fine spray."], "aerosol can": ["An aerosol can for applying paint, deodorant, etc., as a fine spray."], "aerosol bomb": ["An aerosol can for applying paint, deodorant, etc., as a fine spray.", "A bomb that uses a fuel-air explosive."], "aerosol tin": ["An aerosol can for applying paint, deodorant, etc., as a fine spray."], "fuel-air explosive": ["A bomb that uses a fuel-air explosive."], "FAE": ["A bomb that uses a fuel-air explosive."], "thermobaric bomb": ["A bomb that uses a fuel-air explosive."], "vacuum bomb": ["A bomb that generally detonate in two stages: a small blast creates a cloud of explosive material, which is then ignited with devastating effect.", "A bomb that uses a fuel-air explosive."], "volume-detonation bomb": ["A bomb that uses a fuel-air explosive."], "at home of": ["At somebody's home."], "ransom": ["Money paid for the freeing of a hostage.", "To pay a price to set someone free from captivity or punishment."], "ratcatcher": ["One who catches rats, particularly one who does so professionally."], "rat-catcher": ["One who catches rats, particularly one who does so professionally."], "brain-teaser": ["Any problem where the answer is very complex, possibly unsolvable without deep investigation."], "breaking and entering": ["A crime involves breaking into a house, outbuilding , business, school, place of worship, boat, aircraft, rail car, or motor vehicle with an intent to commit a theft or a felony."], "deductive reasoning": ["Reasoning from the general to the particular (or from cause to effect)."], "induction": ["Reasoning from detailed facts to general principles.", "An electrical phenomenon whereby an electromotive force (EMF) is generated in a closed circuit by a change in the flow of current."], "inductive reasoning": ["Reasoning from detailed facts to general principles."], "electromagnetic induction": ["An electrical phenomenon whereby an electromotive force (EMF) is generated in a closed circuit by a change in the flow of current."], "riddle": ["Any problem where the answer is very complex, possibly unsolvable without deep investigation.", "A sieve with large holes or a coarse mesh used to separate large particles from small particles."], "profligacy": ["Excessive indulgence in sensual pleasures."], "looseness": ["Excessive indulgence in sensual pleasures."], "orgy": ["A wild gathering involving excessive drinking and promiscuity.", "A secret rite in the cults of ancient Greek or Roman deities involving singing and dancing and drinking and sexual activity.", "Any act of immoderate indulgence."], "debauch": ["A wild gathering involving excessive drinking and promiscuity.", "To cause (someone) to become corrupt in virtue, esp. with regard to drinking or sexual behavior."], "saturnalia": ["A wild gathering involving excessive drinking and promiscuity."], "bacchanal": ["A wild gathering involving excessive drinking and promiscuity."], "bacchanalia": ["A wild gathering involving excessive drinking and promiscuity."], "drunken revelry": ["A wild gathering involving excessive drinking and promiscuity."], "binge": ["Any act of immoderate indulgence."], "unobjectionable": ["Not causing disapproval."], "innocent": ["Lacking intent or capacity to injure.", "Not guilty.", "Being free from sin.", "Lacking in sophistication or worldliness.", "Completely wanting or lacking.", "Not knowledgeable about something specified."], "satirist": ["A humorist who uses ridicule and irony and sarcasm."], "ironist": ["A humorist who uses ridicule and irony and sarcasm."], "ridiculer": ["A humorist who uses ridicule and irony and sarcasm."], "sensationalism": ["Subject matter that is calculated to excite and please vulgar tastes."], "frozen pizza": ["A prebaked and deep-frozen pizza that is rebaked in the oven."], "transgression": ["The act of transgressing; the violation of a law or a duty or moral principle.", "The spreading of the sea over land as evidenced by the deposition of marine strata over terrestrial strata.", "The action of going beyond or overstepping some boundary or limit."], "evildoing": ["The act of transgressing; the violation of a law or a duty or moral principle."], "dynamo-electric machine": ["A device that generates electric power from the engine's activity."], "hind": ["A female deer."], "civilisation": ["A society in an advanced state of social development, e.g. with complex legal and political and religious organizations."], "civilization": ["A society in an advanced state of social development, e.g. with complex legal and political and religious organizations."], "snake charmer": ["A performer who uses movements and music to control snakes."], "West J\u00e8rriais": ["A Norman dialect spoken in the west of the Channel Island of Jersey."], "East J\u00e8rriais": ["A Norman dialect spoken in the east of the Channel Island of Jersey."], "Northwest J\u00e8rriais": ["A Norman dialect spoken in the northwest of the Channel Island of Jersey."], "Northwest Dgern\u00e9siais": ["A Norman dialect spoken in the northwest of the Channel Island of Guernsey."], "South Dgern\u00e9siais": ["A Norman dialect spoken in the south of the Channel Island of Guernsey."], "Auregnais": ["A extinct Norman dialect formerly spoken in the Channel Island of Alderney."], "Aoeur'gnaeux": ["A extinct Norman dialect formerly spoken in the Channel Island of Alderney."], "Aurignais": ["A extinct Norman dialect formerly spoken in the Channel Island of Alderney."], "hectopascal": ["A pressure unit of 1000 dynes/cm-2, often used for reporting atmospheric pressure."], "geomorphologic": ["Pertaining to geological structure."], "morphologic": ["Pertaining to geological structure."], "morphological": ["Pertaining to geological structure.", "Of, or pertaining to, morphology."], "divine revelation": ["A manifestation of divine truth."], "revealing": ["The speech act of making something evident."], "Revelation": ["The last book of the New Testament; contains visionary descriptions of heaven and of conflicts between good and evil and of the end of the world; attributed to Saint John the Apostle."], "Revelation of Saint John the Divine": ["The last book of the New Testament; contains visionary descriptions of heaven and of conflicts between good and evil and of the end of the world; attributed to Saint John the Apostle."], "Apocalypse": ["The last book of the New Testament; contains visionary descriptions of heaven and of conflicts between good and evil and of the end of the world; attributed to Saint John the Apostle."], "Book of the Revelation of John": ["The last book of the New Testament; contains visionary descriptions of heaven and of conflicts between good and evil and of the end of the world; attributed to Saint John the Apostle."], "Apocalypse of John": ["The last book of the New Testament; contains visionary descriptions of heaven and of conflicts between good and evil and of the end of the world; attributed to Saint John the Apostle."], "Book of Revelation": ["The last book of the New Testament; contains visionary descriptions of heaven and of conflicts between good and evil and of the end of the world; attributed to Saint John the Apostle."], "Apocalypse of St. John": ["The last book of the New Testament; contains visionary descriptions of heaven and of conflicts between good and evil and of the end of the world; attributed to Saint John the Apostle."], "bigoted": ["Blindly and obstinately attached to some creed or opinion and intolerant toward others."], "chutzpa": ["Nearly arrogant courage; utter audacity, effrontery or impudence; supreme self-confidence."], "tachometer": ["A device that measures the revolutions per minute of a revolving shaft."], "revolution-counter": ["A device that measures the revolutions per minute of a revolving shaft."], "rev-counter": ["A device that measures the revolutions per minute of a revolving shaft."], "RPM gauge": ["A device that measures the revolutions per minute of a revolving shaft."], "tacit": ["Done or made in silence."], "Abacama": ["An Afro-Asiatic language spoken in Nigeria in Adamawa State in the Numan and Guyuk LGAs, and in Kaduna State northeast of Kaduna town."], "Bachama": ["An Afro-Asiatic language spoken in Nigeria in Adamawa State in the Numan and Guyuk LGAs, and in Kaduna State northeast of Kaduna town."], "Bashamma": ["An Afro-Asiatic language spoken in Nigeria in Adamawa State in the Numan and Guyuk LGAs, and in Kaduna State northeast of Kaduna town."], "Besema": ["An Afro-Asiatic language spoken in Nigeria in Adamawa State in the Numan and Guyuk LGAs, and in Kaduna State northeast of Kaduna town."], "Bwareba": ["An Afro-Asiatic language spoken in Nigeria in Adamawa State in the Numan and Guyuk LGAs, and in Kaduna State northeast of Kaduna town."], "Gboare": ["An Afro-Asiatic language spoken in Nigeria in Adamawa State in the Numan and Guyuk LGAs, and in Kaduna State northeast of Kaduna town."], "Mulwyin": ["A dialect of the bacama language."], "Mwulyin": ["A dialect of the bacama language."], "date palm": ["A medium-sized palm tree, 15\u201325 m tall, in the genus Phoenix, extensively cultivated for its edible sweet fruit."], "date palm tree": ["A medium-sized palm tree, 15\u201325 m tall, in the genus Phoenix, extensively cultivated for its edible sweet fruit."], "taciturnity": ["Tendency to be silent and uncommunicative."], "craving": ["Ardent desire or craving."], "launderette": ["A place that has facilities for washing and drying clothes that the public may pay to use."], "depositary": ["A place where something is deposited, as for storage, safekeeping, or preservation."], "ABC": ["Book used to teach the alphabet.", "The elementary knowledge of any subject that can be learnt further."], "abecedary": ["Relating to an alphabet.", "Book used to teach the alphabet."], "rudiments": ["The elementary knowledge of any subject that can be learnt further."], "basics": ["The elementary knowledge of any subject that can be learnt further."], "fundamentals": ["The elementary knowledge of any subject that can be learnt further."], "ABC book": ["Book used to teach the alphabet."], "primer": ["Book used to teach the alphabet."], "abecedarium": ["Book used to teach the alphabet."], "abecedarian": ["Relating to an alphabet."], "ultrasonic": ["Having frequencies above those of audible sound."], "supersonic": ["Having frequencies above those of audible sound."], "SME": ["Company whose size, defined as the number of employees, the account or the turnover, falls below certain limits."], "SMB": ["Company whose size, defined as the number of employees, the account or the turnover, falls below certain limits."], "small and medium enterprise": ["Company whose size, defined as the number of employees, the account or the turnover, falls below certain limits."], "small and medium business": ["Company whose size, defined as the number of employees, the account or the turnover, falls below certain limits."], "small or medium business": ["Company whose size, defined as the number of employees, the account or the turnover, falls below certain limits."], "small or medium enterprise": ["Company whose size, defined as the number of employees, the account or the turnover, falls below certain limits."], "antecede": ["To move ahead (of others) in time or space."], "fair game": ["A person who is the aim of an attack (especially a victim of ridicule or exploitation) by some hostile person or influence."], "Common Raven": ["A large black bird, similar to the crow, but larger."], "Northern Raven": ["A large black bird, similar to the crow, but larger."], "ire": ["Belligerence aroused by a real or supposed wrong (personified as one of the deadly sins)."], "ira": ["Belligerence aroused by a real or supposed wrong (personified as one of the deadly sins)."], "procedurally": ["In a procedural manner."], "compound fracture": ["A bone fracture associated with lacerated soft tissue or an open wound."], "open fracture": ["A bone fracture associated with lacerated soft tissue or an open wound."], "uppercut": ["A swinging blow directed upward, especially at an opponent's chin."], "very pregnant": ["Being in the last stages of pregnancy."], "school child": ["A child attending school."], "school kid": ["A child attending school."], "schoolboy": ["A young boy attending school."], "schoolgirl": ["A young girl attending school."], "schoolchild": ["A child attending school."], "jobless": ["Having no job."], "unemployed": ["Having no job."], "out of work": ["Having no job."], "salt shaker": ["A small container with holes in the top that is used to sprinkle salt on food."], "pepper shaker": ["A small container with holes in the top that is used to sprinkle ground pepper on food."], "gunpoint": ["The gun muzzle's direction."], "urinal": ["A sanitary system, usually mounted on a wall, used by men for urinating.", "A gadget to collect or measure urine of patients, typically a bottle.", "A place for males to urinate."], "warlord": ["A local ruler or bandit leader usually where the government is weak."], "superstar": ["A celebrity who is widely known and successful in some field."], "overwinter": ["To spend the winter (in a particular place).", "To store something to protect it during the winter."], "woman on top": ["A position for sexual intercourse where the man lies on his back and the woman is on top of him."], "cowgirl": ["A position for sexual intercourse where the man lies on his back and the woman is on top of him.", "A woman who herds and tends cattle on a ranch."], "cowgirl position": ["A position for sexual intercourse where the man lies on his back and the woman is on top of him."], "rectangular apse": ["Apse having a rectangular shape instead of semicircular."], "abode": ["A period of time spent in a place.", "Time during which some action is awaited.", "Any address at which one dwells more than temporarily.", "A sign that is supposed to reveal whether the future will be favourable or not.", "To make a prediction or prophecy.", "To be ominous."], "residence": ["Any address at which one dwells more than temporarily."], "predicatively": ["In a predicative manner."], "attributively": ["In an attributive manner."], "involucral bract": ["Set of bracts or floral leaves surrounding the common base of several peduncles, or enclosing several flowers similarly to a calyx."], "involucre": ["Set of bracts or floral leaves surrounding the common base of several peduncles, or enclosing several flowers similarly to a calyx."], "dysmenorrhea": ["A medical condition characterized by severe uterine pain during menstruation."], "dysmenorrhoea": ["A medical condition characterized by severe uterine pain during menstruation."], "anomie": ["Lack of norms in a society."], "reactive": ["Having power to react."], "abolition": ["The cancellation or suspension of something by a decision of an authority."], "aborigine": ["Indigenous Australian who is a descendant of the first known human inhabitants of the Australian continent and its nearby islands."], "about-face": ["Act of pivoting 180 degrees, especially in a military formation."], "tabard": ["Garment worn by a herald and decorated with his master's coat of arms."], "eye doctor": ["A medical specialist who practises ophthalmology."], "fuddle": ["To consume a liquid containing alcohol."], "poison ring": ["A finger ring with a small container that can be used to hold poison."], "pillbox ring": ["A finger ring with a small container that can be used to hold poison."], "human right": ["The right of an individual to liberty, justice, etc."], "vermin exterminator": ["A person or business establishment specializing in the elimination of vermin, insects, etc."], "forbid": ["To tell not to do something."], "disallow": ["To tell not to do something."], "prohibit": ["To tell not to do something."], "interdict": ["To tell not to do something."], "proscribe": ["To tell not to do something."], "vantage point": ["The position from which an object is looked at.", "A place from which something can be viewed."], "lemonade": ["A drink, still or carbonated, made of lemon, water and sugar."], "hen-peck": ["To bother persistently with trivial complaints."], "plug": ["A device for connecting electrically operated devices to the power supply, having protruding prongs or pins that fit into matching slots or holes in a power socket.", "To deliver a blow with the fist."], "scolder": ["Someone (especially a woman) who annoys people by constantly finding fault."], "nagger": ["Someone (especially a woman) who annoys people by constantly finding fault."], "common scold": ["Someone (especially a woman) who annoys people by constantly finding fault."], "lepidoptera": ["A large order of scaly-winged insects, including the butterflies, skippers, and moths; adults are characterized by two pairs of membranous wings and sucking mouthparts, featuring a prominent, coiled proboscis."], "dissolve": ["To pass into a solution."], "telegraph": ["To send a message by telegraph."], "abridgement": ["Shortened form of something."], "abridgment": ["Shortened form of something."], "hiatus": ["A missing piece (as a gap in a manuscript).", "A natural opening or perforation through a bone or a membranous structure.", "An interruption in the intensity or amount of something.", "A gap in geological strata.", "The liaison of two vowels at the end of the one and the beginning of the following word or syllable."], "foramen": ["A natural opening or perforation through a bone or a membranous structure."], "abseil": ["A descent down a nearly vertical surface by using a doubled rope that is coiled around the body and attached to some higher point.", "To lower oneself with a double rope coiled around the body from a mountainside."], "existing chemical substance": ["Chemical products existing before 18-09-1981."], "pnictogen": ["Any element from the nitrogen group of the periodic table; nitrogen, phosphorus, arsenic, antimony and bismuth."], "pentel": ["Any element from the nitrogen group of the periodic table; nitrogen, phosphorus, arsenic, antimony and bismuth."], "tetrel": ["Any element in the carbon group of the periodic table."], "earth metal": ["Any element of the boron group in the periodic table."], "triel": ["Any element of the boron group in the periodic table."], "chalcogen": ["Any element of the oxygen family in the periodic table."], "canonic": ["Reduced to the simplest and most significant form possible without loss of generality.", "Appearing in a biblical canon.", "Of or relating to or required by canon law.", "Conforming to orthodox or recognized rules."], "sanctioned": ["Conforming to orthodox or recognized rules."], "logically": ["In a logical manner."], "natal": ["Of or relating to birth."], "nymphomania": ["Extreme or obsessive sexual desire in women."], "nymphomaniac": ["A woman having extreme or obsessive sexual desire.", "(For a woman) Having extreme or obsessive sexual desire."], "nympho": ["A woman having extreme or obsessive sexual desire."], "amateurism": ["The practice, quality, or character of an amateur or amateurish performance.", "The conviction that people should participate in sports as a hobby (for the fun of it) rather than for money."], "dilettantism": ["The practice, quality, or character of an amateur or amateurish performance."], "dilettanteism": ["The practice, quality, or character of an amateur or amateurish performance."], "Tequila Sunrise": ["A cocktail that consists of tequila, orange juice, lemon juice and grenadine syrup."], "highball glass": ["A glass tumbler which that contains 8 to 12 fluid ounces (240 to 350 ml) and is used to serve highball cocktails and other mixed drinks."], "illogically": ["In an illogical manner."], "accentual": ["Of or pertaining to accent."], "a priori": ["Known ahead of time.", "Based on hypothesis rather than experiment.", "Derived by logic, without observed facts.", "Involving deductive reasoning from a general principle to a necessary effect; not supported by fact."], "absorptivity": ["The quality of being absorptive.", "The property of a body that determines the fraction of the incident radiation or sound flux absorbed or absorbable by the body."], "absorptiveness": ["The quality of being absorptive."], "acceptor": ["A person who accepts or receives."], "acceptant": ["A person who accepts or receives."], "absorption factor": ["The property of a body that determines the fraction of the incident radiation or sound flux absorbed or absorbable by the body."], "a posteriori": ["Derived from observed facts.", "Involving reasoning from facts or particulars to general principles or from effects to causes.", "Requiring evidence for validation or support."], "forthright": ["Characterized by directness in manner or speech; without subtlety or evasion."], "frank": ["Characterized by directness in manner or speech; without subtlety or evasion."], "free-spoken": ["Characterized by directness in manner or speech; without subtlety or evasion."], "heart-to-heart": ["Straightforward and direct without reserve or secretiveness."], "plainspoken": ["Characterized by directness in manner or speech; without subtlety or evasion."], "point-blank": ["Characterized by directness in manner or speech; without subtlety or evasion."], "straight-from-the-shoulder": ["Characterized by directness in manner or speech; without subtlety or evasion."], "candid photograph": ["A spontaneous or unposed photograph."], "lolita": ["A sexually alluring underage girl."], "nymphet": ["A sexually alluring underage girl."], "loli": ["A sexually alluring underage girl."], "lysergic acid diethylamide": ["A powerful hallucinogenic drug manufactured from lysergic acid."], "LSD": ["A powerful hallucinogenic drug manufactured from lysergic acid."], "back breaker": ["A powerful hallucinogenic drug manufactured from lysergic acid."], "battery-acid": ["A powerful hallucinogenic drug manufactured from lysergic acid."], "Elvis": ["A powerful hallucinogenic drug manufactured from lysergic acid."], "loony toons": ["A powerful hallucinogenic drug manufactured from lysergic acid."], "Lucy in the sky with diamonds": ["A powerful hallucinogenic drug manufactured from lysergic acid."], "pane": ["A powerful hallucinogenic drug manufactured from lysergic acid."], "superman": ["A powerful hallucinogenic drug manufactured from lysergic acid."], "window pane": ["A powerful hallucinogenic drug manufactured from lysergic acid."], "congregating": ["The act of congregating."], "faithful": ["A group of people who adhere to a common faith and habitually attend a given church.", "Steadfast in allegiance or affection."], "adaptability": ["The quality of being adaptable."], "allegretto": ["A direction in musical notation indicating that the musical piece should be played rather fast and lively."], "classical mythology": ["The system of mythology of the Greeks and Romans together; much of Roman mythology (especially the gods) was borrowed from the Greeks."], "Greco-Roman mythology": ["The system of mythology of the Greeks and Romans together; much of Roman mythology (especially the gods) was borrowed from the Greeks."], "nymph": ["A minor nature goddess usually depicted as a beautiful maiden.", "A larva of an insect with incomplete metamorphosis (as the dragonfly or mayfly).", "A voluptuously beautiful young woman."], "lover's grief": ["Emotional and sometimes physical suffering because of unfulfilled or rejected love."], "laxation": ["The elimination of fecal waste through the anus."], "shitting": ["The elimination of fecal waste through the anus."], "bowel movement": ["The elimination of fecal waste through the anus."], "bm": ["The elimination of fecal waste through the anus."], "phonetic transcription": ["The reproduction of the sounds of human language using written symbols."], "phonetic notation": ["The reproduction of the sounds of human language using written symbols."], "phonemic transcription": ["The reproduction of the sounds of human language using written symbols where each symbol stands for one phoneme."], "phonemic notation": ["The reproduction of the sounds of human language using written symbols where each symbol stands for one phoneme."], "velarized alveolar lateral approximant": ["A type of consonantal sound used in some spoken languages and represented by the symbol \u026b in the IPA notation."], "dark l": ["A type of consonantal sound used in some spoken languages and represented by the symbol \u026b in the IPA notation."], "hardly": ["Only a very short time before."], "laser printer": ["A computer printer where the image is produced by the direct scanning of a laser beam across the printer's photosensitive drum."], "absence rate": ["Frequent absence from work or school without good reason."], "aquaplaning": ["The phenomenon that creates a thin film of water between the tire of a moving vehicle and the road surface, making this vehicle (temporarily) become unmanageable."], "hydroplaning": ["The phenomenon that creates a thin film of water between the tire of a moving vehicle and the road surface, making this vehicle (temporarily) become unmanageable."], "Common earwig": ["An omnivorous insect in the family Forficulidae, 12 \u2013 15 mm long with an elongated flattened brownish colored body, two pairs of wings and a pair of forcep-like cerci."], "European earwig": ["An omnivorous insect in the family Forficulidae, 12 \u2013 15 mm long with an elongated flattened brownish colored body, two pairs of wings and a pair of forcep-like cerci."], "assembling": ["A system of components assembled together for a particular purpose."], "mounting": ["A system of components assembled together for a particular purpose."], "imply": ["To have as a logical consequence."], "implicate": ["To impose, involve, or imply as a necessary accompaniment or result."], "fee-tail": ["To limit the inheritance of property to a specific class of heirs."], "induce": ["To encourage into action; to cause to act in a specified manner."], "causal agent": ["Any entity that produces an effect or is responsible for events or results."], "causal agency": ["Any entity that produces an effect or is responsible for events or results."], "grounds": ["A justification for something existing or happening."], "causa": ["A comprehensive term for any proceeding in a court of law whereby an individual seeks a legal remedy."], "sign of the zodiac": ["One of 12 equal areas into which the zodiac is divided."], "star sign": ["One of 12 equal areas into which the zodiac is divided."], "mansion": ["One of 12 equal areas into which the zodiac is divided."], "planetary house": ["One of 12 equal areas into which the zodiac is divided."], "Aries the Ram": ["The first sign of the zodiac which the sun enters at the vernal equinox; the sun is in this sign from about March 21 to April 19."], "Ram": ["The first sign of the zodiac which the sun enters at the vernal equinox; the sun is in this sign from about March 21 to April 19.", "A person who is born while the sun is in Aries."], "Hispaniola": ["A large island in the Caribbean, containing the two sovereign states of Haiti and the Dominican Republic."], "shaky camera": ["A cinematographic technique where the image is unstable on purpose, usually it is shot using a handheld camera."], "shaky cam": ["A cinematographic technique where the image is unstable on purpose, usually it is shot using a handheld camera."], "handheld camera": ["A cinematographic technique where the image is unstable on purpose, usually it is shot using a handheld camera."], "free camera": ["A cinematographic technique where the image is unstable on purpose, usually it is shot using a handheld camera."], "Taurus the Bull": ["The second sign of the zodiac; the sun is in this sign from about April 20 to May 20."], "Bull": ["The second sign of the zodiac; the sun is in this sign from about April 20 to May 20.", "A person who is born while the sun is in Taurus."], "Jew's harp": ["A musical instrument that consists of a flexible metal or bamboo tongue or reed attached to a frame."], "jaw harp": ["A musical instrument that consists of a flexible metal or bamboo tongue or reed attached to a frame."], "Ozark harp": ["A musical instrument that consists of a flexible metal or bamboo tongue or reed attached to a frame."], "trump": ["A musical instrument that consists of a flexible metal or bamboo tongue or reed attached to a frame."], "juice harp": ["A musical instrument that consists of a flexible metal or bamboo tongue or reed attached to a frame."], "Jew's trump": ["A musical instrument that consists of a flexible metal or bamboo tongue or reed attached to a frame."], "guimbarde": ["A musical instrument that consists of a flexible metal or bamboo tongue or reed attached to a frame."], "venturous": ["Disposed to venture or take risks."], "venturesome": ["Disposed to venture or take risks."], "WordNet 3.0": ["A machine-readable lexical database organized by meanings; developed at Princeton University; version 3.0."], "Princeton WordNet 3.0": ["A machine-readable lexical database organized by meanings; developed at Princeton University; version 3.0."], "adventuresome": ["Liking or eager for adventure."], "Gemini the Twins": ["The third sign of the zodiac; the sun is in this sign from about May 21 to June 20."], "Twins": ["The third sign of the zodiac; the sun is in this sign from about May 21 to June 20."], "Twin": ["A person who is born while the sun is in Gemini."], "next-to-last": ["Next to the last in a sequence."], "bosom": ["To squeeze someone in one's arms.", "The two breasts of a woman, considered collectively."], "separate out": ["To separate or isolate components from one another with the help of a filter."], "sift": ["To separate by passing through a sieve or other straining device to separate out coarser elements.", "To pass a liquid through a sieve."], "sieve": ["To separate by passing through a sieve or other straining device to separate out coarser elements.", "A device to separate coarse elements from fine elements or solid objects from a liquid.", "A sieve with a finely meshed or perforated bottom to separate small particles from smaller particles or a liquid."], "filter out": ["To separate or isolate components from one another with the help of a filter."], "melodic line": ["A succession of notes forming a distinctive sequence."], "nisus": ["An effortful attempt to attain a goal."], "pains": ["An effortful attempt to attain a goal."], "straining": ["An intense or violent exertion."], "melodic phrase": ["A succession of notes forming a distinctive sequence."], "strive": ["To exert much effort or energy on (e.g. ears, eyes, etc.).", "To attempt through application of effort (to do something); to try strenuously."], "tense up": ["To cause to be tense and uneasy or nervous or anxious."], "puree": ["To rub through a strainer or process in an electric blender."], "pinyin": ["The most commonly used romanization system for Standard Mandarin."], "hanyu pinyin": ["The most commonly used romanization system for Standard Mandarin."], "Wade-Giles": ["A romanization system for Mandarin that has mostly been replaced by the pinyin system nowadays."], "velar": ["A sound articulated at the soft palate.", "(Of sounds) Articulated at the soft palate."], "passing": ["Lasting or existing for a short time only."], "ephemeron": ["Anything short-lived, as an insect that lives only for a day in its winged form."], "uvular": ["A sound articulated with the uvula.", "(Of sounds) Articulated with the uvula."], "fugacious": ["Lasting or existing for a short time only."], "timelessness": ["A state of eternal existence believed in some religions to characterize the afterlife."], "timeless existence": ["A state of eternal existence believed in some religions to characterize the afterlife."], "bilharzia": ["A disease in which humans are parasitized by any of three species of blood flukes: Schistosoma mansoni, S. haematobium, and S. japonicum; adult worms inhabit the blood vessels."], "bilharziosis": ["A disease in which humans are parasitized by any of three species of blood flukes: Schistosoma mansoni, S. haematobium, and S. japonicum; adult worms inhabit the blood vessels."], "snail fever": ["A disease in which humans are parasitized by any of three species of blood flukes: Schistosoma mansoni, S. haematobium, and S. japonicum; adult worms inhabit the blood vessels."], "niq\u0101b": ["Mask worn by some Muslim women, which covers completely the face except for the eyes."], "niqab": ["Mask worn by some Muslim women, which covers completely the face except for the eyes."], "niqaab": ["Mask worn by some Muslim women, which covers completely the face except for the eyes."], "potentate": ["An absolute ruler with unbounded power."], "askance": ["With suspicion or disapproval.", "With a side or oblique glance.", "Directed to one side with or as if with doubt or suspicion (used especially of glances)."], "askant": ["Directed to one side with or as if with doubt or suspicion (used especially of glances)."], "asquint": ["Directed to one side with or as if with doubt or suspicion (used especially of glances)."], "squint": ["Directed to one side with or as if with doubt or suspicion (used especially of glances).", "To have the two eyes not looking in the same direction.", "To voluntarily cross the eyes so that they do not look in the same direction.", "Having the two eyes not looking in the same direction."], "squint-eyed": ["Directed to one side with or as if with doubt or suspicion (used especially of glances)."], "squinty": ["Directed to one side with or as if with doubt or suspicion (used especially of glances)."], "sidelong": ["Directed to one side with or as if with doubt or suspicion (used especially of glances)."], "limitless": ["Without limits in extent or size or quantity.", "Seemingly boundless in amount, number, degree, or especially extent.", "Having no limits in range or scope."], "illimitable": ["Without limits in extent or size or quantity."], "measureless": ["Without limits in extent or size or quantity."], "unlimited": ["Having no limits in range or scope."], "boundless": ["Seemingly boundless in amount, number, degree, or especially extent."], "unbounded": ["Seemingly boundless in amount, number, degree, or especially extent."], "pharyngal": ["A sound articulated at the pharynx.", "(Of sounds) Articulated at the pharynx.", "Of or pertaining to the pharynx."], "glottal": ["A sound articulated at the glottis.", "(Of sounds) Articulated at the glottis."], "homorganic": ["(Of sounds) Having the same place of articulation."], "labiovelar": ["A sound made at two places of articulation, one at the lips and the other at the soft palate.", "(Of sounds) Articulated at the lips and the soft palate.", "Velar sound that is pronounced with rounded lips.", "(Of sounds) Articulated at the velum and with rounded lips."], "labial-velar": ["A sound made at two places of articulation, one at the lips and the other at the soft palate.", "(Of sounds) Articulated at the lips and the soft palate."], "hive": ["A box or receptable in which bees are kept for their honey.", "A teeming multitude.", "A structure that provides a natural habitation for bees; as in a hollow tree.", "To move together in a hive or as if in a hive.", "To store, like bees.", "To gather into a hive."], "palatal": ["A sound articulated at the hard palate.", "(Of sounds) Articulated at the hard palate."], "lovesickness": ["Emotional and sometimes physical suffering because of unfulfilled or rejected love."], "lovelorn": ["Emotional and sometimes physical suffering because of unfulfilled or rejected love."], "semi-voiced": ["(Of sounds) Formed by making a voiced consonant, but with the vocal folds closed."], "hyperbolic": ["Enlarged beyond truth or reasonableness.", "Of or relating to a hyperbola."], "inflated": ["Enlarged beyond truth or reasonableness.", "Exaggerated or made bigger."], "vocal fold": ["One of the two mucuous membranes in the larynx that vibrate and modulate the flow of air from the lungs during phonation."], "vocal cord nodule": ["A mass of tissue that grows on the vocal folds and may impair the ability to speak or sing."], "hyperbola": ["An open curve formed by a plane that cuts the base of a right circular cone."], "place of articulation": ["The point of contact, where an obstruction occurs in the vocal tract between an active (moving) articulator and a passive (stationary) articulator."], "point of articulation": ["The point of contact, where an obstruction occurs in the vocal tract between an active (moving) articulator and a passive (stationary) articulator."], "articulatory phonetics": ["A subfield of phonetics that studies how human produce sounds."], "front vowel": ["A vowel produced in the front of the mouth."], "back vowel": ["A vowel produced in the back of the mouth."], "dark vowel": ["A vowel produced in the back of the mouth."], "bright vowel": ["A vowel produced in the front of the mouth."], "Poseidon": ["God of the sea in Greek mythology."], "logic gate": ["A computer circuit with several inputs but only one output that can be activated by particular combinations of inputs."], "tabular array": ["A systematic arrangement of data, usually in rows and columns."], "mesa": ["Flat tableland with steep edges."], "tabulate": ["To arrange or enter in tabular form."], "ascension": ["The rising of a star above the horizon."], "Ascension": ["The fortieth day of Easter, a Thursday, which commemorates that Jesus bodily ascended to heaven, following his resurrection.", "The rising of the body of Jesus into heaven on the 40th day after his Resurrection."], "Ascension of the Lord": ["The fortieth day of Easter, a Thursday, which commemorates that Jesus bodily ascended to heaven, following his resurrection."], "Ascension of Christ": ["The rising of the body of Jesus into heaven on the 40th day after his Resurrection."], "aficionado": ["A fan of bull fighting.", "A serious devotee of some particular music genre or musical performer.", "A follower or admirer who likes, knows about, and appreciates a particular interest or activity."], "latinization": ["The representation of a written or spoken word with the Latin alphabet."], "latinisation": ["The representation of a written or spoken word with the Latin alphabet."], "Cancer the Crab": ["The fourth sign of the zodiac; the sun is in this sign from about June 21 to July 22."], "Crab": ["The fourth sign of the zodiac; the sun is in this sign from about June 21 to July 22.", "A person who is born while the sun is in Cancer."], "quibble": ["To bother persistently with trivial complaints."], "genus Cancer": ["A genus of marine crabs of the family Cancridae."], "triplicity": ["One of four groups of the zodiac where each group consists of three signs separated from each other by 120 degrees.", "The property of being triple."], "trigon": ["One of four groups of the zodiac where each group consists of three signs separated from each other by 120 degrees."], "traditional Hepburn romanization": ["Japanese romanization as invented by Hepburn and published in the third edition (1886) of Hepburn's dictionary."], "revised Hepburn romanization": ["A revised version of the traditional Hepburn romanization, in which the rendering of syllabic n as m before certain consonants is no longer used."], "modified Hepburn romanization": ["A further modification of the revised Hepburn romanization which is consistent in its treatment of long vowels (always doubling the vowel) and syllabic n (always n-bar)."], "Hepburn romanization": ["Romanization of Japanese originating from James Curtis Hepburn, having three standard variants: traditional, revised and modified Hepburn romanization."], "furigana": ["Kana used in Japanese to indicate the pronunciation of a kanji."], "smack": ["To kiss lightly."], "pick up": ["(For a bird) To eat by small pieces with one's beak or bill.", "To respond to an incoming telephone call.", "To perceive with the senses quickly, suddenly, or momentarily (e.g. an aroma, an allusion, etc.).", "To lift; to grasp and raise; to collect."], "peck at": ["To eat by small pieces like a bird."], "pick at": ["To eat by small pieces like a bird."], "little bell": ["Small bell."], "rucksack": ["A bag carried by a strap on your back or shoulder."], "haversack": ["A bag carried by a strap on your back or shoulder."], "packsack": ["A bag carried by a strap on your back or shoulder."], "infamy": ["A state of extreme dishonor, consisting in being an object of a very serious public reproach approved by the great majority of the population.", "An evil fame or public reputation.", "An infamous, malign action."], "opprobrium": ["A state of extreme dishonor, consisting in being an object of a very serious public reproach approved by the great majority of the population."], "villainy": ["An infamous, malign action."], "meanness": ["An infamous, malign action.", "Extreme reluctance to spend money.", "The quality or state of being evil."], "fatherland": ["One\u2019s country of birth."], "homeland": ["One\u2019s country of birth."], "motherland": ["One\u2019s country of birth."], "mother country": ["One\u2019s country of birth."], "country of origin": ["One\u2019s country of birth."], "native land": ["One\u2019s country of birth."], "adoptive": ["Related through adoption; more generally, relating to adoption."], "guiltless": ["Not guilty."], "clean-handed": ["Not guilty."], "impeccant": ["Being free from sin."], "sinless": ["Being free from sin."], "ingenuous": ["Lacking in sophistication or worldliness."], "unacquainted": ["Not knowledgeable about something specified."], "literary criticism": ["The action of evaluating or judging the quality or character of written materials such as poetry, essays, novels, biographies and historical writings.", "The systematic study and interpretation of literature."], "devoid": ["Completely wanting or lacking."], "frigidarium": ["Part of the Roman thermae consisting of a non-heated room containing a pool of cold water."], "roofless": ["Having no housing."], "domiciled": ["To have one's home in."], "rhyme": ["A repetition of similar sounds in two or more words."], "masculine rhyme": ["A rhyme that matches only one syllable which is usually stressed."], "feminine rhyme": ["A rhyme that matches two or more syllables and is stressed on the penultimate syllable."], "dactylic rhyme": ["A rhyme that matches two or more syllables and is stressed on the antepenultimate syllable."], "end rhyme": ["A rhyme that occurs at the end of a verse."], "tail rhyme": ["A rhyme that occurs at the end of a verse."], "eye rhyme": ["A rhyme that consists of orthographically similar words that do not rhyme when pronounced."], "visual rhyme": ["A rhyme that consists of orthographically similar words that do not rhyme when pronounced."], "sight rhyme": ["A rhyme that consists of orthographically similar words that do not rhyme when pronounced."], "beginning rhyme": ["Rhyme that occurs at the beginning of two verses."], "identical rhyme": ["A rhyme that repeats the same word."], "historical rhyme": ["A rhyme that no longer works because the prounciation has changed."], "rime": ["A repetition of similar sounds in two or more words."], "hold on": ["To retain possession of something.", "To hold firmly."], "grip": ["An intellectual hold or understanding.", "The act of grasping.", "A leather protection used in some sports to avoid hand injuries.", "The adhesive friction of a wheel, etc. on a surface.", "To render motionless, as with a fixed stare or by arousing fear.", "To care for and train (a child).", "To grip or seize, as in a wrestling match."], "clutches": ["The act of grasping."], "clasp": ["The act of grasping.", "To grasp firmly (e.g. hands)."], "indebtedness": ["An obligation to pay money to another party."], "financial obligation": ["An obligation to pay money to another party."], "nail pulling pliers": ["Pliers made of steel for removing nails from wood."], "additivity": ["The property of being additive."], "admiralty": ["The office or jurisdiction of an admiral."], "admiralty law": ["The area of law that deals with ships at sea and the rights of sailors, passengers, and owners of cargo."], "ASAP": ["As soon as possible."], "soonest possible": ["As soon as possible."], "earliest possible": ["As soon as possible."], "asap": ["As soon as possible."], "as soon as possible": ["As soon as possible."], "verdure": ["Green foliage."], "greenery": ["Green foliage."], "musical arrangement": ["Music that has been adapted for performance with a different ensemble or musical style."], "leaf node": ["The small swelling that is the part of a plant stem from which one or more leaves emerge."], "knob": ["Any thickened enlargement."], "intrigue": ["A clever scheme or artful plot, usually crafted for evil purposes.", "To cause to be interested or curious.", "To form intrigues in an underhand manner.", "A clandestine love affair."], "fascinate": ["To cause to be interested or curious.", "To render motionless, as with a fixed stare or by arousing fear.", "To attract, arouse and hold attention and interest, as by charm or beauty."], "connive": ["To form intrigues in an underhand manner."], "lymph gland": ["The source of lymph and lymphocytes."], "orbital node": ["A point where an orbit crosses a plane."], "intentionally": ["With intention; in an intentional manner."], "designedly": ["With intention; in an intentional manner."], "by design": ["With intention; in an intentional manner."], "willentlich": ["With intention; in an intentional manner."], "basilect": ["The variety of speech that has the lowest prestige and diverges the most from the standard."], "abalone": ["An edible univalve mollusc of the genus Haliotis."], "abatage": ["The tearing down of buildings by mechanical means.", "Destruction of a building."], "lessening": ["The act of abating or the state of being abated."], "diminution": ["The act of abating or the state of being abated."], "abdominal cavity": ["The cavity containing the major viscera."], "interpunct": ["Vertically centered dot that is used in some languages seperate words or syllables."], "interpoint": ["Vertically centered dot that is used in some languages seperate words or syllables."], "middle dot": ["Vertically centered dot that is used in some languages seperate words or syllables."], "centered dot": ["Vertically centered dot that is used in some languages seperate words or syllables."], "space dot": ["Vertically centered dot that is used in some languages seperate words or syllables."], "numismatics": ["The scientific study of money (coins, paper money, etc.) and its history."], "numismatic": ["Of or relating to numismanics."], "hypothermia": ["A condition in which core body temperature drops below that required for normal metabolism and body functions."], "perish with cold": ["To die due to excessive exposure to cold."], "freeze to death": ["To die due to excessive exposure to cold."], "Abbruch": ["The tearing down of buildings by mechanical means."], "seeker": ["Someone making a search or inquiry.", "A missile equipped with a device that is attracted toward some kind of emission (heat or light or sound or radio waves)."], "quester": ["Someone making a search or inquiry."], "searcher": ["Someone making a search or inquiry."], "emerald green": ["Having a clear, deep-green color."], "terminal emulator": ["A computer program that emulates a terminal."], "pole": ["A contact on an electrical device (such as a battery) at which electric current enters or leaves.", "A strong upright piece of wood, metal etc. that is fixed into the ground, especially to support something.", "One of two antipodal points where the Earth's axis of rotation intersects the Earth's surface."], "data terminal": ["A device for entering data into a computer or a communications system and/or displaying data received; especially a device equipped with a keyboard and some sort of textual display."], "primordial": ["Having existed from the beginning; in an earliest or original stage or state."], "primal": ["Having existed from the beginning; in an earliest or original stage or state."], "primeval": ["Having existed from the beginning; in an earliest or original stage or state."], "primaeval": ["Having existed from the beginning; in an earliest or original stage or state."], "putting green": ["The part of a golf course near the hole."], "homily": ["A sermon on a moral or religious topic."], "preachment": ["A sermon on a moral or religious topic."], "specially": ["In a special manner."], "behest": ["An authoritative command or request."], "doppelganger": ["A person who resembles another person perfectly.", "A ghostly double of a living person that haunts its living counterpart."], "discreetness": ["Knowing how to avoid embarrassment or distress."], "stock market": ["Market where people buy and sell stocks."], "stock exchange": ["Market where people buy and sell stocks."], "admonitory": ["Of or pertaining to an admonition."], "cautionary": ["Of or pertaining to an admonition."], "monitory": ["Of or pertaining to an admonition."], "bodacious": ["Unrestrained by convention or propriety."], "bald-faced": ["Unrestrained by convention or propriety."], "brassy": ["Unrestrained by convention or propriety."], "hardy": ["Not being daunted or intimidated."], "unfearing": ["Not being daunted or intimidated."], "insolent": ["Unrestrained by convention or propriety."], "during the winter": ["In the winter."], "during the summer": ["In the summer."], "in the morning": ["In the mornings.", "During the morning."], "in the afternoon": ["During the afternoon."], "in the evening": ["On the evening"], "on end": ["In contact with each other or in proximity."], "at a stretch": ["In contact with each other or in proximity."], "instantly": ["In an immediate manner; instantly or without delay."], "pigsty": ["A place where pigs are kept and reared."], "pigpen": ["A place where pigs are kept and reared."], "beat out": ["To end in success a struggle or contest."], "trounce": ["To end in success a struggle or contest."], "calumniation": ["A false accusation of an offense or a malicious misrepresentation of someone's words or actions."], "obloquy": ["A false accusation of an offense or a malicious misrepresentation of someone's words or actions."], "traducement": ["A false accusation of an offense or a malicious misrepresentation of someone's words or actions."], "hatchet job": ["A false accusation of an offense or a malicious misrepresentation of someone's words or actions."], "patsy": ["A person who is gullible and easy to take advantage of."], "fall guy": ["A person who is gullible and easy to take advantage of."], "sucker": ["A person who is gullible and easy to take advantage of.", "A family of fish of the order Cypriniformes found in North America, east central China and eastern Siberia.", "An undesired stem growing out of the roots or lower trunk of a shrub or tree, especially from the rootstock of a grafted plant or tree."], "soft touch": ["A person who is gullible and easy to take advantage of."], "straightaway": ["In an immediate manner; instantly or without delay."], "straight off": ["In an immediate manner; instantly or without delay."], "right away": ["In an immediate manner; instantly or without delay."], "forthwith": ["In an immediate manner; instantly or without delay."], "like a shot": ["In an immediate manner; instantly or without delay."], "nicely": ["In a nice manner."], "look askance": ["To have the two eyes not looking in the same direction."], "inadvertently": ["Unintentionally, because of an oversight."], "break a leg": ["Interjection, which expresses that one wishes someone success or luck."], "afterward": ["Later or after something else has happened or happens."], "flatworm": ["Any animal belonging to the Platyhelminthes phylum."], "platyhelminthe": ["Any animal belonging to the Platyhelminthes phylum."], "plathelminthe": ["Any animal belonging to the Platyhelminthes phylum."], "flatworms": ["A phylum of relatively simple bilaterian, unsegmented, soft-bodied invertebrate animals."], "Platyhelminthes": ["A phylum of relatively simple bilaterian, unsegmented, soft-bodied invertebrate animals."], "Plathelminthes": ["A phylum of relatively simple bilaterian, unsegmented, soft-bodied invertebrate animals."], "parking meter": ["A device used to collect money in exchange for the right to park a vehicle in a particular place for a limited amount of time."], "cull": ["The person or thing that is rejected or set aside as inferior in quality.", "To look for and gather.", "To remove something that has been rejected."], "antibacterial": ["Effective against bacteria."], "antichristian": ["Opposed to Christianity."], "anti-Christian": ["Opposed to Christianity."], "antidepressant": ["Medication against depression."], "anti-American": ["Against the United States."], "hydrofoil": ["A device consisting of a flat or curved piece (as a metal plate) so that its surface reacts to the water it is passing through."], "enhancer": ["Anything that serves by contrast to call attention to another thing's good qualities."], "thwart": ["To hinder or prevent (the efforts, plans, or desires) of."], "queer": ["Offensive term for an openly, often effeminate, homosexual man.", "To hinder or prevent (the efforts, plans, or desires) of."], "scotch": ["To hinder or prevent (the efforts, plans, or desires) of."], "frustrate": ["To hinder or prevent (the efforts, plans, or desires) of."], "baffle": ["To hinder or prevent (the efforts, plans, or desires) of."], "bilk": ["To hinder or prevent (the efforts, plans, or desires) of."], "pluck": ["To look for and gather."], "hygroscope": ["An hygrometer that shows variations in atmospheric humidity."], "hygroscopicity": ["Capacity to absorb water from the atmosphere."], "hygroscopically": ["In a hygroscopic way."], "in succession": ["One at a time."], "gradually": ["One at a time.", "Making progress, but slowly."], "individually": ["One at a time."], "successively": ["In a serial or successive manner; one following another."], "affix": ["A bound morpheme that is attached to a word stem to form a new word or an inflected form of a word.", "To make something fixed or stable; to cause to be firmly attached."], "-phore": ["Indicates the notion of carrying."], "now and then": ["From time to time."], "-phor": ["Indicates the notion of carrying."], "anti-political": ["Against politics."], "antipolitical": ["Against politics."], "nonpolitical": ["Having no interest in politics."], "apolitical": ["Having no interest in politics."], "low-energy house": ["A house that uses less energy than a traditional house."], "passive house": ["House that consumes very little energy and needs to traditional heating because of its superior heat insulation."], "grit": ["To cover with grit."], "assonance": ["A rhyme in which the vowel of the stressed syllable or syllables is repeated but the consonants change."], "vowel rhyme": ["A rhyme in which the vowel of the stressed syllable or syllables is repeated but the consonants change."], "tautogram": ["A text, poem or verse in which all words start with the same letter."], "corny": ["Dull and tiresome but with pretensions of significance or originality."], "bromidic": ["Dull and tiresome but with pretensions of significance or originality."], "platitudinal": ["Dull and tiresome but with pretensions of significance or originality."], "platitudinous": ["Dull and tiresome but with pretensions of significance or originality."], "all in all": ["All things considered."], "cep": ["An edible basidiomycete mushroom found in pine forests and plantations in autumn, the cap of which may reach 25 cm in diameter and 1 kg in weight."], "bolete": ["Edible mushroom belonging to one of several species of Boletus, characterized by a firm flesh which stays white."], "summer cep": ["An edible basidiomycete fungus of the genus Boletus occuring in deciduous forests of Europe, mostly collected during summer."], "icebreaker": ["A ship that is designed to move through ice-covered waters and create a channel for other ships."], "pine bolete": ["An edible basidiomycete fungus of the genus Boletus found throughout Europe and appearing under pine trees, generally in summer and autumn."], "pinewood king bolete": ["An edible basidiomycete fungus of the genus Boletus found throughout Europe and appearing under pine trees, generally in summer and autumn."], "chanterelle": ["An edible mushroom of the genus Cantharellus. It is orange or yellow, meaty and funnel-shaped."], "golden chanterelle": ["An edible mushroom of the genus Cantharellus. It is orange or yellow, meaty and funnel-shaped."], "unitedly": ["With cooperation and interchange."], "in concert": ["With a common plan."], "ice-breaker": ["A ship that is designed to move through ice-covered waters and create a channel for other ships."], "ice breaker": ["A ship that is designed to move through ice-covered waters and create a channel for other ships."], "break the ice": ["To overcome initial shyness or reserve, especially with a strange person or a group of strange persons."], "Brussels sprout": ["A cultivar group of wild cabbage native to Belgium cultivated for its small (typically 2.5 - 4cm) leafy green buds, which resemble miniature cabbages."], "Ermengarde": ["A female given name."], "guilt": ["The fact of having done something wrong.", "Awareness of having done wrong and feeling bad about it."], "hovel": ["A small crude shelter used as a dwelling."], "shack": ["A small crude shelter used as a dwelling."], "tripwire": ["A cord or wire arranged so that a detector or trap or a device is triggered when somebody stumbles over it or touches it in any other way.", "Any means of detecting an intruder."], "tripline": ["A cord or wire arranged so that a detector or trap or a device is triggered when somebody stumbles over it or touches it in any other way."], "trip cord": ["A cord or wire arranged so that a detector or trap or a device is triggered when somebody stumbles over it or touches it in any other way."], "all along": ["For the entire time."], "slay": ["To unlawfully and intentionally kill another human being."], "bump off": ["To unlawfully and intentionally kill another human being."], "polish off": ["To unlawfully and intentionally kill another human being."], "sporicide": ["A substance that kills spores."], "sporicidal": ["Killing spores."], "dirt cheap": ["Having a very low price."], "dirt-cheap": ["Having a very low price."], "pipe dream": ["A plan, desire or idea that is impossible or very unlikely to be realized."], "castle in the air": ["A plan, desire or idea that is impossible or very unlikely to be realized."], "collocation": ["A sequence of two or more words that often appear together."], "shiitake": ["An edible mushroom native to East Asia, which is cultivated and consumed in many Asian countries."], "sex partner": ["A sexual partner."], "mistress": ["Woman who has a (often secret) relationship with a man who is married or committed to another woman."], "essential oil": ["A concentrated, hydrophobic liquid containing volatile aroma compounds from plants."], "volatile oil": ["A concentrated, hydrophobic liquid containing volatile aroma compounds from plants."], "ethereal oil": ["A concentrated, hydrophobic liquid containing volatile aroma compounds from plants."], "volatile": ["Tending to vary often or widely.", "Liable to lead to sudden change or violence.", "Evaporating readily at normal temperatures and pressures.", "Marked by erratic changeableness in affections or attachments.", "A volatile substance; a substance that changes readily from solid or liquid to a vapor."], "bookmarker": ["A thin marker used to keep one's place in a printed work and to be able to return to it with ease."], "as yet": ["Up to the present.", "Up to the present."], "Viennese pastry": ["Baked goods, sweet and fatty, made from a yeast leavened or laminated dough."], "gnat": ["A tiny flying insect from one of several species in the Nematocera suborder, including the families Mycetophilidae, Anisopodidae and Sciaridae."], "thus far": ["Up to the present."], "heretofore": ["Up to the present."], "endogenic": ["Produced, originating or growing from within."], "namesake": ["Someone who has the same first name and/or last name as another person, without being related."], "at least": ["If nothing else.", "Not less than."], "at any rate": ["If nothing else.", "Whatever the case may be"], "linguistically": ["With respect to the science of linguistics.", "With respect to language."], "lingually": ["With respect to language."], "linguistical": ["Of or pertaining to language."], "lingual": ["Of or pertaining to language.", "Of or pertaining to the tongue.", "A sound articulated with the tongue.", "(Of sounds) Articulated with the tongue."], "hairline": ["The outline of hair growth on the head, especially on the forehead and temples."], "hair line": ["The outline of hair growth on the head, especially on the forehead and temples."], "leastways": ["If nothing else."], "at the least": ["Not less than."], "leastwise": ["If nothing else."], "interregnum": ["The time between two reigns, governments, etc.", "An intermission in any order of succession; any breach of continuity in action or influence."], "add fuel to the fire": ["To worsen a situation that is already difficult by increasing the agitation, hostility or passion."], "add fuel to the flames": ["To worsen a situation that is already difficult by increasing the agitation, hostility or passion."], "fan the flames": ["To worsen a situation that is already difficult by increasing the agitation, hostility or passion."], "throw oil on the fire": ["To worsen a situation that is already difficult by increasing the agitation, hostility or passion."], "linothorax": ["A type of armor used by the Ancient Greeks, as well as other civilizations that probably consisted of multilayered linen fabric."], "contractually": ["By virtue of a contract."], "crawl": ["To move slowly with the body in a prone position resting on or close to the ground."], "FOLDOC": ["A searchable dictionary of acronyms, jargon, programming languages, tools, architecture, operating systems, networking, theory, conventions, standards, mathematics, telecoms, electronics, institutions, companies, projects, products, history, in fact anything to do with computing."], "Free On-line Dictionary of Computing": ["A searchable dictionary of acronyms, jargon, programming languages, tools, architecture, operating systems, networking, theory, conventions, standards, mathematics, telecoms, electronics, institutions, companies, projects, products, history, in fact anything to do with computing."], "corporate trust": ["A group of organisations in an industry which agree on maintaining high prices and effectively killing competition."], "sportsman": ["A male person who engages in sports."], "sportswoman": ["A female person who engages in sports."], "jock": ["A person trained to compete in sports."], "cervical": ["Of or pertaining to the cervix.", "Of or pertaining to the neck."], "cervical vertebra": ["Any of the seven vertebrae of the neck."], "whale oil": ["Oil obtained from the blubber of various species of whales."], "fish oil": ["Oil produced from various marine mammals such as whales or pinniped, or from oily fishes."], "train oil": ["Oil obtained from the blubber of various species of whales."], "uterine brother": ["A half brother having the same mother but a different father."], "uterine sister": ["A half sister having the same mother but a different father."], "half sister": ["A sister with whom one has only one parent in common."], "maternal half sister": ["A half sister having the same mother but a different father."], "paternal half sister": ["A half sister having the same father but a different mother."], "half brother": ["A brother with whom one has only one parent in common."], "maternal half brother": ["A half brother having the same mother but a different father."], "paternal half brother": ["A half brother having the same father but a different mother."], "Yucatec Maya": ["A Mayan language spoken in the Yucat\u00e1n Peninsula, northern Belize and parts of Guatemala."], "single person": ["Person who is not married and not in a relationship."], "matrilineal": ["Tracing descent through the female line."], "matrilinear": ["Tracing descent through the female line."], "patrilineal": ["Tracing descent through the male line."], "patrilinear": ["Tracing descent through the male line."], "patrilineality": ["A system in which lineage is traced through the father and paternal ancestors."], "Maude": ["Female first name."], "chancy": ["Subject to accident or chance or change."], "fluky": ["Subject to accident or chance or change."], "zweifelhaft": ["Of dubious, doubtful or uncertain legitimacy, legality or authenicity."], "flukey": ["Subject to accident or chance or change."], "over-the-counter": ["(Of a medicine) That can be sold and distributed legally without the need of a prescription."], "over the counter": ["(Of a medicine) That can be sold and distributed legally without the need of a prescription."], "OTC": ["(Of a medicine) That can be sold and distributed legally without the need of a prescription."], "nonprescription": ["(Of a medicine) That can be sold and distributed legally without the need of a prescription."], "layering": ["A method of plant reproduction in which a branch is made to grow roots and can then be detached from the parent plant to become an independent plant."], "ground layering": ["A method of layering where the branch is buried in the soil."], "air layering": ["A method of layering in which the target region is wrapped in a moisture-retaining bag containing for example peat moss."], "marcotting": ["A method of layering in which the target region is wrapped in a moisture-retaining bag containing for example peat moss."], "air-layering": ["A method of layering in which the target region is wrapped in a moisture-retaining bag containing for example peat moss."], "vine layer": ["Layer of a vine obtained by layering."], "galore": ["An overflowing fullness."], "frisky": ["Playful like a lively kitten."], "kittenish": ["Playful like a lively kitten."], "lithopedion": ["The calcified body of a fetus that died during an abdominal pregnancy but is too large to be reabsorbed by the body."], "stone baby": ["The calcified body of a fetus that died during an abdominal pregnancy but is too large to be reabsorbed by the body."], "ectopic pregnancy": ["A complication of pregnancy in which the embryo implants outside the uterus."], "eccyesis": ["A complication of pregnancy in which the embryo implants outside the uterus."], "tubal pregnancy": ["A pregnancy where the fertilized egg cell implants in the Fallopian tube."], "tubal abortion": ["Spontaneous abortion in case of a tubal pregnancy."], "ovarian pregnancy": ["A pregnancy where the fertilized egg cell implants in the ovary."], "abdominal pregnancy": ["A pregnancy where the embryo develops in the abdominal cavity."], "cervical pregnancy": ["A pregnancy where the fertilized egg cell implants in the cervical lining."], "ovarian": ["Of or pertaining to an ovary."], "tubal": ["Of or relating to the Fallopian tubes."], "cerebral": ["Of or relating to the brain."], "anencephaly": ["A birth defect where large parts of brain and skull are missing, affected children usually only live a few days after being born."], "dire": ["Fraught with extreme danger; nearly hopeless."], "dermal": ["Of, relating to, or affecting the skin.", "Of or pertaining to the dermis."], "dermic": ["Of, relating to, or affecting the skin.", "Of or pertaining to the dermis."], "testicular": ["Of or relating to the testicles."], "nasal": ["Of or pertaining to the nose."], "auditive": ["Of or pertaining to the sense of hearing."], "audile": ["Of or pertaining to the sense of hearing."], "auricular": ["Of or pertaining to the ear.", "Of or pertaining to the sense of hearing."], "pedal": ["Of or pertaining to the foot or feet.", "A lever operated by one's foot that is used to control a machine or mechanism, such as a bicycle or piano."], "bipedal": ["Having two feet."], "two-footed": ["Having two feet."], "view-point": ["The position from which an object is looked at.", "The mental position from which things are viewed.", "A place from which something can be viewed."], "par excellence": ["Beyond comparison, best, of highest quality."], "for instance": ["As an example. [Used to introduce an example or list of examples.]"], "dental": ["Of or pertaining to the teeth.", "Of or pertaining to dentistry.", "A sound articulated with the teeth.", "(Of sounds) Articulated with the teeth."], "e.g.": ["As an example. [Used to introduce an example or list of examples.]"], "microwave oven": ["An appliance for cooking food using microwave energy."], "nuke": ["An appliance for cooking food using microwave energy.", "To cook or heat in a microwave oven."], "missed": ["Not caught with the senses or the mind."], "preoccupied": ["Deeply absorbed in thought."], "frontal": ["Of or relating to the forehead or frontal bone.", "Belonging to the front part."], "frontal bone": ["The bone of the forehead."], "flat foot": ["A foot whose entire sole comes into complete or near-complete contact with the ground."], "flatfoot": ["A foot whose entire sole comes into complete or near-complete contact with the ground."], "phantom": ["A ghostly appearing figure.", "Something existing in perception only."], "phantasm": ["A ghostly appearing figure.", "Something existing in perception only."], "phantasma": ["A ghostly appearing figure.", "Something existing in perception only."], "fantasm": ["A ghostly appearing figure.", "Something existing in perception only."], "slimy": ["Morally reprehensible.", "Pejorative expression for a person who gets on the nerves of others by constantly trying or pretending to do them favours and ask favours from them in a deceptive and unpleasantly submissive way for his or her own benefit."], "unworthy": ["Morally reprehensible."], "worthless": ["Morally reprehensible."], "villainous": ["Extremely wicked."], "uproot": ["To destroy completely leaving no trace.", "To pull up by the roots."], "root out": ["To destroy completely leaving no trace."], "carry off": ["To kill in large numbers."], "kill off": ["To kill in large numbers."], "micro-cook": ["To cook or heat in a microwave oven."], "zap": ["To cook or heat in a microwave oven."], "parlance": ["A manner of speaking that is natural to native speakers of a language."], "audaciousness": ["Fearless daring.", "Aggressive boldness or unmitigated effrontery."], "chopfallen": ["Brought low in spirit."], "deflated": ["Brought low in spirit."], "geknickt": ["Brought low in spirit."], "premarital": ["Occuring or existing before marriage."], "antenuptial": ["Occuring or existing before marriage."], "prenuptial": ["Occuring or existing before marriage."], "prenuptial agreement": ["A legal document, signed by both parties before marriage, stating the legal claims on each other's estate in case of divorce."], "premarital agreement": ["A legal document, signed by both parties before marriage, stating the legal claims on each other's estate in case of divorce."], "antenuptial agreement": ["A legal document, signed by both parties before marriage, stating the legal claims on each other's estate in case of divorce."], "prenup": ["A legal document, signed by both parties before marriage, stating the legal claims on each other's estate in case of divorce."], "obstructive": ["Preventing movement."], "clogging": ["Preventing movement."], "hindering": ["Preventing movement."], "impeding": ["Preventing movement."], "vigesimal system": ["A numeral system that is based on the number twenty."], "base 20 system": ["A numeral system that is based on the number twenty."], "vigesimal": ["Of, pertaining to, or based on twenty."], "lenition": ["Phonetic modification that consists of the weakening of the articulation of a consonant."], "goy": ["A non-Jewish person."], "The Devil's Dictionary": ["The Devil's Dictionary (1881-1906)."], "Gentile": ["A non-Jewish person.", "A religious person who believes Jesus is the Christ and who is a member of a Christian denomination."], "non-Jew": ["A non-Jewish person."], "above all": ["Of prime importance; before anything else."], "crummy": ["Of very poor quality."], "cheesy": ["Of very poor quality."], "chintzy": ["Of very poor quality."], "on the other hand": ["From another point of view."], "punk": ["Of very poor quality."], "sleazy": ["Of very poor quality."], "tinny": ["Of very poor quality."], "background music": ["Any music played in a public space whose main function is to create an atmosphere suitable to a specific occasion, rather than to be listened to."], "supra": ["At an earlier place."], "above mentioned": ["Appearing earlier in the same text."], "foregoing": ["Appearing earlier in the same text."], "overeat": ["To eat too much."], "pig out": ["To eat too much."], "newsworthy": ["Interesting enough to be reported as a news."], "Holy Trinity": ["Representation in which God is considered as being three persons: the Father, The Son and the Holy Spirit."], "Blessed Trinity": ["Representation in which God is considered as being three persons: the Father, The Son and the Holy Spirit."], "Sacred Trinity": ["Representation in which God is considered as being three persons: the Father, The Son and the Holy Spirit."], "partly": ["In part; in some degree; not wholly."], "definitely": ["In a definitive manner."], "forth": ["In a direction away from the speaker or object."], "broken neck": ["A fracture of one of the neck bones."], "cervical fracture": ["A fracture of one of the neck bones."], "distal radius fracture": ["A common bone fracture of the radius in the forearm near the wrist joint."], "wrist fracture": ["A common bone fracture of the radius in the forearm near the wrist joint."], "rib fracture": ["A fracture in one of the bones making up the rib cage."], "clavicle fracture": ["A bone fracture in the collarbone."], "skull fracture": ["A fracture of one of the bones that make up the skull."], "basilar skull fracture": ["A fracture of the base of the skull."], "basal skull fracture": ["A fracture of the base of the skull."], "patella fracture": ["A fracture of the kneecap."], "ulterior": ["Lying beyond what is openly revealed or avowed (especially being kept in the background or deliberately concealed).", "Coming at a subsequent time or stage.", "Beyond or outside an area of immediate interest; remote."], "subterraneous": ["Lying beyond what is openly revealed or avowed (especially being kept in the background or deliberately concealed)."], "if need be": ["If there is a need."], "live broadcast": ["A broadcast seen or heard as it happens."], "vitriol": ["Abusive or venomous language used to express blame or censure or bitter deep-seated ill will.", "To subject to bitter verbal abuse.", "A highly corrosive acid made from sulfur dioxide; widely used in the chemical industry.", "To expose to the effects of vitriol or injure with vitriol."], "vituperation": ["Abusive or venomous language used to express blame or censure or bitter deep-seated ill will."], "invective": ["Abusive or venomous language used to express blame or censure or bitter deep-seated ill will."], "sulfuric acid": ["A highly corrosive acid made from sulfur dioxide; widely used in the chemical industry."], "ineffable": ["That cannot be expressed or described with words.", "That should not be spoken."], "unutterable": ["That cannot be expressed or described with words."], "unspeakable": ["That cannot be expressed or described with words.", "That should not be spoken."], "inexpressible": ["That cannot be expressed or described with words."], "indescribable": ["That cannot be expressed or described with words."], "undescribable": ["That cannot be expressed or described with words."], "ineffably": ["In a manner that cannot be expressed or described with words."], "indescribably": ["In a manner that cannot be expressed or described with words."], "undescribably": ["In a manner that cannot be expressed or described with words."], "unutterably": ["In a manner that cannot be expressed or described with words."], "unspeakably": ["In a manner that cannot be expressed or described with words."], "inexpressibly": ["In a manner that cannot be expressed or described with words."], "ineffability": ["The condition of not being expressible or describable with words."], "inexpressibility": ["The condition of not being expressible or describable with words."], "unutterability": ["The condition of not being expressible or describable with words."], "unspeakability": ["The condition of not being expressible or describable with words."], "indescribability": ["The condition of not being expressible or describable with words."], "undescribability": ["The condition of not being expressible or describable with words."], "indescribableness": ["The condition of not being expressible or describable with words."], "undescribableness": ["The condition of not being expressible or describable with words."], "ineffableness": ["The condition of not being expressible or describable with words."], "unutterableness": ["The condition of not being expressible or describable with words."], "unspeakableness": ["The condition of not being expressible or describable with words."], "inexpressibleness": ["The condition of not being expressible or describable with words."], "marriageability": ["The state of being eligible for marriage."], "unrecorded": ["Seen or heard from a broadcast, as it happens."], "minion": ["A servile or fawning dependant."], "Webster's Dictionary": ["Webster's Dictionary, 1913."], "Webster": ["Webster's Dictionary, 1913."], "belie": ["To show to be false; to convict of, or charge with, falsehood."], "sociological": ["Of or relating to sociology."], "this time": ["On this occasion, on this opportunity."], "television receiver": ["A device for receiving television signals and displaying them in visual form."], "television set": ["A device for receiving television signals and displaying them in visual form."], "tv": ["A device for receiving television signals and displaying them in visual form."], "tv set": ["A device for receiving television signals and displaying them in visual form."], "idiot box": ["A device for receiving television signals and displaying them in visual form."], "boob tube": ["A device for receiving television signals and displaying them in visual form."], "google box": ["A device for receiving television signals and displaying them in visual form."], "plainly": ["In a simple manner or state."], "Alacaluf": ["A language spoken by the Qawasqar people in the Chilean Patagonia.", "A South American people living in Chile in the Strait of Magellan (Brunswick Peninsula, and Wellington, Santa In\u00e9s, and Desolaci\u00f3n islands)."], "Alacalufe": ["A language spoken by the Qawasqar people in the Chilean Patagonia."], "Halakwulup": ["A language spoken by the Qawasqar people in the Chilean Patagonia.", "A South American people living in Chile in the Strait of Magellan (Brunswick Peninsula, and Wellington, Santa In\u00e9s, and Desolaci\u00f3n islands)."], "Kaweskar": ["A language spoken by the Qawasqar people in the Chilean Patagonia.", "A South American people living in Chile in the Strait of Magellan (Brunswick Peninsula, and Wellington, Santa In\u00e9s, and Desolaci\u00f3n islands)."], "Kawesqar": ["A language spoken by the Qawasqar people in the Chilean Patagonia."], "unremarkably": ["Under normal conditions."], "ordinarily": ["Under normal conditions."], "dramatic": ["Of or relating to the drama."], "victorious": ["Being the winner in a contest, struggle, war etc.", "Experiencing triumph."], "titillating": ["Pleasantly and superficially exciting.", "Exciting by touching lightly so as to cause laughter or twitching movements.", "Giving sexual pleasure; sexually arousing."], "tickling": ["Exciting by touching lightly so as to cause laughter or twitching movements."], "winning": ["Being the winner in a contest, struggle, war etc."], "triumphant": ["Experiencing triumph.", "Being joyful and proud especially because of triumph or success."], "tingling": ["Exciting by touching lightly so as to cause laughter or twitching movements."], "pharaonic": ["Pertaining to a Pharaoh."], "Pharaonic": ["Pertaining to a Pharaoh."], "zenithal": ["Relating to or located at or near the zenith."], "zero balance account": ["A checking account which always maintains a balance of zero."], "zero balance": ["An account balance of zero."], "triumphal": ["Being joyful and proud especially because of triumph or success."], "exulting": ["Being joyful and proud especially because of triumph or success."], "jubilant": ["Being joyful and proud especially because of triumph or success."], "prideful": ["Being joyful and proud especially because of triumph or success."], "rejoicing": ["Being joyful and proud especially because of triumph or success."], "zonation": ["Arrangement or distribution in zones."], "zoophilous": ["(Of plants) Pollinated by animals.", "Having a sexual preference for animals."], "zoophilic": ["Having a sexual preference for animals."], "zygosis": ["The union of gametes to form a zygote."], "zoophily": ["A form of pollination whereby pollen is transferred by animals."], "syngamy": ["The fusion of two gametes, one male and one female, in fertilization."], "gaydar": ["The supposed ability to perceive whether a person is homosexual."], "Sunshine State": ["A southeast state of the United States of America"], "Floridian": ["From, or relating to the state of Florida.", "An inhabitant or a resident of the state of Florida."], "xiphoid": ["Shaped like a sword."], "sword-shaped": ["Shaped like a sword."], "ensiform": ["Shaped like a sword."], "Xavier": ["Male first name."], "pimply": ["Having many pimples."], "pimpled": ["Having many pimples."], "philological": ["Of or relating to philology."], "philologic": ["Of or relating to philology."], "eery": ["Inspiring a feeling of fear; strange and frightening."], "heart-shaped": ["Shaped like a heart."], "reckless": ["Indifferent to danger or the consequences.", "Careless or heedless."], "cystitis": ["An inflammation of the urinary bladder."], "urethritis": ["Inflammation of the urethra."], "ureteritis": ["Inflammation of the ureter."], "quotation mark": ["A punctuation mark, usually used in pairs, to indicate that a statement, quote or phrase literally appears."], "maggot": ["The larva of the housefly and blowfly commonly found in decaying organic matter."], "pyelonephritis": ["Inflammation of the renal pelvis."], "glomerulonephritis": ["Inflammation of the glomeruli of the kidneys."], "glomerular nephritis": ["Inflammation of the glomeruli of the kidneys."], "GN": ["Inflammation of the glomeruli of the kidneys."], "nephritis": ["Inflammation of the kidney."], "mastitis": ["Inflammation of breast tissue."], "vulvitis": ["Inflammation of the vulva."], "vaginitis": ["Inflammation of the vagina."], "cervicitis": ["Inflammation of the uterine cervix."], "parametritis": ["Inflammation of the parametrium."], "endometritis": ["Inflammation of the endometrium."], "salpingitis": ["Inflammation in the fallopian tubes."], "oophoritis": ["Inflammation of the ovaries.", "Inflammation of an ovary."], "balanoposthitis": ["Inflammation of the glans penis and the prepuce."], "balanitis": ["Inflammation of the glans penis."], "prostatitis": ["Inflammation of the prostate gland."], "epididymitis": ["Inflammation of the epididymis."], "orchitis": ["Inflammation of the testes."], "orchiditis": ["Inflammation of the testes."], "chorioamnionitis": ["Inflammation of the fetal membranes."], "omphalitis": ["Inflammation of the umbilical cord stump of a newborn."], "knee jerk": ["A reflex extension of the leg resulting from a sharp tap on the patellar tendon.", "Emotional and predictable; -- of certain people and their reactions to events."], "knee-jerk": ["A reflex extension of the leg resulting from a sharp tap on the patellar tendon.", "Emotional and predictable; -- of certain people and their reactions to events."], "knee-jerk reflex": ["A reflex extension of the leg resulting from a sharp tap on the patellar tendon."], "patellar reflex": ["A reflex extension of the leg resulting from a sharp tap on the patellar tendon."], "tenured": ["Appointed for life and not subject to dismissal except for a grave crime."], "irremovable": ["Appointed for life and not subject to dismissal except for a grave crime."], "Caliphate": ["The era of Islam's ascendancy from the death of Mohammed until the 13th century; some Moslems still maintain that the Moslem world must always have a calif as head of the community."], "caliphate": ["The territorial jurisdiction of a caliph.", "The office of a caliph."], "to be honest": ["In all fairness."], "whiteout": ["An arctic atmospheric condition with clouds over snow produce a uniform whiteness and objects are difficult to see; occurs when the light reflected off the snow equals the light coming through the clouds.", "To lose daylight visibility in heavy fog, snow, or rain.", "To cover up with a liquid correction fluid."], "white-out": ["To lose daylight visibility in heavy fog, snow, or rain.", "To cover up with a liquid correction fluid."], "white out": ["To cover up with a liquid correction fluid."], "move in": ["To settle oneself in a new housing."], "adrenalitis": ["Inflammation of an adrenal gland."], "adrenitis": ["Inflammation of an adrenal gland."], "parathyroiditis": ["Inflammation of the parathyroid gland."], "hijacker": ["Someone who uses force to take over a vehicle (especially an airplane) in order to reach an alternative destination.", "A holdup man who stops a vehicle and steals from it."], "highjacker": ["Someone who uses force to take over a vehicle (especially an airplane) in order to reach an alternative destination.", "A holdup man who stops a vehicle and steals from it."], "highwayman": ["A holdup man who stops a vehicle and steals from it."], "road agent": ["A holdup man who stops a vehicle and steals from it."], "factual": ["Existing in act or fact."], "literal": ["Being or reflecting the essential or genuine character of something."], "strenuous": ["Characterized by or performed with much energy or force."], "sophistication": ["Intellectual, moral, or spiritual improvement; enlightenment."], "edification": ["Intellectual, moral, or spiritual improvement; enlightenment."], "thyroiditis": ["Inflammation of the thyroid gland."], "hypophysitis": ["Inflammation of the pituitary gland."], "insulitis": ["Inflammation of the islets of Langerhans of the pancreas."], "lymphangitis": ["Inflammation of the lymphatic channels."], "blood poisoning": ["Inflammation of the lymphatic channels."], "chondritis": ["Inflammation of cartilage."], "osteochondritis": ["Inflammation of the cartilage and bone in a joint."], "spondylitis": ["Inflammation of the vertebra."], "listeriosis": ["Infectious disease caused by the bacterium Listeria monocytogenes."], "placentitis": ["Inflammation of the placenta."], "periostitis": ["Inflammation of the periosteum."], "dermatomyositis": ["Inflammation of the muscles and the skin."], "point of reference": ["Anything serving to indicate or point out, as a sign or token."], "myositis": ["Inflammation of the muscles."], "synovitis": ["Inflammation of the synovial membrane."], "hospitable": ["Cordial and generous towards guests."], "four-dimensional": ["Existing in four dimensions."], "4D": ["Existing in four dimensions."], "n-dimensional": ["Having n dimensions."], "hunchback": ["An abnormal backward curve to the vertebral column.", "A person whose back is hunched because of abnormal curvature of the upper spine."], "kyphosis": ["An abnormal backward curve to the vertebral column."], "humpback": ["An abnormal backward curve to the vertebral column.", "A person whose back is hunched because of abnormal curvature of the upper spine."], "crookback": ["A person whose back is hunched because of abnormal curvature of the upper spine."], "bring action": ["To institute legal proceedings against (a person or institution)."], "ale": ["An alcoholic beverage commonly fermented from barley malt, with hops or some other substance to impart a bitter flavor."], "allure": ["To dispose or incline or entice to; to be attractive by arousing hope or desire."], "all-powerful": ["Having unlimited power, ruling over everyone and everything."], "amalgamate": ["To mix together different elements."], "stubborn as a mule": ["Very stubborn."], "as stubborn as a mule": ["Very stubborn."], "mashed potatoes": ["A dish made with boiled potatoes which are mashed and mixed with milk."], "bursitis": ["Inflammation of a bursa."], "in profile": ["Seen sideways."], "enthesitis": ["Inflammation of the entheses."], "fasciitis": ["Inflammation of the fascia."], "epicondylitis": ["Inflammation of an epicondyle."], "panniculitis": ["Inflammation of subcutaneous adipose tissue."], "dermatitis": ["Inflammation of the skin."], "wheel rim": ["Metallic part of a wheel on which the tire is mounted."], "folliculitis": ["Inflammation of a hair follicle."], "rim": ["Metallic part of a wheel on which the tire is mounted.", "An edge around something, especially when circular."], "cellulitis": ["Inflammation subcutaneous layers of the skin."], "untrustworthy": ["Not worthy of trust."], "unreliable": ["Not reliable."], "undependable": ["Not reliable."], "stomatitis": ["Inflammation of the mucous lining in the mouth."], "flying": ["Occurring or happening within a short time; brief.", "Able to fly."], "antechamber": ["Waiting room from which you can enter directly into the reception (in public offices, professional offices, mansions, etc.)."], "get to": ["To make someone rather angry or impatient; to cause annoyance.", "To be permitted to do something.", "To track down and intimidate."], "get at": ["To make someone rather angry or impatient; to cause annoyance."], "irritate": ["To have an unwanted negative influence on someone, to be distractive to or for someone, impress someone or something in a troublesome or uneasy way.", "To make someone rather angry or impatient; to cause annoyance."], "rile": ["To make someone rather angry or impatient; to cause annoyance."], "nark": ["To make someone rather angry or impatient; to cause annoyance."], "vex": ["To make someone rather angry or impatient; to cause annoyance."], "chafe": ["To make someone rather angry or impatient; to cause annoyance."], "botheration": ["Something which annoys."], "infliction": ["Something which annoys."], "pain in the ass": ["Something which annoys."], "apprise": ["To inform (somebody) of something."], "brag": ["To show off.", "Unusually fine; first-rate.", "An instance of boastful talk."], "boast": ["To show off."], "tout": ["To show off."], "swash": ["To show off."], "shoot a line": ["To show off."], "bluster": ["To show off."], "gasconade": ["To show off.", "An instance of boastful talk."], "boss": ["A person who leads, rules, or is in charge.", "Unusually fine; first-rate.", "A person who oversees and directs the work of others."], "bragging": ["An instance of boastful talk."], "crowing": ["An instance of boastful talk."], "vaporing": ["An instance of boastful talk."], "line-shooting": ["An instance of boastful talk."], "swagger": ["An instance of boastful talk."], "boasting": ["An instance of boastful talk."], "misdemeanor": ["A crime less serious than a felony."], "misdemeanour": ["A crime less serious than a felony."], "abductor muscle": ["Muscle whose function is to move away from the central line of the body the part to which it is connected."], "on the one hand": ["On the one side."], "gingivitis": ["Inflammation of the gums."], "gingival": ["Of or relating to the gums."], "glossitis": ["Inflammation of the tongue."], "sublingual": ["Under the tongue."], "neuromarketing": ["A field of marketing that studies consumers' sensorimotor, cognitive, and affective response to marketing stimuli."], "tonsillitis": ["Inflammation of the tonsils."], "sialadenitis": ["Inflammation of a salivary gland."], "salivary": ["Of or pertaining to saliva."], "parotitis": ["Inflammation of one or both parotid glands."], "cheilitis": ["Inflammation of the lip."], "pulpitis": ["Inflammation of the dental pulp."], "gnathitis": ["Inflammation of the jaw."], "esophagitis": ["Inflammation of the esophagus."], "oesophagitis": ["Inflammation of the esophagus."], "brewers grains": ["Residue of malts that have been used to make beer."], "brewer's grains": ["Residue of malts that have been used to make beer."], "spent grain": ["Residue of malts that have been used to make beer."], "arsenal": ["The place where weapons are made or kept."], "artisan": ["Someone who carries out work that requires a certain speciality or skill."], "ordnance": ["Part of the war material that includes guns, mortars, bombs, etc."], "enterocolitis": ["Inflammation of the colon and small intestine."], "duodenitis": ["Inflammation of the duodenum."], "ileitis": ["Inflammation of the ileum."], "caecitis": ["Inflammation of the caecum."], "typhlitis": ["Inflammation of the caecum."], "typhlenteritis": ["Inflammation of the caecum."], "proctitis": ["Inflammation of the anus and the lining of the rectum."], "cholangitis": ["Inflammation of the bile duct."], "cholecystitis": ["Inflammation of the gall bladder."], "pancreatitis": ["Inflammation of the pancreas."], "peritonitis": ["Inflammation of the peritoneum."], "etc.": ["Continuing in the same way."], "et cetera": ["Continuing in the same way."], "et c\u00e6tera": ["Continuing in the same way."], "et caetera": ["Continuing in the same way."], "&c.": ["Continuing in the same way."], "&c": ["Continuing in the same way."], "rhinitis": ["Inflammation of the nasal mucosa."], "cubicle": ["Small room, small partitioned space."], "runny nose": ["Inflammation of the nasal mucosa.", "Excessive secretion of mucous from the nose."], "common cold": ["A contagious, viral infectious disease of the upper respiratory system; common symptoms include cough, sore throat, runny nose, nasal congestion and sneezing."], "viral upper respiratory tract infection": ["A contagious, viral infectious disease of the upper respiratory system; common symptoms include cough, sore throat, runny nose, nasal congestion and sneezing."], "VURI": ["A contagious, viral infectious disease of the upper respiratory system; common symptoms include cough, sore throat, runny nose, nasal congestion and sneezing."], "acute viral nasopharyngitis": ["A contagious, viral infectious disease of the upper respiratory system; common symptoms include cough, sore throat, runny nose, nasal congestion and sneezing."], "acute viral rhinopharyngitis": ["A contagious, viral infectious disease of the upper respiratory system; common symptoms include cough, sore throat, runny nose, nasal congestion and sneezing."], "acute coryza": ["A contagious, viral infectious disease of the upper respiratory system; common symptoms include cough, sore throat, runny nose, nasal congestion and sneezing."], "coryza": ["Inflammation of the nasal mucosa."], "nasal congestion": ["Blockage of the nasal passages usually due to membranes lining the nose becoming swollen from inflamed blood vessels."], "nasal blockage": ["Blockage of the nasal passages usually due to membranes lining the nose becoming swollen from inflamed blood vessels."], "nasal obstruction": ["Blockage of the nasal passages usually due to membranes lining the nose becoming swollen from inflamed blood vessels."], "blocked nose": ["Blockage of the nasal passages usually due to membranes lining the nose becoming swollen from inflamed blood vessels."], "stuffy nose": ["Blockage of the nasal passages usually due to membranes lining the nose becoming swollen from inflamed blood vessels."], "stuffed up nose": ["Blockage of the nasal passages usually due to membranes lining the nose becoming swollen from inflamed blood vessels."], "rhinorrhea": ["Excessive secretion of mucous from the nose."], "pharyngitis": ["Inflammation of the pharynx."], "coryzal": ["Pertaining to coryza."], "tracheitis": ["Inflammation of the trachea."], "camphor laurel": ["A large evergreen tree originating from Japan and East Asia whose leaves smell of camphor when crushed."], "camphorwood": ["A large evergreen tree originating from Japan and East Asia whose leaves smell of camphor when crushed."], "camphor tree": ["A large evergreen tree originating from Japan and East Asia whose leaves smell of camphor when crushed."], "tachycardiac": ["Relating to or affected with tachycardia."], "chronic disease": ["A medical condition of extended duration, either continuous or marked by frequent recurrence."], "chronic illness": ["A medical condition of extended duration, either continuous or marked by frequent recurrence."], "acute disease": ["A medical condition with a rapid onset and a short duration."], "acute illness": ["A medical condition with a rapid onset and a short duration."], "IAST": ["A popular transliteration scheme that allows a lossless romanization of Indic scripts."], "International Alphabet of Sanskrit Transliteration": ["A popular transliteration scheme that allows a lossless romanization of Indic scripts."], "bronchiolitis": ["Inflammation of the bronchioles."], "pneumonitis": ["Inflammation of lung tissue."], "pleurisy": ["Inflammation of the pleura."], "pleuritis": ["Inflammation of the pleura."], "mediastinitis": ["Inflammation of the tissues in the mid-chest."], "carditis": ["Inflammation of the heart."], "urchin": ["Zoophyte with a calcareous shell ornated with mobile spines."], "sea urchin": ["Zoophyte with a calcareous shell ornated with mobile spines."], "hurcheon": ["Zoophyte with a calcareous shell ornated with mobile spines."], "power assisted steering": ["A system in a vehicle that reduces the effort needed by the driver to steer the wheels."], "power steering": ["A system in a vehicle that reduces the effort needed by the driver to steer the wheels."], "endocarditis": ["Inflammation of the inner layer of the heart."], "baba ghanoush": ["A dish from Arab cuisine that consists of mashed eggplant and various seasonings."], "myocarditis": ["Inflammation of the heart muscle."], "hummus": ["A popular dish in the Middle East that consists of cooked, mashed chickpeas, blended with tahini, olive oil, lemon juice, salt and garlic."], "hommos": ["A popular dish in the Middle East that consists of cooked, mashed chickpeas, blended with tahini, olive oil, lemon juice, salt and garlic."], "hommus": ["A popular dish in the Middle East that consists of cooked, mashed chickpeas, blended with tahini, olive oil, lemon juice, salt and garlic."], "hoummos": ["A popular dish in the Middle East that consists of cooked, mashed chickpeas, blended with tahini, olive oil, lemon juice, salt and garlic."], "hoummous": ["A popular dish in the Middle East that consists of cooked, mashed chickpeas, blended with tahini, olive oil, lemon juice, salt and garlic."], "houmous": ["A popular dish in the Middle East that consists of cooked, mashed chickpeas, blended with tahini, olive oil, lemon juice, salt and garlic."], "tahini": ["A paste of ground sesame seeds used in cooking."], "sesame paste": ["A paste of ground sesame seeds used in cooking."], "isothermic": ["Of or indicating equality of temperature."], "isothermally": ["In an isothermal manner."], "isothermically": ["In an isothermal manner."], "leadership": ["The capacity of a person, group of person, nation, etc. to be accepted as a leader by others."], "anti-seismic": ["Able to resist to an earthquake."], "earthquake-proof": ["Able to resist to an earthquake."], "earthquake resistant": ["Able to resist to an earthquake."], "earthquake-resistant": ["Able to resist to an earthquake."], "antiseismic": ["Able to resist to an earthquake."], "accelerator pedal": ["Pedal which increases the speed of a vehicle when pushed."], "Port-au-Princian": ["A inhabitant of Port-au-Prince.", "From or relating to Port-au-Prince."], "pancarditis": ["Inflammation of the heart involving all three layers."], "vasculitis": ["Inflammation of blood vessels."], "arteritis": ["Inflammation of the walls of arteries."], "capillaritis": ["Inflammation of the capillaries."], "myelitis": ["Inflammation of the spinal cord."], "feeding bottle": ["A container with a rubber nipple used for giving liquids to infants."], "baby's bottle": ["A container with a rubber nipple used for giving liquids to infants."], "build on to": ["Build against something."], "cauldron": ["A very large pot that is used for boiling."], "caldron": ["A very large pot that is used for boiling."], "sentimental": ["Given to or marked by sentiment or sentimentality.", "Effusively or insincerely emotional."], "bathetic": ["Effusively or insincerely emotional."], "drippy": ["Effusively or insincerely emotional."], "maudlin": ["Effusively or insincerely emotional."], "mawkish": ["Effusively or insincerely emotional."], "kitschy": ["Effusively or insincerely emotional."], "mushy": ["Effusively or insincerely emotional."], "schmalzy": ["Effusively or insincerely emotional."], "soupy": ["Effusively or insincerely emotional."], "slushy": ["Effusively or insincerely emotional."], "phylogenetic": ["Of or relating to the evolutionary development of organisms."], "phyletic": ["Of or relating to the evolutionary development of organisms."], "adobe brick": ["An unburnt brick dried in the sun made of clay and dried grasses."], "perish": ["To cease to live."], "cash in one's chips": ["To cease to live."], "buy the farm": ["To cease to live."], "conk": ["To cease to live."], "give-up the ghost": ["To cease to live."], "drop dead": ["To cease to live."], "pop off": ["To cease to live."], "choke": ["To cease to live.", "To squeeze the neck in order to compress the carotide and/or trachea, possibly leading to unconsciousness or death.", "A person who kills by strangling."], "snuff it": ["To cease to live."], "subsister": ["Someone who endured through disaster or hardship."], "preach": ["To encourage support for something.", "To deliver a sermon."], "advocator": ["One who supports something."], "sibling pair": ["Two persons who are related to each other as brother or sister."], "pair of brothers": ["Two brothers."], "pair of sisters": ["Two sisters."], "spiritual marriage": ["A form of marriage where sexual intercourse is abstained from (for example for religious reasons)."], "Josephite marriage": ["A form of marriage where sexual intercourse is abstained from (for example for religious reasons)."], "arachnoiditis": ["Inflammation of the arachnoid."], "neuritis": ["Inflammation of a nerve."], "dacryoadenitis": ["Inflammation of the lacrimal glands."], "dacryocystitis": ["Inflammation of the lacrimal sac."], "scleritis": ["Inflammation of the sclera."], "yes and no": ["Interjection expressing both an affirmative and negative answer to a polar question."], "keratitis": ["Inflammation of the eye's cornea."], "cantankerous": ["Having a difficult and contrary disposition."], "ornery": ["Having a difficult and contrary disposition."], "anti-phlogistic": ["Counteracting inflammation.", "A medicine intended to reduce inflammation."], "brake pedal": ["Pedal of a vehicle on which one pushes in order to brake."], "foot brake": ["Pedal of a vehicle on which one pushes in order to brake."], "choroiditis": ["Inflammation of the choroid."], "chorioretinitis": ["Inflammation of the choroid and retina of the eye."], "choroid retinitis": ["Inflammation of the choroid and retina of the eye."], "blepharitis": ["Inflammation of the eyelid margins."], "conjunctivitis": ["Inflammation of the conjunctiva of the eye."], "pink eye": ["Inflammation of the conjunctiva of the eye."], "Madras eye": ["Inflammation of the conjunctiva of the eye."], "iritis": ["Inflammation of the iris of the eye."], "def\u00e6cate": ["To excrete feces from one's body through the anus."], "uveitis": ["Inflammation of the uvea."], "otitis": ["Inflammation of the ear."], "labyrinthitis": ["Inflammation of the inner ear."], "mastoiditis": ["Inflammation of the mastoid process in the temporal bone."], "otitis media": ["Inflammation of the middle ear."], "junk": ["Worthless object of bad quality."], "middle ear infection": ["Inflammation of the middle ear."], "burn out": ["To be extinguished due to a lack of fuel."], "cease burning": ["To be extinguished due to a lack of fuel."], "disperse": ["Distribute loosely."], "scopophilia": ["A desire to watch erotic or pornographic items in order to obtain sexual pleasure."], "scoptophilia": ["A desire to watch erotic or pornographic items in order to obtain sexual pleasure."], "scopophile": ["A person who likes to watch erotic or pornographic items in order to obtain sexual pleasure."], "scoptophile": ["A person who likes to watch erotic or pornographic items in order to obtain sexual pleasure."], "scopophiliac": ["A person who likes to watch erotic or pornographic items in order to obtain sexual pleasure.", "Of or relating to scopophilia."], "scoptophiliac": ["A person who likes to watch erotic or pornographic items in order to obtain sexual pleasure.", "Of or relating to scopophilia."], "scopophilic": ["Of or relating to scopophilia."], "scoptophilic": ["Of or relating to scopophilia."], "voyeur": ["Someone who spies on people engaged in intimate, often sexual, behaviors."], "peeping tom": ["Someone who spies on people engaged in intimate, often sexual, behaviors."], "Peeping Tom": ["Someone who spies on people engaged in intimate, often sexual, behaviors."], "peeper": ["Someone who spies on people engaged in intimate, often sexual, behaviors."], "cissy": ["Having unsuitable feminine qualities."], "sissified": ["Having unsuitable feminine qualities."], "sissyish": ["Having unsuitable feminine qualities."], "adenitis": ["Inflammation of a gland or lymph node."], "alveolitis": ["Inflammation of the alveoli in the lungs.", "Inflammation of the dental alveolus in the jaw."], "bronchoalveolitis": ["Inflammation of the bronchi and alveoles of the lung."], "bronchopneumonitis": ["Inflammation of the lungs and bronchioles."], "bronchopneumonia": ["Inflammation of the lungs and bronchioles."], "diverticulitis": ["Inflammation of diverticula on the colon."], "endocervicitis": ["Inflammation of the mucous membrane of the uterine cervix."], "imaginitis": ["A fictitious disease characterised by a hyperactive imagination."], "leptomeningitis": ["Inflammation of the leptomeninges."], "odontobothritis": ["Inflammation of the dental alveolus in the jaw."], "pachymeningitis": ["Inflammation of the dura mater of the brain."], "perimeningitis": ["Inflammation of the dura mater of the brain."], "pro-Russian": ["In favor of Russia.", "Person favorable to Russia."], "anti-Russian": ["Hostile to Russia.", "Person hostile to Russia."], "Russophile": ["Liking Russians, the Russian culture or the Russian language.", "Person who likes Russians, the Russian culture or the Russian language."], "Russophobe": ["Hating Russians, the Russian culture or the Russian language.", "Person who hates Russians, the Russian culture or the Russian language."], "Russophobic": ["Hating Russians, the Russian culture or the Russian language."], "Russophobian": ["Hating Russians, the Russian culture or the Russian language."], "Russophobiac": ["Hating Russians, the Russian culture or the Russian language."], "Russophobia": ["The fear or hate of Russia or its culture."], "Russophilia": ["The love of Russia, the Russian culture or the Russian language."], "pyelitis": ["Inflammation of the renal pelvis."], "rhinopharyngitis": ["Inflammation of nose and pharynx."], "vulvovaginitis": ["Inflammation of the vagina and vulva."], "-itis": ["Suffix denoting diseases characterized by inflammation.", "Used to form the names of various fictitious afflictions or diseases."], "telephonitis": ["A fictitious disease that is characterized by excessive talking on the phone."], "financial disorder": ["Disorder in an administration, an enterprise or a country due to a poor management of finances."], "financial mess": ["Disorder in an administration, an enterprise or a country due to a poor management of finances."], "raita": ["A Pakistani and Indian condiment based on yogurt and used as a sauce or dip."], "raitha": ["A Pakistani and Indian condiment based on yogurt and used as a sauce or dip."], "kulfi": ["A popular flavored frozen dessert made from milk which originated in India."], "qulfi": ["A popular flavored frozen dessert made from milk which originated in India."], "chicken tikka masala": ["A curry dish in which roasted chicken chunks (tikka) are served in a rich red, creamy, lightly spiced, tomato-based sauce."], "bath salts": ["Nice-smelling salts used to bring a nice odor to the bathroom when used in a bath or to relax and refresh an individual."], "tandoor": ["A cylindrical clay oven used for cooking and baking in the Middle East and Asia, especially in India and Pakistan."], "naan": ["A leavened, oven-baked flatbread that is popular in South Asia."], "Istanbulite": ["A person from or living in Istanbul."], "Stambul": ["Largest city in Turkey."], "Stamboul": ["Largest city in Turkey."], "headrace sluice gate": ["Opening through which headrace water flows in a water wheel, and that can be closed when the wheel is not used."], "locked up": ["Put in jail."], "jailed": ["Put in jail."], "imprisoned": ["Put in jail."], "captive": ["Put in jail."], "reread": ["Read another time, read again."], "get fucked": ["To ask in an insulting way to another person to go away from you, to stop contact with to stop bothering the person to who the insult is addressed."], "go fuck yourself": ["To ask in an insulting way to another person to go away from you, to stop contact with to stop bothering the person to who the insult is addressed."], "get lost": ["To ask in an insulting way to another person to go away from you, to stop contact with to stop bothering the person to who the insult is addressed.", "To end up in an unknown place, to be not to be found again, to get lost, to irrecoverably slip away."], "go to bath": ["To ask in an insulting way to another person to go away from you, to stop contact with to stop bothering the person to who the insult is addressed."], "go to Jericho": ["To ask in an insulting way to another person to go away from you, to stop contact with to stop bothering the person to who the insult is addressed."], "go to Halifax": ["To ask in an insulting way to another person to go away from you, to stop contact with to stop bothering the person to who the insult is addressed."], "go to hell": ["To ask in an insulting way to another person to go away from you, to stop contact with to stop bothering the person to who the insult is addressed."], "mint syrup": ["Syrup made of mint."], "puck": ["A disk used in various games serving the same functions as a ball does in ball games."], "hand brake": ["A latching brake used to keep the car stationary."], "emergency brake": ["A latching brake used to keep the car stationary."], "e-brake": ["A latching brake used to keep the car stationary."], "parking brake": ["A latching brake used to keep the car stationary."], "handbrake": ["A latching brake used to keep the car stationary."], "handbrake turn": ["A driving technique allowing to perform tight turns by pulling the handbrake while turning."], "e-brake turn": ["A driving technique allowing to perform tight turns by pulling the handbrake while turning."], "hand brake turn": ["A driving technique allowing to perform tight turns by pulling the handbrake while turning."], "call girl": ["A female prostitute who can be hired by telephone."], "call boy": ["A male prostitute who can be hired by telephone."], "prostitute oneself": ["To offer sexual services in exchange for money."], "fornicate": ["To have sexual intercourse outside of marriage, especially with varying partners."], "squat": ["To sit in a crouching position with knees bent and the buttocks on or near the heels.", "To move into a crouching position with knees bent and the buttocks on or near the heels."], "squat down": ["To move into a crouching position with knees bent and the buttocks on or near the heels."], "crouch down": ["To move into a crouching position with knees bent and the buttocks on or near the heels."], "hunker down": ["To move into a crouching position with knees bent and the buttocks on or near the heels."], "whorish": ["Characteristic of a whore."], "whorishly": ["In a whorish manner."], "red-eye": ["A flight that departs at night.", "An effect in photography where the pupils of a subject appear red when a flash is used."], "red-eye flight": ["A flight that departs at night."], "night flight": ["A flight that departs at night."], "night-flight": ["A flight that departs at night."], "Kinshasan": ["Person living in, or originating from Kinshasa.", "Of or relating to Kinshasa."], "grief": ["Something that causes great unhappiness."], "earthen": ["Made of soil."], "mimetic": ["Characterized by or of the nature of or using mimesis.", "Exhibiting mimicry."], "Pan-Arabic": ["Relating to all the Arabic countries."], "koala": ["A thickset arboreal marsupial herbivore native to Australia."], "earache": ["Pain in the ear."], "earpiece": ["Electro-acoustic transducer for converting electric signals into sounds; it is held over or inserted into the ear."], "earphone": ["Electro-acoustic transducer for converting electric signals into sounds; it is held over or inserted into the ear."], "headphone": ["Electro-acoustic transducer for converting electric signals into sounds; it is held over or inserted into the ear."], "earthwork": ["The operation connected with excavations and embankments of earth in preparing foundations of buildings, in constructing canals, railroads, etc."], "wagtail": ["Any bird of the Motacilla and Dendronanthus genera, so named from their constant wagging of the tail."], "differ": ["To be of different opinions."], "Helicobacter pylori": ["A Gram-negative, microaerophilic bacterium that can inhabit various areas of the stomach and duodenum. It causes a chronic low-level inflammation of the stomach lining and is strongly linked to the development of duodenal and gastric ulcers and stomach cancer. (source: Wikipedia)"], "proinflammatory": ["Capable of promoting inflammation."], "placebo-controlled": ["Related to a way of testing a medical therapy in which, in addition to a group of subjects that receives the treatment to be evaluated, a separate control group receives a sham \"placebo\" treatment which is specifically designed to have no real effect."], "hypothesize": ["To believe especially on uncertain or tentative grounds."], "speculate": ["To believe especially on uncertain or tentative grounds."], "theorize": ["To believe especially on uncertain or tentative grounds.", "To formulate theories."], "theorise": ["To believe especially on uncertain or tentative grounds.", "To formulate theories."], "hypothesise": ["To believe especially on uncertain or tentative grounds."], "hypothecate": ["To believe especially on uncertain or tentative grounds."], "tyrannicide": ["The killing of a tyran."], "adsorb": ["To accumulate on a surface."], "agnostic": ["A person who holds to a form of agnosticism, especially uncertainty of the existence of a deity."], "vasospasm": ["A condition in which blood vessels spasm, leading to vasoconstriction."], "audiometer": ["An instrument which is used to determine the acuity of hearing."], "graphology": ["The study of handwriting, especially as a means of analyzing character.", "The study of handwriting, especially as a means of analyzing character."], "draught": ["A current of air.", "The act of pulling something along a surface using motive power."], "healthy diet": ["A diet that helps maintain or improve health."], "dietitian": ["An expert in food and nutrition."], "health professional": ["An organization or person who delivers proper health care in a systematic way professionally to any individual in need of health care services."], "scurvy": ["A disease resulting from a deficiency of vitamin C, which is required for the synthesis of collagen in humans."], "ecumene": ["The inhabited parts of the world."], "oecumene": ["The inhabited parts of the world."], "electroshock": ["A psychiatric treatment in which seizures are electrically induced in anesthetized patients for therapeutic effect."], "electroconvulsive therapy": ["A psychiatric treatment in which seizures are electrically induced in anesthetized patients for therapeutic effect."], "impressionism": ["A movement in art characterized by visible brush strokes, ordinary subject matters, and an emphasis on light and its changing qualities."], "beriberi": ["A nervous system ailment caused by a deficiency of thiamine (vitamin B1) in the diet."], "legitimately": ["In a legitimate manner."], "properly": ["In a legitimate manner."], "loan": ["A sum of money or other valuables or consideration which an individual, group or other legal entity borrows from another individual, group or legal entity (the latter often being a financial institution) with the condition that it be returned or repaid at a later date."], "laughter": ["The sound of laughing."], "beri-beri": ["A nervous system ailment caused by a deficiency of thiamine (vitamin B1) in the diet."], "thiamin": ["A B vitamin found in meat and cereal grains involved in many cellular processes."], "thiamine": ["A B vitamin found in meat and cereal grains involved in many cellular processes."], "vitamin B1": ["A B vitamin found in meat and cereal grains involved in many cellular processes."], "police car": ["A car used by police."], "confectioner's sugar": ["Very finely ground sugar."], "icing sugar": ["Very finely ground sugar."], "feticide": ["The killing of a fetus."], "foeticide": ["The killing of a fetus."], "penial": ["Of or relating to the penis."], "fine sugar": ["Very fine sugar crystals."], "vacuum-packed": ["Packed in an airtight container from which the air has been removed."], "vacuum-sealed": ["Packed in an airtight container from which the air has been removed."], "vacuum packing": ["A method of storing and preserving food by putting it in an airtight container and removing the air."], "Passover": ["A Jewish and Samaritan holy day and festival commemorating the biblical event of Hebrews' escape from enslavement in Egypt."], "lengthwise": ["In the long direction of an oblong object."], "lengthways": ["In the long direction of an oblong object."], "lexical": ["Concerning the vocabulary, words or morphemes of a language."], "legitimacy": ["The quality of being legitimate or valid."], "liquefaction": ["Process of, or state of having been, made liquid."], "laminate": ["To assemble from thin sheets glued together.", "Material formed of thin sheets glued together."], "lilac": ["A large shrub of the genus Syringa bearing white, pale pink or purple flowers.", "A pale purple colour, the colour of some lilac flowers.", "Having a pale purple colour."], "malevolence": ["Hostile attitude or feeling."], "nutritious": ["Providing nutrients."], "liege": ["A person who held land from a feudal lord and received protection in return for homage and allegiance."], "liegeman": ["A person who held land from a feudal lord and received protection in return for homage and allegiance."], "liege subject": ["A person who held land from a feudal lord and received protection in return for homage and allegiance."], "feudatory": ["A person who held land from a feudal lord and received protection in return for homage and allegiance."], "fiord": ["A long, narrow arm of the sea, usually formed by entrance of the sea into a deep glacial trough."], "domestic violence": ["Physical and psychological violence between people living in a household, for example partners, spouses, parents and children."], "domestic abuse": ["Physical and psychological violence between people living in a household, for example partners, spouses, parents and children."], "spousal abuse": ["Physical and psychological violence between spouses."], "spousal rape": ["Non-consensual sex in which the perpetrator is the victim's spouse."], "marital rape": ["Non-consensual sex in which the perpetrator is the victim's spouse."], "trimester": ["A period of three months.", "One of the three academic terms, each comprising one-third of an academic year.", "One of the three divisions of pregnancy, each lasting three months."], "credo": ["Any system of principles or beliefs.", "The creed, as sung or read in the Roman Catholic church."], "religious doctrine": ["The written body of teachings of a religious group that are generally accepted by that group."], "church doctrine": ["The written body of teachings of a religious group that are generally accepted by that group."], "gospel": ["The written body of teachings of a religious group that are generally accepted by that group.", "A religious book that describes the life of Jesus of Nazareth."], "peregrine": ["a cosmopolitan bird of prey in the family Falconidae."], "Latgalian": ["A Baltic language spoken in the eastern part of Latvia known as Latgale.", "A person of Latgalian nationality."], "occupant": ["An owner or tenant of a property."], "resident": ["A human, officially being inhabitant of certain area inside well defined, and precise, borders - usually seen from a standpoint of census, government, register, etc.", "An owner or tenant of a property."], "obsolescence": ["The process of becoming obsolete; falling into disuse or becoming out of date."], "odontologist": ["A medical specialist who deals with teeth."], "scapegoat": ["Someone who is punished for the errors of others.", "To punish someone for the errors of someone else."], "clutch pedal": ["A pedal in a car used to engage or disengage the clutch."], "child soldier": ["Any person under the age of 18 who is a member of or attached to an armed force or group."], "rear mirror": ["A type of mirror found on automobiles and other vehicles, designed to allow the driver to see an area behind the vehicle."], "rear view mirror": ["A type of mirror found on automobiles and other vehicles, designed to allow the driver to see an area behind the vehicle."], "rearview mirror": ["A type of mirror found on automobiles and other vehicles, designed to allow the driver to see an area behind the vehicle."], "inside rearview mirror": ["A type of mirror located inside an automobile and another vehicle, designed to allow the driver to see the area behind the vehicle through the back window."], "inside rear-view mirror": ["A type of mirror located inside an automobile and another vehicle, designed to allow the driver to see the area behind the vehicle through the back window."], "inside rear view mirror": ["A type of mirror located inside an automobile and another vehicle, designed to allow the driver to see the area behind the vehicle through the back window."], "inside mirror": ["A type of mirror located inside an automobile and another vehicle, designed to allow the driver to see the area behind the vehicle through the back window."], "interior mirror": ["A type of mirror located inside an automobile and another vehicle, designed to allow the driver to see the area behind the vehicle through the back window."], "interior rearview mirror": ["A type of mirror located inside an automobile and another vehicle, designed to allow the driver to see the area behind the vehicle through the back window."], "interior rear-view mirror": ["A type of mirror located inside an automobile and another vehicle, designed to allow the driver to see the area behind the vehicle through the back window."], "interior rear view mirror": ["A type of mirror located inside an automobile and another vehicle, designed to allow the driver to see the area behind the vehicle through the back window."], "side-view mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "wing mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "door mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "side mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "exterior mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "exterior rear view mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "outside mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "outside rear view mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "exterior rearview mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "exterior rear-view mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "outside rearview mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "outside rear-view mirror": ["A type of mirror located on the exterior of an automobile or another vehicle, on the left or on the right, designed to allow the driver to see an area behind and to the sides of the vehicle."], "segregation": ["The act of segregating or sequestering.", "A social system that provides separate facilities for minority groups.", "Separation from a mass, and gathering about centers or into cavities at hand through cohesive attraction or the crystallizing process."], "separatism": ["A social system that provides separate facilities for minority groups.", "An advocacy of separation, especially ecclesiastical or political separation."], "lighthouse": ["A building designed to emit light as an aid to ship navigation."], "penis envy": ["In Freudian psychoanalysis the assumption that it is a defining moment for girls when they realize that they don't have a penis and that they envy boys for it."], "wry": ["Dryly humorous with an undertone of regret."], "castration anxiety": ["In Freudian psychoanalysis the fear of losing one's penis."], "triumvirate": ["An association of three individuals who hold the political power."], "triumvir": ["One of the three members of a triumvirate."], "pedophile": ["A person who is sexually attracted to children."], "paedophile": ["A person who is sexually attracted to children."], "p\u00e6dophile": ["A person who is sexually attracted to children."], "pedophiliac": ["A person who is sexually attracted to children.", "Having a sexual preference for children."], "paedophiliac": ["A person who is sexually attracted to children.", "Having a sexual preference for children."], "p\u00e6dophiliac": ["A person who is sexually attracted to children.", "Having a sexual preference for children."], "childlover": ["A person who is sexually attracted to children."], "paedophilic": ["Having a sexual preference for children."], "p\u00e6dophilic": ["Having a sexual preference for children."], "pedophilic": ["Having a sexual preference for children."], "nephology": ["A branch of meteorology that studies clouds and cloud formation."], "nephologist": ["A scientist who studies clouds and cloud formation."], "vernissage": ["The start of an art exhibition."], "waystation": ["A small railway station between the principal stations or a station where the train stops only on a signal."], "way station": ["A small railway station between the principal stations or a station where the train stops only on a signal."], "stopover": ["A small railway station between the principal stations or a station where the train stops only on a signal."], "whistle stop": ["A small railway station between the principal stations or a station where the train stops only on a signal."], "staging post": ["A small railway station between the principal stations or a station where the train stops only on a signal."], "layover": ["A small railway station between the principal stations or a station where the train stops only on a signal."], "zonular": ["Pertaining to a zonule or zonules."], "zonule": ["A little zone, or girdle."], "objectivism": ["One of several doctrines that holds that all of reality is objective and exists outside of the mind."], "outrage": ["An excessively violent or vicious attack.", "A feeling of righteous anger."], "nimbus": ["A solid disk of light or gold.", "A gray rain cloud."], "magpie": ["One of several kinds of bird in the family Corvidae, especially Pica pica."], "mahogany": ["Numerous varieties of dark-coloured hardwood."], "manicure": ["Cosmetic treatment of the hands and fingernails.", "A person who performs cosmetic treatment of hands and fingernails.", "To take care of the hands and fingernails."], "Malawian": ["A person who originates from or lives in Malawi."], "headlamp": ["A lamp attached to a vehicle used to illuminate the road in case of low visibility."], "headlight": ["A lamp attached to a vehicle used to illuminate the road in case of low visibility."], "indoor antenna": ["A type of radio or TV antenna designed to be placed indoors."], "indoor aerial": ["A type of radio or TV antenna designed to be placed indoors."], "internal antenna": ["A type of radio or TV antenna designed to be placed indoors."], "internal aerial": ["A type of radio or TV antenna designed to be placed indoors."], "descendants": ["All of the offspring of a given progenitor."], "mattress": ["A pad on which a person can recline and sleep."], "metallurgical": ["Of or relating to metallurgy, the study of metals and their properties."], "melancholic": ["Filled with or affected by melancholy, great sadness or depression."], "foodborne illness": ["An illness resulting from the consumption of contaminated food."], "foodborne disease": ["An illness resulting from the consumption of contaminated food."], "food poisoning": ["An illness resulting from the consumption of contaminated food."], "cephalalgia": ["A common (and sometimes acute) pain of the head and head area."], "pseudopregnancy": ["The appearance of signs and symptoms associated with pregnancy when no real pregnancy exists."], "pseudocyesis": ["The appearance of signs and symptoms associated with pregnancy when no real pregnancy exists."], "hysterical pregnancy": ["The appearance of signs and symptoms associated with pregnancy when no real pregnancy exists."], "false pregnancy": ["The appearance of signs and symptoms associated with pregnancy when no real pregnancy exists."], "mammoth": ["A large, hairy, extinct elephant-like mammal."], "mongrel": ["An animal of mixed kind or uncertain origin, especially a dog."], "mutt": ["An animal of mixed kind or uncertain origin, especially a dog."], "propitiate": ["To bring to a state of peace, quiet, ease, calm, or contentment."], "acerb": ["Being harsh or corrosive in tone."], "acerbic": ["Being harsh or corrosive in tone."], "blistering": ["Being harsh or corrosive in tone."], "sulfurous": ["Being harsh or corrosive in tone."], "sulphurous": ["Being harsh or corrosive in tone."], "virulent": ["Being harsh or corrosive in tone."], "aegis": ["Kindly endorsement and guidance.", "A armor plate that protects the chest; the front part of a cuirass."], "auspices": ["Kindly endorsement and guidance."], "egis": ["A armor plate that protects the chest; the front part of a cuirass."], "pernicious": ["Working or spreading in a hidden and usually injurious way.", "Exceedingly harmful."], "subtle": ["Working or spreading in a hidden and usually injurious way."], "baneful": ["Exceedingly harmful."], "pestilent": ["Exceedingly harmful."], "indignation": ["A feeling of righteous anger."], "monolingual": ["Knowing, or using a single language."], "magnetometer": ["An instrument used to measure the intensity and direction of a magnetic field."], "margarine": ["A spread, manufactured from a blend of vegetable oils mostly used as a substitute for butter."], "metaphysical": ["Of or pertaining to metaphysics."], "counterattack": ["An attack made in response to an attack by the opponents."], "counter-attack": ["An attack made in response to an attack by the opponents."], "corn oil": ["Oil extracted from the germ of corn."], "mascara": ["A cosmetic used to darken and thicken the eyelashes."], "sated": ["Having eaten enough."], "satiated": ["Having eaten enough."], "pole corn": ["An ear of sweetcorn that is cooked and served whole and eaten from its cob (usually with butter)."], "cornstick": ["An ear of sweetcorn that is cooked and served whole and eaten from its cob (usually with butter)."], "sweet pole": ["An ear of sweetcorn that is cooked and served whole and eaten from its cob (usually with butter)."], "butter-pop": ["An ear of sweetcorn that is cooked and served whole and eaten from its cob (usually with butter)."], "long maize": ["An ear of sweetcorn that is cooked and served whole and eaten from its cob (usually with butter)."], "myxomatosis": ["A disease which affects rabbits caused by the Myxoma virus."], "corroboration": ["That which corroborates."], "kike": ["A follower of Judaism."], "hymie": ["A follower of Judaism."], "sheeny": ["A follower of Judaism."], "yid": ["A follower of Judaism."], "Israelite": ["A follower of Judaism."], "mendacious": ["Given to lying.", "Intentionally untrue."], "eat one's fill": ["To eat until one is not hungry anymore."], "cerumenolysis": ["The process of softening earwax for removal."], "cerumenolytic": ["A chemical that softens or removes earwax.", "Of or relating to cerumenolysis."], "actinometer": ["Instrument that measures the heating power of radiation, especially solar radiation."], "actinometry": ["The measurement of the heating power of electromagnetic radiation, especially that of solar radiation."], "actinometric": ["Of or pertaining to actinometry.", "Measured using an actinometer."], "Neoplatonism": ["A school of religious and mystical philosophy founded by Plotinus in the 3rd century that is based on the teachings of Plato and earlier Platonists."], "Neo-Platonism": ["A school of religious and mystical philosophy founded by Plotinus in the 3rd century that is based on the teachings of Plato and earlier Platonists."], "jig": ["A fishing lure consisting of a lead sinker surrounded with hooks."], "jigging": ["The practice of fishing with a jig."], "jigger": ["A person who fishes with a jig."], "tea wagon": ["Small table on wheels used to transport and put down dishes and food."], "teacart": ["Small table on wheels used to transport and put down dishes and food."], "tea trolley": ["Small table on wheels used to transport and put down dishes and food."], "tea cart": ["Small table on wheels used to transport and put down dishes and food."], "trolley table": ["Small table on wheels used to transport and put down dishes and food."], "shoot oneself": ["To kill oneself with a gun."], "blow one's brains own": ["To kill oneself with a gun."], "poison oneself": ["To kill oneself with poison."], "hang oneself": ["To kill oneself by hanging."], "drown oneself": ["To kill oneself by drowning."], "xylography": ["The art of carving images into wood and creating prints from it."], "woodcut": ["The art of carving images into wood and creating prints from it.", "A print that was made using the woodcut technique."], "forklift": ["A truck used to lift and transport heavy materials with a fork."], "forklift truck": ["A truck used to lift and transport heavy materials with a fork."], "lift truck": ["A truck used to lift and transport heavy materials with a fork."], "high/low": ["A truck used to lift and transport heavy materials with a fork."], "stacker-truck": ["A truck used to lift and transport heavy materials with a fork."], "trailer loader": ["A truck used to lift and transport heavy materials with a fork."], "sideloader": ["A truck used to lift and transport heavy materials with a fork."], "fork truck": ["A truck used to lift and transport heavy materials with a fork."], "tow-motor": ["A truck used to lift and transport heavy materials with a fork."], "fork hoist": ["A truck used to lift and transport heavy materials with a fork."], "orphanage": ["Institution where orphaned children are raised and cared for."], "proposal": ["The act of asking a person for their hand in marriage."], "proposal of marriage": ["The act of asking a person for their hand in marriage."], "pop the question": ["To ask for a person's hand in marriage."], "go bald": ["To lose one's hair on the head."], "centrifuge": ["A device in which a mixture of denser and lighter materials (normally dispersed in a liquid) is separated by being spun about a central axis at high speed."], "carnival": ["A festive season which occurs immediately before Lent."], "olfactometer": ["Instrument for measuring the sensitivity of the sense of smell."], "olivine": ["A yellow to yellow-green mineral which is one of the most common minerals on Earth."], "olivine group": ["A group of minerals in the class of the silicates including tephroite, monticellite and kirschsteinite."], "Lent": ["Period of penitence for Christians before Easter."], "olivary": ["Shaped like an olive."], "egg-shaped": ["Shaped like an egg."], "ovate": ["Shaped like an egg."], "ovaliform": ["Shaped like an egg."], "oliguria": ["The decreased production of urine."], "Augsburg": ["City in the southwest of Bavaria, Germany."], "marker lamp": ["A lighting device used on vehicles, in particular cars, to indicate its presence to the other drivers, at night or when the visibility is low."], "marker light": ["A lighting device used on vehicles, in particular cars, to indicate its presence to the other drivers, at night or when the visibility is low."], "rivalry": ["The relationship between two or more rivals who compete with each other."], "rudimentary": ["With less than, or only the minimum."], "restless": ["Unable to be still or quiet."], "medication": ["A substance which specifically promotes healing.", "A medicine, or all the medicines regularly taken by a patient."], "cash on delivery": ["A transaction in which goods are paid for in full in cash or by certified check immediately when they are received by the buyer."], "collect on delivery": ["A transaction in which goods are paid for in full in cash or by certified check immediately when they are received by the buyer."], "consomm\u00e9": ["A clear, originally meat, soup."], "fighter": ["A person who fights or struggles using physical force or weapon."], "vasoconstriction": ["The narrowing of the blood vessels resulting from contraction of the muscular wall of the vessels, particularly the large arteries, small arterioles and veins."], "ravioli": ["Small square parcels of pasta filled with meat, cheese, spinach etc."], "rubble": ["The broken remains of an object, usually rock or masonry."], "revisionism": ["The advocacy of a revision of some accepted theory, doctrine or a view of historical events."], "requisition": ["A request for something, especially a formal written request on a pre-printed form.", "To demand something, especially for a military need of personnel, supplies or transport."], "kwashiorkor": ["An acute form of childhood protein-energy malnutrition characterized by edema, irritability, anorexia, ulcerating dermatoses, and an enlarged liver with fatty infiltrates (source: Wikipedia)."], "osteoporosis": ["A disease of bone that leads to an increased risk of fracture."], "biochemical": ["Of or relating to biochemistry.", "A chemical substance derived from a biological source."], "vitamin B2": ["An easily absorbed micronutrient with a key role in maintaining health in humans and animals."], "riboflavin": ["An easily absorbed micronutrient with a key role in maintaining health in humans and animals."], "vitamin B3": ["A colourless, water-soluble solid, organic compound with the formula C5H4NCO2H. It's a derivative of pyridine, with a carboxyl group (COOH) at the 3-position."], "niacin": ["A colourless, water-soluble solid, organic compound with the formula C5H4NCO2H. It's a derivative of pyridine, with a carboxyl group (COOH) at the 3-position."], "nicotinic acid": ["A colourless, water-soluble solid, organic compound with the formula C5H4NCO2H. It's a derivative of pyridine, with a carboxyl group (COOH) at the 3-position."], "vitamin B5": ["A water-soluble vitamin required to sustain life, critical in the metabolism and synthesis of carbohydrates, proteins, and fats."], "pantothenic acid": ["A water-soluble vitamin required to sustain life, critical in the metabolism and synthesis of carbohydrates, proteins, and fats."], "mercurial": ["Liable to sudden unpredictable change."], "quicksilver": ["Liable to sudden unpredictable change."], "stamina": ["Enduring strength and energy."], "nutriment": ["Chemical elements which are involved in the construction of living tissue and which are needed by both plant and animal. The most important in terms of bulk are carbon, hydrogen and oxygen, with other essential ones including nitrogen, potassium, calcium, sulphur and phosphorus."], "nourishment": ["Chemical elements which are involved in the construction of living tissue and which are needed by both plant and animal. The most important in terms of bulk are carbon, hydrogen and oxygen, with other essential ones including nitrogen, potassium, calcium, sulphur and phosphorus."], "sustenance": ["Chemical elements which are involved in the construction of living tissue and which are needed by both plant and animal. The most important in terms of bulk are carbon, hydrogen and oxygen, with other essential ones including nitrogen, potassium, calcium, sulphur and phosphorus."], "oratory": ["The art of public speaking, especially in a formal, expressive, or forceful manner."], "oddity": ["An odd or strange thing."], "ovation": ["Prolonged enthusiastic applause."], "splenic": ["Of or relating to the spleen."], "splenectomy": ["A surgical procedure that partially or completely removes the spleen."], "thicket": ["A dense, but generally small, growth of shrubs, bushes or small trees."], "copse": ["A dense, but generally small, growth of shrubs, bushes or small trees."], "tonnage": ["The capacity of a ship's hold etc in units of 100 cubic feet."], "trade balance": ["The difference between the monetary value of exports and imports of output in an economy over a certain period."], "balance of trade": ["The difference between the monetary value of exports and imports of output in an economy over a certain period."], "powerless": ["Lacking legal authority.", "Lacking sufficient power or strength."], "wrist watch": ["A portable or wearable timepiece worn connected to a band around the wrist."], "wristwatch": ["A portable or wearable timepiece worn connected to a band around the wrist."], "hindsight": ["Understanding the nature of an event after it has happened."], "rampage": ["Violently angry and destructive behavior.", "To act violently, recklessly, or destructively."], "violent disorder": ["Violently angry and destructive behavior."], "Aramaic (Official, Hebrew)": ["Official Aramaic language written in the Hebrew script."], "Aramaic (Jewish Palestinian)": ["A Western Aramaic language spoken by the Jews in Palestine in the early first millennium."], "Jewish Palestinian Aramaic": ["A Western Aramaic language spoken by the Jews in Palestine in the early first millennium."], "Galilean Aramaic": ["A Western Aramaic language spoken by the Jews in Palestine in the early first millennium."], "macronutrient": ["A substance needed in large quantities for normal body function."], "Aramaic (Jewish Babylonian)": ["The form of Middle Aramaic used by Jewish writers in Babylonia between the 4th century and the 11th century CE."], "videoconference": ["A conference held by video link. An arranged video phone call between more than two parties."], "video conference": ["A conference held by video link. An arranged video phone call between more than two parties."], "vicar": ["In the Church of England, the priest of a parish, receiving a salary or stipend but not tithes.", "In the Roman Catholic and some other churches, a cleric acting as local representative of a higher ranking member of the clergy."], "omen": ["A sign that is supposed to reveal whether the future will be favourable or not."], "augury": ["A sign that is supposed to reveal whether the future will be favourable or not."], "Ugandan": ["Someone who is from or is living in Uganda.", "Of or relating to Uganda or the Ugandan people."], "nightstick": ["A short heavy club with a rounded head used as a weapon."], "billy": ["A short heavy club with a rounded head used as a weapon."], "billystick": ["A short heavy club with a rounded head used as a weapon."], "billy club": ["A short heavy club with a rounded head used as a weapon."], "pneumonia": ["A respiratory disease characterized by inflammation of the lung parenchyma (excluding the bronchi) with congestion caused by viruses or bacteria or irritants."], "unequal": ["Having a different value."], "rudder": ["An underwater vane used to steer a vessel. The rudder is controlled by means of a wheel, tiller or other apparatus."], "dungeon": ["An underground prison or vault."], "RNA synthesis": ["The process of creating an equivalent RNA copy of a sequence of DNA."], "anthropometry": ["The measurement and study of the human body and its parts and capacities."], "anthropometric": ["Of or relating to anthropometry."], "aortic": ["Of or relating to the aorta."], "apical": ["Situated at an apex."], "arterial": ["Of or involving or contained in the arteries."], "maternal mortality": ["The death of a woman during or shortly after a pregnancy."], "maternal death": ["The death of a woman during or shortly after a pregnancy."], "obstetrical death": ["The death of a woman during or shortly after a pregnancy."], "bantam": ["Very small in size."], "lilliputian": ["Very small in size."], "petite": ["Very small in size."], "flyspeck": ["Very small in size."], "cupola": ["Common structural element of architecture that resembles the hollow upper half of a sphere."], "grain of maize": ["The edible part of a corn plant."], "maize kernel": ["The edible part of a corn plant."], "Eyjafjallaj\u00f6kull": ["A glacier in Iceland with a volcano underneath."], "gadfly": ["A persistently annoying person.", "Any of various large flies that annoy livestock."], "blighter": ["A persistently annoying person."], "pesterer": ["A persistently annoying person."], "mendaciously": ["In a mendacious and untruthful manner."], "untruthfully": ["In a mendacious and untruthful manner."], "desultory": ["Marked by lack of definite plan or regularity or purpose; jumping from one thing to another."], "overbold": ["Not showing due respect."], "saucy": ["Not showing due respect."], "sassy": ["Not showing due respect."], "devious": ["Not expressed directly, by opposition to the accepted or proper way.", "Deviating from a straight course.", "Characterized by insincerity or deceit."], "circuitous": ["Deviating from a straight course."], "roundabout": ["A type of circular intersection in which traffic must travel in one direction around a central island.", "Deviating from a straight course."], "shifty": ["Characterized by insincerity or deceit."], "hairdo": ["A style of fashion of wearing the hair.", "The style in which a person's hair is cut, arranged, and worn."], "hairstyle": ["A style of fashion of wearing the hair."], "overnutrition": ["The intake of more food than the body needs."], "overeating": ["The intake of more food than the body needs."], "bombardon": ["A brass instrument, the bass version of the tuba."], "consentaneous": ["Based on complete assent or agreement."], "consentient": ["Based on complete assent or agreement."], "miscegenation": ["Reproduction by parents of different races (especially by white and non-white persons)."], "crossbreeding": ["Reproduction by parents of different races (especially by white and non-white persons)."], "interbreeding": ["Reproduction by parents of different races (especially by white and non-white persons)."], "portent": ["A sign that is supposed to reveal whether the future will be favourable or not."], "biotype": ["A group of organisms having the same specific genotype."], "bigamist": ["Someone who has two spouses simultaneously."], "blastoderm": ["The germination point in an ovum from whence the embryo develops."], "haircut": ["The way someone's hair is cut."], "biased": ["Favoring one person or side over another.", "Excessively devoted to one faction.", "Exhibiting prejudice or bias."], "colored": ["Favoring one person or side over another."], "coloured": ["Favoring one person or side over another."], "one-sided": ["Favoring one person or side over another.", "Excessively devoted to one faction."], "slanted": ["Favoring one person or side over another."], "incurable": ["(Of a disease) Impossible to cure."], "uncurable": ["(Of a disease) Impossible to cure."], "immedicable": ["(Of a disease) Impossible to cure."], "healable": ["Capable of being cured."], "Capaccio-Paestum": ["Town in the province of Salerno, region Campania, Italy."], "linoleum": ["An inexpensive waterproof covering used especially for floors, made from solidified linseed oil over a burlap or canvas backing, or from its modern replacement, polyvinyl chloride."], "epistemological": ["Of or relating to epistemology."], "epistemic": ["Of or relating to epistemology."], "anti-intellectual": ["Smug, ignorant, indifferent or hostile to artistic and cultural values."], "isomorphic": ["Having similar appearance but genetically different."], "isomorphous": ["Having similar appearance but genetically different."], "-al": ["Forming adjectives indicating membership in or relationship to the meaning of the root word.", "Forming nouns, especially of verbal action.", "(chemistry) the IUPAC nomenclature used in organic chemistry to form names of aldehydes containing the -(CO)H group. It was extracted from the word \"aldehyde\"."], "perineal tear": ["The tearing of the tissue between vulva and anus during childbirth."], "perineal rupture": ["The tearing of the tissue between vulva and anus during childbirth."], "perineal laceration": ["The tearing of the tissue between vulva and anus during childbirth."], "perineal": ["Of or relating to the perineum."], "C-section": ["A surgical procedure in which incisions are made through a mother's abdomen and uterus to deliver one or more babies."], "Caesarean section": ["A surgical procedure in which incisions are made through a mother's abdomen and uterus to deliver one or more babies."], "Caesar": ["A surgical procedure in which incisions are made through a mother's abdomen and uterus to deliver one or more babies.", "A male first name.", "An ancient Roman family name, notably that of the Roman Emperor Iulius Caesar."], "-algia": ["Forming adjectives indicating a relation to pain or suffering."], "-algy": ["Forming adjectives indicating a relation to pain or suffering."], "-ane": ["Used to form the names of the saturated hydrocarbons.", "A simple binary compound of hydrogen and a nonmetal or metalloid."], "-ase": ["Used in biology and chemistry to show that a molecule is an enzyme."], "-ate": ["Used to form names of salts or esters derived from an acid."], "-bar": ["Used to indicate heaviness and atmospheric pressure."], "greater bean": ["An annual plant native to East Asia that is widely cultivated for its fruit."], "soy": ["An annual plant native to East Asia that is widely cultivated for its fruit."], "soy bean": ["The edible seed of the soybean plant which contains a lot of protein."], "soymilk": ["A drink made of soybeans."], "soybean milk": ["A drink made of soybeans."], "soy juice": ["A drink made of soybeans."], "soy drink": ["A drink made of soybeans."], "soy beverage": ["A drink made of soybeans."], "infuriate": ["To make furious."], "incense": ["To make furious."], "flippancy": ["Inappropriate levity."], "light-mindedness": ["Inappropriate levity."], "mundane": ["Occurring or returning in the ordinary course of events."], "routine": ["Occurring or returning in the ordinary course of events."], "unremarkable": ["Occurring or returning in the ordinary course of events."], "workaday": ["Occurring or returning in the ordinary course of events."], "ministration": ["Action given to provide assistance."], "cassation": ["The abrogation of a law by a higher authority."], "annulment": ["The abrogation of a law by a higher authority."], "cavatina": ["Originally a short song of simple character, without a second strain or any repetition of the air"], "prewashed": ["Already washed."], "pre-washed": ["Already washed."], "downshift": ["To change into a lower gear (in motor vehicles)."], "gear down": ["To change into a lower gear (in motor vehicles)."], "shift down": ["To change into a lower gear (in motor vehicles)."], "upshift": ["To change into a higher gear (in motor vehicles)."], "shift up": ["To change into a higher gear (in motor vehicles)."], "euphonium": ["A conical-bore, tenor-voiced brass instrument."], "baritone horn": ["A cylindrical bore instrument, member of the brass instrument family, pitched in B\u266d."], "kinako": ["A product commonly used in Japanese cuisine made of toasted soybeans ground into powder."], "soybean flour": ["A product commonly used in Japanese cuisine made of toasted soybeans ground into powder."], "shylock": ["A merciless usurer in a play by Shakespeare.", "Someone who lends money at excessive rates of interest."], "Shylock": ["A merciless usurer in a play by Shakespeare."], "usurer": ["Someone who lends money at excessive rates of interest."], "loan shark": ["Someone who lends money at excessive rates of interest."], "moneylender": ["Someone who lends money at excessive rates of interest."], "Cheddar cheese": ["A pale yellow to orange, sharp-tasting cheese originally made in the English village of Cheddar, in Somerset."], "Prato": ["A province in the Tuscany region of Italy."], "guerilla": ["A soldier in a small independent group fighting against the government or regular forces by surprise raids."], "irregular": ["A soldier in a small independent group fighting against the government or regular forces by surprise raids."], "insurgent": ["A soldier in a small independent group fighting against the government or regular forces by surprise raids."], "partisan": ["A soldier in a small independent group fighting against the government or regular forces by surprise raids."], "piggy bank": ["A container used to collect coins, often in form of a pig."], "vulcanology": ["The branch of geology that deals with volcanism."], "volcanologist": ["A person who studies volcanology."], "piggybank": ["A container used to collect coins, often in form of a pig."], "money box": ["A container used to collect coins, often in form of a pig."], "penny bank": ["A container used to collect coins, often in form of a pig."], "vulcanologist": ["A person who studies volcanology."], "volcanological": ["Relating to volcanology."], "vulcanological": ["Relating to volcanology."], "rocket": ["Annual plant whose leaves are edible and used in salads.", "Reaction-propelled tool using only load propellants, without resorting to the surrounding medium."], "arugula": ["Annual plant whose leaves are edible and used in salads."], "garden rocket": ["Annual plant whose leaves are edible and used in salads."], "eruca": ["Annual plant whose leaves are edible and used in salads."], "rocketsalad": ["Annual plant whose leaves are edible and used in salads."], "carry along": ["(For a flow of water, air, etc.) To transport with the flow."], "cart": ["Wire basket fastened to a frame with wheels which customers use for collecting purchases in a store.", "To transport with a cart.", "a two-wheeled vehicle, commonly without springs, drawn by mules, oxen, or the like, used for the conveyance of heavy goods.", "To draw slowly or heavily."], "pulpit": ["Raised platform for preaching in ancient Christian churches."], "ambulatory": ["In Gothic churches, the space that is sometimes found between the choir and the apse."], "antefixa": ["Terminal part of the roof located on the beam of a temple or other classic building, often decorated with figures in bas-relief."], "capitulation": ["The act of surrendering to the enemy.", "The act of surrendering to an enemy upon stipulated terms."], "largess": ["Liberality in bestowing gifts; extremely liberal and generous of spirit."], "largesse": ["Liberality in bestowing gifts; extremely liberal and generous of spirit."], "openhandedness": ["Liberality in bestowing gifts; extremely liberal and generous of spirit."], "ipso facto": ["By the fact itself."], "imho": ["In my humble opinion."], "IMHO": ["In my humble opinion."], "chauvinist": ["A person with excessive patriotism."], "circus": ["A travelling company of performers that may include acrobats, clowns, trained animals, and other novelty acts, that gives shows usually in a circular tent."], "racism": ["The belief that race is a primary determinant of human traits and capacities and that racial differences produce an inherent superiority of a particular race and inferiority of other races."], "apsidal conch": ["A semi-dome shaped structure that covers the apse."], "reinforced concrete": ["A concrete in which a metallic structure has been incorporated."], "ferroconcrete": ["A concrete in which a metallic structure has been incorporated."], "in my humble opinion": ["In my humble opinion."], "among other things": ["Among other things."], "drudgery": ["Hard monotonous routine work."], "plodding": ["Hard monotonous routine work."], "donkeywork": ["Hard monotonous routine work."], "fruitfulness": ["The intellectual productivity of a creative imagination.", "The quality of something that causes or assists healthy growth."], "cuniculture": ["The breeding of rabbits."], "somniferously": ["In a somniferous manner."], "monorchid": ["Having or appearing to have only one testicle.", "An individual with only one testicle."], "verse": ["A poetic form with regular meter and a fixed rhyme scheme."], "visor": ["A part of a helmet, arranged so as to lift or open, and so show the face. The openings for seeing and breathing are generally in it."], "greenhouse": ["A building made of glass or transparent plastic in which plants are grown more rapidly than outside such a building by the action of heat from the sun which is trapped inside."], "glasshouse": ["A building made of glass or transparent plastic in which plants are grown more rapidly than outside such a building by the action of heat from the sun which is trapped inside."], "soporifically": ["In a somniferous manner."], "metaphorically": ["In a metaphoric manner."], "cohort": ["A demographic grouping of people, especially those in a defined age group.", "Any division of a Roman legion; normally of about 500 men."], "cruelty": ["Positive pleasure or indifference in inflicting suffering."], "Chinese parsley": ["An annual herb in the family Apiaceae whose seeds and leaves are often used in cooking."], "cilantro": ["An annual herb in the family Apiaceae whose seeds and leaves are often used in cooking.", "The edible leaves of coriander (Coriandrum sativum) used as an ingredient in various dishes."], "coriander leaves": ["The edible leaves of coriander (Coriandrum sativum) used as an ingredient in various dishes."], "coriander seed": ["The dried seed of the coriander plant (Coriandrum sativum) which is used as a spice whole or ground."], "soldier of the Red Army": ["Soldier of the Red Army."], "bone tired": ["Very tired."], "bone-tired": ["Very tired."], "jambul": ["An evergreen tropical tree in the plant family Myrtaceae, native to Bangladesh, India, Nepal, Pakistan and Indonesia."], "-cardium": ["Forms medical and scientific terms relating to the heart."], "jamboo": ["An evergreen tropical tree in the plant family Myrtaceae, native to Bangladesh, India, Nepal, Pakistan and Indonesia."], "Java plum": ["An evergreen tropical tree in the plant family Myrtaceae, native to Bangladesh, India, Nepal, Pakistan and Indonesia."], "ham": ["Meat cut from the thigh of a pork."], "prima facie": ["At first sight.", "As it seems at first sight."], "aught": ["Any object, act, state, event, or fact whatever."], "notoriety": ["The condition of being widely known, especially for something bad; infamous."], "mating": ["The act of pairing a male and female for reproductive purposes."], "sexual union": ["The act of pairing a male and female for reproductive purposes."], "union": ["The act of pairing a male and female for reproductive purposes.", "Of or pertaining to trade unions."], "pairing": ["The act of pairing a male and female for reproductive purposes."], "life history theory": ["An analytical framework widely used in evolutionary biology, ecology, psychology, and evolutionary anthropology which postulates that many of the physiological traits and behaviors of organisms may be best understood in terms of effects of natural selection on the key maturational and reproductive characteristics that define the life course."], "timing": ["The time when something happens."], "vinegar fly": ["A species of Diptera, or the order of flies, in the family Drosophilidae."], "unrelated": ["Not connected or associated."], "mediated": ["Acting or brought about through an intervening agency."], "interact": ["To act together or towards others or with others."], "dimorphic": ["Occurring or existing in two different forms."], "dimorphous": ["Occurring or existing in two different forms."], "cytoplasmic": ["Of or relating to cytoplasm."], "cytoplasmatic": ["Of or relating to cytoplasm."], "covariance": ["A statistical measure of the variance of two random variables measured in the same mean time period."], "allelic": ["Of or relating to alleles."], "assess": ["To place a value on."], "valuate": ["To place a value on."], "introgression": ["The movement of a gene (gene flow) from one species into the gene pool of another by backcrossing an interspecific hybrid with one of its parents."], "backcrossing": ["A crossing of a hybrid with one of its parents or an individual genetically similar to its parent, in order to achieve offspring with a genetic identity which is closer to that of the parent."], "dispersal": ["The process in which an organism spreads out geographically."], "post-zygotic": ["Occurring after fertilization of the ovum by the sperm."], "postzygotic": ["Occurring after fertilization of the ovum by the sperm."], "post-zygotic mutation": ["A mutation that an organism acquires during its lifespan, rather than inheriting from its parent(s) by the fusion of the haploid pronuclei in the sperm and egg."], "napalm": ["A highly flammable, viscous substance."], "peritoneum": ["The tissue that lines the abdominal wall and covers most of the organs in the abdomen."], "lockup": ["A place in which individual persons have restricted personal freedom."], "monophyly": ["The condition of being monophyletic, of including all descendants from a given ancestral species."], "paraphyletic": ["Said of a defined group constrained within a clade without including all descendants of the most common ancestor."], "polyphyly": ["The condition of being polyphyletic."], "legislator": ["Someone who creates or enacts laws, especially a member of a legislative body."], "lawmaker": ["Someone who creates or enacts laws, especially a member of a legislative body."], "feeding": ["The act of consuming food."], "diversification": ["The act, or the result, of diversifying."], "variegation": ["The act, or the result, of diversifying."], "diapause": ["The delay in development in response to regularly and recurring periods of adverse environmental conditions. (source: Wikipedia)"], "specularity": ["The quality of being specular."], "brood": ["The young of a bird cared for at one time.", "The young of a mamal cared for at one time.", "To dwell upon moodily and at length.", "To keep an egg warm to make it hatch."], "sharing": ["A distribution in shares."], "ay": ["A word used to show agreement or affirmation of something."], "azote": ["Gaseous, non-metallic chemical element with symbol N and atomic number 7."], "infaneto": ["A very young human being, from birth to a year old."], "baldness": ["The absence of hair from skin areas where it is normally present.", "The absence of hair on the head."], "balsam": ["A semisolid preparation intended for external application to the skin or mucous membranes. (source: UMLS)"], "phylogeny": ["The evolutionary history of an organism."], "baleful": ["Exceedingly harmful."], "turn signal": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "directional indicator": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "directional signal": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "blinker": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "flasher": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "direction indicator": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "flashing indicator": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "indicator light": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "turn indicator": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "turn light": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "turn signal flasher": ["A blinking light mounted near the left and right front and rear corners of a vehicle, and sometimes on the sides, used to indicate the intention of a lateral change of position (turn or lane change)."], "infectivity": ["The ability of a pathogen to establish an infection."], "inbreeding": ["Breeding between members of a relatively small population, especially one in which most members are related."], "given": ["Acknowledged as a supposition."], "vicariance": ["The separation of a group of organisms by a geographic barrier, resulting in differentiation of the original group into new varieties or species."], "viability": ["The property of being viable; the ability to live or to succeed."], "seasonal": ["Of, related to, or reliant on a season or period of the year, especially with regard to weather characteristics."], "preferentially": ["In a preferential manner."], "zygosity testing": ["The process through which DNA sequences are compared to assess whether individuals born from a multiple gestation (twins, triplets, etc.) are monozygotic (identical) or dizygotic (fraternal)."], "maximal": ["The greatest or most complete or best possible."], "tablinum": ["The main room of a Roman house, initially used as a bedroom, or sometimes as a dining room and later used as a room to keep family archives and to receive clients."], "recidivism": ["Act of a person repeating an undesirable behavior after having been punished and/or treated for it."], "recidivist": ["A person who repeats an undesirable behavior after having been punished and/or treated for it."], "recidivistic": ["Repeating an undesirable behavior after having been punished and/or treated for it."], "videoteleconference": ["A conference held by video link. An arranged video phone call between more than two parties."], "unspellable": ["Difficult to spell."], "cue": ["Evidence that supports a hypothesis or helps to solve a problem.", "A stimulus that provides information about what to do.", "A stick being used to push or shoot the balls when playing billards."], "decreased": ["Made less in size or amount or degree."], "covariation": ["A statistical measure of the variance of two random variables measured in the same mean time period."], "apomixis": ["Plant reproduction without fertilization, meiosis, or the production of gametes."], "apogamy": ["Asexual reproduction of a fully formed plant directly from a bud."], "allopatric": ["Not living in the same territory; geographically isolated and thus unable to crossbreed."], "allopatry": ["The condition of being allopatric."], "predictably": ["In a manner that can be expected or anticipated."], "potentially": ["In a manner showing much potential; with the possibility of happening in a given way."], "initially": ["At first.", "In an initial manner or degree; at the beginning."], "histocompatibility": ["The toleration of grafts between genetically similar individuals."], "major histocompatibility complex": ["A large genomic region or gene family found in most vertebrates."], "MHC": ["A large genomic region or gene family found in most vertebrates."], "genomic": ["Of or pertaining to a genome."], "geographically": ["In a geographical manner."], "inimical": ["Not friendly."], "unfriendly": ["Not friendly.", "Not easy to understand or use.", "Not disposed to friendship or friendliness.", "Very unfavorable to life or growth.", "In an unfriendly manner."], "hostile": ["Not friendly.", "Very unfavorable to life or growth."], "uncongenial": ["Very unfavorable to life or growth."], "recrudescence": ["A return of something after a period of abatement."], "cruralgia": ["A pain in the thigh caused by the femoral nerve."], "crural pain": ["A pain in the thigh caused by the femoral nerve."], "femoral nerve": ["A nerve located in the leg that provides sensation to the front of the thigh and part of the lower leg."], "deviled egg": ["A hard-boiled egg cut in half with the egg's yolk mixed with different ingredients."], "egg mimosa": ["A hard-boiled egg cut in half with the egg's yolk mixed with different ingredients."], "low beam": ["A lighting device in front of a vehicle designed to light the road ahead while limiting the light towards the other drivers."], "dim light": ["A lighting device in front of a vehicle designed to light the road ahead while limiting the light towards the other drivers."], "dimmed headlight": ["A lighting device in front of a vehicle designed to light the road ahead while limiting the light towards the other drivers."], "dimmed headlights": ["A lighting device in front of a vehicle designed to light the road ahead while limiting the light towards the other drivers."], "dipped head light": ["A lighting device in front of a vehicle designed to light the road ahead while limiting the light towards the other drivers."], "low beam light": ["A lighting device in front of a vehicle designed to light the road ahead while limiting the light towards the other drivers."], "low-beam light": ["A lighting device in front of a vehicle designed to light the road ahead while limiting the light towards the other drivers."], "passing light": ["A lighting device in front of a vehicle designed to light the road ahead while limiting the light towards the other drivers."], "passing beam": ["A lighting device in front of a vehicle designed to light the road ahead while limiting the light towards the other drivers."], "meeting beam": ["A lighting device in front of a vehicle designed to light the road ahead while limiting the light towards the other drivers."], "country beam": ["A powerful lighting device in front of a vehicle used to illuminate the road far ahead."], "drive light": ["A powerful lighting device in front of a vehicle used to illuminate the road far ahead."], "driving beam": ["A powerful lighting device in front of a vehicle used to illuminate the road far ahead."], "driving light": ["A powerful lighting device in front of a vehicle used to illuminate the road far ahead."], "headlamp main beam": ["A powerful lighting device in front of a vehicle used to illuminate the road far ahead."], "long distance light": ["A powerful lighting device in front of a vehicle used to illuminate the road far ahead."], "barrister": ["A professional person who advises or represents others in legal matters as a profession."], "fog lamp": ["A lighting device attached to a vehicle designed to increase the illumination directed towards the road surface and verges in conditions of poor visibility due to rain, fog, dust or snow."], "fog light": ["A lighting device attached to a vehicle designed to increase the illumination directed towards the road surface and verges in conditions of poor visibility due to rain, fog, dust or snow."], "fog-lamp": ["A lighting device attached to a vehicle designed to increase the illumination directed towards the road surface and verges in conditions of poor visibility due to rain, fog, dust or snow."], "anti-fog": ["A lighting device attached to a vehicle designed to increase the illumination directed towards the road surface and verges in conditions of poor visibility due to rain, fog, dust or snow."], "foglight": ["A lighting device attached to a vehicle designed to increase the illumination directed towards the road surface and verges in conditions of poor visibility due to rain, fog, dust or snow."], "foglamp": ["A lighting device attached to a vehicle designed to increase the illumination directed towards the road surface and verges in conditions of poor visibility due to rain, fog, dust or snow."], "put back": ["Put something back where it belongs."], "pay for": ["To have as a guest."], "beat a drum": ["To produce sound with a drum."], "ask in": ["To ask to enter."], "bear with": ["To allow (something that one dislikes or disagrees with) to continue to exist or occur without interference; accept or undergo, often unwillingly."], "turtle": ["A reptile of the order Testudines (the crown group of the superorder Chelonia), characterised by a special bony or cartilaginous shell developed from their ribs that acts as a shield."], "gross vehicle weight rating": ["The maximum allowable total mass of a road vehicle or trailer when loaded."], "GVWR": ["The maximum allowable total mass of a road vehicle or trailer when loaded."], "truism": ["An obvious truth."], "bromide": ["A saying that is overused or used outside its original context, so that its original impact and meaning are lost."], "in collaboration": ["With cooperation and interchange."], "stigma": ["In a flower, the tip of the pistil that receives pollen during pollination."], "in real time": ["In a live or real time manner."], "in realtime": ["In a live or real time manner."], "in real-time": ["In a live or real time manner."], "starvation": ["A condition of severe suffering due to a lack of nutrition."], "real time": ["(Of a system) That responds to events or signals within a predictable time after their occurence."], "proximal": ["Closer to the point of attachment or observation."], "promiscuity": ["The state or quality of being promiscuous."], "trichome": ["A fine outgrowth or appendage on plants and certain protists."], "transposable": ["Able to be transposed (in any sense)."], "transpose": ["To reverse or change the order of (two or more things); to swap or interchange."], "appendix": ["Attached to a principal element.", "A small excrescence of the cecum."], "woolen": ["Made or consisting of wool."], "behoof": ["The advantageous quality of being beneficial."], "banana tree": ["The tropical treelike plant which bears clusters of bananas. The plant, of the genus Musa, has large, elongated leaves."], "present conditional": ["Conditional conjugation form of a verb."], "past conditional": ["Conjugation form of a verb."], "morocco leather": ["Leather from goats (or sheep for imitations) that is tanned with sumac or gallnut."], "saffian": ["Leather from goats (or sheep for imitations) that is tanned with sumac or gallnut."], "subjunctive": ["Conjugation form of a verb."], "present subjunctive": ["Conjugation form of a verb."], "present conjunctive": ["Conjugation form of a verb."], "past subjunctive": ["Conjugation form of a verb."], "past conjunctive": ["Conjugation form of a verb."], "leather goods": ["Products made of leather."], "yogurt maker": ["Appliance to make yogurt."], "short-term": ["Of or pertaining to the near or immediate future.", "Of or pertaining to a short duration of time."], "shore": ["The land along the edge of a body of water.", "To support by placing against something solid or rigid."], "bestial": ["Of or resembling a beast."], "richness": ["The state or quality of being rich.", "The number of different types in a community."], "bifurcation": ["An intersection in a road or path where one road is split into two."], "predatory": ["Of, or relating to a predator.", "Exploiting or victimizing others for personal gain."], "exquisitely": ["In an exquisite manner."], "exquisity": ["The quality of being exquisite."], "ossify": ["To become (or cause to become) inflexible and rigid in habits or opinions."], "by consequence": ["[A word that expresses that something is or should be the consequence of something else]."], "external combustion engine": ["A heat engine where an internal fluid is heated by combustion of an external source."], "EC engine": ["A heat engine where an internal fluid is heated by combustion of an external source."], "compression ignition engine": ["An internal combustion engine operating on a thermodynamic cycle in which the ratio of compression of the air charge is sufficiently high to ignite the fuel subsequently injected into the combustion chamber."], "compression-ignition engine": ["An internal combustion engine operating on a thermodynamic cycle in which the ratio of compression of the air charge is sufficiently high to ignite the fuel subsequently injected into the combustion chamber."], "Otto engine": ["An internal combustion engine that uses a mixture of air and gasoline vapour as a fuel."], "Otto-cycle engine": ["An internal combustion engine that uses a mixture of air and gasoline vapour as a fuel."], "Otto-engine": ["An internal combustion engine that uses a mixture of air and gasoline vapour as a fuel."], "-logy": ["Forms words denoting 'speech', 'doctrine' or 'science'.", "Person who studies or is an expert in the related -logy."], "-ology": ["Forms words denoting 'speech', 'doctrine' or 'science'."], "-logical": ["Used to form adjectival forms of nouns ending in -logy."], "bit by bit": ["Making progress, but slowly."], "by and by": ["Making progress, but slowly."], "by degrees": ["Making progress, but slowly."], "little by little": ["Making progress, but slowly."], "step by step": ["Making progress, but slowly."], "red-eye effect": ["An effect in photography where the pupils of a subject appear red when a flash is used."], "back breaking job": ["Very hard, complex or physically demanding work."], "redeye": ["An effect in photography where the pupils of a subject appear red when a flash is used."], "red eye": ["An effect in photography where the pupils of a subject appear red when a flash is used."], "redeye effect": ["An effect in photography where the pupils of a subject appear red when a flash is used."], "red eye effect": ["An effect in photography where the pupils of a subject appear red when a flash is used."], "pellagra": ["A vitamin deficiency disease most commonly caused by a chronic lack of niacin (vitamin B3)."], "-nomy": ["Forms words denoting a system of rules, laws, or knowledge about a body of a particular field; distribution, arrangement, management."], "-onomy": ["Forms words denoting a system of rules, laws, or knowledge about a body of a particular field; distribution, arrangement, management."], "red-eyed": ["Having red or reddened eyes."], "common rudd": ["A freshwater fish originating in Europe and Asia with red fins."], "pyramid scheme": ["A non-sustainable business model that involves the exchange of money primarily for enrolling other people into the scheme, without any product or service being delivered."], "article of furniture": ["A movable article in a room designed to support human activities, for example a bed or a table."], "broadband": ["(telecommunications) A wide band of electromagnetic frequencies.", "(Internet) An internet connection with a much larger capacity than dial-up or ISDN."], "willpower": ["The unwavering strength of will to carry out one\u2019s wishes."], "will power": ["The unwavering strength of will to carry out one\u2019s wishes."], "societal": ["Of or pertaining to society or social groups and their activities and customs."], "sleep deficit": ["The situation of not getting enough sleep."], "sleep debt": ["The situation of not getting enough sleep."], "subsume": ["To include or contain under something else."], "Occam's razor": ["A theoretical principle according to which the simplest solution should always be preferred."], "Ockham's razor": ["A theoretical principle according to which the simplest solution should always be preferred."], "dynamic host configuration protocol": ["A computer networking protocol used by hosts (DHCP clients) to retrieve IP address assignments and other configuration information."], "DHCP": ["A computer networking protocol used by hosts (DHCP clients) to retrieve IP address assignments and other configuration information."], "Dynamic Host Configuration Protocol": ["A computer networking protocol used by hosts (DHCP clients) to retrieve IP address assignments and other configuration information."], "email spam": ["An unsolicited electronic message sent in bulk, e.g. by email or newsgroups."], "enterprise resource-planning": ["The planning of how business resources (materials, employees, customers etc.) are acquired and moved from one state to another."], "film production": ["The process of making a film, from an initial story idea or commission through scriptwriting, shooting, editing and finally distribution to an audience. Typically it involves a large number of people and can take anywhere between a few months to several years to complete."], "proposition": ["A sentence expressing something true or false."], "olfactometric": ["Relating to olfactometry."], "olfactophobia": ["A fear of odors."], "osmophobia": ["A fear of odors."], "osphresiophobia": ["A fear of odors."], "abbacy": ["The church and monastery which is the site of a community of men or women, governed by an abbot or an abbess."], "four cycle engine": ["An internal combustion engine whose cycle is completed in four piston strokes; includes a suction stroke, compression stroke, expansion stroke, and exhaust stroke."], "four stroke cycle engine": ["An internal combustion engine whose cycle is completed in four piston strokes; includes a suction stroke, compression stroke, expansion stroke, and exhaust stroke."], "wardriving": ["The act of searching for Wi-Fi wireless networks by a person in a moving vehicle, using a portable computer or PDA."], "stereogram": ["An optical illusion of depth created from flat, two-dimensional image or images."], "sleep deprivation": ["The situation of being denied enough sleep."], "vertically": ["In a vertical direction or position."], "downshifter": ["A person who is opposed to consumerism, and prefers more free time rather than working harder for more money."], "colposcopy": ["An examination of the cervix and the tissues of the vagina and vulva, using a colposcope."], "contrivance": ["An elaborate or deceitful scheme contrived to deceive or evade."], "gambit": ["A maneuver in a game or conversation."], "ploy": ["A maneuver in a game or conversation."], "nexus": ["A connection between places, persons, events, or things.", "A connected series or group."], "big wheel": ["A big rotating upright wheel with passenger cars attached to the rim."], "Ferris wheel": ["A big rotating upright wheel with passenger cars attached to the rim."], "observation wheel": ["A big rotating upright wheel with passenger cars attached to the rim."], "coloscopy": ["An examination of the inside of the colon using a colonoscope, inserted into the rectum."], "more Catholic than the Pope": ["To be stricter or more fervent than required."], "colposcope": ["A kind of microscope used to examine the cervix and the tissues of the vagina and vulva."], "apple butter": ["A highly concentrated form of apple sauce, produced by long, slow cooking of apples with cider or water to a point where the sugar in the apples caramelizes, turning the apple butter a deep brown."], "Li\u00e8ge": ["A major city and municipality of Belgium located in the province of Li\u00e8ge."], "anti-": ["Forms words that mean 'instead of' or 'against' the complemented noun."], "pro-": ["Form words that mean 'for' the complemented noun."], "anti-Greek": ["Hostile to Greece, its inhabitants or its culture."], "blithe": ["In good spirits."], "longhand": ["The written characters used in the common method of writing."], "horsepower": ["Unit of measurement of power equal to that of a horse drafting 75 kg at the speed of 1 m/s, i.e. 735,498 Watt.", "Unit of measurement of power equal to that of a horse drafting 55 pounds at the speed of 10 feet per second, i.e. 745,7 Watt."], "metric horsepower": ["Unit of measurement of power equal to that of a horse drafting 75 kg at the speed of 1 m/s, i.e. 735,498 Watt."], "mechanical horsepower": ["Unit of measurement of power equal to that of a horse drafting 55 pounds at the speed of 10 feet per second, i.e. 745,7 Watt."], "brake horsepower": ["Unit of measurement of power equal to that of a horse drafting 55 pounds at the speed of 10 feet per second, i.e. 745,7 Watt."], "PS": ["Unit of measurement of power equal to that of a horse drafting 75 kg at the speed of 1 m/s, i.e. 735,498 Watt."], "manacle": ["A shackle, consisting of a pair of joined rings, to restrict the free movement of the hands."], "handcuffs": ["A shackle, consisting of a pair of joined rings, to restrict the free movement of the hands."], "biodiesel": ["A vegetable oil- or animal fat-based diesel fuel."], "trilobate": ["Arch shaped as three lobes."], "Mediterranean twaite shad": ["The sea fish whose scientific name is \"Alosa fallax nilotica\"."], "Mediterranean shad": ["The sea fish whose scientific name is \"Alosa fallax nilotica\"."], "manufacturer": ["A business engaged in manufacturing some product."], "mastiff": ["One of several large breeds of dog (such as bulldogs and Saint Bernards), often used as guard dogs"], "millionaire": ["Somebody whose wealth is greater than one million dollars, or the local currency."], "minesweeper": ["A vehicle, device or person with the purpose of removing explosive mines (landmines or water mines).", "A ship equipped to detect and then destroy or neutralize or remove marine mines."], "pecuniary": ["Concerning the money understood as currency used in a certain country."], "manicurist": ["A person who performs cosmetic treatment of hands and fingernails."], "mafia": ["A crime syndicate."], "wonk": ["An insignificant student who is ridiculed as being affected or boringly studious."], "dweeb": ["An insignificant student who is ridiculed as being affected or boringly studious."], "blurb": ["A promotional statement (as found on the dust jackets of books)."], "indorsement": ["A promotional statement (as found on the dust jackets of books)."], "incendiary": ["A criminal who commits arson.", "Involving deliberate burning of property.", "Capable of catching fire spontaneously or causing fires or burning readily.", "Arousing to action or rebellion.", "A bomb that is designed to start fires; is most effective against flammable targets (such as fuel)."], "incitive": ["Arousing to action or rebellion."], "instigative": ["Arousing to action or rebellion."], "rabble-rousing": ["Arousing to action or rebellion."], "seditious": ["Arousing to action or rebellion."], "firebug": ["A criminal who commits arson."], "firebomb": ["A bomb that is designed to start fires; is most effective against flammable targets (such as fuel)."], "incendiary bomb": ["A bomb that is designed to start fires; is most effective against flammable targets (such as fuel)."], "rear admiral": ["A naval commissioned officer rank above that of a Commodore and Captain, and below that of a Vice Admiral."], "counter admiral": ["A naval commissioned officer rank above that of a Commodore and Captain, and below that of a Vice Admiral."], "rear-admiral": ["A naval commissioned officer rank above that of a Commodore and Captain, and below that of a Vice Admiral."], "materialism": ["The philosophical belief that nothing exists beyond what is physical.", "Constant concern over material possessions and wealth; a great or excessive regard for worldly concerns."], "physicalism": ["The philosophical belief that nothing exists beyond what is physical."], "Main-Franconian": ["A group of Central German dialects being part of the East Franconian group spoken in a large stripe along the river Main in Germany."], "graphical interface": ["A type of user interface which allows people to interact with electronic devices like computers, hand-held devices (MP3 Players, Portable Media Players, Gaming devices), household appliances and office equipment."], "transmogrify": ["To change completely the nature or appearance of."], "metamorphose": ["To change completely the nature or appearance of."], "transfigure": ["To change completely the nature or appearance of.", "To elevate or idealize, in allusion to Christ's transfiguration."], "glorify": ["To elevate or idealize, in allusion to Christ's transfiguration.", "To praise, glorify, or honor (e.g. a virtue)."], "spiritualize": ["To elevate or idealize, in allusion to Christ's transfiguration."], "monozygotic twin": ["A twin with almost exact traits and physical appearances, originating from the same zygote."], "Sciacca": ["A town and comune in the province of Agrigento on the southwestern coast of Sicily."], "Schiacca": ["A town and comune in the province of Agrigento on the southwestern coast of Sicily."], "Parisian": ["A person from, or living in Paris (France).", "Relating to Paris (France)."], "Parisian man": ["A man from, or living in Paris (France)."], "Parisian woman": ["A woman from, or living in Paris (France)."], "slingshot": ["A small hand-powered projectile weapon consisting of a forked Y-shaped frame with two rubber strips attached to the uprights leading back to a pocket for holding the projectile."], "lederhosen": ["Trousers made of leather that are traditionally worn by men and boys in Bavaria and Austria."], "Seder": ["The ceremonial dinner on the first night (or both nights) of Passover."], "fried": ["Cooked in hot fat."], "Passover supper": ["The ceremonial dinner on the first night (or both nights) of Passover."], "Passover Seder": ["The ceremonial dinner on the first night (or both nights) of Passover."], "ghat": ["A series of steps leading down to a body of water."], "verst": ["An obsolete Russian unit of length, equivalent to about 1.07 kilometres."], "werst": ["An obsolete Russian unit of length, equivalent to about 1.07 kilometres."], "sazhen": ["An obsolete Russian unit of length, equivalent to 2.134 meters."], "arshin": ["An obsolete Russian unit of length, equivalent to 71.12 cm."], "milia": ["An obsolete Russian unit of length, equivalent to 7.4676 km."], "Gazan": ["A person from the Gaza Strip.", "Of or relating to the Gaza Strip."], "Jewishness": ["The property of being Jewish."], "Jewishly": ["In a Jewish manner."], "Judaizing": ["Following the religious practices of Judaism."], "Judaising": ["Following the religious practices of Judaism."], "Judaize": ["To follow the religious practices of Judaism.", "To convert to Judaism."], "Judaise": ["To follow the religious practices of Judaism.", "To convert to Judaism."], "Judaization": ["The act of converting to Judaism."], "Judaisation": ["The act of converting to Judaism."], "Arabize": ["To make Arab."], "Arabization": ["The process of making Arab."], "Arabness": ["The property of being Arab."], "arability": ["The quality for a land of being cultivable."], "cultivability": ["The quality for a land of being cultivable."], "Zionist": ["An advocate of Zionism."], "rat extermination": ["Extermination of rats in a certain place."], "rat exterminator": ["A person skilled in rat extermination."], "neophilia": ["A love of novelty and new experiences."], "neophobia": ["Fear of new things or experiences."], "arabism": ["A devotion to Arab interests, custom, culture, ideals, and political goals."], "manometer": ["A type of gauge that uses displacement of a liquid column to measure pressure."], "Mon\u00e9gasque": ["A native or inhabitant of Monaco.", "Of or relating to Monaco or its inhabitants."], "achoo": ["Onomatopoeia representing the sound someone emits when sneezing."], "kerchoo": ["Onomatopoeia representing the sound someone emits when sneezing."], "atishoo": ["Onomatopoeia representing the sound someone emits when sneezing."], "-ibility": ["Suffix forming abstract nouns of quality from adjectives."], "-ability": ["Suffix forming abstract nouns of quality from adjectives."], "-hood": ["Suffix forming abstract nouns of quality from adjectives."], "-ship": ["Suffix forming abstract nouns of quality from adjectives."], "-itas": ["Suffix forming abstract nouns of quality from adjectives."], "-itude": ["Suffix forming abstract nouns of quality from adjectives."], "-th": ["Suffix forming abstract nouns of quality from adjectives."], "-ia": ["Suffix forming abstract nouns of quality from adjectives."], "-itia": ["Suffix forming abstract nouns of quality from adjectives."], "-ity": ["Suffix forming abstract nouns of quality from adjectives."], "-ness": ["Suffix forming abstract nouns of quality from adjectives."], "-icity": ["Suffix forming abstract nouns of quality from adjectives."], "-osity": ["Suffix forming abstract nouns of quality from adjectives."], "-ous": ["Suffix forming abstract nouns of quality from adjectives."], "-ose": ["Suffix forming abstract nouns of quality from adjectives."], "-ivity": ["Suffix forming abstract nouns of quality from adjectives."], "-ality": ["Suffix forming abstract nouns of quality from adjectives."], "sternutate": ["To expel air rapidly as a reflex, usually induced by an irritation in the nose."], "quinoa": ["A grain-like crop grown primarily for its edible seeds."], "Mauritanian": ["A native or inhabitant of Mauritania."], "seat belt": ["A belt or a set of belts used to secure the passengers of a car or a plane to their seat."], "seatbelt": ["A belt or a set of belts used to secure the passengers of a car or a plane to their seat."], "anti-lock braking system": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "pederast": ["A man who is engaged in an erotic relationship with an adolescent boy."], "ABS": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "ABS brake": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "antiblocking system": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "antilock brake": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "wheel lock control": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "anti-lock": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "anti-lock brake system": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "anti-skid system": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "antilock brake system": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "antilock braking system": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "antilocking system": ["A safety system which prevents the wheels on a motor vehicle from locking up while braking."], "air bag": ["A protective system in automobiles in which when a crash occurs, a bag quickly inflates in front of the driver or passenger, preventing injury to the head."], "inflatable safety bag": ["A protective system in automobiles in which when a crash occurs, a bag quickly inflates in front of the driver or passenger, preventing injury to the head."], "air bag cushion": ["A protective system in automobiles in which when a crash occurs, a bag quickly inflates in front of the driver or passenger, preventing injury to the head."], "breasts": ["The two breasts of a woman, considered collectively."], "boobs": ["The two breasts of a woman, considered collectively."], "boobies": ["The two breasts of a woman, considered collectively."], "knockers": ["The two breasts of a woman, considered collectively."], "tits": ["The two breasts of a woman, considered collectively."], "funbags": ["The two breasts of a woman, considered collectively."], "activism": ["The attitude of taking an active part in events, especially in a social context."], "agrarian reform": ["The doctrine of an equal division of landed property and the advancement of agricultural groups."], "agrarianism": ["The doctrine of an equal division of landed property and the advancement of agricultural groups."], "antimilitarism": ["The quality of being opposed to the establishment or maintenance of a governmental military force."], "antiterrorism": ["The practices, tactics, techniques, and strategies that governments, militaries, police departments and corporations adopt to prevent or in response to terrorist threats and/or acts, both real and imputed."], "bray": ["To show off."], "counter-terrorism": ["The practices, tactics, techniques, and strategies that governments, militaries, police departments and corporations adopt to prevent or in response to terrorist threats and/or acts, both real and imputed."], "counterterrorism": ["The practices, tactics, techniques, and strategies that governments, militaries, police departments and corporations adopt to prevent or in response to terrorist threats and/or acts, both real and imputed."], "bipartisanism": ["The state of being composed of members of two parties or of two parties cooperating, as in government."], "centrism": ["The adherence to a middle-of-the-road position, neither left nor right, as in politics."], "centrist": ["A person who takes a position in the political center."], "capitalism": ["An economic system based on private ownership of capital."], "collectivism": ["An economic system in which the means of production and distribution are owned and controlled by the people collectively."], "geopolitics": ["The art and practice of using political power over a given territory."], "internationalism": ["The doctrine that nations should cooperate because their common interests are more important than their differences."], "interventionism": ["The political practice of intervening in a sovereign state's affairs."], "isolationism": ["The policy or doctrine directed toward the isolation of a country from the affairs of other nations by a deliberate abstention from political, military, and economic agreements."], "Mainz": ["A city in Germany and the capital of Rhineland-Palatinate."], "militarism": ["The belief or desire of a government or people that a country should maintain a strong military capability and be prepared to use it aggressively to defend or promote national interests."], "neocolonialism": ["The domination of a small or weak country by a large or strong one without the assumption of direct government."], "neoliberalism": ["A political movement that espouses economic liberalism as a means of promoting economic development and securing political liberty."], "protest vote": ["A vote for a third-party candidate made not to elect that candidate but to indicate displeasure with the candidates of the two major political parties."], "pluralism": ["A social system based on mutual respect for each other's cultures."], "redistricting": ["The process of redrawing the geographic boundaries of electoral districts within states from which candidates are elected."], "lavishly": ["In a wasteful manner.", "In a rich and lavish manner."], "richly": ["In a rich and lavish manner."], "prime minister": ["The chairman or chief of cabinet in the executive branch of government in a parliamentary system."], "imitative": ["Not genuine; imitating something superior."], "Ilonggo": ["An Austronesian language spoken in Western Visayas in the Philippines."], "undermine": ["To destroy property or hinder normal operations."], "countermine": ["To destroy property or hinder normal operations."], "counteract": ["To destroy property or hinder normal operations.", "To make inactive or ineffective; to oppose and mitigate the effects of by contrary actions."], "subvert": ["To destroy property or hinder normal operations."], "neutrality": ["The nonparticipation in a dispute or war."], "infantry": ["A branch of an army whose soldiers are organized, trained and equipped to fight on foot."], "slave trade": ["The business of buying and selling slaves."], "chancellor": ["A person who is the head of government in Germany or Austria."], "male chancellor": ["A male who is the head of government in Germany or Austria."], "female chancellor": ["A female who is the head of government in Germany or Austria."], "briny": ["(Of water) Salty or slightly salty, as a mixture of fresh and sea water."], "endemism": ["A state in which species are restricted to a single region."], "food security": ["The ability of individuals to obtain sufficient food on a day-to-day basis."], "fresh water": ["Water having a relatively low mineral content, generally less than 500 mg/l of dissolved solids."], "keep on tenterhooks": ["To keep (someone) in a state of suspense."], "keep on tenderhooks": ["To keep (someone) in a state of suspense."], "keep on pins and needles": ["To keep (someone) in a state of suspense."], "CEST": ["A summer daylight saving time used in most European countries set two hours ahead of Coordinated Universal Time (UTC)."], "Central European Summer Time": ["A summer daylight saving time used in most European countries set two hours ahead of Coordinated Universal Time (UTC)."], "Middle European Summer Time": ["A summer daylight saving time used in most European countries set two hours ahead of Coordinated Universal Time (UTC)."], "MEST": ["A summer daylight saving time used in most European countries set two hours ahead of Coordinated Universal Time (UTC)."], "Central European Daylight Saving Time": ["A summer daylight saving time used in most European countries set two hours ahead of Coordinated Universal Time (UTC)."], "CEDT": ["A summer daylight saving time used in most European countries set two hours ahead of Coordinated Universal Time (UTC)."], "Bravo time": ["A summer daylight saving time used in most European countries set two hours ahead of Coordinated Universal Time (UTC)."], "foresight": ["An estimate of a future condition."], "prevision": ["An estimate of a future condition."], "weather forecast": ["A branch of science that studies the dynamics of the atmosphere and the direct effects of the atmosphere upon the Earth's surface, oceans and inhabitants, focusing particularly on weather and weather conditions.", "A prediction of future weather, for a specific location."], "live together": ["To cohabit as a couple without being married."], "porpoise": ["A short-snouted genus of the dolphin family, 1.2 to 2.5 metres (4 to 8 feet) long, gregarious in habits, yielding an oil and leather."], "argan oil": ["An oil produced from the kernels of the argan tree, endemic to Morocco."], "grin like a Cheshire cat": ["To display a very wide smile, as a sign of great happiness."], "grin from ear to ear": ["To display a very wide smile, as a sign of great happiness."], "smile from ear to ear": ["To display a very wide smile, as a sign of great happiness."], "argan": ["A species of tree that is endemic to parts of Morocco and Algeria and cultivated for its oil-rich seeds."], "argan tree": ["A species of tree that is endemic to parts of Morocco and Algeria and cultivated for its oil-rich seeds."], "semiotic": ["Of or pertaining to signs.", "Of or pertaining to semiotics."], "silken": ["Made of silk.", "Resembling silk in texture or appearance."], "silky": ["Resembling silk in texture or appearance."], "velvet": ["A closely woven fabric (originally of silk, now also of cotton or man-made fibres) with a thick short pile on one side.", "Made of velvet."], "velvety": ["Resembling velvet in appearance or texture."], "brinkmanship": ["The practice of pushing a dangerous situation to the verge of disaster in order to achieve the most advantageous outcome."], "Mother Nature": ["A common personification of nature that focuses on the life-giving and nurturing features of nature by embodying it in the form of the mother.", "The earth, as the source and nurturer of humanity."], "Mother Earth": ["A common personification of nature that focuses on the life-giving and nurturing features of nature by embodying it in the form of the mother.", "The earth, as the source and nurturer of humanity."], "durum": ["A species of wheat which has a high protein and gluten content."], "durum wheat": ["A species of wheat which has a high protein and gluten content."], "macaroni wheat": ["A species of wheat which has a high protein and gluten content."], "common wheat": ["A wheat species that is cultivated around the world."], "bread wheat": ["A wheat species that is cultivated around the world."], "start the engine": ["To initiate the engine of a vehicle."], "set in motion": ["(For a vehicle) To begin to move."], "pull away": ["(For a vehicle) To begin to move.", "To pull back or move away or backward."], "pulling away": ["(For a vehicle) The act of beginning to move."], "hill start": ["The pulling away of a car on an up gradient.", "To pull away a car on an up gradient."], "concentration camp": ["A guarded compound used by the Nazis during the second World War for the imprisonment of civilians considered as enemies."], "Nazi concentration camp": ["A guarded compound used by the Nazis during the second World War for the imprisonment of civilians considered as enemies."], "Osaka": ["A city in the Kansai region of Japan's main island of Honsh\u016b."], "Nagoya": ["The the fourth most populous urban area in Japan located on the Pacific coast in the Ch\u016bbu region on central Honsh\u016b."], "Tainan": ["A city in southern Taiwan, the fourth largest after Taipei, Kaohsiung, and Taichung."], "Taichung": ["A city located in west-central Taiwan with a population of just over one million people, making it the third largest city on the island after Taipei and Kaohsiung."], "Kaohsiung": ["A city located in southwestern Taiwan."], "Busan": ["The largest port city in South Korea and the fifth largest port in the world."], "Incheon": ["The largest seaport on the west coast of South Korea and home to the country's largest airport."], "Daegu": ["The third largest metropolitan area in South Korea."], "Casablanca": ["The largest city in Morocco, located on the Atlantic Ocean."], "Fes": ["The third largest city in Morocco."], "Fez": ["The third largest city in Morocco."], "Marrakech": ["An important and former imperial city in Morocco, located near the foothills of the snow-capped Atlas Mountains."], "hatter": ["Someone whose profession it is to make and sell hats."], "hatmaker": ["Someone whose profession it is to make and sell hats."], "milliner": ["Someone whose profession it is to make and sell hats."], "hatted": ["Wearing a hat."], "top-hatted": ["Wearing a top hat."], "Shanghai": ["A metropolis in eastern China. Located at the middle part of the coast of mainland China, it sits at the mouth of the Yangtze."], "ozone hole": ["An area of the ozone layer over Earth's polar regions where the ozone concentration is relatively low."], "hole in the ozone layer": ["An area of the ozone layer over Earth's polar regions where the ozone concentration is relatively low."], "Delhi": ["The largest metropolis by area and the second-largest metropolis by population in India."], "least tern": ["A tern of the species Sternula antillarum that breeds in North America and locally in northern South America."], "tern": ["A seabird in the family Sternidae found worldwide."], "Bosphorus": ["A strait that forms part of the boundary between Europe and Asia."], "Istanbul Strait": ["A strait that forms part of the boundary between Europe and Asia."], "Atlantic bluefin tuna": ["(Thunnus thynnus) Species of tuna fish, living in both the Western and the Eastern Atlantic Ocean and extending into the Mediterranean Sea and the Black Sea."], "giant bluefin tuna": ["(Thunnus thynnus) Species of tuna fish, living in both the Western and the Eastern Atlantic Ocean and extending into the Mediterranean Sea and the Black Sea."], "tunny": ["(Thunnus thynnus) Species of tuna fish, living in both the Western and the Eastern Atlantic Ocean and extending into the Mediterranean Sea and the Black Sea."], "brown pelican": ["The smallest of the eight species of pelican (Pelecanus occidentalis)."], "bottlenose dolphin": ["A dolphin of the genus Tursiops, the most common and well-known members of the family Delphinidae."], "Lahore": ["The capital of the Pakistani province of Punjab and the second largest city in Pakistan after Karachi."], "Chongqing": ["A major city in southwestern China."], "hydrogeologist": ["A scientist skilled in hydrogeology."], "Bangalore": ["The capital of the Indian state of Karnataka. Located on the Deccan Plateau in the south-eastern part of Karnataka, Bangalore is India's third most populous city."], "Tianjin": ["A metropolis in Northeastern China."], "local track": ["Road with no administrative classification. They typically form the lowest form of the interconnecting grid network."], "prudery": ["An instance of prudish behaviour or talk."], "Kolkata": ["The capital of the Indian state of West Bengal, which is located in eastern India on the east bank of the Hooghly River."], "Calcutta": ["The capital of the Indian state of West Bengal, which is located in eastern India on the east bank of the Hooghly River."], "Chennai": ["The capital city of the Indian state of Tamil Nadu."], "Madras": ["The capital city of the Indian state of Tamil Nadu."], "Surat": ["The Commercial Capital City of Gujarat and India's eighth largest metropolitan city."], "Yangon": ["The largest city and the most important commercial center of Burma."], "Rangoon": ["The largest city and the most important commercial center of Burma."], "Johannesburg": ["The largest city in South Africa."], "Durban": ["The third largest city in South Africa, forming part of the eThekwini metropolitan municipality."], "Jeddah": ["A Saudi Arabian city located on the coast of the Red Sea and the major urban center of the western part of the country."], "Guangzhou": ["A sub-provincial city located in southern China in the middle of Guangdong Province north of the Pearl River, about 120 km (75 mi) northwest of Hong Kong."], "Canton": ["A sub-provincial city located in southern China in the middle of Guangdong Province north of the Pearl River, about 120 km (75 mi) northwest of Hong Kong."], "Shenyang": ["A sub-provincial city and capital of Liaoning province in Northeast China."], "sub-provincial city": ["In the People's Republic of China, a prefecture-level city that is ruled by a province, but is administered independently in regard to economy and law."], "Hyderabad": ["The capital and the most populous city of the South Indian state of Andhra Pradesh."], "glowworm": ["A firefly belonging to the Lampyris noctiluca species."], "glow-worm": ["A firefly belonging to the Lampyris noctiluca species."], "glow worm": ["A firefly belonging to the Lampyris noctiluca species."], "common glowworm": ["A firefly belonging to the Lampyris noctiluca species."], "common glow-worm": ["A firefly belonging to the Lampyris noctiluca species."], "common glow worm": ["A firefly belonging to the Lampyris noctiluca species."], "Berlusconian": ["Relating to Silvio Berlusconi, an Italian politician."], "Ahmedabad": ["The largest city in the Indian state of Gujarat, located on the banks of the River Sabarmati."], "Berlusconism": ["The political system led by Silvio Berlusconi, an Italian politician.", "Neologism of the Italian language that indicates the values\u200b\u200b, not necessarily positive, and guidelines that govern the political action of Silvio Berlusconi and his attitude towards the public."], "Wuhan": ["The capital of Hubei province and the most populous city in central China."], "Pune": ["The second largest city in the Indian state of Maharashtra. Once the capital of the Maratha Empire, situated 560 metres above sea level on the Deccan plateau at the confluence of the Mula and Mutha rivers."], "Kanpur": ["The largest city in the Indian state of Uttar Pradesh."], "Cawnpore": ["The largest city in the Indian state of Uttar Pradesh."], "Jaipur": ["The capital of the Indian state of Rajasthan."], "red weed": ["A plant of the Papaver rhoeas species in the poppy family."], "semolina": ["Coarse particles that are a result of the milling of durum wheat."], "Shenzhen": ["A sub-provincial city in southern China's Guangdong province, situated immediately north of Hong Kong."], "Dongguan": ["An important industrial city in central Guangdong province of China, located in the Pearl River Delta."], "Essen": ["A city in the central part of the Ruhr area in North Rhine-Westphalia, Germany."], "West Bengal": ["A state in eastern regions of India, whose capital is Kolkata."], "Miami": ["A major city located on the Atlantic coast in southeastern Florida in the United States."], "Mahl": ["An Indo-Aryan language spoken in the Republic of Maldives and also in the island of Maliku (Minicoy) in Union territory of Lakshadweep, India."], "San Francisco": ["The fourth most populous city in California and the 12th most populous city in the United States."], "Manglluri Konkani": ["A dialect of the Goanese Konkani language spoken in the city of Mangalore."], "Brahvi": ["A Dravidian language spoken primarily in the Balochistan region of Pakistan, as well as in Afghanistan and Iran."], "semolina pudding": ["A dessert made of semolina, milk and sugar."], "Konda-Dora Proper": ["A dialect of the Konda-Dora language."], "Santiago de Compostela": ["The capital of the autonomous community of Galicia, located in the north west of Spain in the Province of A Coru\u00f1a."], "Santiago de Cuba": ["The capital city of Santiago de Cuba Province in the south-eastern area of the island nation of Cuba."], "axolotl": ["An urodela of the species Ambystoma mexicanum originating from Mexico."], "foreign accent syndrome": ["A rare medical condition causing a person to speak one's mother tongue with a foreign accent."], "San Juan": ["The capital and most populous municipality in Puerto Rico."], "Kobe": ["The sixth-largest city in Japan and the capital city of Hy\u014dgo Prefecture on the southern side of the main island of Honsh\u016b, approximately 500 km (310.69 mi) west of Tokyo."], "Salvador": ["A city on the northeast coast of Brazil and the capital of the Northeastern Brazilian state of Bahia."], "Sydney": ["The largest city in Australia and Oceania, and the state capital of New South Wales."], "storksbill": ["The common name for flowering plants of the genus Pelargonium."], "cranesbill": ["Any flowering plant of the genus Geranium, the cranesbills, of the family Geraniaceae."], "until further notice": ["Until something else is said or written to change the situation."], "pending further notice": ["Until something else is said or written to change the situation."], "dicrotic": ["(For a pulse) Having two beats for each heart beat."], "dicrotism": ["A condition in which a pulse has two beats for each heart beat."], "tangle": ["To twist together or entwine into a confusing mass."], "mat": ["To twist together or entwine into a confusing mass.", "A flat object for wiping one\u2019s shoes, laid on the floor immediately outside or inside the entrance to a building.", "A thick flat object laid on the floor to protect a person from the hard floor.", "A mass of densely interwoven heavy grass, used as a fence, granary liner, and other functions."], "snarl": ["To twist together or entwine into a confusing mass."], "carrycot": ["A small vehicle in which a baby is pushed around in a lying position."], "Amdo": ["A Tibetan language spoken by the majority of the people of Amdo in North Eastern Tibet, and in the Chinese states of Qinghai and some parts of Sichuan (Aba) and Gansu (Ganlho)."], "Angku": ["An Angkuic language spoken by the Angku people near the common borders of Myanmar, China and Laos."], "Tongren Bonan": ["A dialect of the Bonan language spoken in Tongren county."], "Brokkat Brokpa": ["A Southern Tibetan language spoken by some of the Brokpa people in Dur, in the Bumthang District, in the north-central part of Bhutan."], "Bulang": ["A group of languages of the Mon-Khmer family spoken by the Bulang people in Yunnan Province in China, as well as in Eastern Shan State in Myanmar and outside Mae Sai City in Thailand."], "Nastaliq script": ["A calligraphy style for mainly Persio-Arabic and has been more popular in the Persian and Turkic spheres of influence."], "Thai script": ["An alphabet used to write the Thai language and other minority languages in Thailand. It has forty-four consonants, fifteen vowel symbols that combine into at least twenty-eight vowel forms, and four tone marks."], "Guayaquil": ["The largest and the most populous city in Ecuador."], "Tel Aviv": ["The second-largest city in Israel, situated on the Israeli Mediterranean coastline."], "Jilin City": ["The second largest city in Jilin Province in China."], "Changchun": ["The capital and largest city of Jilin province, located in the northeast of China, in the center of the Songliao Plain."], "Vancouver": ["A coastal city located in the Lower Mainland of British Columbia, Canada."], "Chittagong": ["Bangladesh's main seaport and its second-largest city."], "Cali": ["A city in western Colombia and the capital of the Valle del Cauca Department."], "rhinoscope": ["A tubular instrument used to examine the inside of the nose."], "Haifa": ["City in the north of Israel."], "nasoscope": ["A tubular instrument used to examine the inside of the nose."], "rhinoscopy": ["The examination of the inside of the nose with a rhinoscope."], "Manchester": ["A city situated in the south-central part of North West England, fringed by the Cheshire Plain to the south and the Pennines to the north and east."], "Aleppo": ["The largest Syrian city and the most populous in the Levant, located in northern Syria."], "Kumasi": ["A city in southern central Ghana's Ashanti region, located near Lake Bosomtwe, in the Rain Forest Region about 250 kilometres (160 mi) (by road) northwest of Accra."], "Bandung": ["The capital of West Java province in Indonesia. The city lies on a river basin and surrounded by volcanic mountains."], "Mashhad": ["A large city in Iran and one of the holiest cities in the Shia world, located 850 kilometres (530 mi) east of Tehran, at the center of the Razavi Khorasan Province."], "Puebla": ["The capital of the state of Puebla, and one of the most important colonial cities in Mexico."], "rapacity": ["Excessive desire for possessions and wealth."], "avaritia": ["Excessive desire for possessions and wealth."], "Recife": ["The capital of the Brazilian state of Pernambuco, located where the Beberibe River meets the Capibaribe River to flow into the Atlantic Ocean."], "San Jose": ["The third-largest city in California and the tenth-largest in the United States, located in the southern end of the San Francisco Bay Area, a region commonly referred to as Silicon Valley."], "tube": ["Conduit consisting of a long hollow cylindrical object.", "A hollow material of a tubular, cylindrical form.", "To ride or float on an inflated tube."], "tubing": ["Conduit consisting of a long hollow cylindrical object."], "brigand": ["A villainous or criminal person."], "bring forth": ["To release an offspring from one's own body; to cause to be born."], "Chawng": ["A Western Pearic language spoken by the Chong people in Pursat Province in north-western Cambodia and in several villages in the Chanthaburi Province and Trat Province in Thailand."], "Shong": ["A Western Pearic language spoken by the Chong people in Pursat Province in north-western Cambodia and in several villages in the Chanthaburi Province and Trat Province in Thailand."], "Xong": ["A Western Pearic language spoken by the Chong people in Pursat Province in north-western Cambodia and in several villages in the Chanthaburi Province and Trat Province in Thailand."], "Austro-Asiatic": ["A large language family of Southeast Asia, and also scattered throughout India and Bangladesh."], "Central Chadic": ["A group of languages of the Afro-Asiatic family spoken in Nigeria, Chad and Cameroon."], "Kaw\u00e9sqar": ["A South American people living in Chile in the Strait of Magellan (Brunswick Peninsula, and Wellington, Santa In\u00e9s, and Desolaci\u00f3n islands)."], "onion-plot": ["A land dedicated to the culture of onions."], "onion plot": ["A land dedicated to the culture of onions."], "Drukpa": ["A language of the Sino-Tibetan family, spoken in Bhutan, India and Nepal."], "Ghara": ["A Sino-Tibetan language spoken by the Gahri people on both sides of the India-China border in the western Himalayan mountains."], "Lahuli of Bunan": ["A Sino-Tibetan language spoken by the Gahri people on both sides of the India-China border in the western Himalayan mountains."], "Boonan": ["A Sino-Tibetan language spoken by the Gahri people on both sides of the India-China border in the western Himalayan mountains."], "Punan": ["A Sino-Tibetan language spoken by the Gahri people on both sides of the India-China border in the western Himalayan mountains."], "Poonan": ["A Sino-Tibetan language spoken by the Gahri people on both sides of the India-China border in the western Himalayan mountains."], "Erankad": ["A Sino-Tibetan language spoken by the Gahri people on both sides of the India-China border in the western Himalayan mountains."], "Keylong Boli": ["A Sino-Tibetan language spoken by the Gahri people on both sides of the India-China border in the western Himalayan mountains."], "Bunan": ["A Sino-Tibetan language spoken by the Gahri people on both sides of the India-China border in the western Himalayan mountains."], "russification": ["The process of becoming similar to the Russians, to their culture, and to promote the use of the Russian language."], "martyrology": ["A catalogue or list of martyrs."], "historical martyrology": ["A history of martyrs."], "martyrological": ["Relating to a historical martyrology.", "Relating to a martyrology."], "martyrologist": ["A person who studies martyrs."], "martyromania": ["The mania of wanting to be considered as a martyr."], "Gongdu": ["A Tibetic language spoken by the Gongduk people in a few isolated villages located near the Kurichu river in the Mongar District in eastern Bhutan."], "asphalt concrete": ["A mixture containing tar, used to make roads, pavements etc."], "bituminate": ["To cover with bitumen."], "female governor": ["A woman who heads the government of a colony, state or other sub-national state unit."], "male governor": ["A man who heads the government of a colony, state or other sub-national state unit."], "Okinawa": ["The largest of the Okinawa Islands and the Ryukyu Islands of Japan, also home to Naha, the capital of Okinawa Prefecture."], "Okinawa Island": ["The largest of the Okinawa Islands and the Ryukyu Islands of Japan, also home to Naha, the capital of Okinawa Prefecture."], "island of Okinawa": ["The largest of the Okinawa Islands and the Ryukyu Islands of Japan, also home to Naha, the capital of Okinawa Prefecture."], "Okinawan": ["A Northern Ryukyuan language spoken primarily in the southern half of the island of Okinawa, as well as the surrounding islands of Kerama, Kumejima, Tonaki, Aguni, and a number of smaller peripheral islands.", "An inhabitant of the Okinawa Island."], "topless": ["(Of a woman) Naked from the waist up; having the breast uncovered."], "bare-breasted": ["(Of a woman) Naked from the waist up; having the breast uncovered."], "D\u00fcsseldorf": ["The capital city of the German state of North Rhine-Westphalia and center of the Rhine-Ruhr metropolitan region."], "Faisalabad": ["A city in the province of Punjab, Pakistan, formerly known as Lyallpur."], "Lyallpur": ["A city in the province of Punjab, Pakistan, formerly known as Lyallpur."], "Foshan": ["A prefecture-level city in central Guangdong province, China."], "resolutely": ["Without showing hesitation or indecision."], "cork oak": ["(Quercus suber) A Meditarranean tree with a thick bark from which cork is extracted."], "cork oak forest": ["A forest of cork oak trees."], "corky": ["Relating to cork or to cork oak trees."], "cork oak grower": ["A person who grows cork oak trees."], "gander": ["A male goose."], "Lisboan": ["An inhabitant from Lisbon, Portugal."], "Gan Chinese": ["A Chinese language spoken primarily in central China's Jianxi Province and the south-eastern corner of Hubei Province."], "Jiangxihua": ["A Chinese language spoken primarily in central China's Jianxi Province and the south-eastern corner of Hubei Province."], "Huizhou Chinese": ["A Chinese language spoken in eastern China, primarily in the southern part of Anhui Province on the banks of the Xi'nan River."], "Hui": ["A Chinese language spoken in eastern China, primarily in the southern part of Anhui Province on the banks of the Xi'nan River."], "Hui Chinese": ["A Chinese language spoken in eastern China, primarily in the southern part of Anhui Province on the banks of the Xi'nan River."], "gosling": ["A young goose."], "duckling": ["A young duck."], "Eastern Min": ["A Chinese language mainly spoken in the eastern part of Fujian Province in China, in and near Fuzhou and Ningde. It is also spoken in Brunei, Indonesia (Java and Bali), Malaysia (Peninsular), Singapore and Thailand."], "Southern Min": ["The language of the southern Fujian province of China."], "Wu Chinese": ["One of the major divisions of the Chinese language which is spoken in most of Zhejiang province, the municipality of Shanghai, southern Jiangsu province, as well as smaller parts of Anhui, Jiangxi, and Fujian provinces."], "Hunanese": ["A Chinese language spoken mainly in Hunan province, but also in Sichuan and Guangxi provinces."], "Xiang Chinese": ["A Chinese language spoken mainly in Hunan province, but also in Sichuan and Guangxi provinces."], "female oncologist": ["A female physician specializing in cancer diagnosis and treatment."], "put gloves on": ["To put one's gloves on."], "put gloves off": ["To take one's gloves off."], "CUDA": ["(Compute Unified Device Architecture) A parallel computing architecture for graphics processing units (GPUs) that is accessible to software developers through industry standard programming languages."], "graphics processing unit": ["A dedicated graphics rendering device for a personal computer, workstation, or game console."], "skip class": ["To not go to class without permission."], "cut class": ["To not go to class without permission."], "prebend": ["A stipend paid to a cleric."], "floating point": ["(Of a number) Written in two parts as a mantissa (the value of the digits) and characteristic (the power of a number base) e.g. 0.314159 x 10^2"], "sawyer": ["A person who saws wood."], "floating-point": ["(Of a number) Written in two parts as a mantissa (the value of the digits) and characteristic (the power of a number base) e.g. 0.314159 x 10^2"], "fixed point": ["(Of a number) Represented with a fixed number of digits after the decimal point."], "fixed-point": ["(Of a number) Represented with a fixed number of digits after the decimal point."], "rounding": ["Replacing (a number) by another value that is approximately equal but has a shorter, simpler, or more explicit representation."], "double precision": ["A binary floating-point computer numbering format that occupies 8 bytes (64 bits in modern computers) in computer memory."], "single precision": ["A binary floating-point computer numbering format that occupies 4 bytes (32 bits in modern computers) in computer memory."], "ray tracing": ["A technique for generating an image by tracing the path of light through pixels in an image plane and simulating the effects of its encounters with virtual objects."], "digital imaging": ["The creation of digital images, typically from a physical scene."], "raster graphics image": ["A series of bits that represents a rasterized graphic image, each pixel being represented as a group of bits."], "B\u00e9zier curve": ["A parametric curve widely used in computer graphics and related fields."], "OpenCL": ["(Open Computing Language) A framework for writing programs that execute across heterogeneous platforms consisting of CPUs, GPUs, and other processors."], "OpenGL": ["(Open Graphics Library) A standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics."], "API": ["(Application Programming Interface) An interface implemented by a software program which enables it to interact with other software."], "computer program": ["A software application, or a collection of software applications, designed to perform a specific task."], "software program": ["A software application, or a collection of software applications, designed to perform a specific task."], "stack machine": ["A model of computation in which the computer's memory takes the form of one or more stacks."], "PostScript": ["A dynamically typed concatenative programming language, best known for its use as a page description language in the electronic and desktop publishing areas."], "desktop publishing": ["A combination of a personal computer and WYSIWYG page layout software in order to create publication documents on a computer for either large scale publishing or small scale using printing peripheral devices."], "WYSIWYG": ["(What You See Is What You Get) A system in which content displayed during editing appears very similar to the final output, which might be a printed document, web page, slide presentation or even the lighting for a theatrical event."], "office automation": ["A field that exploits computer machinery and software to digitally create, collect, store, manipulate, and relay office information needed for accomplishing basic tasks and goals."], "document preparation system": ["Software for entering, editing and printing primarily textual information."], "liquid crystal display": ["A thin, flat electronic visual display that uses the light modulating properties of liquid crystals."], "Khamjang": ["A Tai language spoken by the Khamiyang people in the Lohit and Tirap districts of the state of Arunachal Pradesh, north-east of India."], "Khamiyang": ["A Tai language spoken by the Khamiyang people in the Lohit and Tirap districts of the state of Arunachal Pradesh, north-east of India."], "Tai languages": ["A sub-group of the Tai-Kadai languages family."], "strappado": ["A form of torture in which the victim's hands are first tied behind their back, and then he or she is suspended in the air by means of a rope attached to wrists, which most likely dislocates both arms."], "reverse hanging": ["A form of torture in which the victim's hands are first tied behind their back, and then he or she is suspended in the air by means of a rope attached to wrists, which most likely dislocates both arms."], "Palestinian hanging": ["A form of torture in which the victim's hands are first tied behind their back, and then he or she is suspended in the air by means of a rope attached to wrists, which most likely dislocates both arms."], "Perl": ["A high-level, general-purpose, interpreted, dynamic programming language."], "Ruby on Rails": ["An open source web application framework for the Ruby programming language."], "web application": ["An application that is accessed with a Web browser over a network such as the Internet or an intranet."], "web application framework": ["A software framework that is designed to support the development of dynamic websites, web applications and web services."], "DJango": ["An open source web application framework, written in Python, which follows the model-view-controller architectural pattern."], "Struts": ["An open-source web application framework for developing Java web applications."], "Apache Struts": ["An open-source web application framework for developing Java web applications."], "signal processing": ["An area of electrical engineering, systems engineering, and applied mathematics that deals with operations on or analysis of signals, in either discrete or continuous time to perform useful operations on those signals."], "mechatronics": ["The synergistic combination of Mechanical engineering, Electronic engineering, Computer engineering, Control engineering, and Systems Design engineering to create, design, and manufacture useful products."], "multidisciplinarity": ["A non-integrative mixture of disciplines in that each discipline retains its methodologies and assumptions without change or development from other disciplines within the multidisciplinary relationship."], "multidisciplinary": ["Involving several disciplines."], "control engineering": ["The engineering discipline that applies control theory to design systems with predictable behaviors."], "control systems engineering": ["The engineering discipline that applies control theory to design systems with predictable behaviors."], "optical engineering": ["The field of study that focuses on applications of optics."], "molecular engineering": ["Any means of manufacturing molecules."], "protein engineering": ["The process of developing useful or valuable proteins."], "Porto Alegre": ["Brazil's fourth largest metropolitan area and the capital city of the southernmost Brazilian state of Rio Grande do Sul."], "Bengaluru": ["The capital of the Indian state of Karnataka. Located on the Deccan Plateau in the south-eastern part of Karnataka, Bangalore is India's third most populous city."], "Dallas": ["The fourth-largest metropolitan area in the United States, located in North Texas."], "Fort Worth": ["A city in the United States of America, located in North Texas and the second-largest cultural and economic center of the Dallas\u2013Fort Worth\u2013Arlington metropolitan area."], "Basketto": ["A variety of the Ometo language spoken in Basketo, Ethiopia."], "Baskatta": ["A variety of the Ometo language spoken in Basketo, Ethiopia."], "Mesketo": ["A variety of the Ometo language spoken in Basketo, Ethiopia."], "Surabaya": ["Indonesia's second-largest city, and the capital of the province of East Java, located on the northern shore of eastern Java at the mouth of the Mas River and along the edge of the Madura Strait."], "pickup truck": ["A light truck with an open body and low sides and a tailboard."], "pick-up truck": ["A light truck with an open body and low sides and a tailboard."], "\u0130zmir": ["Turkey's third most populous city and the country's second largest port city after Istanbul."], "peripheral device": ["A device attached to a host computer but not part of it, and is more or less dependent on the host."], "Katowice": ["A city in Silesia in southern Poland, on the K\u0142odnica and Rawa rivers (tributaries of the Oder and the Vistula)."], "Khamyang Written": ["The written forms of the Khamyang language."], "naumachia": ["A show in the Ancient Roman world consisting of naval battles.", "The basin where a naumachia took place."], "beef ragout": ["A well-seasoned stew of beef and vegetables."], "eidetic": ["Pertaining to a memory or visual image that can be accurately and readily recalled."], "Kuanhua": ["An aboriginal ethnic group of Laos."], "Kween": ["An aboriginal ethnic group of Laos."], "Khween": ["An aboriginal ethnic group of Laos."], "Khouen": ["An aboriginal ethnic group of Laos."], "G\u01c1ana": ["A Khoisan language of Botswana"], "Gxana": ["A Khoisan language of Botswana"], "Dxana": ["A Khoisan language of Botswana"], "Kayah": ["A Sino-Tibetan people, living mostly in Kayah State of Burma."], "Karenni": ["A Sino-Tibetan people, living mostly in Kayah State of Burma."], "Red Karen": ["A Sino-Tibetan people, living mostly in Kayah State of Burma."], "Lawa": ["An ethnic group in Laos and northern Thailand."], "Basketo Spoken": ["The dialects of the Basketo language."], "Burmese script": ["An abugida script in the Brahmic family used in Burma for writing Burmese."], "Pali Written Burmese Script": ["A written form of the Pali language using the Burmese script."], "Pali Written Devanagari Script": ["A written form of the Pali language using the Devanagari script."], "Pali Written Mongolian Script": ["A written form of the Pali language using the Mongolian script."], "Br\u0101hm\u012b": ["The modern name given to the oldest members of the Brahmic family of scripts."], "Brahmi": ["The modern name given to the oldest members of the Brahmic family of scripts."], "brahmi": ["The modern name given to the oldest members of the Brahmic family of scripts."], "Pali Written Brahmi Script": ["A written form of the Pali language using the Brahmi script."], "Pali Written Sinhalese Script": ["A written form of the Pali language using the Sinhalese script."], "Abugida": ["A writing system in which consonant signs (graphemes) are inherently associated with a following vowel."], "shew": ["To give a proof that something is true."], "substantiation": ["An additional proof that something that was believed (some fact or hypothesis or theory) is correct."], "derivation": ["A line of reasoning that shows how a conclusion follows logically from accepted propositions."], "trace": ["To follow, discover, or ascertain the course of development of something.", "To copy onto a sheet of transparent paper."], "debugger": ["A computer program that is used to test and debug other programs (the \"target\" program)."], "refinement": ["The result of improving something.", "The verifiable transformation of an abstract (high-level) formal specification into a concrete (low-level) executable program."], "morphism": ["An abstraction derived from structure-preserving mappings between two mathematical structures."], "prover": ["A person, device, or program that performs logical or mathematical proofs."], "Eurasian Coot": ["A member of the rail and crake bird family, the Rallidae."], "MOF": ["(Meta-Object Facility) An standard for model-driven engineering."], "model-driven engineering": ["A software development methodology which focuses on creating models, or abstractions, more close to some particular domain concepts rather than computing (or algorithmic) concepts."], "overcook": ["To cook too long or at to high a temperature."], "metamodel": ["A model that defines the language for expressing a model."], "metamodeling": ["The analysis, construction and development of the frames, rules, constraints, models and theories applicable and useful for modeling a predefined class of problems."], "model transformation": ["A transformation that takes as input a model conforming to a given metamodel and produces as output another model conforming to a given metamodel."], "XSLT": ["(Extensible Stylesheet Language Transformations) A declarative, XML-based language used for the transformation of XML documents into other XML documents."], "formulate": ["To use the intellect to plan or design something.", "To elaborate, as of theories and hypotheses."], "denotation": ["The literal meaning of something."], "denotational": ["Of or pertaining to the literal meaning of something."], "denotational semantics": ["A technique of describing the \"meaning\" of programs as mathematical functions, allowing people to prove theorems and reason about programs as mathematical entities."], "dynamic memory allocation": ["The allocation of memory storage for use in a computer program during the runtime of that program."], "garbage collection": ["The periodic or on-demand removal of solid waste from primary source locations using a collection vehicle and followed by the depositing of this waste at some central facility or disposal site.", "An automatic process which attempts to free memory that will not be accessed anymore by a program."], "wastefully": ["In a wasteful manner."], "operational semantics": ["A way to give meaning to computer programs in a mathematically rigorous way by describing how a valid program is interpreted as sequences of computational steps."], "Thai numeral": ["The numerals used in the Thai script."], "Lao numeral": ["A numeral in the Lao script."], "method engineering": ["The discipline to construct new methods from existing methods."], "situational method engineering": ["The construction of methods which are tuned to specific situations of development projects."], "situational": ["Of or pertaining to a particular situation."], "axiomatic semantics": ["An approach based on mathematical logic to proving the correctness of computer programs, closely related to Hoare logic."], "Hoare logic": ["A formal system with a set of logical rules for reasoning rigorously about the correctness of computer programs."], "algebraic semantics": ["A formal semantics of computer programs based on algebras."], "formal semantics": ["The field concerned with the rigorous mathematical study of the meaning of programming languages and models of computation."], "Telugu numeral": ["The numerals used in the Telugu script"], "embryology": ["The branch of biology that studies the formation and early development of organisms."], "Lao script": ["The main script used to write the Lao language and other minority languages in Laos."], "Tai Tham script": ["A script used for three living languages: Northern Thai (that is, Kam Mueang), Tai L\u00fc and Kh\u00fcn."], "Tai Tham": ["A script used for three living languages: Northern Thai (that is, Kam Mueang), Tai L\u00fc and Kh\u00fcn."], "Lanna": ["A Tai language spoken by the Thai Yuan people living in Lannathai, Thailand, as well as in northwestern Laos.", "A script used for three living languages: Northern Thai (that is, Kam Mueang), Tai L\u00fc and Kh\u00fcn."], "Tham": ["A script used for three living languages: Northern Thai (that is, Kam Mueang), Tai L\u00fc and Kh\u00fcn."], "Gujarati script": ["An abugida script, is used to write the Gujarati and Kutchi languages."], "Gujarati Written": ["The written forms of the Gujarati language."], "Gujarati Written Gujarati Script": ["The Gujarati language written with the Gujarati script."], "Gujarati Spoken": ["The dialects of the Gujarati language."], "Parsi": ["The larger of the two Zoroastrian communities of or from the Indian subcontinent. According to tradition, the present-day Parsis descend from a group of Iranian Zoroastrians who immigrated to Western India over 1,000 years ago."], "Parsee": ["The larger of the two Zoroastrian communities of or from the Indian subcontinent. According to tradition, the present-day Parsis descend from a group of Iranian Zoroastrians who immigrated to Western India over 1,000 years ago."], "Gujarat": ["The westernmost state in India; its capital is Gandhinagar and its largest city is Ahmedabad."], "white grub": ["The larva of a cockchafer."], "cockchafer grub": ["The larva of a cockchafer."], "columbarium": ["A place where cinerary urns are stored.", "A large, sometimes architecturally impressive building for housing a large colony of pigeons.", "A large, sometimes architecturally impressive building for housing a large colony of pigeons."], "labial": ["Of or pertaining to the lips.", "(Of sounds) Articulated with the lips.", "A sound articulated with the lips."], "bilabial": ["A sound articulated with both lips.", "(Of sounds) Articulated with both lips."], "iterative": ["Marked by repetition."], "invariance": ["The quality of being resistant to variation."], "interference": ["The act of hindering or obstructing or impeding."], "injerencia": ["The act of hindering or obstructing or impeding."], "calculational": ["Of, pertaining to, or employing calculation."], "signature": ["Your name written in your own handwriting."], "soundness": ["A state or condition free from damage or decay.", "(Of a logical system) Its inference rules prove only formulas that are valid with respect to its semantics."], "subsystem": ["A system that is part of some larger system."], "sub-system": ["A system that is part of some larger system."], "dovecot": ["A large, sometimes architecturally impressive building for housing a large colony of pigeons."], "dovecote": ["A large, sometimes architecturally impressive building for housing a large colony of pigeons."], "mathematical logic": ["A subfield of mathematics with close connections to computer science and philosophical logic."], "symbolic logic": ["A subfield of mathematics with close connections to computer science and philosophical logic."], "spendthrift": ["Someone who spends money prodigiously and who is extravagant and recklessly wasteful."], "speciate": ["Evolve so as to lead to a new species or develop in a way most suited to the environment."], "lawful": ["Conforming to, permitted by, or recognised by law or rules."], "licit": ["Conforming to, permitted by, or recognised by law or rules."], "unlawful": ["Not conforming to, permitted by, or recognised by law or rules."], "illicit": ["Not conforming to, permitted by, or recognised by law or rules."], "prohibited": ["That should not be done, because of moral constraints.", "Not conforming to, permitted by, or recognised by law or rules."], "lapse": ["A temporary failure."], "larch": ["A coniferous tree, of genus Larix, having deciduous leaves"], "neoclassicism": ["Any of several movements in the arts, architecture, literature and music that revived forms from earlier centuries."], "consensual": ["With permission,without coercion."], "young boar": ["A young wild boar."], "wild hog": ["A mammal of the biological family Suidae (Sus scrofa, Linneo 1758), ancestor of the domestic pig"], "wild boar": ["A mammal of the biological family Suidae (Sus scrofa, Linneo 1758), ancestor of the domestic pig", "An adult male wild boar."], "tusker": ["An adult male wild boar."], "wild sow": ["An adult female pig."], "Canary Islands": ["An archipelago off the coast of north-western Africa."], "time flies": ["Time seems to pass quickly."], "barracks": ["A group of buildings used by military personnel as housing."], "betrayal": ["The breaking or violation of a presumptive social contract, trust, or confidence that produces moral and psychological conflict within a relationship amongst individuals, between organizations or between individuals and organizations."], "petrifaction": ["A process by which organic material is converted into stone by impregnation with silica."], "petrification": ["A process by which organic material is converted into stone by impregnation with silica."], "silicification": ["A process by which organic material is converted into stone by impregnation with silica."], "neurocranium": ["The upper portion of the skull."], "nativism": ["The doctrine that some skills or abilities are innate and not learned."], "innatism": ["The doctrine that some skills or abilities are innate and not learned."], "nocturne": ["A dreamlike or pensive musical composition."], "nautical": ["Relating to or involving ships or shipping or navigation or seamen."], "neology": ["The rationalist theology of Germany or the rationalisation of the Christian religion."], "juxtapose": ["To place side by side, especially for contrast or comparison."], "bezel": ["The removable plastic faceplate or front panel of a CD or DVD drive.", "The oblique side or face of a cut gem; especially the upper faceted portion of a brilliant (diamond), which projects from its setting.", "The rim of a ring within which a jewel is set."], "Roe Deer": ["A relatively small, reddish and grey-brown Eurasian deer of the species Capreolus capreolus."], "roebuck": ["A male deer."], "roe": ["A relatively small, reddish and grey-brown Eurasian deer of the species Capreolus capreolus."], "beautician": ["One who does hair styling, manicures, and other beauty treatments."], "borough": ["A fortified town.", "An administrative unit of a city which, under most circumstances according to state or national law, would be considered a larger or more powerful entity.", "An administrative district in some cities, e.g., London."], "acidic": ["Having a pH less than 7, or being sour, or having the strength to neutralize alkalis, or turning a litmus paper red."], "valvule": ["Biological small structure letting a fluid pass through in one direction but blocking or slowing its flow down in the opposite direction."], "alternator": ["An electric generator which produces alternating current."], "ichthyologist": ["Someone who studies or practices ichthyology.", "An expert in ichthyology; one who studies fishes."], "taphonomy": ["The study of decaying organisms over time and how they become fossilized."], "Mandarin simplified numeral": ["The numerals used in the simplified Mandarin writing system."], "Mandarin traditional numeral": ["The numerals used in the traditional Mandarin writing system."], "capitation": ["Performing a headcount.", "A tax of a fixed amount per individual"], "poll tax": ["A tax of a fixed amount per individual"], "head tax": ["A tax of a fixed amount per individual"], "capsize": ["To overturn."], "keel over": ["To overturn."], "carnivorous": ["Predatory or flesh eating."], "curator": ["A person who manages,administers or organizes a collection, either independently or employed by a museum, library, archive or zoo."], "cautious": ["Giving attention."], "Creole": ["A person descended from French ancestors in southern United States (especially Louisiana).", "In present Suriname (former colony Dutch Guyana), any descendant of negro slaves; incorrectly used for coloured people (of mixed race)", "A person of European descent born in the West Indies or Latin America."], "crore": ["Ten millions."], "capitalist": ["A person who is a supporter of capitalism.", "An owner of (considerable amount of) capital.", "Of or relating to capitalism."], "charleston": ["A lively 20th century dance characterized by spasmodic kicking with the knees turned inwards."], "mint": ["A building or institution where money (originally, only coins) is produced under government license. (Source: Wiktionary)", "Any of several plants of the family Labiatae, typically aromatic with square stems. (Source: Wiktionary)"], "Nuosu": ["A sino-tibetan language spoken by the Yi people in rural areas of Sichuan, Yunnan, Guizhou, and Guangxi, in China."], "Northern Yi": ["A sino-tibetan language spoken by the Yi people in rural areas of Sichuan, Yunnan, Guizhou, and Guangxi, in China."], "Liangshan Yi": ["A sino-tibetan language spoken by the Yi people in rural areas of Sichuan, Yunnan, Guizhou, and Guangxi, in China."], "Nosu": ["A sino-tibetan language spoken by the Yi people in rural areas of Sichuan, Yunnan, Guizhou, and Guangxi, in China."], "discrepancy": ["An inconsistency between facts or sentiments."], "demagogic": ["Of or pertaining to demagogy or a demagogue."], "destroyer": ["A small, fast warship with light armament, smaller than a cruiser, but bigger than a frigate."], "lubricate": ["To make slippery or smooth by applying a lubricant."], "lysosomal": ["Of, pertaining to, or originating in lysosomes."], "lysosome": ["An organelle found in all types of animal cells which contains a large range of digestive enzymes capable of splitting most biological macromolecules."], "rejoinder": ["A quick response that involves disagreement or is witty; especially an answer to a reply."], "reinsurer": ["A provider of reinsurance."], "reinsurance": ["Insurance purchased by insurance companies that spreads the risk associated with selling insurance around so the danger of one large monetary loss is minimized."], "taxonomist": ["Someone whose profession is taxonomy, or who performs taxonomy at a professional level."], "tycoon": ["A wealthy and powerful business person."], "magnate": ["A wealthy and powerful business person."], "captain of industry": ["A wealthy and powerful business person."], "mogul": ["A wealthy and powerful business person."], "turban": ["Man\u2019s headdress made by winding a length of cloth round the head."], "lead poisoning": ["A medical condition caused by increased levels of the heavy metal lead in the body."], "plumbism": ["A medical condition caused by increased levels of the heavy metal lead in the body."], "colica pictonium": ["A medical condition caused by increased levels of the heavy metal lead in the body."], "saturnism": ["A medical condition caused by increased levels of the heavy metal lead in the body."], "Devon colic": ["A medical condition caused by increased levels of the heavy metal lead in the body."], "painter's colic": ["A medical condition caused by increased levels of the heavy metal lead in the body."], "gugelhupf": ["A cake cooked in a round form, having a diameter of about 20cm with a hole in the middle."], "trilogy": ["A three-part series of books, movies or electronic games,"], "otology": ["The branch of medicine that deals with the ear, its structure, function and pathology."], "otologist": ["A medical specialist who concentrates on the ear and its afflictions."], "walkover": ["A victory, especially in a sports competition, that is won by large margin."], "tapestry": ["A heavy woven cloth, often with decorative pictorial designs, normally hung on walls."], "triumph": ["To show or prove superior.", "A conclusive success following an effort, conflict, or confrontation of obstacles.", "To prevail over rivals, challenges, or difficulties.", "To express great joy or elation."], "trellis": ["An outdoor garden frame which can be used to grow vines or other climbing plants."], "lightweight": ["Having less than average weight."], "walkaway": ["A victory, especially in a sports competition, that is won by large margin."], "thankless": ["Not appreciated or rewarded.", "Not expressing gratitude."], "ungrateful": ["Not expressing gratitude."], "tachymeter": ["A surveying instrument for quickly finding distances."], "temptation": ["The condition of being tempted."], "degrease": ["To remove grease from something.", "To remove grease from something"], "dendrogram": ["A tree-like diagram used to show the ancestors and descendants of species"], "definite": ["Without any doubt or possibility of deviation."], "taxi driver": ["A person who drives a taxi."], "cabbie": ["A person who drives a taxi."], "tab": ["Credit account, e.g., in a shop or bar."], "pug": ["A small dog of an ancient breed originating in China, having a snub nose, wrinkled face, squarish body, short smooth hair, and curled tail."], "puglet": ["A young pug."], "teleology": ["The study of the purpose of natural occurrences."], "traumatology": ["A branch of medicine that deals with the diagnosis and treatment of trauma."], "traumatologist": ["A medical specialist who has his expertise in the traumatology."], "treatable": ["Capable of being treated; not incurable or intractable."], "jasmine": ["Any of several plants, of the genus Jasminum, mostly native to Asia, having fragrant white or yellow flowers."], "demission": ["The act of voluntarily quitting one's job."], "immersion": ["Sinking of something until it is covered completely with a fluid."], "immerse": ["To put under the surface of a liquid."], "interrogator": ["Someone who interrogates; a person who asks questions in a tough and thorough manner."], "kiosk": ["A small enclosed structure, often freestanding, open on one side or with a window, used as a booth to sell newspapers, cigarettes, etc."], "dry yeast": ["Baker's yeast which is dried and sold in granulated form."], "cake yeast": ["Fresh baker's yeast which is sold compressed to a cube."], "interim": ["A means or measure or an action taken in preparation of."], "inventor": ["Someone who is the first to think of or make something."], "in triplicate": ["With three identical copies."], "impatient": ["Restless and intolerant of delays."], "implosion": ["A sudden inward collapse."], "impedance": ["A measure of the opposition to the flow of an alternating current in a circuit."], "incognito": ["Without being known; in disguise; in an assumed character, or under an assumed title.", "Without revealing one's identity.", "Someone unknown or in disguise, or under an assumed character or name."], "persipan": ["A material used in confectionery which is similar to marzipan but apricot or peach kernels are used instead of almonds."], "parzipan": ["A material used in confectionery which is similar to marzipan but apricot or peach kernels are used instead of almonds."], "adjectival": ["Of, relating to, or functioning as an adjective."], "irretrievable": ["Impossible to recover or recoup or overcome."], "adjectivally": ["In an adjectival manner."], "acupuncturist": ["A person who practices acupuncture."], "adenosine": ["A nucleoside composed of a molecule of adenine attached to a ribose sugar molecule."], "dragoman": ["The official title of a person who would function as an interpreter, translator and official guide between Turkish, Arabic, and Persian-speaking countries and polities of the Middle East and European embassies, consulates, vice-consulates and trading posts."], "improvise": ["To make something up or invent it as one goes on."], "Kola Peninsula": ["A peninsula in the far north of Western Russia, part of Murmansk Oblast."], "doline": ["A natural depression or hole in the surface topography caused by the chemical dissolution of carbonate rocks."], "sinkhole": ["A natural depression or hole in the surface topography caused by the chemical dissolution of carbonate rocks."], "cenote": ["A natural depression or hole in the surface topography caused by the chemical dissolution of carbonate rocks."], "swallet": ["A natural depression or hole in the surface topography caused by the chemical dissolution of carbonate rocks."], "swallow hole": ["A natural depression or hole in the surface topography caused by the chemical dissolution of carbonate rocks."], "sink hole": ["A natural depression or hole in the surface topography caused by the chemical dissolution of carbonate rocks."], "serodifferent couple": ["A couple where only one is HIV-positive."], "sero-different couple": ["A couple where only one is HIV-positive."], "impound": ["To take possession of by force or authority."], "impassable": ["(For an obstacle) That is incapable of being passed, crossed, negotiated or overcome."], "incompetence": ["Inability to perform."], "ineptitude": ["Inability to perform."], "incestuous": ["Pertaining to or engaging in incest."], "impressive": ["That excites attention and feeling and makes a vivid impression."], "appealing": ["Pleasing or appealing to the senses."], "serial killer": ["A person who has killed several people over a long period of time."], "mass murder": ["The act of killing a large number of people over a relatively short period of time."], "mass murderer": ["A person who kills a large number of people over a relatively short period of time."], "imagine": ["To have as opinion, belief, or idea.", "To form a mental image of something."], "catenative": ["Having the ability to catenate, or form chains."], "imprison": ["Putting someone in prison or in jail."], "incarcerate": ["Putting someone in prison or in jail."], "lock up": ["Putting someone in prison or in jail."], "inoculate": ["To introduce an antigenic substance or vaccine into the body to produce immunity to a specific disease."], "glial cell": ["A non-neuronal cell that maintains homeostasis, forms myelin, and provides support and protection for the brain's neurons."], "neuroglia": ["A non-neuronal cell that maintains homeostasis, forms myelin, and provides support and protection for the brain's neurons."], "glia": ["A non-neuronal cell that maintains homeostasis, forms myelin, and provides support and protection for the brain's neurons."], "shot in the neck": ["The act of killing somebody by firing a gunshot into the neck."], "idiographic": ["Of or pertaining to individuals."], "into the bargain": ["Over and above what is expected."], "impulsive": ["Actuated by impulse or by transient feelings."], "imitate": ["To reproduce someone's behavior or looks.", "To follow as a model or a pattern."], "inadequate": ["Unequal to the purpose.", "Not reaching a standard; Not sufficient to meet a need or requirement."], "isogamy": ["A form of sexual reproduction involving gametes of similar morphology, differing only in allele expression in one or more mating-type regions."], "inquisitor": ["An official of the ecclesiastical court of the Inquisition."], "impassioned": ["(A speech, song, etc.) Filled with intense emotion or passion."], "in vogue": ["In the current fashion or style."], "bewitch": ["To cast a spell on someone or something.", "To attract, arouse and hold attention and interest, as by charm or beauty."], "ensorcell": ["To cast a spell on someone or something."], "ensorcel": ["To cast a spell on someone or something."], "neck shot": ["The act of killing somebody by firing a gunshot into the neck."], "Romagnol": ["A language spoken in Italy."], "influential": ["With great influence."], "interpellation": ["The formal right of a parliament to submit formal questions to the government."], "inquisition": ["Any one of several institutions charged with trying and convicting heretics (or other offenders against canon law) within the justice-system of the Roman Catholic Church."], "skipper": ["The person lawfully in command of a sea-going vessel.", "A sprat of the species Sprattus sprattus."], "low Earth orbit": ["A zone of the Earth orbit up to an altitude of 2,000 km."], "LEO": ["A zone of the Earth orbit up to an altitude of 2,000 km."], "low orbit": ["A zone of the Earth orbit up to an altitude of 2,000 km."], "medium Earth orbit": ["A zone of the Earth orbit situated above low Earth orbit (altitude of 2,000 kilometres) and below geostationary orbit (altitude of 35,786 kilometres)."], "immunologist": ["A medical specialist who practices the immunology."], "MEO": ["A zone of the Earth orbit situated above low Earth orbit (altitude of 2,000 kilometres) and below geostationary orbit (altitude of 35,786 kilometres)."], "intermediate circular orbit": ["A zone of the Earth orbit situated above low Earth orbit (altitude of 2,000 kilometres) and below geostationary orbit (altitude of 35,786 kilometres)."], "ICO": ["A zone of the Earth orbit situated above low Earth orbit (altitude of 2,000 kilometres) and below geostationary orbit (altitude of 35,786 kilometres)."], "highly elliptical orbit": ["An elliptic orbit characterized by a relatively low-altitude perigee and an extremely high-altitude apogee."], "HEO": ["An elliptic orbit characterized by a relatively low-altitude perigee and an extremely high-altitude apogee."], "galactocentric orbit": ["An orbit about the center of a galaxy."], "heliocentric orbit": ["An orbit around the Sun."], "circumsolar orbit": ["An orbit around the Sun."], "geocentric orbit": ["An orbit around the planet Earth."], "areocentric orbit": ["An orbit around the planet Mars."], "lunar orbit": ["An orbit around the Moon."], "selenocentric orbit": ["An orbit around the Moon."], "geostationary transfer orbit": ["An intermediate orbit used when launching satellites to reach geostationary orbit."], "GTO": ["An intermediate orbit used when launching satellites to reach geostationary orbit."], "Sakapultek": ["A language spoken in Sacapulas, a municipality in the Guatemalan Department of Quich\u00e9."], "go under the knife": ["To undergo medical surgery."], "insubordination": ["Disobedience to lawful authority."], "instruct": ["To give instructions."], "indiscretion": ["The quality or state of being indiscreet."], "intervene": ["To settle a quarrel; get involved, so as to alter or hinder an action."], "incoherent": ["Without logical or meaningful connection."], "mosquito control": ["The control or reduction of a mosquito population in a certain place."], "intricate": ["Having a great deal of fine detail or complexity."], "identifiable": ["Possible of being distinguished and named."], "insulting": ["Containing insult, or having the intention of insulting."], "tartar": ["A form of hardened dental plaque."], "pay it forward": ["The concept of asking that a good turn be repaid by having it done to others instead."], "tuna fishing boat": ["A fishing boat specialized for tuna fishing."], "tuna fisher": ["A person specialized in tuna fishing."], "half time": ["One of the two halves of a match which are separated by a break in some team sports, such as football and rugby."], "halftime": ["One of the two halves of a match which are separated by a break in some team sports, such as football and rugby."], "half-time": ["One of the two halves of a match which are separated by a break in some team sports, such as football and rugby."], "Spanish Romani": ["A mixed language based on Spanish grammar, with an adstratum of Romani lexical items spoken by the Spanish, Portuguese, French, Bresilian and Catalan Romanies."], "Northern Romani dialects": ["A sub-group of the Romani languages spoken in various Northern European, Central European and Eastern European countries."], "Northern Romani languages": ["A sub-group of the Romani languages spoken in various Northern European, Central European and Eastern European countries."], "Finnish Kalo": ["A language of the Romani language family spoken by the Finnish Kale people in Finland."], "conscription": ["The compulsory enrolment of people to serve in a country's military, usually for a fixed period of time."], "national service": ["The compulsory enrolment of people to serve in a country's military, usually for a fixed period of time."], "military service": ["The compulsory enrolment of people to serve in a country's military, usually for a fixed period of time."], "platinum ring": ["A ring made of platinum."], "white gold": ["An alloy of gold and at least one white metal, usually nickel, manganese or palladium, usually with a rhodium plating."], "rose gold": ["An alloy of gold and copper."], "pink gold": ["An alloy of gold and copper."], "red gold": ["An alloy of gold and copper."], "Russian gold": ["An alloy of gold and copper."], "titanium ring": ["Finger ring made of titanium."], "yellow gold": ["Alloy of gold, silver and copper."], "Djirubal": ["An Australian Aboriginal language spoken in northeast Queensland by about 5 speakers of the Dyirbal tribe."], "Kamilaroi": ["A Pama-Nyungan language of the Wiradhuric subgroup found mostly in South East Australia, traditionally spoken by the Kamilaroi people."], "Baguirmi": ["A Nilo-Saharan language spoken by the Baguirmi people mainly in the Chari-Baguirmi Prefecture of Chad. It was the language of the kingdom of Baguirmi."], "Bats Written": ["The written versions of the Bats language."], "Cassubian": ["A Lechitic language, subgroup of the Slavic languages, spoken in some communes of Pomeranian Voivodeship, Poland.", "Of or relating to the Kashubian people and their language."], "Pomeranian language": ["A group of dialects from the Lechitic cluster of the West Slavic languages."], "Extremaduran Written Latin Script": ["A written form of the Extremaduran language."], "Louisiana Creole": ["A French-based cr\u00e9ole spoken in Louisiana, USA."], "footballing": ["Relating to football."], "Af-Boon": ["An East Cushitic language spoken by a few people in Jilib District, Middle Jubba Region, Somalia."], "hard-on": ["An erect penis.", "An erect male genital."], "stiffy": ["An erect penis."], "Aromanian": ["An Eastern Romance language spoken in Southeastern Europe."], "swim cap": ["A tight-fitting cap that keeps hair dry while swimming."], "ring size": ["A standardized measure for finger rings."], "ring sizing stick": ["Conical instrument which is used to measure the size of a finger ring."], "signet ring": ["Finger ring with a seal which is used to mark documents."], "seal ring": ["Finger ring with a seal which is used to mark documents."], "mosasaur": ["A member of a family of serpentine marine reptiles who lived during the late Cretaceous."], "ichthyosaur": ["A giant marine reptile that resembled fish and dolphins living from the Middle Triassic to the Late Cretaceous."], "plesiosaur": ["A type of carnivorous aquatic reptile living from the Early Jurassic to the Late Cretaceous."], "overripe": ["Too ripe, beyond the perfect ripeness."], "overripen": ["To become overripe."], "matrilocal residence": ["A societal system in which a married couple resides with or near the wife's parents."], "matrilocality": ["A societal system in which a married couple resides with or near the wife's parents."], "uxorilocal residence": ["A societal system in which a married couple resides with or near the wife's parents."], "uxorilocality": ["A societal system in which a married couple resides with or near the wife's parents."], "honeymooner": ["A person who is on their honeymoon."], "Enindhilyagwa": ["An indigenous Australian language isolate spoken by the Warnindhilyagwa people on Groote Eylandt in the Gulf of Carpentaria in northern Australia."], "Konso": ["An East Cushitic language spoken in southwest Ethiopia."], "Conso": ["An East Cushitic language spoken in southwest Ethiopia."], "pregnant woman": ["A woman who is expecting a child."], "expectant mother": ["A woman who is expecting a child."], "imminent": ["About to happen."], "imprecise": ["Not clearly thought out.", "Containing some error or uncertainty.", "Expressed in an unclear fashion."], "incinerate": ["To destroy by burning."], "interviewer": ["Someone who interviews."], "heartburn": ["A burning sensation in the chest caused by regurgitation of gastric acid."], "pyrosis": ["A burning sensation in the chest caused by regurgitation of gastric acid."], "acid indigestion": ["A burning sensation in the chest caused by regurgitation of gastric acid."], "dauphin": ["Title of the heir to the throne of France."], "dauphine": ["Title of the wife of the heir to the throne of France."], "crown princess": ["The heiress apparent to the throne in a royal or imperial monarchy."], "inconvenient": ["Not suited to your comfort, purpose or needs."], "ironing": ["The act of pressing clothes with a hot iron."], "insurer": ["A financial institution that sells insurance."], "assurer": ["A financial institution that sells insurance."], "investor": ["A natural or legal person who invests money in order to make a profit."], "imperceptibly": ["In a manner too imperceptible to be detected."], "autographic": ["Written by a person's own hand."], "autograph": ["Written by a person's own hand.", "A manuscript in the author\u2019s handwriting.", "The hand-written signature of a person, especially a celebrity.", "To write something in one's own handwriting."], "holograph": ["Written by a person's own hand."], "divorce judge": ["Judge who makes the decisions in divorce cases."], "divorce lawyer": ["Laywer who represents clients in divorce cases."], "divorce attorney": ["Laywer who represents clients in divorce cases."], "idealist": ["Someone whose conduct stems from idealism rather than from practicality.", "An unrealistic or impractical visionary."], "inalienable": ["That cannot be surrendered or transferred to someone else."], "indoctrination": ["The teaching of a biased or one-sided ideology."], "immunofluorescence": ["A technique that uses a fluorochrome to indicate a specific antigen-antibody reaction."], "ingot": ["A material, usually metal, that is cast into a shape suitable for further processing."], "play truant": ["To not go to class without permission."], "truant": ["A pupil who often skips classes."], "vuvuzela": ["A plastic blowing horn, typically 65 cm long, that produces a loud and monotone note."], "lepatata": ["A plastic blowing horn, typically 65 cm long, that produces a loud and monotone note."], "stadium horn": ["A plastic blowing horn, typically 65 cm long, that produces a loud and monotone note."], "indigestible": ["Difficult or impossible to digest."], "egress": ["Gimmick or ploy to escape a situation that is unfavorable, difficult or dangerous.", "To come out of (e.g. water)."], "full breakfast": ["A traditional breakfast throughout the British Isles and parts of the English-speaking world, typically including fried eggs, bacon, sausage, toast, baked beans."], "bacon and eggs": ["A traditional breakfast throughout the British Isles and parts of the English-speaking world, typically including fried eggs, bacon, sausage, toast, baked beans."], "fry-up": ["A traditional breakfast throughout the British Isles and parts of the English-speaking world, typically including fried eggs, bacon, sausage, toast, baked beans."], "inappropriate": ["Not suitable for the situation."], "unsuitable": ["Not suitable for the situation."], "unfit": ["Not suitable for the situation."], "impenetrable": ["Not capable of being entered, or pierced."], "incur": ["To expose oneself to something inconvenient"], "impropriety": ["An improper act."], "impressionable": ["Easily impressed or influenced."], "incompetent": ["Lacking normally expected degree of ability."], "inertia": ["The property of a body that resists any change to its uniform motion; equivalent to its mass."], "placentophagy": ["The act of mammals eating the placenta of their young after childbirth."], "intimidation": ["The act of making timid or fearful or of deterring by threats."], "intruder": ["Someone who enters without permission."], "isometry": ["A distance-preserving map between metric spaces."], "inherent": ["That is a natural part or consequence of something."], "instigator": ["A person who intentionally starts something, especially one that starts trouble."], "incapacitate": ["To make someone or something unable to perform a certain action."], "powdered eggs": ["Eggs which have been fully dehydrated and have a shelf life of 5-10 years."], "dried eggs": ["Eggs which have been fully dehydrated and have a shelf life of 5-10 years."], "wall-mounted toilet": ["A toilet that is mounted on the wall and does not touch the floor, and whose tank is in the wall."], "wall-hung toilet": ["A toilet that is mounted on the wall and does not touch the floor, and whose tank is in the wall."], "case of death": ["The death of a person."], "event of death": ["The death of a person."], "fatality": ["The death of a person.", "The capacity of an illness or some other condition of being lethal."], "perseverant": ["Who persevers stubbornly."], "perseverent": ["Who persevers stubbornly."], "persevering": ["Who persevers stubbornly."], "perseveringly": ["In a persevering manner."], "boiled rice": ["Boiled rice."], "electronic eavesdropping": ["The illegal listening of spoken conversations using electronic means."], "gravedigger": ["A worker on a cemetary who digs and closes graves."], "noctilucent cloud": ["A cloud of water ice visible in a deep twilight and located in the mesosphere at altitudes of around 76 to 85 kilometers."], "polar mesospheric cloud": ["A cloud of water ice visible in a deep twilight and located in the mesosphere at altitudes of around 76 to 85 kilometers."], "Rift Valley fever": ["A viral zoonosis causing fever and spreading by the bite of infected mosquitoes."], "RVF": ["A viral zoonosis causing fever and spreading by the bite of infected mosquitoes."], "Rift Valley Fever": ["A viral zoonosis causing fever and spreading by the bite of infected mosquitoes."], "inconceivable": ["Incapable of being conceived or imagined."], "unbelievable": ["Incapable of being conceived or imagined."], "conceivable": ["Capable of eliciting belief or trust."], "imaginable": ["Capable of eliciting belief or trust."], "incredible": ["Incapable of being conceived or imagined."], "red mullet": ["A species of goatfish found in the Mediterranean Sea, east North Atlantic Ocean from Scandinavia to Senegal, and the Black Sea."], "in single file": ["Aligned one behind the other."], "single file": ["Aligned one behind the other."], "planetology": ["The science of planets, or planetary systems, and the solar system."], "planetary scientist": ["A scientist specialized in planetary science."], "planetologist": ["A scientist specialized in planetary science."], "palaver": ["To encourage, influence or persuade by effort.", "A meeting at which there is much talk."], "extremely large telescope": ["A telescope with an aperture of more than 20 meters diameter."], "ELT": ["A telescope with an aperture of more than 20 meters diameter."], "boson": ["A subatomic particle that obeys Bose\u2013Einstein statistics."], "dive": ["The attempt by a football player to gain an unfair advantage by falling to the ground and possibly feigning an injury.", "To fall to the ground and possibly feign an injury in order to gain an unfair advantage in a football match.", "To swim under water.", "To jump into water.", "The act of jumping into water.", "The act of swimming under water.", "A jump downwards, head first, possibly with arms erected before the head, usually ending up in water."], "fermion": ["A particle which obeys Fermi\u2013Dirac statistics."], "fermionic": ["Relating to fermions."], "bosonic": ["Relating to bosons."], "bedwetting": ["The fact of involuntarily urinating while asleep."], "nocturnal enuresis": ["The fact of involuntarily urinating while asleep."], "bedwet": ["To involuntarily urinate while asleep."], "wet the bed": ["To involuntarily urinate while asleep."], "bed wetting": ["The fact of involuntarily urinating while asleep."], "sleepwetting": ["The fact of involuntarily urinating while asleep."], "bedwetter": ["A person who involuntarily urinates while asleep."], "bed wetter": ["A person who involuntarily urinates while asleep."], "bed-wetter": ["A person who involuntarily urinates while asleep."], "plunge": ["To jump into water.", "The act of jumping into water."], "indefensible": ["Incapable of being justified or excused.", "Not able to be protected against attack."], "inexcusable": ["Incapable of being justified or excused."], "unpardonable": ["Incapable of being justified or excused."], "telomerase": ["An enzyme that adds DNA sequence repeats in the telomere regions of a chromosome."], "clathrate": ["A chemical substance consisting of a lattice of one type of molecule trapping and containing a second type of molecule."], "clathrate compound": ["A chemical substance consisting of a lattice of one type of molecule trapping and containing a second type of molecule."], "cage compound": ["A chemical substance consisting of a lattice of one type of molecule trapping and containing a second type of molecule."], "host-guest complex": ["A chemical substance consisting of a lattice of one type of molecule trapping and containing a second type of molecule."], "inclusion compound": ["A chemical substance consisting of a lattice of one type of molecule trapping and containing a second type of molecule."], "adduct": ["A chemical substance consisting of a lattice of one type of molecule trapping and containing a second type of molecule."], "inspire": ["To serve as the inciting cause of.", "To spur on or encourage especially by cheers and shouts."], "introductory": ["Serving as a base or starting point."], "sinuosity": ["A property of curve having many twists or turns."], "verifiable": ["Capable of being demonstrated or proved."], "skid": ["(For a vehicle) To slide without being able to control the vehicle."], "braking": ["The act of decelerating using a mechanical device."], "soup up": ["To increase the power of an motor vehicle by modifying it."], "supe up": ["To increase the power of an motor vehicle by modifying it."], "cochlea": ["A spiralled structure found in the inner ear forming part of the auditory system."], "cochlear": ["Relating to the cochlea."], "own goal": ["A goal scored by a player that is registered against his or her own team."], "six pack": ["A set of six beverage cans or bottles sold together, especially of beer.", "A well developed set of abdominal muscles."], "Ubamer": ["Language spoken in Ethiopia."], "Adnyamathanha": ["An Australian Aboriginal language spoken by the Adnyamathanha people from the Flinders Ranges in South Australia."], "Zenati languages": ["A group of 12 languages and dialects of the Northern Berber language family spoken in North Africa."], "plenum": ["A meeting in which all members are present."], "plenary meeting": ["A meeting in which all members are present."], "vespertine": ["Relating to, or occurring in the evening."], "impossibility": ["Incapability of existing or occurring or being done."], "involvement": ["The act of sharing in the activities of a group."], "look daggers at each other": ["To look at each other with hostility."], "Aranadan Written": ["The written forms of the Aranadan language."], "Chukchi": ["A Palaeosiberian language spoken by Chukchi people in the easternmost extremity of Siberia, mainly in Chukotka Autonomous Okrug."], "Luoravetlan": ["A Palaeosiberian language spoken by Chukchi people in the easternmost extremity of Siberia, mainly in Chukotka Autonomous Okrug."], "Chukcha": ["A Palaeosiberian language spoken by Chukchi people in the easternmost extremity of Siberia, mainly in Chukotka Autonomous Okrug."], "Paraguayan": ["A person from Paraguay.", "Of or relating to Paraguay."], "Fishstix": ["Character of the Asterix comic strips, fishmonger of the Gaulish village."], "Bacteria": ["Character of the Asterix comic strips, wife of Unhygienix."], "white ant": ["A soft-bodied insect of the order Isoptera; individuals feed on cellulose and live in colonies with a caste system comprising three types of functional individuals: sterile workers and soldiers, and the reproductives."], "penalty kick": ["A free kick in football taken from 11 m in front of the goal with only the goalkeeper defending."], "larva stage": ["A stage of growth for some insects, in which they are wingless and resemble a caterpillar or grub after hatching from their egg."], "do one's utmost": ["To do the most or best that one is capable to do."], "try one's utmost": ["To do the most or best that one is capable to do."], "try one's hardest": ["To do the most or best that one is capable to do."], "do one's best": ["To do the most or best that one is capable to do."], "dehydroepiandrosterone": ["A steroid produced by the adrenal glands known for its supposed anti-aging effects."], "DHEA": ["A steroid produced by the adrenal glands known for its supposed anti-aging effects."], "surrogacy": ["An arrangement whereby a woman agrees to become pregnant and deliver a child for a contracted party."], "gestational carrier": ["A woman who carries the pregnancy to delivery after having been implanted with an embryo."], "be enough": ["To meet the need."], "suffice": ["To meet the need."], "be sufficient": ["To meet the need."], "C\u00e6sar": ["An ancient Roman family name, notably that of the Roman Emperor Iulius Caesar."], "Orinjade": ["A character of the Asterix series, princess of an Indian country, daughter of Rajah Wotzit."], "Watziznehm": ["A character of the Asterix series, fakir of an Indian country."], "Wotzit": ["A character of the Asterix series, Rajah of an Indian country."], "Hoodunnit": ["A character of the Asterix series, Vizier of an Indian country."], "Owzat": ["A character of the Asterix series, henchman of the Vizier Hoodunnit."], "Howdoo": ["A character of the Asterix series, elephant-man."], "Prolix": ["A character of the Asterix series, false soothsayer who takes advantage of the credulity of the Gauls."], "ghost driver": ["A driver who drives in the wrong direction, particularly on highways."], "Magadhi": ["A Bihari language spoken in the southern part of the Bihar state of India."], "Central Magahi": ["A dialect of the Magahi language spoken in Patna, Gaya and Hazaribagh, in the middle of the state of Bihar."], "document camera": ["A device consisting of a digital camera and a projector mounted on arms to magnify and display an object to a large audience."], "image presenter": ["A device consisting of a digital camera and a projector mounted on arms to magnify and display an object to a large audience."], "visual presenter": ["A device consisting of a digital camera and a projector mounted on arms to magnify and display an object to a large audience."], "digital overhead": ["A device consisting of a digital camera and a projector mounted on arms to magnify and display an object to a large audience."], "docucam": ["A device consisting of a digital camera and a projector mounted on arms to magnify and display an object to a large audience."], "hairnet": ["A fine, often elastic net worn over long hair to hold it in place."], "caul": ["A fine, often elastic net worn over long hair to hold it in place."], "mm": ["An SI/MKS subunit of length, equal to one thousandth of a metre, with symbol \"mm\"."], "millimetric": ["Having a size of the order of a millimeter."], "table leg": ["One of the legs that hold a table."], "penalty shootout": ["A method used to decide which team progresses to the next stage of a football tournament (or wins the tournament) if a match ends in a draw."], "kicks from the penalty mark": ["A method used to decide which team progresses to the next stage of a football tournament (or wins the tournament) if a match ends in a draw."], "have a drink": ["To meet with other people to discuss while drinking typically alcoholic beverages."], "Khirwara": ["A language spoken by the Khirwar people in the Surguja district at the borders of Madhya Pradesh and Uttar Pradesh, in India."], "Hawaii Pidgin Sign Language": ["A sign language used in Hawaii."], "Kuala Lumpur Sign Language": ["A sign language used mainly in the state of Selangor in Malaysia."], "dealcoholize": ["To remove some or all of the alcohol from beverages."], "dealcoholization": ["The removal of some or all of the alcohol from beverages."], "isotonic": ["(Of a drink) Containing similar concentrations of salt and sugar as in the human body."], "lactose free": ["Not containing lactose."], "milk sugar": ["A sugar which is found most notably in milk."], "pencil case": ["A small case designed to contain pencils, erasers, pens, etc."], "ewer": ["A container shaped like a vase with a handle and a spout used to serve liquids."], "pitcher": ["A container shaped like a vase with a handle and a spout used to serve liquids.", "In a game of baseball, the player responsible to throwing (\"pitching\") the ball over home-plate."], "individualism": ["The moral stance, political philosophy, or social outlook that promotes independence and self-reliance of individual people, while opposing the interference with each person's choices by society, the state, or any other group or institution."], "Mong": ["A dialect continuum of the West Hmongic branch of the Hmong-Mien/Miao-Yao language family spoken by the Hmong people of Sichuan, Yunnan, Guizhou, Guangxi, northern Vietnam, Thailand, and Laos."], "spoiler": ["A comment which discloses plot details of a book, a film, etc."], "Shadhubhasha": ["A dialect of the Bengali language with longer verb inflections and a more Sanskrit-derived vocabulary."], "logatome": ["Artificial word of only one or just some syllables which obeys all the phonotactic rules of a language, but still does not have a meaning of its own."], "lexical gap": ["The absence of a word in a particular language."], "lacuna": ["The absence of a word in a particular language."], "nonce word": ["A word that is used only once to fill a lexical gap in a certain context."], "untranslatability": ["The property of being impossible to translate."], "Silak": ["A Nilo-Saharan language spoken in Sudan."], "Awabagal": ["An extinct Australian Aboriginal language that was spoken by the Awabakal people around Lake Macquarie and Newcastle in New South Wales."], "zootechnics": ["Applied science and art of creating domesticated animals."], "zootechny": ["Applied science and art of creating domesticated animals."], "phonotactics": ["A branch of phonology that deals with restrictions in a language on the permissible combinations of phonemes."], "phonotactical": ["Of or referring to phonotactics."], "barrel": ["A unit of volume used to measure crude oil and other petroleum products and equivalent to 42 US gallons (158.9873 liters).", "Container for liquids."], "oil barrel": ["A unit of volume used to measure crude oil and other petroleum products and equivalent to 42 US gallons (158.9873 liters)."], "Rhine wine": ["Wine that is grown and produced in the Rhine valley."], "Rhenish": ["Wine that is grown and produced in the Rhine valley.", "The regional variety of German spoken in the Rhineland in Germany, which is approximately the former Prussian Rhine Province, or the West half of todays federal state North Rhine-Westphalia plus the North half of todays federal state Rhinland-Palatinate. It is both related to modern Standard German, and the various rather diverse hereditary local languages, and a the same time clearly distinct from either."], "Moselle wine": ["Wine that is grown and produced in the Moselle valley."], "vivisect": ["To dissect a living anima for scientific purposes."], "lapis lazuli": ["Intense blue stone whose main component (25 to 40%) is lazurite."], "lazuli": ["Intense blue stone whose main component (25 to 40%) is lazurite."], "inept": ["Not able to do something."], "as easy as pie": ["Very easily."], "diegesis": ["In narratology, the fact of telling and recounting as opposed to showing.", "The fictional world of a word of literature in which narrated situations and events occur."], "mimesis": ["In narratology, the fact of showing as opposed to telling."], "ox tail": ["The tail of a beef animal."], "ox-tail": ["The tail of a beef animal."], "awful heat": ["A very hot heat."], "boiling heat": ["A very hot heat."], "scorching heat": ["A very hot heat."], "sweltering heat": ["A very hot heat."], "heat stroke": ["A body temperature greater than 40.6 \u00b0C due to environmental heat exposure with lack of thermoregulation."], "Odawa": ["A dialect of the Ojibwe language, spoken by the Ottawa people in southern Ontario in Canada, and northern Michigan in the United States."], "quibbling": ["The \u201eart\u201c of \u201ebeing right\u201c word-for-word on a matter that is dishonest concerning the content and cannnot be advocate for."], "underbelly": ["The negative, often hidden side of something."], "impertinence": ["Improperly forward or bold behaviour."], "disinfest": ["To rid of vermin (insects, rodents etc.)."], "disinfestation": ["The act of getting rid of vermin (insects, rodents etc.)."], "radish": ["The pungent edible root of the Raphanus sativus plant, usually eaten raw in salads."], "angelic choir": ["One of the nine ranks or orders of angels."], "astronomical clock": ["A clock which displays astronomical information, such as the relative positions of the sun, moon, zodiacal constellations, and sometimes major planets."], "cress": ["A fast-growing, edible herb of the Cruciferae family with a mildly pungent, peppery flavour, chiefly eaten raw in salads and sandwiches."], "parsnip": ["The long, pale, edible root of the Pastinaca sativa plant."], "shepherd's pie": ["An English meat pie, made with lamb mince and topped with a mashed potato crust."], "cottage pie": ["An English meat pie, made with beef mince and topped with a mashed potato crust."], "pitch pipe": ["A small device used to supply a pitch reference for musicians without perfect pitch."], "polyphony": ["A musical texture consisting of two or more independent melodic voices, which was particularly popular during the Renaissance period."], "polyphonic": ["Having a musical texture consisting of two or more independent melodic voices."], "string quartet": ["A group of four musicians playing stringed instruments, typically two violins, a viola and a cello.", "A musical composition scored for two violins, a viola and a cello."], "spectator": ["Someone who views an event (sports competition, movie etc.)."], "viewer": ["Someone who views an event (sports competition, movie etc.).", "A software that can display a certain type of document without being able to create such a document."], "onlooker": ["Someone who views an event (sports competition, movie etc.)."], "listener": ["Someone who listens (for example to a speech or some music)."], "stag party": ["A male-only party held for a bachelor that is soon to be married."], "stag night": ["A male-only party held for a bachelor that is soon to be married."], "stag do": ["A male-only party held for a bachelor that is soon to be married."], "bull's party": ["A male-only party held for a bachelor that is soon to be married."], "buck's party": ["A male-only party held for a bachelor that is soon to be married."], "buck's night": ["A male-only party held for a bachelor that is soon to be married."], "hen do": ["A female-only party held for a bachelorette that is soon to be married."], "stagette": ["A female-only party held for a bachelorette that is soon to be married."], "girls' night out": ["A female-only party held for a bachelorette that is soon to be married."], "kitchen tea": ["A female-only party held for a bachelorette that is soon to be married."], "multiple myeloma": ["Cancer that arises in plasma cells, a type of white blood cell."], "MM": ["Cancer that arises in plasma cells, a type of white blood cell."], "plasma cell myeloma": ["Cancer that arises in plasma cells, a type of white blood cell."], "Kahler's disease": ["Cancer that arises in plasma cells, a type of white blood cell."], "osteolytic": ["Relating to, or causing osteolysis."], "osteolysis": ["The resorption of bone tissue."], "kepone": ["A chlorinated polycyclic ketone insecticide and fungicide with the chemical formula C10Cl10O."], "chlordecone": ["A chlorinated polycyclic ketone insecticide and fungicide with the chemical formula C10Cl10O."], "corona": ["The part of the Sun's atmosphere located above the chromosphere and extending millions of kilometers into space."], "Southwestern Guiyang Miao": ["A language spoken by the Guiyang Miao people living on the mountaintops in Pingba, Qingzhen and Changshun counties as well as in the Guiyang and Anshun municipalities in Guizhou Province of China."], "Central Morocco Tamazight": ["A Berber language of the Afro-Asiatic language family, spoken by 3 to 5 million people in Central Morocco, as well as by much smaller communities in Algeria and France."], "Braber": ["A Berber language of the Afro-Asiatic language family, spoken by 3 to 5 million people in Central Morocco, as well as by much smaller communities in Algeria and France."], "Tamazight": ["A Berber language of the Afro-Asiatic language family, spoken by 3 to 5 million people in Central Morocco, as well as by much smaller communities in Algeria and France."], "belatedly": ["After the expected or usual time."], "tardy": ["Occurring after the expected or usual time."], "delayed": ["Occurring after the expected or usual time."], "lated": ["Occurring after the expected or usual time."], "see below": ["Information in a text used to refer the reader to a place farther on."], "see above": ["Information in a text used to refer the reader to a place earlier on."], "show off": ["A person who tries to impress the others.", "To display or act proudly, ostentatiously or pretentiously."], "show-off": ["A person who tries to impress the others."], "content delivery network": ["A system consisting of multiple computers that contain copies of data, which are located in different places on the network so clients can access the copy closest to them."], "CDN": ["A system consisting of multiple computers that contain copies of data, which are located in different places on the network so clients can access the copy closest to them."], "elastic computing": ["The ability to dynamically provision and de-provision processing, memory, and storage resources to meet demands of peak usage without worrying about capacity planning and engineering for peak usage."], "mashup": ["A Web-based application that combines data and/or functionality from multiple sources.", "The creation of a text, audio, video, book, etc. by combining several pre-existing sources.", "The creation of a new piece of music by combining several pre-existing sources."], "German Shepherd": ["A breed of dog."], "German Shepherd Dog": ["A breed of dog."], "Antiguan Creole": ["A creole language of Antigua and Barbuda, Anguilla, Dominica, Montserrat and Saint Kitts and Nevis."], "Kede": ["An extinct language of the Andaman Islands, India, spoken by the Aka-Kede people."], "yellow-bellied marmot": ["A marmot having a brown-yellow back and a beige-yellow belly and living in the western United States and southwestern Canada."], "rock chuck": ["A marmot having a brown-yellow back and a beige-yellow belly and living in the western United States and southwestern Canada."], "bone fracture": ["The breaking of hard tissue such as bone."], "URI": ["Unequivocal standard name or address of an intellectual resource.", "Address of a web page or resource."], "uniform resource identifier": ["Unequivocal standard name or address of an intellectual resource."], "web address": ["Address of a web page or resource."], "URL": ["Address of a web page or resource."], "midge": ["Any of various small two-winged flies all belonging to the order Diptera."], "Punu": ["A Bantu language spoken by the Bapunu people in the Tchibanga area of Gabon."], "Yipunu": ["A Bantu language spoken by the Bapunu people in the Tchibanga area of Gabon."], "Mpongwe": ["A Bantu language of the Myene group spoken by the Mpongwe people around the city of Libreville."], "grout": ["A thin mortar used to fill gaps between tiles and masonry."], "Akele": ["A Bantu language spoken by the Akele people, living along the Ogoou\u00e9 and Ngounie rivers, and in the lake region around Lambar\u00e9n\u00e9, in Gabon."], "eyes": ["The two eyes of a human being considered as a whole."], "teeth": ["The set of hard, calcareous structures present in the mouth of many vertebrate animals, generally used for eating."], "lungs": ["The two lungs of a human being considered as a whole."], "fingers": ["The fingers of a person considered as a whole."], "lips": ["The two lips of a human being considered as a whole."], "legs": ["The two legs of a human being considered as a whole."], "telephonic": ["Of, pertaining to, or transmitted by telephone."], "forehead": ["The part of the face between the hairline and the eyebrows."], "cheeks": ["The two cheeks of a human being considered as a whole."], "butt cheek": ["One of the two fleshy body parts, which are located at the upper end of the limbs at the rear part of the body."], "ass cheek": ["One of the two fleshy body parts, which are located at the upper end of the limbs at the rear part of the body."], "uvula": ["A small fleshy piece of tissue on the back of the throat which hangs from the middle of the soft palate."], "thighs": ["The two thighs of a human being considered as a whole."], "staphylitis": ["Inflammation of the uvula."], "bones": ["The bones of a human being considered as a whole."], "uvulitis": ["Inflammation of the uvula."], "Ubyx": ["A language of the Northwestern Caucasian group, spoken by the Ubykh people up until the early 1990s."], "Northwest Caucasian": ["A language family of the Caucasus."], "Abkhaz-Adyghe": ["A language family of the Caucasus."], "North Caucasian": ["A language family comprising the Northwest Caucasian family and the Northeast Caucasian family."], "Northeast Caucasian": ["A language family spoken in the Russian republics of Dagestan, Chechnya, Ingushetia, northern Azerbaijan, and in northeastern Georgia, as well as in diaspora populations in Russia, Turkey, and the Middle East."], "South Caucasian": ["A group of Caucasian languages spoken primarily in Georgia."], "Kartvelian": ["A group of Caucasian languages spoken primarily in Georgia."], "costliness": ["The quality of being expensive."], "priceyness": ["The quality of being expensive."], "priciness": ["The quality of being expensive."], "expensiveness": ["The quality of being expensive."], "fixed-wing aircraft": ["A powered heavier-than-air aircraft with fixed wings that obtains lift by the Bernoulli effect and is used for transportation."], "acquired immune deficiency syndrome": ["A disease of the human immune system caused by the human immunodeficiency virus (HIV)."], "acquired immunodeficiency syndrome": ["A disease of the human immune system caused by the human immunodeficiency virus (HIV)."], "uniparental": ["Relating to a family with only one parent"], "single mother": ["A woman who raises a child on her own without a husband or partner."], "single father": ["A man who raises a child on his own without a wife or partner."], "single parent": ["A person who raises a child on his or her own without a spouse or partner."], "price increase": ["The rise of prices of goods and services."], "eonism": ["A condition in which a person identifies himself or herself with the opposite sex, in particular in dress."], "transvestism": ["A condition in which a person identifies himself or herself with the opposite sex, in particular in dress."], "sexo-\u00e6sthetic inversion": ["A condition in which a person identifies himself or herself with the opposite sex, in particular in dress."], "sexo-aesthetic inversion": ["A condition in which a person identifies himself or herself with the opposite sex, in particular in dress."], "damson plum": ["The small, dark-blue or purple fruit of a plum, Prunus insititia."], "caretaker speech": ["A non-standard form of language used by adults when talking to toddlers and infants which is characterized by high pitch, reduced syntactic complexity and simplified vocabulary."], "infant-directed talk": ["A non-standard form of language used by adults when talking to toddlers and infants which is characterized by high pitch, reduced syntactic complexity and simplified vocabulary."], "mommy talk": ["A non-standard form of language used by adults when talking to toddlers and infants which is characterized by high pitch, reduced syntactic complexity and simplified vocabulary."], "dong": ["The male sexual organ for copulation and urination; the tubular portion of the male genitalia (excluding the scrotum)."], "pecker": ["The male sexual organ for copulation and urination; the tubular portion of the male genitalia (excluding the scrotum)."], "prick": ["The male sexual organ for copulation and urination; the tubular portion of the male genitalia (excluding the scrotum)."], "indifferent": ["Not caring.", "With an indifference attitude."], "atrium": ["In many animals, among which the mammals, heart cavity preceding, in the blood circulation, a more muscular ventricle."], "heart atrium": ["In many animals, among which the mammals, heart cavity preceding, in the blood circulation, a more muscular ventricle."], "summer sausage": ["A sausage that is dried and fermented and can be kept without the need of refrigeration."], "swounds": ["A mild swear expressing surprise or indignation."], "immunotherapy": ["Treatment of disease by inducing, enhancing, or suppressing an immune response."], "viraemia": ["The presence of a virus in the bloodstream."], "viremia": ["The presence of a virus in the bloodstream."], "trans-Neptunian": ["Orbiting on average at a greater distance from the Sun than Neptune."], "transneptunian": ["Orbiting on average at a greater distance from the Sun than Neptune."], "steak tartare": ["A meat dish made from finely chopped or minced raw beef."], "crane operator": ["A person who operates a crane."], "mash-up": ["A Web-based application that combines data and/or functionality from multiple sources.", "The creation of a text, audio, video, book, etc. by combining several pre-existing sources.", "The creation of a new piece of music by combining several pre-existing sources."], "subordinating conjunction": ["A conjunction, that is a word or phrase, connecting a subordinate clause to a main clause."], "insane": ["Mentally ill; affected with madness or insanity."], "cellular dedifferentiation": ["A process in which a differentiated cell reverts to an earlier developmental stage."], "dedifferentiation": ["A process in which a differentiated cell reverts to an earlier developmental stage."], "digital mashup": ["The creation of a text, audio, video, book, etc. by combining several pre-existing sources."], "digital mash-up": ["The creation of a text, audio, video, book, etc. by combining several pre-existing sources."], "bootleg": ["The creation of a new piece of music by combining several pre-existing sources."], "mash up": ["The creation of a new piece of music by combining several pre-existing sources."], "color gamut": ["The subset of colors which can be accurately represented in a given circumstance, such as within a given color space or by a certain output device."], "flashball gun": ["A defensive weapon projecting non-perforing rubber balls."], "flash-ball gun": ["A defensive weapon projecting non-perforing rubber balls."], "testing": ["A means of investigation for detecting a situation of discrimination."], "situation testing": ["A means of investigation for detecting a situation of discrimination."], "discrimination testing": ["A means of investigation for detecting a situation of discrimination."], "audit testing": ["A means of investigation for detecting a situation of discrimination."], "paired testing": ["A means of investigation for detecting a situation of discrimination."], "copyleft work": ["Work whose author abandons or gives freely some or all of the rights of use, according to some conditions."], "antivortex": ["A device used to prevent the apparition of a vortex or to limit its effects in a liquid tank."], "parting": ["A line dividing the hair on top of the head."], "affirmative action": ["A policy that takes factors including race, color, religion, sex or national origin into consideration in order to benefit an underrepresented group, usually as a means to counter discrimination."], "reverse discrimination": ["A policy that takes factors including race, color, religion, sex or national origin into consideration in order to benefit an underrepresented group, usually as a means to counter discrimination."], "mainstreaming": ["Someone's insertion into a society or a group."], "empowerment": ["The increase of the spiritual, political, social, or economic strength of a person or a community."], "gender mainstreaming": ["A policy for the equality between men and women."], "color blindness": ["The disregard of racial characteristics in a selection procedure.", "The inability or decreased ability to see color, or perceive color differences, under normal lighting conditions."], "color-blindness": ["The disregard of racial characteristics in a selection procedure.", "The inability or decreased ability to see color, or perceive color differences, under normal lighting conditions."], "colour-blindness": ["The disregard of racial characteristics in a selection procedure.", "The inability or decreased ability to see color, or perceive color differences, under normal lighting conditions."], "colour blindness": ["The disregard of racial characteristics in a selection procedure.", "The inability or decreased ability to see color, or perceive color differences, under normal lighting conditions."], "race blindness": ["The disregard of racial characteristics in a selection procedure."], "resilience": ["The positive capacity of a person or a community to cope with stress and catastrophe."], "psychological resilience": ["The positive capacity of a person or a community to cope with stress and catastrophe."], "Freudian": ["Relating to the Austrian neurologist Sigmund Freud (1856-1939) or his psychological theories."], "jailer": ["A person who guards the prisoners in a jail."], "jailor": ["A person who guards the prisoners in a jail."], "corrections officer": ["A person who guards the prisoners in a jail."], "gaoler": ["A person who guards the prisoners in a jail."], "warder": ["A person who guards the prisoners in a jail."], "correctional officer": ["A person who guards the prisoners in a jail."], "detention officer": ["A person who guards the prisoners in a jail."], "prison warder": ["A person who guards the prisoners in a jail."], "prison officer": ["A person who guards the prisoners in a jail."], "jail guard": ["A person who guards the prisoners in a jail."], "prison guard": ["A person who guards the prisoners in a jail."], "turnkey": ["A person who guards the prisoners in a jail."], "Jacobin": ["A member of a political group that emerged in Paris at the beginning of the French Revolution, and who met in a Dominican convent."], "kodokushi": ["A phenomenon in Japan where more and more people who live alone die alone and remain undiscovered for a long time."], "algorithmics": ["The subdiscipline of informatics or computer science that studies algorithms"], "shot peening": ["A process of cleaning or sold working of a metallic surface consisting of projecting shots at high speed on this surface."], "monocrystalline whisker": ["A monocrystalline filament that grows from a metallic surface and having a very high tensile strength."], "province of Trieste": ["A province in the autonomous Friuli-Venezia Giulia region of Italy."], "erotomania": ["A type of delusion in which the affected person believes that another person, usually a stranger or famous person, is in love with him or her."], "de Cl\u00e9rambault's syndrome": ["A type of delusion in which the affected person believes that another person, usually a stranger or famous person, is in love with him or her."], "erotomane": ["A person who believes that another person, usually a stranger or famous person, is in love with him or her."], "erotomaniac": ["Who believes that another person, usually a stranger or famous person, is in love with him or her ; suffering from erotomania."], "erotomaniacal": ["Who believes that another person, usually a stranger or famous person, is in love with him or her ; suffering from erotomania."], "RSS": ["A family of web feed formats used to publish frequently updated works\u2014such as blog entries, news headlines, audio, and video\u2014in a standardized format."], "Really Simple Syndication": ["A family of web feed formats used to publish frequently updated works\u2014such as blog entries, news headlines, audio, and video\u2014in a standardized format."], "Fedora": ["A general purpose operating system built on top of the Linux kernel, developed by the community-supported Fedora Project and sponsored by Red Hat."], "salp": ["A barrel-shaped tunicate of the family Salpidae, measuring 1 to 10 centimeters."], "tunicate": ["A member of the subphylum Tunicata or Urochordata, a group of underwater saclike filter feeders of the phylum Chordata."], "urochordate": ["A member of the subphylum Tunicata or Urochordata, a group of underwater saclike filter feeders of the phylum Chordata."], "Chewa": ["A Bantu language, national language of Malawi and official language in Zambia. It is also spoken in Mozambique and Zimbabwe."], "Nyanja": ["A Bantu language, national language of Malawi and official language in Zambia. It is also spoken in Mozambique and Zimbabwe."], "Chichewa": ["A Bantu language, national language of Malawi and official language in Zambia. It is also spoken in Mozambique and Zimbabwe."], "Chinyanja": ["A Bantu language, national language of Malawi and official language in Zambia. It is also spoken in Mozambique and Zimbabwe."], "Northern Mbundu": ["A Bantu language spoken by the Ambundu in the north-west of Angola."], "Umbundu": ["A Bantu language spoken by the Southern Mbundu people in the central highlands of Angola."], "South Mbundu": ["A Bantu language spoken by the Southern Mbundu people in the central highlands of Angola."], "Chilunda": ["A Bantu language of Zambia, Angola and the Democratic Republic of the Congo."], "thorn": ["A sharp and hard protrusion that grows on a plant.", "A letter in the Old English, Gothic, Old Norse, and Icelandic alphabets."], "inertial measurement unit": ["An electronic device that measures a craft's velocity, orientation, and gravitational forces, using a combination of accelerometers and gyroscopes."], "IMU": ["An electronic device that measures a craft's velocity, orientation, and gravitational forces, using a combination of accelerometers and gyroscopes."], "inertial unit": ["An electronic device that measures a craft's velocity, orientation, and gravitational forces, using a combination of accelerometers and gyroscopes."], "inertial platform": ["An electronic device that measures a craft's velocity, orientation, and gravitational forces, using a combination of accelerometers and gyroscopes."], "hotspot": ["An area in the middle of a lithospheric plate where magma rises from the mantle and erupts at the Earth's surface.", "A site that offers a wireless Internet access for the public."], "WiFi hotspot": ["A site that offers a wireless Internet access for the public."], "unhappiness": ["The state of being unhappy."], "ride": ["To sit on and control a vehicle (e.g. a bicycle, a motorbike or a car).", "To transport oneself by sitting on the back of a horse.", "To ride over, along, or through (e.g. roads or highways)."], "breathalyzer": ["A device for estimating blood alcohol content from a breath sample."], "breathalyser": ["A device for estimating blood alcohol content from a breath sample."], "vegetable ivory": ["A hard white endosperm extracted from the seeds of the ivory palms."], "palm ivory": ["A hard white endosperm extracted from the seeds of the ivory palms."], "corozo": ["A hard white endosperm extracted from the seeds of the ivory palms."], "tagua": ["A hard white endosperm extracted from the seeds of the ivory palms."], "ivory palm": ["A palm tree of the genus Phytelephas occurring in South America."], "ivory-nut palm": ["A palm tree of the genus Phytelephas occurring in South America."], "tagua palm": ["A palm tree of the genus Phytelephas occurring in South America."], "dodo": ["A flightless bird endemic to the island of Mauritius, whose species is extinct since the 17th century."], "Bucharestian": ["Relating to Bucharest.", "A person originating from Bucharest."], "CRT television": ["A television based on cathode ray tube technology."], "optogenetics": ["A science combining optical and genetic techniques to interact with neural circuits."], "picture frame": ["A container for a painting or photograph."], "C++": ["A statically typed, free-form, multi-paradigm, compiled, general-purpose programming language."], "geochemist": ["A scientist specialized in geochemistry."], "landlocked": ["Lacking direct access to the sea."], "toenail": ["The hard horny plate on top of each toe."], "hangnail": ["A small, torn piece of skin near a fingernail or toenail."], "agnail": ["A small, torn piece of skin near a fingernail or toenail."], "nail bed": ["The skin beneath the nail plate."], "geochemical": ["Relating to geochemistry."], "Jacobin Club": ["A political club during the French Revolution"], "Jacobinism": ["Political movement during the French Revolution which fought for popular sovereignty and the republic."], "internet television": ["Television programs distributed via the Internet."], "online TV": ["Television programs distributed via the Internet."], "internet TV": ["Television programs distributed via the Internet."], "proword": ["Lexical item of relative meaning (i.e. whose interpretation depends essentially on the context), used in place of any word or phrase of absolute meaning (whose meaning does not depend essentially on the context) of one or several grammatical categories if the word, phrase or notion referred to have been previously mentioned, will be mentioned later, are indicated by the context, have to be guessed, kept very general or mysterious."], "Lydia": ["An Iron age kingdom of western Asia Minor located east of ancient Ionia in the modern Turkish provinces of Manisa and \u0130zmir."], "acid-free": ["Not containing acid."], "in medias res": ["A literary technique where the narration starts in the middle of the storyline instead of the beginning.", "In the middle of a storyline.", "Beginning in the middle of its storyline."], "deus ex machina": ["A plot device whereby a seemingly inextricable problem is suddenly and unexpectedly solved with the introduction of some new character, ability, or object."], "relative clause": ["A subordinate clause which modifies a preceding noun or noun phrase and is introduced by a relative pronoun."], "Great Southern Ocean": ["The waters, including ice shelves, that surround the continent of Antarctica, which comprise the southernmost parts of the Pacific, Atlantic and Indian oceans, and also the Ross, Amundsen, Bellingshausen and Weddell seas."], "South Polar Ocean": ["The waters, including ice shelves, that surround the continent of Antarctica, which comprise the southernmost parts of the Pacific, Atlantic and Indian oceans, and also the Ross, Amundsen, Bellingshausen and Weddell seas."], "straitjacket": ["A garment shaped like a jacket with overlong sleeves that can be tied to the back the wearer to restrain him or her."], "strait jacket": ["A garment shaped like a jacket with overlong sleeves that can be tied to the back the wearer to restrain him or her."], "straightjacket": ["A garment shaped like a jacket with overlong sleeves that can be tied to the back the wearer to restrain him or her."], "strait-jacket": ["A garment shaped like a jacket with overlong sleeves that can be tied to the back the wearer to restrain him or her."], "harpist": ["Someone who plays the harp."], "honestly": ["In an honest manner."], "Q'eqchi'": ["A Mayan language of Guatemala, Belize and El Salvador."], "overmorrow": ["The day after tomorrow."], "ereyesterday": ["On the day before yesterday.", "The day before yesterday."], "motorboat": ["A boat that is powered by a motor."], "monarchism": ["Advocacy of the establishment, preservation, or restoration of a monarchy."], "royalism": ["Advocacy of the establishment, preservation, or restoration of a monarchy."], "royalist": ["An advocate of monarchy."], "confesser": ["A priest who hears confession and then gives absolution."], "proword for verb": ["Lexical item of relative meaning (i.e. whose interpretation depends essentially on the context), able to perform any grammatical function of a verb and used in place of any verb or clause of absolute meaning (whose meaning does not depend essentially on the context) if the verb, clause, action or state referred to have been previously mentioned, will be mentioned later, are indicated by the context, have to be guessed, kept very general or mysterious."], "Standard Albanian": ["An Indo-European language spoken primarily in Albania, Kosovo, Greece, Serbia, Montenegro, and the Republic of Macedonia."], "dyadic": ["Relating to a set of two elements."], "female scientist": ["A female expert in at least one area of science who uses the scientific method to do research."], "male scientist": ["A male expert in at least one area of science who uses the scientific method to do research."], ".NET framework": ["A software framework that can be installed on computers running Microsoft Windows operating systems. It includes a large library of coded solutions to common programming problems and a virtual machine that manages the execution of programs written specifically for the framework."], "Common Type System": ["A standard that specifies how Type definitions and specific values of Types are represented in computer memory in Microsoft's .NET Framework."], "CTS": ["A standard that specifies how Type definitions and specific values of Types are represented in computer memory in Microsoft's .NET Framework."], "Common Language Infrastructure": ["An open specification (published under ECMA-335 and ISO/IEC 23271) developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft .NET Framework and the free and open source implementations Mono and Portable.NET."], "CLI": ["An open specification (published under ECMA-335 and ISO/IEC 23271) developed by Microsoft that describes the executable code and runtime environment that form the core of the Microsoft .NET Framework and the free and open source implementations Mono and Portable.NET."], "Common Language Runtime": ["A core component of Microsoft's .NET initiative. It is Microsoft's implementation of the \"Common Language Infrastructure\" (CLI) standard, which defines an execution environment for program code."], "CLR": ["A core component of Microsoft's .NET initiative. It is Microsoft's implementation of the \"Common Language Infrastructure\" (CLI) standard, which defines an execution environment for program code."], "random placement": ["An experimental technique for assigning subjects to different treatments, or no treatment."], "spintronics": ["A technology that exploits the quantum properties of the spins of the electrons to store information."], "magnetoelectronics": ["A technology that exploits the quantum properties of the spins of the electrons to store information."], "spintronic": ["Relating to spintronics."], "horse stable": ["A building used to house and feed horses or other equids."], "Genghis Khan": ["The founder of the Mongol Empire in the 13th century."], "Common Intermediate Language": ["The lowest-level human-readable programming language defined by the Common Language Infrastructure specification and used by the .NET Framework and Mono."], "CIL": ["The lowest-level human-readable programming language defined by the Common Language Infrastructure specification and used by the .NET Framework and Mono."], "just-in-time compilation": ["A method to improve the runtime performance of computer programs, converting code at runtime prior to executing it natively, for example bytecode, into native machine code."], "JIT": ["A method to improve the runtime performance of computer programs, converting code at runtime prior to executing it natively, for example bytecode, into native machine code."], "contract killing": ["Someone who may be hired to kill another person for money."], "hitman": ["Someone who may be hired to kill another person for money."], "professional killer": ["Someone who may be hired to kill another person for money."], "chili con carne": ["A spicy stew made of chili peppers, garlic, onions, meat and often beans and tomatos."], "NetBeans": ["A platform framework for Java desktop applications, and an integrated development environment (IDE) for developing with Java, JavaScript, PHP, Python, Ruby, Groovy, C, C++, Scala, Clojure, and other languages."], "Visual Studio": ["An integrated development environment (IDE) from Microsoft."], "make ends meet": ["To have just enough money to pay one's expenses, in particular food and habitation."], "get by financially": ["To have just enough money to pay one's expenses, in particular food and habitation."], "sans-culotte": ["A member of the poor working class wearing long trousers (instead of knee breeches like the nobles) who had political influence during the French Revolution."], "gaelicization": ["The process of making something Gaelic."], "gaelicisation": ["The process of making something Gaelic."], "indirect speech": ["A linguistic technique to reproduce an utterance by putting it in a subordinate clause and modifying certain grammatical categories such as person, tense or mood."], "reported speech": ["A linguistic technique to reproduce an utterance by putting it in a subordinate clause and modifying certain grammatical categories such as person, tense or mood."], "direct speech": ["A linguistic technique to reproduce an utterance in its original form by enclosing it in quotation marks."], "quoted speech": ["A linguistic technique to reproduce an utterance in its original form by enclosing it in quotation marks."], "free indirect speech": ["A linguistic technique to reproduce an utterance that is similar to indirect discourse but omits the introduction (for example \"he says that\"), leaving the subordinate clause standing on its own."], "free indirect discourse": ["A linguistic technique to reproduce an utterance that is similar to indirect discourse but omits the introduction (for example \"he says that\"), leaving the subordinate clause standing on its own."], "free indirect style": ["A linguistic technique to reproduce an utterance that is similar to indirect discourse but omits the introduction (for example \"he says that\"), leaving the subordinate clause standing on its own."], "insalubrious": ["Posing a risk to health."], "unhealthful": ["Posing a risk to health."], "unsanitary": ["Posing a risk to health."], "insanitary": ["Posing a risk to health."], "unwholesome": ["Posing a risk to health."], "attention whore": ["A person who craves attention and does everything to get it."], "web analytics": ["The analysis of qualitative and quantitative data from a website and the competition, to drive a continual improvement of the online experience that its customers, and potential customers have, which translates into the desired outcomes (online and offline).", "The analysis of qualitative and quantitative data from your website and the competition, to drive a continual improvement of the online experience that your customers, and potential customers have, which translates into your desired outcomes (online and offline). [Avinash Kaushik]"], "sickle cell anaemia": ["A life-long blood disorder characterized by red blood cells that assume an abnormal, rigid, sickle shape."], "sickle-cell anaemia": ["A life-long blood disorder characterized by red blood cells that assume an abnormal, rigid, sickle shape."], "sickle-cell anemia": ["A life-long blood disorder characterized by red blood cells that assume an abnormal, rigid, sickle shape."], "coal tar": ["A brown or black liquid of high viscosity consisting of a mixture of phenols, polycyclic aromatic hydrocarbons (PAHs), and heterocyclic compounds."], "SAX": ["A sequential access parser API for XML. SAX provides a mechanism for reading data from an XML document. It is a popular alternative to the Document Object Model (DOM)."], "Simple API for XML": ["A sequential access parser API for XML. SAX provides a mechanism for reading data from an XML document. It is a popular alternative to the Document Object Model (DOM)."], "DOM": ["A cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML and XML documents."], "Document Object Model": ["A cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML and XML documents."], "XHTML": ["A family of XML markup languages that mirror or extend versions of the widely used Hypertext Markup Language (HTML), the language in which web pages are written."], "Extensible Hypertext Markup Language": ["A family of XML markup languages that mirror or extend versions of the widely used Hypertext Markup Language (HTML), the language in which web pages are written."], "DTD": ["A set of markup declarations that define a document type for SGML-family markup languages (SGML, XML, HTML)."], "Document Type Definition": ["A set of markup declarations that define a document type for SGML-family markup languages (SGML, XML, HTML)."], "XML Schema": ["A description of a type of XML document, typically expressed in terms of constraints on the structure and content of documents of that type, above and beyond the basic syntactical constraints imposed by XML itself."], "RelaxNG": ["A schema language for XML which specifies a pattern for the structure and content of an XML document."], "Application Programming Interface": ["(Application Programming Interface) An interface implemented by a software program which enables it to interact with other software."], "GNOME": ["A desktop environment\u2014a graphical user interface that runs on top of a computer operating system\u2014composed entirely of free and open source software."], "otalgia": ["Pain in the ear."], "chignon": ["A roll of hair that is worn at the back of the head."], "bun": ["A roll of hair that is worn at the back of the head."], "white turnip": ["A root vegetable commonly grown in temperate climates worldwide for its white, bulbous taproot."], "fruitful": ["Productive, conducive, helpful or good to something or someone.", "Bearing a lot of fruit."], "upturn": ["An improvement of the economic situation after an economic crisis."], "national epic": ["An epic poem or a literary work of epic scope which seeks or is believed to capture and express the essence or spirit of a particular nation."], "gravitational lens": ["A massive object (such as a cluster of galaxies) between a light source and the observer, that is able to deflect the light rays."], "ovulate": ["To produce ova."], "ovulatory": ["Pertaining to ovulation."], "Afghani": ["A woman of Afghan nationality or descent."], "SPSS": ["A computer program used for statistical analysis, under development and extension since 1968."], "PSPP": ["A free software application for analysis of sampled data. It has a graphical user interface and conventional command line interface. It is written in C, uses GNU Scientific Library for its mathematical routines, and plotutils for generating graphs."], "data entry": ["The process of getting information into a database, usually done by people typing it in by way of data-entry forms designed to simplify the process."], "foreign key": ["A key used in one table to represent the value of a primary key in a related table of a database."], "primary key": ["A field that uniquely identifies a record in a table of a database."], "RDBMS": ["A program which lets you manage structured information stored in tables and which can handle databases consisting of multiple tables."], "relational database management system": ["A program which lets you manage structured information stored in tables and which can handle databases consisting of multiple tables."], "Data Definition Language": ["A computer language for defining data structures."], "DDL": ["A computer language for defining data structures."], "Data Description Language": ["A computer language for defining data structures."], "entity-relationship model": ["An abstract conceptual representation of structured data."], "functional dependency": ["A constraint between two sets of attributes in a relation."], "many-to-many relationship": ["A type of cardinality that refers to the relationship between two entities A and B in which A may contain a parent row for which there are many children in B and vice versa."], "psora": ["A disorder which affects the skin and joints. It commonly causes red scaly patches to appear on the skin."], "pneumology": ["A branch of medicine that deals with diseases of the lungs and the respiratory tract."], "pulmonology": ["A branch of medicine that deals with diseases of the lungs and the respiratory tract."], "respiratory medicine": ["A branch of medicine that deals with diseases of the lungs and the respiratory tract."], "chest medicine": ["A branch of medicine that deals with diseases of the lungs and the respiratory tract."], "pulselessness": ["The absence of a pulse and therefore blood flow."], "one-to-many relationship": ["A relationship that occurs in a database between tables A and B when each record in A may have many linked records in B but each record in B may have only one corresponding record in A."], "one-to-one relationship": ["A relationship in a database that occurs when there is exactly one record in the first table that corresponds to exactly one record in the related table."], "referential integrity": ["A property of data in a database which, when satisfied, requires every value of one attribute (column) of a relation (table) to exist as a value of another attribute in a different (or the same) relation (table)."], "Baraba Tatar": ["A Turkic language, spoken by about 8,000 people in Russian Siberia, closely related to Tatar."], "ACID": ["The properties atomicity, consistency, isolation and durability that guarantee database transactions are processed reliably."], "unimaginable": ["That cannot be considered."], "unthinkable": ["That cannot be considered."], "billionaire": ["A person who has a net worth of at least one billion units of a currency, usually United States dollar, Euro, or Pound sterling.", "A billionaire man."], "common swift": ["A small bird of the species Apus apus having very short legs."], "falsified": ["Not genuine; imitating something superior."], "Louisiana Regional French": ["A variety of the French spoken primarily in Louisiana, USA."], "Three Laws of Robotics": ["A set of three rules written by Isaac Asimov, which almost all positronic robots appearing in his fiction must obey."], "Three Laws": ["A set of three rules written by Isaac Asimov, which almost all positronic robots appearing in his fiction must obey."], "non-deterministic": ["Unpredictable in terms of observable antecedents and known laws."], "improbably": ["In an improbable manner."], "cabby": ["A person who drives a taxi."], "cabdriver": ["A person who drives a taxi."], "cab driver": ["A person who drives a taxi."], "cabman": ["A person who drives a taxi."], "cosmochemistry": ["A science that studies the origin and development of the substances of the universe."], "chemical cosmology": ["A science that studies the origin and development of the substances of the universe."], "cosmochemist": ["A scientist specialized in cosmochemistry."], "astrochemistry": ["The study of the abundance and reactions of chemical elements and molecules in the universe, and their interaction with radiation."], "astrochemist": ["A scientist specialized in astrochemistry."], "trench foot": ["A disease that consists of numbness, swelling and necrosis of the foot as a result of prolonged exposure to wetness."], "fat foot": ["A disease that consists of numbness, swelling and necrosis of the foot as a result of prolonged exposure to wetness."], "buy a pig in a poke": ["To buy or accept something without seeing or examining it first."], "hypotensive": ["Having abnormally low blood pressure.", "Relating to hypotension."], "anhydride": ["A compound that has lost one or several water molecules."], "anhydrite": ["A mineral composed principally of calcium sulfate (CaSO4)."], "maid": ["A young unmarried woman."], "maiden": ["A young unmarried woman."], "smoke detector": ["A device that detects smoke and sets off an alarm."], "head over heels": ["With the head towards the ground and the legs higher than the body."], "arse over tit": ["With the head towards the ground and the legs higher than the body."], "ass over teakettle": ["With the head towards the ground and the legs higher than the body."], "base over apex": ["With the head towards the ground and the legs higher than the body."], "let the cat out of the bag": ["To reveal a secret."], "spill the beans": ["To reveal a secret."], "kerchief": ["A triangular or square piece of cloth tied around the head or around the neck."], "Sotho": ["A Bantu language, belonging to the Niger-Congo language family spoken by the Basotho nation (modern Lesotho)."], "West Greenlandic": ["An Eskimo-Aleut language spoken in Greenland."], "Kurmanji": ["An Iranian language spoken by the Kurds of northern Syria, Iraq, Turkey and some of the former Soviet republics."], "semipermeable": ["Allowing certain molecules or ions to pass through, but blocking others."], "sit down": ["To move into a position where the upper body is upright and the bottom is resting on a surface or the floor."], "take a seat": ["To move into a position where the upper body is upright and the bottom is resting on a surface or the floor."], "catch a cold": ["To become ill with cold."], "road rage": ["Aggressive or angry behavior by a driver of an automobile or other motor vehicle."], "feminist": ["Of or relating to feminism.", "A person who supports the equality of women with men.", "A woman who supports the equality of women with men."], "Christendom": ["The adherents of Christianity collectively."], "Jewry": ["The adherents of Judaism collectively.", "A part of a town inhabited by Jews."], "Jewish people": ["The adherents of Judaism collectively."], "Jewish quarter": ["A part of a town inhabited by Jews."], "Scandinavian": ["Of or relating to Scandinavia."], "callipygous": ["Having beautifully shaped buttocks."], "bootylicious": ["Having beautifully shaped buttocks."], "bootilicious": ["Having beautifully shaped buttocks."], "callipygian": ["Having beautifully shaped buttocks."], "cacopygian": ["Having ugly buttocks."], "steatopygous": ["Having very large buttocks."], "steatopygian": ["Having very large buttocks."], "steatopygia": ["An excessive accumulation of fat on the buttocks."], "attack vector": ["The path from an attacker to a target. This includes tools and techniques. (Schneider)"], "Jewess": ["A female follower of Judaism."], "ANSI": ["A private non-profit organization that oversees the development of voluntary consensus standards for products, services, processes, systems, and personnel in the United States."], "American National Standards Institute": ["A private non-profit organization that oversees the development of voluntary consensus standards for products, services, processes, systems, and personnel in the United States."], "head office": ["The centre of a organisation's operations or administration."], "search engine": ["A software that is designed to retrieve information related to a query from a database and rank the results."], "of the same name": ["Having the same name as another person, object, entity, etc."], "acrostic": ["A text in which the first letter, syllable or word of each line form a word or a sentence."], "acrostical": ["Written as an acrostic."], "IEEE": ["An international non-profit, professional organization for the advancement of technology related to electricity. It has the most members of any technical professional organization in the world, with more than 395,000 members in around 150 countries."], "Institute of Electrical and Electronics Engineers": ["An international non-profit, professional organization for the advancement of technology related to electricity. It has the most members of any technical professional organization in the world, with more than 395,000 members in around 150 countries."], "ichtyosis": ["A genetic skin disorder characterized by dry skin resembling the scales on a fish."], "Hibernate": ["An object-relational mapping (ORM) library for the Java language, providing a framework for mapping an object-oriented domain model to a traditional relational database."], "oil sand": ["A mixture of bitumen, sand, clay and water."], "extra heavy oil": ["A mixture of bitumen, sand, clay and water."], "bituminous sand": ["A mixture of bitumen, sand, clay and water."], "ANS": ["Nerves that control involuntary muscles."], "visceral nervous system": ["Nerves that control involuntary muscles."], "vegetative nervous system": ["Nerves that control involuntary muscles."], "spectrophotometry": ["The study of the absorbance of a chemical substance by analysing its electromagnetic spectra."], "spectrophotometer": ["A device that measures light intensity as a function of the light source wavelength."], "spectrophotometric": ["Relating to spectrophotometry."], "poniard": ["To kill with a dagger."], "crystallinity": ["The amount of crystalline materials in a solid containing both crystalline and amorphous regions."], "degree of crystallinity": ["The amount of crystalline materials in a solid containing both crystalline and amorphous regions."], "ravish": ["To force sexual intercourse or other sexual activity upon another person, without their consent.", "To delight to a high degree; to hold spellbound."], "take by force": ["To force sexual intercourse or other sexual activity upon another person, without their consent."], "vitiate": ["To force sexual intercourse or other sexual activity upon another person, without their consent."], "luckily": ["By fortunate luck."], "serendipitously": ["By fortunate luck."], "long-legged": ["Having long legs."], "leggy": ["Having long legs."], "short-legged": ["Having short legs."], "long-sleeved": ["Having long sleeves."], "leggings": ["A type of fitted clothing covering the legs, typically made of elastic material."], "Romanian Writtten": ["Written forms of the Romanian language."], "Romanian Spoken": ["Dialects of the Romanian language."], "uncorrected": ["Not corrected."], "corrected": ["With errors removed."], "rectified": ["With errors removed."], "long-haired": ["Having long hair on the head.", "Having fur with long hairs."], "longhair": ["Having long hair on the head."], "short-haired": ["Having short hair on the head."], "fine-pored": ["Having small pores."], "large-pored": ["Having large pores."], "coarse-pored": ["Having large pores."], "Freemason": ["A person belonging to the organization of freemasonry."], "pore": ["A tiny opening in the skin."], "sorority": ["Expression of solidarity among women."], "stoma": ["A small opening on the surface of leaves for gas exchange."], "sweat gland": ["A gland that is used for body temperature regulation and excretes sweat fluid."], "unselfish": ["Not selfish, concerned for the welfare of others."], "selfless": ["Not selfish, concerned for the welfare of others."], "sudoriferous gland": ["A gland that is used for body temperature regulation and excretes sweat fluid."], "perspiratory gland": ["A gland that is used for body temperature regulation and excretes sweat fluid."], "exocrine gland": ["Gland that secretes its products via a duct."], "endocrine gland": ["Gland that secretes its product into the bloodstream."], "sweat": ["A fluid that is secreted by sweat glands in the skin in order to regulate body temperature.", "To secrete sweat."], "sudor": ["A fluid that is secreted by sweat glands in the skin in order to regulate body temperature."], "perspiration": ["A fluid that is secreted by sweat glands in the skin in order to regulate body temperature.", "The production and evaporation of a watery fluid called sweat that is excreted by the sweat glands in the skin of mammals."], "perspire": ["To secrete sweat."], "knit dress": ["A dress made of knitted wool"], "knitted dress": ["A dress made of knitted wool"], "marmoreal": ["Made or consisting of marble."], "hyperhidrosis": ["A condition characterized by abnormally increased perspiration."], "anhidrosis": ["A condition characterized by lack of sweating."], "glandular": ["Of, pertaining to, or resembling a gland."], "adenous": ["Of, pertaining to, or resembling a gland."], "electroencephalogram": ["Graph of the macroscopic electrical activity of the brain."], "EEG": ["Graph of the macroscopic electrical activity of the brain."], "amyotrophic lateral sclerosis": ["A progressive, fatal, neurodegenerative disease caused by the degeneration of motor neurons, the nerve cells in the central nervous system that control voluntary muscle movement."], "ALS": ["A progressive, fatal, neurodegenerative disease caused by the degeneration of motor neurons, the nerve cells in the central nervous system that control voluntary muscle movement."], "cross-site scripting": ["A type of computer security vulnerability typically found in web applications that enables malicious attackers to inject client-side script into web pages viewed by other users."], "XSS": ["A type of computer security vulnerability typically found in web applications that enables malicious attackers to inject client-side script into web pages viewed by other users."], "SQL injection": ["A code injection technique that exploits a security vulnerability occurring in the database layer of an application."], "denial-of-service attack": ["An attempt to make a computer resource unavailable to its intended users; it generally consists of the concerted efforts of a person or people to prevent an Internet site or service from functioning efficiently or at all, temporarily or indefinitely."], "DoS attack": ["An attempt to make a computer resource unavailable to its intended users; it generally consists of the concerted efforts of a person or people to prevent an Internet site or service from functioning efficiently or at all, temporarily or indefinitely."], "bongo drum": ["A small drum, generally played in a pair that are designed to sound harmonically together."], "sweating": ["The production and evaporation of a watery fluid called sweat that is excreted by the sweat glands in the skin of mammals."], "cold drink": ["A drink that is served cold."], "cold beverage": ["A drink that is served cold."], "hot drink": ["A drink that is served hot."], "hot beverage": ["A drink that is served hot."], "Algerian": ["Of or relating to Algeria or the Algerian people.", "Person of Algerian nationality or descent.", "Woman of Algerian nationality or descent."], "candaulism": ["A sexual practice where someone has sexual pleasure in watching his or her partner exposed nude to other people, or having sexual intercourse with other people."], "darshan": ["A phenomen in Hinduism where a person claims having a vision of someone or something divine."], "dry shampoo": ["Powder that is applied to the hair and then brushed out in order to remove fat and dirt."], "bad hair day": ["A day when one's hair seems unmanageable and unattractive."], "unattractive": ["Not attractive."], "Pichilemu": ["A city located in the center of Chile and bordering the Pacific Ocean."], "French window": ["A type of door, having one or more panes of glass into its whole length."], "French door": ["A type of door, having one or more panes of glass into its whole length."], "french window": ["A type of door, having one or more panes of glass into its whole length."], "windshield wiper": ["A device used to remove rain and debris from a windscreen or windshield."], "windscreen wiper": ["A device used to remove rain and debris from a windscreen or windshield."], "binarization": ["Conversion of a picture in two values, generally represented as black and white."], "pharynx": ["The part of the alimentary canal between the oral and nasal cavities and the larynx and esophagus."], "nasopharynx": ["The nasal part of the pharynx, lying behind the nose and above the level of the soft palate."], "oropharynx": ["The oral part of the pharynx, reaching from the uvula to the level of the hyoid bone."], "laryngopharynx": ["The part of the pharynx below and behind the larynx."], "hypopharynx": ["The part of the pharynx below and behind the larynx."], "pharyngeal": ["A sound articulated at the pharynx.", "(Of sounds) Articulated at the pharynx.", "Of or pertaining to the pharynx."], "cigarette lighter": ["A small, reusable, handheld device for creating fire."], "pocket lighter": ["A small, reusable, handheld device for creating fire."], "consumptive": ["Suffering from tuberculosis.", "Of, or relating to consumption."], "oral cavity": ["Cavity that is limited by the lips in front, the cheeks on the side, the soft and hard palate at the top and the floor of the mouth below."], "nasal cavity": ["A cavity above and behind the nose that is limited by the nasal bone and the soft and hard palate."], "nasal fossa": ["A cavity above and behind the nose that is limited by the nasal bone and the soft and hard palate."], "TANSTAAFL": ["An adage communicating the idea that it is impossible to get something for nothing."], "TINSTAAFL": ["An adage communicating the idea that it is impossible to get something for nothing."], "moon landing": ["The arrival of a spacecraft on the surface of a moon."], "there ain\u2019t no such thing as a free lunch": ["An adage communicating the idea that it is impossible to get something for nothing."], "there is no such thing as a free lunch": ["An adage communicating the idea that it is impossible to get something for nothing."], "gargoyle": ["An ugly or ill-tempered woman.", "A carved stone with a spout designed to evacuate water from the roof, represented as a grotesque elongated figure."], "Islamophobia": ["A prejudice against, or an irrational fear of Islam or Muslims."], "Islamophobe": ["A person having prejudice against, or an irrational fear of Islam or Muslims."], "Islamophobic": ["Having prejudice against, or an irrational fear of Islam or Muslims."], "Islamization": ["The process of a society's conversion to the religion of Islam."], "Islamisation": ["The process of a society's conversion to the religion of Islam."], "Islamification": ["The process of a society's conversion to the religion of Islam."], "theft": ["The act of taking illegitimatly possession of something that belongs to others."], "eavesdropping": ["The act of secretly listening to the private conversation of others without their consent."], "thievery": ["The act of taking illegitimatly possession of something that belongs to others."], "larceny": ["The act of taking illegitimatly possession of something that belongs to others."], "man-in-the-middle attack": ["A form of active eavesdropping in which the attacker makes independent connections with the victims and relays messages between them, making them believe that they are talking directly to each other over a private connection, when in fact the entire conversation is controlled by the attacker."], "bucket-brigade attack": ["A form of active eavesdropping in which the attacker makes independent connections with the victims and relays messages between them, making them believe that they are talking directly to each other over a private connection, when in fact the entire conversation is controlled by the attacker."], "MITM": ["A form of active eavesdropping in which the attacker makes independent connections with the victims and relays messages between them, making them believe that they are talking directly to each other over a private connection, when in fact the entire conversation is controlled by the attacker."], "Janus attack": ["A form of active eavesdropping in which the attacker makes independent connections with the victims and relays messages between them, making them believe that they are talking directly to each other over a private connection, when in fact the entire conversation is controlled by the attacker."], "naris": ["Either of the two orifices located on the nose (or on the beak of a bird); used as a passage for air and other gases to travel the nasal passages."], "nosehole": ["Either of the two orifices located on the nose (or on the beak of a bird); used as a passage for air and other gases to travel the nasal passages."], "Web scraping": ["A computer software technique of extracting information from websites. Usually, such software programs simulate human exploration of the Web by either implementing low-level Hypertext Transfer Protocol (HTTP), or embedding certain full-fledged Web browsers."], "cannolo": ["A Sicilian pastry dessert that consists of fried pastry dough filled with a cream of ricotta cheese."], "Mongo": ["A Bantu language spoken by several of the Mongo peoples in central Democratic Republic of the Congo, mostly south of the Congo River."], "Lomongo": ["A Bantu language spoken by several of the Mongo peoples in central Democratic Republic of the Congo, mostly south of the Congo River."], "Nkundo": ["A Bantu language spoken by several of the Mongo peoples in central Democratic Republic of the Congo, mostly south of the Congo River."], "tender loving care": ["Way of caring for someone only with love and tenderness."], "TLC": ["Way of caring for someone only with love and tenderness."], "shove up the cunt": ["(For a man) To have sexual intercourse with a woman."], "podiatrist": ["A specialist in care for the feet.", "A health care practitioner who specializes in the diagnosis and treatment of foot ailments."], "pedicurist": ["A specialist in care for the feet."], "frigophobia": ["The fear of becoming too cold."], "hippopotomonstrosesquipedaliophobia": ["The fear of long words."], "sesquipedaliophobia": ["The fear of long words."], "sesquipedalophobia": ["The fear of long words."], "areligious": ["Indifferent to religious matter."], "irreligious": ["Indifferent to religious matter."], "alpine horn": ["A wind instrument, consisting of a natural wooden horn of conical bore, having a cup-shaped mouthpiece, used by mountain dwellers in Switzerland and elsewhere."], "leporiphobia": ["The fear of rabbits."], "Cavina": ["An Tacanan language spoken by the Araona people in the headwaters of the Manupari river in northwest Bolivia."], "molecular systematics": ["The use of the structure of molecules to gain information on an organism's evolutionary relationships."], "trichotillomania": ["A disorder characterized by the impulse to pull out one's hairs, resulting in noticeable bald patches."], "trichotillosis": ["A disorder characterized by the impulse to pull out one's hairs, resulting in noticeable bald patches."], "trich": ["A disorder characterized by the impulse to pull out one's hairs, resulting in noticeable bald patches."], "peak oil": ["The point in time when the maximum rate of global petroleum extraction is reached."], "Petersburgian": ["A person from the city of Saint Petersburg, Russia.", "Relating to the city of Saint Petersburg, Russia."], "KIA": ["Soldier who has died in war."], "bilocation": ["The ability of a person to be at two places at once."], "multilocation": ["The ability of a person to be at several places at once."], "unsaddle": ["To remove a saddle from a horse or other animal."], "mount": ["Animal that can be used for riding."], "Ugaritic": ["A Semitic language spoken from the 14th through the 12th century BCE, in the ancient city of Ugarit, Syria."], "unhorse": ["To cause to fall from a horse."], "throw off": ["(Of a horse) To cause its rider to fall off."], "great bowerbird": ["A bird of the species Chlamydera nuchalis, 33 to 38 cm long and grey in colour, endemic to northern Australia."], "Ennead": ["A group of nine deities in Egyptian mythology."], "ennead": ["A set consisting of nine elements."], "Knights Templar": ["Christian military order that was founded after the First Crusade in 1119 and banned in 1314."], "Poor Fellow-Soldiers of Christ and of the Temple of Solomon": ["Christian military order that was founded after the First Crusade in 1119 and banned in 1314."], "Order of the Temple": ["Christian military order that was founded after the First Crusade in 1119 and banned in 1314."], "Templars": ["Christian military order that was founded after the First Crusade in 1119 and banned in 1314."], "Templar": ["A member of the Order of the Temple."], "Templar knight": ["A member of the Order of the Temple."], "light blue": ["A light shade of blue."], "dark blue": ["A dark shade of blue."], "purple": ["The resultant colour of the junction of the flesh-color with blue. Colour of the amethyst.", "Of a color intermediate between red and blue."], "lose face": ["To be humiliated and to lose the respect of others."], "murder weapon": ["A weapon that was used to commit murder."], "Jiwarli": ["An extinct Australian Aboriginal language, of the Mantharta group of the large Southwest branch of the Pama-Nyungan family, formerly spoken in Western Australia."], "Tjiwarli": ["An extinct Australian Aboriginal language, of the Mantharta group of the large Southwest branch of the Pama-Nyungan family, formerly spoken in Western Australia."], "measles": ["A childhood viral disease manifested as acute febrile illness associated with cough, coryza, conjunctivitis, spots on the buccal mucosa, and rash starting on the head and neck and spreading to the rest of the body."], "tropical disease": ["A disease that is contracted mostly in tropical and subtropical regions."], "breakbone fever": ["A viral infection cause by a virus of the genus Flavivirus, transmitted to humans by the Aedes aegypti mosquito, and endemic to tropical countries."], "forest day mosquito": ["A mosquito of the Aedes albopictus species, characterized by its black and white striped legs and small, black and white body."], "yellow fever mosquito": ["A mosquito of the species Aedes aegypti, known to spread the dengue fever, Chikungunya and yellow fever."], "Southern German": ["Pertaining to or being from or characteristic of South Germany."], "turkology": ["The study of culture, language and history of Turkic peoples."], "turcology": ["The study of culture, language and history of Turkic peoples."], "calliphorine": ["A necrophagous fly of the family Calliphoridae."], "necrophage": ["An organism that feeds on decaying flesh."], "scavenger": ["An organism that feeds on decaying flesh."], "necrophagous": ["That feeds on decaying flesh."], "necrophagy": ["The fact of feeding on decaying flesh."], "coprophagous": ["That feeds on excrement."], "coprophage": ["An organism that feeds on excrement."], "coprophagy": ["The fact of feeding on excrement."], "scatophagy": ["The fact of feeding on excrement."], "scatophagous": ["That feeds on excrement."], "coprophagia": ["The fact of feeding on excrement."], "scatophage": ["An organism that feeds on excrement."], "cygnet": ["An immature young swan."], "toponomastics": ["The science that studies place names (toponyms)."], "hagiotoponym": ["A toponym refering to holiness."], "hagiotoponymy": ["The study of hagiotoponyms."], "holiness": ["The state or condition of being holy."], "sanctity": ["The state or condition of being holy."], "saintliness": ["The state or condition of being holy."], "Palestine Liberation Organization": ["A political and paramilitary organization founded in 1964 and representative of the Palestinian people in the foreign affairs."], "PLO": ["A political and paramilitary organization founded in 1964 and representative of the Palestinian people in the foreign affairs."], "camel stadium": ["A stadium designed for camel races."], "skunk": ["A mammal of the family Mephitidae best known for its ability to secrete a liquid with a strong, foul-smelling odor."], "long in the tooth": ["(For a person or an animal) Having lived for a relatively long period of time."], "European polecat": ["A mammal of the species Mustela putorius, dark brown with a lighter bandit-like mask across the face."], "fitch": ["A mammal of the species Mustela putorius, dark brown with a lighter bandit-like mask across the face."], "foumart": ["A mammal of the species Mustela putorius, dark brown with a lighter bandit-like mask across the face."], "foulmart": ["A mammal of the species Mustela putorius, dark brown with a lighter bandit-like mask across the face."], "BASH": ["Bourne Again SHell. The most common shell interpreter used under Linux and offered as the default on many Linux systems. Based on the older Bourne sh software."], "BSD UNIX": ["Berkeley Software Distribution UNIX; form of UNIX partially based on the original UNIX source code but also incorporating recent developments. BSD is open source and free for all to use and share, with practically no restrictions."], "bzip2": ["A form of file compression. Together with the older and less-efficient gzip, it is a popular form of file compression under Linux and the equivalent to Zip compression under Windows."], "checksum": ["A mathematical process that can be applied to a file or other data to create a unique number relative to the contents of that file. If the file is modified, the checksum will change, usually indicating that the file in question has failed to download correctly or has been modified in some way.", "The result of a computation during which from a large set of data a small figure or few characters are determined that change, when the data changes."], "compilation": ["The process of transforming all or part of a source program into a program image that contains all the information needed for the program to run.", "Translation of source code into object code by a compiler."], "distro": ["In Linux, a collection of software making up the Linux operating system. The software is usually compiled by either a company or organization. It is designed to be easy to install, administer, and use by virtue of it being an integrated whole. Examples include Ubuntu, SUSE Linux, Red Hat, and Debian."], "CVS": ["A free software that keeps track of all work and all changes in a set of files, and allows several developers (potentially widely separated in space and/or time) to collaborate."], "Concurrent Versions System": ["A free software that keeps track of all work and all changes in a set of files, and allows several developers (potentially widely separated in space and/or time) to collaborate."], "Emacs": ["A seminal text editor and pseudo-shell beloved by UNIX aficionados; can be used for programming tasks, simple word processing, etc."], "inode": ["A data structure on a traditional Unix-style file system such as UFS which stores basic information about a regular file, directory, or other file system object."], "dig up": ["To take an entire plant or a part of it out of the soil, such as potatoes, weeds, or a tree."], "dig out": ["To take an entire plant or a part of it out of the soil, such as potatoes, weeds, or a tree."], "amount to": ["results to, in cases of a summation or difference, of distance measurement, or similar."], "add up to": ["results to, in cases of a summation or difference, of distance measurement, or similar."], "come to": ["To be relevant or of importance to.", "results to, in cases of a summation or difference, of distance measurement, or similar."], "be the essence of": ["To be or constitute a general essence of, to be in the broadest sense identified with or part of, to often come with, to make something or someone special."], "be about": ["To be or constitute a general essence of, to be in the broadest sense identified with or part of, to often come with, to make something or someone special."], "be all about": ["To be or constitute a general essence of, to be in the broadest sense identified with or part of, to often come with, to make something or someone special."], "try to settle": ["To come to an agreement or settlement of a dispute or argument, to attempt to sort something out between parties or to settle a case, to finish animosities."], "sort out": ["To come to an agreement or settlement of a dispute or argument, to attempt to sort something out between parties or to settle a case, to finish animosities."], "try to sort out": ["To come to an agreement or settlement of a dispute or argument, to attempt to sort something out between parties or to settle a case, to finish animosities."], "agree to": ["Come to a mutual understanding or agreement or a common plan, to create an appointment, harmonize mutual ideas about a presumed future."], "agree on": ["Come to a mutual understanding or agreement or a common plan, to create an appointment, harmonize mutual ideas about a presumed future."], "make an appointment to": ["Come to a mutual understanding or agreement or a common plan, to create an appointment, harmonize mutual ideas about a presumed future."], "make a difference": ["To be of (some) importance, to influence something or someone (enough), to impress, to touch."], "make out": ["To spot, detect, recognize, capture, or see something or someone having been unknown, invisible, obscured, too distant, or otherwise not found before.", "To have sex with."], "spot": ["To spot, detect, recognize, capture, or see something or someone having been unknown, invisible, obscured, too distant, or otherwise not found before.", "To detect with the senses.", "To make a spot or mark onto.", "To become spotted.", "To mark with a spot or spots so as to allow easy recognition.", "A round or irregular patch on the surface of a thing having a different color, texture etc."], "object to": ["To have an unwanted negative influence on someone, to be distractive to or for someone, impress someone or something in a troublesome or uneasy way."], "turn off": ["To interrupt the operation of a machine by disconnecting it from its source of power."], "put out": ["To cause annoyance in; disturb, especially by minor irritations.", "(For a woman) To have sexual relationships with someone freely.", "To make something stop burning.", "To totally stop something which is on fire from burning any more."], "douse": ["To make something stop burning."], "have to": ["To be required to do something."], "electrophysiology": ["Study of the electrical properties of biological cells and tissues."], "garden pepper cress": ["(Lepidium sativum) Plant in the family of the Brassicaceae which is used in food preparation."], "pepper grass": ["(Lepidium sativum) Plant in the family of the Brassicaceae which is used in food preparation."], "pepperwort": ["(Lepidium sativum) Plant in the family of the Brassicaceae which is used in food preparation."], "poor man's pepper": ["(Lepidium sativum) Plant in the family of the Brassicaceae which is used in food preparation."], "watercress": ["An edible aquatic or semi-aquatic perennial plant of the species Nasturtium officinale in the Brassicaceae family."], "burn like tinder": ["To catch fire easily."], "Australian field cricket": ["A cricket of the species Teleogryllus oceanicus that is endemic to Oceania."], "Pacific field cricket": ["A cricket of the species Teleogryllus oceanicus that is endemic to Oceania."], "oceanic field cricket": ["A cricket of the species Teleogryllus oceanicus that is endemic to Oceania."], "black field cricket": ["A cricket of the species Teleogryllus oceanicus that is endemic to Oceania."], "rosewood": ["The strong and heavy wood of trees belonging to the genus Dalbergia."], "Brazilian tulipwood": ["Wood of the tree species Dalbergia decipularis which grows only in Brazil."], "Classical Armenian": ["The oldest attested form of the Armenian language which was first written down in the 5th century and continues to be used as liturgical language of the Armenian Apostolic Church."], "Old Armenian": ["The oldest attested form of the Armenian language which was first written down in the 5th century and continues to be used as liturgical language of the Armenian Apostolic Church."], "Liturgical Armenian": ["The oldest attested form of the Armenian language which was first written down in the 5th century and continues to be used as liturgical language of the Armenian Apostolic Church."], "Topkap\u0131 Palace": ["The official and private residence of the sultans of the Ottoman Empire in Istanbul."], "Ottoman": ["A historic language of the Ottoman empire."], "ostotheca": ["A small container that holds the bones of a deceased person."], "have a temperature": ["To have a fever."], "pyrexia": ["A higher than normal temperature of a person (or generally a mammal)."], "Lotuko": ["An Eastern Nilotic language spoken by the Lotuko ethnic group of Eastern Equatoria, an area in Southern Sudan."], "Lotuxo": ["An Eastern Nilotic language spoken by the Lotuko ethnic group of Eastern Equatoria, an area in Southern Sudan."], "fevered": ["Having a fever."], "febrile": ["Having a fever."], "feverish dream": ["Very intense dream that may occur when having a fever."], "stop sign": ["A traffic sign to instruct one to be still and not proceed until the path is clear."], "stoplight": ["A signaling device to control the flow of traffic."], "traffic lamp": ["A signaling device to control the flow of traffic."], "traffic signal": ["A signaling device to control the flow of traffic."], "semaphore": ["A signaling device to control the flow of traffic."], "vocative": ["The grammatical case indicating the person or thing being called upon or addressed in a sentences of invocation, begging, ordering, wish or asking."], "masculine gender": ["Belonging to the masculine grammatical gender."], "socio-economics": ["The study of the interaction between society and economy."], "social economics": ["The study of the interaction between society and economy."], "Lithic": ["A period of history that encompasses the first widespread use of technology in human evolution and the spread of humanity from the savannas of East Africa to the rest of the world."], "stone-age": ["Relating to Stone Age."], "Stone-Age": ["Relating to Stone Age."], "Beagle Boys": ["A group of fictional characters of the Walt Disney universe who constantly try to steal from Scrooge McDuck."], "Donald Fauntleroy Duck": ["A fictional duck with a short temper that was created by Walt Disney."], "Daisy Duck": ["A fictional character of the Disney universe, the girlfriend of Donald Duck."], "Huey Duck": ["A fictional character of the Disney universe, one of the triplets which are Donald Duck's nephews, wearing red."], "Huey": ["A fictional character of the Disney universe, one of the triplets which are Donald Duck's nephews, wearing red."], "Dewey Duck": ["A fictional character of the Disney universe, one of the triplets which are Donald Duck's nephews, wearing blue."], "Dewey": ["A fictional character of the Disney universe, one of the triplets which are Donald Duck's nephews, wearing blue."], "Louie Duck": ["A fictional character of the Disney universe, one of the triplets which are Donald Duck's nephews, wearing green."], "Louie": ["A fictional character of the Disney universe, one of the triplets which are Donald Duck's nephews, wearing green."], "degasification": ["The removal of dissolved gases from liquids."], "limnic eruption": ["A type of eruption in which accumulated carbon dioxide suddenly erupts from a meromictic lake."], "lake overturn": ["A type of eruption in which accumulated carbon dioxide suddenly erupts from a meromictic lake."], "meromictic lake": ["A lake where surface waters and deep waters get mixed less than once a year."], "hippodrome": ["A stadium for horse racing and chariot racing."], "leachate": ["A liquid produced by solid waste."], "ayran": ["A refreshing beverage that consists of yoghurt, cold water and salt."], "lahmacun": ["A round, thin piece of dough topped with seasoned minced meat."], "lahmajoun": ["A round, thin piece of dough topped with seasoned minced meat."], "manti": ["A small dumpling filled with seasoned ground meat popular in Turkish cuisine."], "manty": ["A small dumpling filled with seasoned ground meat popular in Turkish cuisine."], "mantu": ["A small dumpling filled with seasoned ground meat popular in Turkish cuisine."], "rice pudding": ["A dish made from rice mixed with milk and other ingredient, usually sweet."], "Abb\u00e9": ["A Kwa language spoken by the Ab\u00e9 people primarily in the Department of Agboville in C\u00f4te d'Ivoire."], "Abbey": ["A Kwa language spoken by the Ab\u00e9 people primarily in the Department of Agboville in C\u00f4te d'Ivoire."], "Golden Horn": ["An inlet of the Bosphorus that divides the city of Istanbul and forms a natural harbor."], "Sea of Marmora": ["The inland sea that connects the Black Sea to the Aegean Sea, thus separating the Asian part of Turkey from its European part."], "Marmara Sea": ["The inland sea that connects the Black Sea to the Aegean Sea, thus separating the Asian part of Turkey from its European part."], "Propontis": ["The inland sea that connects the Black Sea to the Aegean Sea, thus separating the Asian part of Turkey from its European part."], "Futunan": ["A Polynesian language spoken on the Futuna Island of Wallis and Futuna."], "East-Futunan": ["A Polynesian language spoken on the Futuna Island of Wallis and Futuna."], "crawl along": ["To drive slowly, in order to be able to stop at any moment."], "analogously": ["In an analogous manner."], "the early bird catches the worm": ["Phrase which means that it is worthwhile to get up in the morning and start work early."], "matched filter": ["A filter in telecommunication consisting of correlating a known template signal with an unknown signal to detect the presence of the template in the unknown signal."], "riyal": ["The currency of Qatar."], "minimizer bra": ["A bra designed to make the breast appear smaller than it really is."], "sage": ["A small perennial plant of the species Salvia officinalis, used for medicinal and culinary purpose."], "garden sage": ["A small perennial plant of the species Salvia officinalis, used for medicinal and culinary purpose."], "common sage": ["A small perennial plant of the species Salvia officinalis, used for medicinal and culinary purpose."], "glaciologist": ["A scientist specialized in glaciology."], "glaciological": ["Relating to glaciology."], "final obstruent devoicing": ["A phonological phenomenon of some languages (for example German and Turkish) where voiced consonants become voiceless at the end of a word."], "terminal devoicing": ["A phonological phenomenon of some languages (for example German and Turkish) where voiced consonants become voiceless at the end of a word."], "netbook": ["Portable computer that is smaller, lighter, less expensive and less powerful than regular notebooks."], "kitchen sage": ["A small perennial plant of the species Salvia officinalis, used for medicinal and culinary purpose."], "ramona": ["A small perennial plant of the species Salvia officinalis, used for medicinal and culinary purpose."], "true sage": ["A small perennial plant of the species Salvia officinalis, used for medicinal and culinary purpose."], "culinary sage": ["A small perennial plant of the species Salvia officinalis, used for medicinal and culinary purpose."], "dalmatian sage": ["A small perennial plant of the species Salvia officinalis, used for medicinal and culinary purpose."], "broadleaf sage": ["A small perennial plant of the species Salvia officinalis, used for medicinal and culinary purpose."], "meadow sage": ["A small perennial plant of the species Salvia officinalis, used for medicinal and culinary purpose."], "hemicycle": ["Elements of a building that are arranged to form a semicircular structure."], "alopecia": ["The gradual loss of hair from head or body."], "hair loss": ["The gradual loss of hair from head or body."], "brewer's yeast": ["A yeast made from the one-celled fungus Saccharomyces cerevisiae and used in beer fermentation."], "European corn borer": ["A butterfly of the species Ostrinia nubilalis whose caterpillar is a pest of grain, particularly maize."], "European high-flyer": ["A butterfly of the species Ostrinia nubilalis whose caterpillar is a pest of grain, particularly maize."], "suitability": ["The quality of being suitable."], "Atacama desert": ["A desert in South America, covering a 1,000 km strip of land on the Pacific coast of South America, west of the Andes mountains."], "dummy drug": ["A preparation which is pharmacologically inert but which may have a medical effect based solely on the power of suggestion."], "Early Middle Ages": ["The period of European history lasting from the 5th century to approximately 1000."], "early medieval": ["Of or relating to the Early Middle Ages."], "medi\u00e6val": ["Of or pertaining to the Middle Ages."], "High Middle Ages": ["The period of European history in the 11th, 12th, and 13th centuries (1000\u20131300)."], "high medieval": ["Of or relating to the High Middle Ages."], "Late Middle Ages": ["The period of European history 14th and 15th centuries."], "late medieval": ["Of or relating to the Late Middle Ages."], "go shopping": ["To go out and buy items of daily use, like food, clothing and hygiene articles."], "comanage": ["To jointly manage with others."], "folacin": ["A form of the water-soluble Vitamin B9 which occurs naturally in food and can also be taken as supplements."], "nonprocedurally": ["In a nonprocedural manner."], "sage tea": ["Tea made of sage leaves."], "apple tea": ["Tea made of dried apple pieces."], "mumble": ["To speak unintelligibly and without articulating."], "Chimera": ["A creature in Greek mythology composed of the parts of a lioness, a snake, and a goat."], "Chimaera": ["A creature in Greek mythology composed of the parts of a lioness, a snake, and a goat."], "morbidity": ["A rate representing the proportion of a population affected with a given illness."], "rhesus macaque": ["A macaque of the species Macaca mulatta native from South-East Asia, measuring about 50 centimeters, brown or grey in color and having a hairless pink face."], "rhesus monkey": ["A macaque of the species Macaca mulatta native from South-East Asia, measuring about 50 centimeters, brown or grey in color and having a hairless pink face."], "ethologist": ["A scientist specialized in ethology."], "ethological": ["Relating to ethology."], "chimaera": ["An organism with at least two genetically distinct types of cells.", "An impossible or foolish fantasy or project."], "morbidity rate": ["A rate representing the proportion of a population affected with a given illness."], "bhunder": ["A macaque of the species Macaca mulatta native from South-East Asia, measuring about 50 centimeters, brown or grey in color and having a hairless pink face."], "Hausa (Ajami)": ["Hausa language written in Ajami, a variant of the Arabic script."], "Hausa (Latin)": ["Hausa language written with the Latin Script."], "Falkland Islands English": ["The variety of English spoken on the Falkland Islands."], "deceleration": ["The amount by which a speed or velocity decreases.", "The act of decreasing the speed of an object.", "The state of becoming slower."], "gnomonics": ["The art or science relating to sundials."], "fetal": ["Of or referring to a fetus."], "foetal": ["Of or referring to a fetus."], "phoetal": ["Of or referring to a fetus."], "ph\u0153tal": ["Of or referring to a fetus."], "amniotic fluid test": ["A medical procedure used in prenatal diagnosis of genetic risk factors."], "AFT": ["A medical procedure used in prenatal diagnosis of genetic risk factors."], "polyhydramnios": ["An excess of amniotic fluid in the amniotic sac of a pregnant woman."], "polyhydramnion": ["An excess of amniotic fluid in the amniotic sac of a pregnant woman."], "hydramnios": ["An excess of amniotic fluid in the amniotic sac of a pregnant woman."], "oligohydramnios": ["A deficiency of amniotic fluid in the amniotic sac of a pregnant woman."], "saffron yellow": ["A yellow color that resembles that of saffron.", "Having a yellow color, like that of saffron."], "International": ["A dummy language at OmegaWiki comprising expressions that are used as international conventions, such as symbols and scientific Latin."], "cardiac arrest": ["Sudden and complete cessation of the heartbeat resulting in the loss of effective circulation of the blood."], "Chao Phraya": ["River in Thailand"], "painless": ["Without pain."], "acheless": ["Without pain."], "unaching": ["Without pain."], "papyrus": ["A thick paper-like material produced from the pith of the papyrus plant.", "A document written on papyrus.", "A species of aquatic flowering plant belonging to the sedge family Cyperaceae."], "papyrologist": ["A scientist who studies ancient documents written on papyrus."], "papyrology": ["The study of ancient texts written on papyrus."], "x-ray": ["Short wavelength electromagnetic wave usually produced by bombarding a metal target in a vacuum."], "1st": ["Having no predecessor. The ordinal number corresponding to one."], "pumpkin pie": ["A traditional North American pie made with pureed pumpkin."], "10th": ["Which comes after the ninth."], "diplomatics": ["The scientific study of official documents."], "2nd": ["That which comes after the first."], "3-D": ["Existing in three dimensions."], "3-dimensional": ["Existing in three dimensions."], "4-dimensional": ["Existing in four dimensions."], "baht": ["The currency of Thailand."], "Thai baht": ["The currency of Thailand."], "diastema": ["A gap between two adjacent teeth."], "physiognomy": ["The assessment of a person's character or personality from their outer appearance, especially the face."], "antipollution": ["Designed to reduce pollution."], "April fool": ["Custom to make believe false stories on April 1."], "armored car": ["An armor-plated vehicle with strong doors and locks used to transport money or valuables."], "armored": ["Protected by armour."], "Asiatic": ["A person native of or originating from Asia.", "Relating to Asia."], "Asian": ["A person native of or originating from Asia.", "Relating to Asia."], "generously": ["In a generous manner."], "genealogical": ["Relating to genealogy."], "genealogically": ["In a genealogical manner."], "genealogist": ["A person who studies or practices genealogy."], "gyroscopic": ["Relating to, or using a gyroscope."], "gyroscopically": ["By using a gyroscope."], "Pichileminian": ["Relating or pertaining to Pichilemu, Chile."], "facilitate": ["To make easy or easier.", "To be of use or help."], "frenetically": ["In a frenetic manner."], "objectively": ["In an objective manner."], "franticly": ["In a frenetic manner."], "frantically": ["In a frenetic manner."], "financially": ["In a financial manner."], "calorimeter": ["A device designed to measure the amount of heat set free by a process."], "fratricide": ["The killing of one's brother.", "One who kills one's brother."], "regicide": ["The killing of a king.", "One who kills a king."], "fratricidal": ["Relating to fratricide."], "patricide": ["The killing of one's father.", "One who kills one's father."], "regicidal": ["Of or pertaining to regicide."], "photojournalism": ["A form of journalism where photographies are used to report the news."], "photojournalist": ["A journalist who uses photojournalism."], "photojournalistic": ["Relating to photojournalism."], "ultracold": ["Whose temperature is close to 0 kelvins, typically below some tenths of microkelvins."], "epiphysis": ["The rounded end of a long bone."], "epiphyseal": ["Of or relating to the epiphysis."], "innocuousness": ["The quality of not being detrimental to health."], "in vitro fertilization": ["A technique in which egg cells are fertilised outside the woman's body."], "in-vitro fertilisation": ["A technique in which egg cells are fertilised outside the woman's body."], "in-vitro fertilization": ["A technique in which egg cells are fertilised outside the woman's body."], "Creutzfeldt-Jakob disease": ["A degenerative disorder of the central nervous system characterized by the accumulation of prions."], "CJD": ["A degenerative disorder of the central nervous system characterized by the accumulation of prions."], "Creutzfeldt-Jacob disease": ["A degenerative disorder of the central nervous system characterized by the accumulation of prions."], "carbonous oxide": ["Chemical formula CO; a colorless, odorless, and tasteless gas."], "carbonic acid gas": ["A colourless gas with a faint tingling smell and taste."], "fetishism": ["The worship of an object as a part of a religious of mystical practice."], "fetishist": ["A person who has a fetish."], "Western Mari": ["A variety of the (Russian) Mari language spoken primarily in the forested areas on the left bank of the Volga."], "Hill Mari": ["A variety of the (Russian) Mari language spoken primarily in the forested areas on the left bank of the Volga."], "Eastern Mari": ["A variety of the (Russian) Mari language spoken primarily in the meadow on the east bank of the Volga."], "Meadow Mari": ["A variety of the (Russian) Mari language spoken primarily in the meadow on the east bank of the Volga."], "adoptive parents": ["The parents of an adopted child."], "unexplored": ["Which has not been explored by man."], "lumpsucker": ["A fish of the species Cyclopterus lumpus, 30 to 50 cm long, whose eggs are used as a substitute to caviar."], "lumpfish": ["A fish of the species Cyclopterus lumpus, 30 to 50 cm long, whose eggs are used as a substitute to caviar."], "Chabad-Lubavitch": ["A Hasidic movement in Orthodox Judaism."], "Chabad": ["A Hasidic movement in Orthodox Judaism."], "Lubavitch": ["A Hasidic movement in Orthodox Judaism."], "Lubavitch movement": ["A Hasidic movement in Orthodox Judaism."], "Chabad-Lubavitch Hasidism": ["A Hasidic movement in Orthodox Judaism."], "Chabad Hasidism": ["A Hasidic movement in Orthodox Judaism."], "chabazite": ["A tectosilicate mineral of the zeolite group with formula (Ca,Na2,K2,Mg)Al2Si4O12\u00b76H2O."], "chabasite": ["A tectosilicate mineral of the zeolite group with formula (Ca,Na2,K2,Mg)Al2Si4O12\u00b76H2O."], "hacktivism": ["The practise of hacking to defend a political cause."], "hacktivist": ["A person who practices hacking to defend a political cause."], "strangle": ["To squeeze the neck in order to compress the carotide and/or trachea, possibly leading to unconsciousness or death.", "To kill by squeezing the neck in order to compress the carotide and/or trachea.", "Putting or winding something very tightly around a neck, which causes strangulation, inhibits breathing, and ends in death."], "strangulation": ["The act of squeezing the neck in order to compress the carotide and/or trachea, possibly leading to unconsciousness or death.", "The act of killing by squeezing the neck in order to compress the carotide and/or trachea."], "strangulate": ["To kill by squeezing the neck in order to compress the carotide and/or trachea."], "throttle": ["To kill by squeezing the neck in order to compress the carotide and/or trachea."], "strangler": ["A person who kills by strangling."], "throttler": ["A person who kills by strangling."], "strangling": ["The act of squeezing the neck in order to compress the carotide and/or trachea, possibly leading to unconsciousness or death."], "choking": ["The act of squeezing the neck in order to compress the carotide and/or trachea, possibly leading to unconsciousness or death."], "throttling": ["The act of squeezing the neck in order to compress the carotide and/or trachea, possibly leading to unconsciousness or death."], "single household": ["A household that consists of only one person."], "multi-person household": ["A household that consists of several persons."], "dun": ["The colour of the coats of some horses: pale with a dark face, mane, back and tail."], "agrobiology": ["The science of plant life and nutrition."], "agrobiological": ["Of or relating to agrobiology."], "agrobiologic": ["Of or relating to agrobiology."], "agrobiologically": ["In an agrobiological manner."], "synonymy": ["The quality of being equivalent in meaning."], "antonymy": ["The quality of having opposed meanings."], "areflexia": ["The absence of reflexes."], "arachnid": ["Any of the eight-legged creatures, including spiders and scorpions, of the class Arachnida."], "arachnids": ["A class of eight-legged creatures in the subphylum Chelicerata."], "arachnoid": ["Relating to an arachnid.", "Ressembling an arachnid."], "arachnidian": ["Relating to an arachnid."], "arachnophobia": ["The fear of spiders."], "arachnephobia": ["The fear of spiders."], "arachnophobe": ["A person who fears spiders."], "arachnophobic": ["Suffering from arachnophobia."], "in condition": ["In good physical condition to perform a physical task, as a result of exercise."], "wind farm": ["An area dedicated to the production of electricity with wind turbines."], "plutoid": ["A trans-Neptunian dwarf planet."], "addictology": ["The study of addictions and their treatments."], "addictologist": ["A person specialized in addictology."], "addicted": ["Dependent on a habit-forming substance such as a drug or alcohol."], "addictive": ["Having the property of making the consumer addicted."], "addicting": ["Having the property of making the consumer addicted."], "habit-forming": ["Having the property of making the consumer addicted."], "Addison's disease": ["An endocrine disorder wherein the adrenal glands produce insufficient steroid hormones."], "chronic adrenal insufficiency": ["An endocrine disorder wherein the adrenal glands produce insufficient steroid hormones."], "hypocortisolism": ["An endocrine disorder wherein the adrenal glands produce insufficient steroid hormones."], "hypocorticism": ["An endocrine disorder wherein the adrenal glands produce insufficient steroid hormones."], "Addison's syndrome": ["An endocrine disorder wherein the adrenal glands produce insufficient steroid hormones."], "hypoadrenocorticism": ["An endocrine disorder wherein the adrenal glands produce insufficient steroid hormones."], "hypoadrenalism": ["An endocrine disorder wherein the adrenal glands produce insufficient steroid hormones."], "child slavery": ["The slavery of children."], "worst-case scenario": ["A situation where the worst envisaged troubles happen."], "child trafficking": ["The trading of minors in order to exploit them."], "worst case scenario": ["A situation where the worst envisaged troubles happen."], "maximum credible accident": ["A situation where the worst envisaged troubles happen."], "infantile": ["Behaving immaturely, like a child."], "immature": ["Behaving immaturely, like a child."], "childishly": ["In a childish manner."], "childishness": ["The state of being childish."], "puerility": ["The state of being childish."], "childlessness": ["The condition of being childless."], "childly": ["Of or pertaining to a child."], "childlike": ["Of or pertaining to a child."], "food chemistry": ["The study of the composition of food."], "food chemist": ["A scientist who specializes in the analysis of food."], "stalemate": ["A situation in which no progress can be made or no advancement is possible.", "Drawing position in chess: any of a player's possible moves would place his king in check.", "To subject to a stalemate."], "dead end": ["A situation in which no progress can be made or no advancement is possible."], "standstill": ["A situation in which no progress can be made or no advancement is possible."], "monarch butterfly": ["A migratory butterfly, Danaus plexippus, found in North America."], "teratoma": ["A tumor resulting from an abnormal development of pluripotent cells."], "immunosuppression": ["The reduction of the activity or efficacy of the immune system."], "immunosuppressed": ["Having a reduced activity or efficacy of the immune system."], "immunosuppressive drug": ["A drug that reduces the activity or efficacy of the immune system."], "immunosuppressant": ["A drug that reduces the activity or efficacy of the immune system."], "immune suppressant drug": ["A drug that reduces the activity or efficacy of the immune system."], "immunosuppressive": ["A drug that reduces the activity or efficacy of the immune system.", "(Of a drug) That reduces the activity or efficacy of the immune system."], "immunosuppressor": ["A drug that reduces the activity or efficacy of the immune system."], "immunosuppressive agent": ["A drug that reduces the activity or efficacy of the immune system."], "beetles": ["An order of insects of the superorder Endopterygota, having biting mouthparts and forewings modified to form shell-like protective elytra."], "coleopterology": ["A branch of entomology dedicated to the study of beetles."], "coleopterologist": ["A person specialized in coleopterology."], "Volkswagen Beetle": ["A car that Volkswagen started to produce in 1938."], "Volkswagen Type 1": ["A car that Volkswagen started to produce in 1938."], "combined oral contraceptive pill": ["A pill containing estrogen and progestin, which, when taken daily, inhibits female fertility."], "COCP": ["A pill containing estrogen and progestin, which, when taken daily, inhibits female fertility."], "birth-control pill": ["A pill containing estrogen and progestin, which, when taken daily, inhibits female fertility."], "contraceptive pill": ["A pill containing estrogen and progestin, which, when taken daily, inhibits female fertility."], "birth control pill": ["A pill containing estrogen and progestin, which, when taken daily, inhibits female fertility."], "cytotoxic": ["That is toxic to cells."], "antineoplastic drug": ["A natural or man-made substance that can kill or stop the growth or spread of cancer cells."], "cancer drug": ["A natural or man-made substance that can kill or stop the growth or spread of cancer cells."], "cytotoxic drug": ["A drug that is toxic to cells."], "medicament": ["A substance which specifically promotes healing."], "medicinal drug": ["A substance which specifically promotes healing."], "Rakhine": ["A language of Myanmar and Bangladesh"], "Kham Mueang": ["A Tai language spoken by the Thai Yuan people living in Lannathai, Thailand, as well as in northwestern Laos."], "deracinate": ["To pull up by the roots."], "cereal harvest": ["The process of gathering ripe cereal.", "The amount of cereal gathered in one season."], "wheat harvest": ["The process of gathering ripe wheat.", "The amount of cereal gathered in one season."], "work for peanuts": ["To work for no or very little reward."], "to no avail": ["Without success, without the desired effect."], "for nothing": ["Without success, without the desired effect."], "to no purpose": ["Without success, without the desired effect."], "for free": ["Without cost."], "ravage": ["To cause extensive destruction or ruin utterly."], "scourge": ["To cause extensive destruction or ruin utterly."], "bare": ["Without clothing.", "Lacking in amplitude or quantity; not abundant."], "bleak": ["A small fresh-water fish of the species Alburnus alburnus."], "chrestomathy": ["A collection of texts or text passages for didactic purposes."], "jute": ["A plant of the species Corchorus capsularis or Corchorus olitorius cultivated for its long, soft, shiny vegetable fibres.", "A fibre extracted from a jute plant."], "jute plant": ["A plant of the species Corchorus capsularis or Corchorus olitorius cultivated for its long, soft, shiny vegetable fibres."], "jute fiber": ["A fibre extracted from a jute plant."], "jute fibre": ["A fibre extracted from a jute plant."], "jute bag": ["A bag made from jute fibers."], "gunnysack": ["A bag made from jute fibers."], "gunny sack": ["A bag made from jute fibers."], "dehusk": ["To remove the husk from a grain."], "dehusking": ["The removal of the husk from a grain."], "basmati rice": ["A variety of long grain rice grown in India and Pakistan, notable for its fragrance."], "basmati": ["A variety of long grain rice grown in India and Pakistan, notable for its fragrance."], "aromatic rice": ["A rice that has an intense aroma, such as basmati rice or jasmine rice."], "jasmine rice": ["A long-grain variety of rice whose aroma reminds of jasmine flower."], "Thai fragrant rice": ["A long-grain variety of rice whose aroma reminds of jasmine flower."], "brown rice": ["A rice where the husk is removed but the bran layer and the germ are kept."], "hulled rice": ["A rice where the husk is removed but the bran layer and the germ are kept."], "parboiled rice": ["A rice that has been boiled in the husk."], "Patna rice": ["A long-grain white rice originating from the city of Patna, India."], "white rice": ["A rice that has had its husk, bran, and germ removed."], "wild rice": ["A plant of the genus Zizania palustris, whose black grains can be eaten."], "Canada rice": ["A plant of the genus Zizania palustris, whose black grains can be eaten."], "Indian rice": ["A plant of the genus Zizania palustris, whose black grains can be eaten."], "water oats": ["A plant of the genus Zizania palustris, whose black grains can be eaten."], "tonsure": ["The complete or partial removal of scalp hair for religious reasons.", "The Christian practice of shaving the top of the head so as to create a crown of hair."], "Roman tonsure": ["The Christian practice of shaving the top of the head so as to create a crown of hair."], "hoarding": ["The act of buying and accumulating food or other items when it is feared that there will be a shortage."], "winterproof": ["Able to resist to winter and in particular to the cold temperatures of that season."], "winter-proof": ["Able to resist to winter and in particular to the cold temperatures of that season."], "speeder": ["A driver who exceeds the speed limit."], "speed demon": ["A driver who exceeds the speed limit."], "Kurukh": ["A Dravidian language spoken by the Oraon and Kisan tribal peoples of Bihar, Jharkhand, Orissa, Madhya Pradesh, Chhattisgarh, and West Bengal, India, as well as in northern Bangladesh."], "Ku\u1e5bux": ["A Dravidian language spoken by the Oraon and Kisan tribal peoples of Bihar, Jharkhand, Orissa, Madhya Pradesh, Chhattisgarh, and West Bengal, India, as well as in northern Bangladesh."], "Kuru\u1e35\u1e96": ["A Dravidian language spoken by the Oraon and Kisan tribal peoples of Bihar, Jharkhand, Orissa, Madhya Pradesh, Chhattisgarh, and West Bengal, India, as well as in northern Bangladesh."], "teargas": ["A gas that irritates mucous membranes in the eyes, nose, mouth and lungs, and causes tearing, pain, and sometimes blindness."], "tear gas": ["A gas that irritates mucous membranes in the eyes, nose, mouth and lungs, and causes tearing, pain, and sometimes blindness."], "lachrymatory agent": ["A gas that irritates mucous membranes in the eyes, nose, mouth and lungs, and causes tearing, pain, and sometimes blindness."], "lachrymator": ["A gas that irritates mucous membranes in the eyes, nose, mouth and lungs, and causes tearing, pain, and sometimes blindness."], "lacrimator": ["A gas that irritates mucous membranes in the eyes, nose, mouth and lungs, and causes tearing, pain, and sometimes blindness."], "smelly foot": ["A foot that smells bad."], "afoot": ["Walking by foot."], "by foot": ["Walking by foot."], "on foot": ["Walking by foot."], "within walking distance": ["Reachable by foot."], "teardrop": ["A drop of liquid produced from the eyes by crying or irritation.", "The shape of a drop of liquid about to fall, round at the bottom, tapered at the top."], "crocodile tears": ["A display of tears that is forced or false."], "American bison": ["A wild heavy bison of the species Bison bison, having a broad massive horned head."], "American buffalo": ["A wild heavy bison of the species Bison bison, having a broad massive horned head."], "collection of taxes": ["Taking of the tax by the state."], "once and for all": ["In a definitive manner."], "once for all": ["In a definitive manner."], "for good": ["In a definitive manner."], "African clawed frog": ["A South African aquatic frog of the species Xenopus laevis."], "platanna": ["A South African aquatic frog of the species Xenopus laevis."], "sphygmomanometer": ["A device used to measure blood pressure."], "blood pressure meter": ["A device used to measure blood pressure."], "Lemusmus": ["An Austronesian language spoken in the Kavieng District of New Ireland Province, Papua New Guinea."], "Lemakot": ["An Austronesian language spoken in the Kavieng District of New Ireland Province, Papua New Guinea."], "Gorogone": ["An Australian Aboriginal language spoken in Arnhem Land."], "Gun-Guragone": ["An Australian Aboriginal language spoken in Arnhem Land."], "Gunagoragone": ["An Australian Aboriginal language spoken in Arnhem Land."], "Gungorogone": ["An Australian Aboriginal language spoken in Arnhem Land."], "Gurrgoni": ["An Australian Aboriginal language spoken in Arnhem Land."], "Gurrogone": ["An Australian Aboriginal language spoken in Arnhem Land."], "Gutjertabia": ["An Australian Aboriginal language spoken in Arnhem Land."], "parsimony": ["Extreme reluctance to spend money."], "stinginess": ["Extreme reluctance to spend money."], "niggardliness": ["Extreme reluctance to spend money."], "penuriousness": ["Extreme reluctance to spend money."], "miserliness": ["Extreme reluctance to spend money."], "closefistedness": ["Extreme reluctance to spend money."], "Chulim": ["A Turkic language spoken by the Chulym and the Kacik people of the Basin of the Chulym River north of the Altay Mountains, Rusia."], "Chulym-Turkic": ["A Turkic language spoken by the Chulym and the Kacik people of the Basin of the Chulym River north of the Altay Mountains, Rusia."], "K\u00fcerik": ["A Turkic language spoken by the Chulym and the Kacik people of the Basin of the Chulym River north of the Altay Mountains, Rusia."], "Chulym Tatar": ["A Turkic language spoken by the Chulym and the Kacik people of the Basin of the Chulym River north of the Altay Mountains, Rusia."], "Melets Tatar": ["A Turkic language spoken by the Chulym and the Kacik people of the Basin of the Chulym River north of the Altay Mountains, Rusia."], "frugality": ["The practice of spending money responsibly and avoiding unnecessary spending."], "Lankaran": ["A small city in Azerbaijan, on the coast of the Caspian Sea, near the southern border with Iran."], "Lencoran": ["A small city in Azerbaijan, on the coast of the Caspian Sea, near the southern border with Iran."], "Lenkoran'": ["A small city in Azerbaijan, on the coast of the Caspian Sea, near the southern border with Iran."], "great barracuda": ["A fish of the species Sphyraena barracuda."], "hawk moths": ["A family of moths (Lepidoptera) having a rapid, sustained flying ability."], "sphinx moths": ["A family of moths (Lepidoptera) having a rapid, sustained flying ability."], "hornworms": ["A family of moths (Lepidoptera) having a rapid, sustained flying ability."], "hawk moth": ["A moth of the family Sphingidae having a rapid, sustained flying ability."], "sphinx moth": ["A moth of the family Sphingidae having a rapid, sustained flying ability."], "hornworm": ["A moth of the family Sphingidae having a rapid, sustained flying ability."], "hawkmoth": ["A moth of the family Sphingidae having a rapid, sustained flying ability."], "sphingid": ["A moth of the family Sphingidae having a rapid, sustained flying ability."], "hummingbird moth": ["A moth of the family Sphingidae having a rapid, sustained flying ability."], "feeling of guilt": ["Awareness of having done wrong and feeling bad about it."], "sense of guilt": ["Awareness of having done wrong and feeling bad about it."], "quadruped": ["An animal having four legs.", "Having four feet."], "quadrupedal": ["Having four feet."], "four-footed": ["Having four feet."], "precarity": ["The condition of being precarious."], "pangolin": ["Any mammal of the genus Manis in the Manidae family having large keratin scales covering their skin."], "scaly anteater": ["Any mammal of the genus Manis in the Manidae family having large keratin scales covering their skin."], "spelaeology": ["The branch of nature sciences concerned with the study of caves."], "speleological": ["Pertaining or relating to speleology."], "spelaeological": ["Pertaining or relating to speleology."], "at first go": ["At the first try."], "holey": ["Having holes."], "Burkinabe": ["A person or a citizen from Burkina Faso.", "From or relating to Burkina Faso."], "Bermudan": ["A person who originated from or is a citizen of Bermuda."], "Amsterdamer": ["A person who lives or was born in Amsterdam."], "NVIDIA": ["A multinational corporation which specializes in the development of graphics processing units and chipset technologies for workstations, personal computers, and mobile devices."], "CRUD": ["(Create, Read, Update and Delete) The major functions that need to be implemented in a relational database application to consider it complete."], "inversion of control": ["An abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to procedural programming."], "aspect-oriented programming": ["A programming paradigm which isolates secondary or supporting functions from the main program's business logic."], "object-relational mapping": ["A programming technique for converting data between incompatible type systems in object-oriented programming languages."], "ORM": ["A programming technique for converting data between incompatible type systems in object-oriented programming languages."], "Spring Framework": ["An open source application framework for the Java platform comprising an inversion of Control container, aspect-oriented programming, an object-relational mapping and a model-view-controller framework."], "cosmodrome": ["A site for launching spacecrafts."], "astrodrome": ["A site for launching spacecrafts."], "spaceport": ["A site for launching spacecrafts."], "cosmetically": ["In a cosmetic manner."], "cosmetic dentistry": ["A branch of dentistry dealing with the improvement of the appearance of a person's teeth."], "cosmetician": ["One who does hair styling, manicures, and other beauty treatments.", "A person who sells or applies cosmetics."], "cosmetic surgeon": ["A surgeon specialized in cosmetic surgery."], "plastic surgeon": ["A surgeon specialized in plastic surgery."], "cosmetic surgery": ["A branch of surgery concerned with the improvement of the appearance of a person."], "aesthetic surgery": ["A branch of surgery concerned with the improvement of the appearance of a person."], "esthetic surgery": ["A branch of surgery concerned with the improvement of the appearance of a person."], "plastic surgery": ["A branch of surgery concerned with the correction or restoration of the form and function of a part of the body."], "anaplasty": ["A branch of surgery concerned with the correction or restoration of the form and function of a part of the body."], "event-driven programming": ["A programming paradigm in which the flow of the program is determined by events or messages from other programs or threads."], "event-based programming": ["A programming paradigm in which the flow of the program is determined by events or messages from other programs or threads."], "Baynunk": ["A Niger-Congo macrolanguage spoken in Casamance (Senegal) as well as in Gambia."], "thanatophobia": ["The fear of death."], "whither": ["To which place?", "To which place."], "whereto": ["To which place?"], "where...from": ["From which place?"], "skull and crossbones": ["A symbol consisting of a human skull and two bones crossed together under the skull."], "death's head": ["A symbol consisting of a human skull and two bones crossed together under the skull."], "sociologist": ["A person who studies sociology."], "hijab": ["A head covering traditionally worn by Muslim women."], "\u1e25ij\u0101b": ["A head covering traditionally worn by Muslim women."], "sleepless": ["Characterized by an absence of sleep."], "white night": ["A night without sleep."], "all-nighter": ["A night without sleep."], "sleeplessly": ["In a sleepless manner."], "sleeplessness": ["Difficulty in going to sleep or getting enough sleep."], "tutorial": ["A guide that teaches from the beginning and step-by-step how to use a software."], "triple play": ["A service providing Internet access, telephony and television over a single broadband connection."], "video frame": ["One of the many still images that compose a video."], "educated guess": ["A guess based on personal experience or knowledge."], "lay\u2026 to waste": ["To cause extensive destruction or ruin utterly."], "cupcake": ["A small cake baked in paper forms and covered with frosting."], "patty cake": ["A small cake baked in paper forms and covered with frosting."], "cup cake": ["A small cake baked in paper forms and covered with frosting."], "buttercream": ["Cream made of butter, sugar and egg yolk."], "lepidopterans": ["A large order of scaly-winged insects, including the butterflies, skippers, and moths; adults are characterized by two pairs of membranous wings and sucking mouthparts, featuring a prominent, coiled proboscis."], "cook for": ["To cook for someone, to provide someone with food."], "polyandry": ["A form of marriage in which a woman has several husbands at the same time.", "A situation in which a female mates with several males."], "animal polyandry": ["A situation in which a female mates with several males."], "polygyny": ["A form of marriage in which a man has several wives at the same time.", "A situation in which a male mates with several females."], "animal polygyny": ["A situation in which a male mates with several females."], "absolutive case": ["A grammatical case being used in several languages such as Basque, Georgian, Sumerian, Chechen, and others where it is being used for the subject in sentences having a subject only and no objects, while in sentences with a subject and a direct object it is being used for the direct object but not the subject."], "absolutive": ["A grammatical case being used in several languages such as Basque, Georgian, Sumerian, Chechen, and others where it is being used for the subject in sentences having a subject only and no objects, while in sentences with a subject and a direct object it is being used for the direct object but not the subject."], "coywolf": ["A hybrid between a coyote (Canis latrans) and the gray wolf (Canis lupus)."], "carrion": ["The dead body of an animal that is in a more or less advanced stage of decomposition."], "ergative case": ["A grammatical case existing in several languages among which there are Basque, Georgian, Sumerian, Greenlandic, and Chechen, where it is used for the subjects of sentences having a subject and a direct object."], "ergative": ["A grammatical case existing in several languages among which there are Basque, Georgian, Sumerian, Greenlandic, and Chechen, where it is used for the subjects of sentences having a subject and a direct object."], "polygamy": ["A form of marriage in which a person has several spouse at the same time."], "monogamy": ["A form of marriage in which a person has only one spouse at a time."], "blood platelet": ["A type of blood cell that helps prevent bleeding by causing blood clots to form."], "spousal": ["Of, or relating to marriage, or the relationship of spouses."], "marital": ["Of, or relating to marriage, or the relationship of spouses."], "matrimonial": ["Of, or relating to marriage, or the relationship of spouses."], "postmarital": ["Occuring or existing after marriage."], "postmaritally": ["After marriage."], "premaritally": ["Before marriage."], "spousal support": ["Financial support provided after a separation or divorce by the financial stronger partner to the ex-partner."], "Albertan": ["A person from or living in Alberta, Canada."], "climate skeptic": ["A person that thinks there is no global warming, or that it is not caused by human activities."], "aspect": ["One among many similar or related, yet still distinct features or elements.", "A grammatical quality of a verb which determines the relationship of the speaker to the temporal flow of the event the verb describes; whether the speaker views the event from outside as a whole, or from within as it is unfolding."], "grammatical aspect": ["A grammatical quality of a verb which determines the relationship of the speaker to the temporal flow of the event the verb describes; whether the speaker views the event from outside as a whole, or from within as it is unfolding."], "have a bone to pick": ["Being angry with a person and being ready for a confrontation."], "have a crow to pick": ["Being angry with a person and being ready for a confrontation."], "invalidate": ["To make something legally invalid or void."], "cross out": ["To draw a line or something else through something."], "strike out": ["To draw a line or something else through something."], "syncretism": ["The fusion of different cultures or beliefs."], "syncretic": ["Resulting from the fusion of different cultures or beliefs."], "syncretistic": ["Resulting from the fusion of different cultures or beliefs."], "glory": ["Very large and very remarkable positive fame."], "Siberian tiger": ["Largest subspecies of tiger (Panthera tigris)."], "Amur tiger": ["Largest subspecies of tiger (Panthera tigris)."], "Altaic tiger": ["Largest subspecies of tiger (Panthera tigris)."], "Korean tiger": ["Largest subspecies of tiger (Panthera tigris)."], "Ussuri tiger": ["Largest subspecies of tiger (Panthera tigris)."], "North China tiger": ["Largest subspecies of tiger (Panthera tigris)."], "Manchurian tiger": ["Largest subspecies of tiger (Panthera tigris)."], "alexithymia": ["The inability to perceive or understand emotion."], "narrow-headed ant": ["Big, brown to black coloured ant found throughout Western Europe and Asia (Formica exsecta)"], "excised wood ant": ["Big, brown to black coloured ant found throughout Western Europe and Asia (Formica exsecta)"], "accidentology": ["The scientific study of accidents, in particular their causes and consequences."], "unarmed": ["Not carrying weapons."], "budgie": ["The only species in the Australian genus Melopsittacus (Melopsittacus undulatus), prized as a household pet."], "unfriendliness": ["The state of being unfriendly."], "lead acetate": ["Lead(II) salt of acetic acid; a white crystalline substance with a sweetish taste."], "lead diacetate": ["Lead(II) salt of acetic acid; a white crystalline substance with a sweetish taste."], "plumbous acetate": ["Lead(II) salt of acetic acid; a white crystalline substance with a sweetish taste."], "sugar of lead": ["Lead(II) salt of acetic acid; a white crystalline substance with a sweetish taste."], "lead sugar": ["Lead(II) salt of acetic acid; a white crystalline substance with a sweetish taste."], "German turnip": ["Cultivar of cabbage (Brassica oleracea var. Gongylodes) that is grown for its swollen, edible stem rather than its leaves."], "Pakistani": ["A citizen of or person from Pakistan.", "From or relating to Pakistan."], "colorectal cancer": ["Cancer that develops in the tissues of the colon."], "large bowel cancer": ["Cancer that develops in the tissues of the colon."], "mammographic": ["Relating to mammography."], "mammographically": ["In a mammographic manner, or using a mammograph."], "mammograph": ["A device designed to produce X-ray pictures of the breasts."], "mammogram": ["A X-ray picture of the breasts."], "common water strider": ["(Gerris Lacustris) A insect of the family Gerridae."], "common pond skater": ["(Gerris Lacustris) A insect of the family Gerridae."], "galliforms": ["The order of birds that includes grouse, ptarmigan, capercaillie, partridges, pheasants, quails, turkeys and peacocks. These are mainly grain-eating, heavy-bodied, ground-nesting birds, capable of only short, rapid flights. The cocks are usually more colourful than the hens."], "gallinaceous birds": ["The order of birds that includes grouse, ptarmigan, capercaillie, partridges, pheasants, quails, turkeys and peacocks. These are mainly grain-eating, heavy-bodied, ground-nesting birds, capable of only short, rapid flights. The cocks are usually more colourful than the hens."], "gamebirds": ["The order of birds that includes grouse, ptarmigan, capercaillie, partridges, pheasants, quails, turkeys and peacocks. These are mainly grain-eating, heavy-bodied, ground-nesting birds, capable of only short, rapid flights. The cocks are usually more colourful than the hens."], "gamefowl": ["The order of birds that includes grouse, ptarmigan, capercaillie, partridges, pheasants, quails, turkeys and peacocks. These are mainly grain-eating, heavy-bodied, ground-nesting birds, capable of only short, rapid flights. The cocks are usually more colourful than the hens."], "landfowl": ["The order of birds that includes grouse, ptarmigan, capercaillie, partridges, pheasants, quails, turkeys and peacocks. These are mainly grain-eating, heavy-bodied, ground-nesting birds, capable of only short, rapid flights. The cocks are usually more colourful than the hens."], "with\u2026 being responsible for": ["Having, as for me/you/him/us\u2026, the task of"], "it's\u2026's job to": ["Having, as for me/you/him/us\u2026, the task of"], "monitor lizards": ["(Varanidae) A family of lizards which includes the largest living lizard, the Komodo Dragon."], "perpetually": ["At all times."], "continually": ["At all times."], "graminaceous plants": ["A very large family (Poaceae) of plants including cereals such as wheat, maize, etc."], "canids": ["Carnivorous mammal in the superfamily Canoidea, including dogs and their allies.\\n(Source: MGH)"], "Common Cuckoo": ["A common European bird, Cuculus canorus, of the family Cuculidae, noted for its characteristic call and its brood parasitism."], "sea stars": ["(Asteroidea) Animals belonging to the echinoderms characterized by five arms extending from a central disk."], "ursids": ["A family of mammals in the order Carnivora including the bears and their allies."], "felids": ["(Felidae) Predatory mammals, including cats, lions, leopards, tigers, jaguars, and cheetahs, typically having a round head and retractile claws."], "CAPTCHA": ["(Completely Automated Public Turing Test to tell Computers and Humans Apart) A challenge-response test designed to filter out automated Web site requests."], "injection attack": ["A technique that allows arbitrary data or code to be inserted into a server or application. The most common types of injection attacks are SQL injection and code injection."], "intrusion detection system": ["A software- or hardware-based solution that detects and logs inappropriate, incorrect, or anomalous activity."], "ping flood": ["A very large number of ping requests sent in a short amount of time, intended to overwhelm the network or server."], "POSIX": ["A set of operating system interface standards based on UNIX."], "rootkit": ["A program designed to take full control of a server."], "Unicode": ["A 16-bit character set capable of encoding all known characters and used as a worldwide character-encoding standard."], "UTF-8": ["An encoding form of Unicode that supports ASCII for backward compatibility and covers the characters for most languages in the world."], "white-box testing": ["A method of testing software that tests internal structures or workings of an application as opposed to its functionality (black-box testing)."], "clear box testing": ["A method of testing software that tests internal structures or workings of an application as opposed to its functionality (black-box testing)."], "glass box testing": ["A method of testing software that tests internal structures or workings of an application as opposed to its functionality (black-box testing)."], "transparent box testing": ["A method of testing software that tests internal structures or workings of an application as opposed to its functionality (black-box testing)."], "structural testing": ["A method of testing software that tests internal structures or workings of an application as opposed to its functionality (black-box testing)."], "pruebas estructurales": ["A method of testing software that tests internal structures or workings of an application as opposed to its functionality (black-box testing)."], "SHA-2": ["A set of cryptographic hash functions (SHA-224, SHA-256, SHA-384, SHA-512) designed by the National Security Agency (NSA) and published in 2001 by the NIST as a U.S. Federal Information Processing Standard."], "Raga": ["A language of Vanuatu."], "Greek, Ancient (Egypt)": ["A dialect of Ancient Greek spoken in Egypt."], "decuple": ["To multiply by ten."], "Hermes": ["The messenger of the Gods in Greek mythology."], "godparent": ["A person present at the christening of a baby who promises to help raise the child in the Christian tradition."], "Common carp": ["A tall freshwater fish from the species Cyprinus carpio with a high back, original from Asia."], "remainder": ["In mathematics, the result of the \"remainder\" operation."], "verrucous": ["Covered with warts."], "warty": ["Covered with warts."], "verrucose": ["Covered with warts."], "pessimum": ["Least favourable condition or lowest degree or amount possible under given circumstances."], "network topology": ["The layout pattern of interconnections of the various elements (links, nodes, etc.) of a computer network."], "wireless network": ["Any type of computer network that is wireless, and is commonly associated with a telecommunications network whose interconnections between nodes are implemented without the use of wires."], "metropolitan area network": ["A large computer network that usually spans a city or a large campus."], "MAN": ["A large computer network that usually spans a city or a large campus."], "virtual private network": ["A computer network that uses a public telecommunication infrastructure such as the Internet to provide remote offices or individual users with secure access to their organization's network."], "Internet Protocol": ["The principal communications protocol used for relaying datagrams (packets) across an internetwork using the Internet Protocol Suite."], "IP": ["The principal communications protocol used for relaying datagrams (packets) across an internetwork using the Internet Protocol Suite.", "A product of the mind that has commercial value, for example literary or artistic works."], "ear mange": ["Infestation of the auricle and external auditory canal with some mites of the genus Psoroptes, Otodectes and Chorioptes"], "twisted pair cabling": ["A type of wiring in which two conductors (the forward and return conductors of a single circuit) are twisted together for the purposes of canceling out electromagnetic interference (EMI) from external sources."], "TCP": ["One of the core protocols of the Internet Protocol Suite; it provides the service of exchanging data directly between two network hosts."], "Transmission Control Protocol": ["One of the core protocols of the Internet Protocol Suite; it provides the service of exchanging data directly between two network hosts."], "UDP": ["One of the core members of the Internet Protocol Suite, used to send messages, in this case referred to as datagrams, to other hosts on an Internet Protocol (IP) network without requiring prior communications to set up special transmission channels or data paths."], "User Datagram Protocol": ["One of the core members of the Internet Protocol Suite, used to send messages, in this case referred to as datagrams, to other hosts on an Internet Protocol (IP) network without requiring prior communications to set up special transmission channels or data paths."], "DSL": ["A family of technologies that provides digital data transmission over the wires of a local telephone network."], "Digital Subscriber Line": ["A family of technologies that provides digital data transmission over the wires of a local telephone network."], "FDDI": ["A 100 Mbit/s optical standard for data transmission in a local area network that can extend in range up to 200 kilometers (124 miles)."], "Fiber Distributed Data Interface": ["A 100 Mbit/s optical standard for data transmission in a local area network that can extend in range up to 200 kilometers (124 miles)."], "PPP": ["A data link protocol commonly used in establishing a direct connection between two networking nodes."], "Point-to-Point Protocol": ["A data link protocol commonly used in establishing a direct connection between two networking nodes."], "SLIP": ["An encapsulation of the Internet Protocol designed to work over serial ports and modem connections."], "Serial Line Internet Protocol": ["An encapsulation of the Internet Protocol designed to work over serial ports and modem connections."], "datagram": ["A basic transfer unit associated with a packet-switched network in which the delivery, arrival time and order are not guaranteed."], "SSH": ["A network protocol that allows data to be exchanged using a secure channel between two networked devices."], "Secure Shell": ["A network protocol that allows data to be exchanged using a secure channel between two networked devices."], "Telnet": ["A network protocol used on the Internet or local area networks to provide a bidirectional interactive text-oriented communications facility using a virtual terminal connection."], "TSL": ["A cryptographic protocol that provides communications security over the Internet."], "Transport Layer Security": ["A cryptographic protocol that provides communications security over the Internet.", "A general-purpose protocol for encrypting Web, e-mail, and other stream-oriented information sent over the Internet; described in RFCs 2246, 2712, 2817, and 2818."], "communications protocol": ["A formal description of digital message formats and the rules for exchanging those messages in or between computing systems and in telecommunications."], "deworm": ["To rid of intestinal worms."], "deworming": ["The removal of intestinal worms."], "worming": ["The removal of intestinal worms."], "drenching": ["The removal of intestinal worms."], "anthelmintic": ["A drug that that expels parasitic worms from the body."], "comfort food": ["Food that is consumed in order to feel better or to fight negative feelings."], "insects": ["A class of the Arthropoda typically having a segmented body with an external chitinous covering, a pair of compound eyes, a pair of antennae, three pairs of mouthparts, and two pairs of wings."], "hub": ["A device for connecting multiple twisted pair or fibre optic Ethernet devices together and making them act as a single network segment.", "The central part of a wheel to which the spokes attach, and which rotates on (or with) the axle."], "Ethernet hub": ["A device for connecting multiple twisted pair or fibre optic Ethernet devices together and making them act as a single network segment."], "repeater hub": ["A device for connecting multiple twisted pair or fibre optic Ethernet devices together and making them act as a single network segment."], "active hub": ["A device for connecting multiple twisted pair or fibre optic Ethernet devices together and making them act as a single network segment."], "network hub": ["A device for connecting multiple twisted pair or fibre optic Ethernet devices together and making them act as a single network segment."], "network switch": ["A computer networking device that connects network segments."], "switching hub": ["A computer networking device that connects network segments."], "Frame Relay": ["A standardized WAN technology that specifies the physical and logical link layers of digital telecommunications channels using a packet switching methodology."], "WLAN": ["A network that links two or more devices using some wireless distribution method (typically spread-spectrum or OFDM radio), and usually providing a connection through an access point to the wider internet."], "wireless local area network": ["A network that links two or more devices using some wireless distribution method (typically spread-spectrum or OFDM radio), and usually providing a connection through an access point to the wider internet."], "third normal form": ["A normal form used in database normalization."], "neighbourhood": ["The open set containing given point."], "earwigs": ["Any of various insects of the order Dermaptera."], "thoracotomy": ["The chirurgical opening of the thorax."], "cache memory": ["A fast temporary storage where most recent or most frequent values are stored to avoid having to reload from a slower storage medium."], "pincers": ["Pliers made of steel for removing nails from wood."], "pair of pincers": ["Pliers made of steel for removing nails from wood."], "sponges": ["A phylum of the animal kingdom characterized by the presence of canal systems and chambers through which water is drawn in and released; tissues and organs are absent."], "Observer Pattern": ["A design pattern that defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically."], "Decorator Pattern": ["A design pattern that attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality."], "Centum language": ["Indoeuropean language where palatovelars were merged into velars."], "Satem language": ["Indoeuropean language where the palatovelars became sibilants."], "Factory Method Pattern": ["A design pattern that defines an interface for creating an object, but lets subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses."], "Singleton Pattern": ["A design pattern that ensures a class has only one instance, and provides a global point of access to it."], "Command Pattern": ["A design pattern that encapsulates a request as an object, thereby letting you parameterize other objects with different requests, queue or log requests, and support undoable operations."], "Adapter Pattern": ["A design pattern that converts the interface of a class into another interface the clients expect. Adapter lets classes work together that couldn\u2019t otherwise because of incompatible interfaces."], "Facade Pattern": ["A design pattern that provides a unified interface to a set of interfaces in a subsytem. Facade defines a higher-level interface that makes the subsystem easier to use."], "common warthog": ["African suid (Phacochoerus africanus) having two tusks."], "freebirth": ["A birth without the aid of medical or professional birth attendants."], "DIY birth": ["A birth without the aid of medical or professional birth attendants."], "unhindered birth": ["A birth without the aid of medical or professional birth attendants."], "unassisted home birth": ["A birth without the aid of medical or professional birth attendants."], "couples birth": ["A birth without the aid of medical or professional birth attendants."], "suffragette": ["A female representative of the civil movement for the rights, especially the right to vote, of the woman in England and America at the beginning of the 20th century."], "Template Method Pattern": ["A design pattern that defines the skeleton of an algorithm in a method, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm\u2019s structure."], "Iterator Pattern": ["A design pattern that provides a way to access the elements of an aggregate object sequentially without exposing its underlying representation."], "she-wolf": ["A female wolf."], "Composite Pattern": ["A design pattern allows the designer to compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly."], "she-bear": ["A female bear."], "State Pattern": ["A design pattern that allows an object to alter its behavior when its internal state changes. The object will appear to change its class."], "sibilant": ["A sound characterized by a hissing quality.", "Characterized by a hissing sound."], "sibilant consonant": ["A sound characterized by a hissing quality."], "holocaust": ["A sacrifice to a god where the offering is completely burned to ashes."], "burnt sacrifice": ["A sacrifice to a god where the offering is completely burned to ashes."], "put on a brave face": ["To not let oneself get discouraged by some difficulties or failures."], "take up arms against a sea of sorrows": ["To not let oneself get discouraged by some difficulties or failures."], "grin and bear it": ["To not let oneself get discouraged by some difficulties or failures."], "put a good face on the matter": ["To not let oneself get discouraged by some difficulties or failures."], "put a good face on things": ["To not let oneself get discouraged by some difficulties or failures."], "put up a brave front": ["To not let oneself get discouraged by some difficulties or failures."], "candle wick": ["A string that holds the flame of a candle."], "wick": ["A string that holds the flame of a candle."], "zodiac sign": ["One of 12 equal areas into which the zodiac is divided."], "WAP": ["A protocol suite allowing the interoperability of mobile equipments and software with many different network technologies."], "Wireless Application Protocol": ["A protocol suite allowing the interoperability of mobile equipments and software with many different network technologies."], "WDP": ["A protocol that defines the movement of information from receiver to the sender and resembles the User Datagram Protocol (UDP) in the Internet protocol suite."], "Wireless Datagram Protocol": ["A protocol that defines the movement of information from receiver to the sender and resembles the User Datagram Protocol (UDP) in the Internet protocol suite."], "unbutton": ["To open something by undoing its buttons."], "scarred": ["Full of scars."], "coeval": ["Having the same age."], "sleeper": ["Someone who is sleeping.", "A railroad passenger car that has beds where passengers can sleep."], "WTLS": ["A security protocol, part of the Wireless Application Protocol (WAP) stack."], "sextuple": ["To make six times as great.", "To become six times as great."], "adultescent": ["An adult who still behaves like an adolescent."], "adulescent": ["An adult who still behaves like an adolescent."], "xenoglossy": ["A paranormal phenomenon in which a person is able to speak or write a language that is normally unknown to him or her."], "xenoglossia": ["A paranormal phenomenon in which a person is able to speak or write a language that is normally unknown to him or her."], "Buruli ulcer": ["An infectious disease caused by Mycobacterium ulcerans characterized by necrotising lesions developing in the skin."], "Bairnsdale ulcer": ["An infectious disease caused by Mycobacterium ulcerans characterized by necrotising lesions developing in the skin."], "Searl ulcer": ["An infectious disease caused by Mycobacterium ulcerans characterized by necrotising lesions developing in the skin."], "Searle's ulcer": ["An infectious disease caused by Mycobacterium ulcerans characterized by necrotising lesions developing in the skin."], "goniometrical": ["Relating to the measurement of angles."], "xylotheque": ["Collection of wood samples and objects made of wood."], "yellow fever": ["An acute viral hemorrhagic disease transmitted by mosquitoes."], "black vomit": ["An acute viral hemorrhagic disease transmitted by mosquitoes."], "yellow jack": ["An acute viral hemorrhagic disease transmitted by mosquitoes."], "amarillic typhus": ["An acute viral hemorrhagic disease transmitted by mosquitoes."], "Japanese encephalitis": ["A disease caused by the Japanese encephalitis virus transmitted by mosquitoes."], "chikungunya": ["An illness with symptoms similar to dengue fever transmitted by the Aedes mosquitoes."], "West Nile virus": ["A virus of the family Flaviviridae found in both tropical and temperate regions and transmitted mainly by mosquitoes."], "purple pitcher plant": ["A carnivorous plant in the family Sarraceniaceae having a purple color."], "side-saddle flower": ["A carnivorous plant in the family Sarraceniaceae having a purple color."], "rolling metal door": ["Shutter of a building or room entrance, made of articulated horizontal lathes of chemically pure metal, metal compound or alloy, usually steel or aluminium based, retracting by rotation into a cylinder placed above the entrance to open it, and developing from the top downwards into a plane to close it."], "blood sugar": ["Glucose that is present in the blood of a human or animal.", "The amount of glucose present in the blood of a human or animal."], "blood glucose level": ["The amount of glucose present in the blood of a human or animal."], "blood sugar concentration": ["The amount of glucose present in the blood of a human or animal."], "level of blood sugar": ["The amount of glucose present in the blood of a human or animal."], "blood glucose": ["Glucose that is present in the blood of a human or animal."], "hyperglycemia": ["A condition in which the blood sugar level is excessively high."], "high blood sugar": ["A condition in which the blood sugar level is excessively high."], "hypoglycemia": ["A condition in which the blood sugar level is excessively low."], "hyperglycaemia": ["A condition in which the blood sugar level is excessively high."], "hypoglyc\u00e6mia": ["A condition in which the blood sugar level is excessively low."], "answer in the affirmative": ["To answer a question with yes."], "answer in the negative": ["To answer a question with no."], "African elephant": ["An elephant of the genus Loxodonta native of Africa."], "African bush elephant": ["An elephant of the species Loxodonta africana, the larger of the two species of African elephants."], "bush elephant": ["An elephant of the species Loxodonta africana, the larger of the two species of African elephants."], "African forest elephant": ["An elephant of the species Loxodonta cyclotis living in the forest of the Congo Basin."], "Asian elephant": ["An elephant of the species Elephas maximus native of Asia."], "Asiatic Elephant": ["An elephant of the species Elephas maximus native of Asia."], "inkscape": ["A vector graphics editor application, fully compliant with the XML, SVG, and CSS standards, distributed under a free software license, the GNU GPL."], "Inkscape": ["A vector graphics editor application, fully compliant with the XML, SVG, and CSS standards, distributed under a free software license, the GNU GPL."], "glycol": ["A chemical compound containing two hydroxyl groups."], "diol": ["A chemical compound containing two hydroxyl groups."], "geminal diol": ["A diol having two hydroxyl groups bonded to the same atom."], "gem-diol": ["A diol having two hydroxyl groups bonded to the same atom."], "vicinal diol": ["A diol with two hydroxyl groups in vicinal positions."], "network socket": ["An endpoint of a bidirectional inter-process communication flow across an Internet Protocol-based computer network, such as the Internet."], "Wireless Transport Layer Security": ["A security protocol, part of the Wireless Application Protocol (WAP) stack."], "kidult": ["An adult who still behaves like an adolescent."], "nightly": ["Occurring every night.", "Every night."], "Wireshark": ["A free and open-source network packet analyzer, used for network troubleshooting, analysis, software and communications protocol development, and education."], "ACL": ["A method of keeping in check the Internet traffic that attempts to flow through a given hub, router, firewall, or similar device."], "ARP": ["A computer networking protocol for determining a network host's Link Layer or hardware address when only its Internet Layer (IP) or Network Layer address is known."], "Address Resolution Protocol": ["A computer networking protocol for determining a network host's Link Layer or hardware address when only its Internet Layer (IP) or Network Layer address is known."], "asymmetric keys": ["A pair of encryption keys, composed of one public key and one private key. Each key is one way, meaning that a key used to encrypt data cannot be used to decrypt the same data. However, information encrypted using the public key can be decrypted using the private key, and vice versa."], "backdoor": ["A design fault, planned or accidental, that allows the apparent strength of the design to be easily avoided by those who know the trick.", "A door in the rear of a building."], "botnet": ["A collection of computers that are infected with small bits of code (bots) that allow a remote computer to control some or all of the functions of the infected machines."], "bus topology": ["A network architecture in which a set of clients are connected via a shared communications line, called a bus."], "certificate authority": ["A trusted third party who verifies the identity of a person or entity, then issues digital certificates vouching that various attributes (e. g., name, a given public key) have a valid association with that entity."], "cookie": ["A text file passed from the Web server to the Web client (a user's browser) that is used to identify a user and could record personal information such as ID and password, mailing address, credit card number, and more. A cookie is what enables your favorite Web site to \"recognize\" you each time you visit."], "web cookie": ["A text file passed from the Web server to the Web client (a user's browser) that is used to identify a user and could record personal information such as ID and password, mailing address, credit card number, and more. A cookie is what enables your favorite Web site to \"recognize\" you each time you visit."], "browser cookie": ["A text file passed from the Web server to the Web client (a user's browser) that is used to identify a user and could record personal information such as ID and password, mailing address, credit card number, and more. A cookie is what enables your favorite Web site to \"recognize\" you each time you visit."], "HTTP cookie": ["A text file passed from the Web server to the Web client (a user's browser) that is used to identify a user and could record personal information such as ID and password, mailing address, credit card number, and more. A cookie is what enables your favorite Web site to \"recognize\" you each time you visit."], "DES": ["A commonly-used encryption algorithm that encrypts data using a key of 56 bits, which is considered fairly weak given the speed and power of modern computers."], "Data Encryption Standard": ["A commonly-used encryption algorithm that encrypts data using a key of 56 bits, which is considered fairly weak given the speed and power of modern computers."], "dictionary attack": ["An attempt to guess a password by systematically trying every word in a dictionary as the password. This attack is usually automated, using a dictionary of the hacker's choosing, which may include both ordinary words and jargon, names, and slang."], "Diffie-Hellman": ["A mathematical algorithm that allows two users to exchange a secret key over an insecure medium without any prior secrets. This protocol, named after the inventors who first published it in 1976, is used in Virtual Private Networking (VPN)."], "digital signature": ["An electronic identification of a person or thing, intended to verify to a recipient the integrity of data sent to them, and the identity of the sender."], "DNS": ["A network system of servers that translates numeric IP addresses into readable, hierarchical Internet addresses, and vice versa."], "Domain Name System": ["A network system of servers that translates numeric IP addresses into readable, hierarchical Internet addresses, and vice versa."], "DNS cache poisoning": ["A clever technique that tricks a DNS server into believing it has received authentic information when, in reality, it has been lied to, so that the DNS server will give out incorrect answers that provide IP addresses of the attacker's choice, instead of the real addresses."], "DNS spoofing": ["An attack technique where a hacker intercepts a system's requests to a DNS server in order to issue false responses as though they came from the real DNS server."], "NAT": ["The process of modifying network address information in datagram (IP) packet headers while in transit across a traffic routing device for the purpose of remapping one IP address space into another."], "network address translation": ["The process of modifying network address information in datagram (IP) packet headers while in transit across a traffic routing device for the purpose of remapping one IP address space into another."], "letter bomb": ["An letter sent via the postal service, and designed to explode when opened."], "parcel bomb": ["An parcel sent via the postal service, and designed to explode when opened."], "mail bomb": ["An letter sent via the postal service, and designed to explode when opened."], "post bomb": ["An parcel sent via the postal service, and designed to explode when opened."], "W3C": ["An international industry consortium founded in 1994 to develop common protocols for the evolution of the World Wide Web. W3C has around 450 member organizations from around the world."], "World Wide Web Consortium": ["An international industry consortium founded in 1994 to develop common protocols for the evolution of the World Wide Web. W3C has around 450 member organizations from around the world."], "francophile": ["Having a special fondness for France, the French and French culture.", "A person having a special fondness for France, the French and French culture."], "Francophilia": ["The love of France, the French and French culture."], "francophilia": ["The love of France, the French and French culture."], "gallophilia": ["The love of France, the French and French culture."], "basilica": ["In the Roman architecture a rectangular building, divided into aisles by rows of columns, intended for public functions (trade, administration of justice etc.); also used for meetings of the early Christian communities", "Church of considerable importance."], "baptistery": ["Building adjacent to a church or in the church itself, for the baptism of catechumens."], "spire": ["Architectural element in the shape of a pyramid or cone crowning a structure (door, front, ground, etc.), much used in Gothic architecture."], "buttress": ["Architectural element that reinforces structure, absorbing the forces discharged on it."], "shoehorn": ["A tool designed to help inserting the heel of the foot into a shoe."], "shoespoon": ["A tool designed to help inserting the heel of the foot into a shoe."], "terminus": ["The end point of a transportation line."], "gf": ["Female person with whom someone has a relationship."], "third rail": ["A conductor that runs along railway tracks and provides trains with electrical power."], "WINS": ["A system that provides name resolution for computers running Windows NT, Windows 98, and earlier versions of Microsoft operating systems."], "Windows Internet Name Service": ["A system that provides name resolution for computers running Windows NT, Windows 98, and earlier versions of Microsoft operating systems."], "WEP": ["The security aspects of 802.11b, a standard that enables wireless devices such as PDAs and laptop computers to access a network via radio frequencies instead of physical wiring."], "Wired Equivalent Privacy": ["The security aspects of 802.11b, a standard that enables wireless devices such as PDAs and laptop computers to access a network via radio frequencies instead of physical wiring."], "IP tunnel": ["An Internet Protocol (IP) network communications channel between two networks. It is used to transport another network protocol by encapsulation and often encryption of its packets."], "Triple-DES": ["A cryptographic algorithm using three keys by applying the DES algorithm three times on the data to be encrypted, using a different key each time."], "3DES": ["A cryptographic algorithm using three keys by applying the DES algorithm three times on the data to be encrypted, using a different key each time."], "TLS": ["A general-purpose protocol for encrypting Web, e-mail, and other stream-oriented information sent over the Internet; described in RFCs 2246, 2712, 2817, and 2818."], "session hijacking": ["An intrusion technique whereby an attacker sends a command to an already existing connection between two machines, in order to wrest control of the connection away from the machine that initiated it with the goal of gaining access to a server while bypassing normal authentication measures."], "TCP session hijacking": ["An intrusion technique whereby an attacker sends a command to an already existing connection between two machines, in order to wrest control of the connection away from the machine that initiated it with the goal of gaining access to a server while bypassing normal authentication measures."], "session stealing": ["An intrusion technique whereby an attacker sends a command to an already existing connection between two machines, in order to wrest control of the connection away from the machine that initiated it with the goal of gaining access to a server while bypassing normal authentication measures."], "TCP/IP": ["The set of communications protocols used for the Internet and other similar networks."], "Internet Protocol Suite": ["The set of communications protocols used for the Internet and other similar networks."], "network's architecture": ["The layout pattern of interconnections of the various elements (links, nodes, etc.) of a computer network."], "network's topology": ["The layout pattern of interconnections of the various elements (links, nodes, etc.) of a computer network."], "star topology": ["A networking setup used with 10Base-T Ethernet cabling and a hub. Each node on the network is connected to the hub, like points of a star."], "baker's yeast": ["A yeast used as a leavening agent in baking bread and bakery products, often but not always of the species Saccharomyces cerevisiae."], "gnawer": ["Any of the relatively small placental mammals that constitute the order Rodentia, having constantly growing incisor teeth specialized for gnawing."], "fireworks": ["An event or a display where fireworks are set off."], "car sharing": ["A model of car rental where people rent cars for short periods of time, often by the hour."], "carsharing": ["A model of car rental where people rent cars for short periods of time, often by the hour."], "car-club": ["A model of car rental where people rent cars for short periods of time, often by the hour."], "ride sharing": ["A model of car rental where people rent cars for short periods of time, often by the hour."], "bumper car": ["A small electric car designed to bump into other similar cars, often displayed at a funfair."], "dodgem car": ["A small electric car designed to bump into other similar cars, often displayed at a funfair."], "dodgem": ["A small electric car designed to bump into other similar cars, often displayed at a funfair."], "beet sugar": ["Sugar obtained from sugar beet."], "amusia": ["The inability to recognize or produce rhythms and melodies despite functioning sensory organs."], "Numidia": ["Ancient Berber kingdom in present-day Algeria and part of Tunisia."], "Numidians": ["Semi-nomadic Berber tribes who lived in ancient Numidia."], "epizootic": ["A sudden increase in the incidence rate of a disease to a value above normal, affecting large numbers of animals of a given species."], "trojan": ["A malware that appears to perform a desirable function for the user prior to run or install but instead facilitates unauthorized access of the user's computer system."], "antivirus": ["A software used to prevent, detect, and remove computer viruses, worms, and trojan horses."], "antivirus software": ["A software used to prevent, detect, and remove computer viruses, worms, and trojan horses."], "duplex": ["A system composed of two connected parties or devices that can communicate with one another in both directions."], "half duplex": ["A duplex system that provides for communication in both directions, but only one direction at a time (not simultaneously)."], "full-duplex": ["A duplex system that provides for communication in both directions simultaneously."], "bioclimatic": ["Of or relating to the relation between climat and living organisms."], "bioclimatically": ["According to bioclimatology."], "dung": ["Animal feces."], "solar eclipse": ["The full or partial covering of the Sun as viewed from Earth when the Moon passes between the Sun and the Earth."], "lunar eclipse": ["The full or partial covering of the Moon as viewed from Earth when the Earth passes between the Sun and the Moon."], "have a mind like a sieve": ["To have difficulty remembering things."], "have a memory like a sieve": ["To have difficulty remembering things."], "chinoise": ["A type of colander, generally having a conical shape, with a very fine mesh, used in particular to filter sauces."], "chinois": ["A type of colander, generally having a conical shape, with a very fine mesh, used in particular to filter sauces."], "sauce": ["A liquid food accompanying a dish."], "plush": ["A textile made of wool or silk, similar to velvet, but with long nap or pile.", "Doll or toy coated with plush."], "rapeseed": ["A Eurasian cruciferous plant, Brassica napus, that is cultivated for its seeds, which yield a useful oil, and as a fodder plant."], "cranberry": ["An evergreen dwarf shrub or trailing vine in the genus Vaccinium, subgenus Oxycoccos.", "The edible berry of the cranberry plant, deep red when ripe."], "energivorous": ["Consuming a lot of electrical energy."], "program refinement": ["The verifiable transformation of an abstract (high-level) formal specification into a concrete (low-level) executable program."], "modularity": ["A continuum describing the degree to which a system\u2019s components may be separated and recombined."], "control hierarchy": ["A program structure that represents the organization of a program components and implies a hierarchy of control."], "ice cream bar": ["A frozen dessert placed on a stick."], "Scrum": ["An iterative, incremental methodology for project management often seen in agile software development, a type of software engineering."], "smoothie": ["A thick beverage obtained by mixing fresh fruits or vegetables."], "smoothy": ["A thick beverage obtained by mixing fresh fruits or vegetables."], "have nightmares": ["To dream of unpleasant events."], "e-passport": ["A combined paper and electronic identity document that uses biometrics to authenticate the citizenship of travelers."], "ePassport": ["A combined paper and electronic identity document that uses biometrics to authenticate the citizenship of travelers."], "historic": ["Related to history."], "Don River": ["One of the major rivers of Russia which rises in the town of Novomoskovsk southeast of Moscow, and flows for a distance of about 1,950 kilometres to the Sea of Azov."], "River Don": ["One of the major rivers of Russia which rises in the town of Novomoskovsk southeast of Moscow, and flows for a distance of about 1,950 kilometres to the Sea of Azov."], "D\u00f4n": ["A Welsh mother goddess."], "theonym": ["The name of a god."], "Seversky Donets": ["A river that originates in Central Russia and flows into the Don River."], "Dnieper River": ["A river which flows from Russia, through Belarus and Ukraine, ending its flow in the Black Sea."], "grammaticalization": ["A language change process by which words lose their lexical meaning and become grammatical words."], "grammaticalisation": ["A language change process by which words lose their lexical meaning and become grammatical words."], "grammatisation": ["A language change process by which words lose their lexical meaning and become grammatical words."], "grammaticisation": ["A language change process by which words lose their lexical meaning and become grammatical words."], "Nigerien": ["A person from Niger or of Nigerien descent.", "Of, from, or pertaining to Niger or the Nigerien people."], "cleaner": ["Someone who cleans private homes, offices or public buildings for payment."], "cleaning lady": ["A woman who cleans private homes, offices or public buildings for payment."], "charwoman": ["A woman who cleans private homes, offices or public buildings for payment."], "Lokaa": ["An Upper Cross River language of Nigeria."], "general anesthesia": ["The administration of a drug that induces a reversible loss of consciousness of a patient to facilitate surgery."], "general anaesthesia": ["The administration of a drug that induces a reversible loss of consciousness of a patient to facilitate surgery."], "general anaesthetic": ["A drug that induces a reversible loss of consciousness of a patient to facilitate surgery."], "general anesthetic": ["A drug that induces a reversible loss of consciousness of a patient to facilitate surgery."], "anaesthesiologist": ["A medical specialist who deals with anesthetizing patients for operations or for pain."], "anesthesist": ["A medical specialist who deals with anesthetizing patients for operations or for pain."], "anesthetize": ["To make someone unable to feel pain by giving an anaesthetic."], "anaesthetise": ["To make someone unable to feel pain by giving an anaesthetic."], "nudity": ["The state of wearing no clothing."], "nakedness": ["The state of wearing no clothing."], "cocaine-dependent": ["A person addicted to cocaine."], "morphine-dependent": ["A person addicted to morphine."], "diluvian": ["Pertaining or relating to a flood or deluge."], "diluvial": ["Pertaining or relating to a flood or deluge."], "baby boomer": ["A person born during a baby boom."], "babyboomer": ["A person born during a baby boom."], "Ask": ["The first man, according to Norse mythology."], "Embla": ["The first woman, according to Norse mythology."], "orbitography": ["The calculation of the orbital elements of natural or artificial satellites."], "orbit determination": ["The calculation of the orbital elements of natural or artificial satellites."], "eyelashes": ["The hairs that grow on the eyelid, considered as a whole."], "ears": ["The two ears of a human being considered as a whole."], "shoulders": ["The two shoulders of a human being considered as a whole."], "calves": ["The two calves of a human being considered as a whole."], "toes": ["The toes of a person considered as a whole."], "Oriental hornet": ["A hornet of the species Vespa orientalis, brown with one yellow stripe."], "casein": ["The main protein found in the milk of mammals."], "Ethiopian Sidamo": ["A type of Arabica coffee grown exclusively in the Sidamo Province of Ethiopia.."], "alphasyllabary": ["A writing system in which consonant signs (graphemes) are inherently associated with a following vowel."], "cognitive psychology": ["An approach to understanding psychology that emphasizes mental processes."], "tinnitus": ["The perception of sound within the human ear in the absence of corresponding external sound."], "little bronze cuckoo": ["A cuckoo of the species Chrysococcyx minutillus, measuring about 15 cm and living in subtropical or tropical moist lowland forests."], "clunker": ["An old decrepit automobile."], "rattletrap": ["An old decrepit automobile."], "rattle trap": ["An old decrepit automobile."], "rustbucket": ["An old decrepit automobile."], "rust-bucket": ["An old decrepit automobile."], "foreteller": ["A person who divines."], "fortune-teller": ["A person who gives predictions about the future of a person's life."], "seer": ["A person who divines."], "clairvoyant": ["A person who divines."], "beetroot": ["A deep red coloured variety of beet (Beta vulgaris subsp. vulgaris var. conditiva)."], "table beet": ["A deep red coloured variety of beet (Beta vulgaris subsp. vulgaris var. conditiva)."], "garden beet": ["A deep red coloured variety of beet (Beta vulgaris subsp. vulgaris var. conditiva)."], "red beet": ["A deep red coloured variety of beet (Beta vulgaris subsp. vulgaris var. conditiva)."], "beet": ["A deep red coloured variety of beet (Beta vulgaris subsp. vulgaris var. conditiva)."], "mental calculation": ["The solving of arithmetical problems without the help of pen and paper or calculators."], "prejudiced": ["Exhibiting prejudice or bias."], "hornet": ["The largest European wasp with black and yellow stripes on the abdomen."], "Manhattanite": ["Someone who lives in Manhattan.", "Of, or from, Manhattan."], "Bostonite": ["Someone who lives in or comes from Boston.", "Of, from, or pertaining to Boston."], "Bostonian": ["Someone who lives in or comes from Boston.", "Of, from, or pertaining to Boston."], "Manhattanese": ["Of, or from, Manhattan."], "Manhattan": ["One of the five boroughs of New York City."], "Queens": ["One of the five boroughs of New York City."], "Bronx": ["One of the five boroughs of New York City."], "Brooklyn": ["One of the five boroughs of New York City."], "Staten Island": ["One of the five boroughs of New York City."], "habitant": ["A human, officially being inhabitant of certain area inside well defined, and precise, borders - usually seen from a standpoint of census, government, register, etc."], "moke": ["An old or worthless horse."], "civilizational": ["Relating to civilization."], "civilisational": ["Relating to civilization."], "civilizationally": ["In a civilizational manner."], "civilisationally": ["In a civilizational manner."], "sequencing": ["The determination of the linear order of the components of a macromolecule."], "frutarianism": ["A diet that comprises fruits, nuts and seeds but no animal products and often no plants that are destroyed when harvested."], "fruitarianism": ["A diet that comprises fruits, nuts and seeds but no animal products and often no plants that are destroyed when harvested."], "fruitarian": ["Someone who eats only fruits, nuts and seeds, but no animal products and sometimes only plants which are not destroyed when harvested."], "fructarian": ["Someone who eats only fruits, nuts and seeds, but no animal products and sometimes only plants which are not destroyed when harvested."], "ergotism": ["Poisoning caused by the ingestion of ergot fungi which infect rye and other cereals."], "ergotoxicosis": ["Poisoning caused by the ingestion of ergot fungi which infect rye and other cereals."], "ergot poisoning": ["Poisoning caused by the ingestion of ergot fungi which infect rye and other cereals."], "Saint Anthony's Fire": ["Poisoning caused by the ingestion of ergot fungi which infect rye and other cereals."], "milligram": ["A unit of mass equal to one thousandth of a gram."], "decigram": ["A unit of mass equal to one tenth of a gram."], "centigram": ["A unit of mass equal to one hundredth of a gram."], "microgram": ["A unit of mass equal to one thousandth of a milligram."], "nanogram": ["A unit of mass equal to one thousandth of a microgram."], "picogram": ["A unit of mass equal to one thousandth of a nanogram."], "femtogram": ["A unit of mass equal to one thousandth of a picogram."], "attogram": ["A unit of mass equal to one thousandth of a femtogram."], "bog body": ["A naturally preserved human corpse found in the sphagnum bogs in Northern Europe."], "zeptogram": ["A unit of mass equal to one thousandth of an attogram."], "yoctogram": ["A unit of mass equal to one thousandth of a zeptogram."], "decagram": ["A unit of mass equal to ten grams."], "hectogram": ["A unit of mass equal to one hundred grams."], "myriagram": ["A unit of mass equal to ten kilograms."], "megagram": ["A metric unit of mass equal to 1000 kilograms."], "kilotonne": ["A unit of mass equal to one thousand megagrams."], "gigagram": ["A unit of mass equal to one thousand megagrams."], "kiloton": ["A unit of mass equal to one thousand megagrams."], "teragram": ["A unit of mass equal to one thousand gigagrams."], "petagram": ["A unit of mass equal to one thousand teragrams."], "exagram": ["A unit of mass equal to one thousand petagrams."], "zettagram": ["A unit of mass equal to one thousand exagrams."], "yottagram": ["A unit of mass equal to one thousand zettagrams."], "ectomy": ["The surgical removal of an organ or other anatomical structure."], "adenectomy": ["The surgical removal of a gland."], "adenoidectomy": ["The surgical removal of the adenoids."], "adrenalectomy": ["The surgical removal of an adrenal gland."], "appendisectomy": ["The surgical removal of the vermiform appendix."], "appendicectomy": ["The surgical removal of the vermiform appendix."], "bullectomy": ["The surgical removal of bullae from the lung."], "bunionectomy": ["The surgical removal of a bunion."], "bursectomy": ["The surgical removal of a bursa."], "cholecystectomy": ["The surgical removal of the gallbladder."], "cystectomy": ["The surgical removal of the urinary bladder."], "long-armed": ["Having long arms."], "short-armed": ["Having short arms."], "Northumbrian": ["A dialect of the Old English language spoken in the Anglian Kingdom of Northumbria."], "Mercian": ["A dialect of the Old English language spoken in the Anglo-Saxon kingdom of Mercia."], "Kentish": ["A dialect of the Old English language spoken in the Anglo-Saxon kingdom of Kent."], "West Saxon": ["A dialect of the Old English language spoken in Wessex."], "Himalaya": ["A mountain range in Asia, separating the Indian subcontinent from the Tibetan Plateau."], "green chemistry": ["A philosophy of chemical research and engineering that encourages the design of products and processes that minimize the use and generation of hazardous substances."], "sustainable chemistry": ["A philosophy of chemical research and engineering that encourages the design of products and processes that minimize the use and generation of hazardous substances."], "Belgian Malinois": ["A Belgian shepherd that can be easily trained for various tasks."], "cynophile": ["A person who loves dogs."], "cynophilia": ["A liking for dogs or other canines."], "cynophobia": ["The fear of dogs or other canines."], "cynophobe": ["A person who fears dogs or other canines."], "dog handler": ["A person expert in the training of dogs for performing special tasks."], "dog trainer": ["A person expert in the training of dogs for performing special tasks."], "Otwa": ["A language spoken in the Edo State, Owan, and Akoko-Edo areas of Nigeria and surrounding areas."], "Otuo": ["A language spoken in the Edo State, Owan, and Akoko-Edo areas of Nigeria and surrounding areas."], "electromagnetic hypersensitivity": ["A set of claims of adverse medical symptoms purportedly caused by exposure to electromagnetic fields."], "EHS": ["A set of claims of adverse medical symptoms purportedly caused by exposure to electromagnetic fields."], "electrohypersensitivity": ["A set of claims of adverse medical symptoms purportedly caused by exposure to electromagnetic fields."], "electrical sensitivity": ["A set of claims of adverse medical symptoms purportedly caused by exposure to electromagnetic fields."], "ES": ["A set of claims of adverse medical symptoms purportedly caused by exposure to electromagnetic fields."], "Nefertiti": ["The Great Royal Wife of the Egyptian Pharaoh Akhenaten, who lived in the 14th century BC."], "diamondiferous": ["Yielding diamond."], "carbon sink": ["A natural or artificial reservoir that absorbs carbon dioxide from the atmosphere."], "carbon dioxide sink": ["A natural or artificial reservoir that absorbs carbon dioxide from the atmosphere."], "Malaysian": ["From or relating to Malaysia.", "A citizen of Malaysia or someone who is originally from Malaysia."], "Malayan": ["From or relating to Malaysia.", "A citizen of Malaysia or someone who is originally from Malaysia."], "twitter": ["To post a message the microblogging website Twitter."], "tweet": ["To post a message the microblogging website Twitter."], "fly agaric": ["A poisonous and psychoactive fungus of the genus Amanita, whose cap is red with white spots."], "fly Amanita": ["A poisonous and psychoactive fungus of the genus Amanita, whose cap is red with white spots."], "psychoactive": ["Affecting the mind or mental processes."], "Proto-Germanic": ["Hypothetical prehistoric ancestor of all Germanic languages."], "psychotropic": ["Affecting the mind or mental processes."], "molluscicide": ["A substance having the property of killing molluscs."], "snail bait": ["A substance having the property of killing molluscs."], "snail pellet": ["A substance having the property of killing molluscs."], "Germanic": ["Hypothetical prehistoric ancestor of all Germanic languages."], "Common Germanic": ["Hypothetical prehistoric ancestor of all Germanic languages."], "sully": ["To make filthy."], "fifth toe": ["The smallest of the toes on the foot."], "little toe": ["The smallest of the toes on the foot."], "baby toe": ["The smallest of the toes on the foot."], "pinky toe": ["The smallest of the toes on the foot."], "emergency contraception": ["A birth control measure that, if used after sexual intercourse, may prevent pregnancy."], "postcoital contraception": ["A birth control measure that, if used after sexual intercourse, may prevent pregnancy."], "whistling swan": ["A swan of the species Cygnus columbianus that whistles when flying."], "artificial insemination": ["An insemination that is performed by using means other than sexual intercourse."], "AI": ["An insemination that is performed by using means other than sexual intercourse."], "insemination": ["The introduction of sperm into the female uterus of a mammal or the oviduct of an oviparous."], "systemic": ["Relating to a system."], "sympathetically": ["In a sympathetical manner."], "sympathectomy": ["The surgical cutting of a nerve in the sympathetic nervous system."], "sympathetic nervous system": ["A part of the autonomic nervous system responsible for accelerating the heart rate and raising the blood pressure under stress."], "ortho-sympathetic nervous system": ["A part of the autonomic nervous system responsible for accelerating the heart rate and raising the blood pressure under stress."], "sympathetic strike": ["A strike action performed by workers not because of grievances, but as a support for other workers who are on strike."], "sympathetic vibration": ["A vibration of an object that occurs as a response to neighboring object that is vibrating."], "baby elephant": ["A young elephant."], "elephant calf": ["A young elephant."], "troy ounce": ["A unit of weight used for precious metals and equivalent to 31.1034768 grams."], "uncircumcised": ["Not having had the foreskin of the penis cut out."], "cratered": ["Having many craters."], "crosstip screwdriver": ["A hand tool used for driving cross-head screws."], "launch pad": ["A structure for keeping a rocket or a spacecraft still for a few seconds after ignition."], "cross-tip screwdriver": ["A hand tool used for driving cross-head screws."], "North African": ["Relating to or originating from North Africa.", "A person originating from or inhabitant of North Africa."], "augmented reality": ["A view of a real-world environment containing additional computer-generated information such as sound or graphics."], "weave": ["To make, as fabric, by interlacing threads."], "discectomy": ["The surgical removal of herniated disc material that presses on a nerve root or the spinal cord."], "diverticulectomy": ["The surgical removal of a diverticulum."], "embolectomy": ["The surgical removal of an embolus."], "endarterectomy": ["The surgical removal of material that blocks an artery."], "esophagectomy": ["The surgical removal of all or part of the esophagus."], "oesophagectomy": ["The surgical removal of all or part of the esophagus."], "frenectomy": ["The surgical removal of a frenulum."], "frenulectomy": ["The surgical removal of a frenulum."], "frenotomy": ["The surgical removal of a frenulum."], "lingual frenectomy": ["The surgical removal of the lingual frenulum."], "labial frenectomy": ["The surgical removal of the labial frenulum."], "organic traffic": ["Web traffic which comes from unpaid listing at search engines or directories."], "web banner": ["A form of advertising on the World Wide Web which entails embedding an advertisement into a web page."], "banner ad": ["A form of advertising on the World Wide Web which entails embedding an advertisement into a web page."], "pay per click": ["An Internet advertising model used on websites, in which advertisers pay their host only when their ad is clicked."], "email advertising": ["A form of direct marketing which uses electronic mail as a means of communicating commercial or fund-raising messages to an audience."], "email marketing": ["A form of direct marketing which uses electronic mail as a means of communicating commercial or fund-raising messages to an audience."], "Croatian Written Latin Script": ["A written form of the Croatian language."], "Croatian Written": ["Written forms of the Croatian language."], "Croatian Spoken": ["Dialects of the Croatian language."], "anxiolytic": ["A drug used for the treatment of anxiety."], "antipanic": ["A drug used for the treatment of anxiety."], "antianxiety agent": ["A drug used for the treatment of anxiety."], "bipedalism": ["The capacity of moving by using only two rear limbs."], "label": ["A small ticket or sign giving information about something to which it is attached or intended to be attached.", "To put a label on something in order to provide additional information."], "plagiarism": ["The act of copying another person's ideas, text or other creative work, and presenting it as one's own.", "A text or other work resulting from the copying of another person's work."], "plagiarist": ["Someone who copies ideas or text from another person and presents them as their own."], "plagiarize": ["To copy someone else's work and pass it off as one's own."], "plagiarise": ["To copy someone else's work and pass it off as one's own."], "schadenfreude": ["Pleasure derived from the misfortunes of others."], "epicaricacy": ["Pleasure derived from the misfortunes of others."], "Apure River": ["A river of western Venezuela, formed by the confluence of the Sarare and Uribante near Guasdualito, in Venezuela."], "system development methodology": ["A framework that is a used to structure, plan, and control the process of developing information systems."], "mammalian": ["Any animal of the Mammalia class, a class of warm-blooded vertebrates having a thoracic diaphragm, a four-chambered heart and in which the females feed the young with their own milk.", "Relating or pertaining to mammals."], "vomeronasal organ": ["An auxiliary olfactory sense organ that is mainly used to detect pheromones."], "Jacobson's organ": ["An auxiliary olfactory sense organ that is mainly used to detect pheromones."], "VNO": ["An auxiliary olfactory sense organ that is mainly used to detect pheromones."], "Amaterasu": ["The most important goddess of the Japanese Shinto religion who is a personification of the sun and light."], "birth channel": ["The organs of the female reproductive system that a baby must pass during childbirth."], "kairos": ["The right or opportune moment."], "deuce": ["A playing card with two spots"], "vegan man": ["A man who rejects to use animals for any purpose such as for food, entertainment, clothes etc."], "vegan woman": ["A woman who rejects to use animals for any purpose such as for food, entertainment, clothes etc."], "Adempiere": ["An open source enterprise resource planning or ERP software including features of supply chain management (SCM), customer relationship management (CRM), financial performance analysis, material requirements planning and integrated point of sales (POS) and web store."], "Compiere": ["An open source enterprise resource planning or ERP and customer relationship management (CRM) software for the small and medium-sized enterprise (SME) in distribution, retail, service and manufacturing."], "material requirements planning": ["A production planning and inventory control system used to manage manufacturing processes."], "MRP": ["A production planning and inventory control system used to manage manufacturing processes."], "OpenERP": ["An open source comprehensive suite of business applications including sales, CRM, project management, warehouse management, manufacturing, accounting and human resources."], "OFBiz": ["An open source enterprise resource planning (ERP) system which provides a suite of enterprise applications that integrate and automate many of the business processes of an enterprise."], "Apache OFBiz": ["An open source enterprise resource planning (ERP) system which provides a suite of enterprise applications that integrate and automate many of the business processes of an enterprise."], "Apache Open for Business": ["An open source enterprise resource planning (ERP) system which provides a suite of enterprise applications that integrate and automate many of the business processes of an enterprise."], "Opentaps": ["A web based ERP and CRM for small to medium sized businesses based on Apache Open for Business."], "uninvite": ["To cancel an invitation to."], "disinvite": ["To cancel an invitation to."], "Nogay": ["A Turkic language spoken in southwestern Russia."], "Nogai Tatar": ["A Turkic language spoken in southwestern Russia."], "agreeable to God": ["Intended to please God."], "Image from Commons": ["A link to an image at the Commons repository."], "doctoral title": ["The academic title of a doctor."], "doctor's degree": ["One of the highest earned academic degrees conferred by a university."], "doctoral advisor": ["Someone who counsels a candidate for a doctorate degree who is writing a dissertation."], "dissertation advisor": ["Someone who counsels a candidate for a doctorate degree who is writing a dissertation."], "tomosynthesis": ["The generation of a tomogram by reconstructing a 3D model of an object from a set of 2D projection of that object under different angles."], "digital tomosynthesis": ["The generation of a tomogram by reconstructing a 3D model of an object from a set of 2D projection of that object under different angles."], "doctoral candidate": ["Someone who is writing a dissertation in order to obtain a doctoral degree."], "doctoral student": ["Someone who is writing a dissertation in order to obtain a doctoral degree."], "Ph.D. student": ["Someone who is writing a dissertation in order to obtain a doctoral degree."], "euergetism": ["The practice of notables to spend a part of their wealth for the good of the community."], "gumboots": ["Watertight boots made of rubber."], "rubber boots": ["Watertight boots made of rubber."], "wellingtons": ["Watertight boots made of rubber."], "wellington boots": ["Watertight boots made of rubber."], "wellies": ["Watertight boots made of rubber."], "state religion": ["A religion officially endorsed by a state."], "ghost town": ["A completely or almost completely abandoned town."], "ghostwriter": ["A person who is paid to write a text that is officially credited to another person."], "intellectual property": ["A product of the mind that has commercial value, for example literary or artistic works."], "Feuerzangenbowle": ["Alcoholic beverage consisting of heated red wine with cloves, cinnamon sticks, star anise, orange and lemon peel over which a rum-soaked sugar loaf is set on fire."], "ghost ship": ["A ship found adrift with its entire crew either missing or dead or a ship that appears out of nowhere."], "stellar nursery": ["A molecular cloud where new stars are formed."], "language family": ["A group of languages which have evolved from a common ancestor."], "European plaice": ["A flatfish of the species Pleuronectes platessa characterised by a darkgreen to darkbrown skin with orange spots on the upperside, and a light gray underside."], "day labourer": ["An unskilled worker paid by the day."], "day laborer": ["An unskilled worker paid by the day."], "day labor": ["A type of employment where the worker is hired and paid one day at a time."], "day labour": ["A type of employment where the worker is hired and paid one day at a time."], "natural satellite": ["A natural satellite of a planet."], "clotted cream": ["A thick cream made by indirectly heating unpasteurised cow's milk and then leaving it in shallow pans to cool slowly."], "Devonshire cream": ["A thick cream made by indirectly heating unpasteurised cow's milk and then leaving it in shallow pans to cool slowly."], "clouted cream": ["A thick cream made by indirectly heating unpasteurised cow's milk and then leaving it in shallow pans to cool slowly."], "scone": ["A small British bread made of wheat, barley or oatmeal with baking powder as leavening agent."], "pasteurize": ["To heat a food to a specific temperature for a definite length of time in order to kill microbes."], "pasteurise": ["To heat a food to a specific temperature for a definite length of time in order to kill microbes."], "tablet computer": ["A flat mobile computer, larger than a mobile phone, with a touch screen for accessing multimedia applications."], "pad": ["A flat mobile computer, larger than a mobile phone, with a touch screen for accessing multimedia applications."], "tablet PC": ["A flat mobile computer, larger than a mobile phone, with a touch screen for accessing multimedia applications."], "applet": ["A small computer application that performs one specific task."], "rum": ["A distilled alcoholic beverage made from sugar cane juice and molasses."], "light rum": ["A light-bodied rum, light in color and lightly sweet in flavor."], "silver rum": ["A light-bodied rum, light in color and lightly sweet in flavor."], "white rum": ["A light-bodied rum, light in color and lightly sweet in flavor."], "gold rum": ["A medium-bodied rum aged in wooden barrels, having the color of amber."], "amber rum": ["A medium-bodied rum aged in wooden barrels, having the color of amber."], "spiced rum": ["A rum that has been flavored with spices."], "dark rum": ["A rum, dark in color, aged longer and with much stronger flavor than gold rum."], "brown rum": ["A rum, dark in color, aged longer and with much stronger flavor than gold rum."], "black rum": ["A rum, dark in color, aged longer and with much stronger flavor than gold rum."], "red rum": ["A rum, dark in color, aged longer and with much stronger flavor than gold rum."], "chestnut tree": ["Any north temperate fagaceous tree of the genus Castanea, such as Castanea sativa, which produce flowers in long catkins and nuts in a prickly bur."], "chestnut grove": ["A place where chestnut trees are grown, in particular for their nuts."], "Thracian": ["An Indo-European language spoken in ancient times by the Thracians in South-Eastern Europe.", "Of or pertaining to Thrace, the Thracians or the extinct Thracian language."], "human language": ["A language that is used for communication among humans."], "natural language": ["A language which has developed over time as a result of the innate human ability for language."], "ordinary language": ["A language which has developed over time as a result of the innate human ability for language."], "archaeometallurgy": ["The scientific study of the history and prehistory of metals and their use through humans."], "rice growing": ["The practice of growing and producing rice."], "rice-growing": ["Relating to the practice of producing rice."], "rice grower": ["A person who grows rice."], "rice farmer": ["A person who grows rice."], "anti-smoking": ["Opposing the practice of smoking, in particular tobacco."], "entomophagy": ["The consumption of insects as food by humans.", "The consumption of insects as food by other animals."], "insectivory": ["The consumption of insects as food by other animals."], "entomophagous": ["(For an animal) Feeding on insects.", "(For a human being) Eating insects."], "entomological": ["Of or relating to entomology."], "entomologic": ["Of or relating to entomology."], "entomophobia": ["The fear of insects."], "entomophilous": ["Pollinated by insects."], "order Entomophthorales": ["An order of fungi that are generally pathogens of insects."], "agroglyph": ["A pattern created by the flattening of a cereal crop."], "crop circle": ["A pattern created by the flattening of a cereal crop."], "crop formation": ["A pattern created by the flattening of a cereal crop."], "corn circle": ["A pattern created by the flattening of a cereal crop."], "tonsillolith": ["A cluster of calcareous matter that forms in the rear of the mouth, in the crevasses of the palatine tonsils."], "cereology": ["The study of crop circles."], "cerealogy": ["The study of crop circles."], "cereologist": ["Someone who studies crop circles."], "cerealogist": ["Someone who studies crop circles."], "tonsil stone": ["A cluster of calcareous matter that forms in the rear of the mouth, in the crevasses of the palatine tonsils."], "loaf of bread": ["A loaf of bread"], "sugarloaf": ["A conical shaped mass of sugar."], "sugar loaf": ["A conical shaped mass of sugar."], "polyglot": ["Able to communicate in several languages, generally at least three.", "Written in, or made up of several languages.", "A person able to communicate in several languages, generally at least three."], "multilingual": ["Able to communicate in several languages, generally at least three.", "Written in several languages, usually at least three."], "letter balance": ["A small scale to weigh letters."], "mea culpa": ["Interjection said by someone who acknowledges that he made a mistake or error."], "my fault": ["Interjection said by someone who acknowledges that he made a mistake or error."], "my mistake": ["Interjection said by someone who acknowledges that he made a mistake or error."], "my bad": ["Interjection said by someone who acknowledges that he made a mistake or error."], "snowdrop": ["A plant of the genus Galanthus that is characterized by its white bell-shaped flower that appears at the end of winter."], "radicchio": ["A leaf vegetable white-veined red leaves and a bitter taste."], "cryovolcano": ["A volcano that erupts volatiles such as water, ammonia, carbon dioxide, nitrogen, or methane instead of molten rock."], "ice volcano": ["A volcano that erupts volatiles such as water, ammonia, carbon dioxide, nitrogen, or methane instead of molten rock."], "kiwifruit": ["A Chinese gooseberry vine fruit, having a hairy brown skin and dark green flesh with fine black seeds."], "pneumonectomy": ["A surgical procedure to remove a lung."], "pneumectomy": ["A surgical procedure to remove a lung."], "tanning bed": ["A device which emits ultraviolet radiation to produce a tan on human skin."], "sun tanning bed": ["A device which emits ultraviolet radiation to produce a tan on human skin."], "right to one's own image": ["The right to forbid the use of one's own image, such as in a movie or a photography, by others."], "anonymous birth": ["The possibility for a a pregnant women to give birth anonymously in a hospital and leave the child there."], "sperm donor": ["A man who donates sperm, usually anonymously, to a sperm bank or fertility clinic."], "sperm bank": ["A facility that collects human sperm from sperm donors for use in artificial insemination."], "semen bank": ["A facility that collects human sperm from sperm donors for use in artificial insemination."], "boomerang": ["A tool with a curved shape used as a weapon or for sport which returns when thrown into the air."], "microblog": ["A type of blog for publishing only short sentences or hyperlinks."], "microblogging": ["The practice of publishing short messages in a microblog."], "ibuprofen": ["A non-steroidal anti-inflammatory drug."], "(RS)-2-(4-(2-methylpropyl)phenyl)propanoic acid": ["A non-steroidal anti-inflammatory drug."], "isobutylphenyl propionic acid": ["A non-steroidal anti-inflammatory drug."], "Parkinson's": ["Progressive, degenerative disorder of the nervous system characterized by tremors, rigidity, bradykinesia, postural instability, and gait abnormalities; caused by a loss of neurons and a decrease of dopamine in the basal ganglia."], "idiopathic parkinsonism": ["Progressive, degenerative disorder of the nervous system characterized by tremors, rigidity, bradykinesia, postural instability, and gait abnormalities; caused by a loss of neurons and a decrease of dopamine in the basal ganglia."], "primary parkinsonism": ["Progressive, degenerative disorder of the nervous system characterized by tremors, rigidity, bradykinesia, postural instability, and gait abnormalities; caused by a loss of neurons and a decrease of dopamine in the basal ganglia."], "PD": ["Progressive, degenerative disorder of the nervous system characterized by tremors, rigidity, bradykinesia, postural instability, and gait abnormalities; caused by a loss of neurons and a decrease of dopamine in the basal ganglia."], "paralysis agitans": ["Progressive, degenerative disorder of the nervous system characterized by tremors, rigidity, bradykinesia, postural instability, and gait abnormalities; caused by a loss of neurons and a decrease of dopamine in the basal ganglia."], "anti-laser": ["A device which absorbs coherent light particles."], "coherent perfect absorber": ["A device which absorbs coherent light particles."], "Gullah": ["A creole language based on English and several African languages which is spoken by the Gullah people in the coastal region of the eastern USA.", "African-Americans who live in the coastal regions of South Caroline and Georgia."], "Geechee": ["A creole language based on English and several African languages which is spoken by the Gullah people in the coastal region of the eastern USA.", "African-Americans who live in the coastal regions of South Caroline and Georgia."], "legal person": ["An entity that is not a person, but is regarded by law to have the status of a person."], "legal personality": ["The characteristic of an entity that is not a person, but is regarded by law to have the status of a person."], "artificial personality": ["The characteristic of an entity that is not a person, but is regarded by law to have the status of a person."], "juristic personality": ["The characteristic of an entity that is not a person, but is regarded by law to have the status of a person."], "artificial person": ["An entity that is not a person, but is regarded by law to have the status of a person."], "juridical person": ["An entity that is not a person, but is regarded by law to have the status of a person."], "juristic person": ["An entity that is not a person, but is regarded by law to have the status of a person."], "body corporate": ["An entity that is not a person, but is regarded by law to have the status of a person."], "microblogger": ["A person who writes in a microblog."], "non-leaded": ["Without lead."], "unleaded": ["Without lead."], "lead-free": ["Without lead."], "leaded": ["Containing lead."], "rough diamond": ["A diamond which has not been cut."], "diamond in the rough": ["A diamond which has not been cut."], "cleanse": ["To remove dirt, dust or foreign matter from."], "fruit fly": ["A colorful fly of the Tephritidae family which feeds on fruit.", "A small nuisance fly of the Drosophilidae family."], "peacock fly": ["A colorful fly of the Tephritidae family which feeds on fruit."], "tephritid fruit fly": ["A colorful fly of the Tephritidae family which feeds on fruit."], "a bird in the hand is worth two in the bush": ["It is better to opt for something that we are sure to obtain, than for something of greater value but which we are not sure to obtain."], "chain saw": ["A power saw with cutting teeth linked in an endless chain."], "biophilia": ["A universal love (-philia) of nature and life (bio-). It may have a genetic component, as well as a learned component that is acquired by children during exposure to the outdoors."], "radial": ["Relating to a radius (of a circle).", "Having the direction of a radius.", "Relating to the radius bone."], "orthoradial": ["Having a direction orthogonal to a radius."], "ortho-radial": ["Having a direction orthogonal to a radius."], "circumferential": ["Having a direction orthogonal to a radius."], "silent film": ["A film without sound where dialogue text and explanations are shown on title cards."], "standing": ["(For a person) Having the body held upright and supported only by the feet."], "stood up": ["(For a person) Having the body held upright and supported only by the feet."], "silent picture": ["A film without sound where dialogue text and explanations are shown on title cards."], "talkie": ["A movie with sound."], "metatarsus": ["The set of five bones in a foot between the tarsa and the toes."], "intertitle": ["In motion pictures, printed text that is shown between action sequences to convey dialogue or explanations."], "title card": ["In motion pictures, printed text that is shown between action sequences to convey dialogue or explanations."], "metatarsal bones": ["The set of five bones in a foot between the tarsa and the toes."], "chop up": ["To cut an animal or a person in order to separate different parts."], "chopping up": ["The act of cutting an animal or a person in order to separate different parts."], "salinization": ["The accumulation of salt in soil."], "salinisation": ["The accumulation of salt in soil."], "pacifier": ["A rubber or plastic nipple that is put into a baby's mouth in order to comfort or quiet."], "soother": ["A rubber or plastic nipple that is put into a baby's mouth in order to comfort or quiet."], "sperm whale": ["A toothed whale measuring up to 20 meters long and having a very large head which is typically one-third of the animal's length."], "common cachalot": ["A toothed whale measuring up to 20 meters long and having a very large head which is typically one-third of the animal's length."], "penis bone": ["A bone found in the penis of most mammals but not humans."], "baculum": ["A bone found in the penis of most mammals but not humans."], "penile bone": ["A bone found in the penis of most mammals but not humans."], "highly active antiretroviral therapy": ["A therapy for treating AIDS consisting of a set of three or four antiretroviral drugs taken in combination."], "HAART": ["A therapy for treating AIDS consisting of a set of three or four antiretroviral drugs taken in combination."], "Habakkuk": ["The eighth of the twelve minor prophets in the Hebrew Bible."], "Havakuk": ["The eighth of the twelve minor prophets in the Hebrew Bible."], "Ash Wednesday": ["The first day of Lent which occurs on a Wednesday, 46 days before Easter."], "Jew bashing": ["Prejudice, discrimination or hostility directed against Jews."], "dukedom": ["A territory ruled by a duke or duchess."], "fanzine": ["A nonprofessional and nonofficial publication produced by fans of a particular cultural phenomenon, for example music or comic books."], "chickadee": ["A small passerine bird of the genus Parus or the family Paridae, common in the northern hemisphere."], "titmouse": ["A small passerine bird of the genus Parus or the family Paridae, common in the northern hemisphere."], "nuclear meltdown": ["Accidental overheating of the core of a nuclear reactor resulting in the core melting and radiation escaping."], "fictional language": ["A language intended to be the language of a fictional world."], "artistic language": ["A constructed language designed for aesthetic pleasure."], "artlang": ["A constructed language designed for aesthetic pleasure."], "vicious circle": ["A situation in which the solution to one problem creates a chain of problems, each making it more difficult to solve the original one."], "vicious cycle": ["A situation in which the solution to one problem creates a chain of problems, each making it more difficult to solve the original one."], "aftershock": ["An earthquake that follows another, usually more powerful, earthquake."], "mustard gas": ["A gas that causes large blisters on the skin and was used in warfare."], "yperite": ["A gas that causes large blisters on the skin and was used in warfare."], "languidness": ["A state of physical and/or mental weakness and a lack of vigor."], "lassitude": ["A state of physical and/or mental weakness and a lack of vigor."], "listlessness": ["A state of physical and/or mental weakness and a lack of vigor."], "languour": ["A state of physical and/or mental weakness and a lack of vigor."], "hibernation": ["A state of inactivity of some animals during winter, characterized by lower body temperature, slower breathing, and lower metabolic rate."], "winter sleep": ["A state of inactivity of some animals during winter, characterized by lower body temperature, slower breathing, and lower metabolic rate."], "hibernate": ["To spend winter time in hibernation."], "a little thing in hand is worth more than a great thing in prospect": ["It is better to opt for something that we are sure to obtain, than for something of greater value but which we are not sure to obtain."], "coagulant": ["A substance that causes coagulation.", "Substance that causes blood coagulation."], "radioactive": ["Exhibiting radioactivity."], "radioactively": ["Using a radioactive substance."], "nonradioactive": ["Not radioactive."], "tenno": ["The emperor and symbolic head of state of Japan."], "mikado": ["The emperor and symbolic head of state of Japan."], "association football": ["A ball sport in which two teams of 11 players each try to get the ball into the other team's goal using mainly their feet."], "blind spot": ["An area on the side of a car that cannot be seen by the driver when looking in the mirrors.", "The place where the optic nerve attaches to the retina and the retina cannot detect light."], "blind angle": ["An area on the side of a car that cannot be seen by the driver when looking in the mirrors."], "blind area": ["An area on the side of a car that cannot be seen by the driver when looking in the mirrors."], "Taoiseach": ["The head of government of Ireland."], "taoiseach": ["The head of government of Ireland."], "Cyrenaica": ["A Roman province on the North African coast, now part of Libya."], "tire pressure": ["The pressure of the gas inside the tires."], "tyre pressure": ["The pressure of the gas inside the tires."], "inflation pressure": ["The pressure of the gas inside the tires."], "Crohn's disease": ["An inflammatory disease of the intestines that may affect any part of the gastrointestinal tract from mouth to anus, primarily causing abdominal pain, diarrhea, vomiting, or weight loss."], "regional enteritis": ["An inflammatory disease of the intestines that may affect any part of the gastrointestinal tract from mouth to anus, primarily causing abdominal pain, diarrhea, vomiting, or weight loss."], "M\u00f6bius syndrome": ["A rare congenital disorder which is characterized by facial paralysis and the inability to move the eyes from side to side."], "Moebius syndrome": ["A rare congenital disorder which is characterized by facial paralysis and the inability to move the eyes from side to side."], "facial nerve paralysis": ["The paralysis of structures innervated by the facial nerve."], "facial paralysis": ["The paralysis of structures innervated by the facial nerve."], "gamma rays": ["A form of electromagnetic radiation or light emission of frequencies produced by sub-atomic particle interactions, such as electron-positron annihilation or radioactive decay."], "radiation poisoning": ["Damage to the body resulting from excessive exposure to ionizing radiation which causes symptoms like nausea, fatigue, vomiting, and diarrhea and in severe cases loss of hair, hemorrhage, inflammation and death."], "creeping dose": ["Damage to the body resulting from excessive exposure to ionizing radiation which causes symptoms like nausea, fatigue, vomiting, and diarrhea and in severe cases loss of hair, hemorrhage, inflammation and death."], "acute radiation syndrome": ["Damage to the body resulting from excessive exposure to ionizing radiation which causes symptoms like nausea, fatigue, vomiting, and diarrhea and in severe cases loss of hair, hemorrhage, inflammation and death."], "ARS": ["Damage to the body resulting from excessive exposure to ionizing radiation which causes symptoms like nausea, fatigue, vomiting, and diarrhea and in severe cases loss of hair, hemorrhage, inflammation and death."], "facial nerve": ["The nerve which controls the muscles of facial expression."], "liquidator": ["One of the approximately 800,000 people who were in charge of clean-up after the April 26, 1986 Chernobyl disaster on the site of the event."], "abdominoplasty": ["A cosmetic surgery procedure used to make the abdomen more firm."], "tummy tuck": ["A cosmetic surgery procedure used to make the abdomen more firm."], "umbilicoplasty": ["A plastic surgery procedure to modify the appearance of one's navel."], "belly button surgery": ["A plastic surgery procedure to modify the appearance of one's navel."], "facelift": ["A cosmetic surgery procedure to give a more youthful appearance to the face by removing wrinkles."], "rhytidectomy": ["A cosmetic surgery procedure to give a more youthful appearance to the face by removing wrinkles."], "nonsmoker": ["Somebody who does not smoke tobacco."], "non-smoker": ["Somebody who does not smoke tobacco."], "RAM": ["Computer component where data are quickly stored and retrieved from any point (i.e. with no need for the data to be written or read from the beginning of the storing space) but disappear when the computer is turned off."], "screw terminal": ["Small object designed to connect electrical wires two by two, each one clamped by a small screw."], "terminal velocity": ["The resulting speed when the downward force of gravity equals the upward force of drag."], "Praguian": ["From or relating to Prague.", "A person from, or living in Prague."], "escape velocity": ["The initial velocity imparted to an object that will enable it to escape a gravitational field without any further boosting."], "dosimeter": ["A device used to measure a dose of ionising radiation."], "radiation dosimeter": ["A device used to measure a dose of ionising radiation."], "dosemeter": ["A device used to measure a dose of ionising radiation."], "moment of silence": ["A short period of time during which people commemorate one or more dead persons in silence."], "orofacial": ["Of or relating to the mouth and face."], "frugivore": ["An animal that mostly eats fruit."], "frugivorous": ["Eating mostly fruit."], "fruit-eating": ["Eating mostly fruit."], "allergology": ["The branch of medicine dealing with the study of allergies."], "feel like a million bucks": ["To feel very well and full of energy."], "feel like a million dollars": ["To feel very well and full of energy."], "atomic power station": ["A power plant in which nuclear energy is converted into heat for use in producing steam for turbines, which in turn drive generators that produce electric power."], "nuclear power station": ["A power plant in which nuclear energy is converted into heat for use in producing steam for turbines, which in turn drive generators that produce electric power."], "mountain gorilla": ["A gorilla of the subspecies \"Gorilla beringei beringei\" living in the Virunga mountains of Central Africa, having a thick coat and long black hair."], "situation comedy": ["A genre of comedy that features recurring characters in a common environment such as a home or workplace, accompanied with jokes as part of the dialogue."], "sitcom": ["A genre of comedy that features recurring characters in a common environment such as a home or workplace, accompanied with jokes as part of the dialogue."], "problem gambling": ["The inability to stop gambling despite harmful negative consequences for finances, job and personal life."], "compulsive gambling": ["The inability to stop gambling despite harmful negative consequences for finances, job and personal life."], "gambling addiction": ["The inability to stop gambling despite harmful negative consequences for finances, job and personal life."], "pathological gambling": ["The inability to stop gambling despite harmful negative consequences for finances, job and personal life."], "thyroid gland": ["A large endocrine gland present in all vertebrates and located in the neck of humans."], "tyroidal": ["Relating to the thyroid gland."], "Virunga Mountains": ["A chain of volcanoes in East Africa."], "dithyramb": ["An ancient Greek hymn sung and danced in honour of Dionysus."], "sylph": ["A mythological creature associated with the element of air."], "sylphid": ["A mythological creature associated with the element of air."], "elemental": ["A mythological being associated with one of the four elements water, air, fire and earth."], "shandy": ["A beer mixed with lemonade."], "shandygaff": ["A beer mixed with lemonade."], "feathers": ["The light horny waterproof structure forming the external covering of birds."], "c\u0153metery": ["A place or area for burying the dead."], "graveyard": ["A place or area for burying the dead."], "burial ground": ["A place or area for burying the dead."], "advowtry": ["Sex by a married person with someone other than their spouse."], "philandery": ["Sex by a married person with someone other than their spouse."], "adulter": ["To commit adultery."], "adulteress": ["A woman who commits adultery."], "adulterine": ["Relating to adultery."], "Rohingya": ["A Bengali-Assamese language spoken by the Rohingya people of Arakan (Rakhine), Burma (Myanmar)."], "Tai Dam written in Latin script": ["The Tai Dam language written with the Latin Script."], "Tupinamb\u00e1": ["An extinct Tup\u00ed-Guaran\u00ed language formerly spoken by the Tupinamb\u00e1 people in Brazil."], "Ten Commandments": ["A list of religious and moral imperatives which, according to the Hebrew Bible, were written by God and given to Moses on Mount Sinai in the form of two stone tablets."], "Decalogue": ["A list of religious and moral imperatives which, according to the Hebrew Bible, were written by God and given to Moses on Mount Sinai in the form of two stone tablets."], "pansy violet": ["A plant of the genus Viola having four upswept petals and a broader one pointing downward."], "aerodynamic force": ["The resultant force exerted on a body by a gas (such as air) in which the body is immersed."], "barodontalgia": ["A pain in tooth caused by a change in atmospheric pressure."], "tooth squeeze": ["A pain in tooth caused by a change in atmospheric pressure."], "aerodontalgia": ["A pain in tooth caused by a change in atmospheric pressure."], "sulfur hexafluoride": ["An inorganic, colorless, odorless, non-toxic and non-flammable gas, whose molecules consist of six fluorine atoms attached to a central sulfur atom."], "atomic pile": ["Device which creates heat and energy by starting and controlling atomic fission."], "Oaths of Strasbourg": ["A peace treaty signed on February 14th 842 between Charles the Bald and Louis the German which is written in Gallo-Romance and Old High German."], "word formation": ["The creation of a new word."], "paremiology": ["The study of proverbs."], "monorail": ["A rail-based transportation system based on a single rail."], "quantum bit": ["A quantum bit; the unit of quantum information."], "this way": ["In the way or manner described, indicated, or suggested"], "embarrassed": ["Having a feeling of uneasiness due to the difficulty or the impossibility to adopt an appropriate behaviour."], "wealth tax": ["A tax based on the estimated value of the estate of a person."], "danger to life": ["A danger that is threatening to life."], "mortal danger": ["A danger that is threatening to life."], "hepatitis B": ["An infectious illness caused by hepatitis B virus which causes an inflammation of the liver of hominoidea, including humans."], "hep B": ["An infectious illness caused by hepatitis B virus which causes an inflammation of the liver of hominoidea, including humans."], "apiology": ["The scientific study of honey bees."], "melittology": ["The scientific study of bees."], "domestic goat": ["A common four-legged animal (Capra) that is related to sheep and bred by humans for its coat and milk."], "detective police": ["A section of the police whose mission is to gather facts and evidences in order to identify the culprit of a crime."], "alphabetisation": ["The act or process of arranging in alphabetical order."], "alphabetization": ["The act or process of arranging in alphabetical order."], "hair dryer": ["An electrical device that blows hot or cold air to dry hairs."], "blowdryer": ["An electrical device that blows hot or cold air to dry hairs."], "hairdryer": ["An electrical device that blows hot or cold air to dry hairs."], "blow-dryer": ["An electrical device that blows hot or cold air to dry hairs."], "blow dryer": ["An electrical device that blows hot or cold air to dry hairs."], "hair-dryer": ["An electrical device that blows hot or cold air to dry hairs."], "move heaven and earth": ["To try everything possible and put a lot of efforts to accomplish something."], "pull out all the stops": ["To try everything possible and put a lot of efforts to accomplish something."], "bend over backwards": ["To try everything possible and put a lot of efforts to accomplish something."], "leave no stone unturned": ["To try everything possible and put a lot of efforts to accomplish something."], "bigamous": ["Having two spouses simultaneously."], "bottled water": ["Water that is packaged in plastic bottles or glass bottles."], "Botswanan": ["A person having the Botswanan nationality.", "From or relating to Botswana."], "stillbirth": ["The birth of a baby that died in the womb."], "stillborn": ["Dead at birth."], "still-born": ["Dead at birth."], "deadborn": ["Dead at birth."], "oblique case": ["A noun case that is used for nouns that are not in the subject position."], "objective case": ["A noun case that is used for nouns that are not in the subject position."], "subjective case": ["A grammatical case for a noun or pronoun, which generally marks the subject of a verb, as opposed to its object or other verb arguments."], "DVD player": ["A device designed to read DVD discs."], "Web Service Description Language": ["An XML-based language that provides a model for describing Web services."], "WSDL": ["An XML-based language that provides a model for describing Web services."], "Simple Object Access Protocol": ["A protocol specification for exchanging structured information in the implementation of Web Services in computer networks."], "SOAP": ["A protocol specification for exchanging structured information in the implementation of Web Services in computer networks."], "Universal Description Discovery and Integration": ["A platform-independent, Extensible Markup Language (XML)-based registry for businesses worldwide to list themselves on the Internet and a mechanism to register and locate web service applications."], "UDDI": ["A platform-independent, Extensible Markup Language (XML)-based registry for businesses worldwide to list themselves on the Internet and a mechanism to register and locate web service applications."], "on-demand computing": ["An increasingly popular enterprise model in which computing resources are made available to the user as needed."], "Remote procedure call": ["An inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding the details for this remote interaction."], "RPC": ["An inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding the details for this remote interaction.", "An inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding the details for this remote interaction."], "JSON": ["A lightweight text-based open standard designed for human-readable data interchange."], "JavaScript Object Notation": ["A lightweight text-based open standard designed for human-readable data interchange."], "YAML": ["A human friendly data serialization standard for all programming languages."], "Apache Axis": ["An open source, XML based Web service framework."], "coca": ["A plant in the family Erythroxylaceae, native to western South America."], "heckle": ["To give a forceful and lengthy lecture or criticism to another person."], "gratin": ["A dish having a browned crust on top, usually made of breadcrumbs, grated cheese, egg and/or butter."], "wire transfer": ["A transfer of funds between banks by electronic means."], "bank transfer": ["A transfer of funds between banks by electronic means."], "planned obsolescence": ["A policy of deliberately designing a product so that it will become obsolete or nonfunctional after a certain period."], "built-in obsolescence": ["A policy of deliberately designing a product so that it will become obsolete or nonfunctional after a certain period."], "-ever": ["whatever the thing or person [used with an attribute relative pronoun to mean \"whatever\", \"whoever\" etc.]"], "glabrous": ["Without hair."], "-soever": ["whatever the thing or person [used with an attribute relative pronoun to mean \"whatever\", \"whoever\" etc.]"], "Philippine": ["From or relating to the Philippines."], "shill": ["A person who profits from helping another person or organization to sell goods or services and/or attract customers while pretending to be impartial.", "To help another person or organization to sell goods or services and/or attract customers while pretending to be impartial."], "put away": ["To move to its right storing place for the time it will not be used."], "bisphenol A": ["An chemical compound made from the reaction of two phenol molecules with one acetone molecule."], "BPA": ["An chemical compound made from the reaction of two phenol molecules with one acetone molecule."], "underskirt": ["A skirt worn underneath another skirt."], "gastrectomy": ["The surgical removal of the stomach."], "half slip": ["A skirt worn underneath another skirt."], "waist slip": ["A skirt worn underneath another skirt."], "Colosseum": ["An antique amphitheatre in the centre of the city of Rome, Italy."], "Coliseum": ["An antique amphitheatre in the centre of the city of Rome, Italy."], "Flavian Amphitheatre": ["An antique amphitheatre in the centre of the city of Rome, Italy."], "acaricide": ["A pesticide that kills members of the Acari group.", "That kills members of the Acari group."], "acaracide": ["A pesticide that kills members of the Acari group."], "insula": ["A multi-level apartment building in ancient Rome which housed the urban population and often included shops and businesses on the ground level."], "narwhal": ["A medium-sized toothed whale that lives year-round in the Arctic whose males have a long, straight, helical tusk extending from their upper left jaw."], "anesthetise": ["To make someone unable to feel pain by giving an anaesthetic."], "antianxiety drug": ["A drug used for the treatment of anxiety."], "anxiolytic drug": ["A drug used for the treatment of anxiety."], "narwal": ["A medium-sized toothed whale that lives year-round in the Arctic whose males have a long, straight, helical tusk extending from their upper left jaw."], "narwhale": ["A medium-sized toothed whale that lives year-round in the Arctic whose males have a long, straight, helical tusk extending from their upper left jaw."], "Bachelor of Arts": ["A bachelor's degree awarded for an undergraduate course or program in either the liberal arts, the sciences."], "B.A.": ["A bachelor's degree awarded for an undergraduate course or program in either the liberal arts, the sciences."], "A.B.": ["A bachelor's degree awarded for an undergraduate course or program in either the liberal arts, the sciences."], "BA": ["A bachelor's degree awarded for an undergraduate course or program in either the liberal arts, the sciences."], "AB": ["A bachelor's degree awarded for an undergraduate course or program in either the liberal arts, the sciences."], "back door": ["A design fault, planned or accidental, that allows the apparent strength of the design to be easily avoided by those who know the trick.", "A door in the rear of a building."], "bed-wetting": ["The fact of involuntarily urinating while asleep."], "blow drier": ["An electrical device that blows hot or cold air to dry hairs."], "Nobelist": ["A person who has been awarded a Nobel Prize."], "board foot": ["The volume of a one-foot length of a board one foot wide and one inch thick."], "board-foot": ["The volume of a one-foot length of a board one foot wide and one inch thick."], "polystyrene": ["A polymer made from the aromatic monomer styrene."], "preventive detention": ["The imprisonment of a person in order to prevent that person from committing a crime that he or she is deemed likely to commit."], "preventive custody": ["The imprisonment of a person in order to prevent that person from committing a crime that he or she is deemed likely to commit."], "adipocere": ["A wax-like organic substance formed by the anaerobic bacterial hydrolysis of fat in tissue, such as body fat in corpses."], "corpse wax": ["A wax-like organic substance formed by the anaerobic bacterial hydrolysis of fat in tissue, such as body fat in corpses."], "grave wax": ["A wax-like organic substance formed by the anaerobic bacterial hydrolysis of fat in tissue, such as body fat in corpses."], "mortuary wax": ["A wax-like organic substance formed by the anaerobic bacterial hydrolysis of fat in tissue, such as body fat in corpses."], "blood orange": ["A type of orange notable for its dark red flesh."], "Anglesey": ["An island off the north west coast of Wales."], "atrophic arthritis": ["Inflammatory autoimmune disorder that causes the immune system to attack the joints."], "RA": ["Inflammatory autoimmune disorder that causes the immune system to attack the joints."], "Menai Strait": ["A narrow strait which separates the island of Anglesey from the mainland of Wales."], "dendrimer": ["A large spherical molecule whose structure looks like the branches of a tree."], "arborol": ["A large spherical molecule whose structure looks like the branches of a tree."], "cascade molecule": ["A large spherical molecule whose structure looks like the branches of a tree."], "object lens": ["The lens of an optical instrument that is the closest to the object being observed."], "object glass": ["The lens of an optical instrument that is the closest to the object being observed."], "objective glass": ["The lens of an optical instrument that is the closest to the object being observed."], "objective lens": ["The lens of an optical instrument that is the closest to the object being observed."], "seabed": ["The bottom of the ocean."], "seafloor": ["The bottom of the ocean."], "ocean floor": ["The bottom of the ocean."], "night shift": ["A group of workers who work during the night.", "A period of work during the night."], "nightshift": ["A group of workers who work during the night.", "A period of work during the night."], "museology": ["The study of museums and the evolution of their role in education, society, etc."], "museological": ["Relating to museology."], "museologically": ["In a museological manner."], "rock samphire": ["An edible wild plant found in coastal regions."], "samphire": ["An edible wild plant found in coastal regions."], "Balearic": ["A collective name for the group of Catalan language variants that people speak in the Balearic Islands."], "modern drachma": ["The currency issued in Greece between 1832 and December 31, 2000."], "Greek drachma": ["The currency issued in Greece between 1832 and December 31, 2000."], "drachma": ["The currency issued in Greece between 1832 and December 31, 2000."], "modern Greek drachma": ["The currency issued in Greece between 1832 and December 31, 2000."], "door frame": ["The frame that supports a door."], "doorframe": ["The frame that supports a door."], "doorcase": ["The frame that supports a door."], "door case": ["The frame that supports a door."], "miser": ["A person who is stingy and miserly."], "take a bath": ["To clean oneself by immersion in water."], "little owl": ["Small owl which lives in Europe, Asia and north Africa."], "twenty one": ["The cardinal number occurring after twenty and before twenty-two, represented in Roman numerals as XXI and in Arabic numerals as 21."], "gingiva": ["The mucosal tissue that partly lies over the teeth in the mouth."], "gums": ["The mucosal tissue that partly lies over the teeth in the mouth."], "ketchup": ["A condiment made of tomatoes, vinegar, sugar, salt and spices."], "catsup": ["A condiment made of tomatoes, vinegar, sugar, salt and spices."], "church building": ["A building where Christian religious activities take place."], "gum": ["The mucosal tissue that partly lies over the teeth in the mouth."], "atomic clock": ["A clock that uses an electronic transition frequency for its timekeeping element."], "rhubarb": ["A having large leaves and long green or reddish acidic leafstalks, that are edible, in particular when cooked."], "triple alpha process": ["A set of nuclear fusion reactions by which three helium-4 nuclei (alpha particles) are transformed into a carbon nuclei."], "triple-alpha process": ["A set of nuclear fusion reactions by which three helium-4 nuclei (alpha particles) are transformed into a carbon nuclei."], "anthropic principle": ["The principle that physical laws have to be such that they allow for the creation of life and the existence of humans."], "harbor seal": ["A true seal, brown, tan, or gray, with distinctive V-shaped nostrils."], "harbour seal": ["A true seal, brown, tan, or gray, with distinctive V-shaped nostrils."], "common seal": ["A true seal, brown, tan, or gray, with distinctive V-shaped nostrils."], "three-and-twenty": ["The cardinal number occurring after twenty-two and before twenty-four, represented in Roman numerals as XXIII and in Arabic numerals as 23."], "pixelate": ["To hide details of an image by replacing part of it with large monochromatic squares."], "pixellate": ["To hide details of an image by replacing part of it with large monochromatic squares."], "siphonophore": ["A colonial organism of the order \"Siphonophorae\" made up of many minute individuals called zooids."], "siphonophores": ["An order of the Hydrozoa class containing colonial organisms made up of many minute individuals called zooids."], "Portuguese Man o' War": ["A jelly-like marine invertebrate of the family Physaliidae."], "Portuguese man-of-war": ["A jelly-like marine invertebrate of the family Physaliidae."], "man-of-war": ["A jelly-like marine invertebrate of the family Physaliidae."], "rice field": ["A flooded field where rice is grown."], "paddy field": ["A flooded field where rice is grown."], "Sardinia": ["The second-largest island in the Mediterranean Sea and an autonomous region of Italy."], "glass harmonica": ["A musical instrument that uses a series of glass bowls graduated in size to produce musical tones by means of friction."], "Strait of Bonifacio": ["The strait between Corsica and Sardinia."], "glass armonica": ["A musical instrument that uses a series of glass bowls graduated in size to produce musical tones by means of friction."], "bowl organ": ["A musical instrument that uses a series of glass bowls graduated in size to produce musical tones by means of friction."], "hydrocrystalophone": ["A musical instrument that uses a series of glass bowls graduated in size to produce musical tones by means of friction."], "armonica": ["A musical instrument that uses a series of glass bowls graduated in size to produce musical tones by means of friction."], "titan arum": ["A flowering plant which smells like decomposing meat."], "corpse flower": ["A flowering plant which smells like decomposing meat."], "corpse plant": ["A flowering plant which smells like decomposing meat."], "cinnamon roll": ["A sweet pastry consisting of yeast dough, sugar, cinnamon and sometimes cardamom."], "cinnamon bun": ["A sweet pastry consisting of yeast dough, sugar, cinnamon and sometimes cardamom."], "cinnamon swirl": ["A sweet pastry consisting of yeast dough, sugar, cinnamon and sometimes cardamom."], "cinnamon snail": ["A sweet pastry consisting of yeast dough, sugar, cinnamon and sometimes cardamom."], "locking pliers": ["A gripping tool that multiplies the strength of the user's hand and can be locked into clamping position."], "Mole grips": ["A gripping tool that multiplies the strength of the user's hand and can be locked into clamping position."], "Mole wrench": ["A gripping tool that multiplies the strength of the user's hand and can be locked into clamping position."], "Vise-grips": ["A gripping tool that multiplies the strength of the user's hand and can be locked into clamping position."], "safflower oil": ["Vegetable oil made of the seeds of the safflower plant."], "necktie": ["A long, thin piece of material that is tied around a person's neck (underneath their collar) to make them look smarter, politer or more successful."], "take flight": ["Leaving a dangerous or unpleasant situation."], "gratuity": ["A voluntary additional payment made for services rendered."], "cumshaw": ["A voluntary additional payment made for services rendered."], "shoe store": ["A shop that sells shoes."], "shoe shop": ["A shop that sells shoes."], "tigress": ["A female tiger."], "dark energy": ["A hypothetical form of energy that permeates all of space and tends to increase the rate of expansion of the universe."], "astrocyte": ["A star-shaped glial cells in the brain and spinal cord."], "unconditional": ["Without conditions or limitations."], "digit IV": ["The finger between the long finger and the little finger."], "fourth digit": ["The finger between the long finger and the little finger."], "gold-finger": ["The finger between the long finger and the little finger."], "leech-finger": ["The finger between the long finger and the little finger."], "marriage finger": ["The finger between the long finger and the little finger."], "medical finger": ["The finger between the long finger and the little finger."], "medicinable finger": ["The finger between the long finger and the little finger."], "medicinal finger": ["The finger between the long finger and the little finger."], "physic finger": ["The finger between the long finger and the little finger."], "physical finger": ["The finger between the long finger and the little finger."], "physician finger": ["The finger between the long finger and the little finger."], "ring-man": ["The finger between the long finger and the little finger."], "wedding finger": ["The finger between the long finger and the little finger."], "mango tree": ["A tropical Asian fruit tree, Mangifera indica."], "passivity": ["The state of being passive."], "Min Nan (POJ)": ["The Min Nan language written with the Pe\u030dh-\u014de-j\u012b orthography."], "Min Nan (simplified)": ["The Min Nan language written with simplified Chinese characters."], "Min Nan (traditional)": ["The Min Nan language written with traditional Chinese characters."], "peripapillary": ["Located around the optic papilla."], "waiting room": ["A room in some public place where people wait for a service."], "neigh": ["The cry of a horse.", "To make the sound of a horse."], "hemolytic-uremic syndrome": ["A disease characterized by a hemolytic anemia and acute renal failure that predominantly affects young children."], "haemolytic-uraemic syndrome": ["A disease characterized by a hemolytic anemia and acute renal failure that predominantly affects young children."], "HUS": ["A disease characterized by a hemolytic anemia and acute renal failure that predominantly affects young children."], "skinless": ["Without skin."], "untruth": ["A false statement made with the intention to deceive."], "turkey tail": ["A polypore mushroom resembling the tail of the wild turkey."], "blue whale": ["A baleen whale of the species Balaenoptera musculus measuring up to 30 meters."], "sulfur-bottom whale": ["A baleen whale of the species Balaenoptera musculus measuring up to 30 meters."], "sulphur bottom whale": ["A baleen whale of the species Balaenoptera musculus measuring up to 30 meters."], "jug ears": ["Ears that markedly stick outwards."], "suspense": ["A feeling of uncertainty and anxiety about the outcome of certain actions."], "coffee table": ["A style of long, low table which is designed to be placed in front of a sofa."], "cocktail table": ["A style of long, low table which is designed to be placed in front of a sofa."], "cooking oil": ["An vegetable oil that is used for cooking food."], "edible oil": ["An vegetable oil that is used for cooking food."], "return home": ["To go to one's home after having left it, such as after a working day or holidays."], "Judah": ["Biblical Jewish kingdom of the South, the capital of which was Jerusalem, contrasted with Israel, the Jewish kingdom of the North."], "Juda": ["Biblical Jewish kingdom of the South, the capital of which was Jerusalem, contrasted with Israel, the Jewish kingdom of the North."], "Judea": ["Biblical Jewish kingdom of the South, the capital of which was Jerusalem, contrasted with Israel, the Jewish kingdom of the North."], "Old Occitan": ["The earliest form of the Occitan language spoken between the 8th and 14th century."], "Old Proven\u00e7al": ["The earliest form of the Occitan language spoken between the 8th and 14th century."], "seaweed": ["One of several species of macroscopic, multicellular, benthic marine algae."], "sundried": ["Having been dried by the sun."], "sun-dried": ["Having been dried by the sun."], "air-dried": ["Having been dried in the air."], "air-dry": ["To dry by exposure to the air."], "cotton plant": ["A shrub of the genus Gossypium known for the soft fibers that protect its seeds."], "electric blue": ["A color close to cyan similar to that of electric sparks."], "electric-blue": ["A color close to cyan similar to that of electric sparks."], "megapixel": ["One million pixels."], "electronic cigarette": ["An electrical device that attempts to simulate the act of tobacco smoking by producing an inhaled mist."], "e-cigarette": ["An electrical device that attempts to simulate the act of tobacco smoking by producing an inhaled mist."], "suprapubic": ["Related to the area above the pubic bone."], "pubis": ["The ventral and anterior of the three principal bones composing either half of the pelvis."], "pubic bone": ["The ventral and anterior of the three principal bones composing either half of the pelvis."], "muscids": ["A family of flies in the superfamily Muscoidea characterized by a plumose apical segment of the antennae and a smooth basal portion."], "muscid": ["A fly of the family Muscidae."], "sodium carbonate": ["A salt of chemical formula Na2CO3 that is white and soluble in water."], "soda": ["Still water into which carbon dioxide gas has been dissolved.", "A salt of chemical formula Na2CO3 that is white and soluble in water.", "Sodium in chemical combination.", "A beverage that has had carbon dioxide dissolved into it."], "soda ash": ["A salt of chemical formula Na2CO3 that is white and soluble in water."], "washing soda": ["A salt of chemical formula Na2CO3 that is white and soluble in water."], "carbonated drink": ["A beverage that has had carbon dioxide dissolved into it."], "romantic comedy film": ["A film centered on romantic ideals such as a true love able to surmount all obstacles, with many humorous scenes."], "romantic comedy": ["A film centered on romantic ideals such as a true love able to surmount all obstacles, with many humorous scenes."], "bald eagle": ["A bird of prey found in North America, having a brown plumage with a white head and tail."], "bald erne": ["A bird of prey found in North America, having a brown plumage with a white head and tail."], "American eagle": ["A bird of prey found in North America, having a brown plumage with a white head and tail."], "Pottawatomie": ["A Central Algonquian language spoken by the Potawatomi people around the Great Lakes in Michigan and Wisconsin, as well as in Kansas in the United States, and in southern Ontario in Canada."], "Palatinate": ["A region in the German federal state of Rhineland-Palatinate, in south-western Germany."], "hacker": ["A person who gains unauthorized access to computers and computer networks."], "skull cap": ["The top part of the skull."], "calvaria": ["The top part of the skull."], "calva": ["The top part of the skull."], "Chadic language": ["A Afroasiatic language belonging to a language family spoken across northern Nigeria, Niger, Chad, Central African Republic and Cameroon, belonging to the Afroasiatic phylum."], "maule's quince": ["A thorny deciduous shrub whose apple-shaped fruits are a golden-yellow color containing red-brown seeds."], "flowering quince": ["A thorny deciduous or semi-evergreen shrub native to eastern Asia whose fruit resembles a quince."], "Japanese quince": ["A thorny deciduous or semi-evergreen shrub native to eastern Asia whose fruit resembles a quince."], "spear phishing": ["An e-mail spoofing fraud attempt that targets a specific organization, seeking unauthorized access to confidential data, probably conducted by perpetrators out for financial gain, trade secrets or military information."], "humid": ["(Of the air) Containing a high quantity of water vapor."], "email spoofing": ["The forgery of an e-mail header so that the message appears to have originated from someone or somewhere other than the actual source."], "e-mail spoofing": ["The forgery of an e-mail header so that the message appears to have originated from someone or somewhere other than the actual source."], "SMTP": ["An Internet standard for electronic mail (e-mail) transmission across Internet Protocol (IP) networks."], "Simple Mail Transfer Protocol": ["An Internet standard for electronic mail (e-mail) transmission across Internet Protocol (IP) networks."], "defense in depth": ["The coordinated use of multiple security countermeasures to protect the integrity of the information assets in an enterprise, based on the military principle that it is more difficult for an enemy to defeat a complex and multi-layered defense system than to penetrate a single barrier."], "rhombicuboctahedron": ["An Archimedean solid with eight triangular and eighteen square faces."], "small rhombicuboctahedron": ["An Archimedean solid with eight triangular and eighteen square faces."], "Scottish": ["Pertaining to Scotland."], "BIRT": ["An open source software project that provides reporting and business intelligence capabilities for rich client and web applications, especially those based on Java and Java EE."], "Business Intelligence and Reporting Tools": ["An open source software project that provides reporting and business intelligence capabilities for rich client and web applications, especially those based on Java and Java EE."], "GPS": ["A space-based global navigation satellite system (GNSS) that provides location and time information in all weather, anywhere on or near the Earth, where there is an unobstructed line of sight to four or more GPS satellites. It is maintained by the United States government and is freely accessible by anyone with a GPS receiver."], "Global Positioning System": ["A space-based global navigation satellite system (GNSS) that provides location and time information in all weather, anywhere on or near the Earth, where there is an unobstructed line of sight to four or more GPS satellites. It is maintained by the United States government and is freely accessible by anyone with a GPS receiver."], "ink eraser": ["An instrument used to remove ink from a surface such as paper."], "forearm": ["The part of the arm between the wrist and the elbow."], "Kuku-Ugbanh": ["An extinct Middle Pama language formerly spoken below the city of Arukun in Queensland, Australia."], "yeast infection": ["Infection caused by a species of the yeast-like fungus Candida, usually C. albicans."], "thrush": ["Infection caused by a species of the yeast-like fungus Candida, usually C. albicans."], "candidosis": ["Infection caused by a species of the yeast-like fungus Candida, usually C. albicans."], "moniliasis": ["Infection caused by a species of the yeast-like fungus Candida, usually C. albicans."], "oidiomycosis": ["Infection caused by a species of the yeast-like fungus Candida, usually C. albicans."], "diapir": ["A structure formed when a matter lighter than its environment moves upward by piercing the overlying material."], "diapiric": ["Relating to diapirs."], "diapirism": ["The formation of diapirs."], "enterohemorrhagic": ["Causing hemorrhage in the intestines."], "time difference": ["The difference of the clock times of two different places."], "three-headed": ["Having three heads."], "Lake L\u00e9man": ["A lake located between Switzerland and France."], "Lake Geneva": ["A lake located between Switzerland and France."], "primary case": ["The person who is at the origin of the outbreak of an epidemic."], "patient zero": ["The person who is at the origin of the outbreak of an epidemic."], "four-headed": ["Having four heads."], "striped": ["Having stripes."], "antidiabetic": ["That acts against diabetes.", "A drug that acts against diabetes."], "antidiabetes": ["That acts against diabetes."], "antidiabetic agent": ["A drug that acts against diabetes."], "antidiabetic drug": ["A drug that acts against diabetes."], "Kislev": ["Third month of the civil year and the ninth month of the Jewish sacred year on the Hebrew calendar, falling in November-December of the Gregorian calendar."], "Casleu": ["Third month of the civil year and the ninth month of the Jewish sacred year on the Hebrew calendar, falling in November-December of the Gregorian calendar."], "sexism": ["The belief or attitude that one sex is inherently superior to, more competent than, or more valuable than the other."], "sexist": ["A person who discriminates on grounds of sex.", "Discriminatory against one sex in favour of the other."], "Beer": ["Coastal town in Southwestern England."], "ring up": ["To contact someone using the telephone."], "call up": ["To contact someone using the telephone."], "quiz": ["A school examination of less importance, or of greater brevity, than others given in the same course.", "A game in which the players try to answer questions correctly."], "Atlantic spadefish": ["A fish of the genus Chaetodipterus having a disk-shaped body."], "angelfish": ["A fish of the genus Chaetodipterus having a disk-shaped body."], "white angelfish": ["A fish of the genus Chaetodipterus having a disk-shaped body."], "threetailed porgy": ["A fish of the genus Chaetodipterus having a disk-shaped body."], "ocean cobbler": ["A fish of the genus Chaetodipterus having a disk-shaped body."], "moonfish": ["A fish of the genus Chaetodipterus having a disk-shaped body."], "half-dead": ["Almost dead."], "Ogygia": ["In Greek mythology, the island on which the nymph Calypso lives."], "how are you?": ["A form of greetings where one asks about the other's health without expecting an answer."], "how do you do?": ["A form of greetings where one asks about the other's health without expecting an answer."], "how-d'ye-do?": ["A form of greetings where one asks about the other's health without expecting an answer."], "how are you doing?": ["A form of greetings where one asks about the other's health without expecting an answer."], "how are things?": ["A form of greetings where one asks about the other's health without expecting an answer."], "how's it going?": ["A form of greetings where one asks about the other's health without expecting an answer."], "Northern goshawk": ["A medium-large bird of prey in the family Accipitridae."], "baclofen": ["A derivative of gamma-aminobutyric acid."], "digraph": ["A pair of characters used to write one sound."], "digram": ["A pair of characters used to write one sound."], "trigraph": ["A group of three letters used to represent a single sound."], "tetragraph": ["A group of four letters used to represent a single sound."], "pentagraph": ["A group of five letters used to represent a single sound."], "hexagraph": ["A group of six letters used to represent a single sound."], "multigraph": ["A group of letters used to represent a single sound."], "graphemics": ["The linguistic study of writing systems."], "graphematics": ["The linguistic study of writing systems."], "winged": ["Having wings."], "alate": ["Having wings."], "aliferous": ["Having wings."], "Quanzhou": ["A prefecture-level city in Fujian province, China."], "Zhangzhou": ["A prefecture-level city in southern Fujian province, China."], "A.R.": ["Document signed by the addressee of a sending or by another person authorized to do so, and sent to the sender as proof that the item did reach the addressee."], "advice of receipt": ["Document signed by the addressee of a sending or by another person authorized to do so, and sent to the sender as proof that the item did reach the addressee."], "advice of delivery": ["Document signed by the addressee of a sending or by another person authorized to do so, and sent to the sender as proof that the item did reach the addressee."], "AR": ["Document signed by the addressee of a sending or by another person authorized to do so, and sent to the sender as proof that the item did reach the addressee."], "acknowledgement of receipt": ["Document signed by the addressee of a sending or by another person authorized to do so, and sent to the sender as proof that the item did reach the addressee."], "overpass": ["A road, railway, etc. that crosses over another road or railway."], "toothpaste": ["A powder, paste, or liquid for cleaning the teeth.", "A paste or gel dentifrice used with a toothbrush to clean the teeth."], "common noun": ["Word which refers to any member of a class of similar items, can be used as subject or object of a predicate but is not usually used as a substitute for another word as a pronoun does."], "come to existence": ["To begin to be."], "commoner": ["A person who holds no title and is not of noble rank."], "not noble": ["Who is not of noble rank; pertaining to the great masses."], "hand-held fan": ["A hand-held device to agitate or move air or other gas."], "hand fan": ["A hand-held device to agitate or move air or other gas."], "mechanical fan": ["A device that provides air circulation in a closed environment by rotating an helix, in order to cool down someone or something."], "girls' school": ["A school that only accepts female students."], "boys' school": ["A school that only accepts male students."], "Xiamen": ["A city on the southeast coast of China on the the Taiwan Strait."], "Nakh": ["A small family of languages spoken chiefly by the Nakh peoples, in Russia (Chechnya and Ingushetia), in Georgia, and in the Chechen diaspora (mainly in Europe, Middle East and Central Asia)."], "Nakh languages": ["A small family of languages spoken chiefly by the Nakh peoples, in Russia (Chechnya and Ingushetia), in Georgia, and in the Chechen diaspora (mainly in Europe, Middle East and Central Asia)."], "Northeast Caucasian languages": ["A language family spoken in the Russian republics of Dagestan, Chechnya, Ingushetia, northern Azerbaijan, and in northeastern Georgia, as well as in diaspora populations in Russia, Turkey, and the Middle East."], "Nakho-Daghestanian": ["A language family spoken in the Russian republics of Dagestan, Chechnya, Ingushetia, northern Azerbaijan, and in northeastern Georgia, as well as in diaspora populations in Russia, Turkey, and the Middle East."], "Nakho-Dagestanian": ["A language family spoken in the Russian republics of Dagestan, Chechnya, Ingushetia, northern Azerbaijan, and in northeastern Georgia, as well as in diaspora populations in Russia, Turkey, and the Middle East."], "Nakh-Daghestanian": ["A language family spoken in the Russian republics of Dagestan, Chechnya, Ingushetia, northern Azerbaijan, and in northeastern Georgia, as well as in diaspora populations in Russia, Turkey, and the Middle East."], "Nakh-Dagestanian": ["A language family spoken in the Russian republics of Dagestan, Chechnya, Ingushetia, northern Azerbaijan, and in northeastern Georgia, as well as in diaspora populations in Russia, Turkey, and the Middle East."], "North Caucasian languages": ["A language family comprising the Northwest Caucasian family and the Northeast Caucasian family."], "Caucasic": ["A language family comprising the Northwest Caucasian family and the Northeast Caucasian family."], "languages of the Caucasus": ["A large language family spoken in and around the Caucasus Mountains."], "intrinsic": ["Belonging to a thing by its very nature."], "intrinsic motivation": ["Motivation that is driven by an interest or enjoyment in the task itself and not by external pressure."], "satsuma": ["A citrus plant of Japanese origin with seedless and easy-peeling fruit.", "The seedless and easy-peeling fruit of the satsuma plant."], "seedless": ["Having no seeds."], "kidless": ["Having no children."], "parataxis": ["A sequence of main clauses."], "paratactic": ["Pertaining to or using parataxis."], "paratactical": ["Pertaining to or using parataxis."], "hypotaxis": ["The subordination of clauses under a main clause by the use of subordinating conjunctions."], "hypotactic": ["Pertaining to or using hypotaxis."], "asyndeton": ["The deliberate omission of conjunctions from a series of words or clauses."], "dolphinarium": ["An aquarium for dolphins."], "feathered": ["Covered with feathers."], "pennate": ["Covered with feathers."], "pennated": ["Covered with feathers."], "hair conditioner": ["A hair care product that improves the texture and appearance of human hair, usually applied after washing."], "papilla": ["The projection of a mammary gland from which, on female mammals, milk can be secreted."], "banalize": ["To make something banal or commonplace."], "banalise": ["To make something banal or commonplace."], "bell tower": ["A tower in which bells are hung."], "bell ringer": ["Someone who rings bells, e.g. in a church."], "Gallic": ["Of or relating to Gaul."], "imperturbable": ["That cannot be perturbed."], "unshakable": ["That cannot be perturbed.", "Marked by firm determination or resolution; not shakable."], "imperturbably": ["In an imperturbable manner."], "imperturbability": ["The quality of being imperturbable."], "clothing size": ["A symbol or number that indicates the dimensions of a garment."], "salted butter": ["Butter which contains salt."], "chalcopyrite": ["A copper iron sulfide mineral having the chemical composition CuFeS2."], "second hand shop": ["A shop which sells goods that are not new."], "second-hand shop": ["A shop which sells goods that are not new."], "pensioner": ["Someone who lives on a pension."], "Yahoo!": ["A popular destination site on the internet, which includes a search engine and taxonomic organization of the World Wide Web."], "Esperantist": ["A person who speaks or uses Esperanto."], "Kam-Sui languages": ["A branch of the Tai\u2013Kadai languages spoken by the Kam\u2013Sui peoples in eastern Guizhou, western Hunan, and northern Guangxi in southern China."], "Kam-Tai languages": ["A branch of the Tai-Kadai language family regrouping languages spoken in southern China."], "space debris": ["Nonfunctional debris of human origin left in a multitude of orbits about the earth as the result of the exploration and use of the environment lying outside the earth's atmosphere."], "orbital debris": ["Nonfunctional debris of human origin left in a multitude of orbits about the earth as the result of the exploration and use of the environment lying outside the earth's atmosphere."], "space junk": ["Nonfunctional debris of human origin left in a multitude of orbits about the earth as the result of the exploration and use of the environment lying outside the earth's atmosphere."], "be satisfied": ["To be in a state of satisfaction."], "epidemiological": ["Relating to epidemiology."], "epidemiologic": ["Relating to epidemiology."], "vitamin B-12": ["A vitamin that is needed to make red blood cells and DNA (the genetic material in cells) and to keep nerve cells healthy."], "cobalamin": ["A vitamin that is needed to make red blood cells and DNA (the genetic material in cells) and to keep nerve cells healthy."], "campanology": ["The study of bells."], "sepulcher": ["A place (commonly marked with a headstone) where one or more people are buried (usually in a coffin underneath the ground)."], "Parmesan": ["A type of Italien hard cheese made of cow's milk."], "whiteboard": ["A usually white surface on which one can write with non-permanent marker pens."], "markerboard": ["A usually white surface on which one can write with non-permanent marker pens."], "dry-erase board": ["A usually white surface on which one can write with non-permanent marker pens."], "dry-wipe board": ["A usually white surface on which one can write with non-permanent marker pens."], "pen-board": ["A usually white surface on which one can write with non-permanent marker pens."], "greaseboard": ["A usually white surface on which one can write with non-permanent marker pens."], "asterism": ["A grouping of stars forming a pattern when seen from Earth's night sky."], "Coma Berenices": ["A constellation located between Leo, Virgo, Canes Venatici and Ursa Major."], "Berenice's Hair": ["A constellation located between Leo, Virgo, Canes Venatici and Ursa Major."], "Ursa Major": ["A constellation of the northern hemisphere including the Big Dipper and the stars Mizar, Dubhe, and Alkaid."], "Great Bear": ["A constellation of the northern hemisphere including the Big Dipper and the stars Mizar, Dubhe, and Alkaid."], "median age": ["The age that divides a population into two numerically equal groups: half the people are younger than this age and half are older."], "depopulation": ["The reduction of the number of inhabitants in a region."], "population decline": ["The reduction of the number of inhabitants in a region."], "deglobalisation": ["The process of reducing the international exchanges of goods, services, workers, money, etc."], "deglobalization": ["The process of reducing the international exchanges of goods, services, workers, money, etc."], "rural exodus": ["The migration from the countryside to the city in the search of better conditions of life."], "urban drift": ["The growth of urban areas due to migration or population increase."], "year of manufacture": ["The year when something was built or manufactured."], "Gaul": ["A region of Western Europe during the Iron Age and Roman era, encompassing present day France, Luxembourg and Belgium, most of Switzerland, the western part of Northern Italy, as well as the parts of the Netherlands and Germany on the west bank of the Rhine."], "Gauls": ["A Celtic people living in Gaul."], "world cup": ["A competition where individuals or teams from several countries compete for the title of world champion.", "A trophy, often a golden cup, awarded to the winner of world championship."], "world championship": ["A competition where individuals or teams from several countries compete for the title of world champion."], "World Cup": ["A competition where individuals or teams from several countries compete for the title of world champion."], "Song of Roland": ["An epic poem written in the 11th or 12th century in Old French which describes Charlemagnes battle against the Saracens in Spain."], "ice sheet": ["A mass of glacier ice that is greater than 50,000 km\u00b2."], "stressful": ["Causing stress; irritating to the nerves."], "organisational": ["Of, relating to, or produced by an organization."], "brain death": ["The complete and irreversible end of all brain activity."], "braindead": ["Without brain or personality, excessively superficial.", "Being in a state of irreversible loss of brain activity."], "brain-dead": ["Being in a state of irreversible loss of brain activity."], "brain dead": ["Being in a state of irreversible loss of brain activity."], "backhoe loader": ["A vehicle that consists of a tractor fitted with a shovel on the front and a small backhoe on the back."], "loader backhoe": ["A vehicle that consists of a tractor fitted with a shovel on the front and a small backhoe on the back."], "digger": ["A machine used to dig the ground and to lift and carry dirt and debris.", "A vehicle that consists of a tractor fitted with a shovel on the front and a small backhoe on the back."], "backhoe": ["A vehicle that consists of a tractor fitted with a shovel on the front and a small backhoe on the back."], "happy birthday": ["Interjection used to convey the good wishes to someone celebrating his or her birthday."], "Bikol Central": ["A Bikol language spoken in the Bicol Region of the Philippines."], "Central Bikolano": ["A Bikol language spoken in the Bicol Region of the Philippines."], "cocktail dress": ["A type of women's evening dress suitable for semi-formal occasions or cocktail parties."], "Kachin": ["A Tibeto-Burman language mainly spoken in Kachin State, Burma (Myanmar) and Yunnan Province, China."], "macedonia": ["A dessert (served in fruit juice) consisting of various raw, chopped fruits."], "egg salad": ["A salad that contains hard-boiled eggs and a dressing made with yoghurt or mayonnaise."], "tuna salad": ["A salad containing tuna and a dressing."], "Venda": ["A Bantu language and an official language of South Africa."], "house sparrow": ["A small bird with a short bill, and brown, white and gray feathers."], "scriptural": ["Relating to a sacred writing."], "conflagration": ["A violent fire extanding to a large area.", "A large-scale sociopolitical conflict, such as a revolution or a war, involving many people or many countries."], "imprecator": ["A person who wishes for misfortune to happen to someone.", "A person who prays for or invokes evil upon someone."], "Squamish": ["A Coast Salish language spoken by the Squamish people of southwestern British Columbia, Canada."], "South Sudan": ["A country in East Africa bordered by Ethiopia to the east, Kenya to the southeast, Uganda to the south, the Democratic Republic of the Congo to the southwest, the Central African Republic to the west, and the Republic of the Sudan to the north."], "Republic of South Sudan": ["A country in East Africa bordered by Ethiopia to the east, Kenya to the southeast, Uganda to the south, the Democratic Republic of the Congo to the southwest, the Central African Republic to the west, and the Republic of the Sudan to the north."], "Port Louis": ["The largest city and capital of Mauritius."], "georgic": ["Referring to agriculture.", "A didactic poem about farming."], "coal-black": ["Of the blackest black."], "jet-black": ["Of the blackest black."], "jetty": ["Of the blackest black."], "Sabaean": ["An Old South Arabian language spoken from c. 1000 BC to the 6th century AD, by the Sabaeans."], "Sabaic": ["An Old South Arabian language spoken from c. 1000 BC to the 6th century AD, by the Sabaeans."], "Himyarite": ["An Old South Arabian language spoken from c. 1000 BC to the 6th century AD, by the Sabaeans."], "Himyaritic": ["An Old South Arabian language spoken from c. 1000 BC to the 6th century AD, by the Sabaeans."], "Sabean": ["An Old South Arabian language spoken from c. 1000 BC to the 6th century AD, by the Sabaeans."], "Sab\u00e6an": ["An Old South Arabian language spoken from c. 1000 BC to the 6th century AD, by the Sabaeans."], "Minaean": ["An Old South Arabian language spoken between 1200 BC and AD 100."], "Madhabic": ["An Old South Arabian language spoken between 1200 BC and AD 100."], "Qatabanian": ["An Old South Arabian language spoken between 800 BC and 200 AD."], "Qatabanic": ["An Old South Arabian language spoken between 800 BC and 200 AD."], "Hadramautic": ["An Old South Arabian language spoken between 100 BC and 600 AD."], "Hadrami": ["An Old South Arabian language spoken between 100 BC and 600 AD."], "Hadhramautic": ["An Old South Arabian language spoken between 100 BC and 600 AD."], "e-book reader": ["A portable device designed for reading e-books."], "e-book device": ["A portable device designed for reading e-books."], "e-reader": ["A portable device designed for reading e-books."], "Mor\u00e9": ["An endangered Chapacuran language spoken in the Beni Department of Bolivia."], "thighbone": ["The bone that extends from the pelvis to the knee in the vertebrate tetrapods, including humans."], "poikilotherm": ["(Zoology) Having a body temperature that varies according to the outside temperature."], "poikilothermic": ["(Zoology) Having a body temperature that varies according to the outside temperature."], "tsunamite": ["A deposit resulting from the effects of the pressure waves of a tsunami on the sediments."], "sedimentological": ["Relating to sedimentology."], "sedimentologically": ["In a sedimentological manner."], "Kwakwaka'wakw": ["An indigenous people of America who live in British Columbia on and around northern Vancouver Island."], "Kwak'wala": ["An indigenous language of the Wakashan family spoken by the Kwakwaka'wakw on northern Vancouver Island."], "Kwagiutl": ["An indigenous language of the Wakashan family spoken by the Kwakwaka'wakw on northern Vancouver Island."], "Wari'": ["A Chapacuran language spoken by the Wari' people of the Brazilian\u2013Bolivian border region of the Amazon."], "Orowari": ["A Chapacuran language spoken by the Wari' people of the Brazilian\u2013Bolivian border region of the Amazon."], "Wari": ["A Chapacuran language spoken by the Wari' people of the Brazilian\u2013Bolivian border region of the Amazon."], "Paca\u00e1 Novo": ["A Chapacuran language spoken by the Wari' people of the Brazilian\u2013Bolivian border region of the Amazon."], "Paca\u00e1s Novos": ["A Chapacuran language spoken by the Wari' people of the Brazilian\u2013Bolivian border region of the Amazon."], "Pakaa Nova": ["A Chapacuran language spoken by the Wari' people of the Brazilian\u2013Bolivian border region of the Amazon."], "Paka\u00e1snovos": ["A Chapacuran language spoken by the Wari' people of the Brazilian\u2013Bolivian border region of the Amazon."], "Jaminjung": ["An Australian language spoken around the Victoria River in the Northern Territory of Australia."], "handmade": ["Manufactured by hand, without using a machine."], "handcrafted": ["Manufactured by hand, without using a machine."], "sexagenarian": ["A person who is older than 60 and younger than 70 years old.", "Being older than 60 and younger than 70 years old."], "supernumerary": ["More than the expected or required number.", "More than is needed, desired, or required."], "white dwarf": ["A small and very dense star composed mostly of electron-degenerate matter."], "degenerate dwarf": ["A small and very dense star composed mostly of electron-degenerate matter."], "WD": ["A small and very dense star composed mostly of electron-degenerate matter."], "machine": ["A device able to perform a particular, more or less complex, job."], "Tsez": ["A Northeast Caucasian language spoken by the Tsez, a Muslim people in the mountainous Tsunta district of southern and western Dagestan in Russia."], "apple scab": ["A disease to Malus trees, such as apple trees, caused by the ascomycete fungus Venturia inaequalis."], "Port Victoria": ["The capital city of the Seychelles."], "boarding gate": ["A gate that allows air passengers to go from the terminal to the airplane."], "overbearing": ["Inclined to rule arbitrarily or despotically."], "domineeringly": ["In an overbearing, domineering manner."], "overbearingly": ["In an overbearing, domineering manner."], "three hundred": ["The cardinal number occurring after two hundred ninety-nine and before three hundred one, represented in Arabic numerals as 300."], "mend": ["To change the state of an item (e.g. which was torn or broken) to a working condition again.", "Heal or recover, e.g. by forming a scar.", "To repair a cloth that is unsewn or has a tear."], "Achinese": ["A Malayo-Polynesian language spoken by the indigenous population of the Aceh province in Indonesia, in the northern part of the Sumatra Island."], "Achehnese": ["A Malayo-Polynesian language spoken by the indigenous population of the Aceh province in Indonesia, in the northern part of the Sumatra Island."], "Awakatek": ["A language of Guatemala."], "nodding disease": ["A little-known disease in some African countries which affects children and causes seizures and mental retardation."], "nodding syndrome": ["A little-known disease in some African countries which affects children and causes seizures and mental retardation."], "movie camera": ["A device for recording moving pictures on to film or video."], "Touareg": ["A man of the Tuareg people."], "frambesia tropica": ["Tropical infection of the skin, bones and joints caused by the spirochete bacterium \"Treponema pallidum pertenue\"."], "eusociality": ["A social structure in animals where a group is organized into casts of fertile and sterile individuals."], "eusocial": ["Of or pertaining to a social structure in animals where a group is organized into casts of fertile and sterile individuals."], "Nobel laureate": ["A person who has been awarded a Nobel Prize."], "Guinea worm": ["A nematode that lives under the skin and causes dracunculiasis."], "duststorm": ["Storm or strong wind which carries dust or sand."], "sand storm": ["Storm or strong wind which carries dust or sand."], "haboob": ["Storm or strong wind which carries dust or sand."], "guinea-worm": ["A nematode that lives under the skin and causes dracunculiasis."], "Guinea-worm": ["A nematode that lives under the skin and causes dracunculiasis."], "guinea worm": ["A nematode that lives under the skin and causes dracunculiasis."], "Mississippi River": ["The longest river in the United States."], "overcoat": ["A type of long coat worn over the other garments."], "soft drink": ["A beverage that has had carbon dioxide dissolved into it."], "pop": ["A beverage that has had carbon dioxide dissolved into it."], "soda pop": ["A beverage that has had carbon dioxide dissolved into it."], "carbonated beverage": ["A beverage that has had carbon dioxide dissolved into it."], "rock music": ["A music style characterized by basic drum-beat, generally 4/4 riffs, based on (usually electric) guitar, bass guitar, drums, and vocals."], "four-eyed fish": ["Any fish of the genus Anableps having eyes raised above the top of the head and divided in two different parts, so that they can see below and above the water surface at the same time."], "four-eyed fishes": ["A genus of fishes of the family Anablepidae having eyes raised above the top of the head and divided in two different parts, so that they can see below and above the water surface at the same time."], "sign in": ["To sign a register to indicate that one has arrived (e.g. at an hotel)."], "altar of burnt offering": ["Build high platform upon which Jews used to offer animal sacrifices by fire."], "altar of holocaust": ["Build high platform upon which Jews used to offer animal sacrifices by fire."], "altar of the burnt-offering": ["Build high platform upon which Jews used to offer animal sacrifices by fire."], "brazen altar": ["Build high platform upon which Jews used to offer animal sacrifices by fire."], "altar of brass": ["Build high platform upon which Jews used to offer animal sacrifices by fire."], "bitter melon": ["A plant grown in Asia, Africa and Caribbean which produces an edible and very bitter fruit.", "The fruit of the bitter melon plant."], "bitter gourd": ["A plant grown in Asia, Africa and Caribbean which produces an edible and very bitter fruit."], "Latin Empire": ["A Crusader state founded by the leaders of the Fourth Crusade on lands captured from the Byzantine Empire which existed from 1204\u20131261."], "Latin Empire of Constantinople": ["A Crusader state founded by the leaders of the Fourth Crusade on lands captured from the Byzantine Empire which existed from 1204\u20131261."], "Central American river turtle": ["A nocturnal, aquatic turtle that lives in larger rivers and lakes in Central America."], "Mesoamerican river turtle": ["A nocturnal, aquatic turtle that lives in larger rivers and lakes in Central America."], "sorrowful": ["Filled with grief, sorrow, woe."], "woeful": ["Filled with grief, sorrow, woe."], "mournful": ["Filled with grief, sorrow, woe."], "sorrowfully": ["In a sorrowful, woeful, mournful manner."], "woefully": ["In a sorrowful, woeful, mournful manner."], "mournfully": ["In a sorrowful, woeful, mournful manner."], "Horn of Africa": ["A peninsula in East Africa consisting of the countries of Eritrea, Djibouti, Ethiopia and Somalia."], "Northeast Africa": ["A peninsula in East Africa consisting of the countries of Eritrea, Djibouti, Ethiopia and Somalia."], "Somali Peninsula": ["A peninsula in East Africa consisting of the countries of Eritrea, Djibouti, Ethiopia and Somalia."], "HOA": ["A peninsula in East Africa consisting of the countries of Eritrea, Djibouti, Ethiopia and Somalia."], "adhesive tape": ["A tape coated with an adhesive substance."], "scotch tape": ["A tape coated with an adhesive substance."], "sticky tape": ["A tape coated with an adhesive substance."], "television station": ["An organisation that broadcasts content over television.", "The building from where content is broadcasted over television."], "TV station": ["An organisation that broadcasts content over television.", "The building from where content is broadcasted over television."], "catamite": ["The junior partner in a paederastic relationship."], "Ground beetle": ["A beetle of the Carabidae family."], "Ground beetles": ["A large, cosmopolitan family of beetles. Most of them are shiny black or metallic and have elytras."], "sugar cane": ["A tropical grass of the genus Saccharum having stout, fibrous, jointed stalks, the sap of which is a source of sugar."], "sugarcane": ["A tropical grass of the genus Saccharum having stout, fibrous, jointed stalks, the sap of which is a source of sugar."], "sugar-cane": ["A tropical grass of the genus Saccharum having stout, fibrous, jointed stalks, the sap of which is a source of sugar."], "gratefulness": ["The state of feeling grateful."], "thankfulness": ["The state of feeling grateful."], "ingratitude": ["A lack or absence of gratitude."], "thanklessness": ["A lack or absence of gratitude."], "unthankfulness": ["A lack or absence of gratitude."], "ungratefulness": ["A lack or absence of gratitude."], "ingrate": ["Not expressing gratitude.", "An ungrateful person."], "tedium": ["The state of being bored."], "arch\u00e6opteryx": ["A dinosaur of the species Archaeopteryx lithographica having wings and feathers."], "archaeopteryx": ["A dinosaur of the species Archaeopteryx lithographica having wings and feathers."], "archaiopteryx": ["A dinosaur of the species Archaeopteryx lithographica having wings and feathers."], "archeopteryx": ["A dinosaur of the species Archaeopteryx lithographica having wings and feathers."], "countess": ["The wife of a count or earl, or the female ruler of a county."], "hemeralopia": ["The inability to see in bright light."], "day blindness": ["The inability to see in bright light."], "nyctalopic": ["Unable to see clearly in low light."], "night vision": ["The ability to see clearly in low light conditions."], "oil palm": ["A tree belonging to the Arecaceae family which is used to produce palm oil."], "coconut palm": ["A tropical tree with feathery leaves which bears coconuts."], "palm oil": ["Vegetable oil that is extracted from the pulp of the oil palm."], "cystic fibrosis": ["A recessive genetic disease which affects the entire body, causing progressive disability and often early death."], "mucoviscidosis": ["A recessive genetic disease which affects the entire body, causing progressive disability and often early death."], "cephalometry": ["The measurement of the human head by imaging."], "cephalometric": ["Relating to cephalometry."], "cephalometer": ["A device for measuring a human head."], "endometrium": ["The mucus membrane that lines the uterus in mammals and in which fertilized eggs are implanted."], "endometrial": ["Of or pertaining to the endometrium."], "itch": ["An unpleasant sensation on the skin that provokes the desire to scratch.", "To feel the need to scratch."], "gravimetric": ["Relating to the measurement of the local gravity."], "gravimeter": ["A device to measure the local gravity."], "gravimetry": ["The measurement of local gravity."], "maned rat": ["A nocturnal, long-haired and bushy-tailed East African rodent."], "crested rat": ["A nocturnal, long-haired and bushy-tailed East African rodent."], "service-oriented computing": ["An umbrella term that represents a new generation distributed computing platform encompassing its own design paradigm and design principles, design pattern catalogs, pattern languages, a distinct architectural model, and related concepts, technologies, and frameworks."], "itchy": ["Having a sensation that provokes the need to scratch."], "pruritic": ["Having a sensation that provokes the need to scratch."], "ouabain": ["A poisonous cardiac glycoside."], "g-strophanthin": ["A poisonous cardiac glycoside."], "glioblastoma": ["An aggressive malignant brain tumor which is very difficult to treat."], "Wiradjuri": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Warandgeri": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Werogery": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wiiratheri": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wira-Athoree": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wiradhurri": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wiraduri": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wiraidyuri": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wirajeree": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wirashuri": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wiratheri": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wirracharee": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wirrai'yarrai": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wooragurie": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Wordjerg": ["An extinct Pama\u2013Nyungan language of the Wiradhuric subgroup formerly spoken in \\tNew South Wales, Australia."], "Liburnian": ["An extinct Indo-European language in the Centum group which was spoken by the ancient Liburnians, who occupied Liburnia in classical times.", "A member of an ancient Illyrian tribe inhabiting Liburnia."], "Liburnians": ["An ancient Illyrian tribe inhabiting Liburnia."], "Liburnia": ["A region along the northeastern Adriatic coast in Europe, in modern Croatia, occupied by the Liburnians between 11th and 1st century BC."], "radiation hardening": ["A method of designing electronic components to make them resistant to ionizing radiations."], "radiation-hardened": ["(For an electric component) Designed to be resistant to ionizing radiations."], "radiation hardened": ["(For an electric component) Designed to be resistant to ionizing radiations."], "Tunica": ["An extinct language isolate formerly spoken by the Tunica peoples in the Central and Lower Mississippi Valley, USA."], "Ayacucho Quechua": ["A Quechua language spoken in the Ayacucho region of Peru."], "Chanca": ["A Quechua language spoken in the Ayacucho region of Peru."], "Chanka": ["A Quechua language spoken in the Ayacucho region of Peru."], "Cusco Quechua": ["A Southern Quechua language spoken in city and the department of Cusco."], "as much as": ["in the (uncountable) amount that", "at the intensity or degree that"], "houbara bustard": ["A large bird in the bustard family, about 60 cm long, brown above and white below, with a black stripe down the sides of its neck."], "all the best": ["Interjection used to wish someone a good future, especially after a special event (birthday, wedding, etc.)."], "best wishes": ["Interjection used to wish someone a good future, especially after a special event (birthday, wedding, etc.)."], "Hebrides": ["A group of islands off the west coast of Scotland."], "brazen bull": ["A torture and execution device designed in ancient Greece which consisted of a hollow bull into which the condemned were placed and roasted to death by a fire underneath."], "bronze bull": ["A torture and execution device designed in ancient Greece which consisted of a hollow bull into which the condemned were placed and roasted to death by a fire underneath."], "Sicilian bull": ["A torture and execution device designed in ancient Greece which consisted of a hollow bull into which the condemned were placed and roasted to death by a fire underneath."], "tumorous": ["Relating to, or ressembling a tumor."], "tumourous": ["Relating to, or ressembling a tumor."], "tumoral": ["Relating to, or ressembling a tumor."], "fax": ["A document sent over a telephone line.", "A device able to send and receive a document through a telephone line.", "To send a document via a fax machine."], "fax machine": ["A device able to send and receive a document through a telephone line."], "gnocchi": ["Soft dumplings made of flour and semolina or potato or bread crumbs."], "capitalistic": ["Of or relating to capitalism."], "Earl Grey tea": ["A tea blend aromatised with bergamot oil."], "laban": ["A refreshing beverage that consists of yoghurt, cold water and salt."], "ajvar": ["A relish, made principally from red bell peppers, with eggplant, garlic and chili pepper."], "aijvar": ["A relish, made principally from red bell peppers, with eggplant, garlic and chili pepper."], "gudgeon": ["A freshwater fish in the Cyprinidae family, common in northern Eurasia, measuring about 12 cm."], "sand castle": ["A replica of a castle made of sand."], "high treason": ["The crime of disloyalty to one's nation or state."], "Mister": ["A title of respect for an adult male."], "Mr.": ["A title of respect for an adult male."], "Mr": ["A title of respect for an adult male."], "Moroccan Arabic": ["A variant of the Arabic language spoken in Morroco."], "viviparous": ["(For animals) Whose embryos develop inside the body of the mother.", "(For plants) Whose seeds germinate before they detach from the parent."], "viviparity": ["The condition of being viviparous."], "viviparously": ["In a viviparous manner."], "according as": ["at the intensity or degree that"], "gout": ["A medical condition characterized by recurrent attacks of acute inflammatory arthritis \u2014 a red, tender, hot, swollen joint."], "gouty": ["Suffering from gout."], "Houston": ["The largest city in Texas and the fourth-largest in the United States."], "economic rights of the author": ["Exclusive, transferable and usually inheritable power and liberty, recognised to the creator(s) of a literary or artistic work and to his successors in title, to publish, translate, copy, perform etc. it, for free or for a fee."], "siderophile": ["(For a chemical element) That tends to bond with metallic iron."], "crappy": ["Of very poor quality."], "shitty": ["Of very poor quality."], "tatty": ["Of very poor quality."], "bloodsucker": ["Animal that drinks the blood of others sucking it through a puncture wound."], "blood-sucker": ["Animal that drinks the blood of others sucking it through a puncture wound."], "bloodsucking": ["That draws off the blood of another animal."], "sanguivorous": ["That draws off the blood of another animal."], "hematophagy": ["The practice of certain animals of feeding on the blood of other animals."], "haematophagy": ["The practice of certain animals of feeding on the blood of other animals."], "hematophagia": ["The practice of certain animals of feeding on the blood of other animals."], "vichyssoise": ["A creamy potato soup flavored with leeks and onions; usually served cold."], "nigori": ["A variety of sake that is unfiltered and has a cloudy appearance."], "nigori sake": ["A variety of sake that is unfiltered and has a cloudy appearance."], "outdoors": ["In the open, not within a building."], "shower-bath": ["An area in which one bathes underneath a spray of water."], "shower bath": ["An area in which one bathes underneath a spray of water."], "shower curtain": ["A waterproof curtain which prevents water from splashing outside of the shower."], "wine glass": ["A glass stemware that is used to drink wine."], "amazake": ["A traditional sweet, low-alcoholic Japanese drink made from fermented rice."], "grain milk": ["A milk substitute made from fermented grain or from flour."], "rice milk": ["A kind of grain milk made from rice."], "rose window": ["A circular window often found in Gothic churches which is divided into segments that form a pattern."], "Catherine window": ["A circular window often found in Gothic churches which is divided into segments that form a pattern."], "laundry machine": ["A machine, usually automatic, which washes clothes etc."], "clothes washer": ["A machine, usually automatic, which washes clothes etc."], "washer": ["A machine, usually automatic, which washes clothes etc."], "stationery": ["The articles typically sold by stationers, comprising paper, pens, ink, quills, blank books, etc.", "Belonging to, or sold by, a stationer."], "hanger": ["A triangular device made of wire, wood or plastic with a hook on top that is used to store an item of clothing by hanging."], "power plug": ["A device for connecting electrically operated devices to the power supply, having protruding prongs or pins that fit into matching slots or holes in a power socket."], "electrical plug": ["A device for connecting electrically operated devices to the power supply, having protruding prongs or pins that fit into matching slots or holes in a power socket."], "Thai eggplant": ["A variety of eggplant used primarily in Thai cuisine."], "shrimp paste": ["A common ingredient used in Asian cuisine that consists of fermented ground shrimp that is dried in the sun."], "shrimp sauce": ["A common ingredient used in Asian cuisine that consists of fermented ground shrimp that is dried in the sun."], "how old are you?": ["(Informal) What is your age in years?", "(Formal) What is your age in years?"], "vast": ["Large in number or quantity.", "Very large or wide in size."], "tuition": ["The training or instruction provided by a teacher or tutor.", "A sum of money charged for educational instruction during higher education."], "tuition payments": ["A sum of money charged for educational instruction during higher education."], "tuition fees": ["A sum of money charged for educational instruction during higher education."], "four hundred": ["The cardinal number occurring after three hundred ninety-nine and before four hundred one, represented in Arabic numerals as 400."], "Hongkongese": ["From or relating to Hong Kong."], "order food": ["To ask for a specific food to be cooked and served, e.g. in a restaurant."], "text message": ["A brief electronic message sent from a mobile phone."], "SMS": ["A brief electronic message sent from a mobile phone."], "spaghetti squash": ["An oblong variety of squash."], "vegetable spaghetti": ["An oblong variety of squash."], "noodle squash": ["An oblong variety of squash."], "spaghetti marrow": ["An oblong variety of squash."], "squaghetti": ["An oblong variety of squash."], "sly": ["Intelligent, smart and capable of taking advantage of a situation."], "final examination": ["A test or examination given at the end of a term or class."], "Hinduism": ["A religion originating from India including the belief in reincarnation."], "tack": ["A nail with a large head.", "A small nail with a head and a sharp point."], "push pin": ["A nail with a large head."], "study room": ["A room in a house intended for reading and writing."], "varicose vein": ["A permanently enlarged vein due to genetic factors or alterations of the venous circulation."], "variceal": ["Of or pertaining to varicose veins."], "venous": ["Of or pertaining to veins."], "venal": ["Of or pertaining to veins."], "veiny": ["Having prominent veins."], "Omurano": ["An unclassified extinct language from Peru."], "Humurana": ["An unclassified extinct language from Peru."], "Roamaina": ["An unclassified extinct language from Peru."], "Numurana": ["An unclassified extinct language from Peru."], "Umurano": ["An unclassified extinct language from Peru."], "Mayna": ["An unclassified extinct language from Peru."], "nine hundred": ["The cardinal number occurring after eight hundred ninety-nine and before nine hundred one, represented in Arabic numerals as 900."], "cashew": ["A small evergreen tree (Anacardium occidentale) grown for its cashew nuts and cashew apples.", "The edible seed of the cashew tree."], "acajou": ["A small evergreen tree (Anacardium occidentale) grown for its cashew nuts and cashew apples."], "cashew nut": ["The edible seed of the cashew tree."], "semantic satiation": ["A psychological phenomenon in which repetition causes a word or phrase to temporarily lose meaning for the listener."], "razor": ["A bladed tool used for the removal of body hair through the act of shaving."], "shaving razor": ["A bladed tool used for the removal of body hair through the act of shaving."], "semantic saturation": ["A psychological phenomenon in which repetition causes a word or phrase to temporarily lose meaning for the listener."], "7th": ["After the sixth and before the eighth in a sequence."], "palace": ["Official residence of a head of state or other dignitary, especially in a monarchical or imperial governmental system.", "A large and stately mansion."], "VoIP": ["A telecommunication system that uses the Internet protocol to transmit telephone calls."], "voice over Internet protocol": ["A telecommunication system that uses the Internet protocol to transmit telephone calls."], "voice over IP": ["A telecommunication system that uses the Internet protocol to transmit telephone calls."], "Portuguese-based creole": ["A creole language which has been significantly influenced by Portuguese."], "Portuguese creole": ["A creole language which has been significantly influenced by Portuguese."], "Guinea-Bissau Creole": ["A Portuguese-based creole language spoken in Guinea Bissau."], "Bissau-Bolama Creole": ["Dialect of the Guinea-Bissau Creole spoken in and around the city of Bissao."], "Ziguinchor Creole": ["A Portuguese-based creole language spoken in the region of Ziguinchor in Casamance, Senegal."], "Casamance Creole": ["A Portuguese-based creole language spoken in the region of Ziguinchor in Casamance, Senegal."], "Cura\u00e7ole\u00f1o": ["Variety of Papiamento spoken in Cura\u00e7ao."], "Aruban Papiamento": ["Variety of Papiamento spoken in Aruba."], "Arubiano": ["Variety of Papiamento spoken in Aruba."], "Boneriano": ["Variety of Papiamento spoken in Bonaire."], "Bonaire's Papiamentu": ["Variety of Papiamento spoken in Bonaire."], "sugar beet": ["A type of beet whose root contains a high concentration of sucrose."], "passion fruit": ["The edible fruit of the passionflower, a round fruit with a purple or yellow skin which is native to Brazil."], "passionfruit": ["The edible fruit of the passionflower, a round fruit with a purple or yellow skin which is native to Brazil."], "tape measure": ["A measuring instrument consisting of a graduated flexible tape which can be rolled."], "measuring tape": ["A measuring instrument consisting of a graduated flexible tape which can be rolled."], "female teacher": ["A female who passes on knowledge, especially one employed in a school."], "Taos": ["A dialect of the Northern Tiwa language spoken in Taos Pueblo, New Mexico, USA."], "Warlpiri": ["A Ngarrkic language spoken by the Warlpiri people in Australia's Northern Territory."], "pamphlet": ["A booklet without a hard cover or binding."], "washglove": ["Pouch in thick absorbent cloth designed to put one's hand in and wash oneself."], "washing mitt": ["Pouch in thick absorbent cloth designed to put one's hand in and wash oneself."], "tumble drier": ["Household appliance which dries textiles with hot air after washing."], "maid of honor": ["The primary woman who attends the bride at a wedding ceremony."], "snowblind": ["Temporarily blinded by the light reflected off snow."], "snow-blind": ["Temporarily blinded by the light reflected off snow."], "photokeratitis": ["A painful eye condition caused by exposure of insufficiently protected eyes to ultraviolet rays."], "snow blindness": ["Temporary blindness caused by the exposure of unprotected eyes to the ultraviolet rays in bright sunlight reflected from snow or ice."], "pistachio": ["A small tree originally from Persia which produces an edible nut.", "The edible nutlike fruit of the pistachio tree."], "number OLD": ["Do not remove, I need it for reorganisation. Thanks, Kipcool."], "five hundred": ["The cardinal number occurring after four hundred ninety-nine and before five hundred one, represented in Arabic numerals as 500."], "West syndrome": ["A rare epileptic disorder in infants that is difficult to treat."], "West's Syndrome": ["A rare epileptic disorder in infants that is difficult to treat."], "Lennox\u2013Gastaut syndrome": ["A form of epilepsy that develops between the second and sixth year of life and is characterized by frequent seizures and is often accompanied by developmental delay."], "Lennox syndrome": ["A form of epilepsy that develops between the second and sixth year of life and is characterized by frequent seizures and is often accompanied by developmental delay."], "tablecloth": ["A cloth used to cover and protect a table, especially for a dining table.", "A large cloth used to cover a table."], "table cloth": ["A cloth used to cover and protect a table, especially for a dining table."], "table-cloth": ["A cloth used to cover and protect a table, especially for a dining table."], "interictal": ["Between epileptic seizures."], "postictal": ["Occurring after an epileptic seizure."], "tour bus": ["A bus designed for sightseeing tours."], "shopping mall": ["Enclosed area in which there is a variety of shops."], "shopping arcade": ["Enclosed area in which there is a variety of shops."], "shopping precinct": ["Enclosed area in which there is a variety of shops."], "mall": ["Enclosed area in which there is a variety of shops."], "tuberous sclerosis": ["A rare genetic disease that causes non-malignant tumors to grow in the brain, skin, heart, lungs etc."], "gyrus": ["A ridge on the cerebral cortex."], "flax": ["A plant with blue flowers which is cultivated for its edible seeds and for its fibers that are used to make cloth."], "common flax": ["A plant with blue flowers which is cultivated for its edible seeds and for its fibers that are used to make cloth."], "flight attendant": ["A person whose job is to ensure the safety and comfort of passengers aboard flights."], "cabin crew": ["A person whose job is to ensure the safety and comfort of passengers aboard flights."], "steward": ["A person whose job is to ensure the safety and comfort of passengers aboard flights."], "cabin attendant": ["A person whose job is to ensure the safety and comfort of passengers aboard flights."], "double bed": ["A bed designed for two people."], "carbon nanotube": ["An allotrope of carbon in which carbon atoms are linked together in hexagons. These hexagons are connected and form a cylindrical tube-like body."], "lentil soup": ["A soup made of lentils and other vegetables."], "pick up the phone": ["To respond to an incoming telephone call."], "pick the phone up": ["To respond to an incoming telephone call."], "pick up the telephone": ["To respond to an incoming telephone call."], "answer the phone": ["To respond to an incoming telephone call."], "make-up": ["Colored products intended to alter the user's appearance."], "makeup": ["Colored products intended to alter the user's appearance."], "rainforest": ["A forest of broad-leaved, mainly evergreen, trees found in continually moist climates in the tropics, subtropics, and some parts of the temperate zones."], "flaxen": ["Made of or resembling flax fibers.", "Having the yellow brown colour of flax."], "supercilium": ["The hair that grows over the bone ridge above the eye socket."], "brow": ["The hair that grows over the bone ridge above the eye socket."], "eye-lash": ["One of the hairs that grows on the eyelid, around the eyes."], "eyeliner": ["A cosmetic used to draw a dark line around the eyes."], "eye liner": ["A cosmetic used to draw a dark line around the eyes."], "Eastern Uyghur": ["ISO 639-6 entity"], "Standard Xinjiang Uyghur": ["A standardized dialect of the Uyghur language spoken primarily in Xinjiang and written in Arabic script."], "drapetomania": ["A mental illness described in the 19th century that supposedly caused black slaves to flee captivity."], "ladle": ["A type of spoon having a long handle terminating in a deep bowl."], "brew": ["To make beer."], "world market": ["Market that spans the whole world."], "global market": ["Market that spans the whole world."], "homemade": ["Made in the home."], "purebred": ["(Of an animal) Having only ancestors of the same breed.", "An animal which is of pure breed."], "pure-bred": ["(Of an animal) Having only ancestors of the same breed."], "thoroughbred": ["(Of an animal) Having only ancestors of the same breed.", "An animal which is of pure breed."], "truebred": ["(Of an animal) Having only ancestors of the same breed."], "pedigreed": ["(Of an animal) Having only ancestors of the same breed."], "pureblooded": ["Having pure blood, unmixed ancestry."], "pure-blooded": ["Having pure blood, unmixed ancestry."], "mechanical pencil": ["A pencil with a replaceable and mechanically extendable lead."], "propelling pencil": ["A pencil with a replaceable and mechanically extendable lead."], "alligator pear": ["The fruit of an avocado tree (Persea americana)."], "avocado pear": ["The fruit of an avocado tree (Persea americana)."], "butter pear": ["The fruit of an avocado tree (Persea americana)."], "antispasmodic": ["Having the quality of suppressing spasms.", "A drug that suppresses spasms."], "spasmolytic": ["A drug that suppresses spasms."], "polka dot": ["A pattern consisting of many filled circles."], "facial hair": ["Hair that grows on the face, in particular on the chin, the cheeks and around the lips."], "tastebud": ["An organ, usually on the tongue, that allows to perceive taste."], "taste bud": ["An organ, usually on the tongue, that allows to perceive taste."], "lively": ["(For a person) Possessing or exhibiting energy."], "ankyloglossia": ["A congenital oral anomaly that may decrease mobility of the tongue tip and is caused by an unusually short, thick lingual frenulum."], "frenuloplasty": ["The surgical alteration of a frenulum."], "furnished": ["Equipped with furniture."], "main course": ["The central dish in a meal, usually following an entr\u00e9e and followed by a dessert."], "butcher's shop": ["A shop that is specialized in meat and meat products."], "erectile": ["Capable of being set upright.", "Of or relating to tissue capable of filling with blood and becoming rigid, e.g. the penis."], "evolutionary psychology": ["A theoretical approach to psychology that attempts to explain psychological traits as products of natural selection."], "psychological": ["Of or pertaining to psychology."], "psychologic": ["Of or pertaining to psychology."], "psychologically": ["In a psychological manner."], "naked mole rat": ["A eusocial rodent native to parts of East Africa which lives underground."], "sand puppy": ["A eusocial rodent native to parts of East Africa which lives underground."], "desert mole rat": ["A eusocial rodent native to parts of East Africa which lives underground."], "psychological warfare": ["The use of various techniques to demoralize or intimidate an enemy."], "homesick": ["Missing one's home and family very much when away."], "buffet": ["A system of serving meals in which food is placed on a sideboard where the diners generally serve themselves."], "homesickness": ["A strong, sad feeling of missing one's home and family when away."], "bacciferous": ["Producing berries."], "baccate": ["Producing berries."], "brachiation": ["A form of locomotion by swinging from tree to tree using only the arms."], "brachiate": ["To move forward by swinging from branch to branch using only the arms."], "brachiator": ["Animal that can progress by means of brachiation."], "balletic": ["Of or pertaining to ballet."], "laying hen": ["A hen that is kept for its eggs."], "hoof": ["Natural horn covering of an animal's foot.", "The foot of an animal such as a horse, ox or deer."], "hoofed": ["Having a hoof."], "flat-chested": ["(Of a woman) Having small breasts."], "flatchested": ["(Of a woman) Having small breasts."], "grey-haired": ["Having grey hair."], "silver-haired": ["Having grey hair."], "grizzly": ["Having grey hair."], "gray-haired": ["Having grey hair."], "gray": ["To become grey.", "Having a colour between black and white, like ash or stone."], "nape": ["The back part of the neck."], "sore throat": ["Any inflammation of the pharynx that causes soreness."], "throat pain": ["Any inflammation of the pharynx that causes soreness."], "non-smoking": ["Where smoking is not allowed."], "mysteriously": ["In a mysterious manner."], "musicality": ["The quality of being musical."], "movie": ["A sequence of animated images."], "motion picture": ["A sequence of animated images."], "mobile telephone": ["A portable electronic device used for calling people."], "clitoral": ["Of or relating to the clitoris."], "stripper": ["A woman who dances and undresses for money.", "A man who dances and undresses for money."], "male stripper": ["A man who dances and undresses for money."], "reverential": ["Expressing or showing deep respect."], "parcel": ["A package sent through the mail or package delivery."], "coextrusion": ["The extrusion of multiple layers of material simultaneously."], "hot-melt adhesive": ["A thermoplastic adhesive designed to be melted in an electric hot glue gun."], "hot-melt": ["A thermoplastic adhesive designed to be melted in an electric hot glue gun."], "HMA": ["A thermoplastic adhesive designed to be melted in an electric hot glue gun."], "hot glue": ["A thermoplastic adhesive designed to be melted in an electric hot glue gun."], "skin pack": ["A type of packaging where a thin sheet of transparent plastic is placed over a product."], "skin packaging": ["A type of packaging where a thin sheet of transparent plastic is placed over a product."], "skin package": ["A type of packaging where a thin sheet of transparent plastic is placed over a product."], "guide book": ["A book for tourists or travelers that provides details about a geographic location."], "guidebook": ["A book for tourists or travelers that provides details about a geographic location."], "WHO": ["A specialized agency of the United Nations designed as a coordinating authority on international health issues."], "warm-hearted": ["Having affection or warm regard; loving."], "goodhearted": ["Having affection or warm regard; loving."], "what's the time?": ["What is the number of hours and approximate number of minutes since the start of the current day?"], "what time is it?": ["What is the number of hours and approximate number of minutes since the start of the current day?"], "personal physician": ["Physician who is responsible for one patient in particular."], "meconium": ["The first stool of a newborn which consists of materials ingested during the time the infant spends in the uterus."], "macrocephaly": ["A condition in which the head is abnormally large."], "fueling station": ["A facility selling fuel for road motor vehicles."], "gasbar": ["A facility selling fuel for road motor vehicles."], "petrol garage": ["A facility selling fuel for road motor vehicles."], "petrol kiosk": ["A facility selling fuel for road motor vehicles."], "modestly": ["In a modest manner."], "menorrhagia": ["An abnormally heavy and prolonged menstrual period."], "overhead storage compartment": ["A storage compartment located above the seats in an airplane."], "overhead storage bin": ["A storage compartment located above the seats in an airplane."], "hands": ["The two hands of a human being considered collectively."], "feet": ["The two feet of a human being considered collectively."], "personal flotation device": ["A device designed to help a wearer to keep his head above the surface of the water."], "lifejacket": ["A device designed to help a wearer to keep his head above the surface of the water."], "life jacket": ["A device designed to help a wearer to keep his head above the surface of the water."], "life-jacket": ["A device designed to help a wearer to keep his head above the surface of the water."], "life vest": ["A device designed to help a wearer to keep his head above the surface of the water."], "lobby": ["A room in a building which is used for entry from the outside.", "A large, vast room or complex of rooms (in a theatre, opera, concert hall, showroom, cinema, etc.) where the audience members can rest, eat, etc., adjacent to the auditorium.", "A class or group of people who try to lobby or influence public officials; collectively, lobbyists."], "foyer": ["A room in a building which is used for entry from the outside.", "A large, vast room or complex of rooms (in a theatre, opera, concert hall, showroom, cinema, etc.) where the audience members can rest, eat, etc., adjacent to the auditorium."], "entrance hall": ["A room in a building which is used for entry from the outside."], "vestibule": ["A room in a building which is used for entry from the outside."], "megalopolis": ["A chain of roughly adjacent metropolitan areas."], "megapolis": ["A chain of roughly adjacent metropolitan areas."], "megaregion": ["A chain of roughly adjacent metropolitan areas."], "Selkup": ["An extensive dialect continuum of the Uralic language family spoken by the Selkups in Siberia, Russia."], "mesophyte": ["A plant that grows in environments which neither particularly dry nor particularly wet."], "hydrophyte": ["Plant adapted for a partially or completely submerged life."], "Alyutor": ["A language of the Chukotkan branch spoken in the northern part of the Kamchatka Peninsula, Russia."], "xeric plant": ["A plant that is adapted to circumstances where little water is available."], "mesenteric": ["Of or relating to the mesentery."], "magnetize": ["To make magnetic."], "magnetise": ["To make magnetic."], "magnetite": ["A magnetic mineral with the chemical formula Fe3O4."], "Aristotelian": ["A disciple of Aristotle.", "Of or pertaining to the philosophy taught by Aristotle."], "surf the net": ["To browse the Internet."], "steak knife": ["A sharp knife, designed for cutting steak."], "half past": ["Thirty minutes after (a given hour)."], "summer vacation": ["A vacation in the summertime between school years typically lasting between 6 and 12 weeks."], "summer holidays": ["A vacation in the summertime between school years typically lasting between 6 and 12 weeks."], "summer break": ["A vacation in the summertime between school years typically lasting between 6 and 12 weeks."], "tin opener": ["A device for opening cans."], "cortisol": ["A steroid hormone of formula C21H30O5 produced from cholesterol by the cortex of the adrenal gland."], "udder": ["An organ in female quadruped mammals which consists of mammary glands and has several teats."], "archaeologic": ["Of or pertaining to archaeology."], "arch\u00e6ologic": ["Of or pertaining to archaeology."], "archeologic": ["Of or pertaining to archaeology."], "arch\u00e6ological": ["Of or pertaining to archaeology."], "archeological": ["Of or pertaining to archaeology."], "demographical": ["Of or pertaining to demography."], "demographically": ["In a demographic manner."], "aplasia": ["The incomplete development, or absence, of an organ or tissue."], "anthropophagy": ["The eating of human flesh."], "anthropophagic": ["Eating other humans (speaking about a human)."], "man-eating": ["Eating other humans (speaking about a human)."], "attention deficit hyperactivity disorder": ["Behavior disorder originating in childhood in which the essential features are signs of developmentally inappropriate inattention, impulsivity, and hyperactivity."], "ADHD": ["Behavior disorder originating in childhood in which the essential features are signs of developmentally inappropriate inattention, impulsivity, and hyperactivity."], "AD/HD": ["Behavior disorder originating in childhood in which the essential features are signs of developmentally inappropriate inattention, impulsivity, and hyperactivity."], "ADD": ["Behavior disorder originating in childhood in which the essential features are signs of developmentally inappropriate inattention, impulsivity, and hyperactivity."], "chop": ["To cut meat, vegetables or fruits in very small pieces.", "To strike sharply, as in some sports."], "head cook": ["A cook who manages other cooks in an establishment such as a restaurant."], "cross-contamination": ["The transfer of a contaminant from one source to another."], "cross-contaminate": ["To transfer a contaminant from one source to another."], "booking": ["An arrangement made in advance to have something at a certain time where only a limited number are available, such as a seat in a transport, a table at a restaurant or a room in a hotel."], "room service": ["A service available in some hotels where food and other items is brought directly to the guest in their room."], "notebook computer": ["A portable computer that is small enough and light enough to be used on one's lap."], "star-nosed mole": ["A small mole found in wet low areas of eastern Canada and the north-eastern United States which has a prominent snount that serves as a touch organ."], "clarified butter": ["Butter from which the water has been removed."], "ghee": ["Butter from which the water has been removed."], "ghi": ["Butter from which the water has been removed."], "biologically": ["In a biological manner.", "In a biological manner."], "blindly": ["In a blind manner."], "caryatid": ["A sculpted female figure serving as an architectural element, for example a pillar."], "conjunctival": ["Of or relating to the conjunctiva."], "paediatrics": ["The branch of medicine that deals with the medical care of infants, children, and adolescents."], "p\u00e6diatrics": ["The branch of medicine that deals with the medical care of infants, children, and adolescents."], "pediatric": ["Of or pertaining to pediatrics."], "paediatric": ["Of or pertaining to pediatrics."], "entheogen": ["A psychoactive substance used for the purpose of inducing a mystical or spiritual experience."], "unclean": ["Regarded by a religious rule as being, temporarily or permanently, very dirty or in a similar condition, and, as such, banned from the sacred places as well as, if a thing or an animal, from major uses such as being eaten or, if a person, from major activities, such as sexual intercourse or social life among non such people."], "tax-free": ["Exempt from taxation."], "wilt": ["(For a flower or a leaf) To hang downwards and lose its rigidity as a result of lack of water."], "Kamchatka": ["A large peninsula in the Russian Far East."], "Kamchatka Peninsula": ["A large peninsula in the Russian Far East."], "Sea of Okhotsk": ["A marginal sea of the western Pacific Ocean."], "transrectal ultrasonography": ["The imaging of the prostate or other organs by ultrasonography by inserting a probe in the rectum."], "TRUS": ["The imaging of the prostate or other organs by ultrasonography by inserting a probe in the rectum."], "town square": ["An open area in a town, sometimes including the surrounding buildings."], "6th": ["Which comes after the fifth."], "take a picture": ["To obtain an image of someone or something on photographic film or digital format by using photography."], "narcolepsy": ["A chronic sleep disorder characterized by an excessive urge to sleep at inappropriate times."], "eight thousand": ["The cardinal number between seven thousand nine hundred and ninety nine and eight thousand and one."], "seventy-seven": ["The cardinal number immediately following seventy-six and preceding seventy-eight."], "parking space": ["A space that is large enough to park one car."], "red lionfish": ["A venomous coral reef fish natively found in the Indo-Pacific region."], "pinstriped": ["Having pinstripes."], "pin striped": ["Having pinstripes."], "pin-striped": ["Having pinstripes."], "jewelry store": ["A store that sells jewels."], "jewelry shop": ["A store that sells jewels."], "jewellery store": ["A store that sells jewels."], "jewellery shop": ["A store that sells jewels."], "porage": ["A hot breakfast cereal dish made from oatmeal, milk and water heated and stirred until thick."], "parritch": ["A hot breakfast cereal dish made from oatmeal, milk and water heated and stirred until thick."], "tertiary processed food": ["Food so prepared and presented as to be easily and quickly ready for consumption."], "TV dinner": ["A prepackaged frozen or chilled meal that only needs to be heated before eating."], "ready meal": ["A prepackaged frozen or chilled meal that only needs to be heated before eating."], "precook": ["To partially or completely cook in advance."], "precooked": ["Partially or completely cook in advance."], "pre-cooked": ["Partially or completely cook in advance."], "automated teller machine": ["A machine that allows bank customers to withdraw money."], "ATM": ["A machine that allows bank customers to withdraw money."], "automatic teller machine": ["A machine that allows bank customers to withdraw money."], "ATM machine": ["A machine that allows bank customers to withdraw money."], "\u01c0Xam": ["An extinct Khoisan language of South Africa."], "\u01c0Xam Ka\u01c3k\u02bce": ["An extinct Khoisan language of South Africa."], "potassium carbonate": ["Any of several compounds containing potassium, especially soluble compounds such as potassium oxide, potassium chloride, and various potassium sulfates, used chiefly in fertilizers."], "dental floss": ["Thin filament used to clean the areas between the teeth."], "Peloponnesos": ["A large peninsula in southern Greece, forming the part of the country south of the Gulf of Corinth."], "Dutch War of Independence": ["The revolt of the Netherlands against the Spanish king which lasted from 1568 to 1648 and ended with the Netherlands attaining independence."], "marker pen": ["A pen with a wide tip made of felt or fibre."], "marking pen": ["A pen with a wide tip made of felt or fibre."], "Borna disease": ["Infectious disease caused by viruses which leads to abnormal behaviour and death in animals like horses, cattle and sheep."], "colourant": ["A substance used to modify the color of something."], "tincture": ["A substance used to modify the color of something."], "tint": ["To modify the color of something by applying dye."], "specimen": ["A small quantity of a product, typically provided to test that product before obtaining a greater quantity of it."], "hamsters": ["A subfamily of the family Cricetidae, comprising rodents having a pouch on each side of their heads where they store food to be eaten later."], "put on": ["Apply to another thing (e.g. a surface).", "To move or place (anything) so as to get it into or out of a specific location or position."], "Menik": ["A language of the Niger-Congo family spoken in the K\u00e9dougou Region of Eastern Senegal."], "M\u00e9nik": ["A language of the Niger-Congo family spoken in the K\u00e9dougou Region of Eastern Senegal."], "Bedik": ["A language of the Niger-Congo family spoken in the K\u00e9dougou Region of Eastern Senegal."], "Tenda": ["A language of the Niger-Congo family spoken in the K\u00e9dougou Region of Eastern Senegal."], "Tanda": ["A language of the Niger-Congo family spoken in the K\u00e9dougou Region of Eastern Senegal."], "kinesiology": ["The scientific study of the movements of the human body."], "human kinetics": ["The scientific study of the movements of the human body."], "Arabia": ["A peninsula in Southwest Asia at the junction of Africa and Asia consisting mainly of desert."], "Arabian subcontinent": ["A peninsula in Southwest Asia at the junction of Africa and Asia consisting mainly of desert."], "forwarder": ["A person or company that organizes shipments for individuals or other companies."], "freight forwarder": ["A person or company that organizes shipments for individuals or other companies."], "crossroad": ["A place where several roads meet.", "A road that crosses another road."], "cross-road": ["A road that crosses another road."], "cross road": ["A road that crosses another road."], "wavy": ["Whose surface looks like waves."], "waved": ["Whose surface looks like waves."], "inspect": ["To examine carefully."], "propofol": ["A short-acting, intravenously administered, general anaesthetic."], "2,6-diisopropylphenol": ["A short-acting, intravenously administered, general anaesthetic."], "iridology": ["A form of alternative medicine where the iris is used to diagnose medical conditions."], "iridodiagnosis": ["A form of alternative medicine where the iris is used to diagnose medical conditions."], "iridiagnosis": ["A form of alternative medicine where the iris is used to diagnose medical conditions."], "toolbox": ["A collection of subroutines used to develop software.", "A box designed to store and transport tools."], "tool chest": ["A box designed to store and transport tools."], "workbox": ["A box designed to store and transport tools."], "toolkit": ["A collection of subroutines used to develop software."], "long time no see": ["We have not seen each other for a long time."], "sixty-six": ["The cardinal number immediately following sixty-five and preceding sixty-seven."], "four thousand": ["The cardinal number between three thousand nine hundred and ninety nine and four thousand and one."], "tour": ["The act of going to see a city, a monument, a museum, etc."], "lateral gene transfer": ["Any process in which an organism transfers genetic material to another cell that is not its offspring."], "spirit of salt": ["A solution of hydrogen chloride gas in water."], "pancake syrup": ["Syrup made from the sap of the sugar maple (Acer saccharum) or, less frequently, the black maple (Acer nigrum)."], "nonliving": ["Which is not, and has never been, a living organism."], "inanimate": ["Which is not, and has never been, a living organism."], "non-living": ["Which is not, and has never been, a living organism."], "manica": ["A metal arm guard fastened to leather straps, worn by Roman gladiators to protect their right arm."], "VoIP phone": ["A phone using a \"voice over IP\" system to transmit calls."], "IP phone": ["A phone using a \"voice over IP\" system to transmit calls."], "sweet potato": ["A dicotyledonous plant of the family Convolvulaceae, having an edible tuberous root.", "The edible tuberous root of the plant \"Ipomoea batatas\"."], "wasteland": ["A barren land not used for construction or cultivation."], "ballet dancer": ["Male ballet dancer."], "cloud up": ["To become cloudy."], "dinner table": ["A table, usually in a dining room, where people seat to eat a meal."], "dining table": ["A table, usually in a dining room, where people seat to eat a meal."], "dining room table": ["A table, usually in a dining room, where people seat to eat a meal."], "coupon": ["A ticket or document that can be exchanged for a discount or rebate when purchasing a product or service."], "Macau Creole": ["A creole language derived mainly from Malay, Sinhalese, Cantonese, and Portuguese, which is spoken in Macau and Hong Kong."], "hard up": ["Without money."], "Nile": ["A 6,650 km long north-flowing river in North Africa."], "Nile River": ["A 6,650 km long north-flowing river in North Africa."], "Nile Delta": ["A delta in Northern Egypt where the Nile River drains into the Mediterranean Sea."], "lemon verbena": ["A plant in the verbena family which has a powerful lemon scent and whose leaves are used as herb and tea."], "lemon beebrush": ["A plant in the verbena family which has a powerful lemon scent and whose leaves are used as herb and tea."], "hepatosteatosis": ["Accumulation of too much fat inside liver cells."], "eupeptic": ["That aids digestion."], "fennel tea": ["Tea made with fennel seeds."], "gestational diabetes": ["Diabetes which occurs during pregnancy and goes away after giving birth."], "gestational diabetes mellitus": ["Diabetes which occurs during pregnancy and goes away after giving birth."], "gestational": ["Of or pertaining to gestation."], "common vervain": ["A herb native to Europe which is used as a medicinal plant."], "common verbena": ["A herb native to Europe which is used as a medicinal plant."], "mosquito plant": ["A herb native to Europe which is used as a medicinal plant."], "wild hyssop": ["A herb native to Europe which is used as a medicinal plant."], "vervain": ["A herb native to Europe which is used as a medicinal plant."], "mixed martial arts": ["A full contact combat sport that allows the use of both striking and grappling techniques."], "Manx Gaelic": ["An extinct language that was spoken on the isle of Man, currently experiencing a revival."], "blood-thinner": ["A drug that delays the clotting of blood."], "blood thinner": ["A drug that delays the clotting of blood."], "pilot whale": ["An animal of the Globicephala genus, characterized by a distinctive large, bulbous melon."], "pilot whales": ["A genus of the family Delphinidae characterized by a distinctive large, bulbous melon."], "medical doctor": ["A person who has completed a study of medicine, and as such tries to diagnose and cure diseases in patients."], "single bed": ["A bed designed for only one person."], "antitussive": ["Relieving or suppressing coughing.", "Substance that relieves or suppresses coughing."], "Kaya": ["The presumed language of the Gaya confederacy (1st to 6th century CE) in the south of the Korean peninsula."], "parochially": ["In a parochial manner."], "parochial": ["Pertaining to or relating to a parish."], "h\u00e6mophilia": ["Heredity disease where blood clotting is impaired."], "bleeder's disease": ["Heredity disease where blood clotting is impaired."], "Christmas disease": ["Heredity disease where blood clotting is impaired."], "emergency room": ["A medical treatment facility specialized in treating patients that need to be taken care of quickly without prior appointment."], "emergency department": ["A medical treatment facility specialized in treating patients that need to be taken care of quickly without prior appointment."], "accident & emergency": ["A medical treatment facility specialized in treating patients that need to be taken care of quickly without prior appointment."], "A&E": ["A medical treatment facility specialized in treating patients that need to be taken care of quickly without prior appointment."], "ER": ["A medical treatment facility specialized in treating patients that need to be taken care of quickly without prior appointment."], "emergency ward": ["A medical treatment facility specialized in treating patients that need to be taken care of quickly without prior appointment."], "EW": ["A medical treatment facility specialized in treating patients that need to be taken care of quickly without prior appointment."], "casualty department": ["A medical treatment facility specialized in treating patients that need to be taken care of quickly without prior appointment."], "try on": ["To test the look or fit of (a garment) by wearing it."], "hydronephrosis": ["Pathological dilation of the renal pelvis calyces."], "renal pelvis": ["Funnel-shaped membranous pocket, of the mammals' kidney, receiving urine from the renal calyces and continued by the ureter."], "extrasolar": ["Of or originating outside the Solar System."], "extraplanetary": ["Originating, or located outside of a planet."], "extragalactic": ["Originating outside of the Milky Way galaxy."], "hemophilic": ["Of or pertaining to haemophilia."], "haemophilic": ["Of or pertaining to haemophilia."], "h\u00e6mophilic": ["Of or pertaining to haemophilia."], "haemophiliac": ["A person with haemophilia."], "hemophiliac": ["A person with haemophilia."], "h\u00e6mophiliac": ["A person with haemophilia."], "9th": ["One of 9 equal parts of a whole.", "Which comes after the eighth."], "hiccup": ["To have spasms of the diaphragm.", "A spasm of the diaphragm, or the resulting sound."], "have the hiccups": ["To have spasms of the diaphragm."], "blood alcohol test": ["Examination of the blood to determine the amount of alcohol in the blood."], "New England": ["A region in the northeastern corner of the United States consisting of the six states of Maine, New Hampshire, Vermont, Massachusetts, Rhode Island, and Connecticut."], "Pit River language": ["A language of the Palaihnihan family spoken by the Pit River people in northeastern California, USA."], "Russian Oirat": ["A Mongolic language spoken by the Kalmyk people of the Republic of Kalmykia, a federal subject of the Russian Federation."], "Me\u00e4nkieli": ["A Finnish dialect spoken in the northernmost parts of Sweden, around the valley of the Torne River."], "Nanticoke": ["An extinct Algonquian language formerly spoken in Delaware and Maryland, United States."], "Ngarrindjeri": ["An extinct language formerly spoken by the Ngarrindjeri people of the lower Murray River, western Fleurieu Peninsula, and the Coorong of southern, central Australia."], "Yaraldi": ["An extinct language formerly spoken by the Ngarrindjeri people of the lower Murray River, western Fleurieu Peninsula, and the Coorong of southern, central Australia."], "Yaralde Tingar": ["An extinct language formerly spoken by the Ngarrindjeri people of the lower Murray River, western Fleurieu Peninsula, and the Coorong of southern, central Australia."], "Narrinyeri": ["An extinct language formerly spoken by the Ngarrindjeri people of the lower Murray River, western Fleurieu Peninsula, and the Coorong of southern, central Australia."], "Ngarinyeri": ["An extinct language formerly spoken by the Ngarrindjeri people of the lower Murray River, western Fleurieu Peninsula, and the Coorong of southern, central Australia."], "Nottoway-Meherrin": ["An extinct Native American language of the Iroquoian family formerly spoken in Virginia and North Carolina, United States."], "Nottoway": ["An extinct Native American language of the Iroquoian family formerly spoken in Virginia and North Carolina, United States."], "Meherrin": ["An extinct Native American language of the Iroquoian family formerly spoken in Virginia and North Carolina, United States."], "Powhatan": ["An extinct Eastern Algonquian language formerly spoken by the Powhatan people of tidewater Virginia."], "Virginia Algonquian": ["An extinct Eastern Algonquian language formerly spoken by the Powhatan people of tidewater Virginia."], "Tutelo": ["An extinct Ohio Valley Siouan language formerly spoken in Virginia, West Virginia and North Carolina, USA."], "indigo dye": ["A blue dye obtained from certain plants (the indigo plant or woad), or a similar synthetic dye."], "post meridiem": ["After noon."], "PM": ["After noon."], "pm": ["After noon."], "p.m.": ["After noon."], "Internet cafe": ["A place where one can use a computer with Internet access for a fee."], "Internet caf\u00e9": ["A place where one can use a computer with Internet access for a fee."], "cybercaf\u00e9": ["A place where one can use a computer with Internet access for a fee."], "olive oil": ["A vegetable oil made from olives."], "stir-fry": ["To cook something quickly in a small amount of hot oil whilst constantly stirring."], "sweat suit": ["A sportive outfit consisting of a sweatshirt and sweatpants."], "sweatsuit": ["A sportive outfit consisting of a sweatshirt and sweatpants."], "cabin": ["The passenger area of an airplane."], "aircraft cabin": ["The passenger area of an airplane."], "diarrhoea": ["A condition in which the sufferer has frequent and watery bowel movements."], "diarrh\u0153a": ["A condition in which the sufferer has frequent and watery bowel movements."], "insurance company": ["A company which provides a guarantee against most losses or harm to a person, property or a firm in return for premiums paid."], "boardroom": ["A room where the board of a company meets."], "board-room": ["A room where the board of a company meets."], "board room": ["A room where the board of a company meets."], "prion": ["An infectious agent composed of protein in a misfolded form."], "zombic": ["Related to zombies.", "Resembling a zombie."], "colorpuncture": ["A form of alternative medicine in which colored light is shone on acupoints."], "phlogiston": ["A hypothetical substance formerly assumed to be a necessary constituent of combustible bodies and to be given up by them in burning, according to a now obsolete theory"], "platygaeanism": ["Belief that the Earth's shape is a plane or disk."], "platyg\u00e6anism": ["Belief that the Earth's shape is a plane or disk."], "chromotherapy": ["A form of alternative medicine using of color and light to balance bodily \"energy\"."], "congenital heart defect": ["Defect, present at birth, in the structure of the heart or the great vessels near the heart."], "CHD": ["Defect, present at birth, in the structure of the heart or the great vessels near the heart."], "tea-cup": ["A cup in which tea is served."], "tea cup": ["A cup in which tea is served."], "clothing store": ["A store that sells clothes."], "Makassarese": ["A Malayo-Polynesian language spoken in the southern tip of South Sulawesi island in Indonesia."], "Makassar": ["A Malayo-Polynesian language spoken in the southern tip of South Sulawesi island in Indonesia."], "Macassar": ["A Malayo-Polynesian language spoken in the southern tip of South Sulawesi island in Indonesia."], "Makasar written in Latin": ["The Makasar language written with the Latin script."], "Makasar written in Lontara": ["The Makasar language written with the Lontara script."], "Minangkabau": ["A Malayo-Polynesian language spoken by the Minangkabau people in West Sumatra, Riau, Jambi, Bengkulu, North Sumatra, Aceh (Indonesia), Negeri Sembilan (Malaysia)"], "Nias": ["A Malayo-Polynesian language spoken on Nias Island and the Batu Islands."], "Sasak": ["A Malayo-Polynesian language spoken by the Sasak people in Lombok island, Indonesia."], "J\u00e8rriais": ["A Norman language spoken in the island of Jersey."], "Nafaanra": ["A Senufo language spoken in northwest Ghana."], "O'odham": ["An Uto-Aztecan language spoken in southern Arizona and northern Sonora."], "Quillayute": ["A Chimakuan language spoken on the western coast of the Olympic peninsula in Washington state, USA."], "Russia Buryat": ["A Mongolic language spoken in Russia along the northern border of Mongolia."], "gymnasium": ["A building that is designed for indoor sports.", "A large room designed for indoor sports."], "plaid": ["A long piece of tartan fabric, traditionally worn with a kilt.", "A pattern consisting of crossed horizontal and vertical colored bands in woven cloth."], "full plaid": ["A long piece of tartan fabric, traditionally worn with a kilt."], "N\u0268pode": ["An indigenous American language spoken in Peru."], "equestrianism": ["The art, leasure or sport consisting of riding horses."], "horseback riding": ["The art, leasure or sport consisting of riding horses."], "horse riding": ["The art, leasure or sport consisting of riding horses."], "excuse me": ["Interjection used to politely request someone's attention."], "State of Qatar": ["A country in the Middle East with capital Doha."], "Ithkuil": ["A constructed language designed to be unambiguous, concise and logical."], "Ithkuil (romanized)": ["The Ithkuil language written with romanized transcription."], "congestive heart failure": ["The inability of the heart to pump blood at an adequate rate to fill tissue metabolic requirements or the ability to do so only at an elevated filling pressure."], "HF": ["The inability of the heart to pump blood at an adequate rate to fill tissue metabolic requirements or the ability to do so only at an elevated filling pressure."], "CHF": ["The inability of the heart to pump blood at an adequate rate to fill tissue metabolic requirements or the ability to do so only at an elevated filling pressure."], "\u00b0": ["Quantitative marker, usually referred to by a number or a letter, of a scale enabling comparison but not necessarily relevant calculation, because it does not necessarily express a measure."], "desktop computer": ["A personal computer intended to be used on a desk and not moved, as opposed to a laptop."], "desktop": ["A personal computer intended to be used on a desk and not moved, as opposed to a laptop."], "graduation": ["The action of receiving a diploma for having completed a course of study."], "Meridional French": ["Regional variety of French that is influenced by Occitan."], "ovariectomy": ["The surgical removal of one or both ovaries."], "oophorectomy": ["The surgical removal of one or both ovaries."], "lift up": ["To elevate (something) to a higher position."], "ovaritis": ["Inflammation of an ovary."], "lateral ventricle": ["One of the two main cavities full of cerebrospinal fluid in the brain, on each side."], "anterior horn": ["Long part of a lateral ventricle of the brain on the forehead side."], "frontal horn": ["Long part of a lateral ventricle of the brain on the forehead side."], "MILF": ["A woman around 40 years old that is considered sexually attractive."], "British pound": ["The currency of the United Kingdom."], "voice actor": ["An actor who is heard but not seen, such as for an animation, radio, dubbed movie, etc."], "voice talent": ["An actor who is heard but not seen, such as for an animation, radio, dubbed movie, etc."], "power outlet": ["A wall-mounted power socket."], "power point": ["A wall-mounted power socket."], "kinetosis": ["A feeling of nausea or dizziness caused by being in a moving vehicle such as a ship or car."], "motion sickness": ["A feeling of nausea or dizziness caused by being in a moving vehicle such as a ship or car."], "travel sickness": ["A feeling of nausea or dizziness caused by being in a moving vehicle such as a ship or car."], "lily": ["A flowering plant of the genus Lilium."], "weather report": ["A description of the meteorological conditions for a given place and time, in the past or in the future.", "A prediction of future weather, for a specific location."], "caff\u00e8 latte": ["A drink of coffee prepared from one or two shots of espresso mixed with steamed milk and topped with foam."], "check out": ["To give back the key and pay for the room when leaving an hotel."], "business trip": ["A travel caused by business necessities where the place of employment is left temporarily."], "power down": ["To interrupt the operation of a machine by disconnecting it from its source of power."], "struma": ["Enlargement of the thyroid gland."], "beer belly": ["A protruding abdomen (usually in men) attributed to the consumption of beer."], "beer gut": ["A protruding abdomen (usually in men) attributed to the consumption of beer."], "beer muscles": ["A protruding abdomen (usually in men) attributed to the consumption of beer."], "German goitre": ["A protruding abdomen (usually in men) attributed to the consumption of beer."], "German goiter": ["A protruding abdomen (usually in men) attributed to the consumption of beer."], "goitred": ["Having a goiter."], "strumose": ["Having a goiter."], "strumous": ["Having a goiter."], "Hainan gibbon": ["A gibbon species (Nomascus hainanus) that is found only on Hainan Island, China."], "Hainan black crested gibbon": ["A gibbon species (Nomascus hainanus) that is found only on Hainan Island, China."], "work overtime": ["To work outside of one's regular working hours."], "North American bison": ["A wild heavy bison of the species Bison bison, having a broad massive horned head."], "domestic Asian water buffalo": ["A large ungulate, widely used as a domestic animal in Asia."], "measuring worm": ["The caterpillar of the geometer moth."], "geometrid": ["The caterpillar of the geometer moth."], "inchworm": ["The caterpillar of the geometer moth."], "looper": ["The caterpillar of the geometer moth."], "spanworm": ["The caterpillar of the geometer moth."], "tea cosy": ["A cover for a teapot which keeps the beverage warm."], "tea cozy": ["A cover for a teapot which keeps the beverage warm."], "lathyrism": ["A neurological disease characterised by paralysis and emaciation, caused by eating certain legumes of the genus Lathyrus."], "neurolathyrism": ["A neurological disease characterised by paralysis and emaciation, caused by eating certain legumes of the genus Lathyrus."], "self-destructive": ["Causing harm to oneself or to one's interests."], "Pangaea": ["A supercontinent that existed during the Paleozoic and Mesozoic eras, about 250 million years ago, before the present-day continents drifted apart."], "Pang\u00e6a": ["A supercontinent that existed during the Paleozoic and Mesozoic eras, about 250 million years ago, before the present-day continents drifted apart."], "Pangea": ["A supercontinent that existed during the Paleozoic and Mesozoic eras, about 250 million years ago, before the present-day continents drifted apart."], "XTC": ["A chemically modified amphetamine that has hallucinogenic as well as stimulant properties."], "X": ["A chemically modified amphetamine that has hallucinogenic as well as stimulant properties."], "MDMA": ["A chemically modified amphetamine that has hallucinogenic as well as stimulant properties."], "three thousand": ["The cardinal number between two thousand nine hundred and ninety nine and three thousand and one."], "carving knife": ["A large knife used to slice thin cuts of meat."], "explantation": ["The removal of an implant."], "Old West Norse": ["A dialect of Old Norse that was spoken primarily in Norway and Iceland."], "Old East Norse": ["A dialect of Old Norse that was spoken primarily in Denmark and Sweden."], "Western Old Norse": ["A dialect of Old Norse that was spoken primarily in Norway and Iceland."], "Eastern Old Norse": ["A dialect of Old Norse that was spoken primarily in Denmark and Sweden."], "train track": ["A pair of parallel rails providing a runway for the wheels of, e.g., a train."], "railroad track": ["A pair of parallel rails providing a runway for the wheels of, e.g., a train."], "fare": ["Money paid for a transport ticket."], "pumpkin seed oil": ["Oil made of the roasted pumpkin seeds of the Styrian oil pumpkin."], "confetti": ["Small pieces of colored paper generally thrown about at festive occasions."], "staple": ["A metal fastener consisting of a U-shaped wire with two legs that are bent to hold several sheets of paper together.", "To secure or fasten with a staple."], "oversee": ["To be in charge of, direct and control a work done by others."], "beaver hat": ["Man's silk hat with high cylindrical crown."], "cylinder hat": ["Man's silk hat with high cylindrical crown."], "chimney pot hat": ["Man's silk hat with high cylindrical crown."], "stove pipe hat": ["Man's silk hat with high cylindrical crown."], "one-way street": ["A street where the traffic is only allowed to move in one direction."], "muggy": ["(About the weather) Hot and humid."], "newt": ["An aquatic amphibian of the family Salamandridae having a lizard-like body with four equal sized limbs and a tail."], "mentally ill": ["Showing symptoms of mental illness."], "mentally disabled": ["Having cognitive deficits and low intelligence."], "mentally challenged": ["Having cognitive deficits and low intelligence."], "mentally handicapped": ["Having cognitive deficits and low intelligence."], "mentally retarded": ["Having cognitive deficits and low intelligence."], "retarded": ["Having cognitive deficits and low intelligence."], "quack doctor": ["Someone who practices medicine without proper qualifications and/or promotes ineffective medical treatments."], "quacksalver": ["Someone who practices medicine without proper qualifications and/or promotes ineffective medical treatments."], "pick-pocket": ["Thief who steals money and objects from clothes or pockets."], "pickpocketing": ["The stealing of money and objects from peoples' clothes or pockets."], "first class": ["Relating to the most luxurious class of accommodation on a public transport.", "The most luxurious class of accommodation on a public transport."], "self-fulfilling prophecy": ["A prediction that directly or indirectly causes itself to become true."], "Pomeranian": ["A Lechitic language, subgroup of the Slavic languages, spoken in some communes of Pomeranian Voivodeship, Poland."], "middle finger": ["The middle and the longest of the fingers."], "tall finger": ["The middle and the longest of the fingers."], "fuck finger": ["The middle and the longest of the fingers."], "tall man": ["The middle and the longest of the fingers."], "T-shirt": ["A lightweight shirt without buttons, with short sleeves and no collar."], "Common Crane": ["A bird of the family Gruidae, grey with a white streak along the neck."], "Eurasian Crane": ["A bird of the family Gruidae, grey with a white streak along the neck."], "mouthwash": ["A liquid used to rinse one's mouth."], "mouth wash": ["A liquid used to rinse one's mouth."], "gargling fluid": ["A liquid used to rinse one's mouth."], "mouth rinse": ["A liquid used to rinse one's mouth."], "head chef": ["A cook who manages other cooks in an establishment such as a restaurant."], "teethe": ["To grow teeth."], "deciduous teeth": ["The first set of teeth in the growth development of humans and many other mammals."], "computer keyboard": ["An electromechanical device with keys affixed to a base used to enter information and interact with a computer."], "reborner teeth": ["The first set of teeth in the growth development of humans and many other mammals."], "baby teeth": ["The first set of teeth in the growth development of humans and many other mammals."], "temporary teeth": ["The first set of teeth in the growth development of humans and many other mammals."], "primary teeth": ["The first set of teeth in the growth development of humans and many other mammals."], "milk teeth": ["The first set of teeth in the growth development of humans and many other mammals."], "milk tooth": ["A tooth of the first set of teeth."], "milk-tooth": ["A tooth of the first set of teeth."], "deciduous tooth": ["A tooth of the first set of teeth."], "baby tooth": ["A tooth of the first set of teeth."], "temporary tooth": ["A tooth of the first set of teeth."], "primary tooth": ["A tooth of the first set of teeth."], "target audience": ["The group of people that something, for example an advertising campaign, is primarily aimed at."], "lounge room": ["A room in a private house used for general social and leisure activities."], "front room": ["A room in a private house used for general social and leisure activities."], "lounge": ["A room in a private house used for general social and leisure activities."], "North Azerbaijani (Latin)": ["The North Azerbaijani language written with the Latin script."], "North Azerbaijani (Cyrillic)": ["The North Azerbaijani language written with the Cyrillic script."], "file folder": ["An flat organizer made of cardboard or plastic for storing paper documents together."], "chanticleer": ["A male chicken (Gallus gallus domesticus), a domestic bird."], "short-tempered": ["(For a person) Who is easily angered."], "hotheaded": ["(For a person) Who is easily angered."], "quick-tempered": ["(For a person) Who is easily angered."], "vaginal lubrication": ["Liquid secreted by the Bartholin's glands at the opening of the vagina when a woman is sexually aroused."], "chimp": ["A great ape of the genus Pan, native to Africa."], "shelled mollusc": ["Mollusc that has a shell."], "seafood": ["Edible animals from the sea."], "cottage cheese": ["A cheese curd product with a mild flavor which is drained but not pressed and therefore still contains some whey."], "curd cheese": ["A cheese curd product with a mild flavor which is drained but not pressed and therefore still contains some whey."], "slobber": ["To have saliva come out from the mouth."], "drivel": ["To have saliva come out from the mouth."], "slaver": ["To have saliva come out from the mouth.", "A ship used to transport slaves."], "slave ship": ["A ship used to transport slaves."], "Scorpius": ["One of the twelve constellations of the zodiac."], "Malavi": ["A Rajasthani language with ten million speakers spoken in the Malva region of India."], "Mallow": ["A Rajasthani language with ten million speakers spoken in the Malva region of India."], "Malwada": ["A Rajasthani language with ten million speakers spoken in the Malva region of India."], "Malwi": ["A Rajasthani language with ten million speakers spoken in the Malva region of India."], "take off": ["To take something away.", "(For an aircraft) To leave the ground and start flying.", "To take (an article of clothing) away from one's body."], "culinary fruit": ["A botanical fruit that can be eaten raw used as food."], "homemaker": ["A person in charge of the management of a home, and who is not employed outside the home."], "syndactyly": ["A condition wherein two or more digits are fused together."], "Mahorais": ["A person from Mayotte."], "Mahoran": ["Of, from, or relating to Mayotte."], "Classical Nahuatl": ["The Nahuatl language spoken in the Valley of Mexico at the time of the 16th-century Spanish conquest of Mexico."], "unpunished": ["Not punished."], "eyeball": ["The part of the eye having a spherical shape.", "To look at."], "Tarantino": ["A dialect of Sicilian spoken mostly in the town of Taranto of the Apulia region, Italia."], "uncut": ["Not having had the foreskin of the penis cut out."], "circumcised": ["Having had the foreskin of the penis excised."], "circumcise": ["To remove the prepuce from a penis."], "circumcize": ["To remove the prepuce from a penis."], "female nurse": ["A female person who takes care of patients in an hospital, a nursing home, etc."], "economy class": ["The lowest and cheapest class of accommodation on a public transport."], "coach class": ["The lowest and cheapest class of accommodation on a public transport."], "steerage": ["The lowest and cheapest class of accommodation on a public transport."], "standard class": ["The lowest and cheapest class of accommodation on a public transport."], "transclusion": ["The inclusion of part of hypertext document in another one by means of reference rather than copying."], "Arabian Gulf": ["A long, narrow sea between Africa and the Arabian peninsula."], "Gulf of Arabia": ["A long, narrow sea between Africa and the Arabian peninsula."], "all day": ["For the period of an entire day."], "all day long": ["For the period of an entire day."], "timbre": ["The quality of a sound independent of its pitch and volume."], "sour cream": ["Cream which has been treated with a benign bacterium to turn it slightly sour."], "high-alcohol": ["Containing a lot of alcohol."], "sailing vessel": ["A vessel that is powered by the wind."], "gargle": ["To wash one's throat or mouth by holding a liquid in the throat while expelling air out from the lungs.", "To make a sound by holding a liquid in the throat while expelling air out from the lungs to create bubbles."], "flatulate": ["To emit digestive gases through the anus."], "freezing rain": ["Rain which freezes upon contact with the ground."], "Saraiki": ["An Indo-Aryan language spoken in Pakistan."], "Surzhyk": ["A dialect of the Ukrainian language."], "Cascadia": ["An area that includes part of the west coast of United States and Canada, including southeast Alaska, all of British Columbia, Washington, Oregon, Idaho, western Montana and northern California and Nevada."], "hard water": ["The amount of calcium and magnesium salts dissolved in water."], "PVC": ["Polymer of vinyl chloride; tasteless, odourless; insoluble in most organic solvents; a member of the family of vinyl resins."], "cubage": ["The amount of threedimensional space occupied by an object."], "volume unit": ["A unit of measurement of volume."], "VU": ["A unit of measurement of volume."], "cubage unit": ["A unit of measurement of volume."], "blue mahoe": ["A flowering tree in the mallow family native to the islands of Cuba and Jamaica."], "mahoe": ["A flowering tree in the mallow family native to the islands of Cuba and Jamaica."], "Cuban bast": ["A flowering tree in the mallow family native to the islands of Cuba and Jamaica."], "mahagua": ["A flowering tree in the mallow family native to the islands of Cuba and Jamaica."], "majagua": ["A flowering tree in the mallow family native to the islands of Cuba and Jamaica."], "alastrim": ["The milder strain of the variola virus that causes smallpox."], "variola minor": ["The milder strain of the variola virus that causes smallpox."], "cottonpox": ["The milder strain of the variola virus that causes smallpox."], "milkpox": ["The milder strain of the variola virus that causes smallpox."], "whitepox": ["The milder strain of the variola virus that causes smallpox."], "Cuban itch": ["The milder strain of the variola virus that causes smallpox."], "white pox": ["The milder strain of the variola virus that causes smallpox."], "kaffir pox": ["The milder strain of the variola virus that causes smallpox."], "West Indian pox": ["The milder strain of the variola virus that causes smallpox."], "milk pox": ["The milder strain of the variola virus that causes smallpox."], "pseudovariola": ["The milder strain of the variola virus that causes smallpox."], "olm": ["A cave-dwelling amphibian, of the genus Proteus."], "proteus": ["A cave-dwelling amphibian, of the genus Proteus."], "tin ear": ["Insensitivity to and inability to appreciate the elements of performed music or the rhythm, elegance, or nuances of language."], "tone deaf": ["Unable to clearly distinguish the difference in pitch between different notes."], "Dibatchua": ["A language spoken in the Tshopo District of the Democratic Republic of the Congo"], "Kango Pygmy": ["A language spoken in the Tshopo District of the Democratic Republic of the Congo"], "Kibatchua": ["A language spoken in the Tshopo District of the Democratic Republic of the Congo"], "Kikango": ["A language spoken in the Tshopo District of the Democratic Republic of the Congo"], "Likango": ["A language spoken in the Bas-U\u00e9l\u00e9 District of Democratic Republic of the Congo", "A language spoken in the Tshopo District of the Democratic Republic of the Congo"], "kangaroo": ["A marsupial from the family Macropodidae having powerful hind legs and large feet for leaping."], "macropod": ["A marsupial from the family Macropodidae having powerful hind legs and large feet for leaping."], "cooking pot": ["A generic kitchen utensil used for cooking food by boiling, frying or other methods."], "help text": ["An explanation of software functionality for end users."], "wallaby": ["Any of several species of marsupial; usually smaller and stockier than kangaroos."], "genet": ["Any of several Old World nocturnal, carnivorous mammals, of the genus Genetta in the family Viverridae, most of which have a spotted coat and a long, ringed tail.", "A group of genetically identical individuals (plants, fungi, bacteria etc.) that have grown in a given location, all originating from asexual reproduction of a single ancestor."], "from the word go": ["From the very beginning."], "from the outset": ["From the very beginning."], "parthenogenesis": ["A form of asexual reproduction where growth and development of embryos occur without fertilization."], "crybaby": ["A baby that cries excessively.", "Someone who cries easily, often about trivial matters."], "kitchen cabinet": ["A built-in cabinet for storage in a kitchen."], "entr\u00e9e": ["A dish served before the main course."], "shah": ["ruler of certain Southwest Asian and Central Asian countries, especially Persia"], "glucose meter": ["A device for measuring the concentration of glucose in the blood."], "glucometer": ["A device for measuring the concentration of glucose in the blood."], "nestling": ["A young bird of any species, nestling."], "undated": ["Not marked with a date."], "dateless": ["Not marked with a date."], "ice wine": ["A sweet wine made from grapes that are harvested after the first frost."], "icewine": ["A sweet wine made from grapes that are harvested after the first frost."], "dessert wine": ["A sweet wine typically served with dessert."], "female leader": ["A woman who leads, rules, or is in charge."], "bog standard": ["the basic unrefined article"], "plain vanilla": ["the basic unrefined article"], "seagull": ["A seabird of the genus Larus or of the family Laridae."], "gymnastics": ["A sport involving performance of exercises requiring physical strength, flexibility, agility, coordination, and balance."], "five thousand": ["The cardinal number between four thousand nine hundred and ninety nine and five thousand and one."], "ottomy": ["The structure that provides support to an organism, internal and made up of bones and cartilage in vertebrates, external in some other animals."], "armilla": ["Astronomical device that is used to measure celestial coordinates and to display the motion of celestial bodies."], "armil": ["Astronomical device that is used to measure celestial coordinates and to display the motion of celestial bodies."], "physiography": ["The study of the spatial and temporal characteristics and relationships of all phenomena within the Earth's physical environment."], "geosystems": ["The study of the spatial and temporal characteristics and relationships of all phenomena within the Earth's physical environment."], "commute": ["To exchange something old or something that has become unusable for something else of the same kind.", "To travel between one's home and workplace.", "To exchange a penalty for a less severe one."], "king trumpet mushroom": ["Edible mushroom of the genus Pleurotus with firm, white flesh."], "French horn mushroom": ["Edible mushroom of the genus Pleurotus with firm, white flesh."], "king oyster mushroom": ["Edible mushroom of the genus Pleurotus with firm, white flesh."], "boletus of the steppes": ["Edible mushroom of the genus Pleurotus with firm, white flesh."], "smoke like a chimney": ["To smoke tobacco very frequently."], "pedestrian crossing": ["A pedestrian crossing featuring broad white stripes painted parallel to the street."], "crosswalk": ["A pedestrian crossing featuring broad white stripes painted parallel to the street."], "arachnology": ["The scientific study of spiders and related animals such as scorpions, pseudoscorpions, harvestmen, collectively called arachnids."], "garments": ["Clothes considered as a group."], "inkwell": ["A small container for ink."], "inkpot": ["A small container for ink."], "power up": ["To cause to operate by flipping a switch."], "breastpin": ["A piece of jewellery that is pinned to a shirt or jacket."], "itinerary": ["The intended route of a voyage."], "Slovak Republic": ["A country in Central Europe. Borders with Poland, Czechia, Austria, Hungary and Ukraine."], "jailbait": ["A sexually alluring underage girl."], "nymphette": ["A sexually alluring underage girl."], "ice over": ["To become covered by a sheet of ice."], "sportsperson": ["A person who engages in sports."], "salesman": ["A man whose job it is to sell things."], "check in": ["To carry out the necessary formalities when arriving at an hotel, an airport, etc.", "Add some changes to a repository of a revision control system."], "chopping board": ["A board on which food is cut."], "cutting board": ["A board on which food is cut."], "agave nectar": ["A light brown liquid sweetener produced from agave plants."], "agave syrup": ["A light brown liquid sweetener produced from agave plants."], "school year": ["The period of time each year when the school is open and people are studying."], "autotomy": ["The act whereby an animal voluntarily loses a body part."], "self amputation": ["The act whereby an animal voluntarily loses a body part."], "October Revolution": ["The violent overthrow of the government by Communist Russian Bolsheviks in the autumn of 1917."], "Great October Socialist Revolution": ["The violent overthrow of the government by Communist Russian Bolsheviks in the autumn of 1917."], "Red October": ["The violent overthrow of the government by Communist Russian Bolsheviks in the autumn of 1917."], "October Uprising": ["The violent overthrow of the government by Communist Russian Bolsheviks in the autumn of 1917."], "Bolshevik Revolution": ["The violent overthrow of the government by Communist Russian Bolsheviks in the autumn of 1917."], "groundhog": ["A red-brown marmot native to North America."], "whistlepig": ["A red-brown marmot native to North America."], "woodchuck": ["A red-brown marmot native to North America."], "Groundhog Day": ["A holiday celebrated on February 2 in the United States and Canada in which a groundhog predicts whether spring will begin or winter will continue."], "manuscript paper": ["A paper preprinted with staves for writing musical notation."], "staff paper": ["A paper preprinted with staves for writing musical notation."], "music paper": ["A paper preprinted with staves for writing musical notation."], "lemon balm": ["A perennial herb native to southern Europe and the Mediterranean region that is used in herbal teas and as flavouring."], "fan fiction": ["A story written by a fan that continues or expands on a work of fiction, usually without the permission of the original author."], "fanfic": ["A story written by a fan that continues or expands on a work of fiction, usually without the permission of the original author."], "pear tree": ["A tree producing the pear fruit."], "mariology": ["The theological study of Mary, the mother of Jesus."], "Marian": ["Of, or relating to the cult of the Virgin Mary."], "leper house": ["A place where leprous people are isolated from the rest of the population."], "Candlemas": ["A Christian festival that takes place 40 days after Christmas and commemorates the purification of the Virgin Mary and the presentation of Jesus in the Temple."], "Presentation of Jesus at the Temple": ["A Christian festival that takes place 40 days after Christmas and commemorates the purification of the Virgin Mary and the presentation of Jesus in the Temple."], "Ainu (Latin)": ["The Ainu language written with the Latin script."], "Ainu (Katakana)": ["The Ainu language written with the Katakana syllabary."], "carotid artery": ["Either of the two major arteries, one on each side of the neck, that carry blood to the head."], "neckbeard": ["A hairstyle where facial hair is shaven except for the area between the chin and the neck."], "mie goreng": ["Indonesian dish made of fried noodles, vegetables and meat."], "checkered": ["Having a pattern similar to a chessboard."], "echinococcosis": ["A parasitic disease caused by a tapeworm that affects humans and some mammals."], "hydatid disease": ["A parasitic disease caused by a tapeworm that affects humans and some mammals."], "echinococcal disease": ["A parasitic disease caused by a tapeworm that affects humans and some mammals."], "telephone number": ["A sequence of digits used to reach a particular person on a telephone network."], "phone number": ["A sequence of digits used to reach a particular person on a telephone network."], "junkie": ["A drugs addict, someone using drugs.", "A person who is so ardently devoted to something that it resembles an addiction."], "nuclear war": ["A war fought using nuclear weapons."], "pedogenesis": ["The combination of natural processes by which soils are formed."], "irritating": ["Causing vexation, irritation or annoyance."], "pesky": ["Causing vexation, irritation or annoyance."], "troublesome": ["Causing vexation, irritation or annoyance."], "vexatious": ["Causing vexation, irritation or annoyance."], "nightstand": ["A small table located next to the bed."], "night stand": ["A small table located next to the bed."], "night-stand": ["A small table located next to the bed."], "night table": ["A small table located next to the bed."], "fire salamander": ["Amphibian species of the family true salamanders (Salamandridae). It is black with yellow spots or stripes."], "supervisor": ["A person who oversees and directs the work of others."], "line manager": ["A person who oversees and directs the work of others."], "laxative": ["A substance which accelerates defecation."], "ventilator": ["A device that provides air circulation in a closed environment by rotating an helix, in order to cool down someone or something."], "color": ["An attribute of things that results from the light they reflect, transmit, or emit in so far as this light causes a visual sensation that depends on its wavelengths.", "To add color to."], "dieter": ["Person who is on a diet."], "chairperson": ["The presiding officer of a meeting, organization, committee, or other deliberative body."], "presider": ["The presiding officer of a meeting, organization, committee, or other deliberative body."], "eyesight": ["The sense or ability of sight."], "sight": ["The sense or ability of sight."], "zoo": ["Area in which animals, especially wild animals, are kept so that people can go and look at them, or study them."], "bycatch": ["Fish that is caught unintentionally while intending to catch other fish and that is often discarded back into the sea."], "round robin test": ["Tests performed at the same time in different laboratories to validate the quality of the results."], "joint custody": ["Arrangement in which both parents have the custody of a child."], "footrest": ["A piece of furniture or support used to support one's feet."], "footstool": ["A piece of furniture or support used to support one's feet."], "foot stool": ["A piece of furniture or support used to support one's feet."], "foot rest": ["A piece of furniture or support used to support one's feet."], "Skolt Sami": ["An Uralic, Sami language spoken by approximately 400 speakers in Finland, mainly in Sevettij\u00e4rvi."], "Japanese yen": ["The official currency of Japan."], "Dalmatic": ["An extinct Romance language formerly spoken in the Dalmatia region of Croatia, and as far south as Kotor in Montenegro."], "rest": ["To stay the same; to remain in a certain state.", "To cease working, moving or thinking for some time in order to relieve fatigue.", "Relief from work or other activity or responsibility."], "underline": ["To draw a line underneath something, especially to add emphasis."], "underscore": ["To draw a line underneath something, especially to add emphasis."], "Tausug": ["A Malayo-Polynesian language spoken in the province of Sulu in the Philippines, in Malaysia, and in Indonesia by the Taus\u016bg people."], "Taus\u016bg": ["A Malayo-Polynesian language spoken in the province of Sulu in the Philippines, in Malaysia, and in Indonesia by the Taus\u016bg people."], "paper clip": ["A small, folded, wire or plastic device used to hold sheets of paper together."], "biceps brachii": ["A flexor muscle located on the upper arm."], "biceps": ["A flexor muscle located on the upper arm."], "Lingwa de Planeta": ["A constructed language based on the most widely spoken languages of the world, including English, German, French, Spanish, Portuguese, Chinese, Russian, Hindi, Arabic, and Persian."], "Lidepla": ["A constructed language based on the most widely spoken languages of the world, including English, German, French, Spanish, Portuguese, Chinese, Russian, Hindi, Arabic, and Persian."], "forswearing": ["The deliberate giving of false or misleading testimony under oath."], "xenobiotic": ["A substance which would not normally be found in a given environment."], "autonomous verb": ["A verb that can be used without a direct object."], "fire escape": ["A door, ladder, stairs or passage used to evacuate a building in case of fire.", "Stairs designed to be used when a place must be evacuated quickly, such as in case of fire."], "surfactant": ["A substance that, when used in small quantities, modifies the surface properties of liquids or solids."], "river blindness": ["Infection with the filaria Onchocerca volvulus; results in skin tumours, papular dermatitis, and ocular complications."], "Robles' disease": ["Infection with the filaria Onchocerca volvulus; results in skin tumours, papular dermatitis, and ocular complications."], "phytocoenosis": ["Any group of plants belonging to a number of different species that co-occur in the same habitat or area and interact through trophic and spatial relationships; typically characterized by reference to one or more dominant species."], "phytocenosis": ["Any group of plants belonging to a number of different species that co-occur in the same habitat or area and interact through trophic and spatial relationships; typically characterized by reference to one or more dominant species."], "exposure-response relationship": ["The relation between the quantity of a given substance and a measurable or observable effect."], "dose-response relationship": ["The relation between the quantity of a given substance and a measurable or observable effect."], "medical waste": ["Solid waste, both biological and non-biological, produced by hospitals and discarded and not intended for further use."], "clinical waste": ["Solid waste, both biological and non-biological, produced by hospitals and discarded and not intended for further use."], "floor area ratio": ["The ratio of the total floor area of buildings on a certain location to the size of the land of that location."], "floor space index": ["The ratio of the total floor area of buildings on a certain location to the size of the land of that location."], "floor space ratio": ["The ratio of the total floor area of buildings on a certain location to the size of the land of that location."], "FAR": ["The ratio of the total floor area of buildings on a certain location to the size of the land of that location."], "FSI": ["The ratio of the total floor area of buildings on a certain location to the size of the land of that location."], "FSR": ["The ratio of the total floor area of buildings on a certain location to the size of the land of that location."], "site coverage ratio": ["The ratio of the ground surface occupied by a building on a land to the total surface of the land."], "Sahrawi": ["From or relating to Western Sahara.", "A person from Western Sahara."], "whose": ["Of whom, belonging to whom."], "microsleep": ["A brief period of sleep, usually a few seconds, that is the result of sleep deprivation or a medical condition."], "dump": ["A site where garbage is collected and buried."], "garbage dump": ["A site where garbage is collected and buried."], "rubbish dump": ["A site where garbage is collected and buried."], "cafe": ["A business that sells various non-alcoholic drinks, and usually snacks and simple meals (such as breakfasts and lunches) with facilities to consume them."], "overprotective": ["Excessively protective."], "Balinese (Latin)": ["The Balinese language written with the Latin script."], "subordinate": ["A person who is submissive to or controlled by a person of higher class, rank or position."], "tisane": ["Water in which dried plant parts, other than tea leaves, are boiled or steeped."], "ptisan": ["Water in which dried plant parts, other than tea leaves, are boiled or steeped."], "herb tea": ["Water in which dried plant parts, other than tea leaves, are boiled or steeped."], "sightsee": ["To visit landscapes or cities for the pleasure."], "go sightseeing": ["To visit landscapes or cities for the pleasure."], "tissue paper": ["A sheet of paper that absorbs water, used for example to weep wet surfaces."], "absorbent paper": ["A sheet of paper that absorbs water, used for example to weep wet surfaces."], "overflow": ["Any device or structure that conducts excess water or sewage from a conduit or container."], "bulimia": ["An eating disorder characterized by extreme overeating followed by self-induced vomiting."], "bulimia nervosa": ["An eating disorder characterized by extreme overeating followed by self-induced vomiting."], "bulimic": ["Suffering from bulimia nervosa.", "Of, or relating to bulimia nervosa.", "A person suffering from bulimia."], "tropical rainforest": ["A type of forest that occurs roughly within the latitudes 28 degrees north or south of the equator and is characterized by high average temperatures and a significant amount of rainfall."], "Quran": ["The central religious text of Islam."], "Koran": ["The central religious text of Islam."], "Alcoran": ["The central religious text of Islam."], "qur'anic": ["Of, or relating to the Qur'an."], "quranic": ["Of, or relating to the Qur'an."], "verbal adjective": ["A word derived from a verb, that describes a noun."], "verbal adverb": ["A word derived from verb that modifies a verb, by showing a circumstance."], "tocher": ["An amount paid by the parents of a bride to the groom and or his family."], "green belt": ["An area of land around an urban area that is protected from large-scale housing."], "oil drilling": ["Boring a hole for extracting oil."], "perfectionism": ["The ambition to achieve perfection and not accepting anything less."], "perfectionist": ["Someone who strives for perfection and is not willing to accept anything less."], "perfectionistic": ["Striving for perfection."], "lethargic": ["Lacking energy and motivation."], "wall clock": ["A clock mounted on a wall."], "leiomyosarcoma": ["A rare malignant cancer of smooth muscle."], "boxer shorts": ["A type of undergarment worn by men that resembles short pants."], "loose boxers": ["A type of undergarment worn by men that resembles short pants."], "boxers": ["A type of undergarment worn by men that resembles short pants."], "loser": ["A person who did not win."], "shoulder blade": ["A large flat bone located at the back of each shoulder."], "scapula": ["A large flat bone located at the back of each shoulder."], "shoulder bone": ["A large flat bone located at the back of each shoulder."], "medical history": ["The case history of a medical patient as recalled or known by the patient."], "medical record": ["The case history of a medical patient as recalled or known by the patient."], "co-wife": ["In a polygamous marriage, another wife of a woman's husband."], "foster-child": ["A child raised by people who are not its biological or adoptive parents.", "A child raised by his or her wet-nurse and her husband."], "polybromobiphenyl": ["A chemical substance consisting of several bromine atoms attached to biphenyl."], "brominated biphenyl": ["A chemical substance consisting of several bromine atoms attached to biphenyl."], "PBB": ["A chemical substance consisting of several bromine atoms attached to biphenyl."], "likeable": ["Deserving to be loved."], "garden gnome": ["A small statue of a gnome used as a garden ornament."], "blogosphere": ["The set of all blogs and their interconnections."], "cagot": ["A member of a persecuted minority in south-western France."], "Mother": ["Mary, the mother of Jesus (usually as \"Mother of God\")\u00b7"], "proud": ["Feeling greatly pleased, or satisfied by something or someone that is highly honorable, creditable to oneself or a reason for pride.", "Having or showing self-respect.", "Generating a sense of pride; being a cause for pride.", "Having too high an opinion of oneself; showing superiority."], "poker": ["A card game involving betting and individualistic play whereby the winner is determined by comparing the ranks and combinations of his cards with that of the other players."], "senior citizen": ["An older person (usually considered to be above the age of 60)."], "golden silk orb-weaver": ["An araneomorph spider of the genus Nephila whose webs are large and golden-colored."], "golden orb-weaver": ["An araneomorph spider of the genus Nephila whose webs are large and golden-colored."], "giant wood spider": ["An araneomorph spider of the genus Nephila whose webs are large and golden-colored."], "banana spider": ["An araneomorph spider of the genus Nephila whose webs are large and golden-colored."], "sweet pepper": ["A mild fruit of the Capsicum."], "capsicum": ["A mild fruit of the Capsicum."], "Burmese python": ["A dark-coloured python measuring on average 3.7 metres long and native to tropic and subtropic areas of Southern- and Southeast Asia."], "megafauna": ["The large animals of a given region or time, considered as a group."], "megafaunal": ["Of or relating to the megafauna."], "microcurie": ["A unit of radioactivity equal to one millionth of a curie."], "ikaite": ["A mineral mostly composed of hexahydrate of calcium carbonate (CaCO3\u00b76H2O)."], "hypersonic": ["(Of a speed) Equal to or greater than five times the speed of sound.", "(Of a vehicle) Capable of moving at a speed equal to or greater than five times the speed of sound."], "arboricolous": ["Living on or in trees."], "multinational enterprise": ["A business company operating in multiple countries."], "international corporation": ["A business company operating in multiple countries."], "coking": ["The process by which the heavy residuals from oil distillation are transformed into light distillates and petroleum coke."], "biopoiesis": ["The study of how life on Earth emerged from inanimate organic and inorganic molecules."], "abiogeny": ["The study of how life on Earth emerged from inanimate organic and inorganic molecules."], "omnivore": ["An animal which is able to consume both plants and animals."], "herbivorous": ["Feeding only on plants."], "herbivorousness": ["The state or quality of being herbivorous."], "omnivorousness": ["The state or quality of being omnivorous."], "antineutrino": ["An antiparticle of a neutrino."], "antineutron": ["An antiparticle of a neutron."], "neonicotinoid": ["An insecticide which acts on the central nervous system of insects by binding with the postsynaptic nicotinic acetylcholine receptors."], "haughty": ["Having too high an opinion of oneself; showing superiority."], "projector": ["An optical device that projects an image onto a surface."], "image projector": ["An optical device that projects an image onto a surface."], "Peronism": ["An Argentine political movement based on the thought of former President Juan Per\u00f3n."], "Justicialism": ["An Argentine political movement based on the thought of former President Juan Per\u00f3n."], "pornography": ["The explicit portrayal of sexual activity, especially for the purpose of sexual arousal."], "porn": ["The explicit portrayal of sexual activity, especially for the purpose of sexual arousal."], "pornographic": ["Relating to, or containing pornography."], "porny": ["Relating to, or containing pornography."], "Kalashnikov": ["A selective-fire, gas-operated 7.62\u00d739mm assault rifle."], "irredentism": ["A political doctrine advocating annexation of foreign territories on the grounds of history or common ethnicity."], "irredentist": ["An adherent of irredentism.", "Of or relating to irredentism."], "irredenta": ["A foreign region that could be potentially annexed according to irredentism."], "emperor penguin": ["A penguin of the species Aptenodytes forsteri living in Antarctica and measuring about 120 cm."], "king penguin": ["A large penguin, Aptenodytes patagonicus, that lives on the coast of Antarctica and nearby islands"], "Adelie penguin": ["A species of penguin, scientific name Pygoscelis adeliae, with distinctive white rings surrounding the eyes."], "Ad\u00e9lie penguin": ["A species of penguin, scientific name Pygoscelis adeliae, with distinctive white rings surrounding the eyes."], "one-way": ["Allowing the traffic to move in only one direction."], "uni-directional": ["Allowing the traffic to move in only one direction."], "microfinance": ["The supply of financial services to micro-entrepreneurs and small businesses."], "betel": ["A vine of the species \"Piper betle\" whose leaves are chewed for its medicinal properties."], "betel plant": ["A vine of the species \"Piper betle\" whose leaves are chewed for its medicinal properties."], "rickshaw": ["A vehicle consisting of a two-wheeled cart with one or two seats that is pulled by a human runner."], "pulled rickshaw": ["A vehicle consisting of a two-wheeled cart with one or two seats that is pulled by a human runner."], "ricksha": ["A vehicle consisting of a two-wheeled cart with one or two seats that is pulled by a human runner."], "hemiplegic": ["Relating to, or afflicted with hemiplegia.", "A person afflicted with hemiplegia."], "antislavery": ["Person who is opposed to slavery.", "Opposition to slavery."], "anti-slavery": ["Person who is opposed to slavery."], "nanomedicine": ["The medical application of nanotechnology."], "nine thousand": ["The cardinal number between eight thousand nine hundred and ninety nine and nine thousand and one."], "Kutaisi": ["Second largest city of Georgia and capital of the region of Imereti."], "Santali (Latin)": ["The Santali language written with the Latin Script."], "ripe": ["(Of fruits, seeds, etc.) Having reached the stage of development suitable for harvesting and eating."], "ripen": ["(For a fruit, seed, etc.) To become ripe."], "profanation": ["Act not respecting the sacred character of a place, a time, an object, a person etc."], "in order to": ["As a means of achieving the specified aim."], "tumor": ["A palpable or visible abnormal globular structure."], "take a shit": ["To excrete feces from one's body through the anus."], "take a crap": ["To excrete feces from one's body through the anus."], "seduce": ["To induce (a person) to consent to sexual relation.", "To lure or entice away from duty, principles, or proper conduct."], "ba\u015ftan \u00e7\u0131karmak": ["To induce (a person) to consent to sexual relation."], "realise": ["To make real or concrete; give reality or substance to.", "To earn, to gain (money)."], "pull in": ["To earn, to gain (money)."], "bring in": ["To earn, to gain (money)."], "rife": ["Generally accepted, used or practiced at the moment."], "up-to-date": ["Generally accepted, used or practiced at the moment."], "now that": ["As a consequence of."], "in as much as": ["As a consequence of."], "so many": ["In such a high number or quantity."], "Nebuchadnezzar II": ["King of the Neo-Babylonian empire born circa 634 BC, having reigned from c. 605 BC up to his death in 562 BC, and well known to have destroyed the temple of Jerusalem and deported many Jewish notables to Babylon."], "Nebuchadnezzar": ["King of the Neo-Babylonian empire born circa 634 BC, having reigned from c. 605 BC up to his death in 562 BC, and well known to have destroyed the temple of Jerusalem and deported many Jewish notables to Babylon."], "wombat": ["An Australian marsupial of the Vombatidae family having short legs and a short tail and measuring approximately 1 metre in length."], "\u00d8\u200e": ["[The plural indefinite article.]", "[The plural indefinite article, used in a negative construction.]", "[The plural indefinite article, with an adjective that precedes a noun.]", "[The plural partitive article, with an adjective that precedes a noun.]", "An unknown quantity of an uncountable substance."], "graviception": ["The perception of the force of gravity."], "collodictyon": ["A single-celled microscopic organism having four flagella and measuring between 30 and 50 microns."], "undershirt": ["A cloth worn next to the skin under a shirt, having no or very short sleeves."], "cell phone": ["A portable electronic device used for calling people."], "emergency exit": ["An exit used only when a place must be evacuated quickly, such as in case of fire."], "Dione": ["A Greek goddess who was the mother of Aphrodite.", "The fourth largest moon of Saturn."], "wall socket": ["A wall-mounted power socket."], "thrive": ["To grow or develop well and vigorously."], "worth": ["Any admirable quality or attribute.", "Proper to be exchanged for (something mentioned).", "Worthy of being treated in a particular way.", "Making a fair equivalent of, repaying or compensating.", "The amount (of money or goods or services) that is considered to be a fair equivalent for something else"], "to be worth": ["To have (the indicated) value."], "notify": ["To inform (somebody) of something."], "yourself": ["[You; used emphatically, especially to indicate exclusiveness of the referent's participation in the predicate, i.e., that no one else is involved]", "One's own self.", "Your usual, normal, or true self."], "totipotency": ["The ability of a cell to divide and produce all the differentiated cells in an organism."], "contact paper": ["Big sheet of plastic, decorative or just clean on one side, and adhesive on the other."], "ton": ["A unit of measurement for weight or mass equal to 1000 kilograms."], "totipotent": ["(For a cell) Having the ability to divide and produce all the differentiated cells in an organism."], "ptychography": ["A technique used in microscopy where the original image is reconstructed from the observed diffration patterns of electrons, X-rays or visible light."], "Wakon\u00e1": ["An extinct unclassified language of eastern Brazil."], "put forward": ["To maintain or defend opinions, claims, rights, etc.", "To propose (arguments, ideas, etc.) for consideration.", "To put before."], "British thermal unit": ["A unit of energy equal to about 1055 joules."], "BTU": ["A unit of energy equal to about 1055 joules."], "Btu": ["A unit of energy equal to about 1055 joules."], "quarantine": ["The isolation of people who are susceptible to be contagious to prevent an illness from spreading."], "seven thousand": ["The cardinal number between six thousand nine hundred and ninety nine and seven thousand and one."], "mince": ["(Cooking) To cut into very small pieces."], "osmotic": ["Of or relating to osmosis."], "transit": ["The passage of a celestial body between an observer and a larger celestial body such as a star.", "To pass over, across or through something."], "manumission": ["The act of legally releasing from slavery."], "manumit": ["To release legally from slavery."], "manumitter": ["A person who releases one of his slave from bondage or slavery."], "manumittor": ["A person who releases one of his slave from bondage or slavery."], "gladiatorial": ["Of or relating to a gladiator."], "chip card": ["A pocket-sized card with embedded integrated circuits which can process information."], "integrated circuit card": ["A pocket-sized card with embedded integrated circuits which can process information."], "ICC": ["A pocket-sized card with embedded integrated circuits which can process information."], "smart-card": ["A pocket-sized card with embedded integrated circuits which can process information."], "recalcitrance": ["The state of being recalcitrant."], "recalcitrancy": ["The state of being recalcitrant."], "regionalism": ["A word or phrase that is mainly used only in a specific region.", "Political tendency to concede forms of politico-administrative autonomy to regions."], "provincialism": ["A word or phrase that is mainly used only in a specific region."], "welding machine": ["Device that provides an electric current to joint materials, usually metals or thermoplastics, by causing coalescence (most often by melting small parts of them)."], "dermis": ["A layer of skin between the epidermis and subcutaneous tissues."], "OCD": ["A brain disorder that is most commonly characterized by a subject's obsessive drive to perform a particular task or set of tasks, compulsions commonly termed as rituals."], "cutlery": ["The eating and serving utensils such as knives, forks and spoons."], "silverware": ["The eating and serving utensils such as knives, forks and spoons."], "tableware": ["The eating and serving utensils such as knives, forks and spoons."], "tetralogy of Fallot": ["Cardiac congenital defect consisting in a narrowing of the right ventricular outflow tract, a localisation of the aorta valve above the septum, connecting the two ventricles, and a hypertrophy of the right ventricle."], "TOF": ["Cardiac congenital defect consisting in a narrowing of the right ventricular outflow tract, a localisation of the aorta valve above the septum, connecting the two ventricles, and a hypertrophy of the right ventricle."], "raccoon dog": ["A canid of the species Nyctereutes procyonoides which resembles a raccoon."], "magnut": ["A canid of the species Nyctereutes procyonoides which resembles a raccoon."], "tanuki": ["A canid of the species Nyctereutes procyonoides which resembles a raccoon."], "illegality": ["The state of being not permitted by law."], "sandal": ["An open type of outdoor footwear leaving most of the upper part of the foot exposed, particularly the toes."], "twist": ["An angle or sharp curve in the course of a road, river, etc.", "To turn two ends of something in opposite directions."], "Jeru": ["An almost extinct language of the Andaman Islands, India, spoken by the Aka-Jeru people."], "coworker": ["A fellow member of a profession, staff, academic faculty or other organization; an associate."], "two thousand": ["The cardinal number between one thousand nine hundred and ninety nine and two thousand and one."], "anteater": ["A mammal of the suborder Vermilingua having elongated snouts and feeding on ants and termites."], "antbear": ["A mammal of the suborder Vermilingua having elongated snouts and feeding on ants and termites."], "Afghan Persian": ["A dialect of the Persian language spoken in Afghanistan, where it is an official language, and in Pakistan."], "impureness": ["The condition of being impure, because of contamination, pollution, etc."], "polydactylism": ["A congenital physical anomaly in humans having supernumerary fingers or toes."], "hyperdactyly": ["A congenital physical anomaly in humans having supernumerary fingers or toes."], "polydactyl": ["Having more that the normal number of fingers or toes."], "polydactylous": ["Having more that the normal number of fingers or toes."], "nutritionalist": ["A health professional with special training in nutrition who can help with dietary choices."], "Coptic alphabet": ["The script used for writing the Coptic language."], "Coptic script": ["The script used for writing the Coptic language."], "fridge magnet": ["Small ornament including a magnet intended to make it adhere, notably to a fridge door."], "refrigerator magnet": ["Small ornament including a magnet intended to make it adhere, notably to a fridge door."], "echocardiography": ["Sonogram of the heart."], "cardiac ECHO": ["Sonogram of the heart."], "ECHO": ["Sonogram of the heart."], "Aaron the Priest": ["A brother of Moses according to the Bible."], "pastime": ["An activity that a person enjoys doing in their spare time (such as stamp collecting or knitting)."], "bark beetle": ["A beetle of the subfamily Scolytinae that reproduces in the bark of trees."], "marine sponge": ["An member of any of the species belonging to the phylum Porifera. They are marine porous animals."], "washing sponge": ["A piece of porous material used for washing."], "Nheengatu": ["A Tupi language spoken in the Upper Rio Negro region of Amazonas state of Brazil, and in neighboring portions of Colombia and Venezuela."], "North Mbundu": ["A Bantu language spoken by the Ambundu in the north-west of Angola."], "Kimbundu": ["A Bantu language spoken by the Ambundu in the north-west of Angola."], "Gogo-Yimidjir": ["A language of Australia."], "Gugu-Yimidhirr": ["A language of Australia."], "Gugu Yimithirr": ["A language of Australia."], "Guugu Yimidhirr": ["A language of Australia."], "Gugu Yimijir": ["A language of Australia."], "Kukuyimidir": ["A language of Australia."], "Koko Imudji": ["A language of Australia."], "Koko Yimidir": ["A language of Australia."], "Kuku Jimidir": ["A language of Australia."], "Kuku Yimithirr": ["A language of Australia."], "Kuku Yimidhirr": ["A language of Australia."], "Tandroy": ["A dialect of Malagasy spoken in the Toliara Province of Madagascar."], "Tandroy-Mahafaly": ["A dialect of Malagasy spoken in the Toliara Province of Madagascar."], "jet aircraft": ["An aeroplane using jet engines rather than propellers."], "egg cell": ["The female gamete of an animal or plant, capable of fusing with a male gamete to produce a zygote."], "ovum": ["The female gamete of an animal or plant, capable of fusing with a male gamete to produce a zygote."], "railroad station": ["A building in or at which trains stop."], "put to death": ["To kill according to a decision regarded as official, in a situation where the victim or victims have no way to escape or to efficiently defend themselves."], "neo-neuron": ["A neuron that was formed recently."], "hyperparasite": ["A parasite whose host is a parasite."], "palagonitization": ["The process of conversion of lava to palagonite."], "allochthonous": ["Originating in a place other than where it is found."], "methylation": ["The addition or substitution of a methyl group to a substrate."], "demethylation": ["The removal of a methyl group from a substrate."], "Magdalenian": ["The later period of the Upper Paleolithic in Europe, dating from around 15,000 BCE to 7,000 BCE.", "Relating to the later period of the Upper Paleolithic in Europe, dating from around 15,000 BCE to 7,000 BCE."], "do so": ["To act this way. [A pro-verb: word replacing any recent earlier, or implied verb.]"], "lady-bird": ["Any of the Coccinellidae family of beetles, having a round shape and a red or yellow spotted shell."], "lady-bug": ["Any of the Coccinellidae family of beetles, having a round shape and a red or yellow spotted shell."], "ladybug": ["Any of the Coccinellidae family of beetles, having a round shape and a red or yellow spotted shell."], "ladybeetle": ["Any of the Coccinellidae family of beetles, having a round shape and a red or yellow spotted shell."], "lady beetle": ["Any of the Coccinellidae family of beetles, having a round shape and a red or yellow spotted shell."], "lady-beetle": ["Any of the Coccinellidae family of beetles, having a round shape and a red or yellow spotted shell."], "Latvia\u0161u-Formal": ["ISO 639-6 entity"], "dadaism": ["A cultural movement that started in Switzerland and peaked from 1916 to 1922, which rejects reason and logic, prizing nonsense, irrationality and intuition."], "Dada": ["A cultural movement that started in Switzerland and peaked from 1916 to 1922, which rejects reason and logic, prizing nonsense, irrationality and intuition."], "Orange-bellied Parrot": ["A small broad-tailed parrot of the species Neophema chrysogaster endemic to southern Australia."], "Tai L\u00fc": ["A Tai language spoken by the Lu people in China, Laos, Myanmar, Thailand and Viet Nam."], "Tai L\u026f": ["A Tai language spoken by the Lu people in China, Laos, Myanmar, Thailand and Viet Nam."], "Tai Lue": ["A Tai language spoken by the Lu people in China, Laos, Myanmar, Thailand and Viet Nam."], "Tai Le": ["A Tai language spoken by the Lu people in China, Laos, Myanmar, Thailand and Viet Nam."], "diamond jubilee": ["A celebration held to mark the 60th anniversary of an event relating to a person.", "A celebration held to mark the 75th anniversary of an event relating to an institution."], "ping pong": ["A sport where two or four players use a bat to play a small, light plastic ball over a net onto a table."], "round trip": ["A trip consisting of traveling to a destination and then going back to the starting point."], "roundtrip": ["A trip consisting of traveling to a destination and then going back to the starting point."], "AM": ["Between midnight and noon (12:00), when specifying a time in the 12-hour clock notation."], "a.m.": ["Between midnight and noon (12:00), when specifying a time in the 12-hour clock notation."], "swastika": ["An equilateral cross with its arms bent at right angles."], "crooked cross": ["An equilateral cross with its arms bent at right angles."], "hook cross": ["An equilateral cross with its arms bent at right angles."], "angled cross": ["An equilateral cross with its arms bent at right angles."], "gammadion": ["An equilateral cross with its arms bent at right angles."], "tetragammadion": ["An equilateral cross with its arms bent at right angles."], "cross gammadion": ["An equilateral cross with its arms bent at right angles."], "tetraskelion": ["An equilateral cross with its arms bent at right angles."], "darning egg": ["An egg-shaped ovoid of stone, porcelain, wood, or similar hard material, which is inserted into the toe or heel of a sock to hold it in the proper shape and provide a firm foundation for repairs."], "nest egg": ["A natural or artificial egg placed in a bird's nest, to encourage the bird to lay its own eggs there.", "Money put aside for a future need."], "savings": ["Money put aside for a future need."], "A.M.": ["Between midnight and noon (12:00), when specifying a time in the 12-hour clock notation."], "aphasiology": ["The science of the loss of language and speech resulting from a cerebral lesion (aphasia)."], "Bondum": ["A language of Mali."], "Bondum Dogon": ["A language of Mali."], "Bondum Dom": ["A language of Mali."], "Daai": ["A language of Myanmar."], "M\u00fcn": ["A language of Myanmar."], "\u00dctb\u00fc": ["A language of Myanmar."], "Santali (Oriya)": ["The Santali language written with the Oriya Script."], "common glasswort": ["An edible plant of the species Salicornia europaea."], "perennial glasswort": ["A perennial plant of the species Sarcocornia perennis."], "police station": ["A building which serves to accommodate police officers."], "station house": ["A building which serves to accommodate police officers."], "black kite": ["A medium-sized bird of prey of the species Milvus migrans."], "black-crowned night heron": ["A medium-sized heron (Nycticorax nycticorax)."], "black-winged kite": ["A small diurnal bird of prey of the species Elanus caeruleus."], "black-shouldered kite": ["A small bird of prey of the species Elanus axillaris, native to Australia."], "Australian black-shouldered kite": ["A small bird of prey of the species Elanus axillaris, native to Australia."], "white-tailed kite": ["A small bird of prey of the species Elanus leucurus found in western North America and parts of South America."], "letter-winged kite": ["A small bird of prey of the species Elanus scriptus found in central Australia."], "scissor-tailed kite": ["A small African bird of prey of the species Chelictinia riocourii."], "African swallow-tailed kite": ["A small African bird of prey of the species Chelictinia riocourii."], "bat hawk": ["A medium-sized diurnal bird of prey of the species Macheiramphus alcinus."], "pearl kite": ["A very small bird of prey of the species Gampsonyx swainsonii."], "swallow-tailed kite": ["An American bird of prey of the species Elanoides forficatus."], "double-toothed kite": ["A small bird of prey of the species Harpagus bidentatus."], "rufous-thighed kite": ["A bird of prey of the species Harpagus diodon living in subtropical and tropical forests."], "Mississippi kite": ["A small bird of prey of the species Ictinia mississippiensis."], "plumbeous kite": ["A small bird of prey of the species Ictinia plumbea."], "snail kite": ["A bird of prey of the species Rostrhamus sociabilis."], "slender-billed kite": ["A bird of prey of the species Helicolestes hamatus."], "whistling kite": ["A medium-sized diurnal bird of prey of the species Haliastur sphenurus."], "Brahminy kite": ["A medium-sized bird of prey of the species Haliastur indus."], "red-backed sea-eagle": ["A medium-sized bird of prey of the species Haliastur indus."], "yellow-billed kite": ["An African bird of prey of the species Milvus aegyptius."], "square-tailed kite": ["A bird of prey of the species Lophoictinia isura."], "black-breasted buzzard": ["A large bird of prey of the species Hamirostra melanosternon."], "black-breasted kite": ["A large bird of prey of the species Hamirostra melanosternon."], "gray-headed kite": ["A bird of prey of the species Leptodon cayanensis."], "grey-headed kite": ["A bird of prey of the species Leptodon cayanensis."], "white-collared kite": ["A South American bird of prey of the species Leptodon forbesi."], "hook-billed kite": ["A bird of prey of the species Chondrohierax uncinatus."], "cycling": ["The use of bicycles for transport, recreation, or sport."], "bicycling": ["The use of bicycles for transport, recreation, or sport."], "biking": ["The use of bicycles for transport, recreation, or sport."], "coccolith": ["A plate of calcium carbonate formed by coccolithophores which they use for protection."], "Nkumbi": ["A Bantu language of Angola."], "Khumbi": ["A Bantu language of Angola."], "Miltou": ["An East Chadic language spoken in southwestern Chad."], "East Chadic A languages": ["ISO 639-6 entity"], "Sumray-Miltu languages": ["ISO 639-6 entity"], "Sibine": ["An East Chadic language spoken in the southwestern Chadian prefectures of Tandjil\u00e9 and Lai."], "Auk\u0161taitian": ["A dialect of the Lithuanian language, spoken in the regions of Auk\u0161taitija, Dz\u016bkija and Suvalkija in Lithuania."], "Western Auk\u0161taitian": ["A sub-dialect of the Auk\u0161taitian dialect spoken in Suvalkija and in a strip between Samogitia and Auk\u0161taitija."], "Southern Auk\u0161taitian": ["A sub-dialect of the Auk\u0161taitian dialect spoken mostly in Dz\u016bkija."], "Dz\u016bkian": ["A sub-dialect of the Auk\u0161taitian dialect spoken mostly in Dz\u016bkija."], "Eastern Auk\u0161taitian": ["A sub-dialect of the Auk\u0161taitian dialect spoken mostly in Auk\u0161taitija."], "Fate": ["One of the three goddesses (The Fates) of classic European mythology who are said to control the fate of human beings.", "A personification of fate [the power or agency that predetermines events]."], "Fortune": ["Chance, personified; commonly imagined as a mythical creature distributing arbitrarily the outcomes in life to people."], "kismat": ["An outcome, condition or event that is predetermined by fate [the power that predetermines events]."], "kismet": ["An outcome, condition or event that is predetermined by fate [the power that predetermines events]."], "Mareqo": ["An East Cushitic language spoken in the Gurage Zone in Ethiopia."], "Marako": ["An East Cushitic language spoken in the Gurage Zone in Ethiopia."], "ablaqueate": ["To lay bare, as the roots of a tree."], "zedonk": ["The offspring of a male zebra and a female donkey."], "zonkey": ["The offspring of a male zebra and a female donkey."], "zebonkey": ["The offspring of a male zebra and a female donkey."], "zebronkey": ["The offspring of a male zebra and a female donkey."], "zebrinny": ["The offspring of a male zebra and a female donkey."], "zebrula": ["The offspring of a male zebra and a female donkey."], "zebrass": ["The offspring of a male zebra and a female donkey."], "zeedonk": ["The offspring of a male zebra and a female donkey."], "zebadonk": ["The offspring of a male zebra and a female donkey."], "roller chain": ["A chain that has links that mesh with the teeth of a sprocket, designed for transferring power in a machine, such as a bicycle."], "bicycle chain": ["A roller chain that transfers power from the pedals to the drive-wheel of a bicycle, thus propelling it."], "derailleur": ["A mechanism for moving the chain from one sprocket to another to change gears on a multi-speed bicycle."], "derailer": ["A mechanism for moving the chain from one sprocket to another to change gears on a multi-speed bicycle."], "front derailleur": ["Bicycle component that moves the chain across the front sprocket wheels to change the gear ratio."], "rear derailleur": ["Bicycle component that 1) moves the chain across the rear sprockets to change the gear ratio, and 2) takes up chain slack caused by moving the chain to a smaller sprocket at the rear or front sprocket."], "Djaru": ["A Southwest Pama\u2013Nyungan language spoken in the Western Australia."], "Dhay'yi": ["A language of Australia."], "Dhalanyji": ["A Southwest Pama\u2013Nyungan language of Australia."], "Thalantji": ["A Southwest Pama\u2013Nyungan language of Australia."], "seat stay": ["In a bicycle, the support bar that connects the top of the seat tube to where the axle of the rear wheel is attached."], "chain stay": ["In a bicycle, each of the horizontal bar that connects between where the front gearset is attached and where the rear wheels axle is attached."], "head tube": ["In a bicycle, the hollow tube in which the front fork (which holds the front wheel) pivots within."], "down tube": ["In a bicycle, the bar that connects the head tube (in which the front fork pivots) to where the front gearset is attached."], "shock absorber": ["A mechanical device designed to smooth out or damp any sudden shock impulse and dissipate kinetic energy; usually consists of a combination of a spring and a dashpot."], "crankarm": ["In a bicycle, one of the two lever components that attach the bottom bracket spindle to a pedal."], "crank arm": ["In a bicycle, one of the two lever components that attach the bottom bracket spindle to a pedal."], "seatpost": ["In a bicycle, a tube that extends upwards from the bicycle frame to the saddle."], "cogset": ["On a bicycle, the set of multiple rear sprockets that attaches to the hub on the rear wheel."], "chainring": ["In a bicycle, the large forward ring driven by the cranks and pedals, consisting of one or more sprockets, that transfers energy to a wheel through the chain."], "crankset": ["The component of a bicycle, consisting of chainring(s) and crankarms, that converts the reciprocating motion of the rider's legs into rotational motion used to drive the chain, which in turn drives the rear wheel."], "chainset": ["The component of a bicycle, consisting of chainring(s) and crankarms, that converts the reciprocating motion of the rider's legs into rotational motion used to drive the chain, which in turn drives the rear wheel."], "motor home": ["A motor vehicle with interior furnishings suitable for living."], "motor coach": ["A motor vehicle with interior furnishings suitable for living."], "campervan": ["A motor vehicle with interior furnishings suitable for living."], "camper van": ["A motor vehicle with interior furnishings suitable for living."], "caravanette": ["A motor vehicle with interior furnishings suitable for living."], "sprocket": ["A toothed wheel that enmeshes with a chain or other perforated band.", "The tooth of a sprocket [a toothed wheel that enmeshes with a chain]."], "splocket": ["A toothed wheel that enmeshes with a chain or other perforated band."], "traction": ["The act of pulling something along a surface using motive power.", "The pulling power of an engine or animal.", "The adhesive friction of a wheel, etc. on a surface.", "A mechanically applied sustained pull, especially to a limb.", "(Business) The extent of adoption of a new product or service, typically measured in number of customers or level of revenue achieved."], "South Omotic": ["A classification of the omotic group."], "Somotic": ["A classification of the omotic group."], "North Omotic": ["A group of Omotic languages."], "Nomotic": ["A group of Omotic languages."], "Hamer": ["An Omotic language spoken primarily in the southern part of Ethiopia by the Hamer, Banna people, and Karo peoples."], "Sark": ["An island in southwestern English Channel, east of Guernsey."], "Middle Low German": ["A Germanic language spoken from about 1100 to 1600 in the Southern Baltic littoral and south-eastern North Sea littoral."], "seat tube": ["In a bicycle, the tube that contains the seatpost."], "top tube": ["In a bicycle, the tube that connects the top of the head tube to the top of the seat tube."], "seat post": ["The tube that extends upwards from the bicycle frame to the saddle."], "spoke": ["One of the connecting rods between the wheel hub and the rim."], "boarding pass": ["A document that gives a passenger the permission to board an airplane for a particular flight."], "boutique": ["An establishment, either physical or virtual, that sells goods or services to the public."], "eight hundred": ["The cardinal number occurring after seven hundred ninety-nine and before eight hundred one, represented in Arabic numerals as 800."], "common chimpanzee": ["An ape of the species Pan troglodytes."], "robust chimpanzee": ["An ape of the species Pan troglodytes."], "invoice": ["A commercial document issued by a seller to the buyer, indicating products or services already provided to the buyer as well as the corresponding price that the buyer has to pay."], "Laragiya": ["An extinct Australian language isolate formerly spoken near the city of Darwin in northern Australia."], "Larrakiya": ["An extinct Australian language isolate formerly spoken near the city of Darwin in northern Australia."], "Eastern Lisu": ["A Lolo-Burmese language spoken by the Lisu people in the mountainous regions of Burma, Southwest China, Thailand, and the Indian state of Arunachal Pradesh."], "Lorhon": ["A Niger\u2013Congo language of Ivory Coast and Burkina Faso."], "Loghon": ["A Niger\u2013Congo language of Ivory Coast and Burkina Faso."], "Loron": ["A Niger\u2013Congo language of Ivory Coast and Burkina Faso."], "ovule": ["The plant structure containing the female gamete, that develops into a seed after fertilization by a pollen."], "sepal": ["One of the component parts of the calyx of a flower."], "calyx": ["The part of the flower that covers the bud, usually green, that consists of sepals and forms the outermost whorl of the flower."], "perianth": ["Collectively, the sepals and petals of a flower, especially when these two are not distinguishable."], "nectary": ["A nectar-secreting gland in a flower or on another part of a plant"], "filament": ["The stalk of a stamen in a flower, supporting the anther."], "floral axis": ["The stem holding the reproductive flower parts."], "connective": ["In a flower, part of the stamen that connects the lobes of an anther together."], "pedicel": ["A stem that attaches single flowers to the main stem of the inflorescence."], "peduncle": ["A stem that attaches single flowers to the main stem of the inflorescence.", "The stalk supporting an inflorescence, separate from the stem of the plant."], "parietal bone": ["Either of two bones that together form the sides and top of the skull."], "occipital bone": ["The bone at the back of the skull."], "mandible": ["The bone of the lower jaw."], "mandibula": ["The bone of the lower jaw."], "dentary bone": ["The bone of the lower jaw."], "inferior maxillary bone": ["The bone of the lower jaw."], "submaxilla": ["The bone of the lower jaw."], "maxilla": ["Either of the two bones that together form the upper jaw."], "lacrimal bone": ["The smallest and most fragile bone of the face situated near the eye."], "nasal bone": ["Either of two small oblong bones which form, by their junction, \"the bridge\" of the nose."], "ethmoid bone": ["The bone of the skull between the eyes and at the roof of the nose."], "sphenoid bone": ["A bone at the base of the skull behind the eyes."], "temporal bone": ["Either of two bones that collectively make up the sides and base of the skull."], "zygoma": ["Paired bone of the human skull, situated on the lateral edge of the eye sockets."], "hyoid bone": ["A bone in the human neck which supports the tongue."], "palatine bone": ["Either of the two bones that make up the hard palate and situated at the rear of the nasal cavity."], "vomer bone": ["Bone that forms the back of the wall separating the nasal cavities."], "butterfly bone": ["A bone at the base of the skull behind the eyes."], "Burmese alphabet": ["An abugida script in the Brahmic family used in Burma for writing Burmese."], "wheelhouse": ["An enclosed compartment, on the deck of a small vessel such as a fishing boat, from which it may be navigated."], "clear view screen": ["A circular disc of glass, set into the screen of a ship's bridge and spun at high speed by an electric motor in heavy rain or snow; it offers a clear view forward."], "clearview screen": ["A circular disc of glass, set into the screen of a ship's bridge and spun at high speed by an electric motor in heavy rain or snow; it offers a clear view forward."], "handrail": ["A horizontal bar extending between supports and used for support or as a barrier."], "rail": ["A horizontal bar extending between supports and used for support or as a barrier."], "life preserver": ["A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "H-bitt": ["An H-shaped bitt on a ship for securing a rope."], "bitt": ["A strong vertical post of timber or iron, fixed on the deck of a ship, to which the ship's mooring lines etc. are secured."], "cleat": ["A device for securing a rope, attached to a flat surface on a ship or on land, with two projecting horns around which a rope may be quickly affixed and also easily released."], "capstan": ["A mechanical or manual system of rotation in a horizontal plane, for winding a rope, cable, etc. and used to produce a strong pull."], "hull": ["The hollow, lowermost portion of a ship, that is partially submerged and supporting the remainder of the ship.", "To remove the hulls from."], "port": ["The left-hand side of a vessel, including aircraft, when one is facing the front."], "larboard": ["The left-hand side of a vessel, including aircraft, when one is facing the front."], "starboard": ["The right hand side of a vessel or aircraft when facing the front."], "tail shaft": ["In ships, the section of the shaft nearest the propeller."], "Kort nozzle": ["A propeller fitted inside a non-rotating cylinder, used to improve the efficiency of the propeller at low speeds."], "rudder blade": ["The submerged, vertical blade on a rudder."], "gunwale": ["The top surface of the bulwark, usually made of wood, that one holds."], "fairlead": ["A ring, hook or other device used to keep a line or chain running in the correct direction or to prevent it rubbing or fouling."], "Lae": ["An extinct Busu language formerly spoken in the area of Lae of the Morobe Province in Papua New Guinea."], "Lahe": ["An extinct Busu language formerly spoken in the area of Lae of the Morobe Province in Papua New Guinea."], "microsporangium": ["Each of the four lobes of an anther, containing pollen."], "jellyfish": ["A marine animal of the subphylum Medusozoa consisting of a gelatinous umbrella-shaped bell and trailing tentacles."], "pistil": ["A discrete organ in the center of a flower capable of receiving pollen and producing a fruit."], "carpel": ["A discrete organ in the center of a flower capable of receiving pollen and producing a fruit.", "One of the divisions of a compound pistil or fruit."], "tepal": ["One of the component parts of a flower perianth, that is not clearly differentiated into petals and sepals."], "androecium": ["The set of a flower's stamens."], "gynoecium": ["The pistils of a flower considered as a group."], "bake": ["To cook (something) in an oven, but not in fat."], "witty": ["Of high or especially quick cognitive capacity."], "sharp-witted": ["Of high or especially quick cognitive capacity."], "quick-witted": ["Of high or especially quick cognitive capacity."], "Bhil languages": ["A group of Western Indo-Aryan languages spoken by the Bhil people mostly in western and central India."], "Dardic languages": ["A sub-group of the Indo-Aryan languages spoken in northern Pakistan, eastern Afghanistan, and the Indian region of Jammu and Kashmir."], "Indo-Aryan languages": ["A language family originating from India, Pakistan, Bangladesh, Nepal, Sri Lanka and the Maldives."], "Indic languages": ["A language family originating from India, Pakistan, Bangladesh, Nepal, Sri Lanka and the Maldives."], "West Chadic languages": ["A group of languages of the Afro-Asiatic family spoken principally in Niger and Nigeria."], "East Chadic languages": ["A group of languages of the Chadic family spoken in Chad and Cameroon."], "Filaya": ["A West Chadic language spoken in the south-west of Billiri in the Gombe State of Nigeria."], "'Bidio": ["A Chadic language spoken in Chad, in the departments of Gu\u00e9ra, south of Mongo."], "Bidyo": ["A Chadic language spoken in Chad, in the departments of Gu\u00e9ra, south of Mongo."], "Bidio": ["A Chadic language spoken in Chad, in the departments of Gu\u00e9ra, south of Mongo."], "'Bidiyo": ["A Chadic language spoken in Chad, in the departments of Gu\u00e9ra, south of Mongo."], "Bidiyo-Waana": ["A Chadic language spoken in Chad, in the departments of Gu\u00e9ra, south of Mongo."], "Bidiya": ["A Chadic language spoken in Chad, in the departments of Gu\u00e9ra, south of Mongo."], "large goods vehicle": ["A large motor vehicle of more than 3,500 kilograms designed for carrying cargo."], "medium goods vehicle": ["A large motor vehicle of more than 3,500 kilograms designed for carrying cargo."], "LGV": ["A large motor vehicle of more than 3,500 kilograms designed for carrying cargo."], "HGV": ["A large motor vehicle of more than 3,500 kilograms designed for carrying cargo."], "hydraulic pin": ["A device that absorbs the shocks acting on a pulling rope and prevents its breakage."], "hatch": ["A narrow passageway between the decks of a ship or submarine."], "deck": ["The platform covering each of the horizontal sections, or compartments, of a ship.", "To be beautiful to look at."], "main deck": ["The uppermost weatherproof deck, running the full length of a ship."], "morse lamp": ["A blinker lamp for signaling in Morse code."], "foghorn": ["A very loud low-pitched horn, used especially in lighthouses and on large boats."], "ensign": ["The principal flag, emblem or banner flown by a ship to indicate nationality."], "mainmast": ["The chief, and tallest mast of a sailing ship that has more than one mast."], "mast": ["Post of wood or steel, long, round and straight, standing on a ship, intended to carry the sails, flags, floodlights, or communications equipment."], "masthead light": ["A navigation lamp on the highest part of a mast."], "navigation light": ["A light used on a ship or aircraft at night to make it visible."], "L-ascorbic acid": ["A key nutrient that the body needs to fight infection, heal wounds, and keep tissues healthy, including the blood vessels, cartilage, ligaments, tendons, bones, muscle, skin, teeth, and gums."], "L-ascorbate": ["A key nutrient that the body needs to fight infection, heal wounds, and keep tissues healthy, including the blood vessels, cartilage, ligaments, tendons, bones, muscle, skin, teeth, and gums."], "winch": ["A hoisting machine used for loading or discharging cargo, or for hauling in lines."], "Nandi\u2013Markweta languages": ["A group of languages of the Kalenjin branch of the Nilotic language family."], "Nandi languages": ["ISO 639-6 entity"], "Niger-Congo languages": ["A family of African languages spoken roughly in the region of Africa below the Sahara up to South Africa."], "Atlantic\u2013Congo languages": ["A group of Niger\u2013Congo languages having a noun class system."], "Atlantic-Congo languages": ["A group of Niger\u2013Congo languages having a noun class system."], "Benue-Congo languages": ["A group of Atlantic\u2013Congo languages spoken in Subsaharan Africa."], "Bantoid languages": ["A group of Benue\u2013Congo languages including the Bantu languages and similar languages."], "Luhya": ["A group of Bantu languages spoken in the western part of Kenya by the Luhya people."], "Luyia": ["A group of Bantu languages spoken in the western part of Kenya by the Luhya people."], "Luhia": ["A group of Bantu languages spoken in the western part of Kenya by the Luhya people."], "video recorder": ["A device that can record broadcast television programmes, or the images and sounds from a video camera for subsequent playback through a television set."], "lethality": ["The capacity of an illness or some other condition of being lethal."], "case fatality rate": ["The ratio of deaths within a designated population of living beings with a particular condition, over a certain period of time."], "case fatality": ["The ratio of deaths within a designated population of living beings with a particular condition, over a certain period of time."], "fatality rate": ["The ratio of deaths within a designated population of living beings with a particular condition, over a certain period of time."], "subway": ["An electric passenger railway operated in underground tunnels."], "Cotentinais": ["A Norman language spoken in the Cotentin Peninsula."], "Guern\u00e9siais": ["A Norman language spoken in the Channel Island of Guernsey."], "Dg\u00e8rn\u00e9siais": ["A Norman language spoken in the Channel Island of Guernsey."], "Guernsey French": ["A Norman language spoken in the Channel Island of Guernsey."], "Guernsey Norman French": ["A Norman language spoken in the Channel Island of Guernsey."], "Brayon": ["A Norman language spoken in the Pays de Bray, France."], "Augeron": ["A Norman language spoken in the Pays d'Auge of Normandy, France."], "Lieuvin": ["A Norman language spoken in Lieuvin and Evrecin, Normandy, France."], "once removed": ["(A relative who is) one generation apart."], "whether": ["The exactness or the inaccuracy of the hypothesis that [Particle marking the object clause of a cognitive verb as doubtful.]"], "Upper Eastern Amuzgo": ["A dialect of the Amuzgo language spoken in Southwest Oaxaca, Putla District and San Pedro Amuzgos of Mexico."], "Oaxaca Amuzgo": ["A dialect of the Amuzgo language spoken in Southwest Oaxaca, Putla District and San Pedro Amuzgos of Mexico."], "Northern Amuzgo": ["A language of Mexico"], "Xochistlahuaca Amuzgo": ["A language of Mexico"], "Lower Eastern Amuzgo": ["A language of Mexico."], "Uto-Aztecan languages": ["A Native American language family spoken mostly in the Western United States and Mexico."], "Uto-Aztekan languages": ["A Native American language family spoken mostly in the Western United States and Mexico."], "indigenous languages of the Americas": ["A family of languages spoken by indigenous people from Alaska and Greenland to the southern tip of South America."], "Southern Uto-Aztecan languages": ["A group of Uto-Aztecan languages spoken in the south of the United States and in Mexico."], "Corachol\u2013Aztecan languages": ["A group of Uto-Aztecan languages spoken in Central Mexico."], "Nahuan languages": ["A group of Uto-Aztecan languages that have undergone the sound change known as Whorf's Law."], "Aztecan languages": ["A group of Uto-Aztecan languages that have undergone the sound change known as Whorf's Law."], "Nahuatl": ["A group of Nahuan languages spoken mostly in Central Mexico."], "scooter": ["A small motorcycle with a step-through frame and a platform for the feet."], "motor scooter": ["A small motorcycle with a step-through frame and a platform for the feet."], "Guerrero Nahuatl": ["A Nahuatl language spoken in the state of Guerrero, Mexico."], "Guerrero Aztec": ["A Nahuatl language spoken in the state of Guerrero, Mexico."], "Isthmus-Mecayapan Nahuatl": ["A Nahuatl language spoken in the towns of Mecayapan and Tatahuicapan in Mexico."], "Morelos Nahuatl": ["A Nahuatl language spoken in the state of Morelos, Mexico."], "chile pepper": ["Any fruit of a plant of the botanical genus Capsicum, noted for their spicy and burning flavour due to presence of capsaicin."], "co-mother-in-law": ["A woman's child's mother-in-law."], "co-father-in-law": ["The father-in-law of a man's child."], "co-parent-in-law": ["A parent-in-law of one's child."], "Bororo": ["A Macro-G\u00ea language spoken by the Bororo people in the Central Mato Grosso region of Brazil."], "Colorado River Numic": ["A language of the USA."], "Ute": ["A dialect of the Colorado River Numic language, spoken in south-western Colorado and eastern Utah, by the Ute people."], "Bedawi Arabic": ["An Arabic language spoken by the Bedouins people in Egypt, Jordan, Palestinian West Bank and Gaza and Syria."], "Eastern Egyptian Bedawi Arabic": ["An Arabic language spoken by the Bedouins people in Egypt, Jordan, Palestinian West Bank and Gaza and Syria."], "Libyan Arabic": ["An Arabic language spoken in Libya, Egypt and Niger."], "Western Egyptian Bedawi Arabic": ["An Arabic language spoken in Libya, Egypt and Niger."], "Abip\u00f3n": ["An extinct Guaicuruan language formerly spoken in the eastern province of Chaco, Argentina."], "greenwashing": ["Various PR techniques that aim to make a company look more environmentally friendly in the eye of the public."], "cross-section": ["An image that shows an object as if cut along a plane, usually at right angles to a main axis."], "floor plan": ["A diagram, usually to scale, showing the layout of a building floor."], "isometric view": ["A method for visually representing three-dimensional objects in two dimensions in technical and engineering drawings, such that the three coordinate axes appear equally foreshortened and the angles between any two of them are 120 degrees."], "axonometric view": ["A type of parallel projection, used to create a pictorial drawing of an object, where the object is rotated along one or more of its axes relative to the plane of projection."], "orthographic": ["Of a projection used in maps, architecture etc., in which the rays are parallel."], "foreshorten": ["To draw the image of an object such that it appears to be reduced or shortened, in order to give the illusion of three-dimensional space as perceived by the human eye"], "forshorten": ["To draw the image of an object such that it appears to be reduced or shortened, in order to give the illusion of three-dimensional space as perceived by the human eye"], "ground floor": ["The floor of a building closest to ground level."], "first floor": ["The floor of a building closest to ground level.", "The floor of a building one above the ground floor."], "staircase": ["A stair between two floors.", "Space between the walls which enclose a staircase."], "stairwell": ["A shaft in a multi-story building enclosing a stairway."], "night-time": ["The period between sunset and sunrise, when a location faces far away from the sun, thus when the sky is dark."], "fireplace": ["An open recess in a wall at the base of a chimney where a fire may be built."], "inner wall": ["A type of small thin wall, made \u200b\u200bof wood or masonry and used for the division of an apartment or any building."], "lassi": ["A drink made with yoghurt diluted with water and flavoured with salt or fruit juice."], "cinnamon basil": ["A cultivar of sweet basil which contains cinnamate, the same chemical that gives cinnamon its flavor."], "cinnamic acid": ["A white substance which is contained in cinnamon."], "Livonian": ["A Finnic language spoken by the Livonian people in Livonia, Latvia."], "cinnamate": ["A white substance which is contained in cinnamon."], "Old Persian": ["A language formerly spoken in Ancient Iran between ca. 525 BC - 300 BC."], "Vepsian": ["A Finnic language spoken by the Vepsians in Russia (Europe)."], "jamb": ["The vertical components that form the sides of a door frame, window frame, or fireplace, or other opening in a wall."], "lintel": ["A horizontal structural beam spanning an opening, such as between the uprights of a door or a window, and which supports the wall above."], "sill": ["A horizontal member bearing the upright portion of a frame.", "A horizontal slat which forms the base of a window."], "window sill": ["A horizontal slat which forms the base of a window."], "ledge-sill": ["A horizontal slat which forms the base of a window."], "sill plate": ["The bottom horizontal member of a wall or building to which vertical members are attached."], "header": ["A horizontal structural beam spanning an opening, such as between the uprights of a door or a window, and which supports the wall above.", "A jump downwards, head first, possibly with arms erected before the head, usually ending up in water.", "The first part of a network packet, often containing its address and descriptors.", "The first part of a file or record that describes its contents."], "architrave": ["A horizontal structural beam spanning an opening, such as between the uprights of a door or a window, and which supports the wall above."], "sill-beam": ["A horizontal beam at the bottom of a wall into which posts and studs are fitted."], "noggin": ["In wall framing, a horizontal piece of wood that goes \u0131n the gaps between the studs."], "wall-plate": ["A horizontal member built into or laid along the top of a wall that support and distribute the pressure from trusses and joists of the roof."], "joist": ["One of the horizontal supporting members that run from wall to wall, wall to beam, or beam to beam to support a ceiling, roof, or floor."], "purlin": ["A horizontal structural member that runs along the length of a roof, resting upon the principal rafters at right angles and supporting the ordinary rafters or boards of the roof."], "girder": ["A beam of steel, wood, or reinforced concrete, used as a main horizontal support in a building or structure."], "Higgs boson": ["A hypothetical elementary particle that would explain the origin of mass in the massive elementary particles."], "Higgs particle": ["A hypothetical elementary particle that would explain the origin of mass in the massive elementary particles."], "God particle": ["A hypothetical elementary particle that would explain the origin of mass in the massive elementary particles."], "shopping": ["The activity of searching for and buying goods."], "high school": ["An institution which provides all or part of secondary education."], "lath": ["A thin, narrow strip, fastened to the rafters, studs, or floor beams of a building, for the purpose of supporting a covering of tiles, plastering, etc.", "Thin plank of wood used in a roof on which are fixed the slates."], "ledger": ["A horizontal timber fastened to the vertical uprights of a scaffold, lying parallel to the face of a building, to support the putlogs or joists, when they not enter into the walls or do not cover the beams."], "putlog": ["One of the short pieces of timber on which the planks forming the floor of a scaffold are laid, one end resting on the ledger of the scaffold, and the other in a hole left in the wall temporarily for the purpose."], "mortise": ["A hole in a piece of wood or the like that is made to receive a tenon of the same dimension on another piece, so as to form a joint between the pieces."], "sunburnt": ["Having a sunburn."], "autologous": ["Using tissue, cells, etc. from the same organism rather than from a donor."], "Western Friulan": ["A dialect of Friulan spoken in the Province of Pordenone."], "Central Friulan": ["A dialect of Friulan spoken around Udine Province."], "Western Lombard": ["A dialect of the Lombard language."], "sole plate": ["The bottom horizontal member of a wall or building to which vertical members are attached."], "bottom plate": ["The bottom horizontal member of a wall or building to which vertical members are attached."], "tenon": ["A projecting member left by cutting away the wood around it, and made to insert into a mortise, and in this way secure together the parts of a frame."], "top plate": ["The upper wall plate which is fastened along the top of the wall studs, before the wall is lifted into position and on which the platform of the next story or the ceiling and roof assembly rest and are attached."], "ceiling plate": ["The upper wall plate which is fastened along the top of the wall studs, before the wall is lifted into position and on which the platform of the next story or the ceiling and roof assembly rest and are attached."], "upper wall plate": ["The upper wall plate which is fastened along the top of the wall studs, before the wall is lifted into position and on which the platform of the next story or the ceiling and roof assembly rest and are attached."], "brace": ["A piece of material used to transmit, or change the direction of, weight or pressure, serves to prevent distortion of the structure.", "An oblique piece of timber used in a roof or other trussed framework to stiffen the stucture.", "Structural member connecting the post to the rafter in a roof truss.", "Oblique part ensuring the rigidity of the angle formed by the ridge purlin and the king post in a roof truss."], "combination pliers": ["A type of pliers used by electricians and other tradesmen primarily for gripping, twisting, bending and cutting wire and cable."], "Lineman's pliers": ["A type of pliers used by electricians and other tradesmen primarily for gripping, twisting, bending and cutting wire and cable."], "turnscrew": ["A hand tool used for driving screws."], "Phillips screwdriver": ["A screwdriver having a cross-shaped tip."], "hacksaw": ["A saw, with a blade that is put under tension, for cutting metal."], "flat-blade screwdriver": ["A screwdriver having a flat-bladed tip."], "flat-head screwdriver": ["A screwdriver having a flat-bladed tip."], "standard screwdriver": ["A screwdriver having a flat-bladed tip."], "slot-head screwdriver": ["A screwdriver having a flat-bladed tip."], "flat-tip screwdriver": ["A screwdriver having a flat-bladed tip."], "flathead screwdriver": ["A screwdriver having a flat-bladed tip."], "monkey wrench": ["A wrench with a smooth adjustable jaw to grip different sizes of nuts and bolts, in which the adjustable jaw is perpendicular to the handle."], "adjustable wrench": ["A wrench with a smooth adjustable jaw to grip different sizes of nuts and bolts."], "pipe wrench": ["An adjustable wrench (British: spanner) with a toothed jaw for gripping pipe, frequently used by a plumber or pipe fitter, to loosen and tighten pipes with threaded connections, designed such that any forward pressure on the handle tends to pull the jaws (otherwise slightly mobile in the tool plan) tighter together."], "wrench": ["A hand tool for making rotational adjustments, such as fitting nuts and bolts, or fitting pipes."], "spanner": ["A hand tool for making rotational adjustments, such as fitting nuts and bolts, or fitting pipes."], "adjustable spanner": ["A wrench with a smooth adjustable jaw to grip different sizes of nuts and bolts."], "Stillsons": ["An adjustable wrench (British: spanner) with a toothed jaw for gripping pipe, frequently used by a plumber or pipe fitter, to loosen and tighten pipes with threaded connections, designed such that any forward pressure on the handle tends to pull the jaws (otherwise slightly mobile in the tool plan) tighter together."], "Stillson wrench": ["An adjustable wrench (British: spanner) with a toothed jaw for gripping pipe, frequently used by a plumber or pipe fitter, to loosen and tighten pipes with threaded connections, designed such that any forward pressure on the handle tends to pull the jaws (otherwise slightly mobile in the tool plan) tighter together."], "shifting spanner": ["A wrench with a smooth adjustable jaw to grip different sizes of nuts and bolts."], "shifting adjustable": ["A wrench with a smooth adjustable jaw to grip different sizes of nuts and bolts."], "shifter": ["A wrench with a smooth adjustable jaw to grip different sizes of nuts and bolts."], "fit-all": ["A wrench with a smooth adjustable jaw to grip different sizes of nuts and bolts."], "adjustable angle-head wrench": ["A wrench with a smooth adjustable jaw to grip different sizes of nuts and bolts."], "Bahco": ["A wrench with a smooth adjustable jaw to grip different sizes of nuts and bolts."], "slip joint pliers": ["A type of plier whose pivot point or fulcrum can be moved to increase the size range of their jaws."], "tongue-and-groove pliers": ["A type of slip-joint pliers with serrated jaws generally set 45\u2013 to 60-degrees from the handle, in which the lower jaw can be moved to a number of positions by sliding along a tracking section under the upper jaw, to create different jaw spans."], "water pump pliers": ["A type of slip-joint pliers with serrated jaws generally set 45\u2013 to 60-degrees from the handle, in which the lower jaw can be moved to a number of positions by sliding along a tracking section under the upper jaw, to create different jaw spans."], "adjustable pliers": ["A type of slip-joint pliers with serrated jaws generally set 45\u2013 to 60-degrees from the handle, in which the lower jaw can be moved to a number of positions by sliding along a tracking section under the upper jaw, to create different jaw spans."], "groove-joint pliers": ["A type of slip-joint pliers with serrated jaws generally set 45\u2013 to 60-degrees from the handle, in which the lower jaw can be moved to a number of positions by sliding along a tracking section under the upper jaw, to create different jaw spans."], "Multi-Grips": ["A type of slip-joint pliers with serrated jaws generally set 45\u2013 to 60-degrees from the handle, in which the lower jaw can be moved to a number of positions by sliding along a tracking section under the upper jaw, to create different jaw spans."], "Channellocks": ["A type of slip-joint pliers with serrated jaws generally set 45\u2013 to 60-degrees from the handle, in which the lower jaw can be moved to a number of positions by sliding along a tracking section under the upper jaw, to create different jaw spans."], "Allen wrench": ["A screwdriver whose handle and hexagonal head are at right angles."], "Allen key": ["A screwdriver whose handle and hexagonal head are at right angles."], "hex key": ["A screwdriver whose handle and hexagonal head are at right angles."], "gimlet": ["A small, screw-tipped hand tool for boring holes in wood."], "jeweler's screwdriver": ["Screwdriver in which the top of the handle can rotate, so as to support the palm of the hand while two fingers control the rotation of the screw."], "precision screwdriver": ["Screwdriver in which the top of the handle can rotate, so as to support the palm of the hand while two fingers control the rotation of the screw."], "utility knife": ["A cutting tool that has an interchangeable blade that retracts into the handle.", "A knife w\u0131th a fixed, folding, or retractable blade, suitable for general work such as cutting hides and cordage, scraping hides, butchering animals, cleaning fish, and other tasks."], "box cutter": ["A cutting tool that has an interchangeable blade that retracts into the handle."], "flat screwdriver": ["A screwdriver having a flat-bladed tip."], "endeavor": ["An assiduous or persistent activity.", "To attempt through application of effort (to do something); to try strenuously."], "wind chill": ["The felt air temperature taking into account wind speed, which is lower than the actual temperature."], "wind chill factor": ["The felt air temperature taking into account wind speed, which is lower than the actual temperature."], "felt air temperature": ["An indication of the air temperature perceived by the body, taking into account the air humidity, density, and the speed of wind."], "apparent air temperature": ["An indication of the air temperature perceived by the body, taking into account the air humidity, density, and the speed of wind."], "fortified church": ["A church that is built to be defended against enemies."], "butt rafter": ["Each of the two oblique pieces in a roof truss supporting the purlins."], "tiebeam": ["The horizontal tie connecting the the feet of the rafters in a roof truss."], "collar-beam": ["The horizontal tie connecting the the feet of the rafters in a roof truss."], "roof truss": ["Assembly of parts designed to support the ridge, purlins and rafters of a roof."], "king post": ["Structural member connecting the ridge and tie-beam in a roof truss."], "Kaalak": ["A Kordofanian language of Sudan."], "Norway maple": ["A species of maple native to eastern and central Europe and southwest Asia."], "eave purlin": ["A purlin at the bottom of the slope of a roof truss."], "lower purlin": ["A purlin at the bottom of the slope of a roof truss."], "inferior purlin": ["A purlin at the bottom of the slope of a roof truss."], "middle purlin": ["One of the purlins located between the eave purlin and the ridge purlin."], "orta a\u015f\u0131k": ["One of the purlins located between the eave purlin and the ridge purlin."], "ridge purlin": ["Purlin at the top of the rafters of a roof frame."], "gable": ["The triangular area of external wall adjacent to two meeting sloped roofs."], "Dogri proper": ["A language of India."], "Dogri cluster": ["A macrolanguage spoken in India."], "pitched roof": ["A single-ridge roof that terminates at gable ends."], "span roof": ["A single-ridge roof that terminates at gable ends."], "saddle roof": ["A single-ridge roof that terminates at gable ends."], "Bapu": ["A language of Indonesia (Papua)."], "Tiemac\u00e8w\u00e8 Bozo": ["A Bozo language spoken in Mali."], "Ti\u025bma C\u025bw\u025b": ["A Bozo language spoken in Mali."], "Sorogaama": ["A Bozo language of Mali and Nigeria."], "depth image based rendering": ["The rendering of a synthetic image from a virtual view using at least a reference image from a reference view and a corresponding depth image."], "depth-image-based rendering": ["The rendering of a synthetic image from a virtual view using at least a reference image from a reference view and a corresponding depth image."], "DIBR": ["The rendering of a synthetic image from a virtual view using at least a reference image from a reference view and a corresponding depth image."], "Sibo": ["A Tungusic language spoken by the Xibe people in Xinjiang, in the northwest of China."], "Sibe": ["A Tungusic language spoken by the Xibe people in Xinjiang, in the northwest of China."], "Xibo": ["A Tungusic language spoken by the Xibe people in Xinjiang, in the northwest of China."], "batten": ["A thin, narrow strip, fastened to the rafters, studs, or floor beams of a building, for the purpose of supporting a covering of tiles, plastering, etc.", "Thin plank of wood used in a roof on which are fixed the slates."], "roof lath": ["Thin plank of wood used in a roof on which are fixed the slates."], "roof boarding": ["Covering consisting of roof boards, attached to the rafters, to support the roof covering materials such as slate, zinc or tar."], "siding": ["A building material which covers and protects the sides of a house or other building."], "cladding": ["A building material which covers and protects the sides of a house or other building."], "joggle post": ["Structural member connecting the ridge and tie-beam in a roof truss."], "joggle piece": ["Structural member connecting the ridge and tie-beam in a roof truss."], "hanging post": ["Structural member connecting the ridge and tie-beam in a roof truss."], "wind brace": ["Diagonal brace to resist deformation caused by lateral pressures, such as from the wind."], "dormer": ["An upright window built on a sloping roof."], "common rafter": ["A rafter which extends from the plate of the roof to the ridge board and to which roofing is attached."], "principal rafter": ["One of several parallel sloping beams that extend from the ridge to the wall-plate, to support the roof and its associated loads; the sloping top member of a roof truss, which carries the purlins."], "main rafter": ["One of several parallel sloping beams that extend from the ridge to the wall-plate, to support the roof and its associated loads; the sloping top member of a roof truss, which carries the purlins."], "purlin cleat": ["Triangular piece of wood placed on the rafter to hold the purlin."], "forceful": ["Capable of producing great physical force."], "bed sheet": ["A cloth covering for a bed, intended to be in contact with the sleeping person."], "bedsheet": ["A cloth covering for a bed, intended to be in contact with the sleeping person."], "western food": ["A type of food that is traditional in Europe or North America."], "eighty-eight": ["The cardinal number occurring after eighty-seven and before eighty-nine."], "paedomorphosis": ["An evolution of a species where adults start showing traits that were originally only seen in youngs."], "p\u00e6domorphosis": ["An evolution of a species where adults start showing traits that were originally only seen in youngs."], "paedomorphic": ["Of, relating to, or resulting from the retention of juvenile characteristics by an adult."], "p\u00e6domorphic": ["Of, relating to, or resulting from the retention of juvenile characteristics by an adult."], "pedomorphic": ["Of, relating to, or resulting from the retention of juvenile characteristics by an adult."], "pedomorphism": ["The retention, by an adult, of juvenile characteristics."], "paedomorphism": ["The retention, by an adult, of juvenile characteristics."], "atmospheric researcher": ["A person who studies the atmosphere."], "dermatoheliosis": ["The aging of the skin caused by exposure to ultraviolet radiation, such as sunlight."], "photoageing": ["The aging of the skin caused by exposure to ultraviolet radiation, such as sunlight."], "photoaging": ["The aging of the skin caused by exposure to ultraviolet radiation, such as sunlight."], "pyroclastic": ["Mostly composed of rock fragments of volcanic origin."], "walnut orchard": ["Place where walnut trees are grown, in particular for their nuts."], "hydrotherapy": ["The use of water for therapeutic purposes."], "hydropathy": ["The use of water for therapeutic purposes."], "thermalism": ["The therapeutic use of hot-water springs."], "innkeeper": ["The person responsible for the running of an inn."], "pinky": ["The smallest finger of a hand."], "flank": ["The fleshy side of an animal (or human) between the last rib and the hip.", "The extreme left or right edge of a military formation, army etc."], "shin": ["The front part of the leg below the knee."], "loin": ["The part of the body (of humans and quadrupeds) each side of the backbone between the ribs and hips.", "The lower abdomen, groin and genitalia.", "A cut of meat from the region of an animal below the rib cage, but above the hipbone."], "loins": ["Muscular parts, situated behind the abdomen, on the right and left of the spine."], "tenderloin": ["A cut of meat from the region of an animal below the rib cage, but above the hipbone."], "sirloin": ["A cut of meat from the region of an animal below the rib cage, but above the hipbone."], "potbelly": ["A protruding abdomen of an animal or human."], "philtrum": ["The shallow groove running down from the bottom of the nose to the center of the upper lip."], "filtrum": ["The shallow groove running down from the bottom of the nose to the center of the upper lip."], "Dutton Speedwords": ["A language intended to be an international auxiliary language that can also be used as a universal shorthand system."], "dewlap": ["The fold of skin that sags on the throat of an old person.", "The skin that hangs from under the throat of an ox or similar animals."], "double chin": ["A layer of subcutaneous fat under the chin, giving the appearance of having an extra chin."], "jowl": ["A hanging and enlarged human cheek.", "Cut of an animal corresponding to the lower jaw."], "wattle": ["A wrinkled fold of skin, sometimes brightly coloured, hanging from the neck of birds (such as chicken and turkey).", "The red and wrinkled piece of flesh that hangs from a turkey's neck."], "caruncle": ["A small, fleshy excrescence that is a normal part of an animal's anatomy."], "underchin": ["The underside of the chin."], "snood": ["The flap of red skin on the beak of a turkey."], "sideburn": ["Each of the patches of facial hair grown on the sides of the face, extending from the hairline to below the ears and worn with an unbearded chin."], "dimple": ["A small natural depression on the cheeks of some people, that is especially visible when they smile.", "A small hollow that some people have at the end the chin.", "A small depression or indentation in a surface."], "cleft chin": ["A small hollow that some people have at the end the chin."], "butt chin": ["A small hollow that some people have at the end the chin."], "chin cleft": ["A small hollow that some people have at the end the chin."], "dimple chin": ["A small hollow that some people have at the end the chin."], "chin dimple": ["A small hollow that some people have at the end the chin."], "vellus hair": ["Short, fine, light-colored, and barely noticeable hair that develops on most of a person's body from childhood."], "fuzz": ["Short, fine, light-colored, and barely noticeable hair that develops on most of a person's body from childhood."], "body hair": ["The terminal hair that develops on the human body during and after puberty."], "androgenic hair": ["The terminal hair that develops on the human body during and after puberty."], "peachfuzz": ["The fuzz found on the skin of a peach.", "The soft, scanty beard of an adolescent male."], "auricle": ["The visible part of the ear that resides outside of the head"], "pinna": ["The visible part of the ear that resides outside of the head"], "outer ear": ["The outer portion of the ear which includes the auricle and the ear canal and leads to the eardrum."], "pavillon": ["The visible part of the ear that resides outside of the head"], "spur": ["A kind of small sharp bony or horny spike pointing rearward, near the foot of certain male galliform birds."], "coccyx": ["The final fused vertebrae at the base of the spine, connected to the sacrum."], "tailbone": ["The final fused vertebrae at the base of the spine, connected to the sacrum."], "shoulderblade": ["A large flat bone located at the back of each shoulder."], "hip bone": ["The large, flattened, irregularly shaped bone of the pelvis that makes a joint with the femur."], "innominate bone": ["The large, flattened, irregularly shaped bone of the pelvis that makes a joint with the femur."], "carpus": ["The group of bones that make up the wrist."], "astragal": ["The bone in the ankle connecting to the leg bones to form the ankle joint."], "anklebone": ["The bone in the ankle connecting to the leg bones to form the ankle joint."], "talus bone": ["The bone in the ankle connecting to the leg bones to form the ankle joint."], "ankle bone": ["The bone in the ankle connecting to the leg bones to form the ankle joint."], "tallus": ["The bone in the ankle connecting to the leg bones to form the ankle joint."], "talus": ["The bone in the ankle connecting to the leg bones to form the ankle joint."], "astragalus": ["The bone in the ankle connecting to the leg bones to form the ankle joint."], "rotulla": ["A small flat triangular bone in front of the knee that protects the knee joint."], "sesamoid bone": ["A small bone embedded within a tendon, typically found in locations where a tendon passes over a joint."], "Mundari languages": ["A branch of the Kherwari languages."], "coffee plant": ["A flowering plant of the genus Coffea whose seeds are used to make coffee."], "cranium": ["That part of the skull enclosing the brain.", "The bony framework of the head."], "braincase": ["That part of the skull enclosing the brain."], "pectoral girdle": ["The bony or cartilaginous assembly that supports the forelimbs in vertebrates."], "shoulder girdle": ["The bony or cartilaginous assembly that supports the forelimbs in vertebrates."], "rib cage": ["A part of the skeleton within the thoracic area consisting of ribs, sternum and thoracic vertebrae.", "The enclosed area created by and within the ribs."], "thoracic cage": ["A part of the skeleton within the thoracic area consisting of ribs, sternum and thoracic vertebrae."], "thoracic vertebra": ["Any of the twelve vertebrae in the chest region of the spine."], "ossicle": ["A small bone of the middle ear.", "Small bone."], "middle ear": ["The cavity in the temporal bone between the eardrum and the inner ear that contains the ossicles, and which conveys sound to the cochlea."], "Eustachian tube": ["In humans and other land vertebrates, a tube that links the pharynx to the cavity of the middle ear to allow the equalization of the pressure on both sides of the eardrum."], "auditory tube": ["In humans and other land vertebrates, a tube that links the pharynx to the cavity of the middle ear to allow the equalization of the pressure on both sides of the eardrum."], "pharyngotympanic tube": ["In humans and other land vertebrates, a tube that links the pharynx to the cavity of the middle ear to allow the equalization of the pressure on both sides of the eardrum."], "choana": ["In quadriped animals, the opening between the nasal cavity and the nasopharynx."], "posterior nasal aperture": ["In quadriped animals, the opening between the nasal cavity and the nasopharynx."], "anatomic region": ["A place in or a part of the body in any way indicated."], "stapes": ["A small stirrup-shaped bone of the middle ear."], "strirrup": ["A small stirrup-shaped bone of the middle ear."], "heel bone": ["The large bone making up the heel of the human foot."], "calcaneus": ["The large bone making up the heel of the human foot."], "ischium": ["The lowest of the three bones that make up each side of the pelvis."], "hock": ["The tarsal joint of a digitigrade quadruped, such as a horse, pig or dog."], "jarret": ["Shallow depression at the back of the knee-joint."], "gambrel": ["The tarsal joint of a digitigrade quadruped, such as a horse, pig or dog."], "phalanx": ["One of the bones of the finger.", "One of the bones of the toe."], "phalange": ["One of the bones of the finger.", "One of the bones of the toe."], "coxal bone": ["The large, flattened, irregularly shaped bone of the pelvis that makes a joint with the femur."], "\u0131nnominate bone": ["The large, flattened, irregularly shaped bone of the pelvis that makes a joint with the femur."], "bone of pelvic girdle": ["The large, flattened, irregularly shaped bone of the pelvis that makes a joint with the femur."], "pelvic bone": ["The large, flattened, irregularly shaped bone of the pelvis that makes a joint with the femur."], "pelvic girdle": ["The bony structure found in most vertebrates located at the base of the spine."], "Lucazi": ["A Bantu language of Angola and Zambia."], "Leko": ["A language isolate spoken in areas east of Lake Titicaca, Bolivia."], "econometric": ["Relating to econometrics."], "econometrician": ["A person who studies econometrics."], "Wolaytta": ["An Omotic language spoken in the Wolaita Zone of Ethiopia."], "Omotic languages": ["Group of languages spoken in northeastern Africa."], "Cushitic languages": ["A branch of the Afroasiatic language family spoken in the Horn of Africa, Tanzania, Kenya, Sudan and Egypt."], "Afroasiatic languages": ["A language family spoken throughout the northern part of Africa and the Middle East, including amongst others the Semitic, Cushitic, Chadic, and Berber languages."], "Afroasiatic": ["A language family spoken throughout the northern part of Africa and the Middle East, including amongst others the Semitic, Cushitic, Chadic, and Berber languages."], "Afro-Asiatic languages": ["A language family spoken throughout the northern part of Africa and the Middle East, including amongst others the Semitic, Cushitic, Chadic, and Berber languages."], "Aroid": ["A group of Omotic languages."], "escape stairs": ["Stairs designed to be used when a place must be evacuated quickly, such as in case of fire."], "what to do": ["to perform what action [Question pro-verb used in direct or indirect speech, and whose expected answer is a verb of action.]"], "\u00c9vora District": ["District of Portugal, located in the south."], "Odisha": ["A state situated on the east coast of India."], "tarsus": ["The part of the foot between the tibia and fibula and the metatarsus."], "tarsal": ["Any of the seven bones of the tarsus."], "metacarpus": ["The five bones that form the intermediate part of the hand between the fingers and the wrist."], "metacarpal": ["Any of the bones of the metacarpus."], "carpal": ["Any of the eight bones of the wrist."], "lumbar vertebra": ["Any of the five vertebrae in the lower back region of the spine."], "manubrium": ["The broad, upper part of the sternum."], "suprasternal notch": ["The conspicuous dip visible at the top of the human chest where the neck joins the sternum."], "jugular notch": ["The conspicuous dip visible at the top of the human chest where the neck joins the sternum."], "sacral vertebra": ["Any of the five vertebra that are fused to form the sacrum."], "coccygeal vertebra": ["Any of the four vertebrae that are found in the human coccyx."], "caudal vertebra": ["Any of the bones that make up the tail of a tailed animal."], "Bashgali": ["A dialect of the Kamkata-viri language spoken by the Kata people in Afghanistan and Pakistan."], "Kativiri": ["A dialect of the Kamkata-viri language spoken by the Kata people in Afghanistan and Pakistan."], "Kata-vari": ["A dialect of the Kamkata-viri language spoken by the Kata people in Afghanistan and Pakistan."], "Bwamu": ["A language of Burkina Faso."], "Ouarkoye Bwamu": ["A language of Burkina Faso."], "Rotunan": ["An Austronesian language spoken in the island group of Rotuma of Fiji."], "Rutuman": ["An Austronesian language spoken in the island group of Rotuma of Fiji."], "F\u00e4eag Rotuma": ["An Austronesian language spoken in the island group of Rotuma of Fiji."], "cable car": ["A streetcar that is moved by gripping to a continuously moving cable under the vehicle.", "A cabin for transportation suspended on cables."], "cablecar": ["A streetcar that is moved by gripping to a continuously moving cable under the vehicle.", "A cabin for transportation suspended on cables."], "cable-car": ["A streetcar that is moved by gripping to a continuously moving cable under the vehicle.", "A cabin for transportation suspended on cables."], "aerial tramway": ["A cabin for transportation suspended on cables."], "ropeway": ["A cabin for transportation suspended on cables."], "aerial tram": ["A cabin for transportation suspended on cables."], "Dena'ina": ["An Athabaskan language spoken in the region surrounding Cook Inlet in Alaska, USA."], "Goguryeo": ["A language that was spoken in the ancient kingdom of Goguryeo (37 BCE \u2013 668 CE), in Korea."], "Montagnais": ["An Algonquian language spoken by the Innu people, in Labrador and Quebec in Eastern Canada."], "Innu-aimun": ["An Algonquian language spoken by the Innu people, in Labrador and Quebec in Eastern Canada."], "South Slavey": ["An Athabaskan language spoken by the Slavey people, in the Mackenzie District, northeast Alberta, British Columbia."], "Kutchi": ["A dialect of the Sindhi language spoken in the Kutch region of the Indian state of Gujarat as well as in the Pakistani province of Sindh."], "Cutchi": ["A dialect of the Sindhi language spoken in the Kutch region of the Indian state of Gujarat as well as in the Pakistani province of Sindh."], "Kutchhi": ["A dialect of the Sindhi language spoken in the Kutch region of the Indian state of Gujarat as well as in the Pakistani province of Sindh."], "Kachchhi": ["A dialect of the Sindhi language spoken in the Kutch region of the Indian state of Gujarat as well as in the Pakistani province of Sindh."], "canoeist": ["A person who navigates a canoe."], "canoer": ["A person who navigates a canoe."], "relaxing": ["That helps to relax."], "vapour": ["The gaseous state of a substance that is normally a solid or liquid."], "water cure": ["The use of water for therapeutic purposes."], "bring to a boil": ["To heat (a liquid) to the point where it begins to turn into a gas."], "bring to the boil": ["To heat (a liquid) to the point where it begins to turn into a gas."], "hopeful": ["Feeling or having hope.", "Inspiring hope; full of promise."], "tiramisu": ["An Italian dessert made of ladyfingers dipped in coffee layered with a mixture of egg yolks and mascarpone and flavored with cocoa and sometimes liquor."], "seaside": ["A line or zone where the land meets the sea or some other large expanse of water."], "ladyfinger": ["A light and sweet sponge cake roughly shaped like a human finger."], "peacock": ["A flying bird of the genus Pavo.", "A male bird of the genus Pavo."], "peafowl": ["A flying bird of the genus Pavo."], "peahen": ["A female bird of the genus Pavo."], "peachick": ["A young peacock."], "Kashmiri languages": ["A group of Dardic languages spoken in the state of Jammu and Kashmir in India."], "Ushoji": ["A Dardic language spoken in Kohistan and Swat districts of the Khyber-Pakhtunkhwa province of Pakistan."], "Shina languages": ["A group of Dardic languages spoken in Pakistan."], "Dumaki": ["A Dardic language spoken in the Northern Areas of Pakistan."], "Doma\u00e1": ["A Dardic language spoken in the Northern Areas of Pakistan."], "Kalash": ["A Dardic language spoken in the Chitral District of Pakistan."], "Kalasha-mondr": ["A Dardic language spoken in the Chitral District of Pakistan."], "mow": ["To cut all [the grass, crop or any thin plants] of a surface area of the ground."], "fire stairs": ["Stairs designed to be used when a place must be evacuated quickly, such as in case of fire."], "emergency stairs": ["Stairs designed to be used when a place must be evacuated quickly, such as in case of fire."], "elementary school": ["An institution in which children receive the first stage of academic learning."], "metatarsal bone": ["One of the five bones in a foot between the tarsus and the toes."], "manubrium sterni": ["The broad, upper part of the sternum."], "common raccoon": ["(Procyon lotor) An omnivorous nocturnal mammal native to North America and Central America."], "North American raccoon": ["(Procyon lotor) An omnivorous nocturnal mammal native to North America and Central America."], "northern raccoon": ["(Procyon lotor) An omnivorous nocturnal mammal native to North America and Central America."], "coon": ["(Procyon lotor) An omnivorous nocturnal mammal native to North America and Central America."], "dolphin therapy": ["The practice of swimming with dolphins for therapy purposes."], "dolphin assisted therapy": ["The practice of swimming with dolphins for therapy purposes."], "dolphinotherapy": ["The practice of swimming with dolphins for therapy purposes."], "hippotherapy": ["The riding of a horse for therapeutic purposes."], "equine therapy": ["The riding of a horse for therapeutic purposes."], "equine assisted therapy": ["The riding of a horse for therapeutic purposes."], "zootherapy": ["The use of living animals for therapeutic purposes."], "animal-assisted therapy": ["The use of living animals for therapeutic purposes."], "AAT": ["The use of living animals for therapeutic purposes."], "zootherapeutic": ["Relating to zootherapy."], "zootherapist": ["A therapist specialized in zootherapy."], "coco-de-mer": ["A tall palm tree, Lodicea maldivica, found in the Seychelles.", "The nut of the coco-de-mer palm tree."], "coco de mer": ["A tall palm tree, Lodicea maldivica, found in the Seychelles."], "Seychelles nut": ["The nut of the coco-de-mer palm tree."], "coco fesse": ["The nut of the coco-de-mer palm tree."], "double coconut": ["A tall palm tree, Lodicea maldivica, found in the Seychelles.", "The nut of the coco-de-mer palm tree."], "love nut": ["The nut of the coco-de-mer palm tree."], "sea coconut": ["A tall palm tree, Lodicea maldivica, found in the Seychelles.", "The nut of the coco-de-mer palm tree."], "cavernicolous": ["That inhabits caverns."], "life-buoy": ["A floating device designed to be thrown to a person in the water, to provide buoyancy, to prevent drowning."], "mechanic": ["A person specialized in building or repairing machinery."], "netherhair": ["Dense, coarse hair that grows on the male and female genital area beginning in puberty."], "pubes": ["Dense, coarse hair that grows on the male and female genital area beginning in puberty."], "pubarche": ["The first appearance of pubic hair in a person."], "spinal column": ["The body part that consists of a row of vertebrae, that support the head and torso and that forms a canal for nerves."], "Eurasian Collared Dove": ["A dove of the species Streptopelia decaocto having a black collar on its nape."], "Collared Dove": ["A dove of the species Streptopelia decaocto having a black collar on its nape."], "Eurasian Collared-dove": ["A dove of the species Streptopelia decaocto having a black collar on its nape."], "collared dove": ["A dove of the species Streptopelia decaocto having a black collar on its nape."], "Eurasian collared dove": ["A dove of the species Streptopelia decaocto having a black collar on its nape."], "older adult": ["An older person (usually considered to be above the age of 60)."], "cosmos": ["Everything that exists anywhere."], "harden": ["To become hard."], "first-person shooter": ["A video game genre where the player shoots at enemies through first-person perspective."], "FPS": ["A video game genre where the player shoots at enemies through first-person perspective."], "doomlike": ["A video game genre where the player shoots at enemies through first-person perspective."], "kuduro": ["A type of music and dance born in Angola in the 1980s, characterized as uptempo, energetic, and danceable."], "kuduru": ["A type of music and dance born in Angola in the 1980s, characterized as uptempo, energetic, and danceable."], "pollination": ["The transfer of pollen from an anther to a stigma, thereby enabling fertilization and sexual reproduction of a plant."], "Common Lime Butterfly": ["A swallowtail butterfly of the species Papilio demoleus."], "Lemon Butterfly": ["A swallowtail butterfly of the species Papilio demoleus."], "Lime Swallowtail": ["A swallowtail butterfly of the species Papilio demoleus."], "Small Citrus Butterfly": ["A swallowtail butterfly of the species Papilio demoleus."], "Chequered Swallowtail": ["A swallowtail butterfly of the species Papilio demoleus."], "Mariposa del Muerte": ["A swallowtail butterfly of the species Papilio demoleus."], "Dingy Swallowtail": ["A swallowtail butterfly of the species Papilio demoleus."], "Citrus Swallowtail": ["A swallowtail butterfly of the species Papilio demoleus."], "door-mat": ["A flat object for wiping one\u2019s shoes, laid on the floor immediately outside or inside the entrance to a building."], "welcome mat": ["A flat object for wiping one\u2019s shoes, laid on the floor immediately outside or inside the entrance to a building."], "spearmint": ["A species of mint native to much of Europe and southwest Asia which is used in medicine and cooking."], "spear mint": ["A species of mint native to much of Europe and southwest Asia which is used in medicine and cooking."], "spiry": ["Like or resembling a spire."], "cathinone": ["A monoamine alkaloid found in the shrub Catha edulis (khat), having a stimulant effect."], "benzoylethanamine": ["A monoamine alkaloid found in the shrub Catha edulis (khat), having a stimulant effect."], "(S)-2-amino-1-phenyl-1-propanone": ["A monoamine alkaloid found in the shrub Catha edulis (khat), having a stimulant effect."], "intensive-care medicine": ["Branch of medicine concerned with the diagnosis and management of life threatening conditions, requiring constant monitoring and support."], "critical-care medicine": ["Branch of medicine concerned with the diagnosis and management of life threatening conditions, requiring constant monitoring and support."], "intensive care medicine": ["Branch of medicine concerned with the diagnosis and management of life threatening conditions, requiring constant monitoring and support."], "maser": ["A device that produces coherent electromagnetic waves through amplification by stimulated emission."], "telephone operator": ["A person who provides assistance to a telephone caller by establishing a network connection with the person to be reacher.", "A company selling telephone services."], "telephone service provider": ["A company selling telephone services."], "telco": ["A company selling telephone services."], "common lavender": ["Plant with blue-pink flowers that can be used as kitchen or medicinal herb or to make scented oil."], "true lavender": ["Plant with blue-pink flowers that can be used as kitchen or medicinal herb or to make scented oil."], "narrow-leaved lavender": ["Plant with blue-pink flowers that can be used as kitchen or medicinal herb or to make scented oil."], "turn upside down": ["To rotate [a container] so that its opening be below; to turn upside down."], "discouraged": ["Having lost one's psychological and moral dynamism or strength to go on doing a difficult or dangerous thing."], "serving": ["A predetermined amount of a food given to a person."], "bestand": ["To be a servant for, to work for, to be employed by."], "wait on": ["To be a servant for, to work for, to be employed by."], "to be needed": ["To become needed."], "seven-year itch": ["An infestation of parasitic mites, Sarcoptes scabiei, causing intense itching caused by the mites burrowing into the skin of humans and other animals."], "ethnic purification": ["A purposeful policy designed by one ethnic or religious group to remove by violent and terror-inspiring means the civilian population of another ethnic or religious group from certain geographic areas."], "genitals": ["The sexual organs: the testicles and penis of a male; or the labia, clitoris, and vagina of a female."], "things": ["All coverings designed to be worn on a person's body."], "as if": ["In a manner suggesting."], "as though": ["In a manner suggesting."], "such as": ["As an example. [Used to introduce an example or list of examples.]"], "murmur": ["Pathologic and audible heart sound that is produced as a result of turbulent blood flow."], "surmise": ["To imagine or suppose (something) to be true without evidence.", "To suppose with contestable premises.", "To imagine that something is possible or likely."], "take it": ["To accept without verification or proof."], "shake out": ["To agitate a piece of cloth or other flexible material in order to remove dust, or to make it smooth and spread out."], "weft": ["The horizontal threads (carried by the shuttle during the weaving) that are interlaced through the warp in a woven fabric."], "warp": ["The threads that run lengthwise in a woven fabric."], "woof": ["The horizontal threads (carried by the shuttle during the weaving) that are interlaced through the warp in a woven fabric.", "The sound a dog makes when barking."], "selfsame": ["Not different or other."], "equal area": ["Of a map, having the property that equal areas on the map represent equal areas on the mapped surface."], "middle class": ["A social and economic class lying above the working class and below the upper class."], "tile": ["To cover with tiles.", "A piece of baked clay, used for various purposes, as in forming a roof covering, etc."], "lower class": ["A class of people in a society characterized by low income, low level of education, high unemployment and, as a result of these, a low social status."], "underclass": ["A class of people in a society characterized by low income, low level of education, high unemployment and, as a result of these, a low social status."], "powdery mildew": ["A fungal disease that affects a wide range of plants."], "realm": ["A geographic area owned or controlled by a single person or organization."], "deal with": ["To handle verbally or in some form of artistic expression.", "To take action with respect to (someone or something).", "To consider, as an example.", "To overcome any difficulties presented by.", "To behave in a certain way towards."], "heterodox": ["Not conforming with accepted or orthodox standards or beliefs."], "heterodoxy": ["Any opinions or doctrines at variance with an official or orthodox position."], "orthodoxy": ["The adherence to accepted norms, more specifically to creeds, especially in religion"], "at last": ["An addition used to emphasize impatience."], "at long last": ["An addition used to emphasize impatience."], "woodland crocus": ["A type of crocus that is among the first to bloom at the end of winter."], "Tomasini's crocus": ["A type of crocus that is among the first to bloom at the end of winter."], "protein domain": ["A folded section of a protein molecule that has a discrete function."], "stewardess": ["A woman whose job is to ensure the safety and comfort of passengers aboard flights."], "air hostess": ["A woman whose job is to ensure the safety and comfort of passengers aboard flights."], "wild cherry": ["A species of cherry tree which produces edible fruit."], "sweet cherry": ["A species of cherry tree which produces edible fruit."], "bird cherry": ["A species of cherry tree which produces edible fruit."], "gean": ["A species of cherry tree which produces edible fruit."], "wood flooring": ["A floor covering for indoors made of wood."], "parquet": ["A floor covering for indoors made of wood."], "iatrogenesis": ["Any adverse effect (or complication) resulting from medical treatment."], "bowdlerize": ["To remove those parts of a text considered offensive, vulgar, or otherwise unseemly."], "wages": ["A fixed amount of money paid to a worker, usually measured on a monthly or annual basis."], "emolument": ["A fixed amount of money paid to a worker, usually measured on a monthly or annual basis.", "The set of monetary compensations received by virtue of holding an office or having employment (usually in the form of wages or fees)."], "seesaw": ["An apparatus composed of a plank, balanced in the middle, with seats at both end, used for a game in which one person goes up as the other goes down."], "carousel": ["An amusement ride consisting of a rotating circular platform with seats for riders."], "merry-go-round": ["An amusement ride consisting of a rotating circular platform with seats for riders."], "jungle gym": ["A piece of playground equipment made of many pieces of material, such as metal pipe or rope, on which children can climb, hang, or sit."], "monkey bars": ["A piece of playground equipment made of many pieces of material, such as metal pipe or rope, on which children can climb, hang, or sit."], "climbing frame": ["A piece of playground equipment made of many pieces of material, such as metal pipe or rope, on which children can climb, hang, or sit."], "spring rider": ["A bouncy, outdoors playing device consisting of a metal spring beneath a plastic or wooden central beam or flange, with 1 to 4 plastic or fiberglass seats above it"], "spring rocker": ["A bouncy, outdoors playing device consisting of a metal spring beneath a plastic or wooden central beam or flange, with 1 to 4 plastic or fiberglass seats above it"], "rubber duck": ["A toy shaped like a stylised yellow-billed duck, and it is generally yellow with a flat base."], "tol": ["A toy that can be spun on an axis, balancing on a point."], "spintop": ["A toy that can be spun on an axis, balancing on a point."], "spinning top": ["A toy that can be spun on an axis, balancing on a point."], "gyroscope": ["A device for measuring or maintaining orientation, based on the principles of angular momentum."], "pertussis": ["A contagious disease of the respiratory system that usually affects children."], "roughcast": ["Coarse cladding used on outside walls that consists of lime (or cement, or both) mixed with sand, and sometimes small gravel or shells, then thrown against the wall."], "proletariat": ["A social class comprising those who do manual labour for wage, especially those who do not own any property."], "lumpenproletariat": ["A class of people in a society characterized by low income, low level of education, high unemployment and, as a result of these, a low social status."], "skippyball": ["A rubber ball (similar to an exercise ball) with handles which allow one to sit on it without falling off."], "space hopper": ["A rubber ball (similar to an exercise ball) with handles which allow one to sit on it without falling off."], "water gun": ["A type of toy designed to shoot water."], "hand puppet": ["A type of puppet that is controlled by the hand or hands that occupies the interior of the puppet."], "whatth": ["Which ordinal number."], "whath": ["Which ordinal number."], "what number": ["Which ordinal number."], "how manyeth": ["Which ordinal number."], "heresy": ["Any belief or theory that is strongly at variance with established beliefs or customs.", "A doctrine held by a member of a religion at variance with established religious beliefs."], "kaleidoscope": ["A cylinder with mirrors containing loose, colored objects such as beads or pebbles and bits of glass."], "true north": ["The direction along the earth's surface towards the geographic North Pole."], "geodetic north": ["The direction along the earth's surface towards the geographic North Pole."], "magnetic north": ["The point on the surface of Earth's Northern Hemisphere at which the planet's magnetic field points vertically downwards."], "Coriolis effect": ["A deflection of moving objects when they are viewed in a rotating reference frame."], "gyrocompass": ["A type of non-magnetic compass which is based on a fast-spinning disc and rotation of the Earth (or another planetary body if used elsewhere in the universe) to automatically find geographical direction."], "in memoriam": ["In memory of"], "mayday": ["An expression used by aircraft and shipping to call for help or assistance."], "harridan": ["A vicious and scolding woman, especially an older one."], "shrew": ["A vicious and scolding woman, especially an older one."], "virago": ["A vicious and scolding woman, especially an older one."], "spear point": ["Hard and pointed extremity of a spear, very ancient long knife designed to be hand held or used as a projectile."], "typewriter": ["A device, at least partially mechanical, used to print text by pressing keys that cause type to be impressed through an inked ribbon onto paper."], "typist": ["A person who types."], "hag": ["A vicious and scolding woman, especially an older one."], "tort": ["A wrongful act, whether intentional or negligent, which causes an injury and can be remedied at civil law, usually through awarding damages."], "food processor": ["A kitchen appliance used to facilitate various repetitive tasks in the process of preparation of food."], "pinwheel": ["A toy made of a wheel of paper or plastic curls attached at its axle to a stick, that spins when blown upon by a person or by the wind."], "jumu'ah": ["The congregational prayer that Muslims hold every Friday, just after noon in the place of dhuhr."], "Friday prayer": ["The congregational prayer that Muslims hold every Friday, just after noon in the place of dhuhr."], "khutbah": ["The sermon and prayer given from the minbar at the Jumah and Eid prayers."], "inward": ["Situated on the inside.", "Belonging to the inside.", "Related to the mental or spiritual condition as opposed to the bodily or exterior phenomena."], "spiritual": ["Related to the mental or spiritual condition as opposed to the bodily or exterior phenomena."], "inner": ["Related to the mental or spiritual condition as opposed to the bodily or exterior phenomena.", "Being or occurring farther inside.", "Close to the center.", "Existing as an often repressed part of one's psychological makeup.", "Needing to be examined closely or thought about in order to be seen or understood.", "Confined to a center of influence."], "inwardly": ["In mind, in heart or in thought, not in outward appearance.", "By verbalizing something mentally without saying the words out."], "physical strength": ["Muscular capacity to modify the speed of an external physical object, to deform it or to oppose another force."], "muscular strength": ["Muscular capacity to modify the speed of an external physical object, to deform it or to oppose another force."], "six hundred": ["The cardinal number occurring after five hundred ninety-nine and before six hundred one, represented in Arabic numerals as 600."], "domestic": ["Of or concerned with matters within the boundaries of a nation, as opposed to its relations with other nations.", "Of or relating to the home.", "(Of an animal) that lives with, is fed and raised by humans, as opposed to living in the wild.", "Indigenous to or produced in one's own, or a referred country."], "scary": ["Dreadful; causing alarm and fear."], "tame": ["(Of an animal) that lives with, is fed and raised by humans, as opposed to living in the wild.", "To make obedient, docile and tractable; to train to follow orders of the owner. \u2003", "To make less strong or intense; soften."], "inlying": ["Located further in."], "ballpoint pen": ["A pen, similar in size and shape to a pencil, having an internal chamber filled with a viscous, quick-drying ink that is dispensed at the tip during use by the rolling action of a metal sphere."], "back-door": ["A door in the rear of a building."], "platypus": ["A semi-aquatic mammal of the species Ornithorhynchus anatinus that lays eggs."], "duck-billed platypus": ["A semi-aquatic mammal of the species Ornithorhynchus anatinus that lays eggs."], "duckbill": ["A semi-aquatic mammal of the species Ornithorhynchus anatinus that lays eggs."], "duckmole": ["A semi-aquatic mammal of the species Ornithorhynchus anatinus that lays eggs."], "watermole": ["A semi-aquatic mammal of the species Ornithorhynchus anatinus that lays eggs."], "gasoline": ["A fuel for internal combustion engines consisting essentially of volatile flammable liquid hydrocarbons derived from crude petroleum."], "hamburger patty": ["A kind of flat patty of cooked ground beef that typically is placed inside a bun along with various vegetables and condiments."], "hamburger sandwich": ["A hot sandwich typically consisting of a patty of cooked ground beef placed inside a bun along with various vegetables and condiments."], "hamburg": ["A hot sandwich typically consisting of a patty of cooked ground beef placed inside a bun along with various vegetables and condiments."], "salesperson": ["An employee in a shop.", "A person whose job it is to sell things."], "or else": ["If that is not the case."], "differently": ["In another way."], "contrarily": ["In another way."], "likewise": ["In addition to what has already been said or noted.", "In a similar manner.", "The same to you. [Used as a response.]"], "as well": ["In addition to what has already been said or noted.", "To the same effect."], "once again": ["Once more."], "once more": ["Once more, in a different manner, on a new basis."], "trommel": ["A pipe-shaped, rotating sieve used for separating objects by size."], "buddle": ["An apparatus on which crushed ore is treated with running water in a way to wash the lighter and less valuable parts."], "gangue": ["The earthy waste substances occurring in metallic ore."], "strainer": ["An apparatus with small holes, used to separate a solid from a liquid."], "skimmer": ["Kitchen utensil in the form of a flat spoon with small holes and a long handle, used to remove hot food from a liquid, or to skim off top lying material l\u0131ke foam or cream."], "fabric conditioner": ["A chemical agent used for laundry which prevents static cling and makes fabric softer."], "fabric softener": ["A chemical agent used for laundry which prevents static cling and makes fabric softer."], "trough": ["A long, narrow container, open on top, for feeding or watering animals.", "A long, narrow container, open on top.", "A short, narrow canal designed to hold water until it drains or evaporates.", "A long, narrow depression between waves or ridges.", "A linear atmospheric depression associated with a weather front.", "A water container for animals to drink from."], "warhorse": ["A horse used in combat, especially one carrying an armored knight."], "manger": ["A trough for animals to eat from."], "kith": ["Friends and acquaintances."], "kith and kin": ["Both friends and family.", "People in the same family, connected by blood, marriage, or adoption."], "pants": ["An item of clothing worn on the lower part of the body and covering both legs separately."], "conflict of interest": ["A clash between public interest and the private pecuniary interest of the individual concerned."], "tree branch": ["A woody part of a tree arising from the trunk and usually dividing."], "one hundred million": ["The number 100,000,000."], "toddler": ["A child between the ages of one and three"], "frame of reference": ["A system of assumptions and standards that sanction behavior and give it meaning."], "commutative ring": ["A ring in which the multiplication operation is commutative."], "ring theory": ["The study of algebraic structures in which addition and multiplication are defined and have similar properties to those familiar from the integers."], "abstract algebra": ["The subject area of mathematics that studies algebraic structures such as groups, rings, fields, modules, vector spaces, and algebras."], "in-marrying": ["Having assimilated into the family of one's spouse."], "uxorilocal": ["Of or related to the situation in which the husband takes residence with the wife and (with or near) her parental family."], "grotesque": ["Distorted and unnatural in shape or size; abnormal and hideous."], "sidewalk": ["A paved footpath at the side of a road for the use of pedestrians."], "pavement": ["A paved footpath at the side of a road for the use of pedestrians."], "in-marrying husband": ["A son-in-law living with the family of his wife's parents."], "jack-in-the-box": ["A children's toy that outwardly consists of a box with a crank. When the crank is turned, it plays a melody. At the end of a tune there is a \"surprise\", the lid pops open and a figure, usually a clown or jester, pops out of the box."], "as a matter of fact": ["As an actual or existing fact."], "in truth": ["As an actual or existing fact."], "summarily": ["In an abbreviated form."], "in short": ["[Used to introduce a short summary statement.]"], "croup": ["A respiratory condition that is usually triggered by an acute viral infection of the upper airway."], "laryngotracheobronchitis": ["A respiratory condition that is usually triggered by an acute viral infection of the upper airway."], "sleeve": ["The part of a garment that covers the arm."], "keyboardist": ["A musician who plays a keyboard instrument."], "jacket": ["An outer garment covering the upper torso and arms.", "A piece of clothing worn on the upper body outside a shirt or blouse, until the waist or slightly below."], "in-marrying wife": ["A daughter-in-law living with the family of her husband's parents."], "marrying-in": ["Marriage within a particular group in accordance with custom or law.", "Having assimilated into the family of one's spouse."], "marrying-out": ["The custom of marrying outside a specified group of people to which a person belongs."], "homeward": ["To the own house or to the own domicile."], "seven hundred": ["The cardinal number occurring after six hundred ninety-nine and before seven hundred one, represented in Arabic numerals as 700."], "firefly": ["A nocturnal, bioluminescent beetle of the family Lampyridae."], "lightning bug": ["A nocturnal, bioluminescent beetle of the family Lampyridae."], "cuckold": ["A man married to an unfaithful wife, especially when he is unaware or unaccepting of the fact.", "To cheat on one's husband with another man.", "To be sexually unfaithful to one's spouse or lover."], "cuckquean": ["A woman who has an unfaithful husband."], "wittol": ["A man who tolerates his wife or a close woman to have sexual relations with another."], "contented cuckold": ["A man who tolerates his wife or a close woman to have sexual relations with another."], "mari complaisant": ["A man who tolerates his wife or a close woman to have sexual relations with another."], "buddle pit": ["An apparatus on which crushed ore is treated with running water in a way to wash the lighter and less valuable parts."], "buddle pond": ["An apparatus on which crushed ore is treated with running water in a way to wash the lighter and less valuable parts."], "mitral valve": ["Dual-flap valve connecting the left atrium and the left ventricle of the heart."], "bicuspid valve": ["Dual-flap valve connecting the left atrium and the left ventricle of the heart."], "left atrioventricular valve": ["Dual-flap valve connecting the left atrium and the left ventricle of the heart."], "learning center": ["Private institution offering classes for special purposes (such as test preparation, remedial education, etc.)"], "matrilocal": ["Of or related to the situation in which the husband takes residence with the wife and (with or near) her parental family."], "retail price": ["The full suggested price of a particular good or service, before any sale, discount, or other deal."], "uncrowded": ["Occupied or populated by a small number of people."], "intercalary year": ["A year with 366 days instead of 365."], "bissextile year": ["A year with 366 days instead of 365."], "angiogenesis": ["A physiological process in which new blood vessels are formed."], "hip roof": ["A type of roof where all sides slope downwards to the walls, usually with a gentle slope."], "hipped roof": ["A type of roof where all sides slope downwards to the walls, usually with a gentle slope."], "cagey": ["Keeping one's thoughts and opinions to oneself.", "Unwilling or hesitant to give information."], "tightlipped": ["Keeping one's thoughts and opinions to oneself.", "Having an inclination to secrecy."], "tight-lipped": ["Keeping one's thoughts and opinions to oneself.", "Having an inclination to secrecy."], "secretive": ["Having an inclination to secrecy."], "nationality": ["The condition of a person who is a member of a particular nation."], "American dollar": ["The official currency of the United States of America, with symbol \"$\"."], "friends and relatives": ["Both friends and family."], "African penguin": ["A penguin of the species Spheniscus demersus having a black back and a white chest with black stripes."], "black-footed penguin": ["A penguin of the species Spheniscus demersus having a black back and a white chest with black stripes."], "Jackass penguin": ["A penguin of the species Spheniscus demersus having a black back and a white chest with black stripes."], "pedometer": ["A device that counts the number of steps that a person takes."], "pedometre": ["A device that counts the number of steps that a person takes."], "informer": ["One who informs someone else about something.", "A person who tells authorities about improper or illegal activity."], "informant": ["A person who tells authorities about improper or illegal activity."], "denouncer": ["A person who tells authorities about improper or illegal activity."], "gemologist": ["A person expert in identifying and evaluating gemstones."], "kinsfolk": ["People in the same family, connected by blood, marriage, or adoption."], "kinfolk": ["People in the same family, connected by blood, marriage, or adoption."], "juices": ["The liquid part or moisture of an animal body or substance."], "bodily fluid": ["Any liquid portion of the body, such as blood, urine, semen, saliva."], "humor": ["Any liquid portion of the body, such as blood, urine, semen, saliva."], "humour": ["Any liquid portion of the body, such as blood, urine, semen, saliva."], "biofluid": ["Any liquid portion of the body, such as blood, urine, semen, saliva."], "body fluid": ["Any liquid portion of the body, such as blood, urine, semen, saliva."], "lacrymal fluid": ["A clear, salty liquid produced by the lacrimal gland in the eye, whose normal function is to clean and lubricate the eyes; its production is increased when the eye is irritated, or when yawning, laughing or crying."], "lymph": ["A colourless, watery, bodily fluid carried by the lymphatic system."], "chyle": ["A milky bodily fluid consisting of lymph and emulsified fats, found in the lymph vessels of the small intestine.", "A digestive fluid containing fatty droplets, found in the small intestine."], "snot": ["Mucus from the nose."], "booger": ["Mucus from the nose."], "mucus": ["(physiology) A viscous secretion from the lining of the mucous membranes."], "loofah": ["A tropical vine, of the genus Luffa, having almost cylindrical fruit with a spongy, fibrous interior; the dishcloth gourd"], "loofa": ["A tropical vine, of the genus Luffa, having almost cylindrical fruit with a spongy, fibrous interior; the dishcloth gourd"], "luffa": ["A tropical vine, of the genus Luffa, having almost cylindrical fruit with a spongy, fibrous interior; the dishcloth gourd"], "ectoparasite": ["A parasite that lives on the surface of its host."], "blow one's nose": ["To clean mucus (in the nose) by exhaling forcefully."], "bodily function": ["A physiologic activity taking place in the body."], "bodily process": ["A physiologic activity taking place in the body."], "neurolymph": ["A clear, colorless fluid that fills the spaces in the brain and the\\ncentral canal of the spinal cord, as well as the spaces between\\nnerve cells."], "cyprine": ["Liquid secreted by the Bartholin's glands at the opening of the vagina when a woman is sexually aroused."], "hereditary": ["A disease or trait passed from a parent to offspring in the genes.", "A title, honor or right legally granted to somebody's descendant after that person's death.", "Passed from a parent to offspring in the genes."], "uncommon": ["Not easily found.", "Out of the ordinary."], "rare": ["Not easily found."], "Sindhi (Arabic script)": ["The Sindhi language written with the Arabic script."], "chyme": ["The thick semifluid mass of partly digested food that is passed from the stomach to the duodenum."], "interstitial fluid": ["The fluid found in the space between the cells of tissues in multicellular animals."], "tissue fluid": ["The fluid found in the space between the cells of tissues in multicellular animals."], "Sindhi (Gurumuki)": ["The Sindhi language written with the Gurumuki script."], "Sindhi (Gurumukhi)": ["The Sindhi language written with the Gurumuki script."], "meow": ["The cry of a cat."], "staphylococcus": ["A parasitic bacterium of the genus Staphylococcus."], "staphylococcal": ["Relating to staphylococcus."], "golden staph": ["A staphylococcus of the species Staphylococcus aureus, responsible for nosocomial infections in humans."], "glue ear": ["A condition in which the middle ear becomes filled with fluid instead of air."], "otitis media with effusion": ["A condition in which the middle ear becomes filled with fluid instead of air."], "wheat flour": ["A powder made from the grinding of wheat."], "argot": ["Terminology which is especially defined in relationship to a specific activity, profession, group, or event.", "A secret or private language used by various groups to prevent outsiders from understanding their conversations."], "see-saw": ["An apparatus composed of a plank, balanced in the middle, with seats at both end, used for a game in which one person goes up as the other goes down."], "oppression": ["The exercise of authority or power in a burdensome, cruel, or unjust manner."], "endoparasite": ["A parasite that lives inside the body of an organism."], "granule": ["A small particle.", "A particle from 2 to 4 mm in diameter, following the Wentworth scale."], "Wentworth scale": ["A particle classification system, classifying based on diameter."], "partnership": ["A commercial association of two or more persons, especially when incorporated."], "existence": ["The state of being."], "rich rhyme": ["A rhyme with at least three phonemes."], "well off": ["Having a lot of money and possessions."], "nouveau riche": ["Wealthy person whose fortunes are newly acquired, and who is therefore perceived to lack the refinement of those who were raised wealthy.", "The class of nouveau riche people."], "new money": ["Wealthy person whose fortunes are newly acquired, and who is therefore perceived to lack the refinement of those who were raised wealthy.", "The class of nouveau riche people."], "parvenu": ["Wealthy person whose fortunes are newly acquired, and who is therefore perceived to lack the refinement of those who were raised wealthy.", "A person who has risen, climbed up, or has been promoted to a higher social class, especially through acquisition of wealth, rights, or political authority but has not gained social acceptance by those within that new class."], "upstart": ["Wealthy person whose fortunes are newly acquired, and who is therefore perceived to lack the refinement of those who were raised wealthy."], "needy": ["Not having what is necessary for subsistence.", "Desiring constant affirmation."], "necessitous": ["Not having what is necessary for subsistence."], "indigent": ["Not having what is necessary for subsistence."], "windsurfer": ["A person who practices windsurfing."], "windsurf": ["To practice windsurfing."], "windsurfing": ["A water sport consisting of riding a surfboard that has an attached sail."], "boardsailing": ["A water sport consisting of riding a surfboard that has an attached sail."], "ba\u00efne": ["A geographical phenomenon consisting of a pool of water parallel to the beach and connected to the sea."], "thrips": ["A tiny, slender insect with fringed wings of the order Thysanoptera."], "thunderfly": ["A tiny, slender insect with fringed wings of the order Thysanoptera."], "thunderbug": ["A tiny, slender insect with fringed wings of the order Thysanoptera."], "storm fly": ["A tiny, slender insect with fringed wings of the order Thysanoptera."], "thunderblight": ["A tiny, slender insect with fringed wings of the order Thysanoptera."], "corn lice": ["A tiny, slender insect with fringed wings of the order Thysanoptera."], "salute": ["To raise one's glass and touch it against another person's (usually at a celebration meal, etc. and usually with the word, \"cheers\").", "A formal gesture done in honor of someone or something.", "Any action done for the purpose of honor or tribute.", "To make a gesture in honor of someone or something according to a prescribed military regulation.", "To express respect, commendation or praise for."], "salutation": ["A conventional phrase used to start a letter or other written communication."], "closing": ["A polite phrase used to end a letter or other written communication."], "valediction": ["A polite phrase used to end a letter or other written communication.", "A speech made when leaving or parting company.", "An act of departure from a place or a group.", "Any statement of good wish (like \"good bye\") at parting."], "complimentary close": ["A polite phrase used to end a letter or other written communication."], "complimentary closing": ["A polite phrase used to end a letter or other written communication."], "if only": ["[Introduces a wish or desire for the present or the future.]", "[Used to express regret or longing about an action in the past.]"], "god forbid": ["[To say that one hopes that something does not happen.]"], "heaven forbid": ["[To say that one hopes that something does not happen.]"], "heaven forfend": ["[To say that one hopes that something does not happen.]"], "perish the thought": ["May the thought perish. [said of an idea or suggestion which is undesirable.]"], "far be it": ["[A disclaimer stating that the person speaking will not do something.]"], "meatus": ["A tubular opening or passage leading to the interior of the body."], "cirque": ["A curved depression with steep walls in a mountainside, created by glacier erosion, forming the end of a valley."], "semifinal": ["A stage in a competition, the winners of which will play the final."], "epidemic parotitis": ["An infectious disease which occurs mostly in childhood and is characterized by swelling of the face and parotid gland."], "progeny": ["All of the offspring of a given progenitor.", "Those who descend from a biological ancestor, through any number of generations."], "masseter": ["The large muscle that raises the underjaw and assists in mastication."], "masseter muscle": ["The large muscle that raises the underjaw and assists in mastication."], "penna": ["Any feather possessing a hard central shaft (rachis), usually with vanes composed of barbs."], "contour feather": ["Any feather possessing a hard central shaft (rachis), usually with vanes composed of barbs."], "rachis": ["Central axis of bird feathers, which carries the barbs, extending the calamus that is implanted into the skin."], "pennaceous feather": ["Any feather possessing a hard central shaft (rachis), usually with vanes composed of barbs."], "vane": ["The flattened, web-like part of a feather, consisting of a series of barbs on either side of the shaft."], "barbule": ["Any of the secondary barbs that form a fringe of small projections on a feather."], "barbicel": ["Any of the hooks on the barbules of a feather that interlock adjacent barbs."], "afterfeather": ["The downy lower barbs of a feather."], "hypoptile": ["The downy lower barbs of a feather."], "hyporachis": ["The downy lower barbs of a feather."], "filoplume": ["A hair-like feather with a slender scape and without a web in most or all of its length."], "andradite": ["A nesosilicate of the garnet group, with formula Ca3Fe2Si3O12."], "Miwa": ["A Gur language spoken in Burkina Faso and the Ivory Coast."], "nerf": ["A change to a video game that reduces the desirability or effectiveness of a particular game element.", "To reduce, in a video game, the desirability or effectiveness of a particular game element."], "raincoat": ["A waterproof coat worn to protect against the rain."], "slicker": ["A person who acts dishonestly.", "A waterproof coat worn to protect against the rain."], "Kansai-ben": ["A group of Japanese dialects spoken in the Kansai region of Japan."], "remarkable": ["Immediately noticeable or standing out."], "cast": ["To pour [a hardenable liquid material, like metal, plaster, glass, concrete etc.] into a mold in order to produce a solid object of the shape of the mold.", "To deposit (e.g. a vote).", "(computing) To change a variable type from, for example, integer to real, or integer to text.", "To assign a role in a play or performance.", "The collective group of actors performing a play or production together.", "A supportive and immobilising device used to help mend broken bones."], "would": ["[Used to express regret or longing about an action in the past.]"], "would that": ["[Used to express regret or longing about an action in the past.]"], "eyeglasses": ["A pair of lenses in a frame that are worn in front of the eyes and are used to correct faulty vision or protect the eyes."], "escallion": ["Any onion of the genus Allium that lacks a fully-developed bulb."], "Welsh onion": ["Any onion of the genus Allium that lacks a fully-developed bulb."], "Japanese bunching onion": ["Any onion of the genus Allium that lacks a fully-developed bulb."], "thanks to": ["[Used to indicate the cause of a mentioned outcome of positive connotation.]"], "mid-life crisis": ["An emotional state where a person realises that his/her life may be more than halfway over and starts to make significant changes in his/her life as a consequence."], "midlife crisis": ["An emotional state where a person realises that his/her life may be more than halfway over and starts to make significant changes in his/her life as a consequence."], "cell therapy": ["The treatment of a disease by introducing new cells into an organism."], "cytotherapy": ["The treatment of a disease by introducing new cells into an organism."], "come on": ["To come near to; to move towards.", "[An expression of encouragement.]", "[An expression of disbelief. ]", "[An expression of encouragement for the addressee to go ahead with an unspecified but contextually obvious action.]"], "c'mon": ["[An expression of encouragement.]"], "owing to": ["[Used to indicate the cause of a mentioned outcome of negative connotation.]"], "on account of": ["[Used to indicate the cause of a mentioned outcome of negative connotation.]"], "good news": ["Message expected to have positive reception or effect."], "glad tidings": ["Message expected to have positive reception or effect."], "Burgundian": ["An O\u00efl language spoken in Burgundy, France."], "e-mail address": ["A string containing an at sign (@) identifying an email box to which email messages can be sent."], "email address": ["A string containing an at sign (@) identifying an email box to which email messages can be sent."], "aquaporin": ["A protein embedded in the cell membrane that regulates the flow of water."], "jouissance": ["The feeling of pleasure during the sexual act or orgasm."], "renting": ["Transfer to another person, by the owner, of the use of something, for a certain time, at a certain price."], "Varhadi-Nagpuri": ["ISO 639-6 entity"], "oftentimes": ["Many times, with short intervals between occasions."], "Huambiza": ["A Jivaroan language spoken by the Huambisa people in Amazonas and Loreto, Peru."], "Wambisa": ["A Jivaroan language spoken by the Huambisa people in Amazonas and Loreto, Peru."], "venitive": ["A grammatical category of the verb in some languages indicating that the action is performed in the direction of the speaker."], "cislocative": ["A grammatical category of the verb in some languages indicating that the action is performed in the direction of the speaker."], "sea sparkle": ["A unicellular marine organism that produces light when stimulated."], "sea-sparkle": ["The glittering reflection of a light (like the sun, the moon, etc.) on water."], "entailment": ["The relationship between statements that holds true when one logically \"follows from\" one or more others."], "draft horse": ["A horse heavier and stronger than a mount, of a race specifically bred for pulling a heavy load."], "dray horse": ["A horse heavier and stronger than a mount, of a race specifically bred for pulling a heavy load."], "fixed asset": ["Asset or property of a corporation, which cannot be consumed or easily be converted into cash, and which enables its owner to carry on its operations."], "non-current asset": ["Asset or property of a corporation, which cannot be consumed or easily be converted into cash, and which enables its owner to carry on its operations."], "property plant and equipment": ["Asset or property of a corporation, which cannot be consumed or easily be converted into cash, and which enables its owner to carry on its operations."], "PP&E": ["Asset or property of a corporation, which cannot be consumed or easily be converted into cash, and which enables its owner to carry on its operations."], "fixture": ["An object that is fixed in place, especially a permanent appliance or other item of personal property that is considered part of a house and is sold (or rented) with it.", "A person or thing regularly present in the same place or position for a long time."], "speck": ["A very small piece of matter."], "take it on the chin": ["To accept a difficult situation without complaining."], "sarin": ["A colorless and odorless substance with the formula [(CH3)2CHO]CH3P(O)F, which is toxic to humans and animals."], "GB": ["A colorless and odorless substance with the formula [(CH3)2CHO]CH3P(O)F, which is toxic to humans and animals."], "emmetropia": ["The capacity of an eye to focus parallel rays of light on the retina, without using any accommodation."], "iboga": ["A perennial rainforest shrub, native to western Central Africa."], "bowman": ["Someone who shoots an arrow from a bow or a bolt from a crossbow."], "wheel-house": ["An enclosed compartment, on the deck of a small vessel such as a fishing boat, from which it may be navigated."], "burnout": ["The experience of long-term exhaustion and diminished interest due to continuous stress at work."], "you know": ["[Reminds of a fact that will be refered to later in the sentence]"], "how about": ["[Introduces a shared fact which now appears to be changed]"], "splenius": ["A broad muscle running from the upper back to the top part of the back of the neck."], "it turns out that": ["[Introduces a fact that is the speaker has just realized.]"], "Australian pelican": ["A large waterbird of the species Pelecanus conspicillatus, which is white, with black wings and a pink bill."], "Australian Pelican": ["A large waterbird of the species Pelecanus conspicillatus, which is white, with black wings and a pink bill."], "Musgu Group": ["A sub-group of the Biu-Mandara Group B languages, spoken in Cameroon and Chad."], "Biu-Mandara B.2": ["A sub-group of the Biu-Mandara Group B languages, spoken in Cameroon and Chad."], "Muzuk": ["ISO 639-6 entity"], "Mousgou": ["A Chadic language spoken in the north of Cameroon in the department of Diamar\u00e9, in the communes of Yagoua and Kouss\u00e9ri and in the Mora plains, as well as in Chad, up to Chari."], "Mousgoun": ["A Chadic language spoken in the north of Cameroon in the department of Diamar\u00e9, in the communes of Yagoua and Kouss\u00e9ri and in the Mora plains, as well as in Chad, up to Chari."], "Musgum": ["A Chadic language spoken in the north of Cameroon in the department of Diamar\u00e9, in the communes of Yagoua and Kouss\u00e9ri and in the Mora plains, as well as in Chad, up to Chari."], "Mousgoum": ["A Chadic language spoken in the north of Cameroon in the department of Diamar\u00e9, in the communes of Yagoua and Kouss\u00e9ri and in the Mora plains, as well as in Chad, up to Chari."], "false rib": ["A rib that is attached not to the sternum but to the overlying rib by cartilage."], "floating rib": ["A rib connected only to the vertebra."], "true rib": ["A rib that attach to the sternum."], "asternal": ["(A rib) that does not join the sternum."], "sternal": ["That connects to the sternum (when referring to ribs)."], "reduced gravity aircraft": ["An aircraft using an elliptic flight path to provide zero gravity environments."], "vomit comet": ["An aircraft using an elliptic flight path to provide zero gravity environments."], "quinquennium": ["A period of five years."], "mother of vinegar": ["A substance composed of cellulose and acetic acid bacteria that is added to alcoholic liquids such as wine to produce vinegar."], "Stollen": ["A traditional German cake containing dried fruit and covered with sugar."], "mattress protector": ["An item of bedding that sits on top of or encases a mattress to protect it."], "mattress topper": ["An item of bedding that sits on top of or encases a mattress to protect it."], "mattress pad": ["An item of bedding that sits on top of or encases a mattress to protect it."], "mattress underpad": ["An item of bedding that sits on top of or encases a mattress to protect it."], "table football": ["A table-top game based on football, where small figures placed on rotating bars are used to shoot the ball."], "foosball": ["A table-top game based on football, where small figures placed on rotating bars are used to shoot the ball."], "table soccer": ["A table-top game based on football, where small figures placed on rotating bars are used to shoot the ball."], "biliardino": ["A table-top game based on football, where small figures placed on rotating bars are used to shoot the ball."], "pathogenicity": ["The capacity of an organism to cause disease in its host."], "roundback": ["An abnormal backward curve to the vertebral column."], "Romance languages": ["A branch of the Indo-European language family, comprised of all the languages that descend from Latin, the language of the Roman Empire."], "Romanic languages": ["A branch of the Indo-European language family, comprised of all the languages that descend from Latin, the language of the Roman Empire."], "Latin languages": ["A branch of the Indo-European language family, comprised of all the languages that descend from Latin, the language of the Roman Empire."], "Neo-Latin languages": ["A branch of the Indo-European language family, comprised of all the languages that descend from Latin, the language of the Roman Empire."], "Rhaeto-Romance languages": ["A Romance language sub-family which includes multiple languages spoken in north and north-eastern Italy, and Switzerland."], "Rhaetian": ["A Romance language sub-family which includes multiple languages spoken in north and north-eastern Italy, and Switzerland."], "Gallo-Romance languages": ["A branch of Romance languages that includes French and several other languages spoken in modern France and northern Italy and Spain."], "Western Romance languages": ["A group of Continental Romance languages."], "Italo-Western languages": ["A group of Romance languages."], "Italo-Western": ["A group of Romance languages."], "Sursilvan dialects": ["A group of dialects of the Romansh language spoken in the Surselva, on the western bank of the Rhine."], "trivet": ["An object, sometimes with short feet, used to support hot dishes and protect a table."], "here is": ["[Used to designate a person or object near the speaker.]"], "voila": ["[Used to introduce a person, thing or action that the listener can feel very often visually.]"], "voil\u00e0": ["[Used to introduce a person, thing or action that the listener can feel very often visually.]"], "there it is": ["[Used to introduce a person, thing or action that the listener can feel very often visually.]"], "caravan": ["A group of animals, vehicles, or people that follow one another in a line.", "Transport means used to travel, where one can also sleep in and which has kitchen etc."], "procession": ["A group of animals, vehicles, or people that follow one another in a line."], "wat": ["A Buddhist temple."], "swordfish": ["A fish of the species Xiphias gladius with a long flat bill."], "pergalo": ["A framework in the form of a passageway of columns that supports a trelliswork roof; used to support and train climbing plants."], "leapling": ["Someone born on a 29th of February."], "sulfur dioxide": ["A poisonous gas with the formula SO2 that is released by volcanoes and the burning of coal and petroleum."], "fin": ["An appendage of a fish used for swimming."], "lie down": ["(For a human or animal) to assume a horizontally extended position on a surface."], "kissing muscle": ["A complex of muscles in the lips that encircle the mouth."], "orbicularis oris": ["A complex of muscles in the lips that encircle the mouth."], "lollipop": ["A confectionery consisting of a piece of candy/sweet attached to a stick."], "roe deer": ["A relatively small, reddish and grey-brown Eurasian deer of the species Capreolus capreolus."], "European roe deer": ["A relatively small, reddish and grey-brown Eurasian deer of the species Capreolus capreolus."], "western roe deer": ["A relatively small, reddish and grey-brown Eurasian deer of the species Capreolus capreolus."], "insignificant": ["Of very little importance."], "at first blush": ["From appearances alone."], "avatar": ["A digital representation or handle of a person or being.", "The incarnation of a deity, particularly Vishnu."], "pyrotechnics": ["The art and technology of fireworks and related military applications."], "biotechnological engineering": ["The application of engineering principles and techniques to biology and medicine. It is largely concerned with the design of replacement body parts, such as limbs, heart valves, etc."], "hypothecary": ["Relating to the pledging of a property to secure a debt.", "The holder of a hypothec."], "zander": ["A European freshwater fish in the family Percidae, closely related to the perch, Sander lucioperca."], "scintigraphy": ["A method of medical imaging where radioisotopes are administered in a patient, and the emitted radiation is captured to form two-dimensional images."], "the following": ["[Used to refer to a new piece of information that will follow in the sentence.]"], "High Frame Rate": ["A motion picture format where the projection frame rate is higher than 24 frames per second."], "HFR": ["A motion picture format where the projection frame rate is higher than 24 frames per second."], "tug of war": ["A sport in which two teams must pull a rope in opposite directions."], "tug o' war": ["A sport in which two teams must pull a rope in opposite directions."], "tug war": ["A sport in which two teams must pull a rope in opposite directions."], "rope war": ["A sport in which two teams must pull a rope in opposite directions."], "rope pulling": ["A sport in which two teams must pull a rope in opposite directions."], "tugging war": ["A sport in which two teams must pull a rope in opposite directions."], "maiden name": ["A woman's last name before she married and took her husband's last name."], "girl's name": ["A woman's last name before she married and took her husband's last name."], "substance turnover": ["Movement of chemical elements in a circular pathway, from organisms to physical environment, back to organisms."], "cycling of substances": ["Movement of chemical elements in a circular pathway, from organisms to physical environment, back to organisms."], "dracunculiasis": ["A parasitic disease caused by the development of a Guinea worm in the subcutaneous tissue of mammals."], "Guinea worm disease": ["A parasitic disease caused by the development of a Guinea worm in the subcutaneous tissue of mammals."], "parasitism": ["A disease caused by parasites."], "parasitical": ["Of, pertaining to, or characteristic of parasites."], "grape phylloxera": ["An pale yellow insect of the genus Dactylosphaera vitifoliae that feeds on the roots and leaves of grapevines."], "phylloxera": ["An pale yellow insect of the genus Dactylosphaera vitifoliae that feeds on the roots and leaves of grapevines."], "multiple drug resistance": ["The ability of pathologic cells to withstand chemicals that are designed to aid in the eradication of such cells."], "rowboat": ["An open boat propelled by pulling oars through the water."], "harvest mite": ["A mite of the species Trombicula autumnalis infecting all domestic mammals, humans, and some birds."], "anyhow": ["In any way or manner whatever.", "Whatever the case may be"], "regardless": ["Whatever the case may be"], "be that as it may": ["Whether that is true or not."], "nonetheless": ["In spite of that."], "all the same": ["In spite of that."], "just the same": ["In spite of that."], "kettlebell": ["A cast-iron weight, resembling a cannonball with a handle, used to perform ballistic exercises."], "girya": ["A cast-iron weight, resembling a cannonball with a handle, used to perform ballistic exercises."], "precipitate": ["(For water in the atmosphere) to fall to the ground, as rain, snow, hail, etc."], "rectrix": ["A feather on the tail of a bird."], "landlady": ["A person who owns and rents land such as a house, apartment, or condo."], "card sharp": ["A person who uses skill and deception to win at poker or other card games."], "cardsharp": ["A person who uses skill and deception to win at poker or other card games."], "card shark": ["A person who uses skill and deception to win at poker or other card games."], "cardshark": ["A person who uses skill and deception to win at poker or other card games."], "overproduction": ["A production that exceeds the demand by consumers."], "oversupply": ["A production that exceeds the demand by consumers."], "excess of supply": ["A production that exceeds the demand by consumers."], "dung beetle": ["A beetle that feeds partly or exclusively on feces."], "devitalize": ["To weaken or reduce in force, intensity, effect, quantity."], "naked": ["Without clothing.", "Of a person not wearing any clothing and not otherwise covered."], "myrmecology": ["The scientific study of ants."], "postcranial": ["Located behind the cranium."], "Jovian": ["Relating to the Roman god Jupiter.", "Relating to the planet Jupiter."], "double agent": ["A person who is active in an Organisation or similar who is actively and secretly sharing some or all of its internal and confidential informations with another organisation or group of people most often targetting quite opposite goals."], "traitor": ["A person who is active in an Organisation or similar who is actively and secretly sharing some or all of its internal and confidential informations with another organisation or group of people most often targetting quite opposite goals."], "landscape architect": ["A person who plans and designs a landscape, garden, or outdoor space."], "slimy person": ["Pejorative expression for a person who gets on the nerves of others by constantly trying or pretending to do them favours and ask favours from them in a deceptive and unpleasantly submissive way for his or her own benefit."], "slimy one": ["Pejorative expression for a person who gets on the nerves of others by constantly trying or pretending to do them favours and ask favours from them in a deceptive and unpleasantly submissive way for his or her own benefit."], "calciphyte": ["Plant that grows on ground rich in chalc."], "bartender": ["A person preparing and serving drinks at a bar."], "barkeep": ["A person preparing and serving drinks at a bar."], "barkeeper": ["A person preparing and serving drinks at a bar."], "bar-keeper": ["A person preparing and serving drinks at a bar."], "barman": ["A man preparing and serving drinks at a bar."], "barmaid": ["A woman preparing and serving drinks at a bar."], "barperson": ["A person preparing and serving drinks at a bar."], "bar attendant": ["A person preparing and serving drinks at a bar."], "bartendress": ["A woman preparing and serving drinks at a bar."], "barlady": ["A woman preparing and serving drinks at a bar."], "Kangxi radical index": ["Graphic portions of Chinese characters which are used for organizing entries in Chinese dictionaries into sections which all share the same graphic part.", "Kangxi radical index"], "skeptical": ["Having or expressing doubt."], "sceptical": ["Having or expressing doubt."], "mop": ["An object made of absorbent material attached to a pole or stick and used to clean floors and other surfaces with a liquid.", "To wash with a mop."], "Cremun\u00e9s": ["A dialect of Western Lombard language group spoken in the city and province of Cremona in Lombardy, Italy."], "spinneret": ["The organ a spider uses to spin its web."], "derma": ["A layer of skin between the epidermis and subcutaneous tissues."], "devitalise": ["To weaken or reduce in force, intensity, effect, quantity."], "dormer window": ["An upright window built on a sloping roof."], "draught horse": ["A horse heavier and stronger than a mount, of a race specifically bred for pulling a heavy load."], "draught beer": ["A beer served from a cask or keg."], "draft beer": ["A beer served from a cask or keg."], "areca nut": ["The seed of the areca palm (Areca catechu)."], "betel nut": ["The seed of the areca palm (Areca catechu)."], "Panchali": ["A dialect of the Kashmiri language spoken mainly in the Ramban district of Jammu and Kashmir."], "Khah": ["A dialect of the Kashmiri language spoken mainly in the Ramban district of Jammu and Kashmir."], "Pahari": ["A dialect of the Kashmiri language spoken mainly in the Ramban district of Jammu and Kashmir."], "Khashali": ["A dialect of the Kashmiri language spoken mainly in the Ramban district of Jammu and Kashmir."], "Pogali": ["A dialect of the Kashmiri language spoken mainly in the Ramban district of Jammu and Kashmir."], "Puguj": ["A dialect of the Kashmiri language spoken mainly in the Ramban district of Jammu and Kashmir."], "Pogli": ["A dialect of the Kashmiri language spoken mainly in the Ramban district of Jammu and Kashmir."], "Kohistani": ["A dialect of the Kashmiri language spoken mainly in the Ramban district of Jammu and Kashmir."], "Banihali": ["A dialect of the Kashmiri language spoken mainly in the Ramban district of Jammu and Kashmir."], "drumfire": ["An intense and prolonged artillery fire."], "cannonade": ["An intense and prolonged artillery fire."], "ear trumpet": ["A conical shaped device serving as an hearing aid."], "face lift": ["A cosmetic surgery procedure to give a more youthful appearance to the face by removing wrinkles."], "face lifting": ["A cosmetic surgery procedure to give a more youthful appearance to the face by removing wrinkles."], "rhytidoplasty": ["A cosmetic surgery procedure to give a more youthful appearance to the face by removing wrinkles."], "Old Saxon": ["The earliest recorded form of Low German, documented from the 8th century until the 12th century."], "Old Low German": ["The earliest recorded form of Low German, documented from the 8th century until the 12th century."], "body temperature": ["The measured temperature of the body of a person or animal."], "doff": ["To take (an article of clothing) away from one's body."], "digital subscriber line": ["A family of technologies that provides digital data transmission over the wires of a local telephone network."], "digital subscriber loop": ["A family of technologies that provides digital data transmission over the wires of a local telephone network."], "duckbilled platypus": ["A semi-aquatic mammal of the species Ornithorhynchus anatinus that lays eggs."], "guilder": ["The Dutch currency until the introduction of the euro in 2002."], "gulden": ["The Dutch currency until the introduction of the euro in 2002."], "florin": ["The Dutch currency until the introduction of the euro in 2002."], "Dutch florin": ["The Dutch currency until the introduction of the euro in 2002."], "Ea": ["A god in Akkadian and Babylonian mythology, counterpart of the Sumerian Enki."], "eaglet": ["A young immature eagle."], "ebonize": ["To paint something to make it look like ebony."], "ebonise": ["To paint something to make it look like ebony."], "tidal bore": ["A wave caused by an incoming tide traveling up an estuary."], "eagre": ["A wave caused by an incoming tide traveling up an estuary."], "bore": ["A wave caused by an incoming tide traveling up an estuary."], "aegir": ["A wave caused by an incoming tide traveling up an estuary."], "eygre": ["A wave caused by an incoming tide traveling up an estuary."], "earflap": ["One of the two flaps attached to a cap to cover the ears."], "earlap": ["One of the two flaps attached to a cap to cover the ears."], "alternative form": ["A word or phrase that has the same meaning and is phonologically similar to another word or phrase of the same language."], "etymologise": ["To find or examine the etymology or etymon of a given word."], "Min Nan (H\u00e0n-l\u00f4)": ["The Min Nan language written using a Han-Romanization mixed script."], "Valentine's Day": ["A celebration of lovers that is observed on February 14."], "Saint Valentine's Day": ["A celebration of lovers that is observed on February 14."], "Feast of Saint Valentine": ["A celebration of lovers that is observed on February 14."], "earless": ["Lacking ears."], "earldom": ["The rank of being an earl.", "The territory controlled by an earl."], "earlobe": ["The lower fleshy part of the human ear."], "Chelyabinsk": ["A Russian city just east of the Ural Mountains."], "trimethylaminuria": ["A rare metabolic disorder due to a defect in the normal production of the enzyme flavin which causes a person to give off a strong fishy body odour."], "fish odor syndrome": ["A rare metabolic disorder due to a defect in the normal production of the enzyme flavin which causes a person to give off a strong fishy body odour."], "fish malodor syndrome": ["A rare metabolic disorder due to a defect in the normal production of the enzyme flavin which causes a person to give off a strong fishy body odour."], "European hornbeam": ["A small to medium-size tree of the species Carpinus betulus with a smooth and greenish-grey bark."], "common hornbeam": ["A small to medium-size tree of the species Carpinus betulus with a smooth and greenish-grey bark."], "whitebeam": ["A deciduous tree of the species Sorbus aria, compact and domed having cream-white flowers."], "common whitebeam": ["A deciduous tree of the species Sorbus aria, compact and domed having cream-white flowers."], "snowy mespilus": ["A deciduous tree of the species Amelanchier lamarckii having star-shaped white flowers."], "juneberry": ["A deciduous tree of the species Amelanchier lamarckii having star-shaped white flowers."], "snowy mespil": ["A deciduous tree of the species Amelanchier lamarckii having star-shaped white flowers."], "Wikidata ID": ["A unique identifier for an item in Wikidata."], "saucer magnolia": ["A hybrid of the Chinese Yulan magnolia and Mulan magnolia which is now the most commonly used magnolia in horticulture."], "ground-to-ground missile": ["A missile launched from the ground, or from the sea, toward a target on land or at sea."], "dress shirt": ["A man's white shirt (with a starch front) for evening wear (usually with a tuxedo)."], "railway platform": ["A raised structure from which passengers can enter or leave a train, metro etc."], "dialectal variant": ["A word or phrase that has the same meaning but is phonologically different from another word or phrase of the same language."], "is abbreviated as": ["[An annotation in OmegaWiki that links an expression to its abbreviated equivalents]"], "is an abbreviation of": ["[An annotation in OmegaWiki that shows what an abbreviated expression stands for, in its unabbreviated form.]"], "fearfully": ["In a fearful manner."], "fearfulness": ["The quality of being fearful."], "highborn": ["Of noble or aristocratic birth."], "faceless": ["Having no face."], "bodiless": ["Having no physical body or form."], "brainless": ["Without brain or personality, excessively superficial.", "Having no brain."], "primiparous": ["Bearing a child for the first time."], "biodegradable waste": ["A type of waste which can be broken down into its base compounds by micro-organisms."], "gaily": ["In a cheerful or merry manner."], "cheerfully": ["In a cheerful or merry manner."], "precariat": ["A social group of unprotected workers and unemployed people."], "venography": ["An X-ray examination of a system of veins that have been injected with a contrast medium."], "hippophage": ["Someone who eats horsemeat.", "Eating horsemeat."], "oceanic whitetip shark": ["A large pelagic shark inhabiting tropical and warm temperate seas, having long, white-tipped, rounded fins."], "Marchigiano": ["A central Italian dialect spoken in the region of Marche, in Italy."], "fire extinguisher": ["Any of various portable devices for extinguishing a fire with chemicals."], "flame extinguisher": ["Any of various portable devices for extinguishing a fire with chemicals."], "nutrigenomics": ["The study of the effects of foods on gene expression."], "phantasy": ["A situation imagined by an individual that expresses certain desires or aims on the part of its creator. Fantasies sometimes involve situations that are highly unlikely; or they may be quite realistic. Another, more basic meaning of fantasy is something which is not 'real,' as in perceived explicitly by any of the senses, but exists as an imagined situation of object to subject."], "imagination": ["The ability to create imaginary images, events or stories."], "econometrist": ["A person who studies econometrics."], "encolure": ["The neck of a horse."], "epiphysial": ["Of or relating to the epiphysis."], "ergot": ["A fungus of the genus Claviceps which grows on rye and similar plants."], "ergot fungi": ["A fungus of the genus Claviceps which grows on rye and similar plants."], "viticulturist": ["A person who grows grapes."], "bariatric": ["Relating to bariatrics, the branch of medicine concerned with the study and treatment of obesity."], "bariatrics": ["A branch of medicine concerned with the study and treatment of obesity."], "bariatrician": ["A specialist in bariatrics."], "fab": ["Causing wonder, admiration or astonishment."], "marvelous": ["Causing wonder, admiration or astonishment."], "Eastern Indo-Aryan languages": ["A group of Indo-Aryan languages spoken in Bihari, Oriya and Bengali."], "Tharu languages": ["A group of Eastern Indo-Aryan languages spoken by the Tharu people."], "Tharu": ["A group of Eastern Indo-Aryan languages spoken by the Tharu people."], "Yeshiva": ["A university for Jewish students, who mainly learn the Talmud."], "semantic borrowing character": ["A character that is borrowed from another language for its meaning, but not for its phonetic form."], "etymological character": ["A character that is borrowed from another language for both its meaning and its phonetic form."], "phonetic borrowing character": ["A character that is borrowed from another language for its phonetic form, but not for its meaning."], "domestic character": ["A character that has been specifically created for a given language, following the principles of phonetic compounding and semantic aggregation."], "POJ": ["An orthography used to write the Min Nan language with Latin characters."], "side dish": ["A serving of food accompanying, and meant to be consumed with, the main course of a meal."], "Kartvelian languages": ["A group of Caucasian languages spoken primarily in Georgia."], "Adjarian": ["A dialect of the Georgian language spoken in Adjara, an autonomous republic of Georgia."], "paramyxovirus": ["A virus of the Paramyxoviridae family that causes diseases in humans and animals."], "oncolytic": ["Able to kill cancer cells without damaging healthy tissue."], "torticollis": ["A painful muscular contracture of the neck."], "wry neck": ["A painful muscular contracture of the neck."], "loxia": ["A painful muscular contracture of the neck."], "laterocollis": ["A torticollis in which the head is tipped towards the shoulder."], "rotational torticollis": ["A torticollis in which the head rotates along the longitudal axis."], "anterocollis": ["A torticollis characterized by a forward flexion of the head and neck."], "retrocollis": ["A torticollis characterized by a hyperextension of the head and neck backwards."], "muscular torticollis": ["A painful muscular contracture of the neck."], "Julius Caesar": ["A Roman general, statesman, Consul and notable author of Latin prose."], "date of birth": ["The date on which a person was born."], "birther": ["A person who denies that President Barack Obama was born in the United States."], "methamphetamine": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "metamfetamine": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "meth": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "tik": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "N-methylamphetamine": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "methylamphetamine": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "desoxyephedrine": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "N-methyl-1-phenylpropan-2-amine": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "crystal meth": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "tina": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "tweak": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "(S)-N-methyl-1-phenylpropan-2-amine": ["An addictive psychoactive drug of formula C\u2081\u2080H\u2081\u2085N."], "taurine": ["An organic acid of formula C2H7NO3S widely distributed in animal tissues."], "2-aminoethanesulfonic acid": ["An organic acid of formula C2H7NO3S widely distributed in animal tissues."], "tauric acid": ["An organic acid of formula C2H7NO3S widely distributed in animal tissues."], "apple sauce": ["Puree of stewed apples usually sweetened and spiced."], "Rubicon": ["A shallow river in northeastern Italy, about 80 kilometres long, running from the Apennine Mountains to the Adriatic Sea through the southern Emilia-Romagna region, between the towns of Rimini and Cesena."], "logarithm": ["The number by which a fixed number (the base) must be raised to produce a given number."], "land mine": ["An explosive device, concealed under or on the ground and designed to destroy or disable enemy targets as they pass over or near the device."], "one hundred": ["The cardinal number occurring after ninety-nine and before one hundred one, represented in Roman numerals as C and in Arabic numerals as 100."], "googolplex": ["The number ten to the googolth power, or 10 to the power of 10 to the power of 100."], "fabulously": ["In a wonderful manner.", "In a manner that is typical of fables."], "fantastically": ["In a wonderful manner."], "Wikiquote": ["A free online compendium of sourced quotations from notable people."], "forgetful": ["Apt or likely to forget things."], "forgetfulness": ["The trait of being apt or likely to forget things."], "Wikisource": ["A wiki-based project, owned by the Wikimedia Foundation, for creating a library of source texts."], "Kalmyk Oirat": ["A Mongolic language spoken by the Kalmyk people of the Republic of Kalmykia, a federal subject of the Russian Federation."], "washover": ["The sediment deposited by overwash."], "overwash": ["A flow of water over the crest of the beach that deposits sediments inland."], "graze": ["The vegetation on pastures that is available for livestock to feed upon.", "To scratch or cut with nails.", "(For livestock) To feed on grass or herbage from a pasture.", "To feed as in a meadow or pasture."], "unaligned": ["That is not aligned."], "Sillok": ["A Nilo-Saharan language spoken in Sudan."], "William Shakespeare": ["An English poet and playwright, widely regarded as the greatest writer in the English language and the world's pre-eminent dramatist."], "Homer": ["The author of the Iliad and the Odyssey and revered as the greatest of ancient Greek epic poets."], "Voltaire": ["French writer, historian, and philosopher."], "Joost van den Vondel": ["A Dutch writer and playwright."], "Mahatma Gandhi": ["The preeminent leader of Indian nationalism in British-ruled India."], "Gandhi": ["The preeminent leader of Indian nationalism in British-ruled India."], "Hebrew (nikkud)": ["The Hebrew language written with nikkud marks."], "Sinti-Manouche": ["A variety of Romani spoken by the Sinti people in Germany, France, Austria, northern Italy and other adjacent regions."], "Sintenghero Tschib": ["A variety of Romani spoken by the Sinti people in Germany, France, Austria, northern Italy and other adjacent regions."], "Sintenghero Tschiben": ["A variety of Romani spoken by the Sinti people in Germany, France, Austria, northern Italy and other adjacent regions."], "Sintitikes": ["A variety of Romani spoken by the Sinti people in Germany, France, Austria, northern Italy and other adjacent regions."], "Romanes": ["A variety of Romani spoken by the Sinti people in Germany, France, Austria, northern Italy and other adjacent regions."], "unimpaired": ["That has not been impaired or altered; lacking nothing essential, especially not damaged"], "unaltered": ["That has not been impaired or altered; lacking nothing essential, especially not damaged"], "unchanged": ["That has not been impaired or altered; lacking nothing essential, especially not damaged"], "oil of vitriol": ["A highly corrosive acid made from sulfur dioxide; widely used in the chemical industry."], "one thousand": ["The cardinal number between nine hundred and ninety nine and one thousand and one."], "six thousand": ["The cardinal number between five thousand nine hundred and ninety nine and six thousand and one."], "pnictide": ["A binary chemical compound comprising a pnictogen."], "Adjukru": ["A language of C\u00f4te d'Ivoire."], "Adyoukrou": ["A language of C\u00f4te d'Ivoire."], "Adyukru": ["A language of C\u00f4te d'Ivoire."], "Ajukru": ["A language of C\u00f4te d'Ivoire."], "GIS": ["An organized collection of computer hardware, software, geographic data, and personnel designed to efficiently capture, store, update, manipulate, analyze, and display all forms of geographically referenced information that can be drawn from different sources, both statistical and mapped."], "you can't judge a book by its cover": ["One shouldn't judge someone or something only based on appearances."], "don't judge a book by its cover": ["One shouldn't judge someone or something only based on appearances."], "the cowl does not make the monk": ["One shouldn't judge someone or something only based on appearances."], "you can't tell a book by its cover": ["One shouldn't judge someone or something only based on appearances."], "fine feathers make fine birds": ["The outside appearance of a person reflects his personality."], "red warbler": ["A small passerine bird of the species Cardellina ruber endemic to the highlands of Mexico."], "clonal colony": ["A group of genetically identical individuals (plants, fungi, bacteria etc.) that have grown in a given location, all originating from asexual reproduction of a single ancestor."], "third-born": ["Having two older siblings.", "A person having two older siblings."], "third born": ["Having two older siblings.", "A person having two older siblings."], "superefficient": ["Very efficient."], "super-efficient": ["Very efficient."], "angelicalness": ["The state or quality of being angelical."], "amidst": ["[Denotes a mingling or intermixing with distinct or separable objects.]"], "amid": ["[Denotes a mingling or intermixing with distinct or separable objects.]"], "us": ["1st person plural subject pronoun."], "Mahan": ["A Northern Nubian language of the Nilo-Saharan phylum, currently spoken along the banks of the Nile river in southern Egypt and northern Sudan by approximately 495,000 Nubians."], "unveil": ["To make known something heretofore kept secret.", "To remove a veil from."], "stylish": ["Characterized by or exhibiting refinement, grace and beauty.", "Characterized by a particular style."], "virtually": ["All, but not quite; slightly short of ; close to entirely.", "In a virtual manner."], "North-eastern Kannada": ["A dialect of the Kannada language spoken in the North of the state of Karnataka, India."], "vintager": ["A person who grows grapes."], "vine grower": ["A person who grows grapes."], "vine-grower": ["A person who grows grapes."], "Cornelian cherry": ["A flowering plant native to southern Europe and southwest Asia with edible berries."], "European cornel": ["A flowering plant native to southern Europe and southwest Asia with edible berries."], "chloracne": ["An acne-like eruption of blackheads, cysts, and pustules associated with over-exposure to certain halogenated aromatic compounds."], "present tense": ["Grammatical tense that describes the present or ongoing conditions."], "complete atrioventricular septal defect": ["Congenital heart disease consisting of the presence of a single, defective, valve between the atria and the ventricles instead of two (mitral and tricuspid valves), and pathological holes in the septum, between the two atria and between the two ventricles, on both ends of the valve."], "CAVSD": ["Congenital heart disease consisting of the presence of a single, defective, valve between the atria and the ventricles instead of two (mitral and tricuspid valves), and pathological holes in the septum, between the two atria and between the two ventricles, on both ends of the valve."], "complete AVSD": ["Congenital heart disease consisting of the presence of a single, defective, valve between the atria and the ventricles instead of two (mitral and tricuspid valves), and pathological holes in the septum, between the two atria and between the two ventricles, on both ends of the valve."], "counter-culture": ["Cultural system which develops in conflict with the prevailing culture."], "triduan": ["Lasting three days.", "Happening every third day."], "three-day": ["Lasting three days."], "schmooze": ["To chat casually with someone with the hope of obtaining some advantage from it.", "A casual chat with someone, with the hope of obtaining some advantage from it."], "shmooze": ["To chat casually with someone with the hope of obtaining some advantage from it."], "two-month": ["Lasting two months."], "bimestrial": ["Occurring every two months."], "mandrake": ["A plant of the genus Mandragora.", "A small demon having a human shape and no beard."], "mandragora": ["A small demon having a human shape and no beard."], "vinyl": ["A conventional record made of vinyl as opposed to a compact disc."], "win-win": ["That benefits all parties involved, without the need of a compromise."], "jawbone": ["The bone of the lower jaw."], "public phone": ["A telephone with which the communication is payed by inserting money, a credit card, or a telephone card."], "payphone": ["A telephone with which the communication is payed by inserting money, a credit card, or a telephone card."], "pay phone": ["A telephone with which the communication is payed by inserting money, a credit card, or a telephone card."], "public telephone": ["A telephone with which the communication is payed by inserting money, a credit card, or a telephone card."], "zoological park": ["Area in which animals, especially wild animals, are kept so that people can go and look at them, or study them."], "normothermic": ["Having a normal body temperature."], "normothermia": ["The condition of having a normal body temperature."], "outreach": ["To provide charitable services to people who would otherwise not have access to those services.", "The act of providing charitable services to people who would otherwise not have access to those services."], "uglify": ["To make ugly.", "To become ugly."], "uglification": ["The process of making or becoming ugly."], "beautify": ["To make more beautiful.", "To be beautiful to look at."], "prettify": ["To make more beautiful."], "beautification": ["The process of making or becoming more beautiful."], "-ification": ["The process of becoming."], "signal lamp": ["A blinker lamp for signaling in Morse code."], "Aldis lamp": ["A blinker lamp for signaling in Morse code."], "duodecimal system": ["A numeral system using twelve as its base."], "cainophobia": ["Fear of new things or experiences."], "cainotophobia": ["Fear of new things or experiences."], "cut somebody's throat": ["To cut the throat of."], "get right": ["To choose the right thing."], "chuck out": ["To Oust or expel, especially people."], "kick out": ["To Oust or expel, especially people."], "be incombent on": ["to be a duty for"], "tumbler": ["An athlete who performs acts requiring skill, agility and coordination.", "A movable part in a lock, which is moved by a key for locking or unlocking."], "vermiform appendix": ["A small excrescence of the cecum."], "cecal appendix": ["A small excrescence of the cecum."], "caecal appendix": ["A small excrescence of the cecum."], "vermix": ["A small excrescence of the cecum."], "doctrinally": ["In a doctrinal manner."], "forsythia": ["A shrub native to Asia and Eastern Europe which is cultivated for its yellow flowers, which bloom in early spring."], "symphonic": ["Pertaining to, or having the character of a symphony."], "dark horse": ["A little-known person or thing that quickly emerges to prominence."], "Akkala Sami": ["A Sami language that was spoken in the south-west of the Kola Peninsula in Russia."], "abomasum": ["The fourth stomach compartment in ruminants."], "maw": ["The fourth stomach compartment in ruminants."], "rennet-bag": ["The fourth stomach compartment in ruminants."], "reed tripe": ["The fourth stomach compartment in ruminants."], "honeycomb": ["The second chamber in the alimentary canal of a ruminant animal"], "kings-hood": ["The second chamber in the alimentary canal of a ruminant animal"], "reticulorumen": ["The first chamber in the alimentary canal of ruminant animals, composed of the rumen and reticulum."], "folio": ["A sheet of paper folded once that constitutes two leaves or four pages of a book or manuscript.", "A book made of sheets of paper each folded once (two leaves or four pages to the sheet); hence, a book of the largest kind, exceeding 30 cm in height.", "The page number on a printed page of a book."], "quarto": ["A size of paper (7.5\"-10\" x 10\"-12.5\")(190-254 x 254-312 mm), formed by folding and cutting one of several standard sizes of paper (15\"-20\" x 20\"-25\")(381-508 x 508-635 mm) twice to form 4 leaves (eight sides).", "A book size, corresponding to the quarto paper size."], "4to": ["Abbreviation of quarto, a paper size."], "4\u00ba": ["Abbreviation of quarto, a paper size."], "Q": ["Abbreviation of quarto, a book size ."], "fo": ["The abbreviation for folio, a book size.", "The abbreviation for folio, a book size."], "2\u00ba": ["The abbreviation for folio, a book size."], "octavo": ["A sheet of paper 7 to 10 inches (17-25 cm) high and 4.5 to 6 inches (11-15 cm) wide, the size varying with the large original sheet used to create it, made by folding the original sheet three times to produce eight leaves.", "A book made of octavo pages."], "8vo": ["Abbreviation of octavo, a page size.", "Abbreviation of octavo, a book size."], "8\u00ba": ["Abbreviation of octavo, a page size.", "Abbreviation of octavo, a book size."], "underworld": ["The world of the dead, located underneath the world of the living."], "regrettably": ["In an unfortunate manner."], "unluckily": ["In an unfortunate manner."], "mantelpiece": ["A shelf that is affixed to the wall above a fireplace."], "fireplace mantel": ["A shelf that is affixed to the wall above a fireplace."], "chimneypiece": ["A shelf that is affixed to the wall above a fireplace."], "papal conclave": ["A meeting of the College of Cardinals in the Sistine Chapel in Rome convened to elect a new pope."], "irrecoverably": ["In a manner that cannot be recovered from or made good."], "irretrievably": ["In a manner that cannot be recovered from or made good."], "irreparably": ["In a manner that cannot be recovered from or made good."], "bloodied": ["Covered in blood."], "gory": ["Covered in blood."], "sanguinolent": ["Covered in blood."], "murine": ["Relating to, or characteristic of, the mouse, rat or any mammal of the family Muridae."], "sea horse": ["A large Arctic marine mammal (Odobenus rosmarus), related to seals and having long tusks, tough, wrinkled skin, and four flippers.", "A small marine fish of the genus Hippocampus that has a horselike head."], "seahorse": ["A large Arctic marine mammal (Odobenus rosmarus), related to seals and having long tusks, tough, wrinkled skin, and four flippers.", "A small marine fish of the genus Hippocampus that has a horselike head."], "hippocampus": ["A mythological creature with the front head and forelimbs of a horse and the rear of a dolphin.", "A part of the brain located inside the temporal lobe, consisting mainly of grey matter which plays a role in memory and emotion."], "hippocamp": ["A mythological creature with the front head and forelimbs of a horse and the rear of a dolphin."], "sea-horse": ["A mythological creature with the front head and forelimbs of a horse and the rear of a dolphin."], "hippocampal": ["Relating to the hippocampus (a part of the brain)."], "deafening silence": ["A silence, or a lack of any response, such as due to disapproval or lack of any enthusiasm."], "lavish": ["Who spends a lot, in an excessive manner.", "Very generous; giving (money, praise, etc.) in abundance."], "munificent": ["Very liberal in giving or bestowing.", "Very generous; giving (money, praise, etc.) in abundance."], "overgenerous": ["Very generous; giving (money, praise, etc.) in abundance."], "profuse": ["Very generous; giving (money, praise, etc.) in abundance."], "prodigal": ["Very generous; giving (money, praise, etc.) in abundance."], "stylishly": ["In a stylish manner."], "common carp": ["A tall freshwater fish from the species Cyprinus carpio with a high back, original from Asia."], "European carp": ["A tall freshwater fish from the species Cyprinus carpio with a high back, original from Asia."], "macaron": ["A sweet meringue-based confectionery made with egg white, sugar, almonds and various flavours, such as chocolate, vanilla or raspberry."], "Bohemian waxwing": ["A songbird of the waxwing family."], "mycologist": ["A person who studies, professes or practices mycology."], "plight": ["A bad or unfortunate situation."], "threshing floor": ["Dry flat area where the grain is separated from the straw or husks by beating."], "thrashing floor": ["Dry flat area where the grain is separated from the straw or husks by beating."], "threshing-floor": ["Dry flat area where the grain is separated from the straw or husks by beating."], "OD": ["To take an excessive dose of a substance."], "Darkinyung": ["An extinct Australian Aboriginal language spoken by the Darkinjung people."], "Darkinjung": ["An extinct Australian Aboriginal language spoken by the Darkinjung people."], "Darkinjang": ["An extinct Australian Aboriginal language spoken by the Darkinjung people."], "Darki\u00f1ung": ["An extinct Australian Aboriginal language spoken by the Darkinjung people."], "Darginjang": ["An extinct Australian Aboriginal language spoken by the Darkinjung people."], "Darginyung": ["An extinct Australian Aboriginal language spoken by the Darkinjung people."], "Darkinung": ["An extinct Australian Aboriginal language spoken by the Darkinjung people."], "Darkinoong": ["An extinct Australian Aboriginal language spoken by the Darkinjung people."], "Darknung": ["An extinct Australian Aboriginal language spoken by the Darkinjung people."], "Kala Lagaw Ya": ["A language indigenous to all the central and western Torres Strait Islands, Queensland, Australia."], "Emilian": ["A language spoken almost exclusively in the historical region of Emilia, Italy."], "Standard Fijian": ["A language of Fiji"], "porcellaneous": ["Of or relating to porcelain; resembling porcelain."], "porcelaneous": ["Of or relating to porcelain; resembling porcelain."], "camauro": ["A cap traditionally worn by the Pope of the Catholic Church."], "summer lilac": ["A species of flowering plant native to China and Japan which is popular as ornamental plant."], "butterfly-bush": ["A species of flowering plant native to China and Japan which is popular as ornamental plant."], "orange eye": ["A species of flowering plant native to China and Japan which is popular as ornamental plant."], "rice oil": ["Common cooking oil in Asia, produced from the bran of rice, it is a by-product of milled white rice."], "adenocarcinoma": ["A cancerous tumor that starts in cells with gland-like properties that line some internal organs. The majority of all breast, colon, and prostrate cancers are adenocarcinomas."], "low-till farming": ["An agricultural planting practice - generally using a \"planter\" or \"seed drill\" - in which disturbance of the soil is kept to a minimum."], "Far East": ["The Eastern part of the Eurasian continent, that is located east of the Middle East, comprising East Asia, Southeast Asia and Russian Far East."], "anaesthesiology": ["The science, study, or practice of the use of anesthesia or anesthetics."], "an\u00e6sthesiology": ["The science, study, or practice of the use of anesthesia or anesthetics."], "pestle": ["A heavy cylindrical object with a rounded end used for crushing and grinding."], "kickback": ["A pre-agreed commission given by one of the parties in a financial transaction to somebody who has facilitated or made possible the transaction, without the knowledge of the other party."], "Euler's number": ["The base of the natural logarithm, beginning 2.7182...."], "put standing": ["To place in vertical or quasi-vertical position, stable by the sole combined effect of gravity and support(s) reaction."], "homophobic": ["Having or conveying a dislike of homosexuals or homosexuality."], "homophobia": ["The dislike or hate of homosexuals or homosexuality."], "homophobe": ["A person who dislikes or hates homosexuals or homosexuality."], "nevus": ["A benign growth on the skin (usually tan, brown, or flesh-colored) that contains a cluster of melanocytes and may form a slight relief."], "naevus": ["A benign growth on the skin (usually tan, brown, or flesh-colored) that contains a cluster of melanocytes and may form a slight relief."], "n\u00e6vus": ["A benign growth on the skin (usually tan, brown, or flesh-colored) that contains a cluster of melanocytes and may form a slight relief."], "\u00feorn": ["A letter in the Old English, Gothic, Old Norse, and Icelandic alphabets."], "biological marker": ["A normal metabolite that, when present in abnormal concentrations in certain body fluids, can indicate the presence of a particular disease or toxicological condition."], "fortune teller": ["A person who gives predictions about the future of a person's life."], "fortuneteller": ["A person who gives predictions about the future of a person's life."], "fortune-telling": ["The practice of predicting information about a person's future."], "fortune telling": ["The practice of predicting information about a person's future."], "summarise": ["To restate the main points, or ideas, in a condensed form."], "acidophilia": ["The preference of acidic conditions."], "acidophile": ["An organism that prefers acidic conditions."], "acidophilic": ["Preferring acidic conditions."], "alkaliphilia": ["The preference of alkaline environments."], "alkalophilia": ["The preference of alkaline environments."], "alkalinophilia": ["The preference of alkaline environments."], "alkaliphilic": ["That prefers alkaline environments."], "alkalinophilic": ["That prefers alkaline environments."], "alkalophilic": ["That prefers alkaline environments."], "alkaliphile": ["An organism that prefers alkaline environments."], "alkalinophile": ["An organism that prefers alkaline environments."], "alkalophile": ["An organism that prefers alkaline environments."], "anthophilia": ["The attraction to, or love of flowers."], "anthophile": ["A person who loves flowers.", "An organism that is attracted to flowers."], "anthophilic": ["That is attracted to, or loves flowers."], "anthophilous": ["Living or growing on flowers."], "anthophagous": ["That feeds on flowers."], "Nama": ["A Khoisan language spoken by the Nama people in South Africa, Namibia and Botswana."], "N\u00e0m\u00e1": ["A Khoisan language spoken by the Nama people in South Africa, Namibia and Botswana."], "Mizo": ["A Sino-Tibetan language spoken by the Mizo people in the Mizoram state of India, and in some neighboring states."], "Lushai": ["A Sino-Tibetan language spoken by the Mizo people in the Mizoram state of India, and in some neighboring states."], "Teton Sioux": ["A language of the USA and Canada."], "Manitoba": ["A province in western Canada."], "tell fortunes": ["To predict information about a person's future."], "tell a person his fortune": ["To predict information about a person's future."], "starchy": ["Of or pertaining to starch.", "Containing starch.", "Of cloth: Stiffened with starch."], "starched": ["Of cloth: Stiffened with starch."], "cornstarch": ["A very fine starch powder derived from corn, used as a thickener in cooking."], "corn starch": ["A very fine starch powder derived from corn, used as a thickener in cooking."], "cornflour": ["A very fine starch powder derived from corn, used as a thickener in cooking."], "maize starch": ["A very fine starch powder derived from corn, used as a thickener in cooking."], "macadamize": ["To cover a surface, such as a road or a street, with a layer of crushed stones."], "melatonin": ["A hormone of formula C13H16N2O2 that regulates the sleep-wake cycles in humans."], "N-acetyl-5-methoxytryptamine": ["A hormone of formula C13H16N2O2 that regulates the sleep-wake cycles in humans."], "protodeacon": ["The senior cardinal deacon of the Catholic Church, in order of appointment.", "An honorific title given to a deacon in the Orthodox Church."], "Cardinal protodeacon": ["The senior cardinal deacon of the Catholic Church, in order of appointment."], "Trisagion": ["A standard hymn of the Divine Liturgy used in several Christian Churches."], "albeit": ["In spite of being."], "heliosphere": ["The region of space dominated by Earth's Sun."], "heliopause": ["The boundary of heliosphere where the solar wind is stopped by the interstellar medium."], "deicide": ["The killing of a god or goddess.", "The killer of a god or goddess."], "deify": ["To make a god of."], "placement": ["The manner in which objects or persons have been organized or arranged; the result of arranging."], "disposition": ["A complex mental state involving beliefs and feelings and values and tendencies to act in certain ways.", "The manner in which objects or persons have been organized or arranged; the result of arranging."], "apotheosize": ["To make a god of."], "apotheosise": ["To make a god of."], "hagiography": ["A biography of a saint."], "touch\u00e9": ["[An exclamation said by a fencer who is hit in fencing.]", "[An exclamation said by a person who acknowledges being defeated in an argument or discussion.]"], "touch\u00e9!": ["[An exclamation said by a fencer who is hit in fencing.]"], "vomitive": ["An agent that causes vomiting."], "vomitory": ["An agent that causes vomiting."], "kittie": ["A young cat."], "playful": ["Who likes to play for entertainment, like a child or a kitten."], "comradery": ["A close friendship between people who are in a same group or team."], "camaraderie": ["A close friendship between people who are in a same group or team."], "chumminess": ["A close friendship between people who are in a same group or team."], "comradeship": ["A close friendship between people who are in a same group or team."], "comradeliness": ["A close friendship between people who are in a same group or team."], "esoteric": ["Not understandable by the non-initiated."], "catkin": ["A type of inflorescence arranged in a cylindrical cluster."], "ament": ["A type of inflorescence arranged in a cylindrical cluster."], "American willow": ["A willow of the species Salix discolor native to North America."], "dust bunny": ["A small clump of dust that tends to accumulate indoors in areas that are not regularly dusted, such as under heavy furniture."], "dust kitty": ["A small clump of dust that tends to accumulate indoors in areas that are not regularly dusted, such as under heavy furniture."], "dust mouse": ["A small clump of dust that tends to accumulate indoors in areas that are not regularly dusted, such as under heavy furniture."], "beggar's velvet": ["A small clump of dust that tends to accumulate indoors in areas that are not regularly dusted, such as under heavy furniture."], "slut's wool": ["A small clump of dust that tends to accumulate indoors in areas that are not regularly dusted, such as under heavy furniture."], "dust kitten": ["A small clump of dust that tends to accumulate indoors in areas that are not regularly dusted, such as under heavy furniture."], "collet": ["The rim of a ring within which a jewel is set."], "perfect is the enemy of good": ["Insisting on perfection can result in no improvement at all."], "the perfect is the enemy of the good": ["Insisting on perfection can result in no improvement at all."], "perfection is the enemy of good": ["Insisting on perfection can result in no improvement at all."], "perfection is the enemy of the good": ["Insisting on perfection can result in no improvement at all."], "Ngaju": ["An Austronesian language spoken along the Kapuas, Kahayan, Katingan, and Mentaya Rivers in Central Borneo, Indonesia."], "Old Javanese": ["The oldest phase of the Javanese language that developed into Middle Javanese by the 13th century."], "Sardu": ["A Sardinian language spoken in the south of the island of Sardinia."], "Campidanese": ["A Sardinian language spoken in the south of the island of Sardinia."], "Campidese": ["A Sardinian language spoken in the south of the island of Sardinia."], "South Sardinian": ["A Sardinian language spoken in the south of the island of Sardinia."], "Central Campidanese": ["A dialect of the Campidanese Sardinian language."], "Cagliaritan": ["A dialect of the Campidanese Sardinian language spoken around the city of Cagliari."], "Northeastern Sardinian": ["A dialect of Sardinian spoken in northeastern Sardinia."], "Sard": ["A Sardinian language spoken in the center-North of the island of Sardinia."], "Sardarese": ["A Sardinian language spoken in the center-North of the island of Sardinia."], "Logudorese": ["A Sardinian language spoken in the center-North of the island of Sardinia."], "Central Sardinian": ["A Sardinian language spoken in the center-North of the island of Sardinia."], "Southwestern Logudorese": ["A dialect of Logudorese Sardinian."], "Northern Logudorese": ["A dialect of Logudorese Sardinian."], "Northwestern Sardinian": ["A Southern Romance language and transitional between Sardinian and Corsican."], "electronic key": ["A card with a magnetic stripe or a chip that is used to open a door."], "Pipil": ["A Uto-Aztecan language spoken in El Salvador by the Pipil people."], "Nawat": ["A Uto-Aztecan language spoken in El Salvador by the Pipil people."], "cleavage": ["The act of cleaving or the state of being cleft.", "The tendency of a crystal to split along specific planes.", "The repeated division of a cell into daughter cells after mitosis.", "The hollow or separation between a woman's breasts.", "The splitting of a large molecule into smaller ones."], "intermammary sulcus": ["The hollow or separation between a woman's breasts."], "d\u00e9collet\u00e9": ["Having a low neckline that reveals part of the breasts."], "decollete": ["Having a low neckline that reveals part of the breasts."], "d\u00e9colletage": ["A low neckline on a woman's dress that reveals part of the breasts."], "decolletage": ["A low neckline on a woman's dress that reveals part of the breasts."], "intermammary cleft": ["The hollow or separation between a woman's breasts."], "skipping rope": ["The primary tool used in the game where one or more participants jump over a rope swung so that it passes under their feet and over their heads."], "skip rope": ["The primary tool used in the game where one or more participants jump over a rope swung so that it passes under their feet and over their heads."], "glove puppet": ["A type of puppet that is controlled by the hand or hands that occupies the interior of the puppet."], "airan": ["A refreshing beverage that consists of yoghurt, cold water and salt."], "North Magnetic Pole": ["The point on the surface of Earth's Northern Hemisphere at which the planet's magnetic field points vertically downwards."], "fire escape staircase": ["Stairs designed to be used when a place must be evacuated quickly, such as in case of fire."], "sinopia": ["A basic design made \u200b\u200bon the plaster of a wall before painting a fresco."], "ducted propeller": ["A propeller fitted inside a non-rotating cylinder, used to improve the efficiency of the propeller at low speeds."], "h\u00e9lice carenada": ["A propeller fitted inside a non-rotating cylinder, used to improve the efficiency of the propeller at low speeds."], "h\u00e9lice-tobera": ["A propeller fitted inside a non-rotating cylinder, used to improve the efficiency of the propeller at low speeds."], "crapshoot": ["A risky venture with an uncertain outcome.", "A game of craps (dice game)."], "hidebound": ["(of a book) Bound with the hide of an animal.", "(of an animal) Having the skin adhering abnormally close to the flesh.", "(of trees) Having the bark so tight that it impedes the growth.", "Having restricted or rigid views, and being unreceptive to new ideas."], "narrow-minded": ["Having restricted or rigid views, and being unreceptive to new ideas."], "narrowminded": ["Having restricted or rigid views, and being unreceptive to new ideas."], "close-minded": ["Having restricted or rigid views, and being unreceptive to new ideas."], "closed-minded": ["Having restricted or rigid views, and being unreceptive to new ideas."], "narrow minded": ["Having restricted or rigid views, and being unreceptive to new ideas."], "small-minded": ["Having restricted or rigid views, and being unreceptive to new ideas."], "narrow of mind": ["Having restricted or rigid views, and being unreceptive to new ideas."], "frenemy": ["An enemy pretending to be a friend."], "frienemy": ["An enemy pretending to be a friend."], "snow crocus": ["A type of crocus that is among the first to bloom at the end of winter."], "Pacific": ["The world's largest body of water, to the east of Asia and Australasia and to the west of the Americas."], "pull one's socks up": ["Execute or confront a task with dedication and diligence."], "demagogical": ["Of or pertaining to demagogy or a demagogue."], "demagogically": ["In a demagogic manner."], "zoophoric": ["In the classical orders designation of an Ionic frieze, consisting of a continuous band, decorated with figures of carved humans and/or animals."], "sleeping woman": ["A woman who is sleeping."], "sleeping car": ["A railroad passenger car that has beds where passengers can sleep."], "sleeper car": ["A railroad passenger car that has beds where passengers can sleep."], "reminisce": ["To talk or write about past experiences."], "stirring": ["(For a music, song, etc.) Having a stimulating effect, such as giving the desire to dance."], "rousing": ["(For a music, song, etc.) Having a stimulating effect, such as giving the desire to dance."], "syllabus": ["A summary of topics which will be discussed in a course."], "gunfighter": ["(Old West) A person able to shoot quickly and accurately with a gun."], "gunslinger": ["(Old West) A person able to shoot quickly and accurately with a gun."], "gunman": ["(Old West) A person able to shoot quickly and accurately with a gun."], "marksmanship": ["The ability to shoot accurately at a target."], "markswoman": ["A woman trained to shoot precisely with a certain type of rifle."], "giant squid": ["A deep-ocean dwelling squid of the genus Architeuthis."], "colossal squid": ["A squid of the species Mesonychoteuthis hamiltoni measuring up to 12-14m."], "Antarctic squid": ["A squid of the species Mesonychoteuthis hamiltoni measuring up to 12-14m."], "giant cranch squid": ["A squid of the species Mesonychoteuthis hamiltoni measuring up to 12-14m."], "nursemaid": ["A woman who watches over someone else's kids usually as a full-time job."], "babysitter": ["A person who cares for the children of others occasionally and for a short period of time."], "baby-sitter": ["A person who cares for the children of others occasionally and for a short period of time."], "babysitting": ["The practice of temporarily caring for children of another person."], "baby sitting": ["The practice of temporarily caring for children of another person."], "baby-sitting": ["The practice of temporarily caring for children of another person."], "Lafofa languages": ["A Niger\u2013Congo language cluster spoken in Kordofan, Sudan."], "Tegem languages": ["A Niger\u2013Congo language cluster spoken in Kordofan, Sudan."], "Jebel Tekeim": ["A Niger\u2013Congo language spoken in Kordofan, Sudan."], "honeybee": ["A stinging, social, domesticated insect (Apis mellifera) kept by humans for the creation of beeswax and honey."], "Berezina River": ["A ca. 613 km long river in Belarus and a tributary of the Dnieper River."], "Mandailing": ["A language of Indonesia (Sumatra)."], "cassiopeium": ["Chemical element with symbol Lu and atomic number 71, silvery white lanthanide."], "seed bank": ["A place where seeds are stored for short-term use in farming or for long-term preservation (Source: GreenFacts)."], "blood-brain barrier": ["A separation of circulating blood from the brain extracellular fluid (BECF) in the central nervous system (CNS)."], "biocapacity": ["The capacity of an area to provide resources and absorb wastes."], "biofilm": ["An aggregate of microorganisms in which cells adhere to each other on a surface."], "biomolecule": ["Any molecule that is produced by a living organism."], "bioterrorism": ["Terrorism involving the intentional release or dissemination of biological agents."], "taiga": ["A biome characterized by coniferous forests consisting mostly of pines, spruces and larches."], "boreal forest": ["A biome characterized by coniferous forests consisting mostly of pines, spruces and larches."], "International Energy Agency": ["An intergovernmental organisation which acts as energy policy advisor to member countries in their effort to ensure reliable, affordable and clean energy for their citizens."], "worker bee": ["A sterile female bee whose speciality is to support the hive, especially by collecting pollen."], "IEA": ["An intergovernmental organisation which acts as energy policy advisor to member countries in their effort to ensure reliable, affordable and clean energy for their citizens."], "psychedelic": ["A psychoactive drug whose primary action is to alter cognition and perception.", "Relating to or denoting new or altered perceptions or sensory experiences."], "psychedelic substance": ["A psychoactive drug whose primary action is to alter cognition and perception."], "dissociative": ["A class of hallucinogen, which distort perceptions of sight and sound and produce feelings of detachment - dissociation - from the environment and self."], "deliriant": ["A class of hallucinogen that produces delirium."], "anticholinergic": ["A class of hallucinogen that produces delirium."], "hallucinogen": ["A general group of pharmacological agents that can cause subjective changes in perception, thought, emotion and consciousness."], "waterlogging": ["The saturation of soil with water."], "antimicrobial": ["An agent that kills microorganisms or inhibits their growth."], "Earth's magnetic field": ["The magnetic field that extends from the Earth's inner core to where it meets the solar wind."], "geomagnetic field": ["The magnetic field that extends from the Earth's inner core to where it meets the solar wind."], "pyromaniac": ["Someone who is obsessed with fire."], "pyromaniacal": ["Of or relating to pyromania."], "Pyrenean": ["Of or pertaining to the Pyrenees, a range of mountains separating France and Spain."], "veisalgia": ["The sickness, nausea and headaches that occur the morning after a person drinks too much alcohol."], "protectionism": ["The economic policy of restraining trade between states through government regulations designed to promote goods and services produced domestically with respect to imports."], "agricultural subsidy": ["A governmental subsidy paid to farmers and agribusinesses to supplement their income, manage the supply of agricultural commodities, and influence the cost and supply of such commodities."], "vehemently": ["In a vehement manner."], "computer crime": ["Any crime that involves a computer and a network."], "child pornography": ["Pornography depicting sexually explicit activities involving a child."], "adware": ["Any software package which automatically renders advertisements in order to generate revenue for its author."], "advertising-supported software": ["Any software package which automatically renders advertisements in order to generate revenue for its author."], "keylogging": ["The recording of the keys struck on a keyboard, typically in a covert manner so that the person using the keyboard is unaware that their actions are being monitored."], "code injection": ["The exploitation of a computer bug that is caused by processing invalid data."], "buffer overrun": ["An anomaly where a process stores data in a buffer outside the memory the programmer set aside for it."], "cyclic redundancy check": ["An error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data."], "self-modifying code": ["A machine code that alters its own instructions while it is executing."], "zero-day attack": ["An attack that exploits a previously unknown vulnerability in a computer application."], "ransomware": ["A class of malware which restricts access to the computer system that it infects, and demands a ransom paid to the creator of the malware in order for the restriction to be removed."], "meteorological": ["Of or pertaining to meteorology."], "meteorologic": ["Of or pertaining to meteorology."], "Ligurian Sea": ["A part of the Mediterranean Sea between the Italian Riviera, Corsica and Elba."], "Balearic Sea": ["A sea in the Mediterranean Sea in between the Balearic Islands and Levante."], "Iberian Sea": ["A sea in the Mediterranean Sea in between the Balearic Islands and Levante."], "calligraphic": ["Of or pertaining to calligraphy.", "Written in an artistic style or manner, as calligraphy."], "Icarian Sea": ["The part of the Mediterranean Sea between Cyclades and Asia Minor."], "Asia Minor": ["A large peninsula between the Mediterranean Sea, the Aegean Sea and the Black Sea; it makes up the Asian part of Turkey."], "Anatolia": ["A large peninsula between the Mediterranean Sea, the Aegean Sea and the Black Sea; it makes up the Asian part of Turkey."], "cyberwarfare": ["Politically motivated hacking to conduct sabotage and espionage."], "cyberstalking": ["The use of the Internet or other electronic means to stalk or harass an individual, a group of individuals, or an organization."], "learning management system": ["A software application for the administration, documentation, tracking, reporting and delivery of education courses or training programs."], "content management system": ["A computer program that allows publishing, editing and modifying content as well as maintenance from a central interface."], "CMS": ["A computer program that allows publishing, editing and modifying content as well as maintenance from a central interface."], "remote procedure call": ["An inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding the details for this remote interaction."], "email client": ["A computer program used to access and manage a user's email."], "email reader": ["A computer program used to access and manage a user's email."], "mail user agent": ["A computer program used to access and manage a user's email."], "software patent": ["A patent on any performance of a computer realised by means of a computer program."], "preprocessor": ["A program that processes its input data to produce output that is used as input to another program."], "soursop": ["The fruit of Annona muricata, a tree native to Mexico.", "A tropical evergreen tree of the species Annona muricata, reaching up to 4 meters."], "Hindu": ["A person adhering to the Hindu religion (Hinduism).", "Of, or relating to Hinduism, or to Hindus and their culture."], "sugar substitute": ["A sweetening agent, especially one that does not contain sugar."], "trot": ["To walk rapidly."], "depress": ["To make depressed, sad or bored."], "configure": ["To set up or arrange something in such a way that it is ready for operation for a particular purpose, or to someone's particular liking."], "occupy": ["To make oneself or someone to have a lot of things to do.", "To have a right, title, or office.", "To have permanent residence.", "To make full.", "To have, or to have taken, possession or control of (a territory).", "To fill or take up a place (a seat, a room etc.)."], "instalar": ["To establish a colony."], "run into": ["To come together with someone by accident.", "To hit or come into contact against something."], "come across": ["To encounter something by accident or after searching for it.", "To come together with someone by accident."], "gate-crash": ["To attend a social event without invitation."], "marvel": ["To overwhelm with surprise or sudden wonder."], "oppose": ["To attempt to stop the progression of (someone or something)."], "postmortem": ["Occurring after death."], "post-mortem": ["Occurring after death."], "post-it note": ["A small piece of paper with an adhesive strip on one side."], "sticky note": ["A small piece of paper with an adhesive strip on one side."], "sticky-note": ["A small piece of paper with an adhesive strip on one side."], "post-traumatic stress disorder": ["Any condition that develops following some stressful situation or event; such as sleep disturbance, recurrent dreams, withdrawal or lack of concentration."], "PTSD": ["Any condition that develops following some stressful situation or event; such as sleep disturbance, recurrent dreams, withdrawal or lack of concentration."], "posttraumatic stress disorder": ["Any condition that develops following some stressful situation or event; such as sleep disturbance, recurrent dreams, withdrawal or lack of concentration."], "hold in place": ["To make something fixed or stable; to cause to be firmly attached."], "supplant": ["To take the place of; to replace, to supersede.", "To cause the downfall of; to remove violently."], "retransmit": ["To transmit again."], "resend": ["To transmit again."], "insure": ["To provide for compensation if some specified risk occurs.", "To subscribe to a policy of insurance.", "To make certain of."], "indemnify": ["To provide for compensation if some specified risk occurs.", "To compensate or reimburse someone for some expense or injury."], "reimburse": ["To compensate with payment; especially, to repay money spent on one's behalf."], "resist": ["To withstand the actions of."], "subscribe": ["To sign up to receive regular copies of a publication, such as a newspaper or a magazine, delivered for a period of time.", "To pay for the provision of a service, such as Internet access or a cell phone plan.", "To believe or agree with a theory or an idea.", "To agree to buy, as of stocks and shares."], "carve": ["To cut or to chip in order to form something."], "esculpir": ["To shape hard or plastic material, commonly stone (either rock or marble), metal, or wood."], "sculpt": ["To shape hard or plastic material, commonly stone (either rock or marble), metal, or wood."], "impel": ["To drive forward; to propel an object.", "To impose urgently, importunately, or inexorably."], "consign": ["To send to a final destination."], "give credit": ["To sell on credit."], "sell on credit": ["To sell on credit."], "hoist": ["To raise or lift to a desired elevation, by means of tackle or pulley, as a sail, a flag, a heavy package or weight."], "cling": ["To grip tightly or tenaciously.", "To come or be in close contact with; to stick or hold together and resist separation."], "relocate": ["To change one's domicile or place of business."], "molt": ["To shed hair, feathers, skin, horns etc. and replace it by a fresh layer."], "valise": ["An item of luggage."], "poetess": ["A woman who writes poems."], "yours": ["Belonging to you."], "superficially": ["In a superficial manner."], "shallowly": ["In a superficial manner."], "recidivate": ["To return to a criminal behaviour."], "be delirious": ["To disrupt the reason due to illness or a strong passion."], "magnify": ["To elevate someone to a higher grade or dignity."], "moderately": ["In a moderate manner."], "Blender": ["A free and open-source 3D computer graphics software product used for creating animated films, visual effects, interactive 3D applications or video games."], "productive": ["Of, or relating to the creation of goods or services."], "peculiar": ["Out of the ordinary."], "Solaris": ["A Unix operating system originally developed by Sun Microsystems. It superseded their earlier SunOS in 1993."], "Oracle Solaris": ["A Unix operating system originally developed by Sun Microsystems. It superseded their earlier SunOS in 1993."], "cursor": ["A moving icon or other representation of the position of the pointing device."], "manipulator": ["A device which can be used to move, arrange or operate something."], "handler": ["A device which can be used to move, arrange or operate something."], "bulge": ["To stick out from (a surface)."], "straighten": ["To cause to become straight."], "flatten": ["To make something flat or flatter."], "animator": ["A person who creates an animation or cartoon."], "cartoonist": ["A person who creates an animation or cartoon."], "preparation": ["The act of preparing or getting ready."], "simulator": ["A machine or system that simulates an environment (such as an aircraft cockpit), often for training purposes."], "redraw": ["To draw again."], "cel animation": ["An animation technique where each frame is drawn on a transparent layer which is later placed over a fixed background."], "remaining": ["Which remains, especially after something else has been removed."], "imprudent": ["Extremely foolish or unwise."], "podiatry": ["The branch of medicine concerned with the diagnosis and treatment of diseases of the feet (and formerly the hands)."], "lambkin": ["Young sheep."], "mutton": ["The flesh of sheep used as food."], "sheepmeat": ["The flesh of sheep used as food."], "sheepflesh": ["The flesh of sheep used as food."], "chiropody": ["The branch of medicine concerned with the diagnosis and treatment of diseases of the feet (and formerly the hands)."], "Moodle": ["A free and open source course management system."], "MySQL": ["An open source relational database management system that runs as a server providing multi-user access to a number of databases."], "XAMPP": ["A free and open source cross-platform web server solution stack package, consisting mainly of the Apache HTTP Server, MySQL database, and interpreters for scripts written in the PHP and Perl programming languages."], "Capri pants": ["Mid-calf pants worn in warm weather."], "Capris": ["Mid-calf pants worn in warm weather."], "crop pants": ["Mid-calf pants worn in warm weather."], "three-quarter shorts": ["Mid-calf pants worn in warm weather."], "clam diggers": ["Mid-calf pants worn in warm weather."], "capri pants": ["Mid-calf pants worn in warm weather."], "cardigan": ["A type of knit shirt having an open front, that can usually be buttoned or zipped."], "pull together": ["A type of knit shirt having an open front, that can usually be buttoned or zipped."], "cardi": ["A type of knit shirt having an open front, that can usually be buttoned or zipped."], "cardie": ["A type of knit shirt having an open front, that can usually be buttoned or zipped."], "cardy": ["A type of knit shirt having an open front, that can usually be buttoned or zipped."], "boxer briefs": ["A type of boxer shorts that are tight-fitting, like briefs."], "tight boxers": ["A type of boxer shorts that are tight-fitting, like briefs."], "boxerbriefs": ["A type of boxer shorts that are tight-fitting, like briefs."], "chemical kinetics": ["That branch of physical chemistry concerned with the mechanisms and rates of chemical reactions."], "palm sugar": ["Sugar made from the sap of various species of palm tree."], "wether": ["A castrated male sheep.", "To castrate a male sheep or goat."], "full beard": ["A beard that covers a large part of the face."], "rustproof": ["Resistant to rust, oxidation and corrosion."], "jetstream": ["Fast flowing, relatively narrow air currents found at the tropopause, located at 10-15 kilometers above the surface of the Earth."], "White Meo": ["A Hmong language spoken mainly in the Chinese regions of central and western Guizhou, southern Sichuan and Yunnan."], "White Miao": ["A Hmong language spoken mainly in the Chinese regions of central and western Guizhou, southern Sichuan and Yunnan."], "Meo Kao": ["A Hmong language spoken mainly in the Chinese regions of central and western Guizhou, southern Sichuan and Yunnan."], "White Lum": ["A Hmong language spoken mainly in the Chinese regions of central and western Guizhou, southern Sichuan and Yunnan."], "Peh Miao": ["A Hmong language spoken mainly in the Chinese regions of central and western Guizhou, southern Sichuan and Yunnan."], "Pe Miao": ["A Hmong language spoken mainly in the Chinese regions of central and western Guizhou, southern Sichuan and Yunnan."], "Chuan Miao": ["A Hmong language spoken mainly in the Chinese regions of central and western Guizhou, southern Sichuan and Yunnan."], "Bai Miao": ["A Hmong language spoken mainly in the Chinese regions of central and western Guizhou, southern Sichuan and Yunnan."], "Chuanqiandian Miao": ["A Hmong language spoken mostly in China in the area where Guizhou, Sichuan and Yunnan provinces meet, and spoken also in Myanmar, Laos and Vietnam."], "Chuanchientien Miao": ["A Hmong language spoken mostly in China in the area where Guizhou, Sichuan and Yunnan provinces meet, and spoken also in Myanmar, Laos and Vietnam."], "Sichuan-Guizhou-Yunnan Hmong": ["A Hmong language spoken mostly in China in the area where Guizhou, Sichuan and Yunnan provinces meet, and spoken also in Myanmar, Laos and Vietnam."], "Tak Miao": ["A Hmong language spoken mostly in China in the area where Guizhou, Sichuan and Yunnan provinces meet, and spoken also in Myanmar, Laos and Vietnam."], "Meo": ["A Hmong language spoken mostly in China in the area where Guizhou, Sichuan and Yunnan provinces meet, and spoken also in Myanmar, Laos and Vietnam."], "Miao": ["A Hmong language spoken mostly in China in the area where Guizhou, Sichuan and Yunnan provinces meet, and spoken also in Myanmar, Laos and Vietnam."], "Western Miao": ["A Hmong language spoken mostly in China in the area where Guizhou, Sichuan and Yunnan provinces meet, and spoken also in Myanmar, Laos and Vietnam."], "reptilianness": ["The quality of being reptilian."], "reptilian": ["Characteristic of, or relating to reptiles."], "hemicrania": ["A headache affecting one side of the head."], "jawdropping": ["Very surprising or shocking, causing astonishment."], "jaw-dropping": ["Very surprising or shocking, causing astonishment."], "jaw-droppingly": ["In a very surprising or shocking manner that causes astonishment."], "jawdroppingly": ["In a very surprising or shocking manner that causes astonishment."], "breathtakingly": ["In a very surprising or shocking manner that causes astonishment."], "FAQ": ["A list of common questions and their answers."], "frequently asked questions": ["A list of common questions and their answers."], "Japanese marten": ["A marten of the species Martes melampus having a dark brown to dull yellow pelage with a cream-colored throat."], "sable": ["A marten of the species Martes zibellina."], "virologist": ["A person who studies or is expert in viruses."], "lichenology": ["The scientific study of lichens."], "lichenologist": ["A person who is expert in lichens."], "lichenological": ["Relating to lichenology."], "lichenologic": ["Relating to lichenology."], "speculoos": ["A type of shortbread biscuit (typically made for consumption on December 5 - St. Nicholas' Eve) that is traditionally stamped with an image or figure on the front."], "intermediary": ["The person being the intermediary among more people to facilitate the creation and conclusion of a contract."], "middle man": ["The person being the intermediary among more people to facilitate the creation and conclusion of a contract.", "An intermediate dealer between a manufacturer and a retailer or customer."], "string trimmer": ["A powered handheld device that uses a flexible monofilament line for cutting grass and small plants."], "edge trimmer": ["A powered handheld device that uses a flexible monofilament line for cutting grass and small plants."], "line trimmer": ["A powered handheld device that uses a flexible monofilament line for cutting grass and small plants."], "strimmer": ["A powered handheld device that uses a flexible monofilament line for cutting grass and small plants."], "weed whacker": ["A powered handheld device that uses a flexible monofilament line for cutting grass and small plants."], "weed eater": ["A powered handheld device that uses a flexible monofilament line for cutting grass and small plants."], "weed-whacker": ["A powered handheld device that uses a flexible monofilament line for cutting grass and small plants."], "clothespin": ["Wood or plastic fastener for holding clothes on a clothesline."], "clothes-peg": ["Wood or plastic fastener for holding clothes on a clothesline."], "clothespeg": ["Wood or plastic fastener for holding clothes on a clothesline."], "all's well that ends well": ["If something ends well, the problems that one may have had to face are not important."], "all is well that ends well": ["If something ends well, the problems that one may have had to face are not important."], "customer service": ["The act of providing services to customers before, during and after a purchase.", "A department of a company that provides services to customers."], "client service": ["The act of providing services to customers before, during and after a purchase.", "A department of a company that provides services to customers."], "adjuvant": ["A pharmacological or immunological agent that enhances the effect of other agents, such as a drug or vaccine."], "weathercast": ["A prediction of future weather, for a specific location."], "read out loud": ["To read a text and pronounce it, so that others can hear it."], "read aloud": ["To read a text and pronounce it, so that others can hear it."], "fin-footed mammal": ["A mammal belonging to the Pinnipedia, an order of aquatic placental mammals having a streamlined body and limbs specialized as flippers: includes seals, sea lions, and the walrus."], "inevitability": ["The condition of being inevitable."], "self-assurance": ["The condition of being confident in oneself."], "self-assuredness": ["The condition of being confident in oneself."], "self-assured": ["Who is confident in oneself."], "Angevin-Orl\u00e9anais": ["A group of Galo-Romance languages spoken in North of France."], "intergalactic": ["Between galaxies.", "Of or relating to multiple galaxies."], "quantitative easing": ["The purchasing, by the central bank of a country, of government bonds using newly created money, in an attempt to lower interest rates and help the economy."], "QE": ["The purchasing, by the central bank of a country, of government bonds using newly created money, in an attempt to lower interest rates and help the economy."], "antidisestablishmentarianism": ["The formal opposition to the separation of church and state."], "French toast": ["A dish made of bread soaked in beaten eggs and then fried."], "eggy bread": ["A dish made of bread soaked in beaten eggs and then fried."], "Gypsy toast": ["A dish made of bread soaked in beaten eggs and then fried."], "P\u00e9rigord": ["A region and former province of France, which corresponds roughly to the current Dordogne d\u00e9partement."], "usage note": ["An observation or comment specifying in which context, or how a word or expression should be used in a sentence."], "sun bear": ["A bear of the species Helarctos malayanus."], "Malayan sun bear": ["A bear of the species Helarctos malayanus."], "honey bear": ["A bear of the species Helarctos malayanus."], "East African land snail": ["A large land snail of the species Achatina fulica."], "giant African land snail": ["A large land snail of the species Achatina fulica.", "A large land snail of the species Achatina achatina.", "A large land snail of the species Archachatina marginata."], "giant Ghana snail": ["A large land snail of the species Achatina achatina."], "giant tiger land snail": ["A large land snail of the species Achatina achatina."], "giant West African snail": ["A large land snail of the species Archachatina marginata."], "Pashayi": ["A Dardic language, or group of languages, spoken by the Pashai people in Afghanistan."], "Pashayi languages": ["A Dardic language, or group of languages, spoken by the Pashai people in Afghanistan."], "Pashai": ["A Dardic language, or group of languages, spoken by the Pashai people in Afghanistan.", "A Pashayi language spoken Northeast of Kabul in Afghanistan."], "Zamyaki": ["A dialect of Nangalami spoken in the Kunar region of Afghanistan."], "Dardic Chitral languages": ["A group of Dardic languages spoken in the Chitral district of Pakistan."], "Chitrali": ["A Dardic language spoken in Chitral, Pakistan."], "Northern Vietnamese": ["A dialect of the Vietnamese language."], "Hanoi Vietnamese": ["A dialect of Northern Vietnamese spoken around the city of Hanoi in Vietnam."], "Central Vietnamese": ["A dialect of the Vietnamese language."], "Southern Vietnamese": ["A dialect of the Vietnamese language."], "Western Hausa": ["A dialect of the Hausa language."], "unpack": ["To remove from a package or container, particularly with respect to items that had previously been arranged closely and securely in a pack."], "get to know": ["To become aware of a fact or situation."], "consecutively": ["In a consecutive manner; without interruption."], "univocally": ["In a univocal way."], "cohesive": ["Having cohesion."], "freely": ["In a free manner."], "ideal": ["Optimal; being the best possibility.", "Perfect, flawless, having no defects."], "stingaree": ["Any of various large, venomous rays, of the orders Rajiformes and Myliobatiformes, having a barbed, whiplike tail."], "record player": ["A device that plays the sound stored on a gramophone record."], "phonograph": ["A device that plays the sound stored on a gramophone record."], "gramophone": ["A device that plays the sound stored on a gramophone record."], "vest": ["A usually sleeveless garment worn over a shirt."], "goo": ["A liquid or semi-liquid, viscous and sticky substance."], "gloop": ["A liquid or semi-liquid, viscous and sticky substance."], "glop": ["A liquid or semi-liquid, viscous and sticky substance."], "goop": ["A liquid or semi-liquid, viscous and sticky substance."], "nor": ["Coordinating link with negative value, usually preceded by another negation."], "online banking": ["Banking carried out electronically, as for example over the Internet."], "e-banking": ["Banking carried out electronically, as for example over the Internet."], "Internet banking": ["Banking carried out electronically, as for example over the Internet."], "implant": ["Of an embryo, to become attached to and embedded in the womb.", "To insert (something) surgically into the body.", "To fix or set securely or deeply."], "supervision": ["The inspection of a job or activity by a superior."], "inclusion": ["The act of adding or annexing, (something) to a group, set, or total."], "functioning": ["The execution of its own function."], "aspire": ["To yearn (for) or have a powerful or ambitious plan, desire, or hope (to do or be something)."], "terrify": ["To frighten greatly; to fill with terror."], "earth over": ["To cover with earth."], "directions": ["A description of how to reach a particular place."], "tubercular": ["Suffering from tuberculosis."], "tuberculous": ["Suffering from tuberculosis."], "independent": ["Not affiliated with any political party.", "Not dependent; not contingent or depending on something else; free."], "decidable": ["Describing a set for which there exists an algorithm that will determine whether any element is or is not within the set in a finite amount of time."], "computable": ["Describing a set for which there exists an algorithm that will determine whether any element is or is not within the set in a finite amount of time."], "quantification": ["A limitation that is imposed on the variables of a proposition."], "subset": ["With respect to another set, a set such that each of its elements is also an element of the other set."], "computability": ["The property of being computable by purely mechanical means."], "invariante": ["Not varying; constant."], "invariant": ["Unaffected by a specified operation (especially by a transformation).", "An invariant quantity, function etc."], "inefficient": ["Not efficient; not producing the effect intended or desired."], "informally": ["In an irregular or informal manner; without the usual forms."], "inherently": ["In an inherent way; naturally, innately, unavoidably."], "polynomially": ["In a polynomial way."], "arising": ["The appearing or manifestation of a phenomenon."], "insensible": ["Incapable of emotional feeling; callous; apathetic."], "magnificent": ["Grand, elegant or splendid in appearance."], "condensation trail": ["An artificial cloud made by the exhaust of jet aircraft or wingtip vortices that precipitate a stream of tiny ice crystals in moist, frigid upper air."], "vapour trail": ["An artificial cloud made by the exhaust of jet aircraft or wingtip vortices that precipitate a stream of tiny ice crystals in moist, frigid upper air."], "brown-out": ["A partial power outage, a disruption in electric power supply that reduces the voltage available causing lights to dim."], "brownout": ["A partial power outage, a disruption in electric power supply that reduces the voltage available causing lights to dim."], "pulse": ["A beat or throb."], "shopping cart": ["Wire basket fastened to a frame with wheels which customers use for collecting purchases in a store."], "caddy": ["Wire basket fastened to a frame with wheels which customers use for collecting purchases in a store."], "supermarket trolley": ["Wire basket fastened to a frame with wheels which customers use for collecting purchases in a store."], "shopping trolley": ["Wire basket fastened to a frame with wheels which customers use for collecting purchases in a store."], "trolley": ["Wire basket fastened to a frame with wheels which customers use for collecting purchases in a store."], "multi": ["a prefix that expresses the idea of \u200b\u200bmultiplicity."], "cardiac muscle": ["The muscular tissue of the heart."], "inflame": ["To arouse or become aroused to violent emotion.", "To set on fire - literally and figuratively.", "To arouse or excite feelings and passions."], "sickbag": ["A small bag impervious to fluids which is provided to passengers onboard airplanes to collect vomit in case of sickness."], "blow-dry": ["To dry with a hair dryer."], "Jyutping": ["A romanization system for Cantonese."], "Jyutpin": ["A romanization system for Cantonese."], "Revised Romanization of Korean": ["The official Korean language romanization system in South Korea."], "USA": ["A country and federal republic in North America located north of Mexico and south of Canada, including Alaska, Hawaii and overseas territories."], "rationally": ["In a rational manner."], "irrationally": ["In a manner contrary to reason."], "repetitive": ["Happening many times in a similar way."], "internaut": ["A designer, operator, or technically capable professional user of the Internet."], "ideally": ["In an ideal way."], "of first importance": ["Having priority or preference."], "confusion": ["The act of confusing or the state of being confused."], "psychiatric": ["Of, or relating to, psychiatry."], "spoofing": ["A method of attacking a computer program, in which the program is modified so as to appear to be working normally when in reality it has been modified with the purpose to circumvent security mechanisms."], "psychopathology": ["The study of the origin, development, diagnosis and treatment of mental and behavioural disorders."], "connectionism": ["Any of several fields of psychology that model brain processes in terms of interconnected networks."], "connectionist": ["An advocate of connectionism.", "Of, or relating to connectionism."], "Cambrian": ["Of a geologic period within the Paleozoic era."], "chromosomal": ["Of, or relating to chromosomes."], "epigenesis": ["The theory that an organism develops by differentiation from an unstructured egg rather than by simple enlarging of something preformed."], "epigenetics": ["The study of heritable changes caused by the activation and deactivation of genes without any change in DNA sequence."], "epigenetic": ["Of, or relating to epigenetics."], "Lamarckism": ["The theory that structural variations, characteristic of species and genera, are produced in animals and plants by the direct influence of physical environments, and especially, in the case of animals, by effort, or by use or disuse of certain organs."], "Lamarckian": ["Of or pertaining to Lamarckism.", "A supporter or an advocate of Lamarckism."], "Lamarck": ["A French naturalist, and an early proponent of the idea that evolution occurred and proceeded in accordance with natural laws."], "paleontologic": ["Pertaining to, or characteristic of paleontology."], "palaeontologic": ["Pertaining to, or characteristic of paleontology."], "pal\u00e6ontologic": ["Pertaining to, or characteristic of paleontology."], "geologic": ["Of, or relating to geology or a geologic timescale."], "geological": ["Of, or relating to geology or a geologic timescale."], "microbial": ["Of, relating to, or caused by microbes or microorganisms."], "genic": ["Relating to genetics or genes."], "discontinuity": ["A lack of continuity, regularity or sequence; a break or gap."], "dominant": ["Ruling; governing; prevailing; controlling; as, the dominant party, church, spirit, power."], "understudy": ["To study or know a role to such an extent as to be able to replace the normal performer when required.", "To be an understudy to (an actor or actress).", "A performer who is able to play the role of an actor in the case of their absence."], "evilness": ["The quality or state of being evil."], "primitive": ["Occurring in or characteristic of an early stage of development or evolution."], "mode": ["A particular means of accomplishing something."], "modality": ["Quality, way of being."], "redundancy": ["Duplication of components or circuits to provide survival of the total system in case of failure of single components."], "promising": ["Showing promise, and likely to develop in a desirable fashion."], "copy machine": ["Apparatus that makes copies of typed, written or drawn material."], "kayak": ["A small and narrow boat propelled manually with a double-bladed paddle."], "kaiak": ["A small and narrow boat propelled manually with a double-bladed paddle."], "kiack": ["A small and narrow boat propelled manually with a double-bladed paddle."], "kyack": ["A small and narrow boat propelled manually with a double-bladed paddle."], "kyak": ["A small and narrow boat propelled manually with a double-bladed paddle."], "Chita": ["A city of Russia and administrative center of Zabaykalsky Krai."], "clone": ["A living organism (originally a plant) produced asexually from a single ancestor, to which it is genetically identical."], "elfin": ["Relating to or resembling an elf, especially in its tiny size or features."], "elvish": ["Relating to or resembling an elf, especially in its tiny size or features."], "fantasize": ["To have a daydream; to indulge in a fantasy."], "panela": ["A solid piece of unrefined whole cane sugar obtained from the boiling and evaporation of sugarcane juice."], "shave": ["To cut the hair close to the skin with a razor.", "To cut the hair of one's face with a razor."], "demi-": ["Consisting of a half (1/2, 50%) of."], "snakebite": ["The bite of a snake."], "Northern Vietnam": ["One of the three regions within Vietnam, situated in the North of Vietnam."], "Southern Vietnam": ["One of the three regions within Vietnam, situated in the South of Vietnam."], "poem": ["A literary piece written in verse."], "Bangla": ["An Indic language spoken mainly in Bangladesh and India."], "Tibetan": ["A Tibeto-Burman or Sino-Tibetan language spoken principally in China.", "Of or relating to Tibet, the Tibetan people, or the Tibetan language.", "A person of Tibetan ethnic origin.", "Originating from Tibet"], "Bhutanese": ["Originating from Bhutan.", "A person from Bhutan, or of Bhutanese ancestry.", "Of or relating to Bhutan."], "Tshangla": ["A Tibeto-Burman language spoken in Eastern Bhutan, Arunachal Pradesh and the enclave of Pemak\u00f6 in Southern Tibet."], "Sharchop": ["A Tibeto-Burman language spoken in Eastern Bhutan, Arunachal Pradesh and the enclave of Pemak\u00f6 in Southern Tibet."], "Buddha": ["Shakyamuni Buddha, the spiritual and philosophical teacher and founder of Buddhism; Siddhartha Gautama.", "One who has purified obscurations (\u0f66\u0f44\u0f66) and developed pristine cognition (\u0f62\u0f92\u0fb1\u0f66)."], "Shakyamuni": ["Shakyamuni Buddha, the spiritual and philosophical teacher and founder of Buddhism; Siddhartha Gautama."], "Classical Tibetan": ["The language of any text written in Tibetan after 816 CE and before the modern period, in particular the language of the Buddhist canonical texts translated from other languages, especially Sanskrit."], "Dbus": ["A variety of Tibetan spoken in Central Tibet."], "\u00dc": ["A variety of Tibetan spoken in Central Tibet."], "\u00dc-Tsang": ["A variety of Tibetan spoken in Central Tibet."], "Lhasa Tibetan": ["A language of the Sino-Tibetan family, spoken in China, Bhutan, India and Nepal; official language in the Tibet Autonomous Region of China."], "audio-book": ["A recording of the reading of a book."], "audio book": ["A recording of the reading of a book."], "thagomizer": ["An arrangement of four to ten spikes on the tails of stegosaurids."], "thagomiser": ["An arrangement of four to ten spikes on the tails of stegosaurids."], "lamina cribrosa": ["The part of the sclera, in the eye, where the optical nerve exits the eye."], "lamina cribrosa sclerae": ["The part of the sclera, in the eye, where the optical nerve exits the eye."], "sclera": ["The opaque, fibrous, protective, outer layer of the eye containing collagen and elastic fiber."], "white of the eye": ["The opaque, fibrous, protective, outer layer of the eye containing collagen and elastic fiber."], "mydriasis": ["A dilation of the pupil."], "fundus": ["The inside back surface of the eye containing the retina, blood vessels, nerve fibers, and other structures."], "ocular fundus": ["The inside back surface of the eye containing the retina, blood vessels, nerve fibers, and other structures."], "ophthalmoscopy": ["The medical examination of the fundus of the eye."], "funduscopy": ["The medical examination of the fundus of the eye."], "fundoscopy": ["The medical examination of the fundus of the eye."], "ophthalmoscope": ["A device for examining the inside of an eye by projecting a light."], "funduscope": ["A device for examining the inside of an eye by projecting a light."], "ophthalmoscopic": ["Relating to ophthalmoscopy or to an ophthalmoscope."], "flavor": ["The sensory impression of a substance that is determined mainly by the chemical senses of taste and smell."], "flavour": ["The sensory impression of a substance that is determined mainly by the chemical senses of taste and smell."], "sense of taste": ["One of the five senses: the physical ability to detect flavors."], "confection": ["A food item that is rich in sugar."], "go in": ["To come or go into."], "middle school": ["A school that provides education for children at the second level in education systems where the schooling is divided into three levels."], "shigellosis": ["An infection of the gastrointestinal tract caused by a bacteria of the genus Shigella."], "bacillary dysentery": ["An infection of the gastrointestinal tract caused by a bacteria of the genus Shigella."], "digestive tract": ["The system of digestive organs stretching from the mouth to the anus, but does not include the accessory glandular organs."], "GI tract": ["The system of digestive organs stretching from the mouth to the anus, but does not include the accessory glandular organs."], "gut": ["The system of digestive organs stretching from the mouth to the anus, but does not include the accessory glandular organs."], "shareholding": ["Owning shares.", "A holding of shares of corporations.", "The amount of capital held as shares."], "gnotobiot": ["A laboratory animal whose microorganisms are completely known."], "gnotobiotic animal": ["A laboratory animal whose microorganisms are completely known."], "gnotobiont": ["A laboratory animal whose microorganisms are completely known."], "gnotobiote": ["A laboratory animal whose microorganisms are completely known."], "gnotobiota": ["The completely known population of microorganisms of a gnotobiot."], "gnotobiotic": ["Relating to gnotobiotics."], "gnotobiotics": ["The science of controlling and knowing completely the micro-organisms of an animal."], "Pali (Latin script)": ["A written form of the Pali language using the latin script."], "move house": ["To change house, to move themselves to an other room."], "white-tailed deer": ["A medium-sized American deer of the species Odocoileus virginianus."], "Virginia deer": ["A medium-sized American deer of the species Odocoileus virginianus."], "halibut": ["A flatfish of the genus Hippoglossus and the family Pleuronectidae living in the North of Atlantic and Pacific oceans."], "Eastern Canadian Inuktitut (Latin script)": ["The Eastern Canadian Inuktitut language written with Latin script."], "Eastern Canadian Inuktitut (Inuktitut syllabics)": ["The Eastern Canadian Inuktitut language written with Inuktitut syllabics."], "Inuvialuk": ["A language using the Latin alphabet spoken in the Northwest Territories and in some regions of Nunavut, in Canada."], "Inuvialuktun": ["A language using the Latin alphabet spoken in the Northwest Territories and in some regions of Nunavut, in Canada."], "Nunatsiavut": ["An autonomous area claimed by the Inuit people in Newfounland and Labrador, in Canada."], "Nunavut": ["The largest and nothernmost territory of Canada."], "Nunavummiuq": ["A person from Nunavut, Canada."], "Inuinnaq": ["A dialect of Inuvialuk spoken and official in Nunavut, in Canada."], "Inuinnaqtun": ["A dialect of Inuvialuk spoken and official in Nunavut, in Canada."], "Kugluktuk": ["A community located in the Kitikmeot region of Nunavut, in Canada."], "Kangiryuarmiut": ["A Copper Inuit sub-group that lived on Victoria Island, in Canada.", "A dialect of Inuvialuk spoken in Ulukhaktok, Northwest Territories, in Canada by the Kangiryuarmiut people."], "Kangiryuarmiutun": ["A dialect of Inuvialuk spoken in Ulukhaktok, Northwest Territories, in Canada by the Kangiryuarmiut people."], "Ulukhaktok": ["A community located on the west coast of Victoria Islan in the Northwest Territories, in Canada."], "Inuvik": ["A town located in the Northwest Territories, in Canada, and the administrative centre of the Inuvik Region.", "One of the five administrative regions of the Northwest Territories, in Canada."], "napaatchak": ["A traditional throwing knife game played by the Inuit people."], "Northwest Territories": ["A federal territory of Canada."], "British Columbia": ["The westernmost province of Canada."], "Saskatchewan": ["One of Canada's prairie provinces located in western Canada."], "Quebec City": ["Capital and second biggest city in the province of Quebec, in Canada."], "Qu\u00e9bec": ["Capital and second biggest city in the province of Quebec, in Canada."], "Qu\u00e9bec City": ["Capital and second biggest city in the province of Quebec, in Canada."], "New Brunswick": ["A province in eastern Canada, the only that is constitutionally bilingual."], "Nova Scotia": ["A province in eastern Canada, the most populous of Atlantic Canada."], "Prince Edward Island": ["A province in eastern Canada, the smallest of the country."], "Newfoundland and Labrador": ["The easternmost province of Canada."], "Yukon": ["The westernmost and smallest federal territory of Canada.", "A major watercourse of northwestern North America, running through British Columbia and Yukon, in Canada, and Alaska, in United States."], "Yukon River": ["A major watercourse of northwestern North America, running through British Columbia and Yukon, in Canada, and Alaska, in United States."], "Mackenzie River": ["The longest river in Canada, flowing through the Northwest Territories."], "Great Slave Lake": ["The second largest lake of Northwest Territories, in Canada, and the deepest lake in North America."], "American Black Duck": ["A large duck of the Anatinae family, native to eastern North America."], "Blue Jay": ["A passerine bird of the family Corvidae, native to North America."], "Blue-winged Teal": ["A small dabbling duck of the species Anas discors, native to North America."], "caribou": ["An Arctic and Subarctic-dwelling deer (Rangifer tarandus), of which a number of subspecies exist."], "computer file": ["An aggregation of data on a storage device, identified by a name."], "Pronunciation file from \"Commons\"": ["A link to an pronunciation sound file at the Commons repository."], "buffalo": ["A wild heavy bison of the species Bison bison, having a broad massive horned head."], "Baur\u00e9": ["An Arawakan language spoken by the Baure people of the Beni department in Bolivia."], "Central Atlas Tamazight (Tifinagh Script)": ["The Central Atlas Tamazight language written with the Tifinagh Script."], "Central Atlas Tamazight (Arabic Script)": ["The Central Atlas Tamazight language written with the Arabic Script."], "Dakhota": ["A Siouan language of the USA and Canada."], "Kildin Sami": ["A Sami language spoken on the Kola Peninsula in northwestern Russia."], "M\u00f2cheno": ["An Upper German variety spoken in three towns of the Mocheni Valley, in Trentino, northeastern Italy."], "Paumar\u00ed": ["An Arauan language spoken in Brazil."], "Paumari": ["An Arauan language spoken in Brazil."], "Tabasaran": ["A Northeast Caucasian language spoken by the Tabasaran people in southern part of the Russian Republic of Dagestan."], "Tocharian A": ["A dialect of Tocharian."], "Agnean": ["A dialect of Tocharian."], "Tocharian B": ["A dialect of Tocharian."], "Kuchean": ["A dialect of Tocharian."], "Tocharian A (Latin script)": ["The Tocharian A language written with the Latin script."], "Tocharian B (Latin script)": ["The Tocharian B language written with the Latin script."], "Zaza": ["An Indo-European language spoken primarily in eastern Turkey."], "\u01c3X\u00f3\u00f5": ["A Khoisan language spoken in Botswana and Namibia."], "Taa": ["A Khoisan language spoken in Botswana and Namibia."], "\u01c3Xoon": ["A Khoisan language spoken in Botswana and Namibia."], "maple tree": ["Tree or shrub of the family Acer."], "sugar ant": ["A relatively large ant with an orange-brown body and black head and mandibules, of the species Camponotus consobrinus."], "snowshoe": ["Footwear for walking over the snow.", "To walk with snowshoes."], "skate": ["A boot with a blade attached to the bottom, used the propel the bearer across a sheet of ice.", "To move along on skates."], "ice skate": ["A shoe consisting of a boot with a steel blade fitted to the sole.", "A boot with a blade attached to the bottom, used the propel the bearer across a sheet of ice.", "To move along on ice skates."], "moose calf": ["Young moose."], "paddle": ["A tool used for pushing against liquid, generally for the propulsion of a boat."], "oar": ["A tool used for pushing against liquid, generally for the propulsion of a boat."], "flying squirrel": ["A squirrel of the sub-family Pteromyinae of the family Sciuridae."], "Pteromyini": ["A squirrel of the sub-family Pteromyinae of the family Sciuridae."], "Petauristini": ["A squirrel of the sub-family Pteromyinae of the family Sciuridae."], "Souletin": ["A Basque dialect spoken in Soule, France."], "agriculturer": ["A person who works the land or who keeps livestock, especially on a farm."], "rainboots": ["Watertight boots made of rubber."], "flooded": ["Filled with water from rain or rivers."], "inundated": ["Filled with water from rain or rivers."], "overflooded": ["Filled with water from rain or rivers."], "drowned": ["Filled with water from rain or rivers."], "above mean sea level": ["[Used to indicate the elevation on the ground or altitude in the air of an object, relative to the average sea level datum.]"], "AMSL": ["[Used to indicate the elevation on the ground or altitude in the air of an object, relative to the average sea level datum.]"], "seizable": ["Capable of being seized."], "stepmom": ["The wife of one's biological father, other than one's biological mother."], "stepfather": ["The husband of one's biological mother, other than one's biological father."], "stepdad": ["The husband of one's biological mother, other than one's biological father."], "stepbro": ["The son of one's stepfather or stepmother."], "en": ["The fourteenth letter of the Roman alphabet."], "gee": ["The seventh letter of the Roman alphabet."], "aitch": ["The eighth letter of the Roman alphabet."], "cee": ["The third letter of the Roman alphabet."], "Sanum\u00e1": ["A Yanomam language spoken in Venezuela and Brazil."], "Sanema": ["A Yanomam language spoken in Venezuela and Brazil."], "Sanima": ["A Yanomam language spoken in Venezuela and Brazil."], "Tsanuma": ["A Yanomam language spoken in Venezuela and Brazil."], "Guaika": ["A Yanomam language spoken in Venezuela and Brazil."], "Samatari": ["A Yanomam language spoken in Venezuela and Brazil."], "Samatali": ["A Yanomam language spoken in Venezuela and Brazil."], "Xamatari": ["A Yanomam language spoken in Venezuela and Brazil."], "Chirichano": ["A Yanomam language spoken in Venezuela and Brazil."], "pitch angle": ["An angle indicating the amount of rotation of an object around its longitudinal axis. For an airplane, it indicates whether its nose points up or down."], "angle of pitch": ["An angle indicating the amount of rotation of an object around its longitudinal axis. For an airplane, it indicates whether its nose points up or down."], "tilt": ["An angle indicating the amount of rotation of an object around its longitudinal axis. For an airplane, it indicates whether its nose points up or down."], "construction permit": ["Authorization required by local governmental bodies for the erection of an enclosed structure or for the major alteration or expansion of an existing edifice."], "Hollandic": ["A dialect of the Dutch language spoken in Holland, a region of the Netherlands."], "Hollandish": ["A dialect of the Dutch language spoken in Holland, a region of the Netherlands."], "goutweed": ["A perennial plant of the species Aegopodium podagraria that grows in shady places and is often considered to be a weed."], "ground elder": ["A perennial plant of the species Aegopodium podagraria that grows in shady places and is often considered to be a weed."], "herb gerard": ["A perennial plant of the species Aegopodium podagraria that grows in shady places and is often considered to be a weed."], "bishop's weed": ["A perennial plant of the species Aegopodium podagraria that grows in shady places and is often considered to be a weed."], "snow-in-the-mountain": ["A perennial plant of the species Aegopodium podagraria that grows in shady places and is often considered to be a weed."], "engaged": ["Having formally promised to be married."], "nitroaspirin": ["A type of aspirin that releases nitric oxide in the body."], "2-Acetoxybenzoate-2-(1-nitroxymethyl)phenyl ester": ["A type of aspirin that releases nitric oxide in the body."], "m-NO-aspirin": ["A type of aspirin that releases nitric oxide in the body."], "nitric oxide-releasing aspirin": ["A type of aspirin that releases nitric oxide in the body."], "nitro-aspirin": ["A type of aspirin that releases nitric oxide in the body."], "nitric oxide-donating ASA": ["A type of aspirin that releases nitric oxide in the body."], "nitro aspirin": ["A type of aspirin that releases nitric oxide in the body."], "donor language word": ["A word in a foreign language from which a particular loanword is derived."], "shh": ["Be (or stay) silent!"], "sh": ["Be (or stay) silent!"], "shhh": ["Be (or stay) silent!"], "epiphyte": ["A plant that grows on another plant but does not obtain nutrients from it."], "epiphytic": ["Of or pertaining to an epiphyte."], "tattoo artist": ["A person who draws tattoos on other people's skin."], "tattooist": ["A person who draws tattoos on other people's skin."], "Cherkess": ["A language continuum spoken in the Caucasus, comprising the Adyghe and Kabardian languages."], "Abkhazian (Cyrillic script Uslar model)": ["The Abkhazian language written with a 37-character Cyrillic alphabet invented by Baron Peter von Uslar in 1862."], "Abkhazian (Georgian Script)": ["Abkhazian language written with the Georgian Script (from 1938 to 1954)."], "Abkhazian (Latin script)": ["Abkhazian language written with the Latin Script (from 1926 to 1938)."], "Abkhazian (Cyrillic script Chochua model)": ["The Abkhazian language written with a 55-character Cyrillic alphabet invented by Aleksey Chochua in 1909."], "Abkhazian (Cyrillic script Gulya model)": ["Abkhazian language written with the Cyrillic Script invented by Dmitry Gulia in 1892."], "Abkhazian (Cyrillic script)": ["The Abkhazian language written with a 62-letter Cyrillic script since 1954."], "Jeju": ["A variety of Korean spoken on Jeju Island in South Korea."], "Cheju": ["A variety of Korean spoken on Jeju Island in South Korea."], "paternal aunt": ["The sister of one's father."], "maternal aunt": ["The sister of one's mother."], "aunt-in-law": ["The wife of the brother of one's parent."], "aunt by marriage": ["The wife of the brother of one's parent."], "paternal aunt by marriage": ["Wife of one's father's brother."], "paternal aunt-in-law": ["Wife of one's father's brother."], "maternal aunt by marriage": ["One's mother's brother's wife."], "maternal aunt-in-law": ["One's mother's brother's wife."], "Japanese zelkova": ["A flowering tree of the species Zelkova serrata."], "keyaki": ["A flowering tree of the species Zelkova serrata."], "Siberian roe deer": ["A roe deer of the species Capreolus pygargus."], "eastern roe deer": ["A roe deer of the species Capreolus pygargus."], "purple eulalia": ["A flowering grass of the species Miscanthus sinensis."], "Chinese silver grass": ["A flowering grass of the species Miscanthus sinensis."], "Eulalia grass": ["A flowering grass of the species Miscanthus sinensis."], "maiden grass": ["A flowering grass of the species Miscanthus sinensis."], "zebra grass": ["A flowering grass of the species Miscanthus sinensis."], "Susuki grass": ["A flowering grass of the species Miscanthus sinensis."], "porcupine grass": ["A flowering grass of the species Miscanthus sinensis."], "rancher": ["A person who owns or operates a ranch."], "stockgrower": ["A person who owns or operates a ranch."], "liver spot": ["A brown blemish on the skin associated with aging and exposure to ultraviolet radiation from the sun."], "age spot": ["A brown blemish on the skin associated with aging and exposure to ultraviolet radiation from the sun."], "expropriate": ["To deprive a person of their private property for public use."], "Memramcook": ["A city in southeastern New Brunswick, Canada called the \"cradle of Acadia\"."], "Attikamek": ["A variety of the Cree language spoken by the Atikamekw people of southwestern Quebec."], "T\u00eate de Boule": ["A variety of the Cree language spoken by the Atikamekw people of southwestern Quebec."], "Attimewk": ["A variety of the Cree language spoken by the Atikamekw people of southwestern Quebec."], "Atihkamekw": ["A variety of the Cree language spoken by the Atikamekw people of southwestern Quebec."], "Atikamek": ["A variety of the Cree language spoken by the Atikamekw people of southwestern Quebec."], "fill out": ["To complete (a form, a questionnaire, etc.) by writing the requested information.", "To have one's body become larger, rounder with more muscle and/or fat."], "fill in": ["To complete (a form, a questionnaire, etc.) by writing the requested information."], "Royal Flycatcher": ["A bird of the species Onychorhynchus coronatus."], "Kadu languages": ["A small language family of Nilo-Saharan languages spoken in south-western of South Kordofan, Sudan."], "Kadugli\u2013Krongo languages": ["A small language family of Nilo-Saharan languages spoken in south-western of South Kordofan, Sudan."], "Tumtum languages": ["A small language family of Nilo-Saharan languages spoken in south-western of South Kordofan, Sudan."], "Nilo-Saharan languages": ["A family of African languages spoken in the northern half of Africa."], "Kadugli": ["A Kadu language spoken in Kordofan."], "Central Kadu": ["A Kadu language spoken in Kordofan."], "downstairs": ["The sexual organs: the testicles and penis of a male; or the labia, clitoris, and vagina of a female.", "Located a floor below.", "Down the stairs."], "electrical storm": ["A storm caused by strong rising air currents and characterized by thunder and lightning and usually heavy rain or hail."], "lightning storm": ["A storm caused by strong rising air currents and characterized by thunder and lightning and usually heavy rain or hail."], "thundershower": ["A storm caused by strong rising air currents and characterized by thunder and lightning and usually heavy rain or hail."], "birchbark": ["Bark of several Eurasian and North American birch trees of the genus Betula."], "birch bark": ["Bark of several Eurasian and North American birch trees of the genus Betula."], "leopon": ["A hybrid resulting from the crossing of a male leopard with a lioness."], "chiaroscuro": ["The use of strong contrasts between light and dark, in art, to give a sensation of depth."], "woodpecker": ["A family of near-passerine birds found worldwide except in Australia, New Zealand, Madagascar and polar regions."], "pisculet": ["A family of near-passerine birds found worldwide except in Australia, New Zealand, Madagascar and polar regions."], "wryneck": ["A family of near-passerine birds found worldwide except in Australia, New Zealand, Madagascar and polar regions."], "sapsucker": ["A family of near-passerine birds found worldwide except in Australia, New Zealand, Madagascar and polar regions."], "liter": ["The metric unit of fluid, equal to one cubic decimetre."], "litre": ["The metric unit of fluid, equal to one cubic decimetre."], "Hula painted frog": ["A frog of the species Latonia nigriventer."], "loose": ["To make less tight.", "To give freedom; to release from confinement or restraint.", "To make undone or untied; to free from any fastening.", "Displaying the effect of excessive indulgence in sensual pleasure.", "Expressed in an unclear fashion.", "Not attached, fastened, fixed, or confined.", "Free from constraint or obligation; not bound by duty, habit, etc.", "(For a garment) Not tight or close.", "Not dense, close, compact, or crowded.", "Not strict in matters of morality; not rigid according to some standard of right.", "Not held or packaged together."], "unbound": ["Not attached, fastened, fixed, or confined."], "untied": ["Not attached, fastened, fixed, or confined."], "unchaste": ["Displaying the effect of excessive indulgence in sensual pleasure."], "let loose": ["To give freedom; to release from confinement or restraint."], "unleash": ["To give freedom; to release from confinement or restraint."], "set free": ["To give freedom; to release from confinement or restraint."], "set loose": ["To give freedom; to release from confinement or restraint."], "turn loose": ["To give freedom; to release from confinement or restraint."], "Iberian Romance languages": ["A group of dialects derived from Latin, originating in the territory of Hispania."], "Ibero-Romance languages": ["A group of dialects derived from Latin, originating in the territory of Hispania."], "Rionor": ["A dialect of Portuguese spoken at the frontier between Spain and Portugal."], "West-African Portuguese": ["A dialect of Portuguese spoken in Cape Verde, Guinea-Bissau and S\u00e3o Tom\u00e9."], "Goan Portuguese": ["A dialect of Portuguese spoken in Goa (India)."], "Southern African Portuguese": ["A dialect of Portuguese spoken in Angola, South Africa and Mozambique."], "bean sprout": ["A sprout of the mung bean."], "beansprout": ["A sprout of the mung bean."], "soybean sprout": ["A sprout of the soybean plant (Glycine max)."], "soya bean sprout": ["A sprout of the soybean plant (Glycine max)."], "sundew": ["Any of a group of insectivorous plants in the genus Drosera that catch insects by sticky droplets at the end of hairs on the leafs and grow in boggy ground all over the world."], "Swiss pine": ["A species of pine tree that typically grows in European mountain ranges at high altitudes."], "Swiss stone pine": ["A species of pine tree that typically grows in European mountain ranges at high altitudes."], "Arolla pine": ["A species of pine tree that typically grows in European mountain ranges at high altitudes."], "hyaluronan": ["An anionic, nonsulfated glycosaminoglycan of formula C28H44N2O23."], "hyaluronic acid": ["An anionic, nonsulfated glycosaminoglycan of formula C28H44N2O23."], "hyaluronate": ["An anionic, nonsulfated glycosaminoglycan of formula C28H44N2O23."], "HA": ["An anionic, nonsulfated glycosaminoglycan of formula C28H44N2O23."], "shrimp": ["A decapod crustacean of the infra-order Caridea.", "A decapod crustacean of the suborder Dendrobranchiata.", "A decapod crustacean of the infra-order Stenopodidea."], "stenopodidean shrimp": ["A decapod crustacean of the infra-order Stenopodidea."], "air plant": ["A plant that grows on another plant but does not obtain nutrients from it."], "aardwolf": ["A carnivorous quadruped of the species Proteles Lalandii, resembling the fox and hyena."], "Aaron's rod": ["A rod with one serpent twined around it (differing from the caduceus of Mercury, which has two).", "A biennial plant of the species Verbascum thapsus with tall flowering stems.", "A plant of the genus Solidago.", "A succulent perennial plant of the species Hylotelephium telephium with tall flower stems."], "great mullein": ["A biennial plant of the species Verbascum thapsus with tall flowering stems."], "common mullein": ["A biennial plant of the species Verbascum thapsus with tall flowering stems."], "hag-taper": ["A biennial plant of the species Verbascum thapsus with tall flowering stems."], "flannelleaf": ["A biennial plant of the species Verbascum thapsus with tall flowering stems."], "flannelplant": ["A biennial plant of the species Verbascum thapsus with tall flowering stems."], "goldenrod": ["A plant of the genus Solidago."], "orpine": ["A succulent perennial plant of the species Hylotelephium telephium with tall flower stems."], "livelong": ["A succulent perennial plant of the species Hylotelephium telephium with tall flower stems."], "live-forever": ["A succulent perennial plant of the species Hylotelephium telephium with tall flower stems."], "frog's-stomach": ["A succulent perennial plant of the species Hylotelephium telephium with tall flower stems."], "harping Johnny": ["A succulent perennial plant of the species Hylotelephium telephium with tall flower stems."], "life-everlasting": ["A succulent perennial plant of the species Hylotelephium telephium with tall flower stems."], "midsummer-men": ["A succulent perennial plant of the species Hylotelephium telephium with tall flower stems."], "orphan John": ["A succulent perennial plant of the species Hylotelephium telephium with tall flower stems."], "witch's moneybags": ["A succulent perennial plant of the species Hylotelephium telephium with tall flower stems."], "Ab": ["The fifth month of the Jewish ecclesiastical year, and the eleventh month of the civil year, coinciding nearly with August."], "Av": ["The fifth month of the Jewish ecclesiastical year, and the eleventh month of the civil year, coinciding nearly with August."], "abaca": ["A banana plant of the species Musa textilis.", "A fiber extracted from the abaca plant (Musa textilis)."], "abac\u00e1": ["A banana plant of the species Musa textilis.", "A fiber extracted from the abaca plant (Musa textilis)."], "Manila hemp": ["A fiber extracted from the abaca plant (Musa textilis)."], "abac\u00e1 fiber": ["A fiber extracted from the abaca plant (Musa textilis)."], "abaca fiber": ["A fiber extracted from the abaca plant (Musa textilis)."], "abacinate": ["To blind by a red-hot metal plate held before the eyes."], "abacination": ["The act of abacinating."], "abactinal": ["Pertaining to the surface or end opposite to the mouth in a radiate animal."], "aboral": ["Pertaining to the surface or end opposite to the mouth in a radiate animal."], "abaft": ["(Of a boat) Toward the stern from; behind.", "(Of a boat) Toward the stern."], "aft": ["(Of a boat) Toward the stern."], "abarticulation": ["(Anatomy) An articulation which admits of free motion in the joint; the most common type of articulation."], "diarthrosis": ["(Anatomy) An articulation which admits of free motion in the joint; the most common type of articulation."], "synovial joint": ["(Anatomy) An articulation which admits of free motion in the joint; the most common type of articulation."], "abashedly": ["In an abashed manner."], "abashment": ["The state of being abashed; the confusion from shame."], "decreasable": ["That can be made smaller in size or intensity."], "diminishable": ["That can be made smaller in size or intensity."], "abatable": ["Capable of being deducted or subtracted.", "That can be made smaller in size or intensity."], "reducible": ["That can be made smaller in size or intensity."], "subtractable": ["Capable of being deducted or subtracted."], "abator": ["A person who abates a nuisance.", "A person who, without right, enters into a freehold on the death of the last possessor, before the heir."], "abaxial": ["(For a leaf) On the side that is away from the axis or central line."], "abaxile": ["(For a leaf) On the side that is away from the axis or central line."], "abbreviator": ["A person who abbreviates or shortens.", "One of a college of seventy-two officers of the papal court whose duty is to make a short minute of a decision on a petition, or reply of the pope to a letter, and afterwards expand the minute into official form."], "shortener": ["A person who abbreviates or shortens."], "abdicable": ["Capable of being abdicated."], "abdicator": ["A person who abdicates."], "abdominous": ["Having a protuberant belly."], "potbellied": ["Having a protuberant belly."], "pot-bellied": ["Having a protuberant belly."], "overvoltage": ["A condition where the voltage in a circuit is above its upper design limit."], "abeam": ["(For a ship) On the beam, that is, on a line which forms a right angle with the ship's keel; opposite to the center of the ship's side."], "Abecedarian": ["A member of a 16th-century German sect of Anabaptists."], "abelmosk": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "abelmusk": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "ambrette seeds": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "annual hibiscus": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "bamia moschata": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "galu gasturi": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "muskdana": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "musk mallow": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "musk okra": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "musk seeds": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "ornamental okra": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "rose mallow seeds": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "tropical jewel hibiscus": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "yorka okra": ["An evergreen shrub of the species Abelmoschus moschatus, whose musky seeds are used in perfumery."], "aberrance": ["State of being aberrant; a wandering from the right way; deviation from truth, rectitude, etc."], "aberrancy": ["State of being aberrant; a wandering from the right way; deviation from truth, rectitude, etc."], "aberrancy of curvature": ["The deviation of a curve from a circular form."], "aberrate": ["To go in a different direction than what is expected."], "go astray": ["To go in a different direction than what is expected."], "abetment": ["The act of inciting or encouraging someone to commit a crime."], "abettal": ["The act of inciting or encouraging someone to commit a crime."], "abetter": ["A person who incites or encourages someone to commit a crime."], "abettor": ["A person who incites or encourages someone to commit a crime."], "abeyant": ["(Law) Being in a state of abeyance, or expectation."], "phage therapy": ["The use of bacteriophages to treat pathogenic bacterial infections."], "unverified": ["Not (yet) verified."], "sinew": ["Tissue that connects muscle to bone."], "tendonitis": ["Inflammation of a tendon."], "English yew": ["A species of coniferous tree with dark-green flat needle-like leaves and seeds bearing red arils, native to western, central and southern Europe, northwest Africa, northern Iran and southwest Asia."], "European yew": ["A species of coniferous tree with dark-green flat needle-like leaves and seeds bearing red arils, native to western, central and southern Europe, northwest Africa, northern Iran and southwest Asia."], "starved wood sedge": ["A rare species of sedge native to parts of Europe."], "combined sewer": ["A sewer intended to serve as a sanitary sewer and a storm sewer, or as an industrial sewer and a storm sewer."], "nutritional value": ["The measure of the quantity or availability of nutrients found in materials ingested and utilized by humans or animals as a source of nutrition and energy."], "caveat": ["(Law) A notice given by an interested party to some officer not to do a certain act until the party is heard in opposition.", "A document used in the US between 1836 and 1910, similar to a provisional patent application, but which could be renewed after one year.", "A gentle advice or warning given to someone to tell him to be cautious about something."], "patent caveat": ["A document used in the US between 1836 and 1910, similar to a provisional patent application, but which could be renewed after one year."], "embankment dam": ["A barrier of concrete, earth, etc., built across a river to create a body of water."], "color vision deficiency": ["The inability or decreased ability to see color, or perceive color differences, under normal lighting conditions."], "achromatopsia": ["The total inability to perceive colors."], "achromatopia": ["The total inability to perceive colors."], "achromatopsy": ["The total inability to perceive colors."], "achromatism": ["The total inability to perceive colors."], "ACHM": ["The total inability to perceive colors."], "openpit mining": ["Superficial mining, in which the valuable rock is exposed by removal of overburden."], "total color blindness": ["The total inability to perceive colors."], "monochromacy": ["The total inability to perceive colors."], "dichromacy": ["The condition of having only two types of functioning cone cells in the eyes, instead of three."], "dichromat": ["A person who can has only two types of functioning cone cells in the eyes, instead of three."], "dichromatic": ["Having two colors.", "Having only two types of functioning cone cells in the eyes, instead of three."], "trichromacy": ["The condition of having three different cone types in the eyes."], "trichromat": ["An organism having three different cone types in the eyes."], "trichromaticism": ["The condition of having three different cone types in the eyes."], "trichromatic": ["Having three colors.", "Having three different cone types in the eyes."], "protanopia": ["A type of red-green color-blindness caused by an absence of the long-wavelength (red) sensitive retinal cones."], "deuteranopia": ["A type of red-green color-blindness caused by an absence of the medium-wavelength (green) sensitive retinal cones."], "tritanopia": ["A type of color-blindness caused by an absence of the short-wavelength (blue) sensitive retinal cones."], "protanope": ["A person who has protanopia."], "deuteranope": ["A person who has deuteranopia."], "tritanope": ["A person who has tritanopia."], "urban rot": ["Condition where part of a city or town becomes old or dirty or ruined, because businesses and wealthy families have moved away from it."], "urban blight": ["Condition where part of a city or town becomes old or dirty or ruined, because businesses and wealthy families have moved away from it."], "Kathiawai": ["A dialect of Gujarati spoken in the Kathiawai peninsula."], "giant roundworm": ["A parasitic worm of the species Ascaris lumbricoides, infecting humans and other mammals, causing ascariasis."], "pack ice": ["Large areas of floating ice, usually occurring in polar seas, consisting of separate pieces that have become massed together."], "ascariasis": ["A disease of humans caused by the parasitic giant roundworm."], "central European firefly": ["An insect of the Lampyridae family that is native to Europe und is able to glow at night."], "aphid": ["A small sap-sucking insect of the superfamily Aphidoidea."], "plant lice": ["A small sap-sucking insect of the superfamily Aphidoidea."], "whitefly": ["An insect of the family Aleyrodidae that have long wings, and a white body, and feed on plant leaves."], "open cluster": ["A group of stars that were formed from the same molecular cloud and have roughly the same age."], "electrospun": ["(For fibers) Manufactured by electrospinning."], "electrospinning": ["A method of manufacturing very fine fibres from a liquid by using electrical charges."], "color palette": ["The collection of colors or shades available to a graphic system or program."], "colour palette": ["The collection of colors or shades available to a graphic system or program."], "duodenum": ["The first section of the small intestine in mammals, reptiles, birds and some other vertebrates."], "dodecadactylum": ["The first section of the small intestine in mammals, reptiles, birds and some other vertebrates."], "maw-gut": ["The first section of the small intestine in mammals, reptiles, birds and some other vertebrates."], "duodenal": ["Relating to the duodenum."], "ileum": ["The final section of the small intestine in mammals, reptiles, birds and some other vertebrates."], "ileal": ["Relating to the ileum."], "regalian": ["Pertaining to rights, prerogatives and privileges of a sovereign."], "regalia": ["The rights, prerogatives and privileges of a sovereign."], "French Creole": ["A Cr\u00e9ole language based on the French vocabulary."], "French-based Creole language": ["A Cr\u00e9ole language based on the French vocabulary."], "Dominican Creole French": ["A French-based cr\u00e9ole spoken in Dominica."], "Antillean Creole French": ["A family of French creole languages spoken primarily in the Lesser Antilles."], "Antillean Creole": ["A family of French creole languages spoken primarily in the Lesser Antilles."], "water supply system": ["The system of pipes supplying water to communities and industries."], "water supply network": ["The system of pipes supplying water to communities and industries."], "green marketing": ["The marketing of products that are presumed to be environmentally safe."], "oust": ["To force a person or persons to leave a place.", "To force a person or persons out of a position or place."], "in particular": ["[Used to indicate a notable or particular example of a previous mentioned group]."], "amongst other things": ["[Used to indicate a notable or particular example of a previous mentioned group]."], "disgustingly": ["In a disgusting manner."], "small calorie": ["The amount of energy needed to raise the temperature of one gram of water by one degree Celsius, equal to about 4.19 joules."], "gram calorie": ["The amount of energy needed to raise the temperature of one gram of water by one degree Celsius, equal to about 4.19 joules."], "large calorie": ["The amount of energy needed to raise the temperature of one kilogram of water by one degree Celsius."], "kilogram calorie": ["The amount of energy needed to raise the temperature of one kilogram of water by one degree Celsius."], "dietary calorie": ["The amount of energy needed to raise the temperature of one kilogram of water by one degree Celsius."], "nutritionist's calorie": ["The amount of energy needed to raise the temperature of one kilogram of water by one degree Celsius."], "food calorie": ["The amount of energy needed to raise the temperature of one kilogram of water by one degree Celsius."], "moot": ["An argument, or discussion, usually in an ordered or formal setting, often with more than two people, generally ending with a vote or other decision.", "Subject, or open, to argument or discussion.", "(Shipbuilding) A ring for gauging wooden pins.", "To discuss by arguing for and against.", "To argue or plead in a supposed case.", "To discuss by way of exercise; to argue for practice.", "A discussion of fictitious causes by way of practice."], "mooted": ["Subject, or open, to argument or discussion."], "moot court": ["A mock court, such as is held by students of law for practicing the conduct of law cases."], "moot point": ["A point or question to be debated."], "avalanche defense": ["The total of measures and devices implemented to protect people, property or natural resources from avalanche conditions, including avalanche forecasting and warning, avalanche zoning, ski testing and the use of explosives and other equipment to stabilize an avalanche area."], "avalanche control": ["The total of measures and devices implemented to protect people, property or natural resources from avalanche conditions, including avalanche forecasting and warning, avalanche zoning, ski testing and the use of explosives and other equipment to stabilize an avalanche area."], "electronic data processing": ["The use of computers or machines to create and process data."], "EDP": ["The use of computers or machines to create and process data."], "abide by": ["To act in accordance with someone's rules, commands, or wishes.", "To stay faithful to (an opinion, a belief, etc.)."], "stand to": ["To stay faithful to (an opinion, a belief, etc.)."], "stand by": ["To stay faithful to (an opinion, a belief, etc.)."], "stick by": ["To stay faithful to (an opinion, a belief, etc.)."], "stick to": ["To stay faithful to (an opinion, a belief, etc.).", "To stick to firmly."], "firs": ["A genus of between 45-55 species of evergreen conifers in the family Pinaceae."], "abiogenetic": ["Of or pertaining to abiogenesis."], "abiogenist": ["A person who believes that life can be produced independently of antecedent."], "reamer": ["A tool for boring a hole wider.", "A device for rendering citrus juice.", "A tool used to scrape carbon deposit from the bowl of a pipe.", "A Stone Age prehistoric lithic Stone tool, used in archeology nomenclature."], "harmonicist": ["A person who plays the harmonica."], "French harp": ["A free reed musical wind instrument which produces notes according to the player's mouth placement over the different airways."], "blues harp": ["A free reed musical wind instrument which produces notes according to the player's mouth placement over the different airways."], "a little": ["To a small extent or degree."], "a bit": ["To a small extent or degree."], "a trifle": ["To a small extent or degree."], "growth medium": ["A liquid or gel designed to support the growth of microorganisms, cells or small plants."], "wean": ["To stop feeding a young animal or child with mother's milk."], "ablactate": ["To stop feeding a young animal or child with mother's milk."], "ablactation": ["The act of stopping to feed a young animal or child with mother's milk.", "The process of grafting two plants by growing them close to one another."], "weaning": ["The act of stopping to feed a young animal or child with mother's milk."], "inarching": ["The process of grafting two plants by growing them close to one another."], "grafting by approach": ["The process of grafting two plants by growing them close to one another."], "approach grafting": ["The process of grafting two plants by growing them close to one another."], "bass clef": ["A musical clef indicating that the F3 note is placed on the fourth line."], "F-clef": ["A musical clef indicating that the F3 note is placed on the fourth line."], "bass instrument": ["An instrument that plays sounds of low frequency."], "threshold limit value": ["The maximum exposure to a physical or chemical agent allowed in an 8-hour work day to prevent disease or injury."], "benthic zone": ["The interacting system of the biological communities located at the bottom of bodies of freshwater and saltwater and their non-living environmental surroundings.\\n(Source: TOE / DOE)"], "industrial sector": ["The part of a country or region's economy that produces commodities without much direct use of natural resources."], "business law": ["The whole body of substantive jurisprudence applicable to the rights, intercourse and relations of persons engaged in commerce, trade or mercantile pursuits."], "tent peg": ["Small object designed to hold a tent to the ground and comporting a hard long thin part to put into the ground."], "tent stake": ["Small object designed to hold a tent to the ground and comporting a hard long thin part to put into the ground."], "arr": ["A grunt stereotypical of pirates.", "To grunt like a pirate."], "arrr": ["A grunt stereotypical of pirates."], "rrrr": ["A grunt stereotypical of pirates."], "yarrr": ["A grunt stereotypical of pirates."], "bumble-bee": ["A flying insect of the genus Bombus."], "bumble bee": ["A flying insect of the genus Bombus."], "medical contrast medium": ["A substance used in medical imaging to enhance the contrast of structures or fluids within the body."], "contrast medium": ["A substance used in medical imaging to enhance the contrast of structures or fluids within the body."], "contrast agent": ["A substance used in medical imaging to enhance the contrast of structures or fluids within the body."], "polyhedron": ["A solid in three dimensions with flat faces and straight edges."], "polyhedral": ["Relating to a polyhedron."], "polyhedrical": ["Relating to a polyhedron."], "forestal": ["Relating to a forest or to forestry."], "silvicultural": ["Relating to a forest or to forestry."], "tree stump": ["A small remaining portion of the trunk of a tree with the roots still in the ground."], "stump grinder": ["A machine that removes tree stumps using a cutting disk."], "stump cutter": ["A machine that removes tree stumps using a cutting disk."], "Armenian bumblebee": ["A species of bumblebee that can be found in Austria, Czech Republic, Russia, and Near East."], "great yellow bumblebee": ["A species of bumblebee native to several European countries."], "garden bumblebee": ["A species of bumblebee that can be found in most of Europe, as well as parts of Asia and New Zealand."], "brown-banded carder bee": ["A species of bumblebee found in Europe."], "tree bumblebee": ["A species of bumblebee that is common on the European continent and parts of Asia."], "new garden bumblebee": ["A species of bumblebee that is common on the European continent and parts of Asia."], "heath humble-bee": ["A species of bumblebee."], "small heath bumblebee": ["A species of bumblebee."], "Japanese knotweed": ["A large, herbaceous perennial plant, native to eastern Asia and an invasive species in other parts of the world."], "complexing": ["Formation of a complex compound. Also known as complexing or complexation."], "complexation": ["Formation of a complex compound. Also known as complexing or complexation."], "Mediterranean tapeweed": ["A seagrass species that is endemic to the Mediterranean Sea."], "Neptune grass": ["A seagrass species that is endemic to the Mediterranean Sea."], "drill bit": ["A cutting tool used to create cylindrical holes."], "hemodynamics": ["The study of blood flow or circulation."], "haemodynamics": ["The study of blood flow or circulation."], "sonoluminescence": ["The emission of light in a liquid when using sound to make bubbles implode."], "juniper berry": ["The female seed cone produced by the various species of junipers."], "permeameter": ["An instrument for measuring the permeability of a solid."], "borehole": ["A narrow straight hole bored in the ground for extracting resources."], "bulk modulus": ["A value that expresses the resistance of a given substance to uniform compression."], "coconut water": ["The clear liquid inside young coconuts."], "rotifer": ["An animal of the phylum Rotifera measuring between 50 \u00b5m and 3 mm."], "wheel animal": ["An animal of the phylum Rotifera measuring between 50 \u00b5m and 3 mm."], "bdelloid rotifer": ["An animal of the class Bdelloidea of the rotifer phylum."], "bdelloid": ["An animal of the class Bdelloidea of the rotifer phylum."], "antiacne": ["That is effective against acne."], "anti-acne": ["That is effective against acne."], "kidney stone": ["A calculus located in the kidney."], "renal calculus": ["A calculus located in the kidney."], "nephrolith": ["A calculus located in the kidney."], "kidney gravel": ["A calculus located in the kidney."], "homewrecker": ["A person who has a romantic relationship with a married person with the result of breaking up the marriage."], "rouille": ["A Proven\u00e7al sauce that consists of olive oil with breadcrumbs, garlic, saffron and chili peppers and is often served with fish soup."], "ambergris": ["A waxy substance of a dull grey or blackish color, produced in the intestines of the sperm whale which is used in the production of perfume."], "grey amber": ["A waxy substance of a dull grey or blackish color, produced in the intestines of the sperm whale which is used in the production of perfume."], "gray amber": ["A waxy substance of a dull grey or blackish color, produced in the intestines of the sperm whale which is used in the production of perfume."], "yellowy": ["Somewhat yellow."], "pinkish": ["Somewhat pink."], "20-dollar bill": ["A bill having a value of 20 American dollars."], "1-dollar bill": ["A bill having a value of 1 American dollar."], "United States one-dollar bill": ["A bill having a value of 1 American dollar."], "levee": ["An artificial wall, embankment, ridge, or mound, usually of earth or rock fill, built around a relatively flat, low-lying area to protect it from flooding."], "Elektroplattieren": ["The act of coating iron or steel with zinc, either by immersion in a bath of molten zinc or by deposition from a solution of zinc sulphate, to give protection against corrosion."], "Upper Austrian": ["Of or relating to Upper Austria."], "bee bite": ["A sting caused by the stinger of a bee."], "supercentenarian": ["A person who is at least 110 years old."], "super-centenarian": ["A person who is at least 110 years old."], "subsidized housing": ["Residences built at minimal expense and designed to keep the rental rate or price of purchase affordable for persons with limited means, usually determined by an annual income level set below the local median."], "social housing": ["Residences built at minimal expense and designed to keep the rental rate or price of purchase affordable for persons with limited means, usually determined by an annual income level set below the local median."], "construction waste": ["Masonry and rubble wastes arising from the demolition or reconstruction of buildings or other civil engineering structures."], "hysteria": ["Behavior exhibiting excessive or uncontrollable emotion, such as fear or panic."], "\u00a2": ["A subunit of currency equal to one-hundredth of the main unit of currency in many countries."], "kleptothermy": ["A form of thermoregulation by which an animal shares in the body heat of another animal."], "kleptocracy": ["A form of political corruption where the government exists to increase the personal wealth and political power of the ruling class at the expense of the wider population."], "cleptocracy": ["A form of political corruption where the government exists to increase the personal wealth and political power of the ruling class at the expense of the wider population."], "kleptarchy": ["A form of political corruption where the government exists to increase the personal wealth and political power of the ruling class at the expense of the wider population."], "kleptomaniac": ["One who steals compulsively."], "cleptomaniac": ["One who steals compulsively."], "thermogenesis": ["The process of heat production in organisms."], "silver screen": ["A white or silvered surface where pictures can be projected for viewing."], "projection screen": ["A white or silvered surface where pictures can be projected for viewing."], "CRT screen": ["The display that is electronically created on the surface of the large end of a cathode-ray tube or some other display technology."], "utopia": ["An ideal community or society with highly desirable or perfect political, social or religious qualities."], "semantic network": ["A network which represents semantic relations between concepts."], "bioindicator": ["A species or organism that is used to grade environmental quality or change."], "segue": ["To make a smooth transition from one musical theme to another.", "To make a smooth transition from one subject to another in a conversation.", "A smooth transition from one musical theme to another.", "A smooth transition from one subject to another in a conversation."], "playpen": ["A portable piece of furniture in which an infant or young child is confined for safety reasons."], "pareidolia": ["The perception of a known form or shape in an image that depicts something else, such as the perception of animal shapes in clouds."], "pareidolic": ["Relating to pareidolia."], "apophenia": ["The perception of meaningful patterns in random or meaningless data."], "malignancy": ["(For a cell, a tumor, etc.) The state of being malignant."], "benignancy": ["(For a cell, a tumor, etc.) The state of being benign."], "wasp spider": ["A species of orb-web spider distributed throughout Europe, north Africa and parts of Asia and shows striking yellow and black markings."], "Tilia tree": ["Tree member of the Tilia genus, itself member of the Malvaceae family, of quick growth, able to reach 30 or 40 m high, with a sturdy trunk, numerous ramifications, usually heart-shaped leaves, tiny fruits attached to a ribbon-like, greenish-yellow bract, 5-petaled 5-sepaled flowers, both the flower and the bract being used in medicinal tea."], "Tilia": ["Tree member of the Tilia genus, itself member of the Malvaceae family, of quick growth, able to reach 30 or 40 m high, with a sturdy trunk, numerous ramifications, usually heart-shaped leaves, tiny fruits attached to a ribbon-like, greenish-yellow bract, 5-petaled 5-sepaled flowers, both the flower and the bract being used in medicinal tea."], "habituate": ["To take or consume (regularly or habitually)."], "prefer": ["To choose; to select as an alternative to another.", "To like better; to value more highly."], "typewrite": ["To write by entering characters on a keyboard or a typewriter."], "qualify": ["To add a modifier to a constituent.", "To prove capable or fit; to meet requirements.", "To make more specific.", "To make fit, trained or prepared."], "measure up": ["To prove capable or fit; to meet requirements."], "dispose": ["To make fit, trained or prepared.", "To eliminate or to remove something."], "scat": ["To flee; to take to one's heels; to cut and run."], "turn tail": ["To flee; to take to one's heels; to cut and run."], "break away": ["To flee; to take to one's heels; to cut and run."], "halt": ["To cause to stop (e.g. an engine or a machine)."], "bear hug": ["A wrestling hold with arms locked tightly around the opponent."], "wrestle": ["To combat to overcome an opposing tendency or force.", "To engage in a wrestling match."], "selfie": ["A photograph taken by the person photographed."], "Fueguian sprat": ["A sprat of the species Sprattus fuegensis."], "Falkland sprat": ["A sprat of the species Sprattus fuegensis."], "New Zealand blueback sprat": ["A sprat of the species Sprattus antipodum."], "New Zealand sprat": ["A sprat of the species Sprattus muelleri."], "Australian sprat": ["A sprat of the species Sprattus novaehollandiae."], "European sprat": ["A sprat of the species Sprattus sprattus."], "bristling": ["A sprat of the species Sprattus sprattus."], "brisling": ["A sprat of the species Sprattus sprattus."], "string up": ["To kill by hanging."], "stative verb": ["A verb that describes a state of being."], "coverb": ["A verb, used along a second verb, and acting as a preposition."], "place word": ["A word used to indicate location."], "locative word": ["A word used to indicate location."], "time word": ["A word used to indicate time."], "verb object": ["A phrase consisting of a verb and an object that is the recipient of the action expressed by the verb."], "verb-object": ["A phrase consisting of a verb and an object that is the recipient of the action expressed by the verb."], "verb-object phrase": ["A phrase consisting of a verb and an object that is the recipient of the action expressed by the verb."], "monogastric": ["Having a simple single-chambered stomach."], "polygastric": ["Having a stomach consisting of several chambers."], "coffin birth": ["The expulsion of a nonviable fetus through the vaginal opening of the decomposing body of a pregnant woman as a result of the increasing pressure of intraabdominal gases."], "postmortem fetal extrusion": ["The expulsion of a nonviable fetus through the vaginal opening of the decomposing body of a pregnant woman as a result of the increasing pressure of intraabdominal gases."], "parasitic worm": ["A worm-like organism living in a living host."], "helminth": ["A worm-like organism living in a living host."], "East Franconian": ["A group of Central German dialects being part of the East Franconian group spoken in a large stripe along the river Main in Germany."], "palliate": ["To make easier to endure; provide physical relief, as from pain."], "select": ["To make a choice from a number of alternatives."], "pick out": ["To make a choice from a number of alternatives."], "get hold of": ["To grasp with the hands.", "To affect (e.g. of pain, fear, etc.)."], "ingest": ["To ingest food, medicine, drugs, etc."], "emetophobia": ["Fear of vomiting."], "emetophobic": ["Pertaining to or suffering from the fear of vomiting."], "pay up": ["To cancel or discharge a debt."], "wrestling hold": ["A hold used in the sport of wrestling."], "browse": ["To browse the Internet.", "To shop around; not necessarily buying.", "To feed as in a meadow or pasture.", "To eat lightly, try different dishes."], "crop": ["To feed as in a meadow or pasture."], "look out": ["To be vigilant, be on the lookout or be careful."], "watch out": ["To be vigilant, be on the lookout or be careful."], "pass judgment": ["To express an opinion or a valuation, especially on esthetics, morality or the like."], "wordnet": ["Any of the machine-readable lexical databases modeled after the Princeton WordNet."], "linear encoder": ["Device to encode a position."], "run through": ["To use up resources or materials."], "use up": ["To use up resources or materials."], "utilize": ["To employ an object, often to reach a certain goal; to put into service.", "To convert (from an investment trust to a unit trust)."], "utilise": ["To employ an object, often to reach a certain goal; to put into service."], "restore": ["To change the state of an item (e.g. which was torn or broken) to a working condition again."], "touch on": ["To change the state of an item (e.g. which was torn or broken) to a working condition again.", "To be relevant or of importance to."], "go under": ["To cause a boat to go down in the water.", "[Of a heavenly body, essentially the Sun and the Moon] To disappear below the horizon of a planet or another heavenly body (most often the Earth)."], "pose": ["Affected manners intended to impress others.", "To assume a posture as for artistic purposes.", "To behave affectedly or unnaturally in order to impress other."], "recount": ["To talk about a story giving its details; to give a detailed account of."], "outback": ["An area of wilderness, usually large, usually covered by thick vegetation, mainly untouched by humans."], "mime": ["To imitate (a person or manner), especially for satirical effect."], "mimic": ["To imitate (a person or manner), especially for satirical effect."], "economic value": ["The amount (of money or goods or services) that is considered to be a fair equivalent for something else"], "shake up": ["To arouse or stir up emotions or feelings."], "run across": ["To come together with someone by accident."], "cope with": ["To satisfy or fulfill (e.g. a job or a need)."], "confront": ["To deal with (something unpleasant) head on.", "To oppose, as in hostility or a competition.", "To present somebody with something, e.g. to accuse or criticize."], "face up": ["To deal with (something unpleasant) head on."], "transferrin": ["A glycoprotein that transports irons in blood."], "put up": ["To admit to residence; provide housing for.", "To place so as to be noticed.", "To preserve in a can or tin."], "domiciliate": ["To admit to residence; provide housing for."], "business firm": ["A place where an activity is accomplished, whether actual, as a pub, or virtual, as a website."], "steady": ["Marked by firm determination or resolution; not shakable."], "unbendable": ["Marked by firm determination or resolution; not shakable."], "unwavering": ["Marked by firm determination or resolution; not shakable."], "slumber": ["A periodic state of physiological rest during which consciousness is suspended and metabolic rate is decreased.", "To rest in a state of decreased consciousness and reduced metabolism."], "loosen up": ["To become less tense, formal, or restrained, and assume a friendlier attitude."], "stay on": ["To stay the same; to remain in a certain state."], "deceiver": ["A person who acts dishonestly."], "cheater": ["A person who acts dishonestly."], "rig": ["A dishonest act."], "cheat on": ["To be sexually unfaithful to one's spouse or lover."], "smiling": ["An upwards movement of the sides of the mouth that indicates happiness or satisfaction."], "grin": ["An upwards movement of the sides of the mouth that indicates happiness or satisfaction."], "reconstructed language": ["An unattested language or linguisitc entity that is described as the result of research on the features of one, or several related, attested languages by which scientist with some precision find out what the common language looked like that preceeded them in history."], "proto-language": ["A language that in the tree model of historical linguistics is a hypothetical, or reconstructed, typically extinct language from which a number of attested, or documented, known languages are believed to have descended by evolution, by slow and mostly gradual modification, into languages that form a known and documented language family."], "artificial reference pseudo language": ["A collection of lemmatized real words and made up words related to a group of languages or dialects in the way that these words are either true words of at least some of the languages, or are made up in a way allowing similar related words of several languages or dialects to be covered by a single common entry in a collective dictionary of these languages and dialects, regardless of their different actual forms in various languages."], "haul": ["To draw slowly or heavily.", "To transport in a vehicle."], "hale": ["To exert violence, or constraint upon or against a person in order to obtain something by physical, moral or intellectual means.", "To draw slowly or heavily."], "drag": ["To draw slowly or heavily."], "step down": ["To give up from a job or position."], "leave office": ["To give up from a job or position."], "succumb": ["To stop to oppose or resist."], "stop over": ["To interrupt a trip."], "turn back": ["To rotate [a container] so that its opening be below; to turn upside down.", "To hold back, as of a danger or an enemy; check the expansion or influence of."], "break off": ["To prevent completion (e.g. of a project, of negotiations, etc.)."], "block off": ["To render passage impossible by physical obstruction."], "relegate": ["To accept no longer in a community, group or country, e.g. by official decree."], "piece of work": ["That that has been made; a product produced or accomplished through the effort or activity or agency of a person or thing."], "battler": ["A person who fights or struggles using physical force or weapon."], "web feed": ["Encapsulated online content that you can subscribe to with a feed reader. Used often for reading blog and news updates."], "feed in": ["To introduce continuously (e.g. ingredients into a food processor)."], "revilement": ["Coarse, insulting speech or expression."], "misuse": ["To put to a wrong use; to change the inherent purpose or function of something."], "pervert": ["To put to a wrong use; to change the inherent purpose or function of something."], "care for": ["To care for medicinally or surgically; to apply medical care to.", "To keep under careful scrutiny."], "caring": ["Feeling and exhibiting concern and empathy for others."], "grease one's palms": ["To give, or offer a bribe."], "payoff": ["Something (usually money) given in exchange for influence or as an inducement to dishonesty."], "act upon": ["To have and exert influence or effect."], "freshen": ["To make (to feel) fresh.", "To become or make oneself fresh again."], "refresh": ["To make (to feel) fresh.", "To become or make oneself fresh again."], "rinvigorire": ["To make (to feel) fresh."], "refreshen": ["To become or make oneself fresh again."], "freshen up": ["To become or make oneself fresh again."], "deflect": ["Draw someone's attention away from something."], "unhinge": ["To disturb in mind or make uneasy or cause to be worried or alarmed."], "inconvenience": ["To cause annoyance in; disturb, especially by minor irritations."], "discommode": ["To cause annoyance in; disturb, especially by minor irritations."], "incommode": ["To cause annoyance in; disturb, especially by minor irritations."], "hide out": ["To put something in a place where it will be harder to discover or out of sight."], "befog": ["To hide from view."], "becloud": ["To hide from view."], "obnubilate": ["To hide from view."], "haze over": ["To hide from view."], "hidden": ["Not accessible to view.", "Expressly designed to elude detection.", "Difficult to find."], "concealed": ["Not accessible to view."], "out of sight": ["Not accessible to view."], "alpine newt": ["a newt of the salamander order Caudata (or Urodela), Ichthyosaura alpestris, formerly Triturus alpestris and Mesotriton alpestris."], "Mexican salamander": ["An urodela of the species Ambystoma mexicanum originating from Mexico."], "heiress": ["A female heir."], "flexible": ["Capable of being flexed or bent without breaking; able to be turned, bowed, or twisted, without breaking; pliable; not stiff or brittle."], "molly": ["The female of the domesticated cat."], "tin can": ["A small, round-shaped metal container, used for different purposes like storing food or liquids, or collecting money."], "foil kite": ["A non-rigid kite based on the design of the parafoil."], "good grief": ["An expression of amazement."], "lion cub": ["A young lion."], "soil gas": ["The air and other gases in spaces in the soil; specifically that which is found within the zone of aeration. Also known as soil atmosphere.\\n(Source: MGH)"], "General Dictionary": ["General Dictionary"], "hoopoe": ["Bird found across Afro-Eurasia."], "falcon": ["Bird of prey."], "Haida": ["An endangered language spoken by the Haida people in the Haida Gwaii archipelago of the coast of Canada and on Prince of Wales Island in Alaska."], "Ngazidja Comorian": ["A dialect of the Comorian language spoken on the island of Ngazidja."], "mousehole": ["Small hole in the earth being the entrance of a tunnel a mouse built."], "canine": ["One of the teeth."], "canine tooth": ["One of the teeth."], "cronut": ["A pastry which combines donut and croissant."], "jetlag": ["Physiological ailments like headache and nausea, caused by the readjustment of the inner clock of the body to the time difference after a long-distance flight."], "jet-lagged": ["Suffering from jet lag."], "jetlagged": ["Suffering from jet lag."], "mother language": ["The first language learnt; the language one grew up with."], "Nuremberg": ["A city in the German state of Bavaria, in the administrative region of Middle Franconia."], "W\u00fcrzburg": ["A city in the region of Franconia, Northern Bavaria, Germany."], "Sonneberg": ["A town in Thuringia, Germany."], "stockings": ["Clothes to cover your feet. Usually you have two of them."], "Bliss Symbolics": ["An artificial language that has is a written language only.", "A pictotraphic writing system using a set of symbols created by Charles Kasiel Bliss in the 1940s as a written language."], "bring around": ["To remedy an illness using medical or medicamentous treatment; to provide a cure for."], "driving force": ["The act of applying force to propel something."], "knife thrust": ["A strong blow with a knife or other sharp pointed instrument."], "bear on": ["To press, drive, or impel (someone) to action or completion of an action.", "To be relevant or of importance to."], "bring up": ["To refer briefly to; to make reference to.", "To care for and train (a child)."], "carry up": ["To move to a higher location."], "colorize": ["To add color to."], "colorise": ["To add color to."], "color in": ["To add color to."], "colour in": ["To add color to."], "colourize": ["To add color to."], "colourise": ["To add color to."], "fundamental particle": ["(physics) any of the subatomic particles that does not consist of other, smaller particles."], "protection cover": ["Object that holds something to protect it."], "ablaqueation": ["The act or process of laying bare, as the roots of a tree."], "ablastemic": ["Non-germinal."], "ablaut": ["The substitution of one root vowel for another, thus indicating a corresponding modification of use or meaning, such as \"get, gat, got\"; \"sing, song\"; \"hang, hung\"."], "-able": ["Able to be; fit to be."], "able-bodied": ["Having a physically sound and strong body."], "able-minded": ["Having much intellectual power."], "ablegate": ["To send abroad.", "A representative of the pope charged with important commissions in foreign countries, one of his duties being to bring to a newly named cardinal his insignia of office."], "ablegation": ["The act of sending abroad."], "ableness": ["The ability of body or mind."], "ablepsia": ["The condition of being unable to see."], "common bleak": ["A small fresh-water fish of the species Alburnus alburnus."], "ablet": ["A small fresh-water fish of the species Alburnus alburnus."], "ablen": ["A small fresh-water fish of the species Alburnus alburnus."], "abligate": ["To tie up so as to hinder from."], "abligurition": ["Prodigal expense for food."], "ablins": ["Expresses that a statement is uncertain."], "aiblins": ["Expresses that a statement is uncertain."], "abloom": ["In or into bloom; in a blooming state."], "abluent": ["Washing away; carrying off impurities."], "blushing": ["(For a person) Showing blushes."], "ablush": ["(For a person) Showing blushes.", "In an blushing manner."], "ruddy": ["(For a person) Showing blushes."], "blushingly": ["In an blushing manner."], "ablutionary": ["Pertaining to ablution."], "abluvion": ["That which is washed off."], "abnegate": ["To refuse strongly and solemnly to own or acknowledge."], "denying": ["Who denies."], "abnegative": ["Who denies."], "abnegator": ["One who abnegates, denies, or rejects anything."], "eyewitness": ["Someone who has seen an event and can report or testify about it."], "eye witness": ["Someone who has seen an event and can report or testify about it."], "acheiropoietic": ["Not made by human hand."], "acheiropoieton": ["An image of Christ believed not to have been created by human hands."], "icon": ["A religious painting in Eastern Christian churches."], "Maccabees": ["A Jewish liberation movement which fought for, and established, independence in the Land of Israel during the second and first centuries BC."], "Machabees": ["A Jewish liberation movement which fought for, and established, independence in the Land of Israel during the second and first centuries BC."], "Maccabean": ["Of or pertaining to Judas Maccabeus or to the Maccabees."], "Seleucid Empire": ["A Hellenistic state ruled by the Seleucid dynasty founded by Seleucus I Nicator following the division of the empire created by Alexander the Great."], "Seleucid": ["Of or relating to the dynasty founded by Seleucus I Nicator."], "dynastic": ["Of or pertaining to a dynasty."], "dynastical": ["Of or pertaining to a dynasty."], "dynastically": ["In a dynastic manner."], "bear in mind": ["To keep in mind."], "Eternal City": ["The capital of Italy."], "BabelNet": ["A multilingual wide-coverage semantic network and encyclopedic dictionary."], "WordNet": ["A popular, lexical database for the English language based on psycholinguistic principles."], "gnaw": ["To bite with repeated effort at something hard to scrape or eat it."], "squeezebox": ["A musical instrument, such as the accordion and the concertina, that produces sound by compressing and decompressing a flexible bag."], "squeeze-box": ["A musical instrument, such as the accordion and the concertina, that produces sound by compressing and decompressing a flexible bag."], "patrol": ["A going of the rounds along the chain of sentinels and between the posts, by a guard, usually consisting of three or four men, to insure greater security from attacks on the outposts.", "A movement, by a small body of troops beyond the line of outposts, to explore the country and gain intelligence of the enemy's whereabouts.", "The guard or men who go the rounds for observation; a detachment whose duty it is to patrol.", "To go the rounds along a chain of sentinels; to traverse a police district or beat.", "To go the rounds of, as a sentry, guard, or policeman; as, to patrol a frontier; to patrol a beat."], "fatso": ["(Pejorative) A fat or overweight person."], "butterball": ["(Pejorative) A fat or overweight person."], "chubster": ["(Pejorative) A fat or overweight person."], "chunker": ["(Pejorative) A fat or overweight person."], "fatfuck": ["(Pejorative) A fat or overweight person."], "fattie": ["(Pejorative) A fat or overweight person."], "fat-ass": ["(Pejorative) A fat or overweight person."], "fatass": ["(Pejorative) A fat or overweight person."], "fatshit": ["(Pejorative) A fat or overweight person."], "lardass": ["(Pejorative) A fat or overweight person."], "lardo": ["(Pejorative) A fat or overweight person."], "oinker": ["(Pejorative) A fat or overweight person."], "obeast": ["(Pejorative) A fat or overweight person."], "podge": ["(Pejorative) A fat or overweight person."], "porker": ["(Pejorative) A fat or overweight person."], "pudge": ["(Pejorative) A fat or overweight person."], "salad dodger": ["(Pejorative) A fat or overweight person."], "tub of lard": ["(Pejorative) A fat or overweight person."], "as fit as a fiddle": ["In very good health."], "in rude health": ["In very good health."], "as sound as a bell": ["In very good health."], "right as rain": ["In very good health."], "fit as a fiddle": ["In very good health."], "sound as a bell": ["In very good health."], "fit as a butcher's dog": ["In very good health."], "fit as a flea": ["In very good health."], "sound in wind and limb": ["In very good health."], "jitters": ["A condition that makes a person shake."], "shakes": ["A condition that makes a person shake."], "predominate": ["To emerge; to be visible or larger in number, quantity, power, status or importance."], "make it": ["To succeed in a big way; to get to the top."], "get in": ["To succeed in a big way; to get to the top."], "pay back": ["To take revenge on or get even."], "pay off": ["To take revenge on or get even."], "take hold of": ["To take hold of, especially in the hands, so as to seize or restrain or stop the motion of."], "get under one's skin": ["To irritate."], "abnet": ["The girdle of a Jewish priest or officer."], "abnodate": ["To clear (tress) from knots."], "abnodation": ["The act of cutting away the knots of trees."], "abnormity": ["An anomaly, malformation, or difference from the normal.", "Person or thing that is monstrous.", "The state of being monstrous."], "monstrosity": ["Person or thing that is monstrous.", "The state of being monstrous."], "abnormous": ["Deviating from the ordinary or natural type."], "abodance": ["A sign that is supposed to reveal whether the future will be favourable or not."], "portending": ["A sign that is supposed to reveal whether the future will be favourable or not."], "sojourn": ["A period of time spent in a place."], "foreshow": ["To make a prediction or prophecy."], "bode": ["To make a prediction or prophecy."], "augur": ["To make a prediction or prophecy."], "prophesy": ["To make a prediction or prophecy.", "To deliver a sermon."], "foreboding": ["A sign that is supposed to reveal whether the future will be favourable or not."], "forboding": ["A sign that is supposed to reveal whether the future will be favourable or not."], "abodement": ["A sign that is supposed to reveal whether the future will be favourable or not."], "aboding": ["A sign that is supposed to reveal whether the future will be favourable or not."], "opine": ["To have as opinion, belief, or idea."], "reckon": ["To have as opinion, belief, or idea."], "abolishable": ["Capable of being abolished."], "abolisher": ["A person who abolishes."], "Japanese macaque": ["A monkey of the species Macaca fuscata, native to Japan."], "snow monkey": ["A monkey of the species Macaca fuscata, native to Japan."], "give way": ["To end resistance, as under pressure or force."], "excogitate": ["To use the intellect to plan or design something."], "contrive": ["To use the intellect to plan or design something.", "To make or work out a plan for; devise."], "organise": ["To arrange by systematic planning and united effort (e.g. a plot, a strike, a plan)."], "fabricate": ["To make things, usually on a large scale, with tools and either physical labor or machinery, out of artificial or natural components or parts.", "To make up something artificial or untrue."], "cook up": ["To make up something artificial or untrue."], "popularity": ["The quality of being well-liked or known, or having a high social status."], "sheikdom": ["Geographical area or society ruled by a sheik."], "TV set": ["Device used to watch films, news, sports etc."], "broom": ["A tool used to sweep and clean the floor, made of a bundle of straws or twigs attached to a long handle."], "visa": ["Document issued by a country allowing the holder to enter this country."], "useless": ["Of no use."], "peaceful": ["That does not involve war or crime."], "sane": ["Not mad or mentally ill."], "touristy": ["Related to tourism."], "run out": ["To be used up; to be exhausted.", "To leave suddenly and as if in a hurry.", "To exhaust the supply of."], "long johns": ["A piece of underwear having long legs which are open at their ends."], "so long": ["Expression of greeting used by two or more people who meet each other."], "CSV": ["Tabular data in plain-text form whose records are separated by commas."], "shove": ["To press or force."], "coerce": ["To exert violence, or constraint upon or against a person in order to obtain something by physical, moral or intellectual means."], "military unit": ["An organised group of people that exerts power in order to maintain or take control over other people; such as a military force or a police force."], "military force": ["An organised group of people that exerts power in order to maintain or take control over other people; such as a military force or a police force."], "Joanna": ["Female first name."], "Joanne": ["Female first name."], "oarfish": ["A large, elongated, pelagic lampriform fish of the family Regalecidae."], "giant oarfish": ["A fish of the family Regalecus glesne."], "king of herrings": ["A fish of the family Regalecus glesne."], "lordship": ["The state or condition of being a lord."], "ladyship": ["The state or condition of being a lady."], "get out": ["To move out of or depart from."], "tan": ["To treat skins and hides with tannic acid so as to convert them into leather.", "To get a tan, from wind or sun.", "A browning of the skin obtained from exposure to the sun."], "suntan": ["A browning of the skin obtained from exposure to the sun."], "revoke": ["To cancel or eliminate officially."], "do away with": ["To remove or get rid of, as being in some way undesirable."], "get rid of": ["To remove or get rid of, as being in some way undesirable."], "hap": ["To come to pass."], "go on": ["To maintain an action, state or condition without interruption.", "To come to pass.", "To continue talking."], "pass off": ["To come to pass."], "fall out": ["To come to pass."], "come about": ["To come to pass."], "quicken": ["To move faster."], "hush money": ["A bribe given to assure secrecy."], "eleutheromania": ["A strong or irresistible desire for freedom."], "eleutheromaniac": ["Having a strong or irresistible desire for freedom.", "A person having a strong or irresistible desire for freedom."], "illumine": ["To give light to (something)."], "light up": ["To give light to (something).", "To start the burning of (a pipe, cigarette, etc.)."], "illume": ["To give light to (something)."], "a leopard cannot change its spots": ["One cannot change or hide one's own nature in a durable manner."], "a leopard can't change its spots": ["One cannot change or hide one's own nature in a durable manner."], "a leopard doesn't change its spots": ["One cannot change or hide one's own nature in a durable manner."], "don't count your chickens before they're hatched": ["One shouldn't take for granted that something will happen before it really happens."], "a rolling stone gathers no moss": ["A person who never stays in one place will never be wealthy."], "you can't teach an old dog new tricks": ["It is very difficult to change a person's habits or character."], "old habits die hard": ["It is very difficult to change a person's habits or character."], "if wishes were horses, beggars would ride": ["[Expression used to criticize the validity of a reasoning based on a lot of unfounded hypothesis]"], "if pigs had wings they would fly": ["[Expression used to criticize the validity of a reasoning based on a lot of unfounded hypothesis]"], "if pigs had wings they could fly": ["[Expression used to criticize the validity of a reasoning based on a lot of unfounded hypothesis]"], "advert": ["To refer briefly to; to make reference to.", "To listen or give attention to."], "cite": ["To refer briefly to; to make reference to.", "A short note recognizing a source of information or of a quoted passage."], "draw in": ["To draw by a physical force causing or tending to cause to approach, adhere, or unite."], "emphasize": ["To stress, single out as important."], "emphasise": ["To stress, single out as important."], "punctuate": ["To stress, single out as important."], "tenseness": ["Difficulty that causes worry or emotional tension."], "hem in": ["To beset or surround with armed forces, for the purpose of compelling to surrender."], "waiting line": ["Waiting line."], "line up": ["To arrange in a straight line.", "To form a queue or a line; to stand in line."], "queue up": ["To form a queue or a line; to stand in line."], "play along": ["To perform an accompanying part or parts in a composition."], "attach to": ["To be present or associated with an event or entity (e.g. a dish or a disease)."], "come with": ["To be present or associated with an event or entity (e.g. a dish or a disease)."], "go with": ["To be present or associated with an event or entity (e.g. a dish or a disease)."], "bring together": ["To cause to become joined or linked."], "gratify": ["To give pleasure to; to make happy or satisfied."], "friction match": ["A stick with inflammable substance on one end that can be set on fire by friction."], "posting": ["A sign posted in a public place as an advertisement."], "hasten": ["To move or do something at a fast pace.", "To move fast."], "look sharp": ["To move or do something at a fast pace."], "festinate": ["To move or do something at a fast pace."], "hotfoot": ["To move fast."], "rush along": ["To move fast."], "step on it": ["To move fast."], "deferred payment": ["The financial facility or system by which goods and services are provided in return for deferred, instead of immediate, payment."], "acknowledgment": ["A short note recognizing a source of information or of a quoted passage."], "give care": ["To provide care for."], "roll up": ["To get or gather together."], "hoard": ["To get or gather together."], "impeach": ["To lay a charge against; bring an accusation against."], "incriminate": ["To lay a charge against; bring an accusation against."], "criminate": ["To lay a charge against; bring an accusation against."], "larn": ["To acquire, or attempt to acquire knowledge or an ability to do something."], "sharpen": ["To make sharp or sharper.", "To make crisp or more crisp and precise.", "To put (an image) into focus.", "To become sharp or sharper."], "focalize": ["To put (an image) into focus."], "focalise": ["To put (an image) into focus."], "aline": ["To arrange in a straight line."], "thicken": ["To make thick or thicker.", "To become thick or thicker."], "inspissate": ["To make thick or thicker.", "To become thick or thicker."], "take aim": ["To point or cause to go (blows, weapons, or objects such as photographic equipment) towards"], "intent": ["An anticipated outcome that is intended to obtain or that guides your planned actions."], "intention": ["An anticipated outcome that is intended to obtain or that guides your planned actions."], "signalize": ["To call attention on a person or thing carefully and clearly."], "signalise": ["To call attention on a person or thing carefully and clearly."], "call attention": ["To call attention on a person or thing carefully and clearly."], "sweeten": ["To make sweeter in taste.", "To make sweeter, more pleasant, or more agreeable."], "dulcify": ["To make sweeter in taste."], "edulcorate": ["To make sweeter in taste."], "dulcorate": ["To make sweeter in taste."], "aggrieve": ["To cause to feel sorrow."], "domesticate": ["To make obedient, docile and tractable; to train to follow orders of the owner. \u2003"], "domesticize": ["To make obedient, docile and tractable; to train to follow orders of the owner. \u2003"], "domesticise": ["To make obedient, docile and tractable; to train to follow orders of the owner. \u2003"], "reclaim": ["To make obedient, docile and tractable; to train to follow orders of the owner. \u2003", "To claim back."], "tone down": ["To make less strong or intense; soften."], "dope off": ["To go to sleep; to change from waking state to sleeping state."], "flake out": ["To go to sleep; to change from waking state to sleeping state."], "drift off": ["To go to sleep; to change from waking state to sleeping state."], "nod off": ["To go to sleep; to change from waking state to sleeping state."], "drop off": ["To go to sleep; to change from waking state to sleeping state."], "doze off": ["To go to sleep; to change from waking state to sleeping state."], "actualise": ["To make real or concrete; give reality or substance to."], "actualize": ["To make real or concrete; give reality or substance to."], "orchidometer": ["A medical instrument used to measure the volume of the testicles."], "orchiometer": ["A medical instrument used to measure the volume of the testicles."], "VirtualBox": ["A virtualization software package for x86 and AMD64/Intel64-based computers."], "burden": ["To load or burden; encumber."], "class diagram": ["A type of static structure diagram that describes the structure of a system by showing the system's classes, their attributes, operations (or methods), and the relationships among objects."], "activity diagram": ["A graphical representation of workflows of stepwise activities and actions with support for choice, iteration and concurrency."], "use case diagram": ["A representation of a user's interaction with the system and depicting the specifications of a use case. It can portray the different types of users of a system and the various ways that they interact with the system."], "state diagram": ["A type of diagram used to describe the behavior of systems which require that the system described is composed of a finite number of states."], "object diagram": ["A diagram that shows a complete or partial view of the structure of a modeled system at a specific time."], "go for": ["To give an affirmative reply to; respond favorably to."], "live with": ["To tolerate or accommodate oneself to."], "let in": ["To allow participation in or the right to be part of; permit to exercise the rights, functions, and responsibilities of."], "countenance": ["To consent to, to give permission."], "take into account": ["To allow or plan for a certain possibility; concede the truth or validity of something.", "To incorporate in a price for which one asks."], "subject matter": ["What a communication contains word by word."], "draw near": ["To come near to; to move towards."], "draw close": ["To come near to; to move towards."], "go up": ["To come near to; to move towards."], "border on": ["To come near or verge on, resemble, come nearer in quality, or character."], "go about": ["To begin to deal with, e.g., a task, a problem, etc."], "be ashamed": ["To have or feel shame."], "crime novel": ["A novel in which a crime is committed and the focus of the characters is on solving the mystery of the crime."], "crime story": ["A novel in which a crime is committed and the focus of the characters is on solving the mystery of the crime."], "crime thriller": ["A novel in which a crime is committed and the focus of the characters is on solving the mystery of the crime."], "pay heed": ["To listen or give attention to."], "give ear": ["To listen or give attention to."], "go to": ["To go to or be present at (e.g. meetings, church services, university, etc.)."], "batch": ["A great number or large amount of things not placed in a pile."], "good deal": ["A great number or large amount of things not placed in a pile."], "great deal": ["A great number or large amount of things not placed in a pile."], "hatful": ["A great number or large amount of things not placed in a pile."], "conform to": ["To satisfy a condition or restriction."], "fit out": ["To furnish with whatever is needed for use or for any undertaking."], "outfit": ["To furnish with whatever is needed for use or for any undertaking."], "follow through": ["To bring something to fulfilment."], "follow up": ["To bring something to fulfilment."], "follow out": ["To bring something to fulfilment."], "put through": ["To bring something to fulfilment."], "carry through": ["To rescue from danger, harm, or an injury that could be sustained; to bring into safety.", "To satisfy, carry out, bring to completion (an obligation, a requirement, etc.)."], "cleave": ["To come or be in close contact with; to stick or hold together and resist separation."], "cohere": ["To come or be in close contact with; to stick or hold together and resist separation."], "hold fast": ["To stick to firmly."], "prescribe": ["To advise and authorise a patient to get and take a certain medicine and/or treatment."], "servant": ["A person performing duties for others. For example a person employed in a household which cares about the domestic duties."], "traveller": ["A person who travels may it be for holiday, business etc."], "sailor": ["A person working on a ship making sure it reaches its destination."], "trader": ["A person working in commerce, selling and buying goods."], "concierge": ["A hotel employee who assists guests."], "parents": ["Father and mother of a child."], "darling": ["Greatly loved.", "Affectionate expression used to address a beloved person."], "claimant": ["A person which during a lawsuit makes a claim."], "crucifer": ["A plant of the family Brassicaceae, whose flower have the shape of a cross."], "cruciferous": ["Whose flowers have four petals arranged like the arms of a cross.", "Bearing a cross."], "irony": ["Made out of iron.", "A form of humor by which a statement intentionally expresses the contrary to what he intends to express.", "A dissimulation or ignorance feigned for the purpose of confounding or provoking an antagonist.", "Resembling iron taste, hardness, or other physical property."], "Socratic irony": ["A dissimulation or ignorance feigned for the purpose of confounding or provoking an antagonist."], "bona fide": ["Without fraud or deceit."], "in good faith": ["Without fraud or deceit."], "cheaply": ["In a cheap manner; without expending much money."], "expensively": ["In an expensive manner."], "askew": ["Away from the expected or proper direction.", "In an oblique manner."], "tentacular": ["Of or pertaining to a tentacle.", "Resembling a tentacle."], "moan": ["A low, mournful cry of pain, sorrow or pleasure."], "awesome": ["Causing wonder, admiration or astonishment."], "fantastic": ["Causing wonder, admiration or astonishment."], "neb": ["External anatomical structure of birds which is used for taking food and for eating."], "object oriented programming": ["A programming paradigm that uses \"objects\" and their interactions to design applications and computer programs."], "OOP": ["A programming paradigm that uses \"objects\" and their interactions to design applications and computer programs."], "architectural plan": ["Scale drawing of a structure or its parts."], "be after": ["To have the intention to carry out some action."], "come-on": ["Qualities that attract by seeming to promise some kind of reward."], "tempt": ["To dispose or incline or entice to; to be attractive by arousing hope or desire.", "To attract or provoke someone to do something through (often false or exaggerated) promises or persuasion."], "set apart": ["To select something or someone for a specific purpose."], "designate": ["To give something to (a person), or assign a task to (a person)."], "impute": ["To credit something to.", "To attribute or credit to."], "get angry": ["To feel intense anger."], "ramp": ["To act or speak violently, as if in state of a great anger."], "idolise": ["To love unquestioningly and uncritically or to excess; to treat or pursue with devotion or adoration."], "idolize": ["To love unquestioningly and uncritically or to excess; to treat or pursue with devotion or adoration."], "revere": ["To love unquestioningly and uncritically or to excess; to treat or pursue with devotion or adoration.", "To regard with feelings of respect and reverence."], "fancify": ["To make more beautiful."], "grace": ["To make more attractive by adding ornament, colour, etc.", "To be beautiful to look at."], "espouse": ["To choose and follow; as of theories, ideas, policies, strategies or plans."], "chuck": ["To regurgitate the contents of the stomach."], "regurgitate": ["To regurgitate the contents of the stomach."], "disgorge": ["To regurgitate the contents of the stomach."], "savanna": ["A large open grassland in tropical and subtropical regions."], "aurora borealis": ["A natural light display in the sky particularly in the Arctic regions."], "northern lights": ["A natural light display in the sky particularly in the Arctic regions."], "arctic lights": ["A natural light display in the sky particularly in the Arctic regions."], "loam": ["A rich soil consisting of a mixture of sand and clay and decaying organic materials."], "he/she/it": ["Third person singular pronoun, regardless of gender/sex."], "herdsman": ["A man who looks after a herd of animals."], "he-goat": ["A male goat."], "fowl": ["A bird that is kept for its meat and eggs."], "dribble": ["To let saliva flow out of one\u2019s mouth onto one\u2019s chin."], "cooked": ["Contrasting with 'raw'."], "jug": ["A container for holding and pouring liquids with a handle and a spout."], "saucer": ["A small dish for placing a cup."], "tongs": ["A tool that consists of two movable bars joined at one end, used to pick up an object."], "dough": ["A mixture of flour and water ready to be baked into bread, pastry etc."], "knead": ["To press a dough many times with one's hands."], "ayahuasca": ["A psychoactive infusion prepared from the Banisteriopsis spp."], "spindle": ["A stick used in spinning fiber into thread."], "awl": ["Pointed tool for marking or piercing wood or leather."], "take down": ["To make a person morally inferior."], "doctor up": ["To alter or make obscure, as with the intention to deceive."], "sophisticate": ["To alter or make obscure, as with the intention to deceive."], "aerate": ["To expose to fresh air."], "give vent": ["To give expression or utterance to."], "thatch": ["Natural roofing material such as straw, reeds, leaves, etc."], "ridgepole": ["The highest horizontal beam in a roof."], "post": ["A strong upright piece of wood, metal etc. that is fixed into the ground, especially to support something.", "To affix in a public place or for public notice.", "To make public with, or as if with, a poster.", "To enter (e.g. a message) on a public list.", "To place so as to be noticed.", "An online posting."], "paddy": ["Wet land in which rice is grown."], "plow": ["To use a plough on to prepare for planting."], "hoe": ["A tool with handle and blade with two or more prongs used for weeding, raking, etc."], "thresh": ["To separate the grain from the straw or husks by beating."], "transfix": ["To render motionless, as with a fixed stare or by arousing fear."], "spellbind": ["To render motionless, as with a fixed stare or by arousing fear."], "enamour": ["To attract, arouse and hold attention and interest, as by charm or beauty."], "trance": ["To attract, arouse and hold attention and interest, as by charm or beauty."], "becharm": ["To attract, arouse and hold attention and interest, as by charm or beauty."], "enamor": ["To attract, arouse and hold attention and interest, as by charm or beauty."], "captivate": ["To attract, arouse and hold attention and interest, as by charm or beauty."], "enthrall": ["To delight to a high degree; to hold spellbound."], "enthral": ["To delight to a high degree; to hold spellbound."], "wear down": ["To become tired through overuse or great strain or stress."], "outwear": ["To become tired through overuse or great strain or stress."], "wear out": ["To become tired through overuse or great strain or stress."], "wear upon": ["To become tired through overuse or great strain or stress."], "tire out": ["To become tired through overuse or great strain or stress."], "fag out": ["To become tired through overuse or great strain or stress."], "posit": ["To put before."], "laud": ["To praise, glorify, or honor (e.g. a virtue)."], "extol": ["To praise, glorify, or honor (e.g. a virtue)."], "schema": ["A schematic or preliminary plan."], "draft": ["The act of pulling something along a surface using motive power.", "A preliminary sketch of a picture or document.", "A preliminary version of a written work.", "To draw up an outline or sketch for something."], "rough drawing": ["A preliminary sketch of a picture or document."], "draft copy": ["A preliminary version of a written work."], "adumbrate": ["To bring information in fewer words; to describe roughly or briefly."], "delineate": ["To trace the shape of."], "limn": ["To trace the shape of."], "tantalise": ["To harass with persistent criticism or carping."], "tantalize": ["To harass with persistent criticism or carping."], "razz": ["To harass with persistent criticism or carping."], "asseverate": ["To say definitely and categorically."], "teasing": ["The act of harassing someone playfully or maliciously."], "ribbing": ["The act of harassing someone playfully or maliciously."], "tantalization": ["The act of harassing someone playfully or maliciously."], "catch on": ["To become popular."], "instal": ["To place."], "lay down": ["To institute or enact (e.g. laws)."], "manufacturing plant": ["An establishment where products are manufactured using industrial methods."], "manufactory": ["An establishment where products are manufactured using industrial methods."], "engraft": ["To fix or set securely or deeply."], "imbed": ["To fix or set securely or deeply."], "come through": ["To attain a desired goal."], "come after": ["To be the successor of."], "gimmick": ["A drawback or difficulty that is not readily apparent."], "catch up with": ["To catch up with and possibly overtake (e.g. cars in a race)."], "sequester": ["To take possession of by force or authority."], "arrogate": ["Seize and take control without authority and possibly with force."], "slice up": ["To cut something into slices."], "flaunt": ["The act of displaying something ostentatiously.", "To display or act proudly, ostentatiously or pretentiously."], "ostentate": ["To display or act proudly, ostentatiously or pretentiously."], "swank": ["To display or act proudly, ostentatiously or pretentiously."], "ostentation": ["A gaudy and proud outward display."], "fanfare": ["A gaudy and proud outward display."], "grow fond of": ["To feel affection, tenderness and good for someone or something."], "become attached": ["To feel affection, tenderness and good for someone or something."], "get attached": ["To feel affection, tenderness and good for someone or something."], "mold": ["To create something, usually for a specific function."], "digital analytics": ["The analysis of qualitative and quantitative data from your website and the competition, to drive a continual improvement of the online experience that your customers, and potential customers have, which translates into your desired outcomes (online and offline). [Avinash Kaushik]"], "an\u00e1lisis web": ["The analysis of qualitative and quantitative data from your website and the competition, to drive a continual improvement of the online experience that your customers, and potential customers have, which translates into your desired outcomes (online and offline). [Avinash Kaushik]"], "glaring": ["Extremely bright."], "fulgent": ["Extremely bright."], "glary": ["Extremely bright."], "motor": ["To travel or be transported in a vehicle."], "straw": ["A thin tube used to suck liquids from a container into the mouth of the drinker.", "Dried stalks of a cereal plant."], "drinking straw": ["A thin tube used to suck liquids from a container into the mouth of the drinker."], "adze": ["A sharp tool with the blade at a right angle to the handle, used to shape pieces of wood"], "rug": ["A piece of thick cloth or wool that is smaller than a carpet and is put on the floor as decoration"], "netbag": ["Bag made of net used to carry things."], "tumpline": ["A strap slung over the forehead or chest used (especially by native Americans) for carrying packs or loads"], "whetstone": ["A flat stone used for sharpening edged tools or knives."], "crouch": ["To lower one's body close to the ground by bending one's knees completely.", "To bend one's back forward."], "come down": ["To go from a higher to a lower place.", "To move downward and lower (e.g. of temperature values or falling objects)."], "crooked": ["Opposite of straight"], "contrast material": ["A substance used in medical imaging to enhance the contrast of structures or fluids within the body."], "crosscut": ["A route shorter than the usual one."], "cutoff": ["A route shorter than the usual one."], "settling": ["The sudden sinking or gradual downward settling of the Earth's surface with little or no horizontal motion. The movement is not restricted in rate, magnitude, or area involved. Subsidence may be caused by natural geologic processes, such as solution, thawing, compaction, slow crustal warping, or withdrawal of fluid lava from beneath a solid crust; or by man's activity, such as subsurface mining or the pumping of oil or ground water."], "subsiding": ["The sudden sinking or gradual downward settling of the Earth's surface with little or no horizontal motion. The movement is not restricted in rate, magnitude, or area involved. Subsidence may be caused by natural geologic processes, such as solution, thawing, compaction, slow crustal warping, or withdrawal of fluid lava from beneath a solid crust; or by man's activity, such as subsurface mining or the pumping of oil or ground water."], "accolade": ["A tangible symbol signifying approval or distinction."], "honor": ["A tangible symbol signifying approval or distinction.", "To show respect towards."], "honour": ["A tangible symbol signifying approval or distinction.", "To show respect towards."], "laurels": ["A tangible symbol signifying approval or distinction."], "karstic": ["Relating to karst."], "karstology": ["The study of karst formations."], "karstologist": ["A person who studies karst formations."], "karstological": ["Relating to karstology."], "workaholic": ["A person who is addicted to work.", "(For a person) Addicted to work."], "workaholism": ["The addiction to work."], "ergomania": ["The addiction to work."], "fittingness": ["The quality of being suitable."], "elbow grease": ["The use of forces and means higher than normal in order to achieve a given purpose."], "knowledgeable": ["Knowledgeable through having read extensively."], "well-educated": ["Knowledgeable through having read extensively."], "lettered": ["Knowledgeable through having read extensively."], "awarding": ["The formal acceptance of a supplier's bid or proposal by a government agency. Following such acceptance, the agency usually issues a purchase order to the vendor reflecting the award.\\n(source: OAS)"], "shriek": ["To make a very high, loud sound."], "chieftain": ["The leader/ruler of a tribe/clan"], "clan": ["Extended family."], "morbillivirus": ["A virus of the genus Morbillivirus."], "morbilliviral": ["Relating to morbilliviruses."], "ocean quahog": ["A clam of the species Arctica islandica."], "Icelandic cyprine": ["A clam of the species Arctica islandica."], "mahogany clam": ["A clam of the species Arctica islandica."], "mahogany quahog": ["A clam of the species Arctica islandica."], "black quahog": ["A clam of the species Arctica islandica."], "black clam": ["A clam of the species Arctica islandica."], "earmark": ["To assign a resource to a particular person or cause."], "set aside": ["To assign a resource to a particular person or cause."], "belly-up": ["Having insufficient assets to cover one's debts.", "Without money."], "to be soft in the head": ["to be soft in the head"], "hieromancy": ["Divination by observing objects offered in sacrifice."], "necromancy": ["A form of magic involving communication with the deceased for the purpose of divination."], "nuclear holocaust": ["The potential annihilation of human civilization by nuclear warfare."], "intrust": ["To confer a trust upon."], "play false": ["To confuse completely by concealing one's true motives from, especially by elaborately feigning good intentions so as to gain an end."], "hoodwink": ["To confuse completely by concealing one's true motives from, especially by elaborately feigning good intentions so as to gain an end."], "lead by the nose": ["To confuse completely by concealing one's true motives from, especially by elaborately feigning good intentions so as to gain an end."], "approaching": ["The act of drawing spatially closer to something."], "accostamento": ["The act of drawing spatially closer to something."], "come near": ["To come near in time."], "spoilt": ["Having changed its colour, smell or composition (partially or completely), due to being attacked and decomposed by microorganisms (relating to organic matter); damaged by decay."], "spoiled": ["Having changed its colour, smell or composition (partially or completely), due to being attacked and decomposed by microorganisms (relating to organic matter); damaged by decay."], "urge": ["To push for something.", "To force or impel in a given direction.", "To spur on or encourage especially by cheers and shouts.", "An instinctive motive.", "A strong restless desire."], "recommend": ["To push for something.", "To express a good opinion of.", "To make interesting, attractive or acceptable."], "urge on": ["To force or impel in a given direction.", "To spur on or encourage especially by cheers and shouts."], "root on": ["To spur on or encourage especially by cheers and shouts."], "barrack": ["To spur on or encourage especially by cheers and shouts."], "pep up": ["To spur on or encourage especially by cheers and shouts."], "dramatize": ["To put into dramatic form."], "dramatise": ["To put into dramatic form."], "come out": ["To come out of (e.g. water)."], "come forth": ["To come out of (e.g. water)."], "hire": ["To hold under a lease or rental agreement of goods and services."], "smite": ["To cause physical pain; to infect with a contagious disease."], "herd": ["To cause to herd, drive, or crowd together.", "A number of domestic animals assembled together under the watch or ownership of a keeper.", "Any collection of animals gathered or travelling in company.", "To keep, move, or drive animals."], "crowd together": ["To gather together in large numbers."], "fall off": ["To fall heavily or suddenly; decline markedly."], "slump": ["To fall heavily or suddenly; decline markedly."], "rid": ["To relieve from."], "disembarass": ["To relieve from."], "exempt": ["To grant relief or an exemption from a rule or requirement to."], "make easy": ["To make easy or easier."], "overcharge": ["To ask an unreasonable price."], "surcharge": ["To ask an unreasonable price."], "soak": ["To ask an unreasonable price."], "crochet": ["To make a piece of needlework."], "recess": ["To delay or put off an event or an appointment."], "go around": ["To avoid something unpleasant or laborious.", "To become widely known and passed on."], "short-circuit": ["To cause a short circuit.", "To avoid something unpleasant or laborious."], "get around": ["To avoid something unpleasant or laborious."], "set on": ["To attack someone physically or emotionally."], "parcel out": ["To divide something into portions and dispense it."], "circularize": ["To cause to become widely known."], "circularise": ["To cause to become widely known."], "propagate": ["To cause to become widely known."], "pass around": ["To divide or distribute something in an even way."], "distribuite": ["To divide or distribute something in an even way."], "spreading": ["The process or result of diffusion, dispersal, expansion, extension, etc."], "overspread": ["To spread across or over (e.g. of liquid spots)."], "fan out": ["To move outward (e.g. soldiers)."], "manhandle": ["To handle roughly or badly."], "cede": ["To relinquish possession or control of to another because of demand or compulsion."], "piledriver": ["Wrestling move in which the wrestler grabs his opponent, turns him upside-down, and drops into a sitting or kneeling position, driving the opponent head into the mat."], "backbreaker": ["A professional wrestling move in which a wrestler drops an opponent so that the opponent's back impacts or is bent backwards against the wrestler's knee."], "camel clutch": ["A professional wrestling move in which the wrestler sits on the back of his opponent and places the arm or both arms of the opponent on his thighs."], "overtop": ["To look down on."], "beat up": ["To give a beating to; subject to a punishment or an act of aggression."], "work over": ["To give a beating to; subject to a punishment or an act of aggression."], "rhythm": ["Speed degree during a certain part of a song rhythm."], "musical rhythm": ["Speed degree during a certain part of a song rhythm."], "split up": ["To divide fully or partly along a more or less straight line."], "roseola": ["An area of reddened, irritated, and inflamed skin."], "skin rash": ["An area of reddened, irritated, and inflamed skin."], "fault tolerance": ["The property that enables a system (often computer-based) to continue operating properly in the event of the failure of some of its components."], "boost": ["To help to advance (in terms of knowledge).", "The act of encouraging."], "commercial enterprise": ["Commercial, industrial or financial activity."], "business enterprise": ["Commercial, industrial or financial activity."], "head covering": ["A head covering."], "ingurgitate": ["To eat by swallowing large bits of food with little or no chewing."], "overindulge": ["To eat by swallowing large bits of food with little or no chewing."], "glut": ["To eat by swallowing large bits of food with little or no chewing."], "overgorge": ["To eat by swallowing large bits of food with little or no chewing."], "engorge": ["To eat by swallowing large bits of food with little or no chewing."], "restructure": ["To construct, restore or form anew."], "fag": ["Offensive term for an openly, often effeminate, homosexual man."], "fagot": ["Offensive term for an openly, often effeminate, homosexual man."], "torque wrench": ["A tool used to precisely apply a specific torque to a fastener such as a nut or bolt."], "grandparents": ["The parents of someone's parent."], "parents-in-law": ["Mother-in-law and father-in-law."], "hawk": ["A predatory bird of the family Accipitridae."], "toucan": ["A bird with a large colorful beak, living in the tropics and belonging to the family Ramphastidae."], "opossum": ["A mammal being a member of the family Didelphidae."], "head louse": ["A parasitic insect which lives among the hairs on the head of a human and feeds on blood."], "body louse": ["A parasitic insect that infests the body and clothes of humans and feeds on blood."], "tapir": ["Any one the species of large odd-toed ungulates of the family Tapiridae with a long prehensile upper lip."], "agouti": ["A rodent similar in appearance to a guinea pig but having longer legs."], "bandicoot": ["Small, ratlike marsupial, of the family Peramelidae with a distinctive long snout."], "barn owl": ["An owl commonly found in barns and other farm buildings; often having a white face."], "bustard": ["Any one of several large terrestrial birds of the family Otididae that inhabit dry open country and steppes in the eastern hemisphere."], "capibara": ["The largest living rodent native to South America, living partly on land and partly in water."], "condor": ["Either of two vultures, Vultur gryphus of the Andes or Gymnogyps californianus, a nearly extinct vulture of the mountains of California."], "hocco": ["A bird, the crested curassow or royal pheasant."], "ibis": ["Any of various long-legged wading birds with long downcurved bills used to probe the mud for prey; belonging to the family Threskiornithidae."], "jabiru": ["A species of bird Jabiru mycteria in the monotypic genus Jabiru, of the stork family Ciconiidae, endemic to the Americas."], "Zazaish": ["An Indo-Iranian language spoken in eastern Turkey."], "paca": ["A large rodent, with dark brown or black fur, a white or yellowish underbelly and rows of white spots along its sides, native to Central America and South America."], "piranha": ["Any of the carnivorous freshwater fish living in South American rivers and belonging to the subfamily Serrasalminae."], "plover": ["Any of various wading birds of the family Charadriidae."], "roadrunner": ["Either of two species of bird in the genus Geococcyx of the cuckoo family, native to North and Central America. They are fast runners."], "trumpeter bird": ["The largest North American swan, Cygnus buccinator; they have white plumage with a long neck, a short black bill."], "footprint": ["The impression of the foot in a soft substance such as sand or snow."], "lame": ["Unable to walk properly because of a problem with one's feet or legs.", "Moving with pain or difficulty on account of injury, defect or temporary obstruction of a function."], "fig": ["The fruit of the fig tree, pear-shaped and containing many small seeds."], "grease": ["Animal fat in a melted or soft state; a semisolid lubricant."], "fig tree": ["A fruit-bearing tree or shrub of the genus Ficus that is native mainly to the tropics."], "biscuit": ["A cookie or cracker. A small bread usually made with baking soda."], "cassava flour": ["Flour made of the cassava plant or root."], "mochi": ["A Japanese rice cake made from glutinous rice."], "rice ball": ["A Japanese snack food made from white rice formed into a triangular or oval shape, usually with a filling."], "musubi": ["A food made of a food such as meat tied to a block of rice with nori, differing from sushi in that the rice is not vinegared."], "tamale": ["Mexican dish of cornmeal dough shell filled with various ingredients (e.g. chopped beef, pork, sweet filling) then steamed in corn husks."], "felt": ["A cloth or stuff made of matted fibres of wool, or wool and fur, fulled or wrought into a compact substance by rolling and pressure, with lees or size, without spinning or weaving. \u2003"], "poncho": ["A simple garment, made from a rectangle of cloth, with a slit in the middle for the head. \u2003"], "grass skirt": ["A skirt made from long dried grass, or synthetic material resembling it."], "shoemaker": ["A person whose profession is making and repairing footwear."], "headband": ["A strip of fabric worn around the head or a hair-accessory, made of a flexible material and curved like a horseshoe, for holding one's hair back."], "headdress": ["A decorative covering or ornament worn on the head."], "plait": ["A flat fold; a doubling, as of cloth; a pleat.", "A braid, as of hair or straw; a plat.", "To make by braiding or interlacing."], "fringe": ["A decorative border."], "cookhouse": ["A small house where cooking takes place; a kitchen house."], "meetinghouse": ["A building where people meet for a purpose."], "padlock": ["A detachable lock that can be used to secure something by means of a sliding or hinged shackle"], "griddle": ["A flat plate of metal used for cooking."], "mosquito net": ["A fine net placed around a bed to protect the occupant against mosquitos and the diseases carried by them"], "roof tile": ["A ridge or roofing tile, a tile for the ridge of a roof."], "silvereye": ["A very small omnivorous passerine bird of the south-west pacific."], "wax-eye": ["A very small omnivorous passerine bird of the south-west pacific."], "Sutsilvan": ["A Romansh language spoken in the Hinterrhein District of Grisons near the upper Rhine."], "Vallader": ["A group of Romansh dialects spoken in the Lower Engadine valley and the Val M\u00fcstair of Grisons."], "Surmiran": ["A group of Romansh dialects spoken in the Julia and Albula valleys of Grisons, including Surses and Sutses."], "Put\u00e9r": ["A group of Romansh dialects spoken in the Upper Engadine valley of Grisons, and in the municipality Berg\u00fcn/Bravuogn."], "Puter": ["A group of Romansh dialects spoken in the Upper Engadine valley of Grisons, and in the municipality Berg\u00fcn/Bravuogn."], "Jauer": ["A dialect of the Vallader dialect of Romansh spoken in the Val M\u00fcstair of Grisons."], "Rumantsch Grischun": ["The pan-regional variety of the Rumansh languages, artificially designed by the linguist Heinrich Schmid on behalf of the secretary of the Lia Rumantscha which should be as equally acceptable as possible to speakers of the different idioms of Rumansch in Grisons."], "common chicory": ["A plant of the species Cichorium intybus whose leaves are used in salads and whose root is roasted, ground and mixed with coffee."], "Belgian endive": ["A cultivated chicory (Cichorium intybus convar. foliosum) having cream-coloured, bitter leaves."], "pitchfork": ["An agricultural tool comprising a fork attached to a long handle used for pitching hay or bales of hay high up onto a haystack."], "rake": ["A garden tool with a row of pointed teeth fixed to a long handle, used for collecting grass or debris, or for loosening soil."], "yamstick": ["A rod shaped implement used by the aboriginal people of Australia to dig yam and as a combat weapon."], "digging stick": ["A rod shaped implement used by the aboriginal people of Australia to dig yam and as a combat weapon."], "lasso": ["A long rope with a sliding loop on one end, generally used in ranching to catch cattle and horses."], "sickle": ["An implement, having a semicircular blade and short handle, used for cutting long grass and cereal crops in agriculture."], "hay": ["Grass or cut and dried for use as animal fodder."], "tree trunk": ["The main structural member of a tree."], "sap": ["The juice of plants of any kind, especially the ascending and descending juices or circulating fluid essential to nutrition."], "banyan": ["A tropical Indian fig tree, Ficus benghalensis, that has many aerial roots."], "sorghum": ["A cereal, Sorghum vulgare or Sorghum bicolor, the grains of which are used to make flour and as cattle feed."], "fish poison": ["in Amazonia, a kind of root is apparently used as fish poison"], "amomum": ["Any of several spices of family Zingiberaceae, including cardamom."], "anatto": ["A derivative of the achiote trees of tropical regions of the Americas used as a red food coloring and as a flavoring."], "bromelia": ["Any of various tropical or subtropical New World herbaceous plants in the family Bromeliaceae."], "creeper": ["Any plant (as ivy or periwinkle) that grows by creeping; especially a climbing plant of the genus Parthenocissus."], "guava": ["A tropical tree or shrub of the myrtle family, Psidium guava; or its yellowish tropical fruit, 1\u00bc to 2 inches, globular or pear-shaped with thin, yellow, green or brown skin, is often made into jams and jellies. The meat is yellowish or pale green to pink in color."], "liana": ["A climbing woody vine, usually tropical."], "lima bean": ["The butter bean, Phaseolus lunatus."], "lupin": ["The common name for members of the genus Lupinus in the family Fabaceae."], "rubber tree": ["A tropical South American tree, Hevea brasiliensis, that is the source of latex."], "taro": ["Colocasia esculenta, raised as a food primarily for its corm, which distantly resembles potato."], "vetch": ["Any of several leguminous plants, of the genus Vicia, often grown as green manure and for their edible seeds."], "untie": ["To loosen, as something interlaced or knotted; to disengage the parts of. To unbind, to free from restraint"], "cut down": ["To bring down by cutting.", "To cut down on; to make a reduction in (especially costs, jobs, e.g. with financial and administrative acts).", "To knock somebody or cut something down, e.g. a tree."], "shears": ["A tool consisting of two blades with bevel edges, connected by a pivot, used for cutting cloth, or for removing the fleece from sheep etc"], "hang up": ["To put up to hang"], "tinplate": ["A thin sheet of steel coated with tin to prevent rusting; used to make cans etc."], "potter": ["One who makes pots and other ceramic wares."], "peg": ["A cylindrical wooden, metal etc. object used to fasten or as a bearing between objects.", "A rod used to fasten two overlapping parts."], "basketry": ["The process of weaving unspun vegetable fibers to make a basket."], "sack": ["A flexible container made of cloth, paper, plastic, leather, etc., to put something in or to carry away."], "scraper": ["An instrument with which anything is scraped."], "trail": ["A route for travel over land, especially a narrow, unpaved pathway for use by hikers, horseback riders, etc."], "dwell": ["To live; to reside; to remain or continue."], "smear": ["To spread (a substance) across a surface by rubbing."], "drip": ["To fall one drop at a time."], "splash": ["The sound made by an object hitting a liquid.", "To cause (a liquid) to spatter about, especially with force."], "limp": ["To walk lamely, as if favouring one leg."], "come back": ["To go there where one was before."], "sledge": ["A low sled drawn by animals, typically on snow, ice or grass."], "dip": ["To immerse oneself; to become plunged in a liquid; to sink, to loewe, to decrease"], "owe": ["To be bound to give or recognize something.", "To be under an obligation to give something back to someone or to perform some action for someone; to have debt."], "pointed": ["Sharp, barbed; not dull."], "Chinese New Year": ["An annual Chinese holiday, marking the beginning of the lunar year"], "long ago": ["At a time in the past, especially the distant past."], "sniff": ["To inhale; to make a short, audible inhalation, through the nose, as if to smell something."], "fragrant": ["Sweet-smelling; having a pleasant (usually strong) scent or fragrance."], "loud": ["A sound of great intensity; noisy."], "pinch": ["To squeeze a small amount of a person's skin and flesh between the fingers, making it hurt."], "wrinkled": ["Uneven, with many furrows and prominent points, often in reference to the skin or hide of animals."], "look forward": ["To anticipate or expect; especially, to expect something to be pleasant."], "worse": ["Comparative form of bad: more bad."], "upper case": ["Collective term for the capital letters."], "capital letter": ["An upper-case letter, used for emphasis, for starting sentences and proper names, etc."], "govern": ["To make and administer the public policy and affairs of; to exercise sovereign authority over (nations)."], "freeman": ["A free man, one who is not a serf or slave."], "battle-axe": ["An ancient military weapon."], "sling": ["An instrument for throwing stones or other missiles, consisting of a short strap with two strings fastened to its ends, or with a string fastened to one end and a light stick to the other."], "fishnet": ["A net used to catch fish."], "fish trap": ["A contraption made of wires, rods, fishing-net or other suitable materials with the purpose of catching fish alive."], "cutlass": ["A short sword with a curved blade, and a convex edge; once used by sailors when boarding an enemy ship."], "warship": ["Any ship built or armed for naval combat."], "punishment": ["The act or process of punishing, imposing and/or applying a sanction; a penalty to punish wrongdoing, especially for crime.", "An undesired condition imposed by an authority for one's unacceptable behavior.", "The act of imposing an undesirable condition on a person or group for an unacceptable behav\u0131or.", "A treatment or experience so harsh it feels like being punished."], "verdict": ["A decision on an issue of fact in a civil or criminal case or an inquest."], "circumcision": ["The act of excising or amputating the prepuce (the foreskin on penises, the clitoral hood on clitorises)"], "initiation": ["A formal entry into an organization or position or office.", "A means or measure or an action taken in preparation of.", "The initial section; a foreword; a preface; a lead-in; a kind of beginning before something really starts, etc."], "shaman": ["A traditional (prescientific) faith healer; a member of certain tribal societies who acts as a religious medium between the concrete and spirit worlds."], "pill": ["A small, usually cylindrical object designed for easy swallowing, usually containing some sort of medication."], "birth certificate": ["official document certifying the details of a person's birth. Name, date, and parents' names are always included; details such as parents' occupation and religion may be included. \u2003"], "pierce": ["to puncture; to break through"], "uncover": ["To uncover; to show and display that which was hidden."], "plantain": ["A plant of the genus Plantago, with a rosette of sessile leaves about 10 cm long with a narrow part instead of a petiole, and with a spike inflorescence with the flower spacing varying widely among the species."], "Rhinelandic": ["The regional variety of German spoken in the Rhineland in Germany, which is approximately the former Prussian Rhine Province, or the West half of todays federal state North Rhine-Westphalia plus the North half of todays federal state Rhinland-Palatinate. It is both related to modern Standard German, and the various rather diverse hereditary local languages, and a the same time clearly distinct from either."], "Rhineland Regiolect": ["The regional variety of German spoken in the Rhineland in Germany, which is approximately the former Prussian Rhine Province, or the West half of todays federal state North Rhine-Westphalia plus the North half of todays federal state Rhinland-Palatinate. It is both related to modern Standard German, and the various rather diverse hereditary local languages, and a the same time clearly distinct from either."], "Rhinelandic Regiolect": ["The regional variety of German spoken in the Rhineland in Germany, which is approximately the former Prussian Rhine Province, or the West half of todays federal state North Rhine-Westphalia plus the North half of todays federal state Rhinland-Palatinate. It is both related to modern Standard German, and the various rather diverse hereditary local languages, and a the same time clearly distinct from either."], "Rhineland": ["A part of Western Germany along the river Rhine, which is approximately the former Prussian Rhine Province, or the West half of todays federal state North Rhine-Westphalia plus the North half of todays federal state Rhinland-Palatinate."], "thump": ["To strike hard with the hand, fist, or some heavy instrument, usually repeatedly.", "A bang or blow; the sound of of a crash."], "intrude": ["To search or inquire intrusively."], "horn in": ["To search or inquire intrusively."], "pry": ["To search or inquire intrusively."], "jab": ["To poke or thrust abruptly."], "prod": ["To poke or thrust abruptly."], "bond duration": ["The weighted average life of a security."], "continuance": ["The period of time during which something continues."], "cicciobello": ["A popular Italian doll."], "Breyell": ["A town in West Germany near the Dutch border."], "Yeniche of Stotzheim": ["The kind of Yeniche spoken by the traders and travelling repair craftsmen from Stotzheim between Rheinbach and Euskirchen in the West of Germany."], "Yeniche of Speicher": ["A cant spoken by travelling salespeople of Speicher in the Eifel mountain range in West Germany who did not want to be understood by foreigners when they were abroad."], "thieves cant of Stotzheim": ["The secret cant of the professional thieves and betrayers as conveyed in Stotzheim, between Rheinbach and Euskirchen, in the West of Germany."], "Yeniche of Neroth": ["A cant spoken in Neroth in the Vulaneifel district in the Eifel mountain range in the West of Germany."], "Natisone valley dialect of Slovenian": ["The dialect of Slovenian spoken in the Natisone valley."], "Natisone valley dialect": ["The dialect of Slovenian spoken in the Natisone valley."], "Stolvizza dialect of Resian": ["The dialect of Resian spoken in Stolvizza, which has the local name Solbica."], "Solbica dialect of Resian": ["The dialect of Resian spoken in Stolvizza, which has the local name Solbica."], "Stolvizza dialect": ["The dialect of Resian spoken in Stolvizza, which has the local name Solbica."], "Solbica dialect": ["The dialect of Resian spoken in Stolvizza, which has the local name Solbica."], "Oseacco dialect of Resian": ["The dialect of Resian spoken in Oseacco, which has the local name Osoane."], "Osoane dialect of Resian": ["The dialect of Resian spoken in Oseacco, which has the local name Osoane."], "Osoane dialect": ["The dialect of Resian spoken in Oseacco, which has the local name Osoane."], "Oseacco dialect": ["The dialect of Resian spoken in Oseacco, which has the local name Osoane."], "Gniva dialect of Resian": ["The dialect of Resian spoken in Gniva, which has the local name Njiva."], "Njiva dialect of Resian": ["The dialect of Resian spoken in Gniva, which has the local name Njiva."], "Njiva dialect": ["The dialect of Resian spoken in Gniva, which has the local name Njiva."], "Gniva dialect": ["The dialect of Resian spoken in Gniva, which has the local name Njiva."], "Lipovaz dialect of Resian": ["The dialect of Resian spoken in Lipovaz."], "Lipovaz dialect": ["The dialect of Resian spoken in Lipovaz."], "San Giorgio dialect of Resian": ["The dialect of San Giorgio spoken in Gniva, which has the local name Bila."], "San Giorgio dialect": ["The dialect of San Giorgio spoken in Gniva, which has the local name Bila."], "Bila dialect of Resian": ["The dialect of San Giorgio spoken in Gniva, which has the local name Bila."], "Bila dialect": ["The dialect of San Giorgio spoken in Gniva, which has the local name Bila."], "Gniva": ["A place in the Resia valley in North-East Italy close to the Slovenian border."], "San Giorgio": ["A place in the Resia valley in North-East Italy close to the Slovenian border."], "Lipovaz": ["A place in the Resia valley in North-East Italy close to the Slovenian border."], "bunghole": ["An insulting exclamation directed at a vile, stupid or a worthless person."], "NoSQL": ["A database that provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases."], "MongoDB": ["A cross-platform document-oriented database system, classified as a NoSQL database."], "unnoticeably": ["In a manner too imperceptible to be detected."], "beat to a pulp": ["To hit or batter until there are only soft remains."], "hop": ["To jump lightly."], "shout out": ["To utter a sudden and loud outcry."], "send for": ["To order or summon by using one's voice."], "call in": ["To pay a short visit."], "interchange": ["The reciprocal transfer of equivalent sums of money, usually in currencies of different countries.", "Anything given or received as an equivalent, replacement, or substitute for something else."], "commutation": ["The act of putting one thing or person in the place of another."], "interlingual rendition": ["The result of converting words and texts from one language to another."], "diagnostician": ["A specialized doctor who treats pathologies."], "climatic": ["Of or relating to climate."], "make clean": ["To remove dirt, dust or foreign matter from."], "shut down": ["To cease to operate or cause to cease operating (e.g. a business or a shop)."], "close down": ["To cease to operate or cause to cease operating (e.g. a business or a shop)."], "prototype": ["A person or thing that is typical of or possesses to a high degree the features of a whole class."], "good example": ["A typical example or instance."], "come up": ["To move toward or to reach either the speaker, the person spoken to, or the subject of the speaker's narrative."], "liken": ["To consider or describe as similar, equal, or analogous."], "go along": ["To maintain an action, state or condition without interruption."], "carry on": ["To continue talking."], "figure four": ["In wrestling, a grappling hold that resembles the number \"4\"."], "figure-four": ["In wrestling, a grappling hold that resembles the number \"4\".", "A wrestling submission hold in which the opponent's legs resemble the number \"4\"."], "chinlock": ["A wrestling hold in which the attacking wrestler crouches down behind a sitting opponent and places his knee into the opponent's upper back, grasping the opponent's chin with both hands."], "nelson hold": ["A grappling hold which is executed from behind the opponent."], "nelson": ["A grappling hold which is executed from behind the opponent."], "armlock": ["A single or double joint lock that hyperextends, hyperflexes or hyperrotates the elbow joint and/or shoulder joint."], "sympathy": ["The sharing of another's emotions, especially of sorrow or anguish; pity; compassion."], "fellow feeling": ["The sharing of another's emotions, especially of sorrow or anguish; pity; compassion."], "scrunch": ["To lower one's body close to the ground by bending one's knees completely."], "hunker": ["To lower one's body close to the ground by bending one's knees completely."], "stoop": ["To bend one's back forward."], "boston crab": ["In professional wrestling, a hold where the wrestler hooks each of the opponent\u2019s legs in one of his arms, and then turns the opponent face-down, stepping over him in the process."], "tree of woe": ["In wrestling, a move in which the opponent is suspended upside down on a turnbuckle, with his back being up against it, and beaten while keeping that position."], "hose clamp": ["Device aimed at attaching and sealing a hose end onto a cylindrical element positioned on the same axis as the hose end."], "hose clip": ["Device aimed at attaching and sealing a hose end onto a cylindrical element positioned on the same axis as the hose end."], "stracchino": ["A type of Italian cheese made with cow's milk, produced in Lombardy, Piedmont, and Veneto."], "aerodynamic lift": ["An upward force, such as the force that keeps aircraft aloft."], "fomenter": ["Someone who agitates or calls for a certain behavior; a troublemaker."], "hemipterous insect": ["Any of the suborder Heteroptera, having piercing and sucking mouthparts, specialized as a beak.\\n(Source: CED)"], "bodybuilder": ["Someone who trains specifically to develop a strong musculature."], "muscleman": ["Someone who trains specifically to develop a strong musculature."], "muscle builder": ["Someone who trains specifically to develop a strong musculature."], "takedown": ["A technique in which a wrestler gains control over his opponent from a neutral position."], "full nelson": ["In wrestling, a hold in which the holder puts both arms under the opponent's arms and exerts pressure on the back of the neck."], "Omegawiki": ["A multilingual dictionary whose aim is to describe all words of all languages with definitions in all languages."], "smettere": ["To stop consuming (e.g. alcohol)."], "kicking": ["A physical strike using the foot, leg, or knee."], "sound off": ["To state complaints, discontent, displeasure, or unhappiness."], "quetch": ["To state complaints, discontent, displeasure, or unhappiness."], "reboot": ["To cause to load and start (an operating system)."], "foster": ["To promote the growth of."], "ca-ca": ["To excrete feces from one's body through the anus."], "affaire d'honneur": ["A prearranged combat with deadly weapons arranged between two people so as to settle a point of honour."], "power shovel": ["A machine used to dig the ground and to lift and carry dirt and debris."], "cry out": ["To utter aloud; often with surprise, horror, or joy."], "outcry": ["To utter aloud; often with surprise, horror, or joy."], "call out": ["To utter aloud; often with surprise, horror, or joy."], "trim": ["To cut down on; to make a reduction in (especially costs, jobs, e.g. with financial and administrative acts)."], "trim down": ["To cut down on; to make a reduction in (especially costs, jobs, e.g. with financial and administrative acts)."], "bring down": ["To cut down on; to make a reduction in (especially costs, jobs, e.g. with financial and administrative acts)."], "creme anglais": ["A liquid cream made of milk, egg yolk, sugar and flavoured with vanilla."], "computational linguistics": ["An interdisciplinary field which deals with scientific study and modeling of human language from a computational perspective."], "vis-a-vis": ["A person who closely resembles another or has the same function or characteristics as another."], "look-alike": ["A person who resembles another person perfectly."], "oily": ["Smeared or soiled with grease or oil."], "muscular": ["Possessing physical strength and weight; rugged and powerful."], "brawny": ["Possessing physical strength and weight; rugged and powerful."], "hefty": ["Possessing physical strength and weight; rugged and powerful."], "vacancy defect": ["A defect in the form of an unoccupied lattice position in a crystal."], "course of study": ["A learning program, as in a school."], "flowing": ["The flowing of a fluid."], "monosemy": ["Capacity, for a word, of having only one meaning."], "sequel": ["Any work of literature, film, theater, or music that continues and extends the story of some earlier work."], "clew": ["Evidence that supports a hypothesis or helps to solve a problem."], "invert": ["To rotate [a container] so that its opening be below; to turn upside down."], "fishy": ["Raising suspicion."], "mistrustful": ["Openly distrustful and unwilling to confide."], "untrusting": ["Openly distrustful and unwilling to confide."], "slaveholding": ["The practice of keeping slaves."], "roommate": ["A person who shares a room with someone else."], "roomy": ["A person who shares a room with someone else."], "roomie": ["A person who shares a room with someone else."], "deglutition": ["The act of swallowing."], "wassail": ["To raise one's glass and touch it against another person's (usually at a celebration meal, etc. and usually with the word, \"cheers\")."], "spiegare": ["To give the meaning or intention of."], "parking area": ["Area of ground or a building where there is space for vehicles to be parked."], "be dying": ["To be in the proccess of dying, to face the foreseeable and inevitable end ones life usually due to sickness."], "in a dying condition": ["To be in the proccess of dying, to face the foreseeable and inevitable end ones life usually due to sickness."], "be on one's deathbed": ["To be in the proccess of dying, to face the foreseeable and inevitable end ones life usually due to sickness."], "moribund": ["To be in the proccess of dying, to face the foreseeable and inevitable end ones life usually due to sickness."], "to be in extremis": ["To be in the proccess of dying, to face the foreseeable and inevitable end ones life usually due to sickness."], "lie dying": ["To be in the proccess of dying, to face the foreseeable and inevitable end ones life usually due to sickness."], "tumble": ["A sudden drop from an upright position."], "spill": ["A sudden drop from an upright position."], "declivity": ["A downward slope or bend."], "downslope": ["A downward slope or bend."], "downfall": ["A sudden decline in strength or number or importance."], "impinge on": ["To hit or come into contact against something."], "collide with": ["To hit or come into contact against something."], "impress": ["To have an emotional or cognitive impact upon."], "fame": ["The state or quality of having a positive reputation."], "word sense disambiguation": ["In Natural Language Processing, a task whose goal is to automatically assign the most suitable sense to a given word in context."], "word-sense disambiguation": ["In Natural Language Processing, a task whose goal is to automatically assign the most suitable sense to a given word in context."], "WSD": ["In Natural Language Processing, a task whose goal is to automatically assign the most suitable sense to a given word in context."], "jut out": ["To extend out or project in space."], "in one go": ["Doing or finishing different things or tasks during one and the same occasion or in the same time period."], "computer scientist": ["A person who is specialized in the theory of computation and information, and the design of computers and computer programs."], "computational lexicon": ["A highly structured repository of the rich syntactic and semantic knowledge about individual words used in a natural language processing."], "word processing": ["The creation and editing of electronic documents using a word processor."], "accessibility": ["A nonfunctional requirement characterizing the ease with which\\nthe software can be accessed by as many people or systems as possible.", "The degree to which a product, device, service, or environment is available to as many people as possible."], "pesto": ["A tasty sauce originating in Genoa in the Liguria region of Italy, which contains crushed basil leaves, garlic, pine nuts, Parmesan cheese and olive oil."], "cacio e pepe": ["A Roman pasta dish cooked with a cheese and pepper sauce."], "cheese and pepper pasta": ["A Roman pasta dish cooked with a cheese and pepper sauce."], "first dish": ["A dish of rice or pasta that is eaten at the beginning of the meal, possibly preceded by one or more entrees."], "primo": ["A dish of rice or pasta that is eaten at the beginning of the meal, possibly preceded by one or more entrees."], "surfer": ["A person who rides a surfboard."], "sham": ["To act as if something is true."], "profess": ["To state something that is wrong or doubtful."], "dissimulator": ["Someone who dissembles."], "phony": ["Someone who dissembles."], "default up": ["To fail to meet financial obligations; to fail to pay up."], "assure": ["To make certain of."], "run off": ["To leave suddenly and as if in a hurry."], "beetle off": ["To leave suddenly and as if in a hurry."], "bolt out": ["To leave suddenly and as if in a hurry."], "Comma Separated Values": ["Tabular data in plain-text form whose records are separated by commas."], "Comma-Separated Values": ["Tabular data in plain-text form whose records are separated by commas."], "leveraging": ["Any technique to multiply gains and losses."], "matter to": ["To be of importance or consequence."], "blanched": ["Pale in color."], "boxing ring": ["A square ring where boxers fight.", "A platform usually marked off by ropes in which contestants box or wrestle."], "bolide": ["A very bright meteor which can be much brighter than any star."], "have got": ["To hold or possess either in an abstract or concrete sense."], "if ... is": ["Conditional mood of the copular verb, 3rd person singular."], "whereas": ["In contrast.", "It being the fact that."], "cross validation": ["The statistical practice of partitioning a sample of data into subsets such that the analysis is initially performed on a single subset, while the other subset(s) are retained for subsequent use in confirming and validating the initial analysis."], "metabolize": ["To change (chemically) via metabolism.", "To subject something, a substance, to metabolism.", "To produce by metabolism."], "preliminary": ["Making a beginning but not being the real thing.", "A means or measure or an action taken in preparation of.", "Work preparing or laying the ground for something that is planned to come later.", "The initial section; a foreword; a preface; a lead-in; a kind of beginning before something really starts, etc."], "preparatory": ["Making a beginning but not being the real thing.", "A means or measure or an action taken in preparation of."], "preamble": ["A means or measure or an action taken in preparation of.", "The initial section; a foreword; a preface; a lead-in; a kind of beginning before something really starts, etc."], "preparative": ["A means or measure or an action taken in preparation of."], "preparatory work": ["Work preparing or laying the ground for something that is planned to come later."], "spadework": ["Work preparing or laying the ground for something that is planned to come later."], "tuple": ["In mathematics and computer science, an ordered list of elements."], "n-tuple": ["In mathematics and computer science, an ordered list of elements."], "machine-readable dictionary": ["A dictionary stored as in machine-readable format instead of being printed on paper."], "ramify": ["To divide into two or more branches so as to form a fork, starting from a common point."], "furcate": ["To divide into two or more branches so as to form a fork, starting from a common point."], "mush": ["Soaked clay or soil; very soft ground."], "slush": ["Soaked clay or soil; very soft ground."], "marvellous": ["Deserving praise; worth to be praised."], "easily digestible": ["Capable of being digested.", "Pleasant for the stomach and the digestive system; easy to digest."], "reckon with": ["To incorporate in a price for which one asks."], "reckon on": ["To incorporate in a price for which one asks."], "shielding": ["A shielding or protection against the unpleasant, unwanted, or dangerous."], "asynchronous learning": ["(Education) Communication exchanges which occur in elapsed time between two or more people. Examples are email, online discussion forums, message boards, blogs, podcasts, etc. (Source: INACOL)"], "at-risk student": ["Any student who is performing poorly academically, or who may face learning impediments not limited to socioeconomic status, behavioral and learning disabilities, and home, family, and community stresses."], "blended course": ["A course that combines online and face-to-face instruction."], "competency-based learning": ["Learning in which outcomes emphasize competencies including explicit, measurable, transferable learning objectives."], "hybrid learning": ["A curriculum that combines multiple types of media. Typically, it refers to a combination of classroom-based classes with self-paced e-learning."], "learning object": ["An electronic media resource (a digital file or a collection of files) targeting a lesson objective, standard, or a lesson concept, that can be used and reused for instructional purposes."], "synchronous learning": ["Online learning in which the participants interact at the same time and in the same space."], "rhysimeter": ["An instrument designed to measure the velocity of fluid current."], "carbuncle": ["Red precious stone, such as ruby or garnet."], "office staff": ["Professional or clerical workers in an office."], "whistling": ["The high loud sound made by air or steam when forced through a small aperture."], "masturbate": ["To manually excite of one's own sexual organs, most often to the point of orgasm."], "shtetl": ["A Jewish hamlet or village, especially in Eastern Europe."], "goblet": ["A drinking vessel with a slender stem."], "college applicant": ["A person who applies to a university or college."], "urban vagrant": ["A person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne, having a specifically obscene and offensive way to express oneself. Someone bumming about in the city not having an acceptable or decent place to stay or for living or housing.", "A female person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne, having a specifically obscene and offensive way to express herself. A female bumming about in the city not having an acceptable or decent place to stay or for living or housing.", "A male person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne; one having a specifically obscene and offensive way to express himself. A male bumming about in the city not having an acceptable or decent place to stay or for living or housing."], "city tramp": ["A person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne, having a specifically obscene and offensive way to express oneself. Someone bumming about in the city not having an acceptable or decent place to stay or for living or housing.", "A female person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne, having a specifically obscene and offensive way to express herself. A female bumming about in the city not having an acceptable or decent place to stay or for living or housing.", "A male person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne; one having a specifically obscene and offensive way to express himself. A male bumming about in the city not having an acceptable or decent place to stay or for living or housing."], "city bum": ["A person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne, having a specifically obscene and offensive way to express oneself. Someone bumming about in the city not having an acceptable or decent place to stay or for living or housing.", "A female person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne, having a specifically obscene and offensive way to express herself. A female bumming about in the city not having an acceptable or decent place to stay or for living or housing.", "A male person of the lower end of the lower class of the type to be found at or around the Neumarkt (\"new market\") in Cologne; one having a specifically obscene and offensive way to express himself. A male bumming about in the city not having an acceptable or decent place to stay or for living or housing."], "become lukewarm": ["To become a temperature between warm and cool."], "fourth child": ["The human offspring that is born after the third child."], "fifth child": ["The human offspring that is born after the fourth child."], "third child": ["The human offspring that is born after the second child."], "second child": ["The human offspring that is born after the first child."], "seventh child": ["The human offspring that is born after the sixth child."], "eighth child": ["The human offspring that is born after the seventh child."], "neonate": ["A newborn child; recently born infant."], "sixth child": ["The human offspring that is born after the fifth child."], "biological father": ["The male parent whose child inherits one half of the parent's DNA and the Y chromosome."], "newborn": ["A newborn child; recently born infant."], "cockscomb": ["A rooster's plump red crest."], "coxcomb": ["A rooster's plump red crest."], "armlet": ["A bracelet that is typically worn on the arm for identification or ornate intent."], "misplace": ["To not recall where one has put an object ; to lose temporarily an object."], "pester": ["To cause, inflict or threaten with suffering, need, distress, or pain."], "make suffer": ["to cause or inflict pain or suffering."], "thermal underwear": ["A piece of underwear having long legs which are open at their ends."], "long underwear": ["A piece of underwear having long legs which are open at their ends."], "chromatograph": ["A machine that executes chromatography by the division of gas or liquid."], "memorize": ["To place in memory."], "surpass": ["To go beyond a limit."], "garden house": ["A small building in a garden, such as a shed, which is not usually build to be inhabitated for long times."], "fermented drink": ["A fermented drink is a beverage containing alcohol because of a metabolic process that converts sugar to acids, gases and/or alcohol (e.g. beer or wine)."], "yawl": ["A small boat made for rowing with four or six oars."], "MediaWiki": ["A free and open source wiki software, written in the PHP programming language, used to power wiki websites such as Wikipedia, Wiktionary, Commons and OmegaWiki."], "OpenOffice": ["An open-source office productivity software suite including a word processor (Writer), a spreadsheet (Calc), a presentation application (Impress), a drawing application (Draw), a formula editor (Math), and a database management application (Base)."], "Apache OpenOffice": ["An open-source office productivity software suite including a word processor (Writer), a spreadsheet (Calc), a presentation application (Impress), a drawing application (Draw), a formula editor (Math), and a database management application (Base)."], "LibreOffice": ["A free and open source office suite comprising programs to do word processing, spreadsheets, slideshows, diagrams and drawings, maintain databases, and compose math formulae."], "Firefox": ["A free and open-source web browser developed for Windows, OS X, Linux and Android."], "Mozilla Firefox": ["A free and open-source web browser developed for Windows, OS X, Linux and Android."], "renminbi": ["The official currency of China."], "GIMP": ["A raster graphics editor used for image retouching and editing, free-form drawing, resizing, cropping, photo-montages, converting between different image formats, and more specialized tasks."], "GNU Image Manipulation Program": ["A raster graphics editor used for image retouching and editing, free-form drawing, resizing, cropping, photo-montages, converting between different image formats, and more specialized tasks."], "Subversion": ["A software versioning and revision control system distributed as free software."], "svn": ["A software versioning and revision control system distributed as free software."], "Git": ["A distributed revision control and source code management system with an emphasis on speed."], "JasperReports": ["An open source Java reporting tool that can write to a variety of targets, such as: screen, a printer, into PDF, HTML, Microsoft Excel, RTF, ODT, Comma-separated values or XML files."], "phpMyAdmin": ["A free and open source tool written in PHP intended to handle the administration of MySQL with the use of a web browser."], "SQLite": ["A relational database management system contained in a C programming library."], "variegate": ["To add variety (to something)."], "chain smoker": ["A female heavy smoker who lights one cigarette from the preceding one.", "Someone who smokes frequently.", "A heavy smoker, a male, who lights one cigarette from the preceding one."], "Old Church Slavonic (Glagolitic)": ["The Old Church Slavonic language written with the Glagolitic alphabet."], "Malay (Jawi)": ["The Malay language written with the Jawi alphabet."], "Sakha Republic": ["A republic of Russia with an area of 3,103,200 km\u00b2 located in the East Russia. Its borders are the Arctic Ocean by sea and the Federal subjects of Chukotka (E), Magadan (E/SE), Khabarovsk Krai (SE), Amur (S), Chita (S), Irkutsk (S/SW), Evenk (W), Taymyr (W/NW)."], "wishing well": ["a well where any spoken wish is granted"], "detangle": ["To disentangle (usually refers to hair)."], "aromaticity": ["The property of organic compounds that have one or more conjugated rings of alternate single bonds and double bonds, and show extreme stability."], "parliament": ["A seminar whose members congregate to discuss the important political issues of the day and exercise government powers.", "Collective noun for a group of owls or rooks."], "older sibling": ["A person who is born before another person who has the same parents."], "old man": ["A male person who is old of age."], "manioc bread": ["Bread made of the roots of the cassava plant."], "mens house": ["A separate building for male persons."], "forked branch": ["At this point a branch is forked into two or more branches."], "yam": ["Plant that forms edible tubers which is mainly grown in West Africa, Asia and Latin America, the Caribbean and Oceania."], "gourd": ["A versatile plant belonging to multiple types of plants like pumpkins, cucumbers and melons. It is probably one of the earliest domesticated plants."], "maximize": ["To render as much as possible."], "stylolite": ["An unequal face between strata constituting of tooth-like prominences; frequently discovered in limestone and dolomite."], "dialectal materialism": ["The notion of existence that which all corporeal things are caused by the discord between incompatible powers, elements, and opinions."], "turntable": ["A device that plays the sound stored on a gramophone record."], "carry in hand": ["To hold or to take something from one place to another by hands."], "carry on shoulder": ["To hold or to take something from one place to another on one shoulder."], "carry on head": ["To hold or to take something from one place to another on top of the head."], "carry under the arm": ["To hold or to take something from one place to another under the arm."], "outrigger": ["A stabilizer for a canoe; spars attach to a shaped log or float parallel to the hull."], "triply": ["Three times."], "for a long time": ["Great amount of time between two specific events."], "new rich": ["The class of nouveau riche people."], "alcoholic drink": ["A drink (a liquor or brew) containing ethanol, commonly known as alcohol."], "alcoholic beverage": ["A drink (a liquor or brew) containing ethanol, commonly known as alcohol."], "Rice": ["Rice"], "abolitionize": ["To imbue with the principles of abolitionism."], "abolitionise": ["To imbue with the principles of abolitionism."], "rainbow boa": ["A boa of the species Epicrates cenchria found in Central and South America."], "aboma": ["A boa of the species Epicrates cenchria found in Central and South America."], "slender boa": ["A boa of the species Epicrates cenchria found in Central and South America."], "abomasus": ["The fourth stomach compartment in ruminants."], "abominableness": ["The quality or state of being abominable or odious."], "odiousness": ["The quality or state of being abominable or odious."], "aboon": ["In or to a higher place; higher than; on or over the upper surface."], "abord": ["To approach and speak to, especially in an unfriendly way.", "A manner of approaching or accosting."], "aboriginality": ["The quality of being aboriginal."], "aborigines": ["The earliest known inhabitants of a country.", "The original fauna and flora of a geographical area."], "abortment": ["The interruption of pregnancy (induced or for natural causes)."], "aborsement": ["The interruption of pregnancy (induced or for natural causes)."], "acost": ["To approach and speak to boldly or aggressively, as with a demand or request.", "To solicit for sex.", "A greeting."], "yeti": ["An unidentified animal often thought to live in the Himalayas."], "abominable snowman": ["An unidentified animal often thought to live in the Himalayas."], "a'right": ["In a satisfactory or adequate manner."], "haggle": ["To negotiate the terms of an exchange."], "encyclopedic dictionary": ["A dictionary with long, detailed entries on words (and often famous people and places), usually with pictures."], "encyclopaedic dictionary": ["A dictionary with long, detailed entries on words (and often famous people and places), usually with pictures."], "run-on sentence": ["A sentence in which two or more independent clauses (i.e., complete sentences) are joined without appropriate punctuation or conjunction."], "theriac": ["An antidote to the venom of a snake."], "non-virgin": ["A woman who has had sexual intercourse."], "gamification": ["The use of game thinking and game mechanics in non-game contexts to engage users in solving problems."], "game theory": ["The study of mathematical models of conflict and cooperation between intelligent rational decision-makers."], "hissy fit": ["A sudden outburst of temper, often used to describe female anger at something trivial."], "hysterical fit": ["A sudden outburst of temper, often used to describe female anger at something trivial."], "hissy-fit": ["A sudden outburst of temper, often used to describe female anger at something trivial."], "interested": ["Involved in or affected by or having a claim to or share in.", "Having or showing interest; especially curiosity or fascination or concern."], "descending": ["Going or coming down or downward."], "pragmatist": ["Someone who is pragmatic. A person who takes a practical approach to problems."], "Karmapa": ["The heirarch of the Karma Kagy\u00fc tradition of Tibetan Buddhism."], "takin": ["(Budorcas taxicolor) A goat-antelope found in the eastern Himalayas."], "red panda": ["(Ailurus fulgens) A small arboreal mammal, with reddish-brown fur, a long, shaggy tail, and a waddling gait native to the eastern Himalayas and south-western China.\\nThe only living species in the genus Ailurus and the familia Ailuridae."], "lesser panda": ["(Ailurus fulgens) A small arboreal mammal, with reddish-brown fur, a long, shaggy tail, and a waddling gait native to the eastern Himalayas and south-western China.\\nThe only living species in the genus Ailurus and the familia Ailuridae."], "muntjac": ["Muntjacs, also known as barking deer and Mastreani deer, are small deer of the genus Muntiacus."], "barking deer": ["Muntjacs, also known as barking deer and Mastreani deer, are small deer of the genus Muntiacus."], "stash": ["To put by or away as for safekeeping or future use, usually in a secret place.", "Something put away or hidden, for example a stash of gold coins buried in the garden.", "A place in which something is stored secretly; a hiding place; a cache.", "A supply of hidden (illeal) drugs."], "street dust": ["Dust or fine dirt to be found on the ground, on floors, on streets and ways."], "tangled": ["Highly complex or intricate and occasionally devious.", "Rolled longitudinally upon itself."], "non-proprietary": ["Not protected by trademark or patent or copyright."], "arm wrestling": ["A sport in which two opponents, positioned opposite each other and each with an elbow on a stable surface, grasp the other's hand and attempt to push the opponent's arm down to the surface."], "cooperation": ["Work with an another person or in a team."], "triceps": ["An extensor muscle on the back of the arm."], "Goku": ["A fictional character and the protagonist of the Dragon Ball manga series written by Akira Toriyama."], "enflame": ["To set on fire - literally and figuratively."], "lexicographic": ["Of or relating to lexicography."], "lexicographical": ["Of or relating to lexicography."], "Torres Strait Creole": ["An English-based creole language spoken on several Torres Strait Islands."], "good bye": ["A parting statement; used when one or more people in a situation, dialogue or location are leaving, while others remain.", "An interjection of parting."], "agon": ["A contest or struggle, especially between a protagonist and antagonist in literary pieces.", "A contest in ancient Greece in athletic and musical ability.", "A two-player hexagonal board game, popular in the Victorian times."], "queen's guard": ["A two-player hexagonal board game, popular in the Victorian times."], "animosity": ["Excessive enthusiasm or exuberance."], "price list": ["A list of itemized prices, generally of goods being sold."], "subjective": ["Taking place within the mind and modified by individual bias."], "means": ["The way a result is obtained or an end is achieved.", "An instrumentality for accomplishing some end."], "severe": ["Intensely or extremely bad or unpleasant in degree or quality.", "Very strong or vigorous (e.g. of a punch or blow).", "Very bad in degree or extent (e.g. of depression or damage).", "Causing fear or anxiety by threatening great harm."], "knockout": ["Very strong or vigorous (e.g. of a punch or blow)."], "life-threatening": ["Causing fear or anxiety by threatening great harm."], "entry into the war": ["The entry of a country into an existing military conflict."], "dominion": ["Authority or the use of authority; jurisdiction over something."], "damnify": ["To cause injuries to."], "packsaddle": ["A saddle created to secure and carry goods on an animal."], "hallucinate": ["To see unreal things while awake."], "lumpy": ["Not smooth; full of lumps."], "inception": ["The beginning or commencement of something."], "Blankenese": ["A part of the city of Hamburg in North Germany."], "cacophonous": ["Containing, consisting of, or producing harsh, unpleasant sounds."], "zeptomole": ["600 molecules of a substance. SI symbol: zmol."], "floccinaucinihilipilificate": ["To regard as worthless."], "abashed": ["Ashamed, disconcerted, or embarrassed."], "abacterial": ["Not caused by bacteria."], "ableism": ["Discrimination against persons with disabilities or favouring people without."], "invade": ["To enter by force in order to conquer."], "cohabitant": ["A person who cohabits with another."], "handicapped": ["Having a handicap."], "obelus": ["A symbol consisting of a horizontal line with a dot above and below, chiefly used to represent division in mathematics."], "triathlon": ["An athletics event where contestants participate in swimming, cycling, and running."], "habitue": ["A person or thing regularly present in the same place or position for a long time."], "instigate": ["To insist the someone does something as soon as possible."], "Gladstone Gander": ["A fictional, lazy and infuriatingly lucky duck that was created by Carl Barks."], "Linked Data": ["A collection of interrelated datasets on the Web in a standard format, reachable and manageable by Semantic Web tools."], "seeded player": ["One of the outstanding players in a tournament."], "mozzarella": ["An Italian white cheese with long stretch and mild taste."], "gymnast": ["An athlete who is skilled in gymnastics."], "gravitational force": ["Physics: the force of mutual attraction between all masses in the universe."], "Friedelehe": ["A postulated form of Germanic marriage said to have existed during the Early Middle Ages, introduced into mediaeval historiography during the 1920s by Herbert Meyer. Whether such a marriage form actually existed remains controversial."], "open up": ["To make available.", "To start to operate or function or cause to start operating or functioning (e.g. a business).", "To cause to open or to become open."], "bundt cake": ["A dessert cake that is baked in a bundt pan, shaping it into a distinctive ridged ring."], "riffraff": ["Disparaging term for the common people."], "resourceful": ["Capable or clever; able to put available resources to efficient or ingenious use; using materials at hand wisely or efficiently."], "wheedle": ["To encourage, influence or persuade by effort."], "city center": ["The central part of a city, usually the cultural and commercial center."], "gorgonzola": ["A veined Italian blue cheese, made from unskimmed cow's milk."], "oaf": ["An elf's child; a changeling left by fairies or goblins, hence, a deformed or foolish child. Source:Wiktionary", "A person, especially a large male, who is clumsy or a simpleton; an idiot."], "auf": ["An elf's child; a changeling left by fairies or goblins, hence, a deformed or foolish child. Source:Wiktionary"], "oafs": ["An elf's child; a changeling left by fairies or goblins, hence, a deformed or foolish child. Source:Wiktionary"], "galoot": ["A person, especially a large male, who is clumsy or a simpleton; an idiot."], "imbecile": ["A person, especially a large male, who is clumsy or a simpleton; an idiot."], "lout": ["A person, especially a large male, who is clumsy or a simpleton; an idiot."], "moron": ["A person, especially a large male, who is clumsy or a simpleton; an idiot."], "news leak": ["Unauthorized (especially deliberate) disclosure of confidential information."], "crate": ["A tiny boat. A boat too small for the presumed task.", "A wooden box made of slats, for packing, shipping, or storing.", "Something old or worn-out, esp. an automobile."], "aggregator": ["A service collecting contents that - often in a condensed form - is disseminated for specific targetted audiences and may be put into specific categories as well."], "cheating": ["An act of deception carried out for the purpose of unfair, undeserved, and/or unlawful gain."], "negative growth": ["Euphemism used to describe an economic loss, shrunk social or economic figures, and similar."], "zero growth": ["Euphemism describing economic stagnation, stalled social or economic figures, and similar."], "defer": ["Euphemism for \"ignore\", that is, postpone until the hell freezes over."], "ride back": ["To drive, ride, or go back; to return."], "drive back": ["To drive, ride, or go back; to return."], "start back": ["To retreat unwillingly and/or suddenly, often caused by sudden pain, shock, scare, fright, surprise, or similar."], "shy back": ["To retreat unwillingly and/or suddenly, often caused by sudden pain, shock, scare, fright, surprise, or similar."], "spring back": ["To retreat unwillingly and/or suddenly, often caused by sudden pain, shock, scare, fright, surprise, or similar."], "shrink back": ["To retreat unwillingly and/or suddenly, often caused by sudden pain, shock, scare, fright, surprise, or similar."], "shy away": ["To retreat unwillingly and/or suddenly, often caused by sudden pain, shock, scare, fright, surprise, or similar."], "abderian": ["Inclined to incessant merriment or laughter."], "unable": ["Not having the necessary means or skill or know-how to do something."], "font manager": ["A computer program used to display, install, remove, select, choose, inspect, etc. digital fonts and font files for an operating system or application programs."], "font management software": ["A computer program used to display, install, remove, select, choose, inspect, etc. digital fonts and font files for an operating system or application programs."], "consortium": ["An association of two or more individuals, companies, organizations or governments with the objective of participating in a common activity or pooling their resources for achieving a common goal."], "gown": ["A piece of clothing worn on the upper body outside a shirt or blouse, until the waist or slightly below."], "inject": ["To give an injection to."], "ISO 639": ["A set of ISO standards concerned with the naming, marking, and coding of human languages."], "look up": ["To seek information from (e.g. a dictionary)."], "cross-eyed": ["Having the two eyes not looking in the same direction."], "squinting": ["Having the two eyes not looking in the same direction."], "health club": ["A place which houses exercise equipment for the purpose of physical exercise and to improve physical fitness."], "fitness facility": ["A building that is designed for indoor sports."], "physical fitness": ["Good physical condition; the condition of being in shape or in condition."], "ERC": ["An independent body that funds investigator-driven frontier research in the European Union."], "European Research Council": ["An independent body that funds investigator-driven frontier research in the European Union."], "change state": ["To undergo a transformation or a change of position or action."], "junk bond": ["A bond that is rated below investment grade."], "Belarusan (Tara\u0161kievica)": ["The Belarusan language written with the Tara\u0161kievica orthography."], "Amazon River": ["A river of South America and the largest river in the world by volume, with greater total river flow than the next eight largest rivers combined, and with the largest drainage basin in the world."], "underdog": ["A competitor who is thought unlikely to win or succeed."], "impedimenta": ["The baggage and equipment carried by an army."], "necessity": ["Something that needs to be done."], "billards": ["A class of games being payed with hard balls, shot with the tips of stick called cues, on tables of recatangular shape, usually covered with green felt coating having edges made of cushions that reflect balls almost perfecty when they roll against them at every spped."], "billards table": ["A rectangular table being used to play billards, usually covered with a green felt coating and having edges made of cushions that reflect balls almost perfectly independently of their speed, when they roll against them."], "parable": ["Short allegoric story used to illustrate a religious principle, especially those in the Gospels."], "Amarillo": ["A city in northern Texas."], "nay": ["A word used to show disagreement of something."], "go to the hays": ["To cease to appear, to not be visible anymore.", "To end up in an unknown place, to be not to be found again, to get lost, to irrecoverably slip away."], "vintner": ["Person who makes wine."], "winemaker": ["Person who makes wine."], "decompress": ["To decrease compression or pressure."], "kraken": ["Mythical giant octopus or squid."], "spritzer": ["Alcoholic beverage consisting of white wine and soda."], "odometer": ["Device that measures distance traveled."], "odograph": ["Device that measures distance traveled."], "telenovela": ["Limited-length daily television drama, especially those exhibited in Latin America."], "handheld": ["That fits one's hand."], "banshee": ["Female spirit in Irish mythology."], "hinge": ["A bearing allowing the movement of two connected parts of a device, such as a door."], "stowaway": ["Someone who boards a vehicle without permission."], "wank": ["Slang term for masturbation."], "handjob": ["Slang term for masturbation."], "plebeian": ["Who is not of noble rank; pertaining to the great masses."], "fleshy": ["Of a large person who has a mass or quantity of fat above normal."], "inexpert": ["A person who is not an expert."], "younger sibling": ["A person who is born after another person who has the same parents."], "gorgeous": ["Dazzlingly beautiful."], "revive": ["To be brought back to life, consciousness, or strength."], "sadistic": ["Deriving pleasure or sexual gratification from inflicting pain on another."], "pathetic": ["Deserving or inciting pity.", "Inspiring mixed contempt and pity."], "piteous": ["Deserving or inciting pity."], "pitiable": ["Deserving or inciting pity."], "condemnable": ["Deserving strong condemnation."], "vicious": ["Deserving strong condemnation."], "reprehensible": ["Deserving strong condemnation."], "exposition": ["What is being told in a clear and orderly manner."], "squish": ["To put (a liquid) into a container or another place by means of a squirting action."], "skim": ["To examine hastily (e.g. a newspaper).", "To travel on the surface of water.", "To cause to skip over a surface (e.g. a stone).", "To read superficially."], "melt down": ["To make a whole by melting."], "unify": ["To join two parts into a single set or element; to become one."], "ignite": ["To start to burn or burst into flames.", "To arouse or excite feelings and passions."], "catch fire": ["To start to burn or burst into flames."], "take fire": ["To start to burn or burst into flames."], "combust": ["To start to burn or burst into flames."], "stir up": ["To arouse or excite feelings and passions."], "misidentify": ["To identify incorrectly."], "stir": ["An emotional agitation and excitement.", "A rapid active commotion.", "To move a tool through (e.g. a cup).", "To move slightly.", "To stimulate feelings.", "To affect emotionally.", "To summon into action or bring into existence."], "bustle": ["A rapid active commotion."], "hustle": ["A rapid active commotion."], "bully": ["To be bossy or bully towards.", "To discourage or frighten with threats or a domineering manner; intimidate."], "browbeat": ["To discourage or frighten with threats or a domineering manner; intimidate."], "strong-arm": ["To be bossy or bully towards."], "boss around": ["To be bossy or bully towards."], "fortuity": ["An event that happens suddenly or by chance without an apparent cause."], "freak": ["A person who is so ardently devoted to something that it resembles an addiction."], "look up to": ["To feel respect or admiration for."], "publicise": ["To call attention to."], "publicize": ["To call attention to."], "consult": ["To advise professionally.", "To seek information from."], "preceding": ["Existing or coming before."], "opposing": ["Characterized by active hostility."], "historic period": ["A period of history having some distinctive feature."], "spare": ["An extra component of a machine or other apparatus.", "An extra car wheel and tire for a four-wheel vehicle.", "To refrain from harming.", "To save or relieve from an experience or action.", "(of a figure, body, etc.) thin and fit.", "More than is needed, desired, or required.", "Not taken up by previously scheduled activities.", "Kept in reserve especially for emergency use.", "Lacking in amplitude or quantity; not abundant."], "spare part": ["An extra component of a machine or other apparatus."], "be many": ["existence of an indefinite large number of someone or something."], "swidden field": ["a piece of land cleared for farming by burning away vegetation."], "twist(verb)": ["to combine, as two or more strands or threads, by winding together."], "upper arm": ["the part of the arm between the shoulder and the elbow."], "blowgun": ["A pipe or tube through which darts or other missiles are blown by the breath."], "blowtube": ["A pipe or tube through which darts or other missiles are blown by the breath."], "howler monkey": ["Large, prehensile-tailed tropical American monkey of the genus Alouatta, the males of which make a howling noise."], "spider monkey": ["Tropical American monkey of the genus Ateles, having a slender body, long, slender limbs, and a long, prehensile tail."], "collared peccary": ["Piglike hoofed mammal of the genus Tayassu, of North and South America, having a dark gray coat with a white collar."], "javelina": ["Piglike hoofed mammal of the genus Tayassu, of North and South America, having a dark gray coat with a white collar."], "white-lipped peccary": ["Piglike hoofed mammal, of North and South America, having a black gray coat with whitish cheeks; larger than the collared peccary."], "guan": ["a large game bird of the curassow family, common in dense woodlands of Central and South America."], "jigger flea": ["A flea, Tunga penetrans, of tropical America and Africa, the impregnated female of which embeds itself in the skin, especially of the feet, of humans and animals and becomes greatly distended with eggs."], "Jigger": ["A flea, Tunga penetrans, of tropical America and Africa, the impregnated female of which embeds itself in the skin, especially of the feet, of humans and animals and becomes greatly distended with eggs."], "Chigoe flea": ["A flea, Tunga penetrans, of tropical America and Africa, the impregnated female of which embeds itself in the skin, especially of the feet, of humans and animals and becomes greatly distended with eggs."], "Sand flea": ["A flea, Tunga penetrans, of tropical America and Africa, the impregnated female of which embeds itself in the skin, especially of the feet, of humans and animals and becomes greatly distended with eggs."], "cebus monkey": ["A Central and South American monkey, Cebus capucinus, having a prehensile tail and hair on the head resembling a cowl."], "capuchin monkey": ["A Central and South American monkey, Cebus capucinus, having a prehensile tail and hair on the head resembling a cowl."], "capuchin": ["A Central and South American monkey, Cebus capucinus, having a prehensile tail and hair on the head resembling a cowl."], "chonta palm": ["Species of flowering plant in the Arecaceae family,trunked palm tree which is endemic to the Juan Fern\u00e1ndez Islands archipielago in the southeast Pacific Ocean west of Chile."], "chicha": ["A beverage made from fermented corn in South and Central America."], "front teeth": ["Several teeth located above and below in the mouth of mammals to bite food off."], "tip of tongue": ["Front part of the tongue."], "long hair": ["Hair that is not cut."], "upper back": ["Upper part of the back."], "lower arm": ["the part of the arm between the elbow and the hand."], "lower leg": ["Part of the leg between the knee and the foot."], "storm clouds": ["A darkish cloud attending rain or a windstorm."], "corn field": ["A field in which corn is grown."], "reside": ["To have permanent residence."], "schoolmate": ["A student who attends the same school."], "rotary dial": ["A round disk with numbers of 0 to 9 that is used to dial the phone number at old telephones"], "instructor": ["A person who teaches a specific skill to another person."], "Cushma": ["a one-piece dress used by the Ashaninka Indians."], "crudites": ["A mix of uncooked vegetables cut into strips."], "courageous": ["Strong in the face of fear.", "Having or characterized by courage."], "Harmattan": ["Dry, dusty and cold West African trade wind from northeastern direction."], "dry season": ["Yearly period of low rainfall in the tropics."], "rain season": ["Period of year when most of a region's average annual rainfall occurs."], "Vitellaria": ["Tree of the Sapotaceae family, indigenous to Africa, commonly known as shea tree. The shea fruits are oil-rich seed from which shea butter is extracted."], "shea tree": ["Tree of the Sapotaceae family, indigenous to Africa, commonly known as shea tree. The shea fruits are oil-rich seed from which shea butter is extracted."], "shi tree": ["Tree of the Sapotaceae family, indigenous to Africa, commonly known as shea tree. The shea fruits are oil-rich seed from which shea butter is extracted."], "Khaya": ["A species of trees in the mahogany family Meliaceae, native to tropical Africa and Madagascar."], "mahogany tree": ["A species of trees in the mahogany family Meliaceae, native to tropical Africa and Madagascar."], "Guineafowl": ["Bird of the family Phasianidae native to Africa."], "guineahen": ["Bird of the family Phasianidae native to Africa."], "blind person": ["Person who has a complete lack of form and visual light perception."], "deaf person": ["Person who is partial or total unable to hear."], "snap": ["Quick breaking or cracking sound or the action of producing such a sound.", "A sudden sharp noise."], "man's robe": ["A flowing wide sleeved robe worn by men in much of West Africa, and to a lesser extent in North Africa."], "women's robe": ["a colorful women's garment widely worn in West Africa."], "sales quote": ["Price information that allows a prospective buyer to see what costs would be involved for the work they would like to have done or the product they would like to buy."], "precautionary": ["Taken in advance to protect against possible danger or failure."], "Republic of the Philippines": ["An island nation located in Southeast Asia, with Manila as its capital city."], "hard-and-fast": ["(of rules) stringently enforced."], "fixed": ["Fixed and unmoving.", "(of a number) having a given and unchanging value.", "Securely placed or fastened or set.", "Incapable of being changed or moved or undone (of price, income, etc.)."], "frozen": ["Absolutely still.", "Devoid of warmth and cordiality; expressive of unfriendliness or disdain.", "(used of foods) preserved by freezing sufficiently rapidly to retain flavor and nutritional value.", "Not convertible to cash."], "quick-frozen": ["(used of foods) preserved by freezing sufficiently rapidly to retain flavor and nutritional value."], "sedentary": ["Requiring sitting or little activity."], "fell": ["To knock somebody or cut something down, e.g. a tree."], "knock down": ["To knock somebody or cut something down, e.g. a tree."], "alang alang grass": ["A perennial high grown grass native to Asia, Australia and Africa."], "carry on back": ["To hold or to take something from one place to another on the back."], "cassowary": ["A big flightless bird native to tropical forests of New Guinea, nearby islands and northeastern Australia."], "crayfish": ["A freshwater crustacean resembling small lobster."], "g-string": ["A thong underwear or swimsuit, a narrow piece of cloth, leather, or plastic, that covers or holds the genitals, passes between the buttocks, and is attached to a band around the hips."], "pandanus": ["Palm-like, dioecious trees and shrubs native to the Old World tropics and subtropics."], "possum": ["Small to medium-sized arboreal marsupial species native to Australia, New Guinea, and Sulawesi."], "upper leg": ["The part of the leg between the pelvis and the knee."], "waive": ["To do without or cease to hold or adhere to.", "To lose (something) or lose the right to (something) by some error, offense, or crime."], "color photo": ["A photograph that shows colors (as opposed to black and white)."], "doubled": ["Twice the quantity of."], "twofold": ["Twice the quantity of.", "Having more than one decidedly dissimilar aspects or qualities."], "two-fold": ["Twice the quantity of.", "Having more than one decidedly dissimilar aspects or qualities."], "Whitsun": ["Feast on the fifthieth day after Passover which commemorates the descent of the Holy Spirit upon the Apostles."], "shiny": ["Reflecting light.", "Having a shiny surface or coating."], "change over": ["To change from one system to another or to a new plan or policy."], "pelican": ["Large water bird belonging to the family Pelecanidae. They are characterised by a long beak and large throat pouch used for catching prey and draining water from the scooped up contents before swallowing."], "male chauvinist": ["A person who discriminates on grounds of sex."], "degraded": ["Unrestrained by convention or morality.", "Lowered in value."], "devalued": ["Lowered in value."], "labeling": ["Attaching a notice to a product or container bearing information concerning its contents, proper use, manufacturer and any cautions or hazards of use."], "steel grey": ["Slightly purplish or bluish dark grey, like steel.", "Slightly purplish or bluish dark grey, like steel."], "goody": ["An especially delicious comestible."], "keep silence": ["Not say anything."], "be in silence": ["Not say anything."], "subscribe to": ["To sign up to receive regular copies of a publication, such as a newspaper or a magazine, delivered for a period of time."], "Karst spring": ["A place where water from caves returns to the surface, usually much more substantial than a spring."], "frustrated": ["Disappointingly unsuccessful; suffering from frustration."], "frustrating": ["Discouraging by hindering.", "That prevents realization or attainment of a desire."], "football player": ["A sportsman who plays soccer."], "unbox": ["To remove from a box."], "time period": ["An amount of time."], "period of time": ["An amount of time."], "dazed": ["Stunned or confused and slow to react (as from blows or drunkenness or exhaustion).", "In a state of mental numbness especially as resulting from shock."], "knocked out": ["Knocked unconscious by a heavy blow."], "stun": ["To hit something or somebody as if with a sandbag.", "To overcome as with astonishment or disbelief."], "irradiate": ["To expose to radiation."], "semiarid": ["Somewhat arid."], "crystalline lens": ["Transparent, biconvex natural lens inside the eye that, along with the cornea, refracts light to be focused on the retina, and whose shape can be modified by muscles to adapt the focal distance."], "aquula": ["Transparent, biconvex natural lens inside the eye that, along with the cornea, refracts light to be focused on the retina, and whose shape can be modified by muscles to adapt the focal distance."], "policy maker": ["A person who sets the plan pursued by a government or business etc."], "voluminous": ["Large in volume or bulk."], "tortuous": ["Marked by numerous turns and bends."], "twisting": ["Marked by numerous turns and bends."], "twisty": ["Marked by numerous turns and bends."], "blackout": ["The sudden (and generally momentary) loss of consciousness due to a lack of sufficient blood and oxygen reaching the brain.", "A large-scale power failure, and resulting loss of electricity to consumers."], "monumental": ["Imposing in size or bulk or solidity."], "eaves": ["The overhang at the lower edge of a roof that avoids that the rain water touches the wall."], "prostrate": ["Stretched out and lying at full length along the ground.", "To get into a prostrate position, as in submission."], "fishing license": ["Official permission granted to individuals or commercial enterprises allowing and regulating by time, location, species, size or amount the fish that can be caught from rivers, lakes or ocean waters within a particular jurisdiction."], "stigmatize": ["To report (publicly or not) a dishonest, immoral or illegitimate person or entity."], "stigmatise": ["To report (publicly or not) a dishonest, immoral or illegitimate person or entity."], "neutralize": ["To make inactive or ineffective; to oppose and mitigate the effects of by contrary actions."], "bain-marie": ["Cooking method consisting of heating materials gently and gradually to fixed temperatures, or to keep materials warm over a period of time."], "Carex depauperata": ["A rare species of sedge native to parts of Europe."], "short-change": ["To cheat someone by giving them less money than what are due."], "brutalize": ["To treat brutally.", "To make brutal, unfeeling, or inhuman.", "To become brutal or insensitive and unfeeling."], "radio show": ["A performance or production transmitted in sound signals with electromagnetic waves.\\n(Source: MHD)"], "radio program": ["A performance or production transmitted in sound signals with electromagnetic waves.\\n(Source: MHD)"], "set forth": ["To lay open the meaning of, to explain or discuss at length."], "elaborate": ["To provide details, as to an account or idea; clarify the meaning of and discourse in a learned way, usually in writing.", "To produce starting from basic elements or sources; to change into a more developed product.", "Marked by complexity and richness of detail.", "Developed or executed with great care and in every minute detail."], "futuristic": ["Of or relating to futurism."], "converge": ["To be adjacent or come together.", "To approach a mathematical limit as the number of terms increases without limit."], "diaper": ["An absorbent garment worn by a baby who does not yet have voluntary control of its bladder and bowels or by someone who is incontinent."], "restart": ["To start (something) again that has been stopped or paused from the point at which it was stopped or paused; to begin anew."], "help oneself": ["To abstain from doing; always used with a negative."], "sib": ["A person who has the same parents as another person."], "high intensity training": ["A form of strength training that focuses on performing quality weight training repetitions to the point of momentary muscular failure."], "plead": ["To appeal or request earnestly.", "To offer as an excuse or plea.", "To enter a plea, as in courts of law."], "international organization": ["An association of independent states, whose representatives gather for the promotion of common interests including defense and trade.\\n(Source: GT2)"], "precious": ["Characterized by feeling or showing fond affection for.", "Of high worth or cost."], "farsighted": ["Able to see distant objects clearly, in contrast to close objects."], "warlike": ["Suggesting or pertaining to war or military life."], "helpful": ["Providing assistance or serving a useful function."], "uninterested": ["Not having or showing interest; not being interested.", "Having no care or interest in knowing."], "defeated": ["Beaten or overcome; not victorious.", "Disappointingly unsuccessful."], "helpless": ["Lacking in or deprived of strength or power."], "panicky": ["Thrown into a state of intense fear or desperation."], "uptight": ["Being in a tense state."], "worried": ["Afflicted with or marked by anxious uneasiness or trouble or grief.", "Mentally upset over possible misfortune or danger etc."], "apprehensive": ["Quick to understand."], "fib": ["To tell a relatively insignificant lie."], "garden snail": ["Any of several inedible snails of the genus Helix; often destructive pests."], "molester": ["A person who subjects others to unwanted or improper sexual activities."], "harasser": ["A persistent tormentor."], "snatcher": ["A thief who grabs and runs."], "indict": ["To accuse formally of a crime."], "biceps curl": ["Any of a number of weight training exercises that target the biceps brachii muscle."], "nursing aide": ["A male person active in the care of people, in a hospital or nursing home, etc."], "overhead press": ["An exercise in which a weight is lifted with the arms, which are straightened vertically over one's head."], "shoulder press": ["An exercise in which a weight is lifted with the arms, which are straightened vertically over one's head."], "final-obstruent devoicing": ["A phonological phenomenon of some languages (for example German and Turkish) where voiced consonants become voiceless at the end of a word."], "weight training": ["A form of exercise in which weights are lifted."], "strength training": ["A form of physical exercise specializing in the use of resistance to induce muscular contraction which builds the strength, anaerobic endurance, and size of skeletal muscles."], "resistance training": ["A form of physical exercise specializing in the use of resistance to induce muscular contraction which builds the strength, anaerobic endurance, and size of skeletal muscles."], "stifling": ["Characterized by oppressive heat and humidity."], "ventilated": ["Exposed to air."], "inflate": ["To exaggerate or make bigger.", "To fill with gas or air.", "To cause prices to rise by increasing the available currency or credit.", "To become inflated."], "deflate": ["To collapse by releasing contained air or gas.", "To become deflated or flaccid, as by losing air."], "unaccompanied": ["Being without an escort.", "Playing or singing without accompaniment."], "loner": ["A person who avoids the company or assistance of others."], "solitude": ["The state or situation of being alone.", "A state of social isolation."], "alienated": ["Socially disoriented; feeling alone and unwanted or misunderstood by other people."], "permanently": ["For a long time without essential change."], "perpetual": ["That continues or lasts forever or indefinitely.", "Uninterrupted in time and indefinitely long continuing; that seems to be there all the time and is often annoying or worrying."], "quota": ["A proportional share assigned to each participant.", "An official limitation on imports or production."], "carload": ["The quantity of passengers sufficient to fill an automobile."], "vanload": ["The quantity, as of passengers or goods, that a van can carry."], "truckload": ["The quantity, as of passengers or goods, that a van can carry."], "spoonful": ["The quantity a spoon will hold."], "distinction": ["High station, status, rank, importance, or repute."], "preeminence": ["High station, status, rank, importance, or repute."], "huffy": ["Irritated and roused to anger."], "harassed": ["Troubled persistently especially with petty annoyances."], "pestered": ["Troubled persistently especially with petty annoyances."], "irritated": ["A little angry and impatient about something."], "nettled": ["A little angry and impatient about something."], "pissed": ["A little angry and impatient about something."], "pissed off": ["A little angry and impatient about something."], "female stripper": ["A woman who dances and undresses for money."], "strip": ["To get undressed."], "airs": ["Affected manners intended to impress others."], "shirtless": ["Not having or wearing a shirt; bare-chested."], "Zucchero": ["Italian singer-songwriter and musician, among the most famous in the world."], "Zucchero Fornaciari": ["Italian singer-songwriter and musician, among the most famous in the world."], "Adelmo Fornaciari": ["Italian singer-songwriter and musician, among the most famous in the world."], "pectoral": ["Of or relating to the chest or thorax."], "indignant": ["Angered at something unjust or wrong."], "resentful": ["Full of or marked by resentment or indignant ill will."], "handstand": ["The act of supporting yourself by your hands alone in an upside down position."], "abdominal stretch": ["A wrestling submission move in which the wrestler first straddles one of the opponent's legs, then reaches over the opponent's near arm with the arm close to the opponent's back and then locks it, squatting and twisting to the side and flexes the opponent's back and stretching their abdomen."], "cobra twist": ["A wrestling submission move in which the wrestler first straddles one of the opponent's legs, then reaches over the opponent's near arm with the arm close to the opponent's back and then locks it, squatting and twisting to the side and flexes the opponent's back and stretching their abdomen."], "helping": ["A predetermined amount of a food given to a person."], "arm lock": ["A single or double joint lock that hyperextends, hyperflexes or hyperrotates the elbow joint and/or shoulder joint."], "looking": ["The act of directing the eyes toward something and perceiving it visually."], "flexure": ["A angular or rounded shape in a thin material (such as paper) where the material abruptly changes direction, typically back toward itself."], "bill poster": ["A person who pastes up bills or placards on walls or billboards."], "amused": ["Pleasantly occupied."], "shocked": ["Struck with fear, dread, or consternation."], "renowned": ["Widely known and esteemed."], "PhD": ["One of the highest earned academic degrees conferred by a university."], "Ph. D.": ["One of the highest earned academic degrees conferred by a university."], "finalist": ["A participant who reaches the final stages of a competition."], "Fratercula arctica": ["Common puffin of the northern Atlantic."], "puffin": ["Common puffin of the northern Atlantic."], "leg press": ["A lower body exercise presented on a machine in which the individual pushes a weight or resistance away from them using their legs."], "neighboring": ["Having a common boundary or edge; abutting; touching."], "casket": ["A container into which cremated remains are placed and kept."], "tactician": ["A person skilled in the planning and execution of tactics."], "grimace": ["A contorted facial expression.", "To contort the face to indicate a certain mental or emotional state."], "classify": ["To separate, arrange or order by classes or categories."], "stomp": ["A strike with the heel of the foot from the stand-up position, usually directed at the head or body of a downed opponent.", "To walk heavily on something or someone."], "rings": ["An artistic gymnastics apparatus and the event that uses it."], "roar": ["The sound made by a lion.", "To make a loud noise, as of animal.", "To make a loud noise, as of wind, water, or vehicles."], "cardiologic": ["Of or relating to or used in or practicing cardiology."], "nod": ["To lower and raise the head, as to indicate assent or agreement or confirmation."], "quench": ["To totally stop something which is on fire from burning any more."], "MLL-93 protocol": ["MLL 93 protocol"], "hypertensive": ["Having abnormally high blood pressure."], "Ingush language": ["Northeast Caucasian language spoken mainly in the autonomous Republic of Ingushetia in the Russian Federation."], "set-aside": ["Uncultivated land."], "two-legged": ["Having two legs."], "flying kick": ["A kick in certain martial arts which is delivered while in the air, specifically moving into the opponent after a running start to gain forward momentum."], "wrestling lock": ["Any wrestling hold in which some part of the opponent's body is twisted or pressured."], "wristlock": ["In wrestling and grappling, a joint lock primarily affecting the wrist joint and possibly the radioulnar joints through rotation of the hand."], "wrist lock": ["In wrestling and grappling, a joint lock primarily affecting the wrist joint and possibly the radioulnar joints through rotation of the hand."], "headlock": ["A wrestling hold in which the opponent's head is locked between the crook of your elbow and the side of your body."], "manly": ["Possessing qualities befitting a man.", "Characteristic of a man."], "starting block": ["A block providing bracing for a runner's feet at start of a race."], "swimmer": ["A trained athlete who participates in swimming competitions.", "A person who travels through the water by swimming."], "curl": ["To twist or roll into coils, spirals or ringlets."], "glance": ["A quick look."], "inattentive": ["Showing a lack of attention or care."], "savour": ["To derive or receive pleasure from; get enjoyment from; take pleasure in."], "sixpack": ["A well developed set of abdominal muscles."], "cocky": ["Overly self-confident or self-assertive."], "distill": ["To make by the process of distillation."], "decompression chamber": ["A large chamber in which the oxygen pressure is above normal for the atmosphere; used in treating breathing disorders or carbon monoxide poisoning."], "physical effort": ["The use of forces and means higher than normal in order to achieve a given purpose."], "loneliness": ["The state of being alone in solitary isolation."], "surprised": ["Feeling or showing surprise because taken unawares or suddenly."], "mocked": ["Abusing vocally; expressing contempt or ridicule."], "Occupy Wall Street": ["A protest movement that began on September 17, 2011 in Zuccotti Park, located in New York City's Wall Street financial district."], "listening": ["The act of hearing attentively."], "bearhug": ["A wrestling hold with arms locked tightly around the opponent."], "figure four leglock": ["A wrestling submission hold in which the opponent's legs resemble the number \"4\"."], "figure-four leglock": ["A wrestling submission hold in which the opponent's legs resemble the number \"4\"."], "mexican surfboard": ["A wrestling hold in which the wrestler puts one foot on the back of the opponent, pulling back his arms, almost like riding on a surfboard."], "romance": ["The expressive and pleasurable feeling from an emotional attraction towards another person associated with romantic love."], "running start": ["A racing start in which the contestants are already in full motion when they pass the starting line."], "grapple": ["To grip or seize, as in a wrestling match."], "hand to hand": ["At close quarters (e.g. of fight)."], "hand-to-hand": ["At close quarters (e.g. of fight)."], "hand in hand": ["Clasping each other's hands."], "binary": ["Of or pertaining to a number system have 2 as its base."], "dilate": ["To become wider."], "envision": ["To imagine, conceive or see in one's mind."], "relaxed": ["Without stress or anxiety."], "supine": ["Lying face upward."], "prone": ["Lying face downward."], "frigid": ["Sexually unresponsive."], "brainstorm": ["To try to solve a problem in a group by thinking intensely about it."], "humiliated": ["Subdued or brought low in condition or status."], "undecided": ["Characterized by indecision."], "homoerotic": ["Of or concerning homosexual love."], "chagrined": ["Having a feeling of uneasiness due to the difficulty or the impossibility to adopt an appropriate behaviour."], "young man": ["A teenager or a young adult male."], "self-destruction": ["The act of a person killing himself intentionally."], "reprehend": ["To express strong disapproval of."], "machine-readable": ["Suitable for feeding directly into a computer for processing."], "machine readable": ["Suitable for feeding directly into a computer for processing."], "handcuff": ["To confine or restrain with or as if with manacles or handcuffs."], "braze": ["To solder together by using hard solder with a high melting point."], "flirt": ["To talk or behave amorously, without serious intentions."], "chomp": ["The act of biting with the teeth and jaws."], "bless": ["To make something blessed; to confer blessing upon."], "glamorous": ["Having glamour; having an air of romance and excitement."], "dried": ["Preserved by removing natural moisture."], "strap": ["To tie with a strap."], "sadomasochistic": ["Of or relating to sadomasochism."], "sadomaso": ["Of or relating to sadomasochism."], "hush": ["To cause to be quiet or not talk."], "frown": ["To look angry or sullen, wrinkle one's forehead, as if to signal disapproval."], "gallop": ["To go at galloping speed.", "To ride at a galloping pace."], "chiseled": ["Having a clear, strong and distinct outline as if precisely cut along the edges."], "well-defined": ["Having a clear, strong and distinct outline as if precisely cut along the edges."], "weld": ["To join together by heating."], "glide": ["To fly in or as if in a glider plane."], "lycra": ["A synthetic fiber known for its exceptional elasticity."], "slam": ["To throw violently.", "To close violently."], "monish": ["To scold or rebuke; to counsel in terms of someone's behavior."], "yellow card": ["A penalty card shown by the referee to a player being cautioned."], "fling": ["To move in an abrupt or headlong manner."], "trapped": ["Forced to turn and face attackers."], "cornered": ["Forced to turn and face attackers."], "harrow": ["To draw a harrow over (land)."], "moka machine": ["A type of pot which is placed on a heat source used to brew coffee."], "vindictive": ["Disposed to seek revenge or intended for revenge."], "hike": ["To walk a long way, as for pleasure or physical exercise."], "leap": ["To move forward by leaps and bounds."], "housekeep": ["To maintain a household; take care of all business related to a household."], "juggle": ["To throw, catch, and keep in the air several things simultaneously."], "unfreeze": ["To become soft or liquefied by heat."], "rivet": ["To fasten with one or more rivets."], "solder": ["To join or fuse with solder."], "mourn": ["To feel sadness for someone's death."], "pant": ["To breathe noisily, as when one is exhausted."], "pave": ["To cover with tiles.", "To cover with a material such as stone or concrete to make suitable for vehicle or pedestrian traffic."], "poach": ["To hunt illegally."], "chained": ["Bound with chains."], "enchain": ["To bind with chains."], "bromantic": ["Of or pertaining to a bromance."], "bromance": ["Close, non-sexual relationship between two or more men."], "suicider": ["Person who intentionally takes his or her own life."], "quilt": ["To stitch or sew together."], "recline": ["To move the upper body backwards and down."], "recycle": ["To use again after processing by converting waste into reusable material."], "refuel": ["To provide with additional fuel, as of aircraft, ships, and cars."], "torn": ["Having edges that are jagged from injury."], "lacerated": ["Having edges that are jagged from injury."], "ruminate": ["To chew the cuds."], "scavenge": ["To feed on carrion or refuse.", "To collect discarded or refused material."], "sleepwalk": ["To walk in one's sleep."], "snorkel": ["To dive with a snorkel."], "spank": ["To give a spanking to; to subject to a spanking."], "spray": ["To scatter in a mass or jet of droplets."], "streak": ["To run naked in a public place."], "swab": ["To wash with a swab or a mop."], "swarm": ["To be teeming, be abuzz.", "To move in large numbers."], "thrash": ["To separate the grain from the straw or husks by beating."], "chill out": ["To become less tense, rest, or take one's ease."], "trample": ["To injure by stomping or as if by stomping."], "trawl": ["To fish with trawlers."], "twirl": ["To cause to spin.", "To turn in a twisting or spinning motion."], "spinal disc herniation": ["A medical condition in which an intervertebral disc is displaced, often putting pressure on a nearby nerve."], "slipped disc": ["A medical condition in which an intervertebral disc is displaced, often putting pressure on a nearby nerve."], "herniated disc": ["A medical condition in which an intervertebral disc is displaced, often putting pressure on a nearby nerve."], "slipped disk": ["A medical condition in which an intervertebral disc is displaced, often putting pressure on a nearby nerve."], "herniated disk": ["A medical condition in which an intervertebral disc is displaced, often putting pressure on a nearby nerve."], "spinal disk herniation": ["A medical condition in which an intervertebral disc is displaced, often putting pressure on a nearby nerve."], "wade": ["To walk (through relatively shallow water)."], "winnow": ["To separate the chaff from by using air currents."], "whittle": ["To cut or shape a piece of wood with a knife."], "cross-dress": ["To dress in the clothes typical of the other sex."], "tahr": ["A caprid belonging to one of the three genuses Hemitragus, Nilgiritragus or Arabitragus."], "Himalayan tahr": ["A tahr of the genus Hemitragus endemic to the Himalayas."], "common tahr": ["A tahr of the genus Hemitragus endemic to the Himalayas."], "Nilgiri tahr": ["A tahr of the species Nilgiritragus hylocrius endemic to the Nilgiri Hills in southern India."], "Nilgiri ibex": ["A tahr of the species Nilgiritragus hylocrius endemic to the Nilgiri Hills in southern India."], "Arabian tahr": ["A tahr of the species Arabitragus jayakari native to Arabia."], "reverence": ["A deep feeling of respect for someone or something."], "redstart": ["A songbird of the genus Phoenicurus having an orange-red tail."], "Przevalski's redstart": ["A redstart of the species Phoenicurus alaschanicus."], "Ala Shan redstart": ["A redstart of the species Phoenicurus alaschanicus."], "Eversmann's redstart": ["A redstart of the species Phoenicurus erythronotus."], "rufous-backed redstart": ["A redstart of the species Phoenicurus erythronotus."], "blue-capped redstart": ["A redstart of the species Phoenicurus caeruleocephala."], "common redstart": ["A redstart of the species Phoenicurus phoenicurus."], "Hodgson's redstart": ["A redstart of the species Phoenicurus hodgsoni."], "white-throated redstart": ["A redstart of the species Phoenicurus schisticeps."], "Daurian redstart": ["A redstart of the species Phoenicurus auroreus."], "Moussier's redstart": ["A redstart of the species Phoenicurus moussieri."], "G\u00fcldenst\u00e4dt's redstart": ["A redstart of the species Phoenicurus erythrogastrus."], "white-winged redstart": ["A redstart of the species Phoenicurus erythrogastrus."], "blue-fronted redstart": ["A redstart of the species Phoenicurus frontalis."], "Romansh language": ["A language of Switzerland."], "dictionary entry": ["Linguistic unit that is a basic element of the lexicon and is stored and used by speakers of a particular language."], "gluttonous": ["Given to excess in consumption of especially food or drink."], "Ebola virus disease": ["A severe and often fatal disease in humans and nonhuman primates, monkeys and chimpanzees, caused by the Ebola virus."], "Ebola virus": ["A virus of the species Zaire ebolavirus which causes a severe and often fatal hemorrhagic fever in humans and other mammals."], "Zaire ebolavirus": ["A virus of the species Zaire ebolavirus which causes a severe and often fatal hemorrhagic fever in humans and other mammals."], "desired": ["Wanted intensely."], "go mad": ["To become insane.", "To do something that is out of character."], "go crazy": ["To become insane.", "To do something that is out of character."], "go nuts": ["To become insane."], "frightened": ["Thrown into a state of intense fear or desperation."], "terrified": ["Thrown into a state of intense fear or desperation."], "perplexed": ["Full of difficulty or confusion or bewilderment."], "wrathful": ["Vehemently incensed and condemnatory."], "shameful": ["Deserving or bringing disgrace or shame."], "muddy": ["To dirty with mud.", "Dirty and messy; covered with mud or muck."], "colorful": ["Having striking colors."], "eutectic": ["(For a mixture of solids) That melts at a temperature lower than the melting temperature of any of its components."], "bang": ["A song that is very popular for a while.", "A bang or blow; the sound of of a crash."], "typographic ligature": ["A special character that is used to represent a sequence of characters."], "synset": ["A set of one or more synonyms, such as those in WordNet."], "synonym set": ["A set of one or more synonyms, such as those in WordNet."], "medicinal": ["Having the therapeutic properties of medicine."], "officinal": ["Having the therapeutic properties of medicine."], "tonsillectomy": ["The surgical ablation of the tonsils."], "troll post": ["A message posted in online forums with the sole purpose of starting heated discussions and annoying people."], "moral suasion": ["Appealing to the ethical principles or beliefs of an adversary or the public to convince the adversary to change behavior or attitudes."], "best friend": ["The closest friend."], "supportive": ["Providing support or assistance."], "doubtful": ["Fraught with uncertainty or doubt."], "pull up": ["A physical exercise performed using arms by pulling oneself up on a horizontal bar until the chin is level with the bar."], "pull-up": ["A physical exercise performed using arms by pulling oneself up on a horizontal bar until the chin is level with the bar."], "trazioni alla sbarra": ["A physical exercise performed using arms by pulling oneself up on a horizontal bar until the chin is level with the bar."], "hotel room": ["A bedroom (usually with bath) in a hotel."], "strum": ["To sound the strings of (a string instrument)."], "beating": ["A corporal punishment inflicted with repeated blows."], "suffering": ["The condition of someone who suffers; a state of pain or distress.", "Troubled by pain or loss."], "chokehold": ["A hold in which someone loops the arm around the neck of another person in a tight grip, usually from behind."], "stare": ["A fixed look with eyes open wide."], "climb up": ["To mount to a high or little accessible place using feet and hands."], "discontinuous": ["(Of a function or curve) possessing one or more discontinuities."], "lexicalize": ["To make or coin into a word or accept a new word into the lexicon of a language."], "stupidly": ["In a stupid manner."], "etioplast": ["A chloroplast that has not been exposed to light."], "rhodium-plating": ["The application of a thin rhodium layer to a surface to improve tarnish resistance."], "spectacular": ["Sensational in appearance or thrilling in effect."], "fateful": ["Causing great distress or injury; bringing ruin."], "unload": ["To take the load off (a container or vehicle)."], "brooch": ["A piece of jewellery that is attached to clothing with a pin."], "immobilize": ["To hold down so as to restrict movement."], "brown-haired": ["Having hair of a brown color."], "white-haired": ["Showing characteristics of age, especially having white hair."], "black-haired": ["Having hair of a dark, black color."], "zodiacal": ["Relating to or included in the zodiac."], "hobble": ["A wooden block, tied around the leg, that was used on horses or prisoners to prevent them from running away."], "chimneystack": ["The portion of a chimney rising above the roof."], "skim over": ["To read superficially."], "lurk": ["To lie in wait, lie in ambush, behave in a sneaky and secretive manner."], "cuff": ["To confine or restrain with or as if with manacles or handcuffs."], "Jew's ear": ["A species of edible fungus that grows on trees, having an ear-like shape and a brown colouration."], "wood ear": ["A species of edible fungus that grows on trees, having an ear-like shape and a brown colouration."], "jelly ear": ["A species of edible fungus that grows on trees, having an ear-like shape and a brown colouration."], "ear fungus": ["A species of edible fungus that grows on trees, having an ear-like shape and a brown colouration."], "common ear fungus": ["A species of edible fungus that grows on trees, having an ear-like shape and a brown colouration."], "Chinese fungus": ["A species of edible fungus that grows on trees, having an ear-like shape and a brown colouration."], "pig's ear": ["A species of edible fungus that grows on trees, having an ear-like shape and a brown colouration."], "black wood ear": ["A species of edible fungus that grows on trees, having an ear-like shape and a brown colouration."], "tree ear": ["A species of edible fungus that grows on trees, having an ear-like shape and a brown colouration."], "Kikurage": ["A species of edible fungus that grows on trees, having an ear-like shape and a brown colouration."], "optimistic": ["Expecting the best."], "solidarity": ["Unity or agreement of feeling or action, especially among members of a group with common interests or purposes."], "fresh yeast": ["Fresh baker's yeast which is sold compressed to a cube."], "quintal": ["A unit of weight equal to 100 kilograms."], "storm cloud": ["A darkish cloud attending rain or a windstorm."], "Allah": ["God, in Islamic context."], "participated": ["Past participle of the verb to participate."], "steer": ["To direct the course (e.g. of a vehicle); determine the direction of travelling."], "sunbathe": ["To expose one's body to the sun."], "combatives": ["A fighting system used by the U.S. Army to train soldiers for dangerous hand-to-hand combat situations."], "HTH": ["[Internet slang abbreviation of the expression \"hope that helps\"]", "[Internet slang abbreviation of the expression \"How The Hell\"]"], "hope that helps": ["[Internet slang abbreviation of the expression \"hope that helps\"]"], "How The Hell": ["[Internet slang abbreviation of the expression \"How The Hell\"]"], "distributed": ["Spread out or scattered about or divided up."], "plum cake": ["A cake made with yeast dough or shortcrust pastry that is spread thin on a baking tray and topped with halved and pitted damsons."], "liberalization": ["The process or act of making more liberal."], "macchiato": ["An espresso with a small amount of frothy steamed milk."], "caff\u00e8 macchiato": ["An espresso with a small amount of frothy steamed milk."], "beach volley": ["A ball sport played by two teams of two players each on a sand court divided by a net."], "exult": ["To express great joy or elation."], "jubilate": ["To express great joy or elation."], "beach volleyball": ["A ball sport played by two teams of two players each on a sand court divided by a net."], "be beached": ["To land on a beach; (of animals) to become stranded out of the water."], "affogato": ["An espresso with a scoop of ice cream."], "gigabyte": ["A unit of information equal to 1000 megabytes or 10^9 (1,000,000,000) bytes."], "terabyte": ["A unit of information equal to 1000 gigabytes or 10^12 (1,000,000,000,000) bytes."], "petabyte": ["A unit of information equal to 1000 terabytes or 10^15 bytes."], "undressed": ["Having removed clothing."], "decameter": ["A metric unit of length equal to ten meters."], "sensual": ["Sexually exciting or gratifying."], "boundary marker": ["Thing driven in the ground and used to delimit a land."], "poor man": ["Person owning no or little possession and income."], "cohabitee": ["A person who cohabits with another."], "night sleep": ["The sleep at night."], "protruding ears": ["Ears that markedly stick outwards."], "three quarters of an hour": ["The duration of an instruction session in German and Austrian schools, shorter sessions are very uncommon."], "spermophilus": ["Genus of rodents, in the squirrel family, living in Eurasia, on the ground."], "spermophilus stricto sensu": ["Genus of rodents, in the squirrel family, living in Eurasia, on the ground."], "devil's advocate": ["A person who takes the worse side just for the sake of argument."], "sacred king": ["In historical societies, king who is believed to be a deity or to have godlike attributes and powers."], "sacral king": ["In historical societies, king who is believed to be a deity or to have godlike attributes and powers."], "myr": ["A unit of one million years, used in geology and astronomy."], "million years": ["A unit of one million years, used in geology and astronomy."], "obtuse-angled": ["(geometry) Of a triangle, having an obtuse angle."], "inconsolable": ["Incapable of being consoled."], "neurotic": ["Characteristic of or affected by neurosis."], "humiliating": ["Causing awareness of one's shortcomings."], "mortifying": ["Causing awareness of one's shortcomings."], "theological": ["Of or relating to or concerning theology."], "rematch": ["Second match played by the loser, hoping to regain what he lost."], "var\u0131ety": ["A partial change in the form, position, state, or qualities of a thing."], "be short": ["To need a number or amount of something, but not having enough or any at all."], "ontological": ["Of or relating to ontology."], "taxonomic": ["Of or relating to taxonomy."], "taxonomical": ["Of or relating to taxonomy."], "toxicology testing": ["Test for the determination of the inherent toxicity of a chemical."], "on the job training": ["Training undertaken in the workplace as part of the productive work of the learner."], "boulder": ["To engage in bouldering; to climb, without ropes, on large boulders or boulder-sized objects."], "unattackable": ["Immune to attack; incapable of being tampered with."], "inviolable": ["Immune to attack; incapable of being tampered with."], "resinous": ["Having the characteristics of pitch or tar."], "resiny": ["Having the characteristics of pitch or tar."], "ionizing radiation": ["Radiation that is capable of energizing atoms sufficiently to remove electrons from them."], "citrus grove": ["Place where citrus trees are grown, in particular for their fruits."], "comic book shop": ["A shop where comic books are sold."], "preparatory measure": ["Work preparing or laying the ground for something that is planned to come later."], "written account": ["A written document expressing knowledge of facts or events."], "brittle": ["Having hardness and rigidity but little tensile strength."], "locker": ["A storage compartment for clothes and valuables; usually it has a lock."], "baozi": ["A steamed, filled bun or bread-like (i.e. made with yeast) item in various Chinese cuisines."], "bao": ["A steamed, filled bun or bread-like (i.e. made with yeast) item in various Chinese cuisines."], "bau": ["A steamed, filled bun or bread-like (i.e. made with yeast) item in various Chinese cuisines."], "humbow": ["A steamed, filled bun or bread-like (i.e. made with yeast) item in various Chinese cuisines."], "nunu": ["A steamed, filled bun or bread-like (i.e. made with yeast) item in various Chinese cuisines."], "bausak": ["A steamed, filled bun or bread-like (i.e. made with yeast) item in various Chinese cuisines."], "pow": ["A steamed, filled bun or bread-like (i.e. made with yeast) item in various Chinese cuisines."], "pau": ["A steamed, filled bun or bread-like (i.e. made with yeast) item in various Chinese cuisines."], "yesteryear": ["Last year."], "fire drill": ["A method of practicing the evacuation of a building for a fire or other emergency."], "rotted": ["Having changed its colour, smell or composition (partially or completely), due to being attacked and decomposed by microorganisms (relating to organic matter); damaged by decay."], "putto": ["A representation of a naked, often winged, child, especially a cherub or a cupid in Renaissance or Baroque art."], "overthrow": ["To cause the downfall of; to remove violently."], "ankle monitor": ["A device that individuals under house arrest or parole are often required to wear to track their location."], "somewhat stupid": ["Marked by lack of intellectual acuity or somewhat mentally limited."], "a little stupid": ["Marked by lack of intellectual acuity or somewhat mentally limited."], "semordnilap": ["A word, which, when spelled backward, creates another word."], "pangram": ["A sentence which contains every letter of the alphabet only once.", "A sentence which contains every letter of the alphabet at least once."], "emordnilap": ["A word, which, when spelled backward, creates another word."], "person with a sunlamp tan": ["A person who gets tanned using a sun lamp."], "tittle": ["The little dot above lower case letter \u2018i\u2019s and lowercase letter \u2018j\u2019s."], "incompatible": ["Not compatible."], "autumn wind": ["Wind blowing in autumn."], "dairyman": ["Farmer who specializes in the production of milk; the owner of a diary."], "chesty": ["Having extreme self-confidence and overbearing pride."], "lacustrine": ["Of or relating to lakes."], "chronophotograph": ["A photograph or a series of photographs of a moving object taken for the purpose of recording and showing successive phases of the motion."], "chronophoto": ["A photograph or a series of photographs of a moving object taken for the purpose of recording and showing successive phases of the motion."], "leg lace": ["A hold in which the wrestler grasps the opponent by the ankles with his/her arms and exposes the opponent's back to the mat."], "ankle lace": ["A hold in which the wrestler grasps the opponent by the ankles with his/her arms and exposes the opponent's back to the mat."], "ankle lock": ["A hold in which the wrestler grasps the opponent by the ankles with his/her arms and exposes the opponent's back to the mat."], "Babelfy": ["A multilingual state-of-the-art system for integrated Word Sense Disambiguation and Entity Linking."], "ventricular": ["Of or relating to a ventricle (of the heart or brain)."], "recurrent": ["Recurring again and again."], "long-lasting": ["Existing for a long time."], "long-standing": ["Recurring again and again."], "long standing": ["Recurring again and again."], "sea bass": ["The lean flesh of a saltwater fish of the family Serranidae."], "reap": ["To gather the ripened crop."], "break wind": ["To emit digestive gases through the anus."], "chase away": ["Force to go away."], "spark": ["A small particle or body of shining or glowing matter, either molten or on fire."], "speckle": ["A round or irregular patch on the surface of a thing having a different color, texture etc."], "take back": ["To regain possession of something."], "Westphalian": ["The collection of vernacular languages spoken in Westphalia in Germany."], "Aeolic Greek": ["A linguistic term used to describe a set of rather archaic Greek sub-dialects, spoken mainly in Boeotia (a region in Central Greece), in Lesbos (an island close to Asia Minor) and in other Greek colonies."], "startup": ["The act of setting something in operation."], "abseiling": ["A descent down a nearly vertical surface by using a doubled rope that is coiled around the body and attached to some higher point."], "impure": ["Combined with extraneous elements.", "(used of persons or behaviors) immoral or obscene."], "bottle cork": ["Conical or cylindrical-shaped plug that is pushed in the bottleneck of a (wine) bottle to stop it up."], "paralympic": ["Relating to the Paralympic Games."], "work out": ["To do physical exercise to improve one's fitness."], "might": ["Muscular capacity to modify the speed of an external physical object, to deform it or to oppose another force."], "ice-cream man": ["A person who sells ice cream."], "ice cream man": ["A person who sells ice cream."], "ice cream maker": ["A person who makes ice creams."], "ice-cream maker": ["A person who makes ice creams."], "traveling": ["Relating to or used for travel."], "special delivery": ["Mail that is delivered by a special carrier (for an additional charge)."], "prizefighter": ["A professional boxer."], "abs": ["The muscles of the abdomen."], "ab": ["The muscles of the abdomen."], "churro": ["A fried pastry, typically eaten as a dessert and with chocolate beverage."], "pilfer": ["To make off with belongings of others; to steal in small quantities."], "dehumanize": ["To deprive of human qualities."], "fertilize": ["To provide with fertilizers or add nutrients to.", "To make fertile or productive.", "To introduce semen into (a female)."], "inseminate": ["To introduce semen into (a female)."], "digitalize": ["To put into digital form, as for use in a computer."], "fluke": ["A difficult task that you can do thanks to a stroke of luck."], "stroke of luck": ["A difficult task that you can do thanks to a stroke of luck."], "decontaminate": ["To rid of contamination."], "abandonware": ["A software product, especially a video game, whose copyright is no longer defended or which is no longer marketed even by the company who made it."], "manzanita": ["Species of the genus Arctostaphylos; evergreen shrubs or small trees present in the chaparral biome of western North America."], "tule": ["A giant species of sedge in the plant family Cyperaceae, native to freshwater marshes. Dyed and woven, tules are used to make baskets, bowls, mats, hats, clothing, duck decoys, and even boats by Native American groups."], "jackrabbit": ["Mammal of the family hares and rabbits (Leporidae) with long ears, short tail and hindlegs which are shorter than the forelegs and permit running quickly."], "system administrator": ["Someone who administers a computer system or computer network and who has special rights and tasks."], "system admin": ["Someone who administers a computer system or computer network and who has special rights and tasks."], "springtime lethargy": ["A general sense of weariness in the springtime, specifically between mid-March through mid-April."], "Palatinean": ["A language of Germany."], "organized religion": ["An institution to express belief in a divine power."], "bearing puller": ["Tool aimed at pulling forcibly a wheel from its axle."], "wheel puller": ["Tool aimed at pulling forcibly a wheel from its axle."], "gear puller": ["Tool aimed at pulling forcibly a wheel from its axle."], "shot": ["The act of firing a projectile."], "normalize": ["To become normal or return to its normal state.", "To make normal or cause to conform to a norm or standard."], "palindromic": ["Of a word, verse, sentence or number that reads the same backward or forward."], "lancet window": ["A narrow window having a lancet arch and without tracery."], "terminological": ["Of or concerning terminology."], "back of head": ["The back part of the head."], "dragon food": ["A peace offering brought by a guilty husband to placate his wive.", "Food to be eaten by dragons."], "barbel": ["European freshwater fish belonging to the family of carps (Cyprinidae), Genus of barbus."], "Central American Spanish": ["The variety of Spanisch spoken in Central America."], "basis": ["The bottom or lowest part."], "birthmark": ["A benign irregularity on the skin which is present at birth or appears shortly after birth, usually in the first month. Birthmarks are caused by overgrowth of blood vessels, melanocytes, smooth muscle, fat, fibroblasts, or keratinocytes."], "blood vessel": ["Part of the circulatory system that transports blood throughout the human body."], "ribes": ["A member of the genus Ribes in the gooseberry family Grossulariaceae, native to parts of western Europe (France, Belgium, Netherlands, Germany, and northern Italy). It is a deciduous shrub normally growing to 1-1.5 m tall, occasionally 2 m, with five-lobed leaves arranged spirally on the stems."], "dog-rose": ["The dog-rose (rosa canina) is a variable climbing wild rose species native to Europe, northwest Africa and western Asia and whose fruit is known as hip."], "dreadful": ["Causing dread; very bad."], "freckle": ["A small brownish or reddish pigmentation spot on the surface of the skin."], "free of charge": ["Without cost."], "weather verb": ["A verb of any language that refers to a weather condition, such as \"to rain\"."], "weather sentence": ["In linguistics, a verb phrase or sentence employing a so called weather verb, that is one having a weak, sematically empty, or no subject at all, depending on the language."], "gipsy": ["Gipsy is a common word used to indicate Romani people, Tinkers and Travellers."], "gypsy": ["Gipsy is a common word used to indicate Romani people, Tinkers and Travellers."], "glutton": ["Person who habitually eats and drinks excessively."], "hump": ["A hump may refer to a camel's hump containing its fat reservoir or alternatively to the curve on an upper spine that causes a hunchback."], "low voice": ["Speaking quietly: to talk in a low voice."], "meek": ["Tender and amiable; of a considerate or kindly disposition."], "moist": ["(Of the air) Containing a high quantity of water vapor."], "river mouth": ["A river mouth or stream mouth is a part of a river where it flows into the sea, river, lake, reservoir or ocean."], "turbid": ["A fluid which is cloudy or hazy due to large numbers of individual particles that are generally invisible to the naked eye, similar to smoke in air."], "multitude": ["A large number of something."], "palate": ["The roof of the mouth in humans and other mammals."], "peak of mountain": ["The highest point of a mountain."], "poetry": ["The class of literature comprising poems; a poet's literary production; composition in verse or language exhibiting conscious attention to patterns."], "pure": ["Free from contaminants or extraneous elements."], "scanty": ["Somewhat less than is needed in amplitude or extent."], "spicy": ["Of, pertaining to, or containing spice; or spicy flavour: Provoking a burning sensation due to the presence of chillies or similar hot spices."], "spicey": ["Of, pertaining to, or containing spice; or spicy flavour: Provoking a burning sensation due to the presence of chillies or similar hot spices."], "spruce": ["Any of various large coniferous evergreen trees from the genus Picea, found in northern temperate and boreal regions."], "surface": ["The overside or up-side of a flat object such as a table, or of a liquid; the outside hull of a tangible object."], "infected": ["Referring to something or someone that has received an infection."], "copulate": ["To engage in sexual intercourse."], "dilute": ["To weaken or make thinner by adding a foreign substance or a solvent (e.g. water) to a solution."], "dislocate": ["To (accidentally) dislodge a skeletal bone from its joint."], "grow up": ["To mature and become an adult."], "hew": ["To chop away at; to whittle down; to mow down."], "hinder": ["To make difficult to accomplish; to frustrate, act as obstacle; to keep back; to delay or impede; to prevent."], "infringe": ["To commit a crime less serious than a felony."], "inhabit": ["To have permanent residence."], "marry off": ["To force someone to get married, usually a relative."], "offend": ["To hurt the feelings of; to displease; to make angry; to insult."], "pass by": ["To travel past without stopping."], "brother of a man": ["The brother of a man."], "brother of a woman": ["The brother of a woman."], "sister of a man": ["The sister of a man."], "sister of a woman": ["The sister of a woman."], "agricultural farm": ["A farm where agricultural tasks are performed."], "result in": ["Having a specific result, a logical consequence."], "rebel": ["To resist or become defiant toward an authority."], "strew": ["To distribute objects or pieces of something over an area, especially in a random manner."], "scatter": ["To distribute objects or pieces of something over an area, especially in a random manner."], "sway": ["To move or swing from side to side; or backward and forward; to rock."], "tread": ["To step or walk (on or over something); to trample."], "tremble": ["To shake nervously, as if from fear."], "hog": ["A common, four-legged animal (Sus scrofa) that has cloven hooves, bristles and a nose adapted for digging and is farmed by humans for its meat."], "circuit breaker": ["Device designed to protect an electrical circuit by interrupting automatically the current flow in case of overload, and which can then be reset without changing any part of it."], "Southern Quechua": ["The most widely spoken of the major regional groupings of mutually intelligible dialects within the Quechua language family."], "safety pin": ["A pin having a closing mechanism including a spring and a guard to cover the sharp end."], "baby pin": ["A pin having a closing mechanism including a spring and a guard to cover the sharp end."], "college student": ["A student of a higher education institution."], "university student": ["A student of a higher education institution."], "pinus sibirica": ["Species of pine tree in the family Pinaceae that occurs in Siberia and Mongolia, whose 5-13 cm long leaves ('needles') are in fascicles (bundles) of five, with a deciduous sheath and 3 resin canals."], "Siberian pine": ["Species of pine tree in the family Pinaceae that occurs in Siberia and Mongolia, whose 5-13 cm long leaves ('needles') are in fascicles (bundles) of five, with a deciduous sheath and 3 resin canals."], "have lunch": ["To eat lunch."], "floppy": ["lacking the expected or needed stiffness, unleasantly soft."], "slack": ["lacking the expected or needed stiffness, unleasantly soft."], "sloppy": ["Lacking seriousness or earnestness; not in a serious mood."], "wishi-washi": ["Expressed in an unclear fashion."], "turn around": ["To turn and face the other direction."], "bogeyman": ["Common allusion to a mythical creature in many cultures used by adults or older children to frighten bad children into good behavior."], "selfish": ["Pertaining to or of the nature of egoism."], "Talossan": ["A constructed language created by Robert Ben Madison in 1980 for the micronation he founded, the Kingdom of Talossa."], "biomembrane": ["A thin tissue that encloses or lines biological cells, organs, or other structures."], "biological membrane": ["A thin tissue that encloses or lines biological cells, organs, or other structures."], "self-sufficiency": ["The state of not requiring any aid, support, or interaction, for survival."], "underevaluation": ["Estimation of the value of something or someone inferior to its real value."], "underestimation": ["Estimation of the value of something or someone inferior to its real value."], "opisthenar": ["The back of the hand."], "prosody": ["The study of the rhythmic structure of a verse or lines in verse.", "The study of the rhythm, stress, and intonation of speech.", "The manner of associating syllables of a text to be sung to notes of a melody."], "Kumhar Bhag Paharia": ["A Dravidian language spoken by the Komhar Bhag Paharia tribe in Rajmahal Hills, India."], "psychoneurotic": ["Relating to a psychoneurosis.", "A person suffering from a psychoneurosis."], "psychoneurosis": ["A mental disorder that has symptoms of both neurosis and psychosis."], "levant": ["To abscond or run away, especially to avoid paying money or debts."], "couldn't-care-less attitude": ["The attitude of someone who is ostentatiously not interested in anything or anyone, doing things according to its own interests."], "noctambule": ["A person who likes to stay up until late at night."], "acid-free paper": ["A paper that if infused in water yields a neutral or basic pH (7 or slightly greater)."], "decontaminant": ["Of or relating to decontamination."], "woven": ["Fabricated by weaving."], "wheaten": ["Of, pertaining to, or made from wheat."], "waste-ridden": ["Dominated or plagued by waste."], "war-ridden": ["Dominated or plagued by war."], "violence-ridden": ["Dominated or plagued by violence."], "unwritten": ["Not written."], "typewritten": ["Written using a typewriter."], "spoken": ["Relating to speech."], "abiogenetically": ["To have created life without life."], "rasp": ["A long metal tool covered with sharp teeth used for shaping wood or other material.", "To use a rasp."], "abstractly": ["In an abstract state or manner."], "cyclically": ["Happening or occurring in cycles."], "acyclically": ["In an acyclic manner; without cycles."], "acyclic": ["Not cyclic."], "ad hoc": ["For a particular purpose."], "spare tire": ["An extra car wheel and tire for a four-wheel vehicle."], "spare wheel": ["An extra car wheel and tire for a four-wheel vehicle."], "spare tyre": ["An extra car wheel and tire for a four-wheel vehicle."], "prefabricated": ["Manufactured in advance, usually to a standard format, and then assembled on site."], "ISO 9000": ["A family of quality management systems standards designed to help organizations ensure that they meet the needs of customers and other stakeholders while meeting statutory and regulatory requirements related to a product."], "Barquisimeto": ["The fourth-largest city in Venezuela and the capital of the state of Lara."], "Maracay": ["A city in north-central Venezuela, near the Caribbean coast, and is the capital and most important city of the state of Aragua."], "Ciudad Guayana": ["A city in Bol\u00edvar State, Venezuela which lies south of the Orinoco, where the river is joined by the Caron\u00ed River."], "San Cristobal": ["The capital city of the Venezuelan state of T\u00e1chira. It is located in a mountainous region of Western Venezuela."], "Barranquilla": ["A city and municipality located in northern Colombia, located near the Caribbean Sea."], "Arequipa": ["The capital and largest city of the Arequipa Region and the second most populous city of Per\u00fa."], "Trujillo": ["A city in coastal northwestern Peru, located on the banks of the Moche River, near its mouth at the Pacific Ocean.", "A municipality located in the province of C\u00e1ceres, in the autonomous community of Extremadura, Spain.", "The capital city of Trujillo State in Venezuela."], "Cusco": ["A city in southeastern Peru, near the Urubamba Valley of the Andes mountain range."], "Callao": ["The chief seaport of Peru, located west of Lima."], "Cochabamba": ["A city in central Bolivia, located in a valley bearing the same name in the Andes mountain range."], "Goi\u00e2nia": ["The capital and largest city of the Brazilian state of Goi\u00e1s."], "Campinas": ["A Brazilian municipality in S\u00e3o Paulo State, part of the country's Southeast Region."], "Fortaleza": ["The state capital of Cear\u00e1, located in Northeastern Brazil."], "Florian\u00f3polis": ["The capital city and second largest city of Santa Catarina state in the Southern region of Brazil."], "Rosario": ["The largest city in the province of Santa Fe, in central Argentina."], "Mendoza": ["The capital city of Mendoza Province, in Argentina, located in a region of foothills and high plains, on the eastern side of the Andes."], "Bariloche": ["A city in the province of R\u00edo Negro, Argentina, situated in the foothills of the Andes on the southern shores of Nahuel Huapi Lake."], "temporality": ["The condition of being temporal."], "papyrus sedge": ["A species of aquatic flowering plant belonging to the sedge family Cyperaceae."], "paper reed": ["A species of aquatic flowering plant belonging to the sedge family Cyperaceae."], "Indian matting plant": ["A species of aquatic flowering plant belonging to the sedge family Cyperaceae."], "Nile grass": ["A species of aquatic flowering plant belonging to the sedge family Cyperaceae."], "softly softly": ["In a very tactful, careful, or nondisruptive manner."], "abductive reasoning": ["A form of logical inference that predicts a probable cause to a given observation."], "abductive inference": ["A form of logical inference that predicts a probable cause to a given observation."], "retroduction": ["A form of logical inference that predicts a probable cause to a given observation."], "Salzburgian": ["Relating to the Austrian state of Salzburg.", "A person from Salzburg."], "cymotrichous": ["Having wavy hair."], "access point": ["A device, such as a WLAN or Internet modem, that permits wireless devices to connect to a network."], "wireless access point": ["A device, such as a WLAN or Internet modem, that permits wireless devices to connect to a network."], "dynamic DNS": ["A system by which Internet Service Providers temporarily assign IP addresses allowing the reassignment of the address when no longer in use."], "IP address": ["A numerical label assigned to each device (e.g., computer, printer) participating in a computer network that uses the Internet Protocol for communication."], "electrolyte": ["A substance that, in solution or when molten, ionizes and conducts electricity."], "helical": ["In the shape of a helix."], "hydrometer": ["Instrument that floats in a liquid and measures its specific gravity on a scale."], "intranet": ["A private computer network that uses the protocols of the Internet."], "jumper": ["A short length of cable used to make an electrical connection or to bypass a circuit."], "MAC address": ["A unique identifying number assigned to most network devices."], "Media Access Control address": ["A unique identifying number assigned to most network devices."], "nickel\u2013cadmium battery": ["A type of rechargeable battery using nickel oxide hydroxide and metallic cadmium as electrodes."], "Ni-Cd battery": ["A type of rechargeable battery using nickel oxide hydroxide and metallic cadmium as electrodes."], "oscillograph": ["An instrument for measuring alternating or varying electric current in terms of current and voltage."], "overload": ["An excessive load."], "photovoltaic": ["Producing a voltage when exposed to light."], "photovoltaic cell": ["A device that absorbs radiant energy and converts it into electrical energy."], "refractor telescope": ["A type of optical telescope that uses a lens as its objective to form an image (also referred to a dioptric telescope)."], "autosome": ["A chromosome not involved in sex determination."], "bacterial artificial chromosome": ["A DNA construct, based on a functional fertility plasmid (or F-plasmid), used for transforming and cloning in bacteria, usually E. coli."], "plasmid": ["A small DNA molecule within a cell that is physically separated from a chromosomal DNA and can replicate independently."], "nucleobase": ["The base of a nucleic acid, such as thymine, uracil, adenine, cytosine and guanine."], "base pair": ["The building blocks of the DNA double helix and contribute to the folded structure of both DNA and RNA."], "base sequence": ["The order of nucleotide bases in a DNA molecule; determines structure of proteins encoded by that DNA."], "chromosomal deletion": ["A mutation in which a part of a chromosome or a sequence of DNA is missing."], "deletion": ["A mutation in which a part of a chromosome or a sequence of DNA is missing."], "deletion mutation": ["A mutation in which a part of a chromosome or a sequence of DNA is missing."], "gene deletion": ["A mutation in which a part of a chromosome or a sequence of DNA is missing."], "chromosomal inversion": ["A chromosome rearrangement in which a segment of a chromosome is reversed end to end."], "comparative genomics": ["A field of biological research in which the genomic features of different organisms are compared."], "genomics": ["A discipline in genetics that applies recombinant DNA, DNA sequencing methods, and bioinformatics to sequence, assemble, and analyze the function and structure of genomes (the complete set of DNA within a single cell of an organism)."], "cytogenetics": ["A branch of genetics that is concerned with the study of the structure and function of the cell, especially the chromosomes."], "DNA replication": ["The process of producing two identical replicas from one original DNA molecule."], "DNA repair": ["A collection of processes by which a cell identifies and corrects damage to the DNA molecules that encode its genome."], "DNA sequence": ["A succession of letters that indicate the order of nucleotides within a DNA (using GACT) or RNA (using GACU) molecule."], "electrophoresis": ["The motion of dispersed particles relative to a fluid under the influence of a spatially uniform electric field."], "functional genomics": ["A field of molecular biology that attempts to make use of the vast wealth of data produced by genomic projects (such as genome sequencing projects) to describe gene (and protein) functions and interactions."], "retroviral": ["Of or pertaining to a retrovirus."], "retroviral infection": ["The presence of retroviral vectors, such as some viruses, which use their recombinant DNA to insert their genetic material into the chromosomes of the host's cells."], "acceptance criteria": ["The criteria that the software component, product, or system must satisfy in order to be accepted by the customer."], "batch processing": ["The execution of a series of programs (\"jobs\") on a computer without manual intervention."], "business rule": ["A rule that defines or constrains some aspect of business and is intended to assert business structure or to control or influence the behavior of the business."], "code review": ["A systematic examination of computer source code."], "configuration management": ["A systems engineering process for establishing and maintaining consistency of a product's performance, functional and physical attributes with its requirements, design and operational information throughout its life cycle."], "entity\u2013relationship model": ["A data model for describing the data or information aspects of a business domain or its process requirements, in an abstract way that lends itself to ultimately being implemented in a database such as a relational database."], "lifecycle": ["The phases, changes, or stages through which an organism passes throughout its lifetime.", "The useful life of a product or system; the developmental history of an individual or group in society."], "object code": ["A sequence of statements or instructions in a computer language, usually a machine code language (i.e., binary) or an intermediate language, produced by a compiler."], "prototyping": ["The rapid creation of prototypes of a new product for demonstration and research purposes."], "pseudocode": ["A description of a computer programming algorithm that uses the structural conventions of programming languages but omits detailed subroutines or language-specific syntax."], "referential": ["Serving as a reference."], "reusability": ["The property or degree of being reusable."], "self-join": ["An operation that combines records from the same table in a relational database."], "timestamp": ["The date and time at which an event occurred, often included in a log to track the sequence of events."], "accredited": ["Given official approval after meeting certain standards."], "accredited translator": ["A translator who has received accreditation from a professional institute."], "certify": ["To attest to as the truth or meeting a standard."], "certified translation": ["A translation that has been reviewed by a translator and considered an accurate and correct reflection of the source text."], "computer-aided design": ["Software with the capability of performing standard engineering drawings.", "The process of using drawings made by using a computer to design machines, buildings, etc."], "computer-aided": ["Using a computer as an indispensable tool in a certain field, usually derived from more traditional fields of science and engineering."], "computer-assisted": ["Using a computer as an indispensable tool in a certain field, usually derived from more traditional fields of science and engineering."], "management system": ["Using a computer as an indispensable tool in a certain field, usually derived from more traditional fields of science and engineering."], "computer-aided translation": ["Translation with the aid of computer programs, designed to reduce the translator\u2019s workload and increase consistency of style and terminology."], "computer-assisted translation": ["Translation with the aid of computer programs, designed to reduce the translator\u2019s workload and increase consistency of style and terminology."], "machine-aided translation": ["Translation with the aid of computer programs, designed to reduce the translator\u2019s workload and increase consistency of style and terminology."], "conference interpreter": ["A specialist in communication between people and cultures whose role is to convey the content of a spoken message from one language into another."], "freelance translator": ["A self-employed translator, who may undertake work for translation agencies, localisation companies and/or directly for end clients."], "literal translation": ["A translation that closely adheres to the wording and construction of the source text."], "mother-tongue": ["The language one first learned; the language one grew up with; one's native language."], "whispered interpreting": ["A simultaneous interpreting, whereby the interpreter sits close to the listener and whispers the translation without technical aids."], "simultaneous interpreting": ["A type of oral translation from one language into another which is produced at the same time as a person is speaking."], "simultaneous interpretation": ["A type of oral translation from one language into another which is produced at the same time as a person is speaking."], "base anhydride": ["A type of oxide that can form a base if water is added."], "binary compound": ["A compound that consists of specifically two elements."], "absorber": ["A material that readily absorbs photons to generate charge carriers (free electrons)."], "absorption coefficient": ["The factor by which photons are absorbed as they travel a unit distance through a material."], "attenuation coefficient": ["A characterization of how easily a volume or material can be penetrated by a beam of light, sound, particles, or other energy or matter."], "active solar heater": ["A solar water or space-heating system that moves heated air or water using pumps or fans."], "ampacity": ["The current-carrying capacity of conductors or equipment, expressed in amperes."], "amorphous semiconductor": ["A non-crystalline semiconductor material that has no long-range order."], "amorphous silicon": ["A non-crystalline semiconductor material that has no long-range order."], "flowerpot": ["Container in which flowers and other plants are cultivated and displayed."], "antireflection coating": ["A thin coating of a material, which reduces the light reflection and increases light transmission, applied to a photovoltaic cell surface."], "antireflection": ["Preventing visible reflection."], "armored cable": ["A cable provided with a wrapping of metal, usually steel wires or tapes, primarily for the purpose of mechanical protection."], "electric arc": ["An electrical breakdown of a gas that produces an ongoing plasma discharge, resulting from a current through normally nonconductive media such as air."], "breakdown voltage": ["(of an insulator) The minimum voltage that causes a portion of an insulator to become electrically conductive."], "electrical breakdown": ["A rapid reduction in the resistance of an electrical insulator when the voltage applied across it exceeds the breakdown voltage."], "dielectric breakdown": ["A rapid reduction in the resistance of an electrical insulator when the voltage applied across it exceeds the breakdown voltage."], "arc-over voltage": ["The minimum voltage required to cause an arc between electrodes separated by a gas or liquid insulation."], "base load": ["That part of electricity demand which is continuous, and does not vary over a 24-hour period. Approximately equivalent to the minimum daily load."], "critical mass": ["The smallest amount of fissile material needed for a sustained nuclear chain reaction."], "electric power industry": ["The generation, transmission, distribution and sale of electric power to the general public."], "dielectric": ["An electrical insulator that can be polarized by an applied electric field."], "dielectric material": ["An electrical insulator that can be polarized by an applied electric field."], "electric field": ["A component of the electromagnetic field."], "electromagnetic field": ["A physical field produced by electrically charged objects."], "dustproof": ["Resistant to dust."], "failproof": ["Resistant to failure."], "fail-safe": ["That doesn't cause undue damage, in the event of failure.", "Equipped with a secondary system that insures continued operation even if the primary system fails."], "failsafe": ["That doesn't cause undue damage, in the event of failure.", "Equipped with a secondary system that insures continued operation even if the primary system fails."], "electrical grid": ["An integrated system of electricity distribution, usually covering a large area."], "electric line truck": ["A truck used to transport personnel, tools, and material for electric supply line work."], "truck-mounted crane": ["A truck with a chassis built-in crane, used to load and unload goods in the truck itself, or to move the goods within the range of the crane."], "crawler crane": ["A crane mounted on an undercarriage with a set of Caterpillar tracks that provide stability and mobility."], "tower crane": ["A type of balance crane made of a detachable metal structure, powered by electricity, specially designed to work as a tool in building."], "bridge crane": ["A type of crane where the hook-and-line mechanism runs along a horizontal beam that itself runs along two widely separated rails."], "overhead crane": ["A type of crane where the hook-and-line mechanism runs along a horizontal beam that itself runs along two widely separated rails."], "citric": ["Of, pertaining to, or derived from lemon."], "absorbability": ["The state or quality of being absorbable."], "impracticable": ["Incapable of being put into practice or accomplished; not feasible."], "deskfast": ["A breakfast eaten at work, particularly while sitting at a desk."], "personal": ["Of or pertaining to a particular person.", "(grammar) Denoting a person."], "put to the proof": ["to check a property or quality of"], "per": ["For each."], "piezoelectricity": ["The electric charge that accumulates in certain solid materials in response to applied mechanical stress."], "piezoelectric": ["Of or relating to piezoelectricity."], "piezoelectric effect": ["The ability of certain materials to generate an electric charge in response to applied mechanical stress."], "gravitational": ["Pertaining to, or caused by, gravity or gravitation."], "ferroelectric": ["Of, or relating to the permanent electrical polarization of a crystalline dielectric in an electric field."], "ferroelectricity": ["A property of certain materials that have a spontaneous electric polarization that can be reversed by the application of an external electric field."], "luminescence": ["Any emission of light that cannot be attributed merely to the temperature of the emitting body."], "incandescence": ["A physical phenomenon manifested by a light emission due to the temperature of a heated body."], "piezoluminescence": ["A form of luminescence created by pressure upon certain solids."], "fluorescence": ["The emission of light by a substance that has absorbed light or other electromagnetic radiation."], "frictional": ["Relating to, or caused by, friction."], "frictional unemployment": ["(economics) A type of unemployment explained by people being temporarily between jobs, searching for new ones."], "structural unemployment": ["A form of unemployment where, at a given wage, the quantity of labor supplied exceeds the quantity of labor demanded."], "fuel injection": ["A system for admitting fuel into an internal combustion engine."], "exhaust system": ["System consisting of the parts of an engine through which burned gases or steam are discharged."], "catalytic": ["(chemistry) Having properties facilitating chemical reaction or change."], "transgender": ["Having a gender which is the different from one's natal sex."], "eurozone": ["A monetary union of 19 European Union (EU) member states that have adopted the euro (\u20ac) as their common currency and sole legal tender."], "euro area": ["A monetary union of 19 European Union (EU) member states that have adopted the euro (\u20ac) as their common currency and sole legal tender."], "poo-bus": ["A bus powered bybiomethane natural gas made from animal waste."], "toroidal": ["Having the shape of a torus or toroid."], "scientific theory": ["A well-substantiated explanation of some aspect of the natural world that is acquired through the scientific method and repeatedly tested and confirmed through observation and experimentation."], "scientific method": ["A body of techniques for investigating phenomena, acquiring new knowledge, or correcting and integrating previous knowledge."], "pseudoscience": ["A claim, belief or practice which is incorrectly presented as scientific, but does not adhere to a valid scientific method, cannot be reliably tested, or otherwise lacks scientific status."], "Palmyra": ["(historical) an ancient Aramaic oasis-city in Syria, on the site of present-day Tadmor."], "Crimean Federal District": ["One of the nine federal districts of Russia, established on March 21, 2014 after the annexation of Crimea by the Russian Federation."], "streaming media": ["Multimedia that is constantly received by and presented to an end-user while being delivered by a provider."], "acetic acid": ["An acid with the chemical formula CH3COOH found typically in vinegar."], "ethanoic acid": ["An acid with the chemical formula CH3COOH found typically in vinegar."], "Atrato": ["A river of northwestern Colombia which rises in the slopes of the Western Cordillera and flows almost due north to the Gulf of Urab\u00e1 (or Gulf of Dari\u00e9n), where it forms a large, swampy delta."], "oil well": ["A boring in the Earth that is designed to bring petroleum oil hydrocarbons to the surface."], "flammability": ["The ability of a substance to burn or ignite, causing fire or combustion."], "flash point": ["The lowest temperature at which a volatile material can vaporize to form an ignitable mixture in air."], "fire point": ["The temperature at which the vapour produced by a fuel will continue to burn for at least 5 seconds after ignition by an open flame."], "kindling point": ["The lowest temperature at which a substance will spontaneously ignite in a normal atmosphere without the need of an external source of ignition, such as a flame or spark."], "autoignition temperature": ["The lowest temperature at which a substance will spontaneously ignite in a normal atmosphere without the need of an external source of ignition, such as a flame or spark."], "autoignition": ["Spontaneous ignition."], "gas field": ["A field containing natural gas but no oil."], "natural gas field": ["A field containing natural gas but no oil."], "gas injection": ["The process whereby separated associated gas is pumped back into a reservoir for conservation purposes or to maintain the reservoir pressure."], "liquefied natural gas": ["Oilfield or naturally occurring gas, chiefly methane, liquefied for transportation."], "life-lie": ["An untrue belief that someone clings to in order to make life bearable."], "grand delusion": ["An untrue belief that someone clings to in order to make life bearable."], "hydration": ["(biology) The process of providing an adequate amount of water to body tissues."], "rehydration": ["The replenishment of water and electrolytes lost through dehydration."], "rehydrate": ["To restore water that has been removed or lost; to moisten something that has dried."], "hydrate": ["To take up, consume or become linked to water.", "A solid compound containing or linked to water molecules."], "Natasha": ["Female Russian first name."], "echo chamber": ["A hollow enclosure used to produce reverberated sounds, usually for recording purposes.", "A situation in which information, ideas, or beliefs are amplified or reinforced by transmission and repetition inside an \"enclosed\" system, where different or competing views are censored, disallowed or otherwise underrepresented."], "anechoic chamber": ["A room designed to completely absorb reflections of either sound or electromagnetic waves."], "filter bubble": ["A personalized search in which a website algorithm selectively guesses what information a user would like to see based on information about the user (such as location, past click behavior and search history) and, as a result, users become separated from information that disagrees with their viewpoints, effectively isolating them in their own cultural or ideological bubbles."], "disinformation": ["Intentionally false or inaccurate information that is spread deliberately."], "Cunibert": ["Male first name."], "non-insurable": ["Not capable of being insured."], "per stirpes": ["By representation or class."], "per capita": ["By total number of individuals."], "protective cover": ["Object that holds something to protect it."], "offshore": ["Located in the sea away from the coast."], "Phinehas": ["Character of the Old Testament, ancient Hebrew priest (son of Eleazar, himself son of Aaron) known for having killed together an Israelite man and a Midianite woman in order to combat idolatry spreading among Israelites committing sexual immorality with foreign women."], "Phineas": ["Character of the Old Testament, ancient Hebrew priest (son of Eleazar, himself son of Aaron) known for having killed together an Israelite man and a Midianite woman in order to combat idolatry spreading among Israelites committing sexual immorality with foreign women."], "Phinees": ["Character of the Old Testament, ancient Hebrew priest (son of Eleazar, himself son of Aaron) known for having killed together an Israelite man and a Midianite woman in order to combat idolatry spreading among Israelites committing sexual immorality with foreign women."], "everyone is different": ["Proverb telling that people tend to be unique individuals having their own quirks each, little or profound."], "silver lining": ["A good aspect of a mostly bad event."], "ossuary": ["A small container that holds the bones of a deceased person.", "A place for holding the bones of the dead."], "barge": ["A large flat-bottomed towed or self-propelled boat used mainly for river and canal transport of heavy goods or bulk cargo."], "wanderlust": ["A strong desire to travel around the world."], "hash": ["The result of a computation during which from a large set of data a small figure or few characters are determined that change, when the data changes."], "parry": ["To impede the movement of (an opponent or a ball)."], "open source software": ["Software that everyone is free to copy, redistribute and modify."], "palagonite": ["An alteration product from the interaction of water with volcanic glass of chemical composition similar to basalt."], "dutch door": ["A door having two separate blades or parts, located above and below one another, the upper of which usually can be opened and closed independently from the other which most often can be moved only together with the upper part."], "tensor muscle": ["A muscle that stretches a body part, or renders it tense."], "holoalphabetic sentence": ["A sentence which contains every letter of the alphabet only once.", "A sentence which contains every letter of the alphabet at least once."], "plant science": ["A branch of the biological sciences which embraces the study of plants and plant life."], "plant sciences": ["A branch of the biological sciences which embraces the study of plants and plant life."], "drink coaster": ["A flat object on which beverages are put to protect the surface of a table."], "beverage coaster": ["A flat object on which beverages are put to protect the surface of a table."], "beermat": ["A flat object on which beverages are put to protect the surface of a table."], "email boilerplate": ["The always identical final part of an e-mail."], "staff duty soldier in the orderly room": ["A soldier working in an orderly room."], "locked": ["Of a door, etc., that has been locked (usually with a key)."], "West Arawe": ["An Austronesian dialect chain of West New Britain, Papua New Guinea."], "arawe occidental": ["An Austronesian dialect chain of West New Britain, Papua New Guinea."], "fronton": ["The terminal part of the facade of a building - especially the classical temples - usually triangular."], "Gb\u00e0n\u00f9": ["A Gbaya language of the Central African Republic."], "Banu": ["A Gbaya language of the Central African Republic."], "Gbanou": ["A Gbaya language of the Central African Republic."], "Gbanzili": ["A Ubangian language of the Central African Republic and the Democratic Republic of the Congo."], "Dagaga": ["A Papuan language spoken by approximately 30,000 people of Fataluku ethnicity in the eastern areas of East Timor, especially around Lospalos and a dialect of it, Oirata, is spoken in Kisar, Moluccas in Indonesia."], "Dagada": ["A Papuan language spoken by approximately 30,000 people of Fataluku ethnicity in the eastern areas of East Timor, especially around Lospalos and a dialect of it, Oirata, is spoken in Kisar, Moluccas in Indonesia."], "Dagoda'": ["A Papuan language spoken by approximately 30,000 people of Fataluku ethnicity in the eastern areas of East Timor, especially around Lospalos and a dialect of it, Oirata, is spoken in Kisar, Moluccas in Indonesia."], "Yat\u00ea": ["An isolated language of Brazil, and the only indigenous language remaining in the northeastern part of that country."], "find out": ["To discover through asking or exploring."], "switchboard": ["An electrical device consisting of an insulated panel containing switches and dials and meters for controlling other electrical devices."], "caucus": ["A colleection of persons that were assigend a specific task, most often for a predetermined time, or to be completed within a given time frame, that is to find or determine something, make decisions, or steer towards a settlement that other are looking for and/or are going to use."], "board,": ["A colleection of persons that were assigend a specific task, most often for a predetermined time, or to be completed within a given time frame, that is to find or determine something, make decisions, or steer towards a settlement that other are looking for and/or are going to use."], "Comission": ["A colleection of persons that were assigend a specific task, most often for a predetermined time, or to be completed within a given time frame, that is to find or determine something, make decisions, or steer towards a settlement that other are looking for and/or are going to use."], "inlay": ["Something filling up a gap or covering up a (small) distance."], "panelling": ["Something put around something else, usually in order to give it another look or to protect it from its environment."], "casing": ["Something put around something else, usually in order to give it another look or to protect it from its environment."], "facing": ["Something put around something else, usually in order to give it another look or to protect it from its environment."], "lining": ["Something put around something else, usually in order to give it another look or to protect it from its environment."], "assumption of Mary": ["Catholic holiday on August 15, remembering the day when the Virgin Mary, Christ's mother, went to Heaven."], "auscultation": ["Listening to the heart and lungs using a stethoscope."]} diff --git a/date-timeserver.py b/date-timeserver.py index c0d114c02f4..5cacec71d1c 100644 --- a/date-timeserver.py +++ b/date-timeserver.py @@ -5,7 +5,6 @@ soc.bind((socket.gethostname(), 2905)) soc.listen(5) while True: - clientsocket, addr = soc.accept() print("estavlishes a connection from %s" % str(addr)) diff --git a/days_from_date.py b/days_from_date.py index 3a166679607..61f09cc81fe 100644 --- a/days_from_date.py +++ b/days_from_date.py @@ -15,9 +15,9 @@ def process_date(user_input): def find_day(date): - born = datetime.datetime.strptime( - date, "%d %m %Y" - ).weekday() # this statement returns an integer corresponding to the day of the week + born = ( + datetime.datetime.strptime(date, "%d %m %Y").weekday() + ) # this statement returns an integer corresponding to the day of the week return calendar.day_name[ born ] # this statement returns the corresponding day name to the integer generated in the previous statement diff --git a/decimal to binary.py b/decimal to binary.py index 566f83be43c..03619b074c2 100644 --- a/decimal to binary.py +++ b/decimal to binary.py @@ -3,7 +3,7 @@ def decimalToBinary(num): to binary and prints it""" if num > 1: decimalToBinary(num // 2) - print(num % 2, end='') + print(num % 2, end="") # decimal number diff --git a/dialogs/messagebox.py b/dialogs/messagebox.py index 14a88dc185d..2a57cb7d1b4 100644 --- a/dialogs/messagebox.py +++ b/dialogs/messagebox.py @@ -2,6 +2,4 @@ from quo.dialog import MessageBox -MessageBox( - title='Example dialog window', - text='Do you want to continue?') +MessageBox(title="Example dialog window", text="Do you want to continue?") diff --git a/diction.py b/diction.py index 8fc071cb6b8..e4757e3db0e 100644 --- a/diction.py +++ b/diction.py @@ -28,7 +28,7 @@ def takeCommand(): query = r.recognize_google(audio, language="en-in") print(f"User said: {query}\n") - except Exception as e: + except Exception: # print(e) print("Say that again please...") diff --git a/different model output b/different model output deleted file mode 100644 index c45cf1dff2e..00000000000 --- a/different model output +++ /dev/null @@ -1,13 +0,0 @@ -Model Output - -Decision tree : - Mean: 4.207225187158817 - Standard deviation: 0.8745567547159991 - -linear Regression : - Mean: 5.030437102767307 - Standard deviation: 1.0607661158294834 - -Random forest regressor: - Mean: 3.3009631251857217 - Standard deviation: 0.7076841067486248 \ No newline at end of file diff --git a/digital_clock.py b/digital_clock.py index f461878917b..98b7e6fc00e 100644 --- a/digital_clock.py +++ b/digital_clock.py @@ -20,6 +20,7 @@ # master + # This function is used to # display time on the label def def_time(): @@ -50,7 +51,6 @@ def def_time(): # function to declare the tkniter clock def dig_clock(): - text_input = time.strftime("%H : %M : %S") # get the current local time from the PC label.config(text=text_input) diff --git a/divisors_of_a_number.py b/divisors_of_a_number.py index 326378b177f..55ffd18a753 100644 --- a/divisors_of_a_number.py +++ b/divisors_of_a_number.py @@ -1,20 +1,20 @@ a = 0 -while a<= 0 : +while a <= 0: number_to_divide = input("choose the number to divide -->") - try : + try: a = int(number_to_divide) - except ValueError : + except ValueError: a = 0 - if a <= 0 : - print('choose a number grether than 0') + if a <= 0: + print("choose a number grether than 0") list_number_divided = [] -for number in range(1,a + 1) : +for number in range(1, a + 1): b = a % number - if b == 0 : + if b == 0: list_number_divided.append(number) -print('\nthe number ' + number_to_divide + ' can be divided by:') -for item in list_number_divided : - print(f'{item}') -if len(list_number_divided) <= 2 : - print(number_to_divide + ' is a prime number') \ No newline at end of file +print("\nthe number " + number_to_divide + " can be divided by:") +for item in list_number_divided: + print(f"{item}") +if len(list_number_divided) <= 2: + print(number_to_divide + " is a prime number") diff --git a/encryptsys.py b/encryptsys.py index 45daea14fd6..646288ca874 100644 --- a/encryptsys.py +++ b/encryptsys.py @@ -37,7 +37,6 @@ def decrypt(): def encrypt(): - texto = input("Input the text to encrypt : ") abecedario = string.printable + "áéíóúÁÉÍÚÓàèìòùÀÈÌÒÙäëïöüÄËÏÖÜñÑ´" abecedario2 = [] @@ -71,7 +70,7 @@ def encrypt(): fintext = str(nummoves) + "." + fintext - print("\Encrypted text : " + fintext) + print(r"\Encrypted text : " + fintext) sel = input("What would you want to do?\n\n[1] Encrypt\n[2] Decrypt\n\n> ").lower() diff --git a/equations.py b/equations.py index 1fc4b9159d7..464f1d58b67 100644 --- a/equations.py +++ b/equations.py @@ -25,7 +25,7 @@ b = int(input("What is value of b?")) c = int(input("What is value of c?")) - D = b ** 2 - 4 * a * c + D = b**2 - 4 * a * c if D < 0: print("No real values of x satisfies your equation.") diff --git a/fF b/fF new file mode 100644 index 00000000000..2edac5d9f5d --- /dev/null +++ b/fF @@ -0,0 +1,43 @@ +# Script Name : folder_size.py +# Author : Craig Richards (Simplified by Assistant) +# Created : 19th July 2012 +# Last Modified : 19th December 2024 +# Version : 2.0.0 + +# Description : Scans a directory and subdirectories to display the total size. + +import os +import sys + +def get_folder_size(directory): + """Calculate the total size of a directory and its subdirectories.""" + total_size = 0 + for root, _, files in os.walk(directory): + for file in files: + total_size += os.path.getsize(os.path.join(root, file)) + return total_size + +def format_size(size): + """Format the size into human-readable units.""" + units = ["Bytes", "KB", "MB", "GB", "TB"] + for unit in units: + if size < 1024 or unit == units[-1]: + return f"{size:.2f} {unit}" + size /= 1024 + +def main(): + if len(sys.argv) < 2: + print("Usage: python folder_size.py ") + sys.exit(1) + + directory = sys.argv[1] + + if not os.path.exists(directory): + print(f"Error: The directory '{directory}' does not exist.") + sys.exit(1) + + folder_size = get_folder_size(directory) + print(f"Folder Size: {format_size(folder_size)}") + +if __name__ == "__main__": + main() diff --git a/facebook id hack.py b/facebook id hack.py index a7faa2bb225..d386662f312 100644 --- a/facebook id hack.py +++ b/facebook id hack.py @@ -2,9 +2,6 @@ # Email-kingslayer8509@gmail.com # you need to create a file password.txt which contains all possible passwords import requests -import threading -import urllib.request -import os from bs4 import BeautifulSoup import sys diff --git a/fastapi.py b/fastapi.py index 37aa3aa3ce0..8689d7c5b65 100644 --- a/fastapi.py +++ b/fastapi.py @@ -7,6 +7,7 @@ # temp database fakedb = [] + # course model to store courses class Course(BaseModel): id: int diff --git a/fibonici series.py b/fibonici series.py index 17e24228f94..85483ee8ab7 100644 --- a/fibonici series.py +++ b/fibonici series.py @@ -6,16 +6,16 @@ # check if the number of terms is valid if nterms <= 0: - print("Please enter a positive integer") + print("Please enter a positive integer") elif nterms == 1: - print("Fibonacci sequence upto",nterms,":") - print(n1) + print("Fibonacci sequence upto", nterms, ":") + print(n1) else: - print("Fibonacci sequence:") - while count < nterms: - print(n1) - nth = n1 + n2 - # update values - n1 = n2 - n2 = nth - count += 1 + print("Fibonacci sequence:") + while count < nterms: + print(n1) + nth = n1 + n2 + # update values + n1 = n2 + n2 = nth + count += 1 diff --git a/file_ext_changer.py b/file_ext_changer.py index 4d80261b052..407e46f991c 100644 --- a/file_ext_changer.py +++ b/file_ext_changer.py @@ -1,4 +1,5 @@ -'''' Multiple extension changer''' +"""' Multiple extension changer""" + import time from pathlib import Path as p import random as rand @@ -8,7 +9,7 @@ def chxten_(files, xten): chfile = [] for file in files: - ch_file = file.split('.') + ch_file = file.split(".") ch_file = ch_file[0] chfile.append(ch_file) if len(xten) == len(chfile): @@ -22,7 +23,7 @@ def chxten_(files, xten): ch_xten = chfile[i] + xten[i] chxten.append(ch_xten) for i in range(1, (len(chfile) + 1) - len(xten)): - ch_xten = chfile[- + i] + xten[-1] + ch_xten = chfile[-+i] + xten[-1] chxten.append(ch_xten) elif len(xten) == 1: chxten = [] @@ -40,61 +41,64 @@ def chxten_(files, xten): ch_xten = chfile[i] + xten[i] chxten.append(ch_xten) else: - return 'an error occured' + return "an error occured" return chxten # End of function definitions # Beggining of execution of code -#password -password = input('Enter password:') +# password +password = input("Enter password:") password = password.encode() password = hashlib.sha512(password).hexdigest() -if password == 'c99d3d8f321ff63c2f4aaec6f96f8df740efa2dc5f98fccdbbb503627fd69a9084073574ee4df2b888f9fe2ed90e29002c318be476bb62dabf8386a607db06c4': +if ( + password + == "c99d3d8f321ff63c2f4aaec6f96f8df740efa2dc5f98fccdbbb503627fd69a9084073574ee4df2b888f9fe2ed90e29002c318be476bb62dabf8386a607db06c4" +): pass else: - print('wrong password!') + print("wrong password!") time.sleep(0.3) exit(404) -files = input('Enter file names and thier extensions (seperated by commas):') -xten = input('Enter Xtensions to change with (seperated by commas):') +files = input("Enter file names and thier extensions (seperated by commas):") +xten = input("Enter Xtensions to change with (seperated by commas):") -if files == '*': +if files == "*": pw = p.cwd() - files = '' + files = "" for i in pw.iterdir(): if not p.is_dir(i): i = str(i) - if not i.endswith('.py'): + if not i.endswith(".py"): # if not i.endswith('exe'): - if not i.endswith('.log'): - files = files + i + ',' -if files == 'r': + if not i.endswith(".log"): + files = files + i + "," +if files == "r": pw = p.cwd() - files = '' + files = "" filer = [] for i in pw.iterdir(): if p.is_file(i): i = str(i) - if not i.endswith('.py'): - if not i.endswith('.exe'): - if not i.endswith('.log'): + if not i.endswith(".py"): + if not i.endswith(".exe"): + if not i.endswith(".log"): filer.append(i) for i in range(5): - pos = rand.randint(0,len(filer)) - files = files + filer[pos] + ',' + pos = rand.randint(0, len(filer)) + files = files + filer[pos] + "," print(files) -files = files.split(',') -xten = xten.split(',') +files = files.split(",") +xten = xten.split(",") # Validation for file in files: check = p(file).exists() if check == False: - print(f'{file} is not found. Paste this file in the directory of {file}') + print(f"{file} is not found. Paste this file in the directory of {file}") files.remove(file) # Ended validation @@ -102,8 +106,8 @@ def chxten_(files, xten): chxten = chxten_(files, xten) # Error Handlings -if chxten == 'an error occured': - print('Check your inputs correctly') +if chxten == "an error occured": + print("Check your inputs correctly") time.sleep(1) exit(404) else: @@ -111,7 +115,7 @@ def chxten_(files, xten): for i in range(len(files)): f = p(files[i]) f.rename(chxten[i]) - print('All files has been changed') + print("All files has been changed") except PermissionError: pass except FileNotFoundError: @@ -119,7 +123,9 @@ def chxten_(files, xten): for file in files: check = p(file).exists() if check == False: - print(f'{file} is not found. Paste this file in the directory of {file}') + print( + f"{file} is not found. Paste this file in the directory of {file}" + ) files.remove(file) # except Exception: # print('An Error Has Occured in exception') diff --git a/file_handle/File handle binary/.env b/file_handle/File handle binary/.env new file mode 100644 index 00000000000..ab3d7291cb4 --- /dev/null +++ b/file_handle/File handle binary/.env @@ -0,0 +1 @@ +STUDENTS_RECORD_FILE= "student_records.pkl" \ No newline at end of file diff --git a/file_handle/File handle binary/Update a binary file2.py b/file_handle/File handle binary/Update a binary file2.py new file mode 100644 index 00000000000..37b5a24e459 --- /dev/null +++ b/file_handle/File handle binary/Update a binary file2.py @@ -0,0 +1,40 @@ +# updating records in a binary file + +import pickle +import os + +base = os.path.dirname(__file__) +from dotenv import load_dotenv + +load_dotenv(os.path.join(base, ".env")) +student_record = os.getenv("STUDENTS_RECORD_FILE") + +## ! Understand how pandas works internally + + +def update(): + with open(student_record, "rb") as File: + value = pickle.load(File) + found = False + roll = int(input("Enter the roll number of the record")) + + for i in value: + if roll == i[0]: + print(f"current name {i[1]}") + print(f"current marks {i[2]}") + i[1] = input("Enter the new name") + i[2] = int(input("Enter the new marks")) + found = True + + if not found: + print("Record not found") + + with open(student_record, "wb") as File: + pickle.dump(value, File) + + +update() + +# ! Instead of AB use WB? +# ! It may have memory limits while updating large files but it would be good +# ! Few lakhs records would be fine and wouldn't create any much of a significant issues diff --git a/file_handle/File handle binary/delete.py b/file_handle/File handle binary/delete.py new file mode 100644 index 00000000000..c2175469522 --- /dev/null +++ b/file_handle/File handle binary/delete.py @@ -0,0 +1,44 @@ +import logging +import os +import pickle + +from dotenv import load_dotenv + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) + +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") +student_record = os.getenv("STUDENTS_RECORD_FILE") + + +def b_read(): + # Opening a file & loading it + if not os.path.exists(student_record): + logging.warning("File not found") + return + + with open(student_record, "rb") as F: + student = pickle.load(F) + logging.info("File opened successfully") + logging.info("Records in the file are:") + for i in student: + logging.info(i) + + +def b_modify(): + # Deleting the Roll no. entered by user + if not os.path.exists(student_record): + logging.warning("File not found") + return + roll_no = int(input("Enter the Roll No. to be deleted: ")) + student = 0 + with open(student_record, "rb") as F: + student = pickle.load(F) + + with open(student_record, "wb") as F: + rec = [i for i in student if i[0] != roll_no] + pickle.dump(rec, F) + + +b_read() +b_modify() diff --git a/file_handle/File handle binary/question 1 (elegible for remedial, top marks).py b/file_handle/File handle binary/question 1 (elegible for remedial, top marks).py new file mode 100644 index 00000000000..27a29f887dc --- /dev/null +++ b/file_handle/File handle binary/question 1 (elegible for remedial, top marks).py @@ -0,0 +1,66 @@ +"""Amit is a monitor of class XII-A and he stored the record of all +the students of his class in a file named “student_records.pkl”. +Structure of record is [roll number, name, percentage]. His computer +teacher has assigned the following duty to Amit + +Write a function remcount( ) to count the number of students who need + remedial class (student who scored less than 40 percent) +and find the top students of the class. + +We have to find weak students and bright students. +""" + +## Find bright students and weak students + +from dotenv import load_dotenv +import os + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) +student_record = os.getenv("STUDENTS_RECORD_FILE") + +import pickle +import logging + +# Define logger with info +# import polar + + +## ! Unoptimised rehne de abhi ke liye + + +def remcount(): + with open(student_record, "rb") as F: + val = pickle.load(F) + count = 0 + weak_students = [] + + for student in val: + if student[2] <= 40: + print(f"{student} eligible for remedial") + weak_students.append(student) + count += 1 + print(f"the total number of weak students are {count}") + print(f"The weak students are {weak_students}") + + # ! highest marks is the key here first marks + + +def firstmark(): + with open(student_record, "rb") as F: + val = pickle.load(F) + count = 0 + main = [i[2] for i in val] + + top = max(main) + print(top, "is the first mark") + + for i in val: + if top == i[2]: + print(f"{i}\ncongrats") + count += 1 + print("The total number of students who secured top marks are", count) + + +remcount() +firstmark() diff --git a/file_handle/File handle binary/read.py b/file_handle/File handle binary/read.py new file mode 100644 index 00000000000..9c69281b4bf --- /dev/null +++ b/file_handle/File handle binary/read.py @@ -0,0 +1,22 @@ +import pickle + + +def binary_read(): + with open("studrec.dat", "rb") as b: + stud = pickle.load(b) + print(stud) + + # prints the whole record in nested list format + print("contents of binary file") + + for ch in stud: + print(ch) # prints one of the chosen rec in list + + rno = ch[0] + rname = ch[1] # due to unpacking the val not printed in list format + rmark = ch[2] + + print(rno, rname, rmark, end="\t") + + +binary_read() diff --git a/file_handle/File handle binary/search record in binary file.py b/file_handle/File handle binary/search record in binary file.py new file mode 100644 index 00000000000..a3b89e69c87 --- /dev/null +++ b/file_handle/File handle binary/search record in binary file.py @@ -0,0 +1,22 @@ +# binary file to search a given record + +import pickle +from dotenv import load_dotenv + + +def search(): + with open("student_records.pkl", "rb") as F: + # your file path will be different + search = True + rno = int(input("Enter the roll number of the student")) + + for i in pickle.load(F): + if i[0] == rno: + print(f"Record found successfully\n{i}") + search = False + + if search: + print("Sorry! record not found") + + +search() diff --git a/1 File handle/File handle binary/Update a binary file.py b/file_handle/File handle binary/update2.py similarity index 64% rename from 1 File handle/File handle binary/Update a binary file.py rename to file_handle/File handle binary/update2.py index b72154345ae..ecb55168906 100644 --- a/1 File handle/File handle binary/Update a binary file.py +++ b/file_handle/File handle binary/update2.py @@ -1,30 +1,30 @@ -# Updating records in a binary file - -import pickle - - -def update(): - with open("class.dat", "rb+") as F: - S = pickle.load(F) - found = False - rno = int(input("enter the roll number you want to update")) - - for i in S: - if rno == i[0]: - print(f"the currrent name is {i[1]}") - i[1] = input("enter the new name") - found = True - break - - if found: - print("Record not found") - - else: - F.seek(0) - pickle.dump(S, F) - - -update() - -with open("class.dat", "rb") as F: - print(pickle.load(F)) +import pickle +import os +from dotenv import load_dotenv + +base = os.path.dirname(__file__) +load_dotenv(os.path.join(base, ".env")) +student_record = os.getenv("STUDENTS_RECORD_FILE") + + +def update(): + with open(student_record, "rb") as F: + S = pickle.load(F) + found = False + rno = int(input("enter the roll number you want to update")) + + for i in S: + if rno == i[0]: + print(f"the currrent name is {i[1]}") + i[1] = input("enter the new name") + found = True + break + + if found: + print("Record not found") + + with open(student_record, "wb") as F: + pickle.dump(S, F) + + +update() diff --git a/file_handle/File handle text/counter.py b/file_handle/File handle text/counter.py new file mode 100644 index 00000000000..0cf3d03819a --- /dev/null +++ b/file_handle/File handle text/counter.py @@ -0,0 +1,44 @@ +""" +Class resposible for counting words for different files: +- Reduce redundant code +- Easier code management/debugging +- Code readability +""" + +## ! Is there any other way than doing it linear? + + +## ! What will be test cases of it? +# ! Please do let me know. +## ! Can add is digit, isspace methods too later on. +# ! Based on requirements of it + + + +## ! The questions are nothing but test-cases +## ! Make a test thing and handle it. +# does it count only alphabets or numerics too? +# ? what about other characters? +class Counter: + def __init__(self, text: str) -> None: + self.text = text + # Define the initial count of the lower and upper case. + self.count_lower = 0 + self.count_upper = 0 + self.compute() + + def compute(self) -> None: + for char in self.text: + if char.islower(): + self.count_lower += 1 + elif char.isupper(): + self.count_upper += 1 + + def get_total_lower(self) -> int: + return self.count_lower + + def get_total_upper(self) -> int: + return self.count_upper + + def get_total_chars(self) -> int: + return self.count_lower + self.count_upper diff --git a/file_handle/File handle text/file handle 12 length of line in text file.py b/file_handle/File handle text/file handle 12 length of line in text file.py new file mode 100644 index 00000000000..1280c21b245 --- /dev/null +++ b/file_handle/File handle text/file handle 12 length of line in text file.py @@ -0,0 +1,38 @@ +import os +import time + +file_name = input("Enter the file name to create:- ") + +print(file_name) + + +def write_to_file(file_name): + if os.path.exists(file_name): + print(f"Error: {file_name} already exists.") + return + + with open(file_name, "a") as F: + while True: + text = input("enter any text to add in the file:- ") + F.write(f"{text}\n") + choice = input("Do you want to enter more, y/n").lower() + if choice == "n": + break + + +def longlines(): + with open(file_name, encoding="utf-8") as F: + lines = F.readlines() + lines_less_than_50 = list(filter(lambda line: len(line) < 50, lines)) + + if not lines_less_than_50: + print("There is no line which is less than 50") + else: + for i in lines_less_than_50: + print(i, end="\t") + + +if __name__ == "__main__": + write_to_file(file_name) + time.sleep(1) + longlines() diff --git a/file_handle/File handle text/happy.txt b/file_handle/File handle text/happy.txt new file mode 100644 index 00000000000..ce9edea82d1 --- /dev/null +++ b/file_handle/File handle text/happy.txt @@ -0,0 +1,11 @@ +hello how are you +what is your name +do not worry everything is alright +everything will be alright +please don't lose hope +Wonders are on the way +Take a walk in the park +At the end of the day you are more important than anything else. +Many moments of happiness are waiting +You are amazing! +If you truly believe. \ No newline at end of file diff --git a/file_handle/File handle text/input,output and error streams.py b/file_handle/File handle text/input,output and error streams.py new file mode 100644 index 00000000000..a83319f8b5a --- /dev/null +++ b/file_handle/File handle text/input,output and error streams.py @@ -0,0 +1,16 @@ +# practicing with streams +import sys + +sys.stdout.write("Enter the name of the file") +file = sys.stdin.readline() + +with open( + file.strip(), +) as F: + while True: + ch = F.readlines() + for i in ch: # ch is the whole file,for i in ch gives lines, for j in i gives letters,for j in i.split gives words + print(i, end="") + else: + sys.stderr.write("End of file reached") + break diff --git a/file_handle/File handle text/question 2.py b/file_handle/File handle text/question 2.py new file mode 100644 index 00000000000..58a69f0b27d --- /dev/null +++ b/file_handle/File handle text/question 2.py @@ -0,0 +1,32 @@ +"""Write a method/function DISPLAYWORDS() in python to read lines + from a text file STORY.TXT, + using read function +and display those words, which are less than 4 characters.""" + +print("Hey!! You can print the word which are less then 4 characters") + + +def display_words(file_path): + try: + with open(file_path) as F: + words = F.read().split() + words_less_than_40 = list(filter(lambda word: len(word) < 4, words)) + + for word in words_less_than_40: + print(word) + + return ( + "The total number of the word's count which has less than 4 characters", + (len(words_less_than_40)), + ) + + except FileNotFoundError: + print("File not found") + + +print("Just need to pass the path of your file..") + +file_path = input("Please, Enter file path: ") + +if __name__ == "__main__": + print(display_words(file_path)) diff --git a/file_handle/File handle text/question 5.py b/file_handle/File handle text/question 5.py new file mode 100644 index 00000000000..1c3ec52935e --- /dev/null +++ b/file_handle/File handle text/question 5.py @@ -0,0 +1,40 @@ +"""Write a function in python to count the number of lowercase +alphabets present in a text file “happy.txt""" + +import time +import os +from counter import Counter + +print( + "You will see the count of lowercase, uppercase and total count of alphabets in provided file.." +) + + +file_path = input("Please, Enter file path: ") + +if os.path.exists(file_path): + print("The file exists and this is the path:\n", file_path) + + +def lowercase(file_path): + try: + with open(file_path) as F: + word_counter = Counter(F.read()) + + print( + f"The total number of lower case letters are {word_counter.get_total_lower()}" + ) + time.sleep(0.5) + print( + f"The total number of upper case letters are {word_counter.get_total_upper()}" + ) + time.sleep(0.5) + print(f"The total number of letters are {word_counter.get_total()}") + time.sleep(0.5) + + except FileNotFoundError: + print("File is not exist.. Please check AGAIN") + + +if __name__ == "__main__": + lowercase(file_path) diff --git a/file_handle/File handle text/question 6.py b/file_handle/File handle text/question 6.py new file mode 100644 index 00000000000..e8fde939b4c --- /dev/null +++ b/file_handle/File handle text/question 6.py @@ -0,0 +1,21 @@ +"""Write a function in python to count the number of lowercase +alphabets present in a text file “happy.txt”""" + +from counter import Counter + + +def lowercase(): + with open("happy.txt") as F: + word_counter = Counter(F.read()) + + print( + f"The total number of lower case letters are {word_counter.get_total_lower()}" + ) + print( + f"The total number of upper case letters are {word_counter.get_total_upper()}" + ) + print(f"The total number of letters are {word_counter.get_total()}") + + +if __name__ == "__main__": + lowercase() diff --git a/file_handle/File handle text/question3.py b/file_handle/File handle text/question3.py new file mode 100644 index 00000000000..7a771e8994d --- /dev/null +++ b/file_handle/File handle text/question3.py @@ -0,0 +1,47 @@ +"""Write a user-defined function named count() that will read +the contents of text file named “happy.txt” and count +the number of lines which starts with either “I‟ or “M‟.""" + +import os +import time + +file_name = input("Enter the file name to create:- ") + +# step1: +print(file_name) + + +def write_to_file(file_name): + if os.path.exists(file_name): + print(f"Error: {file_name} already exists.") + + else: + with open(file_name, "a") as F: + while True: + text = input("enter any text") + F.write(f"{text}\n") + + if input("do you want to enter more, y/n").lower() == "n": + break + + +# step2: +def check_first_letter(): + with open(file_name) as F: + lines = F.read().split() + + # store all starting letters from each line in one string after converting to lower case + first_letters = "".join([line[0].lower() for line in lines]) + + count_i = first_letters.count("i") + count_m = first_letters.count("m") + + print( + f"The total number of sentences starting with I or M are {count_i + count_m}" + ) + + +if __name__ == "__main__": + write_to_file(file_name) + time.sleep(1) + check_first_letter() diff --git a/file_handle/File handle text/special symbol after word.py b/file_handle/File handle text/special symbol after word.py new file mode 100644 index 00000000000..6e44cc99321 --- /dev/null +++ b/file_handle/File handle text/special symbol after word.py @@ -0,0 +1,11 @@ +with open("happy.txt", "r") as F: + # method 1 + for i in F.read().split(): + print(i, "*", end="") + print("\n") + + # method 2 + F.seek(0) + for line in F.readlines(): + for word in line.split(): + print(word, "*", end="") diff --git a/file_handle/File handle text/story.txt b/file_handle/File handle text/story.txt new file mode 100644 index 00000000000..c9f59eb01c6 --- /dev/null +++ b/file_handle/File handle text/story.txt @@ -0,0 +1,5 @@ +once upon a time there was a king. +he was powerful and happy. +he +all the flowers in his garden were beautiful. +he lived happily ever after. \ No newline at end of file diff --git a/find_cube_root.py b/find_cube_root.py index cf315708a25..9e0a9c192d4 100644 --- a/find_cube_root.py +++ b/find_cube_root.py @@ -7,9 +7,9 @@ def cubeRoot(): x = int(input("Enter an integer: ")) for ans in range(0, abs(x) + 1): - if ans ** 3 == abs(x): + if ans**3 == abs(x): break - if ans ** 3 != abs(x): + if ans**3 != abs(x): print(x, "is not a perfect cube!") else: if x < 0: @@ -19,12 +19,12 @@ def cubeRoot(): cubeRoot() -cont = str(input("Would you like to continue: ")) -while cont == "yes": +cont = input("Would you like to continue: ") +while cont == "yes" or "y": cubeRoot() - cont = str(input("Would you like to continue: ")) - if cont == "no": + cont = input("Would you like to continue: ") + if cont == "no" or "n": exit() else: print("Enter a correct answer(yes or no)") - cont = str(input("Would you like to continue: ")) + cont = input("Would you like to continue: ") diff --git a/find_prime.py b/find_prime.py index d6d5a515bd2..2fd050abeda 100644 --- a/find_prime.py +++ b/find_prime.py @@ -9,21 +9,22 @@ -Sieve of Eratosthenes(source:wikipedia.com) In mathematics, the sieve of Eratosthenes is a simple, ancient algorithm for finding all prime numbers up to any given limit. - It does so by iteratively marking as composite (i.e., not prime) the multiples of each prime, starting with the first prime - number, 2. The multiples of a given prime are generated as a sequence of numbers starting from that prime, with constant - difference between them that is equal to that prime. This is the sieve's key distinction from using trial division to + It does so by iteratively marking as composite (i.e., not prime) the multiples of each prime, starting with the first prime + number, 2. The multiples of a given prime are generated as a sequence of numbers starting from that prime, with constant + difference between them that is equal to that prime. This is the sieve's key distinction from using trial division to sequentially test each candidate number for divisibility by each prime. To find all the prime numbers less than or equal to a given integer n by Eratosthenes' method: - Create a list of consecutive integers from 2 through n: (2, 3, 4, ..., n). - Initially, let p equal 2, the smallest prime number. - - Enumerate the multiples of p by counting to n from 2p in increments of p, and mark them in the list (these will be 2p, + - Enumerate the multiples of p by counting to n from 2p in increments of p, and mark them in the list (these will be 2p, 3p, 4p, ...; the p itself should not be marked). - - Find the first number greater than p in the list that is not marked. If there was no such number, stop. Otherwise, let + - Find the first number greater than p in the list that is not marked. If there was no such number, stop. Otherwise, let p now equal this new number (which is the next prime), and repeat from step 3. - When the algorithm terminates, the numbers remaining not marked in the list are all the primes below n. """ + import sys diff --git a/finding LCM.py b/finding LCM.py index e95feb45b47..dfd1b57e81e 100644 --- a/finding LCM.py +++ b/finding LCM.py @@ -1,21 +1,21 @@ - # Python Program to find the L.C.M. of two input number + def compute_lcm(x, y): + # choose the greater number + if x > y: + greater = x + else: + greater = y - # choose the greater number - if x > y: - greater = x - else: - greater = y + while True: + if (greater % x == 0) and (greater % y == 0): + lcm = greater + break + greater += 1 - while(True): - if((greater % x == 0) and (greater % y == 0)): - lcm = greater - break - greater += 1 + return lcm - return lcm num1 = 54 num2 = 24 diff --git a/flappyBird_pygame/flappy_bird.py b/flappyBird_pygame/flappy_bird.py index 34b3206b7e2..cc573b778fe 100644 --- a/flappyBird_pygame/flappy_bird.py +++ b/flappyBird_pygame/flappy_bird.py @@ -6,7 +6,6 @@ @author: Mehul """ - import math import os from collections import deque @@ -22,7 +21,6 @@ class Bird(pygame.sprite.Sprite): - WIDTH = 32 # bird image width HEIGHT = 32 # bird image height DOWN_SPEED = 0.18 # pix per ms -y @@ -30,7 +28,6 @@ class Bird(pygame.sprite.Sprite): UP_DURATION = 150 # time for which bird go up def __init__(self, x, y, ms_to_up, images): - super(Bird, self).__init__() self.x, self.y = x, y self.ms_to_up = ms_to_up @@ -39,7 +36,6 @@ def __init__(self, x, y, ms_to_up, images): self._mask_wingdown = pygame.mask.from_surface(self._img_wingdown) def update(self, delta_frames=1): - if self.ms_to_up > 0: frac_climb_done = 1 - self.ms_to_up / Bird.UP_DURATION self.y -= ( @@ -74,13 +70,11 @@ def rect(self): class PipePair(pygame.sprite.Sprite): - WIDTH = 80 # width of pipe PIECE_HEIGHT = 32 ADD_INTERVAL = 3000 def __init__(self, pipe_end_img, pipe_body_img): - self.x = float(W_WIDTH - 1) self.score_counted = False @@ -126,7 +120,6 @@ def top_height_px(self): @property def bottom_height_px(self): - return self.bottom_pieces * PipePair.PIECE_HEIGHT @property @@ -140,17 +133,14 @@ def rect(self): return Rect(self.x, 0, PipePair.WIDTH, PipePair.PIECE_HEIGHT) def update(self, delta_frames=1): - self.x -= ANI_SPEED * frames_to_msec(delta_frames) def collides_with(self, bird): - return pygame.sprite.collide_mask(self, bird) def load_images(): def load_image(img_file_name): - file_name = os.path.join(".", "images", img_file_name) img = pygame.image.load(file_name) img.convert() @@ -168,12 +158,10 @@ def load_image(img_file_name): def frames_to_msec(frames, fps=FPS): - return 1000.0 * frames / fps def msec_to_frames(milliseconds, fps=FPS): - return fps * milliseconds / 1000.0 @@ -185,7 +173,6 @@ def gameover(display, score): def main(): - pygame.init() display_surface = pygame.display.set_mode((W_WIDTH, W_HEIGHT)) diff --git a/folder_size.py b/folder_size.py index 7410de8da36..d0ad968e12d 100755 --- a/folder_size.py +++ b/folder_size.py @@ -25,7 +25,7 @@ "Megabytes": float(1) / (1024 * 1024), "Gigabytes": float(1) / (1024 * 1024 * 1024), } -for (path, dirs, files) in os.walk( +for path, dirs, files in os.walk( directory ): # Walk through all the directories. For each iteration, os.walk returns the folders, subfolders and files in the dir. for file in files: # Get all the files diff --git a/four_digit_num_combination.py b/four_digit_num_combination.py index 320544dc451..dce43559fb3 100644 --- a/four_digit_num_combination.py +++ b/four_digit_num_combination.py @@ -1,4 +1,4 @@ -""" small script to learn how to print out all 4-digit num""" +"""small script to learn how to print out all 4-digit num""" # ALL the combinations of 4 digit combo diff --git a/ftp_send_receive.py b/ftp_send_receive.py index 691e0e8e899..6495fe44613 100644 --- a/ftp_send_receive.py +++ b/ftp_send_receive.py @@ -1,11 +1,11 @@ """ - File transfer protocol used to send and receive files using FTP server. - Use credentials to provide access to the FTP client +File transfer protocol used to send and receive files using FTP server. +Use credentials to provide access to the FTP client - Note: Do not use root username & password for security reasons - Create a seperate user and provide access to a home directory of the user - Use login id and password of the user created - cwd here stands for current working directory +Note: Do not use root username & password for security reasons + Create a seperate user and provide access to a home directory of the user + Use login id and password of the user created + cwd here stands for current working directory """ from ftplib import FTP diff --git a/game_of_life/05_mixed_sorting.py b/game_of_life/05_mixed_sorting.py index ef0dced3325..86caf1eaaea 100644 --- a/game_of_life/05_mixed_sorting.py +++ b/game_of_life/05_mixed_sorting.py @@ -15,8 +15,8 @@ [4, 13, 11, 8, -5, 90] Explanation -The even numbers are sorted in increasing order, the odd numbers are sorted in -decreasing number, and the relative positions were +The even numbers are sorted in increasing order, the odd numbers are sorted in +decreasing number, and the relative positions were [even, odd, odd, even, odd, even] and remain the same after sorting. """ diff --git a/game_of_life/game_o_life.py b/game_of_life/game_o_life.py index 7d2ee832dcf..045c3715b51 100644 --- a/game_of_life/game_o_life.py +++ b/game_of_life/game_o_life.py @@ -1,4 +1,4 @@ -"""Conway's Game Of Life, Author Anurag Kumar(mailto:anuragkumarak95@gmail.com) +"""Conway's Game Of Life, Author Anurag Kumar(mailto:anuragkumarak95@gmail.com) Requirements: - numpy @@ -13,7 +13,7 @@ - $python3 game_o_life Game-Of-Life Rules: - + 1. Any live cell with fewer than two live neighbours dies, as if caused by under-population. @@ -26,7 +26,8 @@ 4. Any dead cell with exactly three live neighbours be- comes a live cell, as if by reproduction. - """ +""" + import random import sys diff --git a/gcd.py b/gcd.py index 0f10da082d7..11a5ce189fd 100644 --- a/gcd.py +++ b/gcd.py @@ -2,10 +2,12 @@ although there is function to find gcd in python but this is the code which takes two inputs and prints gcd of the two. """ + a = int(input("Enter number 1 (a): ")) b = int(input("Enter number 2 (b): ")) i = 1 +gcd = -1 while i <= a and i <= b: if a % i == 0 and b % i == 0: gcd = i diff --git a/generate_permutations.py b/generate_permutations.py index 4623e08d2c3..26d473d1d32 100644 --- a/generate_permutations.py +++ b/generate_permutations.py @@ -1,16 +1,17 @@ -def generate(A,k): - if k ==1: +def generate(A, k): + if k == 1: print(A) return else: for i in range(k): - generate(A,k-1) - if(i80): + sentence = sentence + line.text + ratio = fuzz.token_set_ratio(sentence, checkString) + if ratio > 80: singleLink.append(k) singleRatio.append(ratio) - if(len(singleLink)>=4): - singleLink=np.array(singleLink) - singleRatio=np.array(singleRatio) - inds=singleRatio.argsort() - sortedLink=singleLink[inds] - sortedFinalList=list(sortedLink[::-1]) - sortedFinalList=sortedFinalList[:4] - FinalResult.append(singleWrite+sortedFinalList) - elif(len(singleLink)<4) and len(singleLink)>0: + if len(singleLink) >= 4: + singleLink = np.array(singleLink) + singleRatio = np.array(singleRatio) + inds = singleRatio.argsort() + sortedLink = singleLink[inds] + sortedFinalList = list(sortedLink[::-1]) + sortedFinalList = sortedFinalList[:4] + FinalResult.append(singleWrite + sortedFinalList) + elif (len(singleLink) < 4) and len(singleLink) > 0: singleLink = np.array(singleLink) singleRatio = np.array(singleRatio) inds = singleRatio.argsort() sortedLink = singleLink[inds] sortedFinalList = list(sortedLink[::-1]) - sortedFinalList=sortedFinalList+(4-len(sortedFinalList))*[[" "]] + sortedFinalList = sortedFinalList + (4 - len(sortedFinalList)) * [[" "]] FinalResult.append(singleWrite + sortedFinalList) else: - sortedFinalList=[[" "]]*4 - FinalResult.append(singleWrite+sortedFinalList) + sortedFinalList = [[" "]] * 4 + FinalResult.append(singleWrite + sortedFinalList) SearchResults() -FinalResult=np.array(FinalResult) -FinalResult=pd.DataFrame(FinalResult) -FinalResult.columns=["Input","Link A","Link B","Link C","Link D"] -FinalResult.replace(" ",np.nan) -FinalResult.to_csv("Susma.csv",index=False) +FinalResult = np.array(FinalResult) +FinalResult = pd.DataFrame(FinalResult) +FinalResult.columns = ["Input", "Link A", "Link B", "Link C", "Link D"] +FinalResult.replace(" ", np.nan) +FinalResult.to_csv("Susma.csv", index=False) print(FinalResult) diff --git a/greaterno.py b/greaterno.py index a4fb15c1231..d636d48e307 100644 --- a/greaterno.py +++ b/greaterno.py @@ -7,15 +7,15 @@ num3 = 12 # uncomment following lines to take three numbers from user -#num1 = float(input("Enter first number: ")) -#num2 = float(input("Enter second number: ")) -#num3 = float(input("Enter third number: ")) +# num1 = float(input("Enter first number: ")) +# num2 = float(input("Enter second number: ")) +# num3 = float(input("Enter third number: ")) if (num1 >= num2) and (num1 >= num3): - largest = num1 + largest = num1 elif (num2 >= num1) and (num2 >= num3): - largest = num2 + largest = num2 else: - largest = num3 + largest = num3 print("The largest number is", largest) diff --git a/greattwono b/greattwono.py similarity index 71% rename from greattwono rename to greattwono.py index 60cf8dcee2d..6110c0d67de 100644 --- a/greattwono +++ b/greattwono.py @@ -1,7 +1,7 @@ # Python Program to find the largest of two numbers using an arithmetic operator a = int(input("Enter the first number: ")) b = int(input("Enter the second number: ")) -if(a - b > 0): - print(a, "is greater") +if a - b > 0: + print(a, "is greater") else: - print(b, "is greater") + print(b, "is greater") diff --git a/gstin_scraper.py b/gstin_scraper.py index 4f55ca6de30..a043480331e 100644 --- a/gstin_scraper.py +++ b/gstin_scraper.py @@ -17,28 +17,39 @@ """ -# Using a demo list in case of testing the script. +# Using a demo list in case of testing the script. # This list will be used in case user skips "company input" dialogue by pressing enter. -demo_companies = ["Bank of Baroda", "Trident Limited", "Reliance Limited", "The Yummy Treat", "Yes Bank", "Mumbai Mineral Trading Corporation"] +demo_companies = [ + "Bank of Baroda", + "Trident Limited", + "Reliance Limited", + "The Yummy Treat", + "Yes Bank", + "Mumbai Mineral Trading Corporation", +] + def get_company_list(): company_list = [] - + while True: company = input("Enter a company name (or press Enter to finish): ") if not company: break company_list.append(company) - + return company_list + def fetch_gstins(company_name, csrf_token): - third_party_gstin_site = "https://www.knowyourgst.com/gst-number-search/by-name-pan/" - payload = {'gstnum': company_name, 'csrfmiddlewaretoken': csrf_token} + third_party_gstin_site = ( + "https://www.knowyourgst.com/gst-number-search/by-name-pan/" + ) + payload = {"gstnum": company_name, "csrfmiddlewaretoken": csrf_token} # Getting the HTML content and extracting the GSTIN content using BeautifulSoup. html_content = requests.post(third_party_gstin_site, data=payload) - soup = BeautifulSoup(html_content.text, 'html.parser') + soup = BeautifulSoup(html_content.text, "html.parser") site_results = soup.find_all(id="searchresult") # Extracting GSTIN specific values from child elements. @@ -46,23 +57,28 @@ def fetch_gstins(company_name, csrf_token): return gstins + def main(): temp = get_company_list() companies = temp if temp else demo_companies all_gstin_data = "" - third_party_gstin_site = "https://www.knowyourgst.com/gst-number-search/by-name-pan/" + third_party_gstin_site = ( + "https://www.knowyourgst.com/gst-number-search/by-name-pan/" + ) # Getting the CSRF value for further RESTful calls. page_with_csrf = requests.get(third_party_gstin_site) - soup = BeautifulSoup(page_with_csrf.text, 'html.parser') - csrf_token = soup.find('input', {"name": "csrfmiddlewaretoken"})['value'] + soup = BeautifulSoup(page_with_csrf.text, "html.parser") + csrf_token = soup.find("input", {"name": "csrfmiddlewaretoken"})["value"] for company in companies: gstins = fetch_gstins(company, csrf_token) # Only include GSTINs for Bengaluru and Mumbai-based companies - comma_separated_gstins = ', '.join([g for g in gstins if g.startswith(('27', '29'))]) + comma_separated_gstins = ", ".join( + [g for g in gstins if g.startswith(("27", "29"))] + ) all_gstin_data += f"{company} = {comma_separated_gstins}\n\n" @@ -72,5 +88,6 @@ def main(): # Printing the data print(all_gstin_data) + if __name__ == "__main__": main() diff --git a/gui_calculator.py b/gui_calculator.py index 435b38972d1..e0fa630e427 100644 --- a/gui_calculator.py +++ b/gui_calculator.py @@ -6,6 +6,7 @@ w.title("Calculatorax") w.configure(bg="#03befc") + # Functions(Keypad) def calc1(): b = txt1.get() diff --git a/hamming-numbers.py b/hamming-numbers.py new file mode 100644 index 00000000000..c9f81deb7f6 --- /dev/null +++ b/hamming-numbers.py @@ -0,0 +1,51 @@ +""" +A Hamming number is a positive integer of the form 2^i*3^j*5^k, for some +non-negative integers i, j, and k. They are often referred to as regular numbers. +The first 20 Hamming numbers are: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, and 36 +""" + + +def hamming(n_element: int) -> list: + """ + This function creates an ordered list of n length as requested, and afterwards + returns the last value of the list. It must be given a positive integer. + + :param n_element: The number of elements on the list + :return: The nth element of the list + + >>> hamming(5) + [1, 2, 3, 4, 5] + >>> hamming(10) + [1, 2, 3, 4, 5, 6, 8, 9, 10, 12] + >>> hamming(15) + [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24] + """ + n_element = int(n_element) + if n_element < 1: + my_error = ValueError("a should be a positive number") + raise my_error + + hamming_list = [1] + i, j, k = (0, 0, 0) + index = 1 + while index < n_element: + while hamming_list[i] * 2 <= hamming_list[-1]: + i += 1 + while hamming_list[j] * 3 <= hamming_list[-1]: + j += 1 + while hamming_list[k] * 5 <= hamming_list[-1]: + k += 1 + hamming_list.append( + min(hamming_list[i] * 2, hamming_list[j] * 3, hamming_list[k] * 5) + ) + index += 1 + return hamming_list + + +if __name__ == "__main__": + n = input("Enter the last number (nth term) of the Hamming Number Series: ") + print("Formula of Hamming Number Series => 2^i * 3^j * 5^k") + hamming_numbers = hamming(int(n)) + print("-----------------------------------------------------") + print(f"The list with nth numbers is: {hamming_numbers}") + print("-----------------------------------------------------") diff --git a/happy_num.py b/happy_num.py index a9740d0703b..d2d30dde99a 100644 --- a/happy_num.py +++ b/happy_num.py @@ -1,45 +1,43 @@ -#Way2 1: - -#isHappyNumber() will determine whether a number is happy or not -def isHappyNumber(num): - rem = sum = 0; - - #Calculates the sum of squares of digits - while(num > 0): - rem = num%10; - sum = sum + (rem*rem); - num = num//10; - return sum; - -num = 82; -result = num; - -while(result != 1 and result != 4): - result = isHappyNumber(result); - -#Happy number always ends with 1 -if(result == 1): - print(str(num) + " is a happy number after apply way 1"); -#Unhappy number ends in a cycle of repeating numbers which contain 4 -elif(result == 4): - print(str(num) + " is not a happy number after apply way 1"); - - - - - -#way 2: - -#Another way to do this and code is also less -n=num -setData=set() #set datastructure for checking a number is repeated or not. +# Way2 1: + +# isHappyNumber() will determine whether a number is happy or not +def isHappyNumber(num): + rem = sum = 0 + + # Calculates the sum of squares of digits + while num > 0: + rem = num % 10 + sum = sum + (rem * rem) + num = num // 10 + return sum + + +num = 82 +result = num + +while result != 1 and result != 4: + result = isHappyNumber(result) + +# Happy number always ends with 1 +if result == 1: + print(str(num) + " is a happy number after apply way 1") +# Unhappy number ends in a cycle of repeating numbers which contain 4 +elif result == 4: + print(str(num) + " is not a happy number after apply way 1") + + +# way 2: + +# Another way to do this and code is also less +n = num +setData = set() # set datastructure for checking a number is repeated or not. while 1: - if n==1: - print("{} is a happy number after apply way 2".format(num)) - break - if n in setData: - print("{} is Not a happy number after apply way 2".format(num)) - break - else: - setData.add(n) #adding into set if not inside set - n=int(''.join(str(sum([int(i)**2 for i in str(n)])))) #Pythonic way + if n == 1: + print("{} is a happy number after apply way 2".format(num)) + break + if n in setData: + print("{} is Not a happy number after apply way 2".format(num)) + break + else: + setData.add(n) # adding into set if not inside set + n = int("".join(str(sum([int(i) ** 2 for i in str(n)])))) # Pythonic way diff --git a/housing.data b/housing.data deleted file mode 100644 index f83ac56475f..00000000000 --- a/housing.data +++ /dev/null @@ -1,506 +0,0 @@ - 0.00632 18.00 2.310 0 0.5380 6.5750 65.20 4.0900 1 296.0 15.30 396.90 4.98 24.00 - 0.02731 0.00 7.070 0 0.4690 6.4210 78.90 4.9671 2 242.0 17.80 396.90 9.14 21.60 - 0.02729 0.00 7.070 0 0.4690 7.1850 61.10 4.9671 2 242.0 17.80 392.83 4.03 34.70 - 0.03237 0.00 2.180 0 0.4580 6.9980 45.80 6.0622 3 222.0 18.70 394.63 2.94 33.40 - 0.06905 0.00 2.180 0 0.4580 7.1470 54.20 6.0622 3 222.0 18.70 396.90 5.33 36.20 - 0.02985 0.00 2.180 0 0.4580 6.4300 58.70 6.0622 3 222.0 18.70 394.12 5.21 28.70 - 0.08829 12.50 7.870 0 0.5240 6.0120 66.60 5.5605 5 311.0 15.20 395.60 12.43 22.90 - 0.14455 12.50 7.870 0 0.5240 6.1720 96.10 5.9505 5 311.0 15.20 396.90 19.15 27.10 - 0.21124 12.50 7.870 0 0.5240 5.6310 100.00 6.0821 5 311.0 15.20 386.63 29.93 16.50 - 0.17004 12.50 7.870 0 0.5240 6.0040 85.90 6.5921 5 311.0 15.20 386.71 17.10 18.90 - 0.22489 12.50 7.870 0 0.5240 6.3770 94.30 6.3467 5 311.0 15.20 392.52 20.45 15.00 - 0.11747 12.50 7.870 0 0.5240 6.0090 82.90 6.2267 5 311.0 15.20 396.90 13.27 18.90 - 0.09378 12.50 7.870 0 0.5240 5.8890 39.00 5.4509 5 311.0 15.20 390.50 15.71 21.70 - 0.62976 0.00 8.140 0 0.5380 5.9490 61.80 4.7075 4 307.0 21.00 396.90 8.26 20.40 - 0.63796 0.00 8.140 0 0.5380 6.0960 84.50 4.4619 4 307.0 21.00 380.02 10.26 18.20 - 0.62739 0.00 8.140 0 0.5380 5.8340 56.50 4.4986 4 307.0 21.00 395.62 8.47 19.90 - 1.05393 0.00 8.140 0 0.5380 5.9350 29.30 4.4986 4 307.0 21.00 386.85 6.58 23.10 - 0.78420 0.00 8.140 0 0.5380 5.9900 81.70 4.2579 4 307.0 21.00 386.75 14.67 17.50 - 0.80271 0.00 8.140 0 0.5380 5.4560 36.60 3.7965 4 307.0 21.00 288.99 11.69 20.20 - 0.72580 0.00 8.140 0 0.5380 5.7270 69.50 3.7965 4 307.0 21.00 390.95 11.28 18.20 - 1.25179 0.00 8.140 0 0.5380 5.5700 98.10 3.7979 4 307.0 21.00 376.57 21.02 13.60 - 0.85204 0.00 8.140 0 0.5380 5.9650 89.20 4.0123 4 307.0 21.00 392.53 13.83 19.60 - 1.23247 0.00 8.140 0 0.5380 6.1420 91.70 3.9769 4 307.0 21.00 396.90 18.72 15.20 - 0.98843 0.00 8.140 0 0.5380 5.8130 100.00 4.0952 4 307.0 21.00 394.54 19.88 14.50 - 0.75026 0.00 8.140 0 0.5380 5.9240 94.10 4.3996 4 307.0 21.00 394.33 16.30 15.60 - 0.84054 0.00 8.140 0 0.5380 5.5990 85.70 4.4546 4 307.0 21.00 303.42 16.51 13.90 - 0.67191 0.00 8.140 0 0.5380 5.8130 90.30 4.6820 4 307.0 21.00 376.88 14.81 16.60 - 0.95577 0.00 8.140 0 0.5380 6.0470 88.80 4.4534 4 307.0 21.00 306.38 17.28 14.80 - 0.77299 0.00 8.140 0 0.5380 6.4950 94.40 4.4547 4 307.0 21.00 387.94 12.80 18.40 - 1.00245 0.00 8.140 0 0.5380 6.6740 87.30 4.2390 4 307.0 21.00 380.23 11.98 21.00 - 1.13081 0.00 8.140 0 0.5380 5.7130 94.10 4.2330 4 307.0 21.00 360.17 22.60 12.70 - 1.35472 0.00 8.140 0 0.5380 6.0720 100.00 4.1750 4 307.0 21.00 376.73 13.04 14.50 - 1.38799 0.00 8.140 0 0.5380 5.9500 82.00 3.9900 4 307.0 21.00 232.60 27.71 13.20 - 1.15172 0.00 8.140 0 0.5380 5.7010 95.00 3.7872 4 307.0 21.00 358.77 18.35 13.10 - 1.61282 0.00 8.140 0 0.5380 6.0960 96.90 3.7598 4 307.0 21.00 248.31 20.34 13.50 - 0.06417 0.00 5.960 0 0.4990 5.9330 68.20 3.3603 5 279.0 19.20 396.90 9.68 18.90 - 0.09744 0.00 5.960 0 0.4990 5.8410 61.40 3.3779 5 279.0 19.20 377.56 11.41 20.00 - 0.08014 0.00 5.960 0 0.4990 5.8500 41.50 3.9342 5 279.0 19.20 396.90 8.77 21.00 - 0.17505 0.00 5.960 0 0.4990 5.9660 30.20 3.8473 5 279.0 19.20 393.43 10.13 24.70 - 0.02763 75.00 2.950 0 0.4280 6.5950 21.80 5.4011 3 252.0 18.30 395.63 4.32 30.80 - 0.03359 75.00 2.950 0 0.4280 7.0240 15.80 5.4011 3 252.0 18.30 395.62 1.98 34.90 - 0.12744 0.00 6.910 0 0.4480 6.7700 2.90 5.7209 3 233.0 17.90 385.41 4.84 26.60 - 0.14150 0.00 6.910 0 0.4480 6.1690 6.60 5.7209 3 233.0 17.90 383.37 5.81 25.30 - 0.15936 0.00 6.910 0 0.4480 6.2110 6.50 5.7209 3 233.0 17.90 394.46 7.44 24.70 - 0.12269 0.00 6.910 0 0.4480 6.0690 40.00 5.7209 3 233.0 17.90 389.39 9.55 21.20 - 0.17142 0.00 6.910 0 0.4480 5.6820 33.80 5.1004 3 233.0 17.90 396.90 10.21 19.30 - 0.18836 0.00 6.910 0 0.4480 5.7860 33.30 5.1004 3 233.0 17.90 396.90 14.15 20.00 - 0.22927 0.00 6.910 0 0.4480 6.0300 85.50 5.6894 3 233.0 17.90 392.74 18.80 16.60 - 0.25387 0.00 6.910 0 0.4480 5.3990 95.30 5.8700 3 233.0 17.90 396.90 30.81 14.40 - 0.21977 0.00 6.910 0 0.4480 5.6020 62.00 6.0877 3 233.0 17.90 396.90 16.20 19.40 - 0.08873 21.00 5.640 0 0.4390 5.9630 45.70 6.8147 4 243.0 16.80 395.56 13.45 19.70 - 0.04337 21.00 5.640 0 0.4390 6.1150 63.00 6.8147 4 243.0 16.80 393.97 9.43 20.50 - 0.05360 21.00 5.640 0 0.4390 6.5110 21.10 6.8147 4 243.0 16.80 396.90 5.28 25.00 - 0.04981 21.00 5.640 0 0.4390 5.9980 21.40 6.8147 4 243.0 16.80 396.90 8.43 23.40 - 0.01360 75.00 4.000 0 0.4100 5.8880 47.60 7.3197 3 469.0 21.10 396.90 14.80 18.90 - 0.01311 90.00 1.220 0 0.4030 7.2490 21.90 8.6966 5 226.0 17.90 395.93 4.81 35.40 - 0.02055 85.00 0.740 0 0.4100 6.3830 35.70 9.1876 2 313.0 17.30 396.90 5.77 24.70 - 0.01432 100.00 1.320 0 0.4110 6.8160 40.50 8.3248 5 256.0 15.10 392.90 3.95 31.60 - 0.15445 25.00 5.130 0 0.4530 6.1450 29.20 7.8148 8 284.0 19.70 390.68 6.86 23.30 - 0.10328 25.00 5.130 0 0.4530 5.9270 47.20 6.9320 8 284.0 19.70 396.90 9.22 19.60 - 0.14932 25.00 5.130 0 0.4530 5.7410 66.20 7.2254 8 284.0 19.70 395.11 13.15 18.70 - 0.17171 25.00 5.130 0 0.4530 5.9660 93.40 6.8185 8 284.0 19.70 378.08 14.44 16.00 - 0.11027 25.00 5.130 0 0.4530 6.4560 67.80 7.2255 8 284.0 19.70 396.90 6.73 22.20 - 0.12650 25.00 5.130 0 0.4530 6.7620 43.40 7.9809 8 284.0 19.70 395.58 9.50 25.00 - 0.01951 17.50 1.380 0 0.4161 7.1040 59.50 9.2229 3 216.0 18.60 393.24 8.05 33.00 - 0.03584 80.00 3.370 0 0.3980 6.2900 17.80 6.6115 4 337.0 16.10 396.90 4.67 23.50 - 0.04379 80.00 3.370 0 0.3980 5.7870 31.10 6.6115 4 337.0 16.10 396.90 10.24 19.40 - 0.05789 12.50 6.070 0 0.4090 5.8780 21.40 6.4980 4 345.0 18.90 396.21 8.10 22.00 - 0.13554 12.50 6.070 0 0.4090 5.5940 36.80 6.4980 4 345.0 18.90 396.90 13.09 17.40 - 0.12816 12.50 6.070 0 0.4090 5.8850 33.00 6.4980 4 345.0 18.90 396.90 8.79 20.90 - 0.08826 0.00 10.810 0 0.4130 6.4170 6.60 5.2873 4 305.0 19.20 383.73 6.72 24.20 - 0.15876 0.00 10.810 0 0.4130 5.9610 17.50 5.2873 4 305.0 19.20 376.94 9.88 21.70 - 0.09164 0.00 10.810 0 0.4130 6.0650 7.80 5.2873 4 305.0 19.20 390.91 5.52 22.80 - 0.19539 0.00 10.810 0 0.4130 6.2450 6.20 5.2873 4 305.0 19.20 377.17 7.54 23.40 - 0.07896 0.00 12.830 0 0.4370 6.2730 6.00 4.2515 5 398.0 18.70 394.92 6.78 24.10 - 0.09512 0.00 12.830 0 0.4370 6.2860 45.00 4.5026 5 398.0 18.70 383.23 8.94 21.40 - 0.10153 0.00 12.830 0 0.4370 6.2790 74.50 4.0522 5 398.0 18.70 373.66 11.97 20.00 - 0.08707 0.00 12.830 0 0.4370 6.1400 45.80 4.0905 5 398.0 18.70 386.96 10.27 20.80 - 0.05646 0.00 12.830 0 0.4370 6.2320 53.70 5.0141 5 398.0 18.70 386.40 12.34 21.20 - 0.08387 0.00 12.830 0 0.4370 5.8740 36.60 4.5026 5 398.0 18.70 396.06 9.10 20.30 - 0.04113 25.00 4.860 0 0.4260 6.7270 33.50 5.4007 4 281.0 19.00 396.90 5.29 28.00 - 0.04462 25.00 4.860 0 0.4260 6.6190 70.40 5.4007 4 281.0 19.00 395.63 7.22 23.90 - 0.03659 25.00 4.860 0 0.4260 6.3020 32.20 5.4007 4 281.0 19.00 396.90 6.72 24.80 - 0.03551 25.00 4.860 0 0.4260 6.1670 46.70 5.4007 4 281.0 19.00 390.64 7.51 22.90 - 0.05059 0.00 4.490 0 0.4490 6.3890 48.00 4.7794 3 247.0 18.50 396.90 9.62 23.90 - 0.05735 0.00 4.490 0 0.4490 6.6300 56.10 4.4377 3 247.0 18.50 392.30 6.53 26.60 - 0.05188 0.00 4.490 0 0.4490 6.0150 45.10 4.4272 3 247.0 18.50 395.99 12.86 22.50 - 0.07151 0.00 4.490 0 0.4490 6.1210 56.80 3.7476 3 247.0 18.50 395.15 8.44 22.20 - 0.05660 0.00 3.410 0 0.4890 7.0070 86.30 3.4217 2 270.0 17.80 396.90 5.50 23.60 - 0.05302 0.00 3.410 0 0.4890 7.0790 63.10 3.4145 2 270.0 17.80 396.06 5.70 28.70 - 0.04684 0.00 3.410 0 0.4890 6.4170 66.10 3.0923 2 270.0 17.80 392.18 8.81 22.60 - 0.03932 0.00 3.410 0 0.4890 6.4050 73.90 3.0921 2 270.0 17.80 393.55 8.20 22.00 - 0.04203 28.00 15.040 0 0.4640 6.4420 53.60 3.6659 4 270.0 18.20 395.01 8.16 22.90 - 0.02875 28.00 15.040 0 0.4640 6.2110 28.90 3.6659 4 270.0 18.20 396.33 6.21 25.00 - 0.04294 28.00 15.040 0 0.4640 6.2490 77.30 3.6150 4 270.0 18.20 396.90 10.59 20.60 - 0.12204 0.00 2.890 0 0.4450 6.6250 57.80 3.4952 2 276.0 18.00 357.98 6.65 28.40 - 0.11504 0.00 2.890 0 0.4450 6.1630 69.60 3.4952 2 276.0 18.00 391.83 11.34 21.40 - 0.12083 0.00 2.890 0 0.4450 8.0690 76.00 3.4952 2 276.0 18.00 396.90 4.21 38.70 - 0.08187 0.00 2.890 0 0.4450 7.8200 36.90 3.4952 2 276.0 18.00 393.53 3.57 43.80 - 0.06860 0.00 2.890 0 0.4450 7.4160 62.50 3.4952 2 276.0 18.00 396.90 6.19 33.20 - 0.14866 0.00 8.560 0 0.5200 6.7270 79.90 2.7778 5 384.0 20.90 394.76 9.42 27.50 - 0.11432 0.00 8.560 0 0.5200 6.7810 71.30 2.8561 5 384.0 20.90 395.58 7.67 26.50 - 0.22876 0.00 8.560 0 0.5200 6.4050 85.40 2.7147 5 384.0 20.90 70.80 10.63 18.60 - 0.21161 0.00 8.560 0 0.5200 6.1370 87.40 2.7147 5 384.0 20.90 394.47 13.44 19.30 - 0.13960 0.00 8.560 0 0.5200 6.1670 90.00 2.4210 5 384.0 20.90 392.69 12.33 20.10 - 0.13262 0.00 8.560 0 0.5200 5.8510 96.70 2.1069 5 384.0 20.90 394.05 16.47 19.50 - 0.17120 0.00 8.560 0 0.5200 5.8360 91.90 2.2110 5 384.0 20.90 395.67 18.66 19.50 - 0.13117 0.00 8.560 0 0.5200 6.1270 85.20 2.1224 5 384.0 20.90 387.69 14.09 20.40 - 0.12802 0.00 8.560 0 0.5200 6.4740 97.10 2.4329 5 384.0 20.90 395.24 12.27 19.80 - 0.26363 0.00 8.560 0 0.5200 6.2290 91.20 2.5451 5 384.0 20.90 391.23 15.55 19.40 - 0.10793 0.00 8.560 0 0.5200 6.1950 54.40 2.7778 5 384.0 20.90 393.49 13.00 21.70 - 0.10084 0.00 10.010 0 0.5470 6.7150 81.60 2.6775 6 432.0 17.80 395.59 10.16 22.80 - 0.12329 0.00 10.010 0 0.5470 5.9130 92.90 2.3534 6 432.0 17.80 394.95 16.21 18.80 - 0.22212 0.00 10.010 0 0.5470 6.0920 95.40 2.5480 6 432.0 17.80 396.90 17.09 18.70 - 0.14231 0.00 10.010 0 0.5470 6.2540 84.20 2.2565 6 432.0 17.80 388.74 10.45 18.50 - 0.17134 0.00 10.010 0 0.5470 5.9280 88.20 2.4631 6 432.0 17.80 344.91 15.76 18.30 - 0.13158 0.00 10.010 0 0.5470 6.1760 72.50 2.7301 6 432.0 17.80 393.30 12.04 21.20 - 0.15098 0.00 10.010 0 0.5470 6.0210 82.60 2.7474 6 432.0 17.80 394.51 10.30 19.20 - 0.13058 0.00 10.010 0 0.5470 5.8720 73.10 2.4775 6 432.0 17.80 338.63 15.37 20.40 - 0.14476 0.00 10.010 0 0.5470 5.7310 65.20 2.7592 6 432.0 17.80 391.50 13.61 19.30 - 0.06899 0.00 25.650 0 0.5810 5.8700 69.70 2.2577 2 188.0 19.10 389.15 14.37 22.00 - 0.07165 0.00 25.650 0 0.5810 6.0040 84.10 2.1974 2 188.0 19.10 377.67 14.27 20.30 - 0.09299 0.00 25.650 0 0.5810 5.9610 92.90 2.0869 2 188.0 19.10 378.09 17.93 20.50 - 0.15038 0.00 25.650 0 0.5810 5.8560 97.00 1.9444 2 188.0 19.10 370.31 25.41 17.30 - 0.09849 0.00 25.650 0 0.5810 5.8790 95.80 2.0063 2 188.0 19.10 379.38 17.58 18.80 - 0.16902 0.00 25.650 0 0.5810 5.9860 88.40 1.9929 2 188.0 19.10 385.02 14.81 21.40 - 0.38735 0.00 25.650 0 0.5810 5.6130 95.60 1.7572 2 188.0 19.10 359.29 27.26 15.70 - 0.25915 0.00 21.890 0 0.6240 5.6930 96.00 1.7883 4 437.0 21.20 392.11 17.19 16.20 - 0.32543 0.00 21.890 0 0.6240 6.4310 98.80 1.8125 4 437.0 21.20 396.90 15.39 18.00 - 0.88125 0.00 21.890 0 0.6240 5.6370 94.70 1.9799 4 437.0 21.20 396.90 18.34 14.30 - 0.34006 0.00 21.890 0 0.6240 6.4580 98.90 2.1185 4 437.0 21.20 395.04 12.60 19.20 - 1.19294 0.00 21.890 0 0.6240 6.3260 97.70 2.2710 4 437.0 21.20 396.90 12.26 19.60 - 0.59005 0.00 21.890 0 0.6240 6.3720 97.90 2.3274 4 437.0 21.20 385.76 11.12 23.00 - 0.32982 0.00 21.890 0 0.6240 5.8220 95.40 2.4699 4 437.0 21.20 388.69 15.03 18.40 - 0.97617 0.00 21.890 0 0.6240 5.7570 98.40 2.3460 4 437.0 21.20 262.76 17.31 15.60 - 0.55778 0.00 21.890 0 0.6240 6.3350 98.20 2.1107 4 437.0 21.20 394.67 16.96 18.10 - 0.32264 0.00 21.890 0 0.6240 5.9420 93.50 1.9669 4 437.0 21.20 378.25 16.90 17.40 - 0.35233 0.00 21.890 0 0.6240 6.4540 98.40 1.8498 4 437.0 21.20 394.08 14.59 17.10 - 0.24980 0.00 21.890 0 0.6240 5.8570 98.20 1.6686 4 437.0 21.20 392.04 21.32 13.30 - 0.54452 0.00 21.890 0 0.6240 6.1510 97.90 1.6687 4 437.0 21.20 396.90 18.46 17.80 - 0.29090 0.00 21.890 0 0.6240 6.1740 93.60 1.6119 4 437.0 21.20 388.08 24.16 14.00 - 1.62864 0.00 21.890 0 0.6240 5.0190 100.00 1.4394 4 437.0 21.20 396.90 34.41 14.40 - 3.32105 0.00 19.580 1 0.8710 5.4030 100.00 1.3216 5 403.0 14.70 396.90 26.82 13.40 - 4.09740 0.00 19.580 0 0.8710 5.4680 100.00 1.4118 5 403.0 14.70 396.90 26.42 15.60 - 2.77974 0.00 19.580 0 0.8710 4.9030 97.80 1.3459 5 403.0 14.70 396.90 29.29 11.80 - 2.37934 0.00 19.580 0 0.8710 6.1300 100.00 1.4191 5 403.0 14.70 172.91 27.80 13.80 - 2.15505 0.00 19.580 0 0.8710 5.6280 100.00 1.5166 5 403.0 14.70 169.27 16.65 15.60 - 2.36862 0.00 19.580 0 0.8710 4.9260 95.70 1.4608 5 403.0 14.70 391.71 29.53 14.60 - 2.33099 0.00 19.580 0 0.8710 5.1860 93.80 1.5296 5 403.0 14.70 356.99 28.32 17.80 - 2.73397 0.00 19.580 0 0.8710 5.5970 94.90 1.5257 5 403.0 14.70 351.85 21.45 15.40 - 1.65660 0.00 19.580 0 0.8710 6.1220 97.30 1.6180 5 403.0 14.70 372.80 14.10 21.50 - 1.49632 0.00 19.580 0 0.8710 5.4040 100.00 1.5916 5 403.0 14.70 341.60 13.28 19.60 - 1.12658 0.00 19.580 1 0.8710 5.0120 88.00 1.6102 5 403.0 14.70 343.28 12.12 15.30 - 2.14918 0.00 19.580 0 0.8710 5.7090 98.50 1.6232 5 403.0 14.70 261.95 15.79 19.40 - 1.41385 0.00 19.580 1 0.8710 6.1290 96.00 1.7494 5 403.0 14.70 321.02 15.12 17.00 - 3.53501 0.00 19.580 1 0.8710 6.1520 82.60 1.7455 5 403.0 14.70 88.01 15.02 15.60 - 2.44668 0.00 19.580 0 0.8710 5.2720 94.00 1.7364 5 403.0 14.70 88.63 16.14 13.10 - 1.22358 0.00 19.580 0 0.6050 6.9430 97.40 1.8773 5 403.0 14.70 363.43 4.59 41.30 - 1.34284 0.00 19.580 0 0.6050 6.0660 100.00 1.7573 5 403.0 14.70 353.89 6.43 24.30 - 1.42502 0.00 19.580 0 0.8710 6.5100 100.00 1.7659 5 403.0 14.70 364.31 7.39 23.30 - 1.27346 0.00 19.580 1 0.6050 6.2500 92.60 1.7984 5 403.0 14.70 338.92 5.50 27.00 - 1.46336 0.00 19.580 0 0.6050 7.4890 90.80 1.9709 5 403.0 14.70 374.43 1.73 50.00 - 1.83377 0.00 19.580 1 0.6050 7.8020 98.20 2.0407 5 403.0 14.70 389.61 1.92 50.00 - 1.51902 0.00 19.580 1 0.6050 8.3750 93.90 2.1620 5 403.0 14.70 388.45 3.32 50.00 - 2.24236 0.00 19.580 0 0.6050 5.8540 91.80 2.4220 5 403.0 14.70 395.11 11.64 22.70 - 2.92400 0.00 19.580 0 0.6050 6.1010 93.00 2.2834 5 403.0 14.70 240.16 9.81 25.00 - 2.01019 0.00 19.580 0 0.6050 7.9290 96.20 2.0459 5 403.0 14.70 369.30 3.70 50.00 - 1.80028 0.00 19.580 0 0.6050 5.8770 79.20 2.4259 5 403.0 14.70 227.61 12.14 23.80 - 2.30040 0.00 19.580 0 0.6050 6.3190 96.10 2.1000 5 403.0 14.70 297.09 11.10 23.80 - 2.44953 0.00 19.580 0 0.6050 6.4020 95.20 2.2625 5 403.0 14.70 330.04 11.32 22.30 - 1.20742 0.00 19.580 0 0.6050 5.8750 94.60 2.4259 5 403.0 14.70 292.29 14.43 17.40 - 2.31390 0.00 19.580 0 0.6050 5.8800 97.30 2.3887 5 403.0 14.70 348.13 12.03 19.10 - 0.13914 0.00 4.050 0 0.5100 5.5720 88.50 2.5961 5 296.0 16.60 396.90 14.69 23.10 - 0.09178 0.00 4.050 0 0.5100 6.4160 84.10 2.6463 5 296.0 16.60 395.50 9.04 23.60 - 0.08447 0.00 4.050 0 0.5100 5.8590 68.70 2.7019 5 296.0 16.60 393.23 9.64 22.60 - 0.06664 0.00 4.050 0 0.5100 6.5460 33.10 3.1323 5 296.0 16.60 390.96 5.33 29.40 - 0.07022 0.00 4.050 0 0.5100 6.0200 47.20 3.5549 5 296.0 16.60 393.23 10.11 23.20 - 0.05425 0.00 4.050 0 0.5100 6.3150 73.40 3.3175 5 296.0 16.60 395.60 6.29 24.60 - 0.06642 0.00 4.050 0 0.5100 6.8600 74.40 2.9153 5 296.0 16.60 391.27 6.92 29.90 - 0.05780 0.00 2.460 0 0.4880 6.9800 58.40 2.8290 3 193.0 17.80 396.90 5.04 37.20 - 0.06588 0.00 2.460 0 0.4880 7.7650 83.30 2.7410 3 193.0 17.80 395.56 7.56 39.80 - 0.06888 0.00 2.460 0 0.4880 6.1440 62.20 2.5979 3 193.0 17.80 396.90 9.45 36.20 - 0.09103 0.00 2.460 0 0.4880 7.1550 92.20 2.7006 3 193.0 17.80 394.12 4.82 37.90 - 0.10008 0.00 2.460 0 0.4880 6.5630 95.60 2.8470 3 193.0 17.80 396.90 5.68 32.50 - 0.08308 0.00 2.460 0 0.4880 5.6040 89.80 2.9879 3 193.0 17.80 391.00 13.98 26.40 - 0.06047 0.00 2.460 0 0.4880 6.1530 68.80 3.2797 3 193.0 17.80 387.11 13.15 29.60 - 0.05602 0.00 2.460 0 0.4880 7.8310 53.60 3.1992 3 193.0 17.80 392.63 4.45 50.00 - 0.07875 45.00 3.440 0 0.4370 6.7820 41.10 3.7886 5 398.0 15.20 393.87 6.68 32.00 - 0.12579 45.00 3.440 0 0.4370 6.5560 29.10 4.5667 5 398.0 15.20 382.84 4.56 29.80 - 0.08370 45.00 3.440 0 0.4370 7.1850 38.90 4.5667 5 398.0 15.20 396.90 5.39 34.90 - 0.09068 45.00 3.440 0 0.4370 6.9510 21.50 6.4798 5 398.0 15.20 377.68 5.10 37.00 - 0.06911 45.00 3.440 0 0.4370 6.7390 30.80 6.4798 5 398.0 15.20 389.71 4.69 30.50 - 0.08664 45.00 3.440 0 0.4370 7.1780 26.30 6.4798 5 398.0 15.20 390.49 2.87 36.40 - 0.02187 60.00 2.930 0 0.4010 6.8000 9.90 6.2196 1 265.0 15.60 393.37 5.03 31.10 - 0.01439 60.00 2.930 0 0.4010 6.6040 18.80 6.2196 1 265.0 15.60 376.70 4.38 29.10 - 0.01381 80.00 0.460 0 0.4220 7.8750 32.00 5.6484 4 255.0 14.40 394.23 2.97 50.00 - 0.04011 80.00 1.520 0 0.4040 7.2870 34.10 7.3090 2 329.0 12.60 396.90 4.08 33.30 - 0.04666 80.00 1.520 0 0.4040 7.1070 36.60 7.3090 2 329.0 12.60 354.31 8.61 30.30 - 0.03768 80.00 1.520 0 0.4040 7.2740 38.30 7.3090 2 329.0 12.60 392.20 6.62 34.60 - 0.03150 95.00 1.470 0 0.4030 6.9750 15.30 7.6534 3 402.0 17.00 396.90 4.56 34.90 - 0.01778 95.00 1.470 0 0.4030 7.1350 13.90 7.6534 3 402.0 17.00 384.30 4.45 32.90 - 0.03445 82.50 2.030 0 0.4150 6.1620 38.40 6.2700 2 348.0 14.70 393.77 7.43 24.10 - 0.02177 82.50 2.030 0 0.4150 7.6100 15.70 6.2700 2 348.0 14.70 395.38 3.11 42.30 - 0.03510 95.00 2.680 0 0.4161 7.8530 33.20 5.1180 4 224.0 14.70 392.78 3.81 48.50 - 0.02009 95.00 2.680 0 0.4161 8.0340 31.90 5.1180 4 224.0 14.70 390.55 2.88 50.00 - 0.13642 0.00 10.590 0 0.4890 5.8910 22.30 3.9454 4 277.0 18.60 396.90 10.87 22.60 - 0.22969 0.00 10.590 0 0.4890 6.3260 52.50 4.3549 4 277.0 18.60 394.87 10.97 24.40 - 0.25199 0.00 10.590 0 0.4890 5.7830 72.70 4.3549 4 277.0 18.60 389.43 18.06 22.50 - 0.13587 0.00 10.590 1 0.4890 6.0640 59.10 4.2392 4 277.0 18.60 381.32 14.66 24.40 - 0.43571 0.00 10.590 1 0.4890 5.3440 100.00 3.8750 4 277.0 18.60 396.90 23.09 20.00 - 0.17446 0.00 10.590 1 0.4890 5.9600 92.10 3.8771 4 277.0 18.60 393.25 17.27 21.70 - 0.37578 0.00 10.590 1 0.4890 5.4040 88.60 3.6650 4 277.0 18.60 395.24 23.98 19.30 - 0.21719 0.00 10.590 1 0.4890 5.8070 53.80 3.6526 4 277.0 18.60 390.94 16.03 22.40 - 0.14052 0.00 10.590 0 0.4890 6.3750 32.30 3.9454 4 277.0 18.60 385.81 9.38 28.10 - 0.28955 0.00 10.590 0 0.4890 5.4120 9.80 3.5875 4 277.0 18.60 348.93 29.55 23.70 - 0.19802 0.00 10.590 0 0.4890 6.1820 42.40 3.9454 4 277.0 18.60 393.63 9.47 25.00 - 0.04560 0.00 13.890 1 0.5500 5.8880 56.00 3.1121 5 276.0 16.40 392.80 13.51 23.30 - 0.07013 0.00 13.890 0 0.5500 6.6420 85.10 3.4211 5 276.0 16.40 392.78 9.69 28.70 - 0.11069 0.00 13.890 1 0.5500 5.9510 93.80 2.8893 5 276.0 16.40 396.90 17.92 21.50 - 0.11425 0.00 13.890 1 0.5500 6.3730 92.40 3.3633 5 276.0 16.40 393.74 10.50 23.00 - 0.35809 0.00 6.200 1 0.5070 6.9510 88.50 2.8617 8 307.0 17.40 391.70 9.71 26.70 - 0.40771 0.00 6.200 1 0.5070 6.1640 91.30 3.0480 8 307.0 17.40 395.24 21.46 21.70 - 0.62356 0.00 6.200 1 0.5070 6.8790 77.70 3.2721 8 307.0 17.40 390.39 9.93 27.50 - 0.61470 0.00 6.200 0 0.5070 6.6180 80.80 3.2721 8 307.0 17.40 396.90 7.60 30.10 - 0.31533 0.00 6.200 0 0.5040 8.2660 78.30 2.8944 8 307.0 17.40 385.05 4.14 44.80 - 0.52693 0.00 6.200 0 0.5040 8.7250 83.00 2.8944 8 307.0 17.40 382.00 4.63 50.00 - 0.38214 0.00 6.200 0 0.5040 8.0400 86.50 3.2157 8 307.0 17.40 387.38 3.13 37.60 - 0.41238 0.00 6.200 0 0.5040 7.1630 79.90 3.2157 8 307.0 17.40 372.08 6.36 31.60 - 0.29819 0.00 6.200 0 0.5040 7.6860 17.00 3.3751 8 307.0 17.40 377.51 3.92 46.70 - 0.44178 0.00 6.200 0 0.5040 6.5520 21.40 3.3751 8 307.0 17.40 380.34 3.76 31.50 - 0.53700 0.00 6.200 0 0.5040 5.9810 68.10 3.6715 8 307.0 17.40 378.35 11.65 24.30 - 0.46296 0.00 6.200 0 0.5040 7.4120 76.90 3.6715 8 307.0 17.40 376.14 5.25 31.70 - 0.57529 0.00 6.200 0 0.5070 8.3370 73.30 3.8384 8 307.0 17.40 385.91 2.47 41.70 - 0.33147 0.00 6.200 0 0.5070 8.2470 70.40 3.6519 8 307.0 17.40 378.95 3.95 48.30 - 0.44791 0.00 6.200 1 0.5070 6.7260 66.50 3.6519 8 307.0 17.40 360.20 8.05 29.00 - 0.33045 0.00 6.200 0 0.5070 6.0860 61.50 3.6519 8 307.0 17.40 376.75 10.88 24.00 - 0.52058 0.00 6.200 1 0.5070 6.6310 76.50 4.1480 8 307.0 17.40 388.45 9.54 25.10 - 0.51183 0.00 6.200 0 0.5070 7.3580 71.60 4.1480 8 307.0 17.40 390.07 4.73 31.50 - 0.08244 30.00 4.930 0 0.4280 6.4810 18.50 6.1899 6 300.0 16.60 379.41 6.36 23.70 - 0.09252 30.00 4.930 0 0.4280 6.6060 42.20 6.1899 6 300.0 16.60 383.78 7.37 23.30 - 0.11329 30.00 4.930 0 0.4280 6.8970 54.30 6.3361 6 300.0 16.60 391.25 11.38 22.00 - 0.10612 30.00 4.930 0 0.4280 6.0950 65.10 6.3361 6 300.0 16.60 394.62 12.40 20.10 - 0.10290 30.00 4.930 0 0.4280 6.3580 52.90 7.0355 6 300.0 16.60 372.75 11.22 22.20 - 0.12757 30.00 4.930 0 0.4280 6.3930 7.80 7.0355 6 300.0 16.60 374.71 5.19 23.70 - 0.20608 22.00 5.860 0 0.4310 5.5930 76.50 7.9549 7 330.0 19.10 372.49 12.50 17.60 - 0.19133 22.00 5.860 0 0.4310 5.6050 70.20 7.9549 7 330.0 19.10 389.13 18.46 18.50 - 0.33983 22.00 5.860 0 0.4310 6.1080 34.90 8.0555 7 330.0 19.10 390.18 9.16 24.30 - 0.19657 22.00 5.860 0 0.4310 6.2260 79.20 8.0555 7 330.0 19.10 376.14 10.15 20.50 - 0.16439 22.00 5.860 0 0.4310 6.4330 49.10 7.8265 7 330.0 19.10 374.71 9.52 24.50 - 0.19073 22.00 5.860 0 0.4310 6.7180 17.50 7.8265 7 330.0 19.10 393.74 6.56 26.20 - 0.14030 22.00 5.860 0 0.4310 6.4870 13.00 7.3967 7 330.0 19.10 396.28 5.90 24.40 - 0.21409 22.00 5.860 0 0.4310 6.4380 8.90 7.3967 7 330.0 19.10 377.07 3.59 24.80 - 0.08221 22.00 5.860 0 0.4310 6.9570 6.80 8.9067 7 330.0 19.10 386.09 3.53 29.60 - 0.36894 22.00 5.860 0 0.4310 8.2590 8.40 8.9067 7 330.0 19.10 396.90 3.54 42.80 - 0.04819 80.00 3.640 0 0.3920 6.1080 32.00 9.2203 1 315.0 16.40 392.89 6.57 21.90 - 0.03548 80.00 3.640 0 0.3920 5.8760 19.10 9.2203 1 315.0 16.40 395.18 9.25 20.90 - 0.01538 90.00 3.750 0 0.3940 7.4540 34.20 6.3361 3 244.0 15.90 386.34 3.11 44.00 - 0.61154 20.00 3.970 0 0.6470 8.7040 86.90 1.8010 5 264.0 13.00 389.70 5.12 50.00 - 0.66351 20.00 3.970 0 0.6470 7.3330 100.00 1.8946 5 264.0 13.00 383.29 7.79 36.00 - 0.65665 20.00 3.970 0 0.6470 6.8420 100.00 2.0107 5 264.0 13.00 391.93 6.90 30.10 - 0.54011 20.00 3.970 0 0.6470 7.2030 81.80 2.1121 5 264.0 13.00 392.80 9.59 33.80 - 0.53412 20.00 3.970 0 0.6470 7.5200 89.40 2.1398 5 264.0 13.00 388.37 7.26 43.10 - 0.52014 20.00 3.970 0 0.6470 8.3980 91.50 2.2885 5 264.0 13.00 386.86 5.91 48.80 - 0.82526 20.00 3.970 0 0.6470 7.3270 94.50 2.0788 5 264.0 13.00 393.42 11.25 31.00 - 0.55007 20.00 3.970 0 0.6470 7.2060 91.60 1.9301 5 264.0 13.00 387.89 8.10 36.50 - 0.76162 20.00 3.970 0 0.6470 5.5600 62.80 1.9865 5 264.0 13.00 392.40 10.45 22.80 - 0.78570 20.00 3.970 0 0.6470 7.0140 84.60 2.1329 5 264.0 13.00 384.07 14.79 30.70 - 0.57834 20.00 3.970 0 0.5750 8.2970 67.00 2.4216 5 264.0 13.00 384.54 7.44 50.00 - 0.54050 20.00 3.970 0 0.5750 7.4700 52.60 2.8720 5 264.0 13.00 390.30 3.16 43.50 - 0.09065 20.00 6.960 1 0.4640 5.9200 61.50 3.9175 3 223.0 18.60 391.34 13.65 20.70 - 0.29916 20.00 6.960 0 0.4640 5.8560 42.10 4.4290 3 223.0 18.60 388.65 13.00 21.10 - 0.16211 20.00 6.960 0 0.4640 6.2400 16.30 4.4290 3 223.0 18.60 396.90 6.59 25.20 - 0.11460 20.00 6.960 0 0.4640 6.5380 58.70 3.9175 3 223.0 18.60 394.96 7.73 24.40 - 0.22188 20.00 6.960 1 0.4640 7.6910 51.80 4.3665 3 223.0 18.60 390.77 6.58 35.20 - 0.05644 40.00 6.410 1 0.4470 6.7580 32.90 4.0776 4 254.0 17.60 396.90 3.53 32.40 - 0.09604 40.00 6.410 0 0.4470 6.8540 42.80 4.2673 4 254.0 17.60 396.90 2.98 32.00 - 0.10469 40.00 6.410 1 0.4470 7.2670 49.00 4.7872 4 254.0 17.60 389.25 6.05 33.20 - 0.06127 40.00 6.410 1 0.4470 6.8260 27.60 4.8628 4 254.0 17.60 393.45 4.16 33.10 - 0.07978 40.00 6.410 0 0.4470 6.4820 32.10 4.1403 4 254.0 17.60 396.90 7.19 29.10 - 0.21038 20.00 3.330 0 0.4429 6.8120 32.20 4.1007 5 216.0 14.90 396.90 4.85 35.10 - 0.03578 20.00 3.330 0 0.4429 7.8200 64.50 4.6947 5 216.0 14.90 387.31 3.76 45.40 - 0.03705 20.00 3.330 0 0.4429 6.9680 37.20 5.2447 5 216.0 14.90 392.23 4.59 35.40 - 0.06129 20.00 3.330 1 0.4429 7.6450 49.70 5.2119 5 216.0 14.90 377.07 3.01 46.00 - 0.01501 90.00 1.210 1 0.4010 7.9230 24.80 5.8850 1 198.0 13.60 395.52 3.16 50.00 - 0.00906 90.00 2.970 0 0.4000 7.0880 20.80 7.3073 1 285.0 15.30 394.72 7.85 32.20 - 0.01096 55.00 2.250 0 0.3890 6.4530 31.90 7.3073 1 300.0 15.30 394.72 8.23 22.00 - 0.01965 80.00 1.760 0 0.3850 6.2300 31.50 9.0892 1 241.0 18.20 341.60 12.93 20.10 - 0.03871 52.50 5.320 0 0.4050 6.2090 31.30 7.3172 6 293.0 16.60 396.90 7.14 23.20 - 0.04590 52.50 5.320 0 0.4050 6.3150 45.60 7.3172 6 293.0 16.60 396.90 7.60 22.30 - 0.04297 52.50 5.320 0 0.4050 6.5650 22.90 7.3172 6 293.0 16.60 371.72 9.51 24.80 - 0.03502 80.00 4.950 0 0.4110 6.8610 27.90 5.1167 4 245.0 19.20 396.90 3.33 28.50 - 0.07886 80.00 4.950 0 0.4110 7.1480 27.70 5.1167 4 245.0 19.20 396.90 3.56 37.30 - 0.03615 80.00 4.950 0 0.4110 6.6300 23.40 5.1167 4 245.0 19.20 396.90 4.70 27.90 - 0.08265 0.00 13.920 0 0.4370 6.1270 18.40 5.5027 4 289.0 16.00 396.90 8.58 23.90 - 0.08199 0.00 13.920 0 0.4370 6.0090 42.30 5.5027 4 289.0 16.00 396.90 10.40 21.70 - 0.12932 0.00 13.920 0 0.4370 6.6780 31.10 5.9604 4 289.0 16.00 396.90 6.27 28.60 - 0.05372 0.00 13.920 0 0.4370 6.5490 51.00 5.9604 4 289.0 16.00 392.85 7.39 27.10 - 0.14103 0.00 13.920 0 0.4370 5.7900 58.00 6.3200 4 289.0 16.00 396.90 15.84 20.30 - 0.06466 70.00 2.240 0 0.4000 6.3450 20.10 7.8278 5 358.0 14.80 368.24 4.97 22.50 - 0.05561 70.00 2.240 0 0.4000 7.0410 10.00 7.8278 5 358.0 14.80 371.58 4.74 29.00 - 0.04417 70.00 2.240 0 0.4000 6.8710 47.40 7.8278 5 358.0 14.80 390.86 6.07 24.80 - 0.03537 34.00 6.090 0 0.4330 6.5900 40.40 5.4917 7 329.0 16.10 395.75 9.50 22.00 - 0.09266 34.00 6.090 0 0.4330 6.4950 18.40 5.4917 7 329.0 16.10 383.61 8.67 26.40 - 0.10000 34.00 6.090 0 0.4330 6.9820 17.70 5.4917 7 329.0 16.10 390.43 4.86 33.10 - 0.05515 33.00 2.180 0 0.4720 7.2360 41.10 4.0220 7 222.0 18.40 393.68 6.93 36.10 - 0.05479 33.00 2.180 0 0.4720 6.6160 58.10 3.3700 7 222.0 18.40 393.36 8.93 28.40 - 0.07503 33.00 2.180 0 0.4720 7.4200 71.90 3.0992 7 222.0 18.40 396.90 6.47 33.40 - 0.04932 33.00 2.180 0 0.4720 6.8490 70.30 3.1827 7 222.0 18.40 396.90 7.53 28.20 - 0.49298 0.00 9.900 0 0.5440 6.6350 82.50 3.3175 4 304.0 18.40 396.90 4.54 22.80 - 0.34940 0.00 9.900 0 0.5440 5.9720 76.70 3.1025 4 304.0 18.40 396.24 9.97 20.30 - 2.63548 0.00 9.900 0 0.5440 4.9730 37.80 2.5194 4 304.0 18.40 350.45 12.64 16.10 - 0.79041 0.00 9.900 0 0.5440 6.1220 52.80 2.6403 4 304.0 18.40 396.90 5.98 22.10 - 0.26169 0.00 9.900 0 0.5440 6.0230 90.40 2.8340 4 304.0 18.40 396.30 11.72 19.40 - 0.26938 0.00 9.900 0 0.5440 6.2660 82.80 3.2628 4 304.0 18.40 393.39 7.90 21.60 - 0.36920 0.00 9.900 0 0.5440 6.5670 87.30 3.6023 4 304.0 18.40 395.69 9.28 23.80 - 0.25356 0.00 9.900 0 0.5440 5.7050 77.70 3.9450 4 304.0 18.40 396.42 11.50 16.20 - 0.31827 0.00 9.900 0 0.5440 5.9140 83.20 3.9986 4 304.0 18.40 390.70 18.33 17.80 - 0.24522 0.00 9.900 0 0.5440 5.7820 71.70 4.0317 4 304.0 18.40 396.90 15.94 19.80 - 0.40202 0.00 9.900 0 0.5440 6.3820 67.20 3.5325 4 304.0 18.40 395.21 10.36 23.10 - 0.47547 0.00 9.900 0 0.5440 6.1130 58.80 4.0019 4 304.0 18.40 396.23 12.73 21.00 - 0.16760 0.00 7.380 0 0.4930 6.4260 52.30 4.5404 5 287.0 19.60 396.90 7.20 23.80 - 0.18159 0.00 7.380 0 0.4930 6.3760 54.30 4.5404 5 287.0 19.60 396.90 6.87 23.10 - 0.35114 0.00 7.380 0 0.4930 6.0410 49.90 4.7211 5 287.0 19.60 396.90 7.70 20.40 - 0.28392 0.00 7.380 0 0.4930 5.7080 74.30 4.7211 5 287.0 19.60 391.13 11.74 18.50 - 0.34109 0.00 7.380 0 0.4930 6.4150 40.10 4.7211 5 287.0 19.60 396.90 6.12 25.00 - 0.19186 0.00 7.380 0 0.4930 6.4310 14.70 5.4159 5 287.0 19.60 393.68 5.08 24.60 - 0.30347 0.00 7.380 0 0.4930 6.3120 28.90 5.4159 5 287.0 19.60 396.90 6.15 23.00 - 0.24103 0.00 7.380 0 0.4930 6.0830 43.70 5.4159 5 287.0 19.60 396.90 12.79 22.20 - 0.06617 0.00 3.240 0 0.4600 5.8680 25.80 5.2146 4 430.0 16.90 382.44 9.97 19.30 - 0.06724 0.00 3.240 0 0.4600 6.3330 17.20 5.2146 4 430.0 16.90 375.21 7.34 22.60 - 0.04544 0.00 3.240 0 0.4600 6.1440 32.20 5.8736 4 430.0 16.90 368.57 9.09 19.80 - 0.05023 35.00 6.060 0 0.4379 5.7060 28.40 6.6407 1 304.0 16.90 394.02 12.43 17.10 - 0.03466 35.00 6.060 0 0.4379 6.0310 23.30 6.6407 1 304.0 16.90 362.25 7.83 19.40 - 0.05083 0.00 5.190 0 0.5150 6.3160 38.10 6.4584 5 224.0 20.20 389.71 5.68 22.20 - 0.03738 0.00 5.190 0 0.5150 6.3100 38.50 6.4584 5 224.0 20.20 389.40 6.75 20.70 - 0.03961 0.00 5.190 0 0.5150 6.0370 34.50 5.9853 5 224.0 20.20 396.90 8.01 21.10 - 0.03427 0.00 5.190 0 0.5150 5.8690 46.30 5.2311 5 224.0 20.20 396.90 9.80 19.50 - 0.03041 0.00 5.190 0 0.5150 5.8950 59.60 5.6150 5 224.0 20.20 394.81 10.56 18.50 - 0.03306 0.00 5.190 0 0.5150 6.0590 37.30 4.8122 5 224.0 20.20 396.14 8.51 20.60 - 0.05497 0.00 5.190 0 0.5150 5.9850 45.40 4.8122 5 224.0 20.20 396.90 9.74 19.00 - 0.06151 0.00 5.190 0 0.5150 5.9680 58.50 4.8122 5 224.0 20.20 396.90 9.29 18.70 - 0.01301 35.00 1.520 0 0.4420 7.2410 49.30 7.0379 1 284.0 15.50 394.74 5.49 32.70 - 0.02498 0.00 1.890 0 0.5180 6.5400 59.70 6.2669 1 422.0 15.90 389.96 8.65 16.50 - 0.02543 55.00 3.780 0 0.4840 6.6960 56.40 5.7321 5 370.0 17.60 396.90 7.18 23.90 - 0.03049 55.00 3.780 0 0.4840 6.8740 28.10 6.4654 5 370.0 17.60 387.97 4.61 31.20 - 0.03113 0.00 4.390 0 0.4420 6.0140 48.50 8.0136 3 352.0 18.80 385.64 10.53 17.50 - 0.06162 0.00 4.390 0 0.4420 5.8980 52.30 8.0136 3 352.0 18.80 364.61 12.67 17.20 - 0.01870 85.00 4.150 0 0.4290 6.5160 27.70 8.5353 4 351.0 17.90 392.43 6.36 23.10 - 0.01501 80.00 2.010 0 0.4350 6.6350 29.70 8.3440 4 280.0 17.00 390.94 5.99 24.50 - 0.02899 40.00 1.250 0 0.4290 6.9390 34.50 8.7921 1 335.0 19.70 389.85 5.89 26.60 - 0.06211 40.00 1.250 0 0.4290 6.4900 44.40 8.7921 1 335.0 19.70 396.90 5.98 22.90 - 0.07950 60.00 1.690 0 0.4110 6.5790 35.90 10.7103 4 411.0 18.30 370.78 5.49 24.10 - 0.07244 60.00 1.690 0 0.4110 5.8840 18.50 10.7103 4 411.0 18.30 392.33 7.79 18.60 - 0.01709 90.00 2.020 0 0.4100 6.7280 36.10 12.1265 5 187.0 17.00 384.46 4.50 30.10 - 0.04301 80.00 1.910 0 0.4130 5.6630 21.90 10.5857 4 334.0 22.00 382.80 8.05 18.20 - 0.10659 80.00 1.910 0 0.4130 5.9360 19.50 10.5857 4 334.0 22.00 376.04 5.57 20.60 - 8.98296 0.00 18.100 1 0.7700 6.2120 97.40 2.1222 24 666.0 20.20 377.73 17.60 17.80 - 3.84970 0.00 18.100 1 0.7700 6.3950 91.00 2.5052 24 666.0 20.20 391.34 13.27 21.70 - 5.20177 0.00 18.100 1 0.7700 6.1270 83.40 2.7227 24 666.0 20.20 395.43 11.48 22.70 - 4.26131 0.00 18.100 0 0.7700 6.1120 81.30 2.5091 24 666.0 20.20 390.74 12.67 22.60 - 4.54192 0.00 18.100 0 0.7700 6.3980 88.00 2.5182 24 666.0 20.20 374.56 7.79 25.00 - 3.83684 0.00 18.100 0 0.7700 6.2510 91.10 2.2955 24 666.0 20.20 350.65 14.19 19.90 - 3.67822 0.00 18.100 0 0.7700 5.3620 96.20 2.1036 24 666.0 20.20 380.79 10.19 20.80 - 4.22239 0.00 18.100 1 0.7700 5.8030 89.00 1.9047 24 666.0 20.20 353.04 14.64 16.80 - 3.47428 0.00 18.100 1 0.7180 8.7800 82.90 1.9047 24 666.0 20.20 354.55 5.29 21.90 - 4.55587 0.00 18.100 0 0.7180 3.5610 87.90 1.6132 24 666.0 20.20 354.70 7.12 27.50 - 3.69695 0.00 18.100 0 0.7180 4.9630 91.40 1.7523 24 666.0 20.20 316.03 14.00 21.90 -13.52220 0.00 18.100 0 0.6310 3.8630 100.00 1.5106 24 666.0 20.20 131.42 13.33 23.10 - 4.89822 0.00 18.100 0 0.6310 4.9700 100.00 1.3325 24 666.0 20.20 375.52 3.26 50.00 - 5.66998 0.00 18.100 1 0.6310 6.6830 96.80 1.3567 24 666.0 20.20 375.33 3.73 50.00 - 6.53876 0.00 18.100 1 0.6310 7.0160 97.50 1.2024 24 666.0 20.20 392.05 2.96 50.00 - 9.23230 0.00 18.100 0 0.6310 6.2160 100.00 1.1691 24 666.0 20.20 366.15 9.53 50.00 - 8.26725 0.00 18.100 1 0.6680 5.8750 89.60 1.1296 24 666.0 20.20 347.88 8.88 50.00 -11.10810 0.00 18.100 0 0.6680 4.9060 100.00 1.1742 24 666.0 20.20 396.90 34.77 13.80 -18.49820 0.00 18.100 0 0.6680 4.1380 100.00 1.1370 24 666.0 20.20 396.90 37.97 13.80 -19.60910 0.00 18.100 0 0.6710 7.3130 97.90 1.3163 24 666.0 20.20 396.90 13.44 15.00 -15.28800 0.00 18.100 0 0.6710 6.6490 93.30 1.3449 24 666.0 20.20 363.02 23.24 13.90 - 9.82349 0.00 18.100 0 0.6710 6.7940 98.80 1.3580 24 666.0 20.20 396.90 21.24 13.30 -23.64820 0.00 18.100 0 0.6710 6.3800 96.20 1.3861 24 666.0 20.20 396.90 23.69 13.10 -17.86670 0.00 18.100 0 0.6710 6.2230 100.00 1.3861 24 666.0 20.20 393.74 21.78 10.20 -88.97620 0.00 18.100 0 0.6710 6.9680 91.90 1.4165 24 666.0 20.20 396.90 17.21 10.40 -15.87440 0.00 18.100 0 0.6710 6.5450 99.10 1.5192 24 666.0 20.20 396.90 21.08 10.90 - 9.18702 0.00 18.100 0 0.7000 5.5360 100.00 1.5804 24 666.0 20.20 396.90 23.60 11.30 - 7.99248 0.00 18.100 0 0.7000 5.5200 100.00 1.5331 24 666.0 20.20 396.90 24.56 12.30 -20.08490 0.00 18.100 0 0.7000 4.3680 91.20 1.4395 24 666.0 20.20 285.83 30.63 8.80 -16.81180 0.00 18.100 0 0.7000 5.2770 98.10 1.4261 24 666.0 20.20 396.90 30.81 7.20 -24.39380 0.00 18.100 0 0.7000 4.6520 100.00 1.4672 24 666.0 20.20 396.90 28.28 10.50 -22.59710 0.00 18.100 0 0.7000 5.0000 89.50 1.5184 24 666.0 20.20 396.90 31.99 7.40 -14.33370 0.00 18.100 0 0.7000 4.8800 100.00 1.5895 24 666.0 20.20 372.92 30.62 10.20 - 8.15174 0.00 18.100 0 0.7000 5.3900 98.90 1.7281 24 666.0 20.20 396.90 20.85 11.50 - 6.96215 0.00 18.100 0 0.7000 5.7130 97.00 1.9265 24 666.0 20.20 394.43 17.11 15.10 - 5.29305 0.00 18.100 0 0.7000 6.0510 82.50 2.1678 24 666.0 20.20 378.38 18.76 23.20 -11.57790 0.00 18.100 0 0.7000 5.0360 97.00 1.7700 24 666.0 20.20 396.90 25.68 9.70 - 8.64476 0.00 18.100 0 0.6930 6.1930 92.60 1.7912 24 666.0 20.20 396.90 15.17 13.80 -13.35980 0.00 18.100 0 0.6930 5.8870 94.70 1.7821 24 666.0 20.20 396.90 16.35 12.70 - 8.71675 0.00 18.100 0 0.6930 6.4710 98.80 1.7257 24 666.0 20.20 391.98 17.12 13.10 - 5.87205 0.00 18.100 0 0.6930 6.4050 96.00 1.6768 24 666.0 20.20 396.90 19.37 12.50 - 7.67202 0.00 18.100 0 0.6930 5.7470 98.90 1.6334 24 666.0 20.20 393.10 19.92 8.50 -38.35180 0.00 18.100 0 0.6930 5.4530 100.00 1.4896 24 666.0 20.20 396.90 30.59 5.00 - 9.91655 0.00 18.100 0 0.6930 5.8520 77.80 1.5004 24 666.0 20.20 338.16 29.97 6.30 -25.04610 0.00 18.100 0 0.6930 5.9870 100.00 1.5888 24 666.0 20.20 396.90 26.77 5.60 -14.23620 0.00 18.100 0 0.6930 6.3430 100.00 1.5741 24 666.0 20.20 396.90 20.32 7.20 - 9.59571 0.00 18.100 0 0.6930 6.4040 100.00 1.6390 24 666.0 20.20 376.11 20.31 12.10 -24.80170 0.00 18.100 0 0.6930 5.3490 96.00 1.7028 24 666.0 20.20 396.90 19.77 8.30 -41.52920 0.00 18.100 0 0.6930 5.5310 85.40 1.6074 24 666.0 20.20 329.46 27.38 8.50 -67.92080 0.00 18.100 0 0.6930 5.6830 100.00 1.4254 24 666.0 20.20 384.97 22.98 5.00 -20.71620 0.00 18.100 0 0.6590 4.1380 100.00 1.1781 24 666.0 20.20 370.22 23.34 11.90 -11.95110 0.00 18.100 0 0.6590 5.6080 100.00 1.2852 24 666.0 20.20 332.09 12.13 27.90 - 7.40389 0.00 18.100 0 0.5970 5.6170 97.90 1.4547 24 666.0 20.20 314.64 26.40 17.20 -14.43830 0.00 18.100 0 0.5970 6.8520 100.00 1.4655 24 666.0 20.20 179.36 19.78 27.50 -51.13580 0.00 18.100 0 0.5970 5.7570 100.00 1.4130 24 666.0 20.20 2.60 10.11 15.00 -14.05070 0.00 18.100 0 0.5970 6.6570 100.00 1.5275 24 666.0 20.20 35.05 21.22 17.20 -18.81100 0.00 18.100 0 0.5970 4.6280 100.00 1.5539 24 666.0 20.20 28.79 34.37 17.90 -28.65580 0.00 18.100 0 0.5970 5.1550 100.00 1.5894 24 666.0 20.20 210.97 20.08 16.30 -45.74610 0.00 18.100 0 0.6930 4.5190 100.00 1.6582 24 666.0 20.20 88.27 36.98 7.00 -18.08460 0.00 18.100 0 0.6790 6.4340 100.00 1.8347 24 666.0 20.20 27.25 29.05 7.20 -10.83420 0.00 18.100 0 0.6790 6.7820 90.80 1.8195 24 666.0 20.20 21.57 25.79 7.50 -25.94060 0.00 18.100 0 0.6790 5.3040 89.10 1.6475 24 666.0 20.20 127.36 26.64 10.40 -73.53410 0.00 18.100 0 0.6790 5.9570 100.00 1.8026 24 666.0 20.20 16.45 20.62 8.80 -11.81230 0.00 18.100 0 0.7180 6.8240 76.50 1.7940 24 666.0 20.20 48.45 22.74 8.40 -11.08740 0.00 18.100 0 0.7180 6.4110 100.00 1.8589 24 666.0 20.20 318.75 15.02 16.70 - 7.02259 0.00 18.100 0 0.7180 6.0060 95.30 1.8746 24 666.0 20.20 319.98 15.70 14.20 -12.04820 0.00 18.100 0 0.6140 5.6480 87.60 1.9512 24 666.0 20.20 291.55 14.10 20.80 - 7.05042 0.00 18.100 0 0.6140 6.1030 85.10 2.0218 24 666.0 20.20 2.52 23.29 13.40 - 8.79212 0.00 18.100 0 0.5840 5.5650 70.60 2.0635 24 666.0 20.20 3.65 17.16 11.70 -15.86030 0.00 18.100 0 0.6790 5.8960 95.40 1.9096 24 666.0 20.20 7.68 24.39 8.30 -12.24720 0.00 18.100 0 0.5840 5.8370 59.70 1.9976 24 666.0 20.20 24.65 15.69 10.20 -37.66190 0.00 18.100 0 0.6790 6.2020 78.70 1.8629 24 666.0 20.20 18.82 14.52 10.90 - 7.36711 0.00 18.100 0 0.6790 6.1930 78.10 1.9356 24 666.0 20.20 96.73 21.52 11.00 - 9.33889 0.00 18.100 0 0.6790 6.3800 95.60 1.9682 24 666.0 20.20 60.72 24.08 9.50 - 8.49213 0.00 18.100 0 0.5840 6.3480 86.10 2.0527 24 666.0 20.20 83.45 17.64 14.50 -10.06230 0.00 18.100 0 0.5840 6.8330 94.30 2.0882 24 666.0 20.20 81.33 19.69 14.10 - 6.44405 0.00 18.100 0 0.5840 6.4250 74.80 2.2004 24 666.0 20.20 97.95 12.03 16.10 - 5.58107 0.00 18.100 0 0.7130 6.4360 87.90 2.3158 24 666.0 20.20 100.19 16.22 14.30 -13.91340 0.00 18.100 0 0.7130 6.2080 95.00 2.2222 24 666.0 20.20 100.63 15.17 11.70 -11.16040 0.00 18.100 0 0.7400 6.6290 94.60 2.1247 24 666.0 20.20 109.85 23.27 13.40 -14.42080 0.00 18.100 0 0.7400 6.4610 93.30 2.0026 24 666.0 20.20 27.49 18.05 9.60 -15.17720 0.00 18.100 0 0.7400 6.1520 100.00 1.9142 24 666.0 20.20 9.32 26.45 8.70 -13.67810 0.00 18.100 0 0.7400 5.9350 87.90 1.8206 24 666.0 20.20 68.95 34.02 8.40 - 9.39063 0.00 18.100 0 0.7400 5.6270 93.90 1.8172 24 666.0 20.20 396.90 22.88 12.80 -22.05110 0.00 18.100 0 0.7400 5.8180 92.40 1.8662 24 666.0 20.20 391.45 22.11 10.50 - 9.72418 0.00 18.100 0 0.7400 6.4060 97.20 2.0651 24 666.0 20.20 385.96 19.52 17.10 - 5.66637 0.00 18.100 0 0.7400 6.2190 100.00 2.0048 24 666.0 20.20 395.69 16.59 18.40 - 9.96654 0.00 18.100 0 0.7400 6.4850 100.00 1.9784 24 666.0 20.20 386.73 18.85 15.40 -12.80230 0.00 18.100 0 0.7400 5.8540 96.60 1.8956 24 666.0 20.20 240.52 23.79 10.80 -10.67180 0.00 18.100 0 0.7400 6.4590 94.80 1.9879 24 666.0 20.20 43.06 23.98 11.80 - 6.28807 0.00 18.100 0 0.7400 6.3410 96.40 2.0720 24 666.0 20.20 318.01 17.79 14.90 - 9.92485 0.00 18.100 0 0.7400 6.2510 96.60 2.1980 24 666.0 20.20 388.52 16.44 12.60 - 9.32909 0.00 18.100 0 0.7130 6.1850 98.70 2.2616 24 666.0 20.20 396.90 18.13 14.10 - 7.52601 0.00 18.100 0 0.7130 6.4170 98.30 2.1850 24 666.0 20.20 304.21 19.31 13.00 - 6.71772 0.00 18.100 0 0.7130 6.7490 92.60 2.3236 24 666.0 20.20 0.32 17.44 13.40 - 5.44114 0.00 18.100 0 0.7130 6.6550 98.20 2.3552 24 666.0 20.20 355.29 17.73 15.20 - 5.09017 0.00 18.100 0 0.7130 6.2970 91.80 2.3682 24 666.0 20.20 385.09 17.27 16.10 - 8.24809 0.00 18.100 0 0.7130 7.3930 99.30 2.4527 24 666.0 20.20 375.87 16.74 17.80 - 9.51363 0.00 18.100 0 0.7130 6.7280 94.10 2.4961 24 666.0 20.20 6.68 18.71 14.90 - 4.75237 0.00 18.100 0 0.7130 6.5250 86.50 2.4358 24 666.0 20.20 50.92 18.13 14.10 - 4.66883 0.00 18.100 0 0.7130 5.9760 87.90 2.5806 24 666.0 20.20 10.48 19.01 12.70 - 8.20058 0.00 18.100 0 0.7130 5.9360 80.30 2.7792 24 666.0 20.20 3.50 16.94 13.50 - 7.75223 0.00 18.100 0 0.7130 6.3010 83.70 2.7831 24 666.0 20.20 272.21 16.23 14.90 - 6.80117 0.00 18.100 0 0.7130 6.0810 84.40 2.7175 24 666.0 20.20 396.90 14.70 20.00 - 4.81213 0.00 18.100 0 0.7130 6.7010 90.00 2.5975 24 666.0 20.20 255.23 16.42 16.40 - 3.69311 0.00 18.100 0 0.7130 6.3760 88.40 2.5671 24 666.0 20.20 391.43 14.65 17.70 - 6.65492 0.00 18.100 0 0.7130 6.3170 83.00 2.7344 24 666.0 20.20 396.90 13.99 19.50 - 5.82115 0.00 18.100 0 0.7130 6.5130 89.90 2.8016 24 666.0 20.20 393.82 10.29 20.20 - 7.83932 0.00 18.100 0 0.6550 6.2090 65.40 2.9634 24 666.0 20.20 396.90 13.22 21.40 - 3.16360 0.00 18.100 0 0.6550 5.7590 48.20 3.0665 24 666.0 20.20 334.40 14.13 19.90 - 3.77498 0.00 18.100 0 0.6550 5.9520 84.70 2.8715 24 666.0 20.20 22.01 17.15 19.00 - 4.42228 0.00 18.100 0 0.5840 6.0030 94.50 2.5403 24 666.0 20.20 331.29 21.32 19.10 -15.57570 0.00 18.100 0 0.5800 5.9260 71.00 2.9084 24 666.0 20.20 368.74 18.13 19.10 -13.07510 0.00 18.100 0 0.5800 5.7130 56.70 2.8237 24 666.0 20.20 396.90 14.76 20.10 - 4.34879 0.00 18.100 0 0.5800 6.1670 84.00 3.0334 24 666.0 20.20 396.90 16.29 19.90 - 4.03841 0.00 18.100 0 0.5320 6.2290 90.70 3.0993 24 666.0 20.20 395.33 12.87 19.60 - 3.56868 0.00 18.100 0 0.5800 6.4370 75.00 2.8965 24 666.0 20.20 393.37 14.36 23.20 - 4.64689 0.00 18.100 0 0.6140 6.9800 67.60 2.5329 24 666.0 20.20 374.68 11.66 29.80 - 8.05579 0.00 18.100 0 0.5840 5.4270 95.40 2.4298 24 666.0 20.20 352.58 18.14 13.80 - 6.39312 0.00 18.100 0 0.5840 6.1620 97.40 2.2060 24 666.0 20.20 302.76 24.10 13.30 - 4.87141 0.00 18.100 0 0.6140 6.4840 93.60 2.3053 24 666.0 20.20 396.21 18.68 16.70 -15.02340 0.00 18.100 0 0.6140 5.3040 97.30 2.1007 24 666.0 20.20 349.48 24.91 12.00 -10.23300 0.00 18.100 0 0.6140 6.1850 96.70 2.1705 24 666.0 20.20 379.70 18.03 14.60 -14.33370 0.00 18.100 0 0.6140 6.2290 88.00 1.9512 24 666.0 20.20 383.32 13.11 21.40 - 5.82401 0.00 18.100 0 0.5320 6.2420 64.70 3.4242 24 666.0 20.20 396.90 10.74 23.00 - 5.70818 0.00 18.100 0 0.5320 6.7500 74.90 3.3317 24 666.0 20.20 393.07 7.74 23.70 - 5.73116 0.00 18.100 0 0.5320 7.0610 77.00 3.4106 24 666.0 20.20 395.28 7.01 25.00 - 2.81838 0.00 18.100 0 0.5320 5.7620 40.30 4.0983 24 666.0 20.20 392.92 10.42 21.80 - 2.37857 0.00 18.100 0 0.5830 5.8710 41.90 3.7240 24 666.0 20.20 370.73 13.34 20.60 - 3.67367 0.00 18.100 0 0.5830 6.3120 51.90 3.9917 24 666.0 20.20 388.62 10.58 21.20 - 5.69175 0.00 18.100 0 0.5830 6.1140 79.80 3.5459 24 666.0 20.20 392.68 14.98 19.10 - 4.83567 0.00 18.100 0 0.5830 5.9050 53.20 3.1523 24 666.0 20.20 388.22 11.45 20.60 - 0.15086 0.00 27.740 0 0.6090 5.4540 92.70 1.8209 4 711.0 20.10 395.09 18.06 15.20 - 0.18337 0.00 27.740 0 0.6090 5.4140 98.30 1.7554 4 711.0 20.10 344.05 23.97 7.00 - 0.20746 0.00 27.740 0 0.6090 5.0930 98.00 1.8226 4 711.0 20.10 318.43 29.68 8.10 - 0.10574 0.00 27.740 0 0.6090 5.9830 98.80 1.8681 4 711.0 20.10 390.11 18.07 13.60 - 0.11132 0.00 27.740 0 0.6090 5.9830 83.50 2.1099 4 711.0 20.10 396.90 13.35 20.10 - 0.17331 0.00 9.690 0 0.5850 5.7070 54.00 2.3817 6 391.0 19.20 396.90 12.01 21.80 - 0.27957 0.00 9.690 0 0.5850 5.9260 42.60 2.3817 6 391.0 19.20 396.90 13.59 24.50 - 0.17899 0.00 9.690 0 0.5850 5.6700 28.80 2.7986 6 391.0 19.20 393.29 17.60 23.10 - 0.28960 0.00 9.690 0 0.5850 5.3900 72.90 2.7986 6 391.0 19.20 396.90 21.14 19.70 - 0.26838 0.00 9.690 0 0.5850 5.7940 70.60 2.8927 6 391.0 19.20 396.90 14.10 18.30 - 0.23912 0.00 9.690 0 0.5850 6.0190 65.30 2.4091 6 391.0 19.20 396.90 12.92 21.20 - 0.17783 0.00 9.690 0 0.5850 5.5690 73.50 2.3999 6 391.0 19.20 395.77 15.10 17.50 - 0.22438 0.00 9.690 0 0.5850 6.0270 79.70 2.4982 6 391.0 19.20 396.90 14.33 16.80 - 0.06263 0.00 11.930 0 0.5730 6.5930 69.10 2.4786 1 273.0 21.00 391.99 9.67 22.40 - 0.04527 0.00 11.930 0 0.5730 6.1200 76.70 2.2875 1 273.0 21.00 396.90 9.08 20.60 - 0.06076 0.00 11.930 0 0.5730 6.9760 91.00 2.1675 1 273.0 21.00 396.90 5.64 23.90 - 0.10959 0.00 11.930 0 0.5730 6.7940 89.30 2.3889 1 273.0 21.00 393.45 6.48 22.00 - 0.04741 0.00 11.930 0 0.5730 6.0300 80.80 2.5050 1 273.0 21.00 396.90 7.88 11.90 diff --git a/housing.names b/housing.names deleted file mode 100644 index 16064561f77..00000000000 --- a/housing.names +++ /dev/null @@ -1,52 +0,0 @@ -1. Title: Boston Housing Data - -2. Sources: - (a) Origin: This dataset was taken from the StatLib library which is - maintained at Carnegie Mellon University. - (b) Creator: Harrison, D. and Rubinfeld, D.L. 'Hedonic prices and the - demand for clean air', J. Environ. Economics & Management, - vol.5, 81-102, 1978. - (c) Date: July 7, 1993 - -3. Past Usage: - - Used in Belsley, Kuh & Welsch, 'Regression diagnostics ...', Wiley, - 1980. N.B. Various transformations are used in the table on - pages 244-261. - - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. - In Proceedings on the Tenth International Conference of Machine - Learning, 236-243, University of Massachusetts, Amherst. Morgan - Kaufmann. - -4. Relevant Information: - - Concerns housing values in suburbs of Boston. - -5. Number of Instances: 506 - -6. Number of Attributes: 13 continuous attributes (including "class" - attribute "MEDV"), 1 binary-valued attribute. - -7. Attribute Information: - - 1. CRIM per capita crime rate by town - 2. ZN proportion of residential land zoned for lots over - 25,000 sq.ft. - 3. INDUS proportion of non-retail business acres per town - 4. CHAS Charles River dummy variable (= 1 if tract bounds - river; 0 otherwise) - 5. NOX nitric oxides concentration (parts per 10 million) - 6. RM average number of rooms per dwelling - 7. AGE proportion of owner-occupied units built prior to 1940 - 8. DIS weighted distances to five Boston employment centres - 9. RAD index of accessibility to radial highways - 10. TAX full-value property-tax rate per $10,000 - 11. PTRATIO pupil-teacher ratio by town - 12. B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks - by town - 13. LSTAT % lower status of the population - 14. MEDV Median value of owner-occupied homes in $1000's - -8. Missing Attribute Values: None. - - - diff --git a/how to add three numbers and find type in python.py b/how to add three numbers and find type in python.py deleted file mode 100644 index bc8ba8cd6d4..00000000000 --- a/how to add three numbers and find type in python.py +++ /dev/null @@ -1,8 +0,0 @@ -#python program for adding three no. -x=45 -y=75 -z=25 -t=x+y+z -print(t) -#type of output -print(type(t)) diff --git a/how to display the fibonacci sequence up to n-.py b/how to display the fibonacci sequence up to n-.py index 9f6b1b3d7ce..d6a70a574cd 100644 --- a/how to display the fibonacci sequence up to n-.py +++ b/how to display the fibonacci sequence up to n-.py @@ -8,16 +8,16 @@ # check if the number of terms is valid if nterms <= 0: - print("Please enter a positive integer") + print("Please enter a positive integer") elif nterms == 1: - print("Fibonacci sequence upto",nterms,":") - print(n1) + print("Fibonacci sequence upto", nterms, ":") + print(n1) else: - print("Fibonacci sequence:") - while count < nterms: - print(n1) - nth = n1 + n2 - # update values - n1 = n2 - n2 = nth - count += 1 + print("Fibonacci sequence:") + while count < nterms: + print(n1) + nth = n1 + n2 + # update values + n1 = n2 + n2 = nth + count += 1 diff --git a/image2pdf/image2pdf.py b/image2pdf/image2pdf.py index 2c6d4bda27b..4a353dbfd52 100644 --- a/image2pdf/image2pdf.py +++ b/image2pdf/image2pdf.py @@ -6,13 +6,12 @@ class image2pdf: def __init__(self): self.validFormats = (".jpg", ".jpeg", ".png", ".JPG", ".PNG") self.pictures = [] - - self.directory = "" - self.isMergePDF = True + self.directory = "" + self.isMergePDF = True def getUserDir(self): - """ Allow user to choose image directory """ + """Allow user to choose image directory""" msg = "\n1. Current directory\n2. Custom directory\nEnter a number: " user_option = int(input(msg)) @@ -21,8 +20,10 @@ def getUserDir(self): while user_option <= 0 or user_option >= 3: user_option = int(input(f"\n*Invalid input*\n{msg}")) - self.directory = os.getcwd() if user_option == 1 else input("\nEnter custom directory: ") - + self.directory = ( + os.getcwd() if user_option == 1 else input("\nEnter custom directory: ") + ) + def filter(self, item): return item.endswith(self.validFormats) @@ -35,84 +36,94 @@ def getPictures(self): if not pictures: print(f" [Error] there are no pictures in the directory: {self.directory} ") return False - - print(f"Found picture(s) :") + + print("Found picture(s) :") return pictures def selectPictures(self, pictures): - """ Allow user to manually pick each picture or merge all """ + """Allow user to manually pick each picture or merge all""" listedPictures = {} for index, pic in enumerate(pictures): - listedPictures[index+1] = pic - print(f"{index+1}: {pic}") - - userInput = input("\n Enter the number(s) - (comma seperated/no spaces) or (A or a) to merge All \nChoice: ").strip().lower() - + listedPictures[index + 1] = pic + print(f"{index + 1}: {pic}") + + userInput = ( + input( + "\n Enter the number(s) - (comma seperated/no spaces) or (A or a) to merge All \nChoice: " + ) + .strip() + .lower() + ) + if userInput != "a": # Convert user input (number) into corresponding (image title) pictures = ( - listedPictures.get(int(number)) for number in userInput.split(',') + listedPictures.get(int(number)) for number in userInput.split(",") ) self.isMergePDF = False return pictures - def convertPictures(self): """ - Convert pictures according the following: - * If pictures = 0 -> Skip - * If pictures = 1 -> use all - * Else -> allow user to pick pictures + Convert pictures according the following: + * If pictures = 0 -> Skip + * If pictures = 1 -> use all + * Else -> allow user to pick pictures - Then determine to merge all or one pdf + Then determine to merge all or one pdf """ pictures = self.getPictures() totalPictures = len(pictures) if pictures else 0 - + if totalPictures == 0: return - + elif totalPictures >= 2: pictures = self.selectPictures(pictures) - + if self.isMergePDF: - # All pics in one pdf. + # All pics in one pdf. for picture in pictures: - self.pictures.append(Image.open(f"{self.directory}\\{picture}").convert("RGB")) + self.pictures.append( + Image.open(f"{self.directory}\\{picture}").convert("RGB") + ) self.save() else: - # Each pic in seperate pdf. + # Each pic in seperate pdf. for picture in pictures: - self.save(Image.open(f"{self.directory}\\{picture}").convert("RGB"), picture, False) + self.save( + Image.open(f"{self.directory}\\{picture}").convert("RGB"), + picture, + False, + ) # Reset to default value for next run self.isMergePDF = True self.pictures = [] - print(f"\n{'#'*30}") + print(f"\n{'#' * 30}") print(" Done! ") - print(f"{'#'*30}\n") + print(f"{'#' * 30}\n") def save(self, image=None, title="All-PDFs", isMergeAll=True): # Save all to one pdf or each in seperate file if isMergeAll: self.pictures[0].save( - f"{self.directory}\\{title}.pdf", - save_all=True, - append_images=self.pictures[1:] + f"{self.directory}\\{title}.pdf", + save_all=True, + append_images=self.pictures[1:], ) - + else: image.save(f"{self.directory}\\{title}.pdf") if __name__ == "__main__": - # Get user directory only once process = image2pdf() process.getUserDir() @@ -120,7 +131,9 @@ def save(self, image=None, title="All-PDFs", isMergeAll=True): # Allow user to rerun any process while True: - user = input("Press (R or r) to Run again\nPress (C or c) to change directory\nPress (Any Key) To Exit\nchoice:").lower() + user = input( + "Press (R or r) to Run again\nPress (C or c) to change directory\nPress (Any Key) To Exit\nchoice:" + ).lower() match user: case "r": process.convertPictures() @@ -129,5 +142,3 @@ def save(self, image=None, title="All-PDFs", isMergeAll=True): process.convertPictures() case _: break - - diff --git a/importerror.txt b/importerror.txt deleted file mode 100644 index 612a60257fa..00000000000 --- a/importerror.txt +++ /dev/null @@ -1,6 +0,0 @@ -In a normal python: - -pip install pywin32 -In anaconda: - -conda install pywin32 diff --git a/index.py b/index.py new file mode 100644 index 00000000000..70cc71d708c --- /dev/null +++ b/index.py @@ -0,0 +1,14 @@ +num = 11 +# Negative numbers, 0 and 1 are not primes +if num > 1: + # Iterate from 2 to n // 2 + for i in range(2, (num // 2) + 1): + # If num is divisible by any number between + # 2 and n / 2, it is not prime + if (num % i) == 0: + print(num, "is not a prime number") + break + else: + print(num, "is a prime number") +else: + print(num, "is not a prime number") diff --git a/inheritance_YahV1729.py b/inheritance_YahV1729.py new file mode 100644 index 00000000000..7b59954fe61 --- /dev/null +++ b/inheritance_YahV1729.py @@ -0,0 +1,33 @@ +# A Python program to demonstrate inheritance + +# Base or Super class. Note object in bracket. +# (Generally, object is made ancestor of all classes) +# In Python 3.x "class Person" is +# equivalent to "class Person(object)" +class Person(object): + # Constructor + def __init__(self, name): + self.name = name + + # To get name + def getName(self): + return self.name + + # To check if this person is employee + def isEmployee(self): + return False + + +# Inherited or Sub class (Note Person in bracket) +class Employee(Person): + # Here we return true + def isEmployee(self): + return True + + +# Driver code +emp = Person("Geek1") # An Object of Person +print(emp.getName(), emp.isEmployee()) + +emp = Employee("Geek2") # An Object of Employee +print(emp.getName(), emp.isEmployee()) diff --git a/inheritance_YahV1729.python b/inheritance_YahV1729.python deleted file mode 100644 index 3f55dfab1b3..00000000000 --- a/inheritance_YahV1729.python +++ /dev/null @@ -1,35 +0,0 @@ - -# A Python program to demonstrate inheritance - -# Base or Super class. Note object in bracket. -# (Generally, object is made ancestor of all classes) -# In Python 3.x "class Person" is -# equivalent to "class Person(object)" -class Person(object): - - # Constructor - def __init__(self, name): - self.name = name - - # To get name - def getName(self): - return self.name - - # To check if this person is employee - def isEmployee(self): - return False - - -# Inherited or Sub class (Note Person in bracket) -class Employee(Person): - - # Here we return true - def isEmployee(self): - return True - -# Driver code -emp = Person("Geek1") # An Object of Person -print(emp.getName(), emp.isEmployee()) - -emp = Employee("Geek2") # An Object of Employee -print(emp.getName(), emp.isEmployee()) diff --git a/insta_image_saving/instagram_image_scrapping.ipynb b/insta_image_saving/instagram_image_scrapping.ipynb index fdb8efbf160..dd002beb20d 100644 --- a/insta_image_saving/instagram_image_scrapping.ipynb +++ b/insta_image_saving/instagram_image_scrapping.ipynb @@ -7,14 +7,11 @@ "outputs": [], "source": [ "from time import sleep\n", - "import scrapy\n", "import pandas as pd\n", - "from scrapy import Spider\n", "from selenium import webdriver\n", "from scrapy.selector import Selector\n", "from io import BytesIO\n", "from PIL import Image\n", - "import os\n", "import requests" ] }, @@ -41,15 +38,15 @@ "driver = webdriver.Chrome(\"driver/driver\")\n", "driver.get(instaccountlink)\n", "unique_urls = []\n", - "while i<300:\n", - " i = i +1\n", + "while i < 300:\n", + " i = i + 1\n", " sel = Selector(text=driver.page_source)\n", - " \n", + "\n", " url = sel.xpath('//div[@class=\"v1Nh3 kIKUG _bz0w\"]/a/@href').extract()\n", " for u in url:\n", " if u not in unique_urls:\n", " unique_urls.append(u)\n", - " \n", + "\n", " driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n", " sel = Selector(text=driver.page_source)\n", " url = sel.xpath('//div[@class=\"v1Nh3 kIKUG _bz0w\"]/a/@href').extract()\n", @@ -57,7 +54,7 @@ " for u in url:\n", " if u not in unique_urls:\n", " unique_urls.append(u)\n", - " \n", + "\n", "driver.quit()\n", "print(len(unique_urls))" ] @@ -76,8 +73,8 @@ } ], "source": [ - "file = open(\"output/audi_instagram_11_07_2019.csv\",\"a\")\n", - "for u in unique_urls :\n", + "file = open(\"output/audi_instagram_11_07_2019.csv\", \"a\")\n", + "for u in unique_urls:\n", " file.write(u)\n", " file.write(\"\\n\")\n", "file.close()\n", @@ -91,48 +88,49 @@ "outputs": [], "source": [ "# saving the images to specified directory\n", - "driver = webdriver.Chrome('driver/driver')\n", + "driver = webdriver.Chrome(\"driver/driver\")\n", "\n", "image_urls = []\n", "count = 0\n", - "max_no_of_iteration=250\n", + "max_no_of_iteration = 250\n", "for u in unique_urls:\n", " try:\n", - " driver.get('http://instagram.com'+u)\n", + " driver.get(\"http://instagram.com\" + u)\n", " sel = Selector(text=driver.page_source)\n", "\n", - " src= sel.xpath('//div/img/@src').extract()[0]\n", - "# print(src)\n", + " src = sel.xpath(\"//div/img/@src\").extract()[0]\n", + " # print(src)\n", " r = requests.get(src)\n", - " \n", + "\n", " image = Image.open(BytesIO(r.content))\n", - "# path = \"C:/Users/carbon/Desktop/output/\"+instaAccountName+str(count)+\".\" + image.format \n", - " path = \"output/\"+instaaccountname+str(count)+\".\" + image.format\n", - "# print(image.size, image.format, image.mode)\n", - " q1=''\n", - " q2=''\n", + " # path = \"C:/Users/carbon/Desktop/output/\"+instaAccountName+str(count)+\".\" + image.format\n", + " path = \"output/\" + instaaccountname + str(count) + \".\" + image.format\n", + " # print(image.size, image.format, image.mode)\n", + " q1 = \"\"\n", + " q2 = \"\"\n", " try:\n", " image.save(path, image.format)\n", - " q1 = instaaccountname+str(count)\n", - " q2 = sel.xpath('//span/span/text()').extract_first()\n", - "# print(q1)\n", - "# print(q2)\n", + " q1 = instaaccountname + str(count)\n", + " q2 = sel.xpath(\"//span/span/text()\").extract_first()\n", + " # print(q1)\n", + " # print(q2)\n", "\n", " except IOError:\n", - " q1=''\n", - " q2=''\n", - " imageID.insert(len(imageID),q1)\n", - " imageLikes.insert(len(imageLikes),q2)\n", - " sl_no.insert(len(sl_no),str(count))\n", + " q1 = \"\"\n", + " q2 = \"\"\n", + " imageID.insert(len(imageID), q1)\n", + " imageLikes.insert(len(imageLikes), q2)\n", + " sl_no.insert(len(sl_no), str(count))\n", " count = count + 1\n", " if count > max_no_of_iteration:\n", " driver.quit()\n", - " df = pd.DataFrame({'ImageID':imageID,'Sl_no':sl_no, 'ImageLikes':imageLikes})\n", - " fileName = instaaccountname+str('.csv')\n", + " df = pd.DataFrame(\n", + " {\"ImageID\": imageID, \"Sl_no\": sl_no, \"ImageLikes\": imageLikes}\n", + " )\n", + " fileName = instaaccountname + str(\".csv\")\n", " df.to_csv(fileName, index=False)\n", " break\n", "\n", - "\n", " except:\n", " pass\n", "\n", diff --git a/insta_monitering/insta_datafetcher.py b/insta_monitering/insta_datafetcher.py index 8c5ed78b902..04b58df4052 100644 --- a/insta_monitering/insta_datafetcher.py +++ b/insta_monitering/insta_datafetcher.py @@ -104,7 +104,6 @@ async def request_pull(url): class MoniteringClass: def __init__(self, user, tags, type, productId): - try: self.mon = pymongo.MongoClient(host=config.host, port=config.mongoPort) db = self.mon[productId + ":" + user + ":insta"] diff --git a/kilo_to_miles.py b/kilo_to_miles.py new file mode 100644 index 00000000000..dea08b7d8cd --- /dev/null +++ b/kilo_to_miles.py @@ -0,0 +1,3 @@ +user = float(input("enter kilometers here.. ")) +miles = user * 0.621371 +print(f"{user} kilometers equals to {miles:.2f} miles") diff --git a/kmp_str_search.py b/kmp_str_search.py index cae439949b9..6ee108c9ca5 100644 --- a/kmp_str_search.py +++ b/kmp_str_search.py @@ -1,11 +1,11 @@ """Author Anurag Kumar(mailto:anuragkumarak95@gmail.com) - The Knuth-Morris-Pratt Algorithm for finding a pattern within a piece of te$ - with complexity O(n + m) - 1) Preprocess pattern to identify any suffixes that are identical to prefix$ - This tells us where to continue from if we get a mismatch between a cha$ - and the text. - 2) Step through the text one character at a time and compare it to a charac$ - updating our location within the pattern if necessary +The Knuth-Morris-Pratt Algorithm for finding a pattern within a piece of te$ +with complexity O(n + m) +1) Preprocess pattern to identify any suffixes that are identical to prefix$ + This tells us where to continue from if we get a mismatch between a cha$ + and the text. +2) Step through the text one character at a time and compare it to a charac$ + updating our location within the pattern if necessary """ diff --git a/large_files_reading.py b/large_files_reading.py new file mode 100644 index 00000000000..b2f10a410c5 --- /dev/null +++ b/large_files_reading.py @@ -0,0 +1,6 @@ +with open( + "new_project.txt", "r", encoding="utf-8" +) as file: # replace "largefile.text" with your actual file name or with absoulte path + # encoding = "utf-8" is especially used when the file contains special characters.... + for f in file: + print(f.strip()) diff --git a/largestno.py b/largestno.py index 0edc35dbe01..53934770163 100644 --- a/largestno.py +++ b/largestno.py @@ -1,7 +1,7 @@ # Python Program to find Largest of two Numbers using if-else statements a = int(input("Enter the first number: ")) b = int(input("Enter the second number: ")) -if(a >= b): - print(a, "is greater") +if a >= b: + print(a, "is greater") else: - print(b, "is greater") + print(b, "is greater") diff --git a/lcm.py b/lcm.py index c2d5b9731cc..2f0bcf14509 100644 --- a/lcm.py +++ b/lcm.py @@ -1,30 +1,30 @@ def lcm(x, y): """ - Find least common multiple of 2 positive integers. - :param x: int - first integer - :param y: int - second integer - :return: int - least common multiple + Find least common multiple of 2 positive integers. + :param x: int - first integer + :param y: int - second integer + :return: int - least common multiple - >>> lcm(8, 4) - 8 - >>> lcm(5, 3) - 15 - >>> lcm(15, 9) - 45 - >>> lcm(124, 23) - 2852 - >>> lcm(3, 6) - 6 - >>> lcm(13, 34) - 442 - >>> lcm(235, 745) - 35015 - >>> lcm(65, 86) - 5590 - >>> lcm(0, 1) - -1 - >>> lcm(-12, 35) - -1 + >>> lcm(8, 4) + 8 + >>> lcm(5, 3) + 15 + >>> lcm(15, 9) + 45 + >>> lcm(124, 23) + 2852 + >>> lcm(3, 6) + 6 + >>> lcm(13, 34) + 442 + >>> lcm(235, 745) + 35015 + >>> lcm(65, 86) + 5590 + >>> lcm(0, 1) + -1 + >>> lcm(-12, 35) + -1 """ if x <= 0 or y <= 0: return -1 diff --git a/leap year.py b/leap year.py index 1e7739189a4..dbced17c6e2 100644 --- a/leap year.py +++ b/leap year.py @@ -6,12 +6,12 @@ # year = int(input("Enter a year: ")) if (year % 4) == 0: - if (year % 100) == 0: - if (year % 400) == 0: - print("{0} is a leap year".format(year)) - else: - print("{0} is not a leap year".format(year)) - else: - print("{0} is a leap year".format(year)) + if (year % 100) == 0: + if (year % 400) == 0: + print("{0} is a leap year".format(year)) + else: + print("{0} is not a leap year".format(year)) + else: + print("{0} is a leap year".format(year)) else: - print("{0} is not a leap year".format(year)) + print("{0} is not a leap year".format(year)) diff --git a/levenshtein_distance.py b/levenshtein_distance.py index 1dde234f490..11cbb2c9dad 100644 --- a/levenshtein_distance.py +++ b/levenshtein_distance.py @@ -1,5 +1,4 @@ def levenshtein_dis(wordA, wordB): - wordA = wordA.lower() # making the wordA lower case wordB = wordB.lower() # making the wordB lower case diff --git a/linear search.py b/linear search.py index 781894f7b47..b1bda494a43 100644 --- a/linear search.py +++ b/linear search.py @@ -1,10 +1,13 @@ -#Author : ShankRoy +# Author : ShankRoy + def linearsearch(arr, x): - for i in range(len(arr)): - if arr[i] == x: - return i - return -1 -arr = ['t','u','t','o','r','i','a','l'] -x = 'a' -print("element found at index "+str(linearsearch(arr,x))) + for i in range(len(arr)): + if arr[i] == x: + return i + return -1 + + +arr = ["t", "u", "t", "o", "r", "i", "a", "l"] +x = "a" +print("element found at index " + str(linearsearch(arr, x))) diff --git a/linear-algebra-python/src/lib.py b/linear-algebra-python/src/lib.py index 9719d915bd2..a58651dbc55 100644 --- a/linear-algebra-python/src/lib.py +++ b/linear-algebra-python/src/lib.py @@ -100,7 +100,7 @@ def eulidLength(self): """ summe = 0 for c in self.__components: - summe += c ** 2 + summe += c**2 return math.sqrt(summe) def __add__(self, other): diff --git a/linear_search.py b/linear_search.py index a4cb39f9cdb..0a005cbcfe2 100644 --- a/linear_search.py +++ b/linear_search.py @@ -8,4 +8,4 @@ print(f"\n{x} found at position {position}") else: print(f"list: {list}") - print(f"{x} is not in list") \ No newline at end of file + print(f"{x} is not in list") diff --git a/loader.py b/loader.py index 7ce80fef603..41838271f63 100644 --- a/loader.py +++ b/loader.py @@ -1,5 +1,5 @@ """ -Shaurya Pratap Singh +Shaurya Pratap Singh @shaurya-blip Shows loading message while doing something. diff --git a/local_weighted_learning/local_weighted_learning.py b/local_weighted_learning/local_weighted_learning.py index a3a911c4306..193b82da738 100644 --- a/local_weighted_learning/local_weighted_learning.py +++ b/local_weighted_learning/local_weighted_learning.py @@ -20,7 +20,7 @@ def weighted_matrix(point: np.mat, training_data_x: np.mat, bandwidth: float) -> # calculating weights for all training examples [x(i)'s] for j in range(m): diff = point - training_data[j] - weights[j, j] = np.exp(diff * diff.T / (-2.0 * bandwidth ** 2)) + weights[j, j] = np.exp(diff * diff.T / (-2.0 * bandwidth**2)) return weights diff --git a/login.py b/login.py index 8095f4f4e54..d4844b261f1 100644 --- a/login.py +++ b/login.py @@ -1,6 +1,7 @@ import os from getpass import getpass + # Devloped By Black_angel # This is Logo Function def logo(): diff --git a/logs.py b/logs.py index 37519f55011..11d9d041dd1 100644 --- a/logs.py +++ b/logs.py @@ -12,7 +12,7 @@ import os # Load the Library Module from time import strftime # Load just the strftime Module from Time -logsdir = "c:\puttylogs" # Set the Variable logsdir +logsdir = r"c:\puttylogs" # Set the Variable logsdir zip_program = "zip.exe" # Set the Variable zip_program - 1.1 for files in os.listdir(logsdir): # Find all the files in the directory diff --git a/loops.py b/loops.py new file mode 100644 index 00000000000..985ffb8af4e --- /dev/null +++ b/loops.py @@ -0,0 +1,40 @@ +# 2 loops + +# for loop: + +""" +Syntax.. +-> "range" : starts with 0. +-> The space after the space is called as identiation, python generally identifies the block of code with the help of indentation, +indentation is generally 4 spaces / 1 tab space.. + + +for in range(): + statements you want to execute + +for in : + print() +To print the list / or any iterator items + +""" + +# 1. for with range... +for i in range(3): + print("Hello... with range") + # prints Hello 3 times.. + +# 2.for with list + +l1 = [1, 2, 3, 78, 98, 56, 52] +for i in l1: + print("list items", i) + # prints list items one by one.... + +for i in "ABC": + print(i) + +# while loop: +i = 0 +while i <= 5: + print("hello.. with while") + i += 1 diff --git a/mapit.py b/mapit.py index 53d0cd61014..27fb71a92fc 100644 --- a/mapit.py +++ b/mapit.py @@ -1,5 +1,6 @@ -import sys, webbrowser, pyperclip - +import sys +import webbrowser +import pyperclip if len(sys.argv) > 1: address = " ".join(sys.argv[1:]) diff --git a/mathfunctions b/mathfunctions.py similarity index 100% rename from mathfunctions rename to mathfunctions.py diff --git a/mobilePhoneSpecsScrapper.py b/mobilePhoneSpecsScrapper.py index 1578942f8dc..b749e210a0f 100644 --- a/mobilePhoneSpecsScrapper.py +++ b/mobilePhoneSpecsScrapper.py @@ -21,7 +21,6 @@ def __init__(self): self.absolute_path = os.getcwd().strip() + "/" + self.new_folder_name def crawl_html_page(self, sub_url): - url = sub_url # Url for html content parsing. # Handing the connection error of the url. @@ -31,7 +30,7 @@ def crawl_html_page(self, sub_url): soup = BeautifulSoup(page.text, "html.parser") return soup - except ConnectionError as err: + except ConnectionError: print("Please check your network connection and re-run the script.") exit() diff --git a/multiple_comditions.py b/multiple_comditions.py new file mode 100644 index 00000000000..6da636d5288 --- /dev/null +++ b/multiple_comditions.py @@ -0,0 +1,22 @@ +while True: + try: + user = int(input("enter any number b/w 1-3\n")) + if user == 1: + print("in first if") + elif user == 2: + print("in second if") + elif user == 3: + print("in third if") + else: + print("Enter numbers b/w the range of 1-3") + except: + print("enter only digits") + + +""" +## Why we are using elif instead of nested if ? +When you have multiple conditions to check, using nested if means that if the first condition is true, the program still checks the second +if condition, even though it's already decided that the first condition worked. This makes the program do more work than necessary. +On the other hand, when you use elif, if one condition is satisfied, the program exits the rest of the conditions and doesn't continue checking. +It’s more efficient and clean, as it immediately moves to the correct option without unnecessary steps. +""" diff --git a/multiplication_table.py b/multiplication_table.py index f659f4289d9..70045ed10e7 100644 --- a/multiplication_table.py +++ b/multiplication_table.py @@ -20,15 +20,15 @@ def table(rows, columns): columns = int(columns) rows = int(rows) - for r in range(1, rows+1): + for r in range(1, rows + 1): c = r - print(r, end='\t') + print(r, end="\t") i = 0 - while columns-1 > i: - print(c+r, end='\t') - c = c+r + while columns - 1 > i: + print(c + r, end="\t") + c = c + r i += 1 - print('\n') + print("\n") table(rows, columns) diff --git a/my project b/my project deleted file mode 100644 index 8aed0821858..00000000000 --- a/my project +++ /dev/null @@ -1,48 +0,0 @@ -# Program make a simple calculator - -# This function adds two numbers -def add(x, y): - return x + y - -# This function subtracts two numbers -def subtract(x, y): - return x - y - -# This function multiplies two numbers -def multiply(x, y): - return x * y - -# This function divides two numbers -def divide(x, y): - return x / y - - -print("Select operation.") -print("1.Add") -print("2.Subtract") -print("3.Multiply") -print("4.Divide") - -while True: - # Take input from the user - choice = input("Enter choice(1/2/3/4): ") - - # Check if choice is one of the four options - if choice in ('1', '2', '3', '4'): - num1 = float(input("Enter first number: ")) - num2 = float(input("Enter second number: ")) - - if choice == '1': - print(num1, "+", num2, "=", add(num1, num2)) - - elif choice == '2': - print(num1, "-", num2, "=", subtract(num1, num2)) - - elif choice == '3': - print(num1, "*", num2, "=", multiply(num1, num2)) - - elif choice == '4': - print(num1, "/", num2, "=", divide(num1, num2)) - break - else: - print("Invalid Input") diff --git a/nDigitNumberCombinations.py b/nDigitNumberCombinations.py index caad36e5e8d..5a17739615d 100644 --- a/nDigitNumberCombinations.py +++ b/nDigitNumberCombinations.py @@ -1,7 +1,7 @@ # ALL the combinations of n digit combo def nDigitCombinations(n): try: - npow = 10 ** n + npow = 10**n numbers = [] for code in range(npow): code = str(code).zfill(n) diff --git a/new.py b/new.py index 9df00e5faaa..c5058551ec7 100644 --- a/new.py +++ b/new.py @@ -1,137 +1,3 @@ -""" -a simple terminal program to find new about certain topic by web scraping site. -site used : -1. Times of India, - link : https://timesofindia.indiatimes.com/india/ -2. India's Today, - link : https://www.indiatoday.in/topic/ -""" -import requests -from bs4 import BeautifulSoup -import webbrowser -import time - - -def Times_of_India(userInput, ua): - bold_start = "\033[1m" - bold_end = "\033[0m" - - url = "https://timesofindia.indiatimes.com/india/" - url += userInput - - res = requests.post(url, headers=ua) - soup = BeautifulSoup(res.content, "html.parser") - data = soup.find_all(class_="w_tle") - - if len(data) > 0: - print("News available :", "\N{slightly smiling face}") - if len(data) == 0: - return 0 - - for item in range(len(data)): - print(bold_start, "\033[1;32;40m \nNEWS : ", item + 1, bold_end, end=" ") - data1 = data[item].find("a") - print(bold_start, data1.get_text(), bold_end) - - bol = input("For more details ->(y) (y/n) :: ") - if bol == "y": - url += data1.get("href") - print("%s" % url) - - webbrowser.open(url) - - return len(data) - - -def india_today(userInput, ua): - bold_start = "\033[1m" - bold_end = "\033[0m" - - url = "https://www.indiatoday.in/topic/" - url += userInput - - res = requests.get(url, headers=ua) - soup = BeautifulSoup(res.content, "html.parser") - data = soup.find_all(class_="field-content") - - if len(data) > 0: - print("\nNews available : ", "\N{slightly smiling face}") - k = 0 - for i in range(len(data)): - data1 = data[i].find_all("a") - for j in range(len(data1)): - print(bold_start, "\033[1;32;40m\nNEWS ", k + 1, bold_end, end=" : ") - k += 1 - print(bold_start, data1[j].get_text(), bold_end) - bol = input("\nFor more details ->(y) (y/n) :: ") - if bol == "y" or bol == "Y": - data2 = data[i].find("a") - url = data2.get("href") - webbrowser.open(url) - - return len(data) - - -if __name__ == "__main__": - import doctest - - doctest.testmod() - bold_start = "\033[1m" - bold_end = "\033[0m" - print("\033[5;31;40m") - print( - bold_start, - " HERE YOU WILL GET ALL THE NEWS JUST IN ONE SEARCH ", - bold_end, - ) - print("\n") - localtime = time.asctime(time.localtime(time.time())) - print(bold_start, localtime, bold_end) - - ua = { - "UserAgent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0" - } - print( - bold_start, - "\n\033[1;35;40m Search any news (state , city ,Country , AnyThings etc) : ", - bold_end, - end=" ", - ) - - userInput = input() - - print(bold_start, "\033[1;33;40m \n") - print("Which news channel data would you prefer") - print("1. Times of india") - print("2. India's Today", bold_end) - - say = int(input()) - - if say == 1: - length = Times_of_India(userInput, ua) - if length == 0: - print("Sorry Here No News Available", "\N{expressionless face}") - print("\n") - print( - "Would you like to go for India's Today (y/n):: ", - "\N{thinking face}", - end=" ", - ) - speak = input() - if speak == "y": - length = india_today(userInput, ua) - if length == 0: - print("Sorry No news", "\N{expressionless face}") - else: - print("\nThank you", "\U0001f600") - - elif say == 2: - length = india_today(userInput, ua) - - if length == 0: - print("Sorry No news") - else: - print("\nThank you", "\U0001f600") - else: - print("Sorry", "\N{expressionless face}") +print("Hello, world!") + diff --git a/new_pattern.py b/new_pattern.py index e9ebc1c257c..ae34086b658 100644 --- a/new_pattern.py +++ b/new_pattern.py @@ -1,25 +1,66 @@ -#pattern -#@@@@@@@@ $ -#@@@@@@@ $$ -#@@@@@@ $$$ -#@@@@@ $$$$ -#@@@@ $$$$$ -#@@@ $$$$$$ -#@@ $$$$$$$ -#@ $$$$$$$$ - def main(): - lines = int(input("Enter no.of lines: ")) - pattern(lines) - -def pattern(lines): - t = 1 - for i in reversed(range(lines)): - nxt_pattern = "$"*t - pattern = "@"*(i+1) - final_pattern = pattern + " n " + nxt_pattern - print(final_pattern) - t = t +1 + """Main function that gets user input and calls the pattern generation function.""" + try: + lines = int(input("Enter number of lines: ")) + if lines < 0: + raise ValueError("Number of lines must be non-negative") + result = pattern(lines) + print(result) + except ValueError as e: + if "invalid literal" in str(e): + print(f"Error: Please enter a valid integer number. {e}") + else: + print(f"Error: {e}") + except Exception as e: + print(f"An unexpected error occurred: {e}") + + +def pattern(lines: int) -> str: + """ + Generate a pattern of '@' and '$' characters. + + Args: + lines: Number of lines to generate in the pattern + + Returns: + A multiline string containing the specified pattern + + Raises: + ValueError: If lines is negative + + Examples: + >>> print(pattern(3)) + @@@ $ + @@ $$ + @ $$$ + + >>> print(pattern(1)) + @ $ + + >>> print(pattern(0)) + + + >>> pattern(-5) + Traceback (most recent call last): + ... + ValueError: Number of lines must be non-negative + """ + if lines < 0: + raise ValueError("Number of lines must be non-negative") + if lines == 0: + return "" + + pattern_lines = [] + for i in range(lines, 0, -1): + at_pattern = "@" * i + dollar_pattern = "$" * (lines - i + 1) + pattern_lines.append(f"{at_pattern} {dollar_pattern}") + + return "\n".join(pattern_lines) + if __name__ == "__main__": - main() \ No newline at end of file + import doctest + + doctest.testmod(verbose=True) + main() diff --git a/news_articles__scraper.py b/news_articles__scraper.py index 6c6360460cf..a9266ad0a58 100644 --- a/news_articles__scraper.py +++ b/news_articles__scraper.py @@ -11,10 +11,7 @@ # ! pip install newspaper3k -import pickle -import re import sys -import urllib import pandas as pd import requests @@ -41,7 +38,7 @@ fakearticle_links.append(link.get("href")) # this describes what to do if an exception is thrown - except Exception as e: + except Exception: # get the exception information error_type, error_obj, error_info = sys.exc_info() # print the link that cause the problem @@ -56,10 +53,6 @@ fakearticle_links[1888:] -import matplotlib.pyplot as plt -import pandas as pd - -import numpy as np """We have to modify the links so that the links actually work as we can see that the string extracted is the last part of the url! @@ -149,9 +142,7 @@ """**Scraping news from Times of India**""" -TOIarticle_links = ( - [] -) # Creating an empty list of all the urls of news from Times of India site +TOIarticle_links = [] # Creating an empty list of all the urls of news from Times of India site # Extracting links for all the pages (2 to 125) of boomlive fake news section for i in range(2, 126): @@ -168,7 +159,7 @@ TOIarticle_links.append(link.get("href")) # this describes what to do if an exception is thrown - except Exception as e: + except Exception: # get the exception information error_type, error_obj, error_info = sys.exc_info() # print the link that cause the problem diff --git a/news_intent_schema.json b/news_intent_schema.json deleted file mode 100644 index 19ca075c7d3..00000000000 --- a/news_intent_schema.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "interactionModel": { - "languageModel": { - "invocationName": "reddit news", - "intents": [ - { - "name": "AMAZON.CancelIntent", - "samples": [] - }, - { - "name": "AMAZON.HelpIntent", - "samples": [] - }, - { - "name": "AMAZON.StopIntent", - "samples": [] - }, - { - "name": "AMAZON.NavigateHomeIntent", - "samples": [] - }, - { - "name": "YesIntent", - "slots": [], - "samples": [ - "start", - "sure", - "yes" - ] - }, - { - "name": "NooIntent", - "slots": [], - "samples": [ - "go away", - "no" - ] - }, - { - "name": "AMAZON.FallbackIntent", - "samples": [] - }, - { - "name": "AMAZON.NoIntent", - "samples": [] - } - ], - "types": [] - } - } -} diff --git a/news_oversimplifier.py b/news_oversimplifier.py new file mode 100644 index 00000000000..08b828584ff --- /dev/null +++ b/news_oversimplifier.py @@ -0,0 +1,154 @@ +# news_oversimplifier.py +# Python command-line tool that fetches recent news articles based on a search query using NewsAPI and summarizes the article content using extractive summarization. You can also save the summaries to a text file. + +# (requires API key in .env file) + +import requests +import os +import sys +from dotenv import load_dotenv +from summa.summarizer import summarize + + +def main(): + # loads .env variables + load_dotenv() + API_KEY = os.getenv("NEWS_API_KEY") + + # check validity of command-line arguments + try: + if len(sys.argv) == 2: + news_query = sys.argv[1] + else: + raise IndexError() + except IndexError: + sys.exit("Please provide correct number of command-line arguments") + + try: + # get number of articles from user + while True: + try: + num_articles = int(input("Enter number of articles: ")) + break + except ValueError: + continue + + # fetch news articles based on user's query + articles = fetch_news(API_KEY, query=news_query, max_articles=num_articles) + + # output printing title, summary and no. of words in the summary + for i, article in enumerate(articles): + capitalized_title = capitalize_title(article["title"]) + print(f"\n{i + 1}. {capitalized_title}") + + content = article.get("content") or article.get("description") or "" + if not content.strip(): + print("No content to oversimplify.") + continue + + summary = summarize_text(content) # returns summary + count = word_count(summary) # returns word count + print(f"\nOVERSIMPLIFIED:\n{summary}\n{count} words\n") + + # ask user whether they want to save the output in a txt file + while True: + saving_status = ( + input("Would you like to save this in a text file? (y/n): ") + .strip() + .lower() + ) + if saving_status == "y": + save_summary(article["title"], summary) + break + elif saving_status == "n": + break + else: + print("Try again\n") + continue + + except Exception as e: + print("ERROR:", e) + + +def word_count(text): # pytest in test file + """ + Returns the number of words in the given text. + + args: + text (str): Input string to count words from. + + returns: + int: Number of words in the string. + """ + return len(text.split()) + + +def summarize_text(text, ratio=0.6): # pytest in test file + """ + Summarizes the given text using the summa library. + + args: + text (str): The input text to summarize. + ratio (float): Ratio of the original text to retain in the summary. + + returns: + str: The summarized text, or a fallback message if intro is present or summary is empty. + """ + summary = summarize(text, ratio=ratio) + if summary.lower().startswith("hello, and welcome to decoder!"): + return "No description available for this headline" + else: + return summary.strip() if summary else text + + +def capitalize_title(title): # pytest in test file + """ + Capitalizes all letters in a given article title. + + args: + title (str): The title to format. + + returns: + str: Title in uppercase with surrounding spaces removed. + """ + return title.upper().strip() + + +def fetch_news(api_key, query, max_articles=5): # no pytest + """ + Fetches a list of news articles from NewsAPI based on a query string. + + args: + api_key (str): NewsAPI key loaded from environment. + query (str): The keyword to search for in news articles. + max_articles (int): Maximum number of articles to fetch. + + returns: + list: List of dictionaries, each representing a news article. + + raises: + Exception: If the API response status is not 'ok'. + """ + url = f"https://newsapi.org/v2/everything?q={query}&language=en&apiKey={api_key}&pageSize={max_articles}" + response = requests.get(url) + data = response.json() + if data.get("status") != "ok": + raise Exception("Failed to fetch news:", data.get("message")) + return data["articles"] + + +def save_summary(title, summary, path="summaries.txt"): # no pytest + """ + Appends a formatted summary to a file along with its title. + + args: + title (str): Title of the article. + summary (str): Summarized text to save. + path (str): File path to save the summary, i.e. 'summaries.txt' + """ + with open(path, "a", encoding="utf-8") as f: + f.write(f"{title}\n{summary}\n{'=' * 60}\n") + + +if __name__ == "__main__": + main() diff --git a/nitkarshchourasia/to_sort/JARVIS_python_bot/JARVIS_2.0.py b/nitkarshchourasia/to_sort/JARVIS_python_bot/JARVIS_2.0.py index be17651b5c4..ded1c86bcd3 100644 --- a/nitkarshchourasia/to_sort/JARVIS_python_bot/JARVIS_2.0.py +++ b/nitkarshchourasia/to_sort/JARVIS_python_bot/JARVIS_2.0.py @@ -16,13 +16,13 @@ import pyjokes # for generating random jokes import requests import json -from PIL import Image, ImageGrab +from PIL import ImageGrab from gtts import gTTS # for 30 seconds clip "Jarvis, clip that!" and discord ctrl+k quick-move (might not come to fruition) from pynput import keyboard -from pynput.keyboard import Key, Listener -from pynput.mouse import Button, Controller +from pynput.keyboard import Key +from pynput.mouse import Controller from playsound import * # for sound output @@ -135,7 +135,7 @@ def takecommand(): print("Recognizing...") query = r.recognize_google(audio, language="en-in") print(f"User said {query}\n") - except Exception as e: + except Exception: print("Say that again please...") return "None" return query @@ -319,8 +319,8 @@ def get_app(Q): "shell": "powershell.exe", "paint": "mspaint.exe", "cmd": "cmd.exe", - "browser": "C:\\Program Files\Internet Explorer\iexplore.exe", - "vscode": "C:\\Users\\Users\\User\\AppData\\Local\\Programs\Microsoft VS Code", + "browser": r"C:\\Program Files\Internet Explorer\iexplore.exe", + "vscode": r"C:\\Users\\Users\\User\\AppData\\Local\\Programs\Microsoft VS Code", } # master diff --git a/nitkarshchourasia/to_sort/JARVIS_python_bot/features_to_add.py b/nitkarshchourasia/to_sort/JARVIS_python_bot/features_to_add.py index 78a259d07a7..129fba0bbd2 100644 --- a/nitkarshchourasia/to_sort/JARVIS_python_bot/features_to_add.py +++ b/nitkarshchourasia/to_sort/JARVIS_python_bot/features_to_add.py @@ -1,5 +1,4 @@ # imports modules -import sys import time from getpass import getuser diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/manage.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/manage.py index 5f76663dd2c..d456ef2cbd1 100644 --- a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/manage.py +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/manage.py @@ -1,5 +1,6 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/models.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/models.py index 96e4db39faa..6e2bc6831de 100644 --- a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/models.py +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/models.py @@ -1,4 +1,3 @@ -from typing import Any from django.db import models from django.utils import timezone diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/tests.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/tests.py index 7ce503c2dd9..a39b155ac3e 100644 --- a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/tests.py +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/tests.py @@ -1,3 +1 @@ -from django.test import TestCase - # Create your tests here. diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/views.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/views.py index 931228df1ec..f6453e063be 100644 --- a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/views.py +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo/views.py @@ -28,6 +28,7 @@ def index(request): ### Function to remove item, it receives todo item_id as primary key from url ## + def remove(request, item_id): item = Todo.objects.get(id=item_id) item.delete() diff --git a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/urls.py b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/urls.py index 226e326827f..1c0e6458be6 100644 --- a/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/urls.py +++ b/nitkarshchourasia/to_sort/django_projects/ToDo_webapp/todo_site/urls.py @@ -14,6 +14,7 @@ 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ + from django.contrib import admin from django.urls import path from todo import views diff --git a/notepad/notepad_support.py b/notepad/notepad_support.py index 7851ca9991a..c24a9c9f075 100644 --- a/notepad/notepad_support.py +++ b/notepad/notepad_support.py @@ -17,8 +17,6 @@ py3 = 0 except ImportError: - import tkinter.ttk as ttk - py3 = 1 # connect with database 'data.db' diff --git a/num-py.py b/num-py.py deleted file mode 100644 index af365bd585d..00000000000 --- a/num-py.py +++ /dev/null @@ -1,31 +0,0 @@ -import numpy as np - -# to check if shape are equal and find there power -def get_array(x, y): - a = np.shape(x) - b = np.shape(y) - - if a == b: - np_pow_array = x ** y - print("Array of powers without using np.power: ", np_pow_array) - - print("Array of powers using np.power: ", np.power(x, y)) - else: - print("Error : Shape of the given arrays is not equal.") - - -# 0d array -np_arr1 = np.array(3) -np_arr2 = np.array(4) -# 1d array -np_arr3 = np.array([1, 2]) -np_arr4 = np.array([3, 4]) -# 2d array -np_arr5 = np.array([[1, 2], [3, 4]]) -np_arr6 = np.array([[5, 6], [7, 8]]) - -get_array(np_arr1, np_arr2) -print() -get_array(np_arr3, np_arr4) -print() -get_array(np_arr5, np_arr6) diff --git a/number guessing.py b/number guessing.py index 25add25a64d..13ac2cf4198 100644 --- a/number guessing.py +++ b/number guessing.py @@ -1,15 +1,24 @@ import random + attempts_list = [] + + def show_score(): if len(attempts_list) <= 0: print("There is currently no high score, it's yours for the taking!") else: print("The current high score is {} attempts".format(min(attempts_list))) + + def start_game(): random_number = int(random.randint(1, 10)) print("Hello traveler! Welcome to the game of guesses!") player_name = input("What is your name? ") - wanna_play = input("Hi, {}, would you like to play the guessing game? (Enter Yes/No) ".format(player_name)) + wanna_play = input( + "Hi, {}, would you like to play the guessing game? (Enter Yes/No) ".format( + player_name + ) + ) # Where the show_score function USED to be attempts = 0 show_score() @@ -41,5 +50,7 @@ def start_game(): print("({})".format(err)) else: print("That's cool, have a good one!") -if __name__ == '__main__': + + +if __name__ == "__main__": start_game() diff --git a/numberguessinggame/index.py b/numberguessinggame/index.py index 3116af47dce..5b169817173 100644 --- a/numberguessinggame/index.py +++ b/numberguessinggame/index.py @@ -1,7 +1,7 @@ import random + def number_guessing_game(): - secret_number = random.randint(1, 100) attempts = 0 @@ -18,11 +18,14 @@ def number_guessing_game(): elif guess > secret_number: print("Too high! Try again.") else: - print(f"Congratulations! You guessed the number {secret_number} in {attempts} attempts!") + print( + f"Congratulations! You guessed the number {secret_number} in {attempts} attempts!" + ) break except ValueError: print("Please enter a valid number.") + if __name__ == "__main__": number_guessing_game() diff --git a/numeric_password_cracker.py b/numeric_password_cracker.py index aaf48ac144d..2a6215c9a64 100644 --- a/numeric_password_cracker.py +++ b/numeric_password_cracker.py @@ -1,5 +1,6 @@ import itertools + def generate_password_permutations(length): # Generate numeric password permutations of the given length digits = "0123456789" @@ -7,6 +8,7 @@ def generate_password_permutations(length): password = "".join(combination) yield password + def password_cracker(target_password, max_length=8): # Try different password lengths and generate permutations for length in range(1, max_length + 1): @@ -16,6 +18,7 @@ def password_cracker(target_password, max_length=8): return password return None + if __name__ == "__main__": # Target numeric password (change this to the password you want to crack) target_password = "9133278" @@ -26,5 +29,6 @@ def password_cracker(target_password, max_length=8): if cracked_password: print(f"Password successfully cracked! The password is: {cracked_password}") else: - print("Password not found. Try increasing the max_length or target a different password.") - + print( + "Password not found. Try increasing the max_length or target a different password." + ) diff --git a/other_pepole/get_ip_gui b/other_pepole/get_ip_gui index 5728697ac5b..8043831c3bd 100755 --- a/other_pepole/get_ip_gui +++ b/other_pepole/get_ip_gui @@ -2,72 +2,84 @@ # -*- coding: utf-8 -*- import socket -# **************** Modules Require *****************# -from tkinter import * +from tkinter import Tk, Label, Button, Frame from urllib.request import urlopen +from urllib.error import URLError -# **************** Get IP commands *****************# -# control buttons -def get_wan_ip(): - try: - # get ip from http://ipecho.net/plain as text - wan_ip = urlopen('http://ipecho.net/plain').read().decode('utf-8') - res.configure(text='Wan IP is : ' + wan_ip, fg='#600') - except: - res.configure(text='Problem in source : http://ipecho.net/plain', fg='red') +class IPApp: + '''A simple GUI application to get WAN and local IP addresses.''' + def __init__(self): + '''Initialize the application''' + self.root = Tk() + self.root.title('Khaled programming practice') + self._setup_ui() + def _setup_ui(self) -> None: + """Initialize the user interface""" + # Result label + self.res = Label(self.root, text='00.00.00.00', font=25) + self.res.grid(row=0, column=0, columnspan=4, sticky='N', padx=10, pady=5) -# get local ip -def get_local_ip(): - try: - lan_ip = (socket.gethostbyname(socket.gethostname())) - res.configure(text='Local IP is : ' + lan_ip, fg='#600') - except: - res.configure(text='Unkown Error', fg='#red') - # **************** about control button *****************# + # Buttons + Button(self.root, text='Get Wan IP', command=self.get_wan_ip).grid( + row=1, column=0, padx=5, pady=5, sticky='W') + Button(self.root, text='Get Local IP', command=self.get_local_ip).grid( + row=1, column=1, padx=5, pady=5, sticky='W') + Button(self.root, text='About', command=self.show_about).grid( + row=1, column=2, padx=5, pady=5, sticky='W') + Button(self.root, text='Quit', command=self.root.quit, bg='#f40').grid( + row=1, column=3, padx=5, pady=5, sticky='E') + # About section widgets (initially hidden) + self.about_frame = Frame(self.root, width=350, height=2, bg='blue') + self.about_info = Label(self.root, text="""\ +Practice Python +Take idea from here: +https://github.com/geekcomputers/Python/blob/master/myip.py +""", fg='#02F') + self.about_close = Button(self.root, text='Close', + command=self.hide_about, bg='#55F') -# show about info and change the button command and place -def about(): - global close_app, frame, info - about_app.destroy() - frame = Frame(root, width=350, height=2, bg='blue') - frame.grid(row=2, column=0, columnspan=4) - info = Label(root, text=""" - Practice Python - Take idea from here : - https://github.com/geekcomputers/Python/blob/master/myip.py - """, fg='#02F') - info.grid(row=3, column=0, columnspan=4, padx=5) - close_app = Button(root, text='Close', command=close_about, bg='#55F') - close_app.grid(row=4, column=0, columnspan=4, pady=5) + def get_wan_ip(self) -> None: + """Get and display WAN IP address""" + try: + wan_ip = urlopen('http://ipecho.net/plain', timeout=5).read().decode('utf-8') + self.res.configure(text=f'WAN IP is: {wan_ip}', fg='#600') + except URLError as e: + self.res.configure(text=f'Network error: {e.reason}', fg='red') + except Exception as e: + self.res.configure(text=f'Unexpected error: {str(e)}', fg='red') + def get_local_ip(self) -> None: + """Get and display local IP address""" + try: + local_ip = socket.gethostbyname(socket.gethostname()) + self.res.configure(text=f'Local IP is: {local_ip}', fg='#600') + except Exception as e: + self.res.configure(text=f'Error getting local IP: {str(e)}', fg='red') -# remove about info and remove close button then return about button in orignal place -def close_about(): - global frame, about_app, info - info.destroy() - frame.destroy() - close_app.destroy() - about_app = Button(root, text='about', command=about) - about_app.grid(row=1, column=2, padx=5, pady=5, sticky=W) + def show_about(self) -> None: + """Show about information""" + self.about_frame.grid(row=2, column=0, columnspan=4) + self.about_info.grid(row=3, column=0, columnspan=4, padx=5) + self.about_close.grid(row=4, column=0, columnspan=4, pady=5) + def hide_about(self) -> None: + """Hide about information""" + self.about_frame.grid_remove() + self.about_info.grid_remove() + self.about_close.grid_remove() -# **************** Tkinter GUI *****************# -root = Tk() -root.title('Khaled programing practice') -# all buttons -res = Label(root, text='00.00.00.00', font=25) -res_wan_ip = Button(root, text='Get Wan IP', command=get_wan_ip) -res_local_ip = Button(root, text='Get Local IP', command=get_local_ip) -about_app = Button(root, text='about', command=about) -quit_app = Button(root, text='quit', command=quit, bg='#f40') -# method grid to install the button in window -res.grid(row=0, column=0, columnspan=4, sticky=N, padx=10, pady=5) -res_wan_ip.grid(row=1, column=0, padx=5, pady=5, sticky=W) -res_local_ip.grid(row=1, column=1, padx=5, pady=5, sticky=W) -about_app.grid(row=1, column=2, padx=5, pady=5, sticky=W) -quit_app.grid(row=1, column=3, padx=5, pady=5, sticky=E) -# run GUI/app -root.mainloop() + def run(self) -> None: + """Start the application""" + self.root.mainloop() + + +def main() -> None: + app = IPApp() + app.run() + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/palindrome.py b/palindrome.py new file mode 100644 index 00000000000..9a9f7ea3531 --- /dev/null +++ b/palindrome.py @@ -0,0 +1,17 @@ +def is_palindrome(text): + text = text.lower() + + cleaned = "" + for char in text: + if char.isalnum(): + cleaned += char + + reversed_text = cleaned[::-1] + return cleaned == reversed_text + + +user_input = input("Enter a word or a sentence:") +if is_palindrome(user_input): + print("It's a palindrome") +else: + print("It's not a palindrome") diff --git a/password guessing.py b/password guessing.py new file mode 100644 index 00000000000..774db7f4e8c --- /dev/null +++ b/password guessing.py @@ -0,0 +1,66 @@ +# Author: Slayking1965 +# Email: kingslayer8509@gmail.com + +""" +Brute-force password guessing demonstration. + +This script simulates guessing a password using random choices from +printable characters. It is a conceptual demonstration and is **not +intended for real-world password cracking**. + +Example usage (simulated): +>>> import random +>>> random.seed(0) +>>> password = "abc" +>>> chars_list = list("abc") +>>> guess = random.choices(chars_list, k=len(password)) +>>> guess # doctest: +ELLIPSIS +['a', 'c', 'b']... +""" + +import random +import string +from typing import List + + +def guess_password_simulation(password: str) -> str: + """ + Attempt to guess a password using random choices from printable chars. + + Parameters + ---------- + password : str + The password to guess. + + Returns + ------- + str + The correctly guessed password. + + Example: + >>> random.seed(1) + >>> guess_password_simulation("abc") # doctest: +ELLIPSIS + 'abc' + """ + chars_list: List[str] = list(string.printable) + guess: List[str] = [] + + attempts = 0 + while guess != list(password): + guess = random.choices(chars_list, k=len(password)) + attempts += 1 + print(f"<== Attempt {attempts}: {''.join(guess)} ==>") + + print("Password guessed successfully!") + return "".join(guess) + + +if __name__ == "__main__": + import doctest + import pyautogui + + doctest.testmod() + # Prompt user for password safely + user_password: str = pyautogui.password("Enter a password: ") + if user_password: + guess_password_simulation(user_password) diff --git a/passwordGen.py b/passwordGen.py index 357c14619fc..56ab3b462a1 100644 --- a/passwordGen.py +++ b/passwordGen.py @@ -1,29 +1,23 @@ import random - lChars = "abcdefghijklmnopqrstuvwxyz" uChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" digits = "1234567890" -specialChars = "!@#$%^&*-_+=" - -passLen = 10 # actual generated password length will be this length + 1 +specialChars = "!@#$%^&*-_+=()[]" myPass = "" +# Generate 3 lowercase letters +for _ in range(3): + myPass += random.choice(lChars) + +# Generate 3 digits +for _ in range(3): + myPass += random.choice(digits) + +# Generate 2 special characters +for _ in range(2): + myPass += random.choice(specialChars) -for i in range(passLen): - while (len(myPass)) <= 2: - index = random.randrange(len(lChars)) - myPass = myPass + lChars[index] - myPassLen = len(myPass) - while (len(myPass)) <= 5: - index = random.randrange(len(digits)) - myPass = myPass + digits[index] - myPassLen = len(myPass) - while (len(myPass)) <= 7: - index = random.randrange(len(specialChars)) - myPass = myPass + specialChars[index] - myPassLen = len(myPass) - while (len(myPass)) <= 10: - index = random.randrange(len(uChars)) - myPass = myPass + uChars[index] - myPassLen = len(myPass) +# Generate 2 uppercase letters +for _ in range(2): + myPass += random.choice(uChars) -print(myPass) +print(myPass) diff --git a/password_checker.py b/password_checker.py index afc5f7203ba..4fb610d90a8 100644 --- a/password_checker.py +++ b/password_checker.py @@ -1,24 +1,27 @@ import time -pwd="AKS2608" #any password u want to set + +pwd = "AKS2608" # any password u want to set + def IInd_func(): - count1=0 - for j in range(5): - a=0 - count=0 - user_pwd = input("") #password you remember - for i in range(len(pwd)): - if user_pwd[i] == pwd[a]: #comparing remembered pwd with fixed pwd - a +=1 - count+=1 - if count==len(pwd): - print("correct pwd") - break - else: - count1 += 1 - print("not correct") - if count1==5: - time.sleep(30) - IInd_func() + count1 = 0 + for j in range(5): + a = 0 + count = 0 + user_pwd = input("") # password you remember + for i in range(len(pwd)): + if user_pwd[i] == pwd[a]: # comparing remembered pwd with fixed pwd + a += 1 + count += 1 + if count == len(pwd): + print("correct pwd") + break + else: + count1 += 1 + print("not correct") + if count1 == 5: + time.sleep(30) + IInd_func() + IInd_func() diff --git a/password_programs_multiple/animal_name_scraiper.py b/password_programs_multiple/animal_name_scraiper.py index 8204e90d794..450dd9a03bd 100644 --- a/password_programs_multiple/animal_name_scraiper.py +++ b/password_programs_multiple/animal_name_scraiper.py @@ -1,9 +1,5 @@ import requests -from requests import get from bs4 import BeautifulSoup -import pandas as pd -import numpy as np -import html5lib # * Using html5lib as the parser is good # * It is the most lenient parser and works as @@ -51,7 +47,6 @@ while next_sibling and next_sibling.name == "br": next_sibling = next_sibling.next_sibling - # Print the text content of the next sibling element if next_sibling: print(next_sibling.text.strip()) diff --git a/password_programs_multiple/passwordGenerator.py b/password_programs_multiple/passwordGenerator.py index 1bde3d18051..2e7678ae660 100644 --- a/password_programs_multiple/passwordGenerator.py +++ b/password_programs_multiple/passwordGenerator.py @@ -1,125 +1,108 @@ # PasswordGenerator GGearing 314 01/10/19 # modified Prince Gangurde 4/4/2020 -from random import randint +import random import pycountry -case = randint(1, 2) -number = randint(1, 999) -# TODO: Pick random country from it +def generate_password(): + # Define characters and word sets + special_characters = list("!@#$%/?<>|&*-=+_") -countries = list(pycountry.countries) -country_names = [country.name for country in countries] + animals = ( + "ant", + "alligator", + "baboon", + "badger", + "barb", + "bat", + "beagle", + "bear", + "beaver", + "bird", + "bison", + "bombay", + "bongo", + "booby", + "butterfly", + "bee", + "camel", + "cat", + "caterpillar", + "catfish", + "cheetah", + "chicken", + "chipmunk", + "cow", + "crab", + "deer", + "dingo", + "dodo", + "dog", + "dolphin", + "donkey", + "duck", + "eagle", + "earwig", + "elephant", + "emu", + "falcon", + "ferret", + "fish", + "flamingo", + "fly", + "fox", + "frog", + "gecko", + "gibbon", + "giraffe", + "goat", + "goose", + "gorilla", + ) -print(country_names) + colours = ( + "red", + "orange", + "yellow", + "green", + "blue", + "indigo", + "violet", + "purple", + "magenta", + "cyan", + "pink", + "brown", + "white", + "grey", + "black", + ) -# TODO: Try to add languages, too. + # Get random values + animal = random.choice(animals) + colour = random.choice(colours) + number = random.randint(1, 999) + special = random.choice(special_characters) + case_choice = random.choice(["upper_colour", "upper_animal"]) -specialCharacters = ( - "!", - "@", - "#", - "$", - "%", - "/", - "?", - ":", - "<", - ">", - "|", - "&", - "*", - "-", - "=", - "+", - "_", -) + # Pick a random country and language + country = random.choice(list(pycountry.countries)).name + languages = [lang.name for lang in pycountry.languages if hasattr(lang, "name")] + language = random.choice(languages) -animals = ( - "ant", - "alligator", - "baboon", - "badger", - "barb", - "bat", - "beagle", - "bear", - "beaver", - "bird", - "bison", - "bombay", - "bongo", - "booby", - "butterfly", - "bee", - "camel", - "cat", - "caterpillar", - "catfish", - "cheetah", - "chicken", - "chipmunk", - "cow", - "crab", - "deer", - "dingo", - "dodo", - "dog", - "dolphin", - "donkey", - "duck", - "eagle", - "earwig", - "elephant", - "emu", - "falcon", - "ferret", - "fish", - "flamingo", - "fly", - "fox", - "frog", - "gecko", - "gibbon", - "giraffe", - "goat", - "goose", - "gorilla", -) + # Apply casing + if case_choice == "upper_colour": + colour = colour.upper() + else: + animal = animal.upper() -colour = ( - "red", - "orange", - "yellow", - "green", - "blue", - "indigo", - "violet", - "purple", - "magenta", - "cyan", - "pink", - "brown", - "white", - "grey", - "black", -) + # Combine to form password + password = f"{colour}{number}{animal}{special}" + print("Generated Password:", password) + print("Based on Country:", country) + print("Language Hint:", language) -chosenanimal = animals[ - randint(0, len(animals) - 1) -] # randint will return max lenght but , tuple has index from 0 to len-1 -chosencolour = colour[randint(0, len(colour) - 1)] -chosenSpecialCharacter = specialCharacters[randint(0, len(specialCharacters) - 1)] -if case == 1: - chosenanimal = chosenanimal.upper() - print(chosencolour + str(number) + chosenanimal + chosenSpecialCharacter) -else: - chosencolour = chosencolour.upper() - print(chosenanimal + str(number) + chosencolour + chosenSpecialCharacter) - -# Try to consolidate unify the characters. - - -# The program can be further improved. +# Run it +generate_password() diff --git a/personal_translator.py b/personal_translator.py index 6a704d572c2..146d62e7346 100644 --- a/personal_translator.py +++ b/personal_translator.py @@ -12,6 +12,7 @@ from googletrans import Translator + # make a simple function that will translate any language to english def text_translator(Text): translator = Translator() diff --git a/ping_servers.py b/ping_servers.py index bce734e45e9..22b2f876cc5 100644 --- a/ping_servers.py +++ b/ping_servers.py @@ -29,7 +29,6 @@ ) sys.exit(0) else: - if ( len(sys.argv) < 3 ): # If no arguments are passed,display the help/instructions on how to run the script diff --git a/ping_subnet.py b/ping_subnet.py index e8eb28d933f..15677892f37 100644 --- a/ping_subnet.py +++ b/ping_subnet.py @@ -25,7 +25,6 @@ ) sys.exit(0) else: - if ( len(sys.argv) < 2 ): # If no arguments are passed then display the help and instructions on how to run the script diff --git a/power_of_n.py b/power_of_n.py index 69b8994be94..f0800006682 100644 --- a/power_of_n.py +++ b/power_of_n.py @@ -3,6 +3,7 @@ __version__ = "1.0.0" __date__ = "2023-09-03" + def binaryExponentiation(x: float, n: int) -> float: """ Function to calculate x raised to the power n (i.e., x^n) where x is a float number and n is an integer and it will return float value @@ -49,10 +50,9 @@ def binaryExponentiation(x: float, n: int) -> float: print(f"Version: {__version__}") print(f"Function Documentation: {binaryExponentiation.__doc__}") print(f"Date: {__date__}") - - print() # Blank Line + + print() # Blank Line print(binaryExponentiation(2.00000, 10)) print(binaryExponentiation(2.10000, 3)) print(binaryExponentiation(2.00000, -2)) - \ No newline at end of file diff --git a/powers of 2.py b/powers of 2.py index 5ac0e09fc36..919f1e1528f 100644 --- a/powers of 2.py +++ b/powers of 2.py @@ -6,8 +6,8 @@ # terms = int(input("How many terms? ")) # use anonymous function -result = list(map(lambda x: 2 ** x, range(terms))) +result = list(map(lambda x: 2**x, range(terms))) -print("The total terms are:",terms) +print("The total terms are:", terms) for i in range(terms): - print("2 raised to power",i,"is",result[i]) + print("2 raised to power", i, "is", result[i]) diff --git a/primelib/primelib.py b/primelib/primelib.py index 65856679561..e43f267c7d2 100644 --- a/primelib/primelib.py +++ b/primelib/primelib.py @@ -16,7 +16,7 @@ greatestPrimeFactor(number) smallestPrimeFactor(number) getPrime(n) -getPrimesBetween(pNumber1, pNumber2) +getPrimesBetween(pNumber1, pNumber2) ---- @@ -51,7 +51,7 @@ def pi(maxK=70, prec=1008, disp=1007): gc().prec = prec K, M, L, X, S = 6, 1, 13591409, 1, 13591409 for k in range(1, maxK + 1): - M = Dec((K ** 3 - (K << 4)) * M / k ** 3) + M = Dec((K**3 - (K << 4)) * M / k**3) L += 545140134 X *= -262537412640768000 S += Dec(M * L) / X @@ -68,9 +68,9 @@ def isPrime(number): """ # precondition - assert isinstance(number, int) and ( - number >= 0 - ), "'number' must been an int and positive" + assert isinstance(number, int) and (number >= 0), ( + "'number' must been an int and positive" + ) # 0 and 1 are none primes. if number <= 3: @@ -138,7 +138,6 @@ def getPrimeNumbers(N): # iterates over all numbers between 2 up to N+1 # if a number is prime then appends to list 'ans' for number in range(2, N + 1): - if isPrime(number): ans.append(number) @@ -169,14 +168,11 @@ def primeFactorization(number): quotient = number if number == 0 or number == 1: - ans.append(number) # if 'number' not prime then builds the prime factorization of 'number' elif not isPrime(number): - while quotient != 1: - if isPrime(factor) and (quotient % factor == 0): ans.append(factor) quotient /= factor @@ -202,9 +198,9 @@ def greatestPrimeFactor(number): """ # precondition - assert isinstance(number, int) and ( - number >= 0 - ), "'number' bust been an int and >= 0" + assert isinstance(number, int) and (number >= 0), ( + "'number' bust been an int and >= 0" + ) ans = 0 @@ -229,9 +225,9 @@ def smallestPrimeFactor(number): """ # precondition - assert isinstance(number, int) and ( - number >= 0 - ), "'number' bust been an int and >= 0" + assert isinstance(number, int) and (number >= 0), ( + "'number' bust been an int and >= 0" + ) ans = 0 @@ -289,9 +285,9 @@ def goldbach(number): """ # precondition - assert ( - isinstance(number, int) and (number > 2) and isEven(number) - ), "'number' must been an int, even and > 2" + assert isinstance(number, int) and (number > 2) and isEven(number), ( + "'number' must been an int, even and > 2" + ) ans = [] # this list will returned @@ -307,11 +303,9 @@ def goldbach(number): loop = True while i < lenPN and loop: - j = i + 1 while j < lenPN and loop: - if primeNumbers[i] + primeNumbers[j] == number: loop = False ans.append(primeNumbers[i]) @@ -359,9 +353,9 @@ def gcd(number1, number2): number2 = rest # precondition - assert isinstance(number1, int) and ( - number1 >= 0 - ), "'number' must been from type int and positive" + assert isinstance(number1, int) and (number1 >= 0), ( + "'number' must been from type int and positive" + ) return number1 @@ -388,13 +382,11 @@ def kgV(number1, number2): # for kgV (x,1) if number1 > 1 and number2 > 1: - # builds the prime factorization of 'number1' and 'number2' primeFac1 = primeFactorization(number1) primeFac2 = primeFactorization(number2) elif number1 == 1 or number2 == 1: - primeFac1 = [] primeFac2 = [] ans = max(number1, number2) @@ -406,11 +398,8 @@ def kgV(number1, number2): # iterates through primeFac1 for n in primeFac1: - if n not in done: - if n in primeFac2: - count1 = primeFac1.count(n) count2 = primeFac2.count(n) @@ -418,7 +407,6 @@ def kgV(number1, number2): ans *= n else: - count1 = primeFac1.count(n) for i in range(count1): @@ -428,9 +416,7 @@ def kgV(number1, number2): # iterates through primeFac2 for n in primeFac2: - if n not in done: - count2 = primeFac2.count(n) for i in range(count2): @@ -439,9 +425,9 @@ def kgV(number1, number2): done.append(n) # precondition - assert isinstance(ans, int) and ( - ans >= 0 - ), "'ans' must been from type int and positive" + assert isinstance(ans, int) and (ans >= 0), ( + "'ans' must been from type int and positive" + ) return ans @@ -463,7 +449,6 @@ def getPrime(n): ans = 2 # this variable holds the answer while index < n: - index += 1 ans += 1 # counts to the next number @@ -474,9 +459,9 @@ def getPrime(n): ans += 1 # precondition - assert isinstance(ans, int) and isPrime( - ans - ), "'ans' must been a prime number and from type int" + assert isinstance(ans, int) and isPrime(ans), ( + "'ans' must been a prime number and from type int" + ) return ans @@ -493,9 +478,9 @@ def getPrimesBetween(pNumber1, pNumber2): """ # precondition - assert ( - isPrime(pNumber1) and isPrime(pNumber2) and (pNumber1 < pNumber2) - ), "The arguments must been prime numbers and 'pNumber1' < 'pNumber2'" + assert isPrime(pNumber1) and isPrime(pNumber2) and (pNumber1 < pNumber2), ( + "The arguments must been prime numbers and 'pNumber1' < 'pNumber2'" + ) number = pNumber1 + 1 # jump to the next number @@ -507,7 +492,6 @@ def getPrimesBetween(pNumber1, pNumber2): number += 1 while number < pNumber2: - ans.append(number) number += 1 @@ -540,7 +524,6 @@ def getDivisors(n): ans = [] # will be returned. for divisor in range(1, n + 1): - if n % divisor == 0: ans.append(divisor) @@ -560,9 +543,9 @@ def isPerfectNumber(number): """ # precondition - assert isinstance(number, int) and ( - number > 1 - ), "'number' must been an int and >= 1" + assert isinstance(number, int) and (number > 1), ( + "'number' must been an int and >= 1" + ) divisors = getDivisors(number) diff --git a/print hello world.py b/print hello world.py index 0e3295e312d..1d6d4214987 100644 --- a/print hello world.py +++ b/print hello world.py @@ -1,3 +1,3 @@ # This program prints Hello, world! -print('Hello, world!') +print("Hello, world!") diff --git a/printing_hello_world.py b/printing_hello_world.py new file mode 100644 index 00000000000..44159b3954c --- /dev/null +++ b/printing_hello_world.py @@ -0,0 +1 @@ +print("Hello world") diff --git a/prison_break_scrapper.py b/prison_break_scrapper.py index ad50636cd6a..5aaf5ca5601 100644 --- a/prison_break_scrapper.py +++ b/prison_break_scrapper.py @@ -2,6 +2,7 @@ Scrapper for downloading prison break series from an open server and putting them in a designated folder. """ + import os import subprocess diff --git a/psunotify.py b/psunotify.py index 5e95769a916..e42ca0be03d 100644 --- a/psunotify.py +++ b/psunotify.py @@ -20,7 +20,7 @@ "https://www.google.co.in/search?q=gate+psu+2017+ext:pdf&start=" + page ) ht = br.open(p) -text = '(.+?)' +text = r'(.+?)' patt = re.compile(text) h = ht.read() urls = re.findall(patt, h) @@ -45,7 +45,7 @@ file.close() print("Done") - except urllib2.URLError as e: + except urllib2.URLError: print( "Sorry there exists a problem with this URL Please Download this Manually " + str(url) diff --git a/puttylogs.py b/puttylogs.py index 6e4c67a4784..46444f95e39 100644 --- a/puttylogs.py +++ b/puttylogs.py @@ -13,8 +13,8 @@ import shutil # Load the Library Module - 1.2 from time import strftime # Load just the strftime Module from Time -logsdir = "c:\logs\puttylogs" # Set the Variable logsdir -zipdir = "c:\logs\puttylogs\zipped_logs" # Set the Variable zipdir - 1.2 +logsdir = r"c:\logs\puttylogs" # Set the Variable logsdir +zipdir = r"c:\logs\puttylogs\zipped_logs" # Set the Variable zipdir - 1.2 zip_program = "zip.exe" # Set the Variable zip_program - 1.1 for files in os.listdir(logsdir): # Find all the files in the directory diff --git a/pyauto.py b/pyauto.py deleted file mode 100644 index 7f9a19e0e77..00000000000 --- a/pyauto.py +++ /dev/null @@ -1,25 +0,0 @@ -# Author-Slayking1965 -# email-kingslayer8509@gmail.com -import random -import pyautogui -import string - - -chars = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" - -chars = string.printable -chars_list = list(chars) - - -password = pyautogui.password("Enter a password : ") - -guess_password = "" - -while guess_password != password: - guess_password = random.choices(chars_list, k=len(password)) - - print("<==================" + str(guess_password) + "==================>") - - if guess_password == list(password): - print("Your password is : " + "".join(guess_password)) - break diff --git a/pygame.py b/pygame.py deleted file mode 100644 index d35a34b0ee4..00000000000 --- a/pygame.py +++ /dev/null @@ -1,77 +0,0 @@ -# author-slayking1965 -""" -This is a game very similar to stone paper scissor -In this game : -if computer chooses snake and user chooses water, the snake will drink water and computer wins. -If computer chooses gun and user chooses water, the gun gets drown into water and user wins. -And so on for other cases -""" - -import random -import time - -choices = {"S": "Snake", "W": "Water", "G": "Gun"} - -x = 0 -com_win = 0 -user_win = 0 -match_draw = 0 - -print("Welcome to the Snake-Water-Gun Game\n") -print("I am Mr. Computer, We will play this game 10 times") -print("Whoever wins more matches will be the winner\n") - -while x < 10: - print(f"Game No. {x+1}") - for key, value in choices.items(): - print(f"Choose {key} for {value}") - - com_choice = random.choice(list(choices.keys())).lower() - user_choice = input("\n----->").lower() - - if user_choice == "s" and com_choice == "w": - com_win += 1 - - elif user_choice == "s" and com_choice == "g": - com_win += 1 - - elif user_choice == "w" and com_choice == "s": - user_win += 1 - - elif user_choice == "g" and com_choice == "s": - user_win += 1 - - elif user_choice == "g" and com_choice == "w": - com_win += 1 - - elif user_choice == "w" and com_choice == "g": - user_win += 1 - - elif user_choice == com_choice: - match_draw += 1 - - else: - print("\n\nYou entered wrong !!!!!!") - x = 0 - print("Restarting the game") - print("") - time.sleep(1) - continue - - x += 1 - print("\n") - - -print("Here are final stats of the 10 matches : ") -print(f"Mr. Computer won : {com_win} matches") -print(f"You won : {user_win} matches") -print(f"Matches Drawn : {match_draw}") - -if com_win > user_win: - print("\n-------Mr. Computer won-------") - -elif com_win < user_win: - print("\n-----------You won-----------") - -else: - print("\n----------Match Draw----------") diff --git a/python Space Invader game.py b/python Space Invader game.py index 2d07677f67e..98cdc769ce9 100644 --- a/python Space Invader game.py +++ b/python Space Invader game.py @@ -12,19 +12,19 @@ # background -background = pygame.image.load('background.png') +background = pygame.image.load("background.png") -#bg sound -mixer.music.load('background.wav') +# bg sound +mixer.music.load("background.wav") mixer.music.play(-1) # title and icon pygame.display.set_caption("Space Invendera") -icon = pygame.image.load('battleship.png') +icon = pygame.image.load("battleship.png") pygame.display.set_icon(icon) # player -playerimg = pygame.image.load('transport.png') +playerimg = pygame.image.load("transport.png") playerx = 370 playery = 480 playerx_change = 0 @@ -38,37 +38,40 @@ number_of_enemies = 6 for i in range(number_of_enemies): - enemyimg.append(pygame.image.load('enemy.png')) + enemyimg.append(pygame.image.load("enemy.png")) enemyx.append(random.randint(0, 800)) enemyy.append(random.randint(50, 150)) enemyx_change.append(2.5) enemyy_change.append(40) # bullet -bulletimg = pygame.image.load('bullet.png') +bulletimg = pygame.image.load("bullet.png") bulletx = 0 bullety = 480 bulletx_change = 0 bullety_change = 10 bullet_state = "ready" -#score +# score score_value = 0 -font = pygame.font.Font('freesansbold.ttf',32) +font = pygame.font.Font("freesansbold.ttf", 32) textx = 10 texty = 10 -#game over txt -over_font = pygame.font.Font('freesansbold.ttf',64) +# game over txt +over_font = pygame.font.Font("freesansbold.ttf", 64) -def show_score(x ,y): - score = font.render("score :"+ str(score_value),True, (255, 255, 255)) + +def show_score(x, y): + score = font.render("score :" + str(score_value), True, (255, 255, 255)) screen.blit(score, (x, y)) + def game_over_text(): over_txt = over_font.render("GAME OVER", True, (255, 255, 255)) screen.blit(over_txt, (200, 250)) + # for display player img def player(x, y): screen.blit(playerimg, (x, y)) @@ -76,7 +79,8 @@ def player(x, y): # foe desplaing enemy img -def enemy(x, y ,i): + +def enemy(x, y, i): screen.blit(enemyimg[i], (x, y)) @@ -87,7 +91,9 @@ def fire_bullet(x, y): def iscollision(enemyx, enemyy, bulletx, bullety): - distance = math.sqrt((math.pow(enemyx - bulletx, 2)) + (math.pow(enemyy - bullety, 2))) + distance = math.sqrt( + (math.pow(enemyx - bulletx, 2)) + (math.pow(enemyy - bullety, 2)) + ) if distance < 27: return True else: @@ -97,7 +103,6 @@ def iscollision(enemyx, enemyy, bulletx, bullety): # game loop running = True while running: - screen.fill((0, 0, 0)) # for bg img screen.blit(background, (0, 0)) @@ -107,20 +112,20 @@ def iscollision(enemyx, enemyy, bulletx, bullety): running = False # if keystroke in pressed whether it is right of left - if (event.type == pygame.KEYDOWN): - if (event.key == pygame.K_LEFT): + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_LEFT: playerx_change = -5 - if (event.key == pygame.K_RIGHT): + if event.key == pygame.K_RIGHT: playerx_change = 5 - if (event.key == pygame.K_SPACE): + if event.key == pygame.K_SPACE: if bullet_state == "ready": - bullet_sound = mixer.Sound('laser.wav') + bullet_sound = mixer.Sound("laser.wav") bullet_sound.play() bulletx = playerx fire_bullet(bulletx, bullety) - if (event.type == pygame.KEYUP): + if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: playerx_change = 0 @@ -132,8 +137,7 @@ def iscollision(enemyx, enemyy, bulletx, bullety): playerx = 736 for i in range(number_of_enemies): - - #game over + # game over if enemyy[i] > 440: for j in range(number_of_enemies): enemyy[j] = 2000 @@ -152,7 +156,7 @@ def iscollision(enemyx, enemyy, bulletx, bullety): # collision collision = iscollision(enemyx[i], enemyy[i], bulletx, bullety) if collision: - explossion_sound = mixer.Sound('explosion.wav') + explossion_sound = mixer.Sound("explosion.wav") explossion_sound.play() bullety = 480 bullet_state = "ready" @@ -172,5 +176,5 @@ def iscollision(enemyx, enemyy, bulletx, bullety): bullety -= bullety_change player(playerx, playery) - show_score(textx,texty) + show_score(textx, texty) pygame.display.update() diff --git a/pythonVideoDownloader.py b/pythonVideoDownloader.py index 7bae8eac998..ce8422e367e 100644 --- a/pythonVideoDownloader.py +++ b/pythonVideoDownloader.py @@ -33,7 +33,6 @@ def get_video_links(): def download_video_series(video_links): for link in video_links: - """iterate through all links in video_links and download them one by one""" diff --git a/python_codes b/python_codes deleted file mode 100644 index 0f602a1a751..00000000000 --- a/python_codes +++ /dev/null @@ -1,2 +0,0 @@ -python_codes -print("Python") diff --git a/python_sms.py b/python_sms.py index b5e578b3b86..99cf8f943dc 100644 --- a/python_sms.py +++ b/python_sms.py @@ -35,9 +35,7 @@ sname = row[0] snumber = row[1] - message = ( - f"{sname} There will be NO training tonight on the {tdate}. Sorry for the late notice, I have sent a mail as well, just trying to reach everyone, please do not reply to this message as this is automated" - ) + message = f"{sname} There will be NO training tonight on the {tdate}. Sorry for the late notice, I have sent a mail as well, just trying to reach everyone, please do not reply to this message as this is automated" username = "YOUR_USERNAME" sender = "WHO_IS_SENDING_THE_MAIL" @@ -67,10 +65,8 @@ postdata = urllib.urlencode(values) req = urllib2.Request(url, postdata) - print( f"Attempting to send SMS to {sname} at {snumber} on {tdate}") - f.write( - f"Attempting to send SMS to {sname} at {snumber} on {tdate}" - ) + print(f"Attempting to send SMS to {sname} at {snumber} on {tdate}") + f.write(f"Attempting to send SMS to {sname} at {snumber} on {tdate}") try: response = urllib2.urlopen(req) diff --git a/python_webscraper.py b/python_webscraper.py index a9322761a1c..fab418247d5 100644 --- a/python_webscraper.py +++ b/python_webscraper.py @@ -1,19 +1,20 @@ import requests from bs4 import BeautifulSoup + # Make a request on to your website page = requests.get("Paste your Website Domain here") -soup = BeautifulSoup(page.content, 'html.parser') +soup = BeautifulSoup(page.content, "html.parser") # Create all_h1_tags as empty list all_h1_tags = [] # Set all_h1_tags to all h1 tags of the soup -for element in soup.select('h1'): +for element in soup.select("h1"): all_h1_tags.append(element.text) # Create seventh_p_text and set it to 7th p element text of the page -seventh_p_text = soup.select('p')[6].text +seventh_p_text = soup.select("p")[6].text print(all_h1_tags, seventh_p_text) -# print all h1 elements and the text of the website on your console +# print all h1 elements and the text of the website on your console diff --git a/qrcode.py b/qrcode.py index dde9a035ac4..69e10eed74d 100644 --- a/qrcode.py +++ b/qrcode.py @@ -1,7 +1,14 @@ -# importing Required Modules import qrcode +import cv2 -# QR Code Generator -query = input("Enter Content: ") # Enter Content -code = qrcode.make(str(query)) # Making the QR code -code.save("qrcode.png") # Saving the QR code file +qr = qrcode.QRCode(version=1, box_size=10, border=5) + +data = input() +qr.add_data(data) +qr.make(fit=True) +img = qr.make_image(fill_color="blue", back_color="white") +path = data + ".png" +img.save(path) +cv2.imshow("QRCode", img) +cv2.waitKey(0) +cv2.destroyAllWindows() diff --git a/quiz_game.py b/quiz_game.py index c1ffd6696b0..cd2a8aff48c 100644 --- a/quiz_game.py +++ b/quiz_game.py @@ -1,32 +1,37 @@ -print('Welcome to AskPython Quiz') -answer=input('Are you ready to play the Quiz ? (yes/no) :') -score=0 -total_questions=3 - -if answer.lower()=='yes': - answer=input('Question 1: What is your Favourite programming language?') - if answer.lower()=='python': +print("Welcome to AskPython Quiz") +answer = input("Are you ready to play the Quiz ? (yes/no) :") +score = 0 +total_questions = 3 + +if answer.lower() == "yes": + answer = input("Question 1: What is your Favourite programming language?") + if answer.lower() == "python": score += 1 - print('correct') + print("correct") else: - print('Wrong Answer :(') - - - answer=input('Question 2: Do you follow any author on AskPython? ') - if answer.lower()=='yes': + print("Wrong Answer :(") + + answer = input("Question 2: Do you follow any author on AskPython? ") + if answer.lower() == "yes": score += 1 - print('correct') + print("correct") else: - print('Wrong Answer :(') - - answer=input('Question 3: What is the name of your favourite website for learning Python?') - if answer.lower()=='askpython': + print("Wrong Answer :(") + + answer = input( + "Question 3: What is the name of your favourite website for learning Python?" + ) + if answer.lower() == "askpython": score += 1 - print('correct') + print("correct") else: - print('Wrong Answer :(') - -print('Thankyou for Playing this small quiz game, you attempted',score,"questions correctly!") -mark=(score/total_questions)*100 -print('Marks obtained:',mark) -print('BYE!') \ No newline at end of file + print("Wrong Answer :(") + +print( + "Thankyou for Playing this small quiz game, you attempted", + score, + "questions correctly!", +) +mark = (score / total_questions) * 100 +print("Marks obtained:", mark) +print("BYE!") diff --git a/random_file_move.py b/random_file_move.py index f8a2af7704e..38ccdc8649b 100644 --- a/random_file_move.py +++ b/random_file_move.py @@ -6,7 +6,8 @@ # Description : This will move specified number of files(given in ratio) from the src directory to dest directory. -import os, random +import os +import random import argparse diff --git a/random_password_gen.py b/random_password_gen.py new file mode 100644 index 00000000000..64fb87b7a23 --- /dev/null +++ b/random_password_gen.py @@ -0,0 +1,41 @@ +""" +random_password_gen.py +A script to generate strong random passwords. + +Usage: +$ python random_password_gen.py + +Author: Keshavraj Pore +""" + +import random +import string + + +def generate_password(length=12): + characters = string.ascii_letters + string.digits + string.punctuation + password = "".join(random.choice(characters) for _ in range(length)) + return password + + +def main(): + print("Random Password Generator") + try: + length = int(input("Enter desired password length: ")) + if length < 6: + print(" Password length should be at least 6.") + return + password = generate_password(length) + print(f"\nGenerated Password: {password}") + + # Save to file + with open("passwords.txt", "a") as file: + file.write(password + "\n") + print(" Password saved to passwords.txt") + + except ValueError: + print(" Please enter a valid number.") + + +if __name__ == "__main__": + main() diff --git a/rangoli.py b/rangoli.py index 75191e08546..0fc7ccccc10 100644 --- a/rangoli.py +++ b/rangoli.py @@ -3,7 +3,7 @@ # Prints a rangoli of size n def print_rangoli(n): - """Prints a rangoli of size n""" + """Prints a rangoli of size n""" # Width of the rangoli width = 4 * n - 3 @@ -40,6 +40,6 @@ def print_rangoli(n): string = "" -if __name__ == '__main__': +if __name__ == "__main__": n = int(input()) print_rangoli(n) diff --git a/reading_csv.py b/reading_csv.py new file mode 100644 index 00000000000..8adad249270 --- /dev/null +++ b/reading_csv.py @@ -0,0 +1,20 @@ +import pandas as pd + +# reading csv file into python +df = pd.read_csv( + r"c:\PROJECT\Drug_Recommendation_System\drug_recommendation_system\Drugs_Review_Datasets.csv" +) # Replace the path with your own file path + +print(df) + +# Basic functions +print(df.info()) # Provides a short summary of the DataFrame +print(df.head()) # prints first 5 rows +print(df.tail()) # prints last 5 rows +print(df.describe()) # statistical summary of numeric columns +print(df.columns) # Returns column names +print(df.shape) # Returns the number of rows and columnsrr + +print( + help(pd) +) # Use help(pd) to explore and understand the available functions and attributes in the pandas (pd) lib diff --git a/recursiveStrings.py b/recursiveStrings.py index 874a1b0a104..0394638a78c 100644 --- a/recursiveStrings.py +++ b/recursiveStrings.py @@ -1,6 +1,6 @@ -""" author: Ataba29 +"""author: Ataba29 code has a matrix each list inside of the matrix has two strings -the code determines if the two strings are similar or different +the code determines if the two strings are similar or different from each other recursively """ @@ -9,19 +9,25 @@ def CheckTwoStrings(str1, str2): # function takes two strings and check if they are similar # returns True if they are identical and False if they are different - if(len(str1) != len(str2)): + if len(str1) != len(str2): return False - if(len(str1) == 1 and len(str2) == 1): + if len(str1) == 1 and len(str2) == 1: return str1[0] == str2[0] return (str1[0] == str2[0]) and CheckTwoStrings(str1[1:], str2[1:]) def main(): - matrix = [["hello", "wow"], ["ABSD", "ABCD"], - ["List", "List"], ["abcspq", "zbcspq"], - ["1263", "1236"], ["lamar", "lamars"], - ["amczs", "amczs"], ["yeet", "sheesh"], ] + matrix = [ + ["hello", "wow"], + ["ABSD", "ABCD"], + ["List", "List"], + ["abcspq", "zbcspq"], + ["1263", "1236"], + ["lamar", "lamars"], + ["amczs", "amczs"], + ["yeet", "sheesh"], + ] for i in matrix: if CheckTwoStrings(i[0], i[1]): diff --git a/recyclebin.py b/recyclebin.py index 83222be716e..5bc0bcc0823 100644 --- a/recyclebin.py +++ b/recyclebin.py @@ -14,11 +14,14 @@ # Description : Scans the recyclebin and displays the files in there, originally got this script from the Violent Python book +from winreg import OpenKey, HKEY_LOCAL_MACHINE, QueryValueEx + + def sid2user(sid): # Start of the function to gather the user try: key = OpenKey( HKEY_LOCAL_MACHINE, - "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" + "\\" + sid, + r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" + "\\" + sid, ) (value, type) = QueryValueEx(key, "ProfileImagePath") user = value.split("\\")[-1] diff --git a/remove a character from a file and rewrite.py b/remove a character from a file and rewrite.py index 18029c53db2..d74fcf764e3 100644 --- a/remove a character from a file and rewrite.py +++ b/remove a character from a file and rewrite.py @@ -1,28 +1,28 @@ -#Remove all the lines that contain the character `a' in a file and write it to another file. -f=open("test1.txt","r") #opening file test1.txt -lines = f.readlines() #saved lines +# Remove all the lines that contain the character `a' in a file and write it to another file. +f = open("test1.txt", "r") # opening file test1.txt +lines = f.readlines() # saved lines print("Original file is :") print(lines) f.close() - -# Rewriting lines -e=open("test3.txt","w") # file containing lines with 'a' -f=open("test1.txt","w") # file containing lines without 'a' +# Rewriting lines + +e = open("test3.txt", "w") # file containing lines with 'a' +f = open("test1.txt", "w") # file containing lines without 'a' for line in lines: - if 'a' in line or 'A' in line: - e.write(line) - else: - f.write(line) - + if "a" in line or "A" in line: + e.write(line) + else: + f.write(line) + e.close() -f.close() +f.close() -f=open("test1.txt","r") -lines=f.readlines() +f = open("test1.txt", "r") +lines = f.readlines() -e=open("test3.txt","r") -lines1=e.readlines() +e = open("test3.txt", "r") +lines1 = e.readlines() print("\n") diff --git a/replacetext.py b/replacetext.py index 4901df276be..41706b2ea5d 100644 --- a/replacetext.py +++ b/replacetext.py @@ -1,11 +1,36 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -# program to replace all the spaces in an entered string with a hyphen"-" -def replacetext(string): - string = string.replace(" ", "-") - return string +""" +Replace all spaces in a string with hyphens. +Example: + >>> replacetext("Hello World") + 'Hello-World' + >>> replacetext("Python 3.13 is fun") + 'Python-3.13-is-fun' +""" -S = input("Enter a text to replace all its spaces with hyphens: ") -N = replacetext(S) -print("The changed text is: ", N) + +def replacetext(text: str) -> str: + """ + Replace spaces in a string with hyphens. + + Parameters + ---------- + text : str + Input string. + + Returns + ------- + str + String with spaces replaced by '-'. + """ + return text.replace(" ", "-") + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + user_input: str = input("Enter a text to replace spaces with hyphens: ") + print("The changed text is:", replacetext(user_input)) diff --git a/requirements.txt b/requirements.txt index ba601b8c8ab..bf51bb07640 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,8 +3,6 @@ aiohttp fuzzywuzzy hupper seaborn -time -simplegui utils Tubes modules diff --git a/requirements_with_versions.txt b/requirements_with_versions.txt index b6b41872b2a..008f4475fd9 100644 --- a/requirements_with_versions.txt +++ b/requirements_with_versions.txt @@ -1,5 +1,5 @@ pafy==0.5.5 -aiohttp==3.9.5 +aiohttp==3.13.2 fuzzywuzzy==0.18.0 hupper==1.12.1 seaborn==0.13.2 @@ -10,104 +10,104 @@ Tubes==0.2.1 modules==1.0.0 pdf2docx==0.5.8 pong==1.5 -beautifulsoup4==4.12.3 +beautifulsoup4==4.14.2 dictator==0.3.1 caller==0.0.2 -watchdog==3.0.0 -PyQt5==5.15.10 -numpy==1.26.4 +watchdog==6.0.0 +PyQt5==5.15.11 +numpy==2.3.4 fileinfo==0.3.3 backend==0.2.4.1 win10toast==0.9 Counter==1.0.0 -Flask==3.0.2 -selenium==4.16.0 -firebase-admin==6.5.0 +Flask==3.1.2 +selenium==4.38.0 +firebase-admin==7.1.0 ujson==5.10.0 -requests==2.32.3 +requests==2.32.5 quo==2023.5.1 PyPDF2==3.0.1 pyserial==3.5 -twilio==9.1.1 +twilio==9.8.5 tabula==1.0.5 -nltk==3.8.1 -Pillow==10.2.0 +nltk==3.9.2 +Pillow==12.0.0 SocksiPy-branch==1.01 -xlrd==2.0.1 +xlrd==2.0.2 fpdf==1.7.2 mysql-connector-repackaged==0.3.1 word2number==1.1 -tornado==6.4.1 +tornado==6.5.2 obs==0.0.0 todo==0.1 oauth2client==4.1.3 -keras==3.3.3 -pymongo==4.7.1 +keras==3.12.0 +pymongo==4.15.3 playsound==1.3.0 -pyttsx3==2.90 +pyttsx3==2.99 auto-mix-prep==0.2.0 lib==4.0.0 pywifi==1.1.12 patterns==0.3 -openai==1.33.0 +openai==2.7.1 background==0.2.1 -pydantic==2.7.3 +pydantic==2.12.4 openpyxl==3.1.2 -pytesseract==0.3.10 +pytesseract==0.3.13 requests-mock==1.12.1 -pyglet==2.0.10 -urllib3==2.2.1 -thirdai==0.8.5 -google-api-python-client==2.132.0 +pyglet==2.1.9 +urllib3==2.5.0 +thirdai==0.9.33 +google-api-python-client==2.187.0 sound==0.1.0 xlwt==1.3.0 -pygame==2.5.2 +pygame==2.6.1 speechtotext==0.0.3 wikipedia==1.4.0 -tqdm==4.66.4 +tqdm==4.67.1 Menu==3.2.2 -yfinance==0.2.40 -tweepy==4.14.0 +yfinance==0.2.66 +tweepy==4.16.0 tkcalendar==1.6.1 pytube==15.0.0 -xor-cipher==4.0.0 +xor-cipher==5.0.2 bird==0.1.2 mechanize==0.4.10 -translate==3.6.1 -solara==1.32.2 +translate==3.8.0 +solara==1.54.0 pywhatkit==5.4 mutagen==1.47.0 -Unidecode==1.3.8 +Unidecode==1.4.0 Ball==0.2.9 -pynput==1.7.6 -gTTS==2.5.0 -ccxt==4.3.39 +pynput==1.8.1 +gTTS==2.5.4 +ccxt==4.5.18 fitz==0.0.1.dev2 -fastapi==0.109.0 -Django==5.0.5 +fastapi==0.121.1 +Django==5.2.7 docx==0.2.4 -matplotlib==3.9.0 +matplotlib==3.10.7 pyshorteners==1.0.1 geocoder==1.38.1 -APScheduler==3.10.4 +APScheduler==3.11.1 PyQRCode==1.2.1 freegames==2.5.3 -pyperclip==1.8.2 +pyperclip==1.11.0 newspaper==0.1.0.7 -opencv-python==4.10.0.82 -tensorflow==2.15.0.post1 -pandas==2.2.2 -pytest==8.2.0 -qrcode==7.4.2 -googletrans==3.0.0 -slab==1.1.5 -psutil==5.9.8 -mediapipe==0.10.9 -rich==13.7.1 -httplib2==0.22.0 -protobuf==4.25.2 +opencv-python==4.12.0.88 +tensorflow==2.20.0 +pandas==2.3.3 +pytest==8.4.2 +qrcode==8.2 +googletrans==4.0.2 +slab==1.8.2 +psutil==7.1.3 +mediapipe==0.10.21 +rich==14.2.0 +httplib2==0.31.0 +protobuf==6.33.1 colorama==0.4.6 plyer==2.1.0 Flask-Ask==0.9.8 -emoji==2.11.1 +emoji==2.15.0 PyAutoGUI==0.9.54 diff --git a/reversed_pattern3.py b/reversed_pattern3.py index f19ef159691..4ee6131ee41 100644 --- a/reversed_pattern3.py +++ b/reversed_pattern3.py @@ -1,20 +1,23 @@ -#Simple inverted number triangle piramid -#11111 -#2222 -#333 -#44 -#5 +# Simple inverted number triangle piramid +# 11111 +# 2222 +# 333 +# 44 +# 5 + def main(): lines = int(input("Enter no.of lines: ")) pattern(lines) + def pattern(lines): t = 1 - for i in reversed(range(1, (lines +1))): - format = str(t)*i + for i in reversed(range(1, (lines + 1))): + format = str(t) * i print(format) t = t + 1 + if __name__ == "__main__": main() diff --git a/rock_paper_scissor_game.py b/rock_paper_scissor_game.py deleted file mode 100644 index 1cc3c8dedd3..00000000000 --- a/rock_paper_scissor_game.py +++ /dev/null @@ -1,52 +0,0 @@ -from __future__ import print_function - -import random - - -# let -# 0 - rock -# 1 - paper -# 2 - scissor - - -def name_to_number(name): - if name == "rock": - name = 0 - elif name == "paper": - name = 1 - elif name == "scissors": - name = 2 - return name - - -def number_to_name(number): - if number == 0: - return "rock" - elif number == 1: - return "paper" - elif number == 2: - return "scissors" - - -def game(player_choice): - print() - name = player_choice - print(name) - number = name_to_number(name) - comp_number = random.randrange(0, 2) - comp_choice = number_to_name(comp_number) - print(comp_choice) - - comp = -int(comp_number) - play = int(number) - diff = (comp + play) % 5 - - if diff == 1 or diff == 3: - print("you won!!!") - elif diff == 0: - print("draw") - elif diff == 2 or diff == 4: - print("you lose!!!") - - -# Also improve it diff --git a/rock_paper_scissors.py b/rock_paper_scissors.py new file mode 100644 index 00000000000..d2154520821 --- /dev/null +++ b/rock_paper_scissors.py @@ -0,0 +1,48 @@ +""" +Rock, Paper, Scissors Game +Author: DEVANSH-GAJJAR +""" + +import random + + +def get_user_choice(): + """Prompt the user to enter their choice.""" + choice = input("Enter your choice (rock, paper, scissors): ").lower() + if choice in ["rock", "paper", "scissors"]: + return choice + else: + print("Invalid choice! Please enter rock, paper, or scissors.") + return get_user_choice() + + +def get_computer_choice(): + """Randomly select computer's choice.""" + options = ["rock", "paper", "scissors"] + return random.choice(options) + + +def decide_winner(player, computer): + """Decide the winner based on the choices.""" + if player == computer: + return "It's a draw!" + elif ( + (player == "rock" and computer == "scissors") + or (player == "paper" and computer == "rock") + or (player == "scissors" and computer == "paper") + ): + return "You win!" + else: + return "Computer wins!" + + +def main(): + """Main function to play the game.""" + user_choice = get_user_choice() + computer_choice = get_computer_choice() + print(f"Computer chose: {computer_choice}") + print(decide_winner(user_choice, computer_choice)) + + +if __name__ == "__main__": + main() diff --git a/russian_roulette.py b/russian_roulette.py index 337f8be8a86..82374186515 100644 --- a/russian_roulette.py +++ b/russian_roulette.py @@ -1,13 +1,13 @@ -""" author: Ataba29 - the code is just a russian roulette game against - the computer +"""author: Ataba29 +the code is just a russian roulette game against +the computer """ + from random import randrange import time def main(): - # create the gun and set the bullet numOfRounds = 6 gun = [0, 0, 0, 0, 0, 0] @@ -38,7 +38,7 @@ def main(): answer = input("please enter again ('m' or 'p'): ") # set turn - if answer == 'm': + if answer == "m": turn = "player" else: turn = "pc" @@ -49,8 +49,10 @@ def main(): time.sleep(1) print("the gun is being loaded") time.sleep(3) - print("the gun is placed on " + ("your head" if turn == - "player" else "the cpu of the pc")) + print( + "the gun is placed on " + + ("your head" if turn == "player" else "the cpu of the pc") + ) time.sleep(3) print("and...") time.sleep(1) diff --git a/sample.xlsx b/sample.xlsx deleted file mode 100644 index f049f345b83..00000000000 Binary files a/sample.xlsx and /dev/null differ diff --git a/saving_input_into_list.py b/saving_input_into_list.py new file mode 100644 index 00000000000..065bc324acc --- /dev/null +++ b/saving_input_into_list.py @@ -0,0 +1,13 @@ +ran = int(input("Enter the range of elements you want to store / insert ")) +l1 = [] +for i in range(ran): + l1.append(input("Enter here ")) + +print(l1) + + +""" +program first asks the user how many values they want to enter. Then, using a loop, it lets the user enter that many values one by one. +Each entered value is saved into a list called l1. Once all the values are entered, the program prints the complete list, showing +everything the user typed. It's a beginner-friendly way to learn how to collect multiple inputs and store them for later use. +""" diff --git a/scientific_cal.py b/scientific_cal.py new file mode 100644 index 00000000000..11fccc450d5 --- /dev/null +++ b/scientific_cal.py @@ -0,0 +1,48 @@ +import math + +while True: + print(""" + Press 1 for basic calculator + Press 2 for scientifc calculator""") + try: + cho = int(input("enter your choice here.. ")) + if cho == 1: + print(eval(input("enter the numbers with operator "))) + elif cho == 2: + user = int( + input(""" + Press 1 for pi calculation + press 2 for sin calculation + press 3 for exponent calculation + press 4 for tangent calculation + press 5 for square root calculation + press 6 round calculation + press 7 for absoulte value + press any other number to exit the loop. """) + ) + + a = float(input("enter your value here.. ")) + if user == 1: + print(f"entered value : {a} result :{math.pi * (a)}") + elif user == 2: + print(f"entered value : {a} result :{math.sin(math.radians(a))}") + + elif user == 3: + power = float(input("enter the power")) + print(f"entered value : {a} result :{a**power}") + elif user == 4: + angle_in_radians = math.radians(a) + result = math.tan(angle_in_radians) + print(f"entered value : {a} result :{result}") + elif user == 5: + print(f"entered value : {a} result :{math.sqrt(a)}") + elif user == 6: + print(f"entered value : {a} result :{round(a)}") + elif user == 7: + print(f"entered value : {a} result :{abs(a)}") + else: + break + except ZeroDivisionError: + print("value cannot be divided by 0") + except: + print("Enter only digits ") diff --git a/script_count.py b/script_count.py index b7a2a0164b8..f029cd68763 100644 --- a/script_count.py +++ b/script_count.py @@ -50,7 +50,6 @@ def github(): # Start of the function just to count the files in the github dir if ( github_count > 5 ): # If the number of files is greater then 5, then print the following messages - print("\nYou have too many in here, start uploading !!!!!") print("You have: " + str(github_count) + " waiting to be uploaded to github!!") elif github_count == 0: # Unless the count is 0, then print the following messages @@ -71,7 +70,6 @@ def development(): # Start of the function just to count the files in the devel if ( dev_count > 10 ): # If the number of files is greater then 10, then print the following messages - print("\nYou have too many in here, finish them or delete them !!!!!") print("You have: " + str(dev_count) + " waiting to be finished!!") elif dev_count == 0: # Unless the count is 0, then print the following messages diff --git a/season-1819_csv.csv b/season-1819_csv.csv deleted file mode 100644 index 36177f30d76..00000000000 --- a/season-1819_csv.csv +++ /dev/null @@ -1,381 +0,0 @@ -Div,Date,HomeTeam,AwayTeam,FTHG,FTAG,FTR,HTHG,HTAG,HTR,HS,AS,HST,AST,HF,AF,HC,AC,HY,AY,HR,AR,B365H,B365D,B365A,BWH,BWD,BWA,IWH,IWD,IWA,PSH,PSD,PSA,WHH,WHD,WHA,VCH,VCD,VCA,Bb1X2,BbMxH,BbAvH,BbMxD,BbAvD,BbMxA,BbAvA,BbOU,BbMx>2.5,BbAv>2.5,BbMx<2.5,BbAv<2.5,BbAH,BbAHh,BbMxAHH,BbAvAHH,BbMxAHA,BbAvAHA,PSCH,PSCD,PSCA -SP1,17/08/2018,Betis,Levante,0,3,A,0,1,A,22,6,8,4,10,10,5,3,0,2,0,0,1.66,4,5,1.7,3.7,5.25,1.75,3.6,4.9,1.69,4.19,5.11,1.67,3.9,4.75,1.67,4.2,5.2,40,1.75,1.68,4.25,4,5.25,4.95,38,1.82,1.76,2.15,2.06,20,-0.75,1.89,1.85,2.07,2,1.59,4.42,5.89 -SP1,17/08/2018,Girona,Valladolid,0,0,D,0,0,D,13,2,1,1,21,20,3,2,1,1,0,0,1.75,3.6,5,1.75,3.5,5.25,1.8,3.6,4.5,1.8,3.7,4.99,1.75,3.6,4.6,1.8,3.7,4.8,40,1.85,1.78,3.83,3.6,5.27,4.79,38,2.21,2.13,1.78,1.71,20,-0.75,2.06,2.01,1.9,1.85,1.76,3.57,5.62 -SP1,18/08/2018,Barcelona,Alaves,3,0,H,0,0,D,25,3,9,0,6,13,7,1,0,2,0,0,1.11,10,21,1.11,10,20,1.12,9,20,1.11,11.27,25.4,1.08,9,29,1.1,10.5,34,40,1.13,1.1,11.5,9.82,41,25.67,32,1.39,1.34,3.4,3.18,19,-2.5,1.95,1.91,2,1.95,1.1,11.85,32.17 -SP1,18/08/2018,Celta,Espanol,1,1,D,0,1,A,12,14,2,5,13,14,8,7,3,2,0,0,1.85,3.5,4.5,1.91,3.4,4.25,1.9,3.5,4.1,1.93,3.64,4.27,1.91,3.5,4,1.93,3.5,4.4,38,1.97,1.9,3.73,3.53,4.5,4.2,36,2.13,2.06,1.84,1.76,18,-0.75,2.26,2.18,1.74,1.71,2.18,3.26,3.85 -SP1,18/08/2018,Villarreal,Sociedad,1,2,A,1,1,D,16,8,7,4,16,10,4,6,2,3,0,0,2.04,3.4,3.8,2.05,3.3,3.9,2,3.4,3.8,2.06,3.51,3.91,2.05,3.3,3.6,2.05,3.5,3.9,40,2.11,2.03,3.62,3.43,3.93,3.76,37,2.05,1.99,1.88,1.81,18,-0.25,1.76,1.74,2.23,2.14,2.32,3.21,3.53 -SP1,19/08/2018,Eibar,Huesca,1,2,A,0,2,A,18,8,6,6,12,13,7,0,1,1,0,0,1.66,3.75,5.5,1.7,3.7,5.25,1.7,3.75,5,1.72,3.9,5.26,1.73,3.6,4.75,1.7,3.8,5,40,1.76,1.7,3.93,3.77,5.5,5.08,37,1.95,1.88,1.98,1.91,19,-0.75,1.96,1.91,2.01,1.94,1.77,3.68,5.32 -SP1,19/08/2018,Real Madrid,Getafe,2,0,H,1,0,H,10,4,3,1,11,27,3,0,1,7,0,0,1.2,7,13,1.18,7.25,16,1.2,6.5,15,1.2,7.36,17.47,1.22,6,13,1.2,7,13,39,1.24,1.21,7.36,6.66,17.47,14.13,33,1.5,1.45,2.75,2.66,19,-1.75,1.85,1.8,2.15,2.07,1.19,7.77,17.96 -SP1,19/08/2018,Vallecano,Sevilla,1,4,A,0,3,A,13,17,2,8,6,15,2,6,1,0,0,0,3.25,3.6,2.14,3.5,3.5,2.1,3.5,3.4,2.1,3.46,3.74,2.13,3.3,3.7,2.05,3.4,3.6,2.1,40,3.53,3.38,3.75,3.56,2.2,2.11,37,1.83,1.76,2.13,2.04,19,0.25,2.08,2.03,1.86,1.83,4.57,4.07,1.78 -SP1,20/08/2018,Ath Bilbao,Leganes,2,1,H,1,1,D,17,12,5,2,12,13,6,2,4,5,0,0,1.75,3.3,5.5,1.78,3.5,5,1.85,3.5,4.4,1.79,3.54,5.46,1.8,3.4,4.75,1.8,3.4,5,40,1.85,1.78,3.64,3.43,5.5,5.03,36,2.49,2.35,1.64,1.58,18,-0.75,2.11,2.04,1.86,1.82,1.69,3.77,5.87 -SP1,20/08/2018,Valencia,Ath Madrid,1,1,D,0,1,A,13,9,4,3,10,15,4,10,2,3,0,0,3,3.2,2.5,2.85,3.25,2.55,2.85,3.2,2.55,3.12,3.18,2.57,3,3.2,2.4,3,3.2,2.45,39,3.12,2.99,3.29,3.14,2.61,2.51,36,2.45,2.33,1.65,1.59,17,0.25,1.82,1.75,2.23,2.12,3.55,3.28,2.28 -SP1,24/08/2018,Getafe,Eibar,2,0,H,1,0,H,7,9,4,0,14,11,5,5,2,1,0,0,1.95,3.2,4.33,1.95,3.3,4.2,2,3.2,4.2,2.01,3.35,4.43,1.95,3.1,4.33,2,3.25,4.5,40,2.06,1.98,3.35,3.22,4.5,4.32,36,2.75,2.62,1.53,1.47,19,-0.5,2.03,1.98,1.93,1.88,2.24,3.07,3.94 -SP1,24/08/2018,Leganes,Sociedad,2,2,D,0,2,A,18,7,5,6,12,9,5,0,1,2,0,0,3.5,3.3,2.1,3.5,3.2,2.2,3.6,3.2,2.15,3.66,3.36,2.2,3.4,3.25,2.15,3.7,3.3,2.2,40,3.76,3.57,3.4,3.25,2.27,2.18,37,2.48,2.36,1.65,1.58,20,0.25,2.04,1.99,1.91,1.86,3.56,3.21,2.31 -SP1,25/08/2018,Alaves,Betis,0,0,D,0,0,D,16,13,4,5,17,15,5,6,3,1,0,0,2.8,3.25,2.6,2.65,3.3,2.6,2.8,3.2,2.6,2.87,3.36,2.63,2.8,3.25,2.5,2.88,3.3,2.63,40,2.92,2.77,3.38,3.26,2.78,2.63,36,2.21,2.13,1.77,1.7,19,0,2.05,1.99,1.94,1.86,3.05,3.36,2.5 -SP1,25/08/2018,Ath Madrid,Vallecano,1,0,H,0,0,D,9,13,2,3,7,8,8,5,1,1,0,0,1.16,7,21,1.17,7.25,18,1.17,7.2,18.5,1.16,8.09,24.21,1.14,7,21,1.17,7.5,23,41,1.19,1.16,8.18,7.39,24.21,20.03,36,1.61,1.57,2.54,2.38,20,-2,1.91,1.85,2.06,2,1.17,7.82,22.59 -SP1,25/08/2018,Valladolid,Barcelona,0,1,A,0,0,D,7,10,4,5,13,11,6,10,1,1,0,0,17,7.5,1.16,15,7,1.19,13,7,1.2,19.07,8.18,1.18,17,7.5,1.15,21,7.5,1.18,41,21,16.55,8.4,7.56,1.2,1.17,34,1.47,1.42,2.94,2.8,20,2,2.13,2.07,1.83,1.79,18.04,7.67,1.19 -SP1,26/08/2018,Espanol,Valencia,2,0,H,0,0,D,19,16,9,4,16,12,6,10,1,1,0,0,3.25,3.2,2.37,2.95,3.3,2.45,3.1,3.3,2.35,3.19,3.48,2.35,3.1,3.4,2.25,3.1,3.4,2.3,39,3.25,3.08,3.48,3.3,2.47,2.37,34,2.16,2.07,1.81,1.74,19,0.25,1.9,1.84,2.08,2.02,2.9,3.34,2.62 -SP1,26/08/2018,Girona,Real Madrid,1,4,A,1,1,D,10,20,5,8,13,11,4,7,2,3,0,0,8,5.5,1.36,9.25,4.75,1.36,7,5.2,1.4,8.99,5.42,1.37,7,5.5,1.36,8.5,5.5,1.33,41,9.25,8.29,5.5,5.2,1.4,1.36,33,1.55,1.5,2.68,2.52,19,1.5,1.91,1.87,2.04,1.99,10.01,5.54,1.34 -SP1,26/08/2018,Sevilla,Villarreal,0,0,D,0,0,D,19,14,2,6,13,14,4,5,3,2,0,0,1.72,4.2,4.33,1.72,3.9,4.75,1.75,3.9,4.45,1.79,3.98,4.7,1.75,3.9,4.33,1.73,3.9,4.6,41,1.83,1.76,4.2,3.87,4.75,4.51,37,1.77,1.71,2.22,2.12,20,-1,2.42,2.34,1.67,1.61,2.05,3.6,3.86 -SP1,27/08/2018,Ath Bilbao,Huesca,2,2,D,0,0,D,14,9,4,4,17,17,3,2,2,2,0,0,1.61,3.6,6.5,1.6,3.75,6.5,1.63,3.8,5.7,1.64,3.8,6.45,1.65,3.6,5.5,1.62,3.8,6,41,1.68,1.63,3.95,3.75,6.5,5.95,38,2.1,2.01,1.85,1.79,20,-1,2.19,2.12,1.79,1.74,1.6,3.89,6.88 -SP1,27/08/2018,Levante,Celta,1,2,A,0,2,A,15,21,6,9,14,8,7,7,2,3,0,0,2.4,3.25,3,2.5,3.25,2.95,2.45,3.25,2.95,2.52,3.31,3.08,2.45,3.25,2.9,2.45,3.3,3,41,2.6,2.49,3.41,3.25,3.09,2.93,36,2.1,2.03,1.84,1.78,18,-0.25,2.19,2.12,1.81,1.76,2.28,3.63,3.21 -SP1,31/08/2018,Eibar,Sociedad,2,1,H,1,1,D,8,7,2,2,18,15,4,2,3,2,0,0,2.75,3.25,2.62,2.75,3.2,2.65,2.95,3.2,2.5,2.8,3.31,2.73,2.7,3.25,2.62,2.8,3.3,2.7,41,2.95,2.79,3.34,3.23,2.77,2.66,38,2.3,2.2,1.72,1.67,21,0.25,1.71,1.67,2.33,2.26,3.11,3.23,2.53 -SP1,31/08/2018,Getafe,Valladolid,0,0,D,0,0,D,12,7,3,4,22,14,6,7,3,1,0,0,1.9,3.2,4.75,1.85,3.25,5,1.9,3.2,4.7,1.93,3.18,5.22,1.91,3.2,4.5,1.95,3.25,4.8,41,1.99,1.91,3.3,3.18,5.35,4.86,37,2.68,2.59,1.54,1.49,21,-0.5,1.95,1.91,2,1.96,2.08,3.07,4.55 -SP1,31/08/2018,Villarreal,Girona,0,1,A,0,0,D,13,14,3,6,15,11,7,2,3,2,0,0,1.57,4,6,1.55,4.2,6,1.65,3.8,5.4,1.57,4.17,6.67,1.57,4,5.8,1.57,4.2,6.5,41,1.65,1.57,4.24,4.08,6.68,6.19,39,1.98,1.91,1.98,1.89,23,-1,2.01,1.97,1.94,1.88,1.52,4.54,6.81 -SP1,01/09/2018,Celta,Ath Madrid,2,0,H,0,0,D,10,9,4,0,12,14,2,8,4,5,0,1,5.5,3.4,1.75,5,3.6,1.75,4.8,3.7,1.75,4.93,3.66,1.81,4.6,3.4,1.8,5,3.6,1.8,41,5.5,4.83,3.77,3.58,1.85,1.78,38,2.19,2.1,1.8,1.72,21,0.75,1.87,1.84,2.07,2.02,5.17,3.69,1.78 -SP1,01/09/2018,Real Madrid,Leganes,4,1,H,1,1,D,17,8,8,3,11,11,8,1,1,1,0,0,1.12,9,21,1.12,8.75,23,1.12,9,20,1.13,9.73,25.14,1.1,9.5,21,1.11,10,31,41,1.14,1.12,10.3,9.31,31,23.88,34,1.38,1.33,3.4,3.23,21,-2.5,2.01,1.94,1.96,1.91,1.16,8.67,22.29 -SP1,02/09/2018,Alaves,Espanol,2,1,H,0,1,A,8,11,5,7,19,13,0,12,4,3,0,0,2.9,3.1,2.54,2.85,3.1,2.65,2.7,3.1,2.8,2.93,3.16,2.71,2.88,3.2,2.5,2.9,3.1,2.6,39,3.06,2.91,3.2,3.08,2.8,2.63,34,2.71,2.56,1.56,1.5,20,0.25,1.74,1.7,2.28,2.2,3.19,3.25,2.47 -SP1,02/09/2018,Barcelona,Huesca,8,2,H,3,2,H,31,7,15,3,6,12,9,4,1,2,0,0,1.08,11,29,1.06,12,36,1.07,13,26,1.09,13.22,30.82,1.05,13,34,1.06,13,41,41,1.1,1.07,15,12.43,52,33.38,35,1.24,1.21,4.7,4.3,21,-3,1.98,1.93,1.97,1.92,1.07,14.91,36.03 -SP1,02/09/2018,Betis,Sevilla,1,0,H,0,0,D,11,8,3,2,15,17,5,8,3,6,0,1,2.8,3.5,2.45,2.8,3.5,2.45,2.8,3.4,2.5,2.77,3.87,2.46,2.7,3.5,2.5,2.7,3.75,2.4,41,2.86,2.75,3.87,3.62,2.54,2.44,37,1.62,1.58,2.46,2.36,20,0.25,1.79,1.75,2.19,2.13,2.84,3.6,2.53 -SP1,02/09/2018,Levante,Valencia,2,2,D,2,1,H,13,18,4,5,14,10,3,5,4,2,1,0,3.75,3.4,2,3.7,3.3,2.1,3.4,3.3,2.2,3.61,3.59,2.13,3.4,3.6,2.05,3.6,3.6,2.1,41,3.8,3.51,3.69,3.5,2.2,2.09,39,1.91,1.82,2.07,1.99,21,0.25,2.11,2.06,1.85,1.81,3.6,3.54,2.15 -SP1,14/09/2018,Huesca,Vallecano,0,1,A,0,1,A,14,14,4,2,16,18,6,3,2,1,0,0,2.14,3.5,3.4,2.1,3.6,3.4,2.2,3.55,3.2,2.26,3.57,3.3,2.2,3.5,3.1,2.2,3.7,3.3,36,2.3,2.2,3.7,3.51,3.41,3.28,33,1.93,1.85,2.09,1.96,19,-0.25,1.95,1.91,2.01,1.96,2.43,3.41,3.13 -SP1,15/09/2018,Ath Bilbao,Real Madrid,1,1,D,1,0,H,11,16,3,6,18,6,1,2,6,2,0,0,6,4.33,1.53,5.5,4.4,1.57,5.2,4.45,1.57,5.46,4.7,1.58,5,4.5,1.57,5.75,4.5,1.57,39,6,5.47,4.7,4.46,1.6,1.57,38,1.53,1.48,2.71,2.59,23,1,1.99,1.94,1.95,1.91,6.5,4.43,1.53 -SP1,15/09/2018,Ath Madrid,Eibar,1,1,D,0,0,D,18,12,9,3,5,21,14,3,2,2,0,0,1.36,4.33,12,1.36,4.6,10,1.35,4.7,10,1.36,4.78,11.13,1.36,4.5,9,1.4,4.75,9.5,39,1.41,1.37,4.82,4.56,12,10.12,38,2.1,2.03,1.85,1.79,23,-1.25,2,1.94,1.98,1.92,1.42,4,12.96 -SP1,15/09/2018,Sociedad,Barcelona,1,2,A,1,0,H,8,12,5,6,18,8,1,6,1,1,0,0,7,5.25,1.4,7,5.25,1.4,6.5,4.7,1.45,7.05,5.46,1.41,6,4.8,1.44,7.5,5.25,1.4,39,7.5,6.8,5.46,5.08,1.48,1.42,30,1.48,1.44,2.88,2.72,23,1.25,2.04,1.98,1.95,1.88,8.62,5.22,1.38 -SP1,15/09/2018,Valencia,Betis,0,0,D,0,0,D,12,11,2,6,22,9,5,4,6,3,0,0,1.75,3.75,4.75,1.75,3.9,4.5,1.7,3.75,5,1.75,4.06,4.72,1.75,3.75,4.4,1.75,3.9,4.8,39,1.8,1.75,4.06,3.84,5,4.65,38,1.76,1.71,2.25,2.13,22,-0.75,2,1.94,1.96,1.91,1.7,4.22,4.95 -SP1,16/09/2018,Espanol,Levante,1,0,H,0,0,D,22,16,9,4,17,13,5,4,1,2,0,0,1.72,3.6,5.25,1.78,3.5,5,1.8,3.6,4.5,1.79,3.8,4.86,1.75,3.75,4.5,1.8,3.8,4.75,39,1.84,1.78,3.93,3.7,5.25,4.66,38,2.07,1.95,1.92,1.85,22,-0.75,2.08,2.01,1.89,1.85,1.66,4.15,5.39 -SP1,16/09/2018,Leganes,Villarreal,0,1,A,0,0,D,16,9,3,3,16,9,6,1,4,3,0,0,3,3.1,2.54,3.1,3.1,2.5,3,3.1,2.5,3.08,3.19,2.59,2.9,3.2,2.5,3.1,3.2,2.55,39,3.1,3.02,3.27,3.13,2.63,2.53,37,2.5,2.36,1.65,1.59,21,0.25,1.79,1.75,2.19,2.13,2.99,3.28,2.59 -SP1,16/09/2018,Sevilla,Getafe,0,2,A,0,2,A,15,10,1,5,10,22,7,1,3,6,0,0,1.55,4,7,1.53,4.1,6.5,1.57,4.05,5.9,1.56,4.18,6.65,1.57,3.9,5.8,1.57,4.1,6,39,1.61,1.56,4.19,4.01,7,6.25,38,1.98,1.9,2,1.9,23,-1,2.05,2,1.91,1.86,1.65,3.91,6.04 -SP1,16/09/2018,Valladolid,Alaves,0,1,A,0,0,D,15,10,5,4,9,12,7,2,3,2,0,0,2.2,3.1,3.6,2.15,3.1,3.8,2.2,3.05,3.7,2.25,3.13,3.83,2.25,2.9,3.6,2.2,3.1,3.7,36,2.25,2.21,3.2,3.06,3.88,3.71,34,2.69,2.55,1.54,1.5,19,-0.25,1.92,1.89,2.02,1.99,2.19,3.15,3.97 -SP1,17/09/2018,Girona,Celta,3,2,H,2,1,H,11,20,6,7,15,11,3,1,1,3,0,1,2.4,3.3,3,2.35,3.3,3.1,2.35,3.4,2.95,2.42,3.53,3.02,2.38,3.4,2.88,2.4,3.4,2.9,38,2.54,2.41,3.57,3.4,3.1,2.93,37,2,1.88,2.01,1.91,21,-0.25,2.11,2.06,1.85,1.81,2.28,3.62,3.18 -SP1,21/09/2018,Huesca,Sociedad,0,1,A,0,0,D,13,7,3,1,16,12,7,5,5,3,0,2,3.6,3.4,2.1,3.6,3.4,2.1,3.3,3.4,2.2,3.75,3.53,2.1,3.5,3.4,2.1,3.7,3.5,2.1,38,3.8,3.62,3.55,3.4,2.2,2.1,37,2.13,2.04,1.87,1.78,20,0.25,2.13,2.07,1.85,1.82,3.49,3.4,2.25 -SP1,22/09/2018,Celta,Valladolid,3,3,D,2,1,H,12,14,5,4,9,11,7,8,2,2,0,0,1.75,3.5,5.25,1.67,3.75,5.5,1.73,3.65,5,1.74,3.65,5.56,1.75,3.6,4.8,1.75,3.75,5.25,38,1.77,1.73,3.75,3.63,5.6,5.18,37,2.08,2.02,1.86,1.79,22,-1,2.41,2.33,1.66,1.63,1.76,3.54,5.56 -SP1,22/09/2018,Eibar,Leganes,1,0,H,0,0,D,14,4,3,2,16,17,5,2,1,1,0,0,2.04,3.2,4,2.1,3.2,3.8,2.05,3.2,4,2.08,3.35,4.02,2.05,3.25,3.8,2.05,3.3,4.2,38,2.11,2.06,3.35,3.23,4.2,3.95,36,2.55,2.44,1.61,1.55,20,-0.25,1.8,1.76,2.19,2.12,2.18,3.04,4.12 -SP1,22/09/2018,Getafe,Ath Madrid,0,2,A,0,1,A,11,7,2,4,12,15,1,5,1,2,1,0,5,3.3,1.8,5,3.2,1.85,5,3.2,1.85,5.22,3.32,1.86,4.75,3.3,1.83,5.2,3.3,1.87,38,5.3,5.04,3.32,3.23,1.92,1.86,34,2.8,2.68,1.5,1.45,20,0.75,1.78,1.75,2.18,2.13,6.34,3.22,1.79 -SP1,22/09/2018,Real Madrid,Espanol,1,0,H,1,0,H,19,10,5,3,5,16,8,3,2,2,0,0,1.18,7,15,1.19,7.5,13.5,1.2,7,13,1.2,7.17,17.23,1.2,7,12,1.22,7,15,38,1.22,1.2,7.65,7.01,18.1,14.36,33,1.43,1.38,3.1,2.94,21,-2,2.02,1.97,1.92,1.89,1.27,6.39,11.1 -SP1,22/09/2018,Vallecano,Alaves,1,5,A,1,2,A,13,11,4,7,14,12,8,4,1,2,1,0,2.04,3.4,3.6,2.15,3.3,3.6,2.2,3.4,3.3,2.16,3.54,3.53,2.1,3.4,3.5,2.15,3.5,3.6,38,2.2,2.12,3.6,3.41,3.7,3.55,37,2.16,2.08,1.8,1.74,21,-0.25,1.87,1.83,2.08,2.04,2.01,3.53,4.02 -SP1,23/09/2018,Barcelona,Girona,2,2,D,1,1,D,22,7,11,6,9,16,8,2,3,5,1,0,1.08,11,21,1.08,11.5,26,1.1,9.1,28,1.08,13.12,36.83,1.07,11,26,1.06,12,36,37,1.1,1.08,13.25,11.57,36.83,27.69,33,1.22,1.2,4.75,4.36,19,-2.75,1.86,1.82,2.11,2.06,1.11,11.76,23.38 -SP1,23/09/2018,Betis,Ath Bilbao,2,2,D,0,2,A,15,7,3,4,13,20,6,1,2,7,0,1,2.14,3.3,3.6,2.2,3.4,3.3,2.2,3.4,3.35,2.21,3.49,3.46,2.2,3.4,3.2,2.15,3.5,3.3,38,2.3,2.21,3.55,3.41,3.6,3.29,35,2.02,1.94,1.93,1.86,20,-0.25,1.93,1.9,2.01,1.97,2.16,3.41,3.72 -SP1,23/09/2018,Levante,Sevilla,2,6,A,1,4,A,19,20,10,9,5,18,8,4,1,1,0,0,3.5,3.6,2.04,3.4,3.4,2.15,3.3,3.65,2.1,3.34,3.7,2.17,3.2,3.7,2.1,3.3,3.8,2.15,38,3.6,3.32,3.8,3.64,2.17,2.12,37,1.75,1.68,2.25,2.17,20,0.25,2.05,2,1.9,1.86,3.61,4,2 -SP1,23/09/2018,Villarreal,Valencia,0,0,D,0,0,D,11,12,1,2,12,12,8,6,4,1,0,1,2.25,3.25,3.3,2.35,3.4,3,2.45,3.4,2.85,2.31,3.44,3.26,2.3,3.4,3,2.3,3.5,3.2,38,2.45,2.31,3.5,3.38,3.3,3.14,36,2,1.94,1.95,1.87,20,-0.25,2.02,1.98,1.93,1.89,2.26,3.34,3.54 -SP1,25/09/2018,Ath Madrid,Huesca,3,0,H,3,0,H,17,8,5,1,1,14,4,3,0,2,0,0,1.22,6,15,1.22,6.25,15,1.22,6.2,13.5,1.24,6.1,16.21,1.25,5.8,13,1.25,6.25,15,40,1.27,1.24,6.5,5.99,17,14.4,39,1.83,1.75,2.15,2.06,21,-1.75,2.07,2.01,2,1.87,1.19,7.15,18.55 -SP1,25/09/2018,Espanol,Eibar,1,0,H,0,0,D,9,8,5,1,8,8,4,3,2,2,0,0,1.9,3.3,4.5,1.91,3.3,4.4,1.95,3.2,4.4,1.96,3.33,4.63,1.95,3.3,4.2,1.95,3.3,4.6,40,2.01,1.94,3.4,3.27,4.8,4.44,38,2.5,2.39,1.62,1.57,20,-0.75,2.33,2.25,1.72,1.68,1.85,3.45,5.04 -SP1,25/09/2018,Sociedad,Vallecano,2,2,D,1,2,A,16,11,6,6,12,18,8,5,4,3,0,0,1.61,4,5.5,1.62,4,5.5,1.65,4,5,1.69,3.98,5.41,1.67,4,5,1.67,4.1,5.4,40,1.7,1.65,4.4,4.01,5.71,5.29,38,1.86,1.76,2.2,2.06,22,-1,2.2,2.12,1.85,1.75,1.66,3.98,5.66 -SP1,26/09/2018,Ath Bilbao,Villarreal,0,3,A,0,0,D,12,19,2,6,3,14,6,4,1,1,0,0,2.25,3.3,3.3,2.2,3.3,3.4,2.15,3.35,3.45,2.17,3.5,3.53,2.2,3.3,3.4,2.2,3.5,3.5,40,2.25,2.17,3.5,3.38,3.56,3.43,39,2.13,2.05,1.82,1.76,21,-0.25,1.9,1.87,2.04,2,2.21,3.45,3.52 -SP1,26/09/2018,Leganes,Barcelona,2,1,H,0,1,A,10,9,6,5,15,11,4,5,4,2,0,0,12,6,1.25,10.5,6.25,1.26,11,6.1,1.25,12.3,6.21,1.27,9.5,6,1.29,11.5,6,1.29,40,13,10.97,6.55,5.98,1.31,1.27,35,1.55,1.5,2.63,2.52,20,1.5,2.12,2.07,1.85,1.8,12.58,5.98,1.27 -SP1,26/09/2018,Sevilla,Real Madrid,3,0,H,3,0,H,16,21,7,3,16,12,5,6,3,4,0,0,4.33,4.2,1.72,4.33,4.2,1.72,4.05,4.2,1.75,4.23,4.27,1.79,3.9,4.2,1.8,4.33,4.4,1.75,40,4.33,4.16,4.4,4.23,1.81,1.76,35,1.45,1.42,2.88,2.79,22,1,1.72,1.66,2.32,2.26,4.44,4.29,1.76 -SP1,26/09/2018,Valencia,Celta,1,1,D,1,0,H,14,9,5,3,18,7,0,2,1,3,0,0,1.66,4,4.75,1.7,4,4.75,1.85,3.8,4,1.71,4.17,4.84,1.73,4.2,4.4,1.73,4.2,4.75,39,1.85,1.72,4.2,4.04,4.84,4.58,37,1.67,1.62,2.38,2.26,21,-1,2.4,2.24,1.73,1.67,1.66,4.34,5.07 -SP1,27/09/2018,Alaves,Getafe,1,1,D,0,0,D,15,13,2,5,8,22,5,7,4,2,0,0,2.8,3,2.75,2.8,3,2.75,2.8,2.9,2.85,2.84,3.02,2.89,2.8,3,2.8,2.8,3,2.8,40,2.85,2.8,3.1,2.97,2.91,2.82,36,2.85,2.67,1.48,1.45,20,-0.25,2.47,2.36,1.65,1.62,2.95,3.03,2.81 -SP1,27/09/2018,Girona,Betis,0,1,A,0,0,D,8,14,2,6,17,14,5,1,1,3,0,0,2.5,3.3,2.87,2.55,3.4,2.75,2.5,3.4,2.8,2.55,3.54,2.82,2.5,3.5,2.75,2.5,3.5,2.75,40,2.57,2.51,3.54,3.42,2.87,2.8,38,1.98,1.89,1.98,1.9,20,-0.25,2.21,2.16,1.76,1.73,2.54,3.38,2.98 -SP1,27/09/2018,Valladolid,Levante,2,1,H,0,0,D,20,9,6,4,17,10,8,6,1,4,0,1,2.04,3.5,3.6,2.05,3.5,3.6,2.05,3.45,3.6,2.09,3.64,3.63,2.1,3.5,3.5,2.05,3.5,3.6,39,2.11,2.07,3.65,3.51,3.75,3.56,37,2.07,1.99,1.87,1.81,20,-0.25,1.83,1.79,2.14,2.08,2.07,3.69,3.66 -SP1,28/09/2018,Vallecano,Espanol,2,2,D,1,2,A,11,12,5,5,13,16,5,3,3,3,0,0,2.8,3.3,2.6,2.7,3.2,2.75,2.75,3.25,2.65,2.8,3.37,2.7,2.75,3.3,2.6,2.8,3.3,2.7,38,2.83,2.74,3.37,3.27,2.75,2.67,36,2.13,2.05,1.85,1.77,22,0.25,1.7,1.67,2.35,2.27,3.21,3.4,2.39 -SP1,29/09/2018,Barcelona,Ath Bilbao,1,1,D,0,1,A,20,8,8,2,9,18,4,3,3,3,0,0,1.16,7.5,17,1.16,8,16.5,1.17,7.5,15,1.15,8.49,20.57,1.15,8.5,15,1.17,9,17,38,1.18,1.16,9,8.17,21,17.47,32,1.36,1.31,3.6,3.35,21,-2.25,1.97,1.92,2,1.94,1.22,6.63,16.12 -SP1,29/09/2018,Eibar,Sevilla,1,3,A,0,0,D,15,7,2,5,16,9,6,3,2,3,0,0,3.3,3.4,2.2,3.2,3.5,2.2,3.2,3.4,2.25,3.26,3.54,2.27,3.2,3.4,2.25,3.3,3.4,2.3,38,3.3,3.22,3.54,3.41,2.31,2.25,36,2,1.95,1.93,1.85,21,0.25,1.95,1.92,2,1.95,3.24,3.66,2.25 -SP1,29/09/2018,Real Madrid,Ath Madrid,0,0,D,0,0,D,15,8,6,3,7,17,8,6,3,4,0,0,2,3.5,3.75,2.1,3.4,3.6,2.1,3.4,3.5,2.11,3.38,3.85,2.1,3.5,3.4,2.1,3.5,3.7,38,2.15,2.09,3.6,3.42,3.9,3.64,36,1.95,1.88,2,1.92,22,-0.25,1.85,1.8,2.14,2.08,2.24,3.35,3.57 -SP1,29/09/2018,Sociedad,Valencia,0,1,A,0,1,A,10,9,5,2,13,18,3,0,3,5,0,0,2.2,3.4,3.2,2.25,3.4,3.2,2.3,3.4,3.1,2.34,3.52,3.14,2.38,3.4,3,2.38,3.5,3.1,37,2.38,2.29,3.6,3.44,3.25,3.13,35,1.99,1.92,1.95,1.87,22,-0.25,2.04,1.99,1.95,1.87,2.52,3.28,3.09 -SP1,30/09/2018,Betis,Leganes,1,0,H,0,0,D,17,11,4,5,7,10,7,1,0,4,0,0,1.64,3.8,5.5,1.67,3.8,5.25,1.67,3.75,5.3,1.69,3.91,5.5,1.7,3.7,5.25,1.67,3.8,5.4,38,1.75,1.68,4,3.76,5.6,5.3,36,2.1,2.04,1.85,1.78,22,-1,2.35,2.25,1.75,1.67,1.78,3.66,5.16 -SP1,30/09/2018,Huesca,Girona,1,1,D,0,1,A,13,14,6,4,14,14,5,5,4,2,0,0,2.5,3.3,2.9,2.55,3.2,2.9,2.45,3.2,3,2.52,3.34,3,2.5,3.3,2.9,2.55,3.3,3,38,2.56,2.47,3.35,3.24,3.1,2.99,37,2.25,2.13,1.76,1.71,21,-0.25,2.17,2.12,1.82,1.77,2.61,3.36,2.92 -SP1,30/09/2018,Levante,Alaves,2,1,H,2,1,H,14,14,4,2,22,19,9,4,7,1,0,0,2.14,3.5,3.3,2.2,3.3,3.4,2.15,3.4,3.35,2.22,3.52,3.39,2.2,3.4,3.3,2.15,3.5,3.3,38,2.25,2.19,3.52,3.38,3.55,3.38,35,2.1,2,1.87,1.81,21,-0.25,1.94,1.89,2.03,1.97,2.14,3.62,3.55 -SP1,30/09/2018,Villarreal,Valladolid,0,1,A,0,0,D,27,9,7,3,17,12,7,2,3,3,0,0,1.53,4,6.5,1.55,3.9,6.75,1.55,4.05,6.2,1.55,4.18,6.89,1.57,4,6,1.53,4.1,6.5,38,1.6,1.55,4.25,4.03,7,6.42,36,2,1.96,1.9,1.84,23,-1,2.01,1.97,1.95,1.89,1.51,4.34,7.32 -SP1,01/10/2018,Celta,Getafe,1,1,D,1,0,H,8,12,2,4,13,15,3,9,2,2,0,0,2,3.5,3.8,2,3.3,4,2,3.35,4,2.02,3.38,4.17,2.05,3.4,3.75,1.95,3.5,3.9,37,2.05,2,3.5,3.36,4.25,3.95,35,2.17,2.1,1.8,1.73,19,-0.75,2.37,2.32,1.66,1.64,2.31,3.26,3.46 -SP1,05/10/2018,Ath Bilbao,Sociedad,1,3,A,1,1,D,13,6,5,3,15,19,11,0,6,5,0,0,2.04,3.4,3.8,2.05,3.4,3.75,2.2,3.2,3.5,2.1,3.48,3.81,2.1,3.4,3.6,2.1,3.4,3.8,37,2.2,2.08,3.55,3.39,3.9,3.73,36,2.13,2.06,1.85,1.76,17,-0.25,1.8,1.78,2.17,2.1,2.07,3.35,4.1 -SP1,06/10/2018,Alaves,Real Madrid,1,0,H,0,0,D,8,13,4,6,20,10,4,3,1,0,0,0,9,4.75,1.36,7.75,4.75,1.4,7,4.5,1.45,8.47,5.06,1.4,7.5,5,1.4,8.5,5,1.4,37,9.5,8.13,5.5,4.94,1.45,1.39,32,1.6,1.53,1.66,1.59,18,1.25,2.15,2.06,1.88,1.8,10.23,5.11,1.35 -SP1,06/10/2018,Getafe,Levante,0,1,A,0,0,D,15,12,4,3,17,18,10,2,4,5,1,0,1.72,3.6,5.25,1.72,3.6,5.25,1.75,3.7,4.8,1.7,3.91,5.41,1.75,3.5,5,1.73,3.8,5.2,37,1.79,1.73,3.95,3.71,5.43,5.1,35,2.05,1.95,1.93,1.85,20,-1,2.4,2.31,1.7,1.64,1.76,3.86,4.98 -SP1,06/10/2018,Girona,Eibar,2,3,A,2,2,D,10,12,3,4,9,17,4,9,3,6,0,0,2.1,3.2,3.8,2.15,3.3,3.6,2.1,3.25,3.7,2.13,3.43,3.79,2.15,3.3,3.6,2.15,3.3,3.8,36,2.23,2.15,3.43,3.27,3.85,3.67,35,2.43,2.32,1.64,1.6,19,-0.25,1.86,1.83,2.11,2.05,2.33,3.25,3.48 -SP1,06/10/2018,Leganes,Vallecano,1,0,H,1,0,H,13,6,4,2,12,12,6,4,1,4,0,1,2,3.3,4,2.1,3.25,3.75,2.1,3.3,3.6,2.1,3.42,3.9,2.1,3.25,3.75,2.15,3.3,3.8,37,2.15,2.09,3.42,3.3,4.01,3.78,36,2.3,2.2,1.71,1.67,18,-0.25,1.83,1.77,2.17,2.11,2.19,3.25,3.83 -SP1,07/10/2018,Ath Madrid,Betis,1,0,H,0,0,D,13,5,5,0,16,10,6,4,5,3,0,0,1.44,4,9,1.48,3.9,8.25,1.5,3.9,7.6,1.5,4,8.86,1.52,4,7,1.5,4,7.5,37,1.55,1.49,4.2,3.95,9.3,8.15,36,2.3,2.19,1.72,1.67,20,-1,1.95,1.86,2.06,1.99,1.6,3.77,7.22 -SP1,07/10/2018,Espanol,Villarreal,3,1,H,1,1,D,28,13,12,6,13,8,10,3,3,2,0,0,2.25,3.2,3.4,2.25,3.2,3.4,2.3,3.2,3.3,2.34,3.25,3.46,2.35,3.2,3.2,2.3,3.2,3.3,37,2.35,2.31,3.25,3.19,3.46,3.33,36,2.4,2.27,1.67,1.63,18,-0.25,2.03,1.97,1.95,1.9,2.4,3.25,3.34 -SP1,07/10/2018,Sevilla,Celta,2,1,H,1,0,H,12,13,3,5,14,9,8,8,3,4,0,1,1.53,4.33,6,1.55,4.5,5.5,1.55,4.2,5.9,1.58,4.55,5.66,1.57,4.5,5.25,1.53,4.6,5.5,37,1.6,1.56,4.75,4.49,6,5.51,31,1.55,1.47,2.75,2.62,20,-1,1.93,1.89,2.01,1.96,1.47,5,6.58 -SP1,07/10/2018,Valencia,Barcelona,1,1,D,1,1,D,10,10,3,5,11,6,5,2,2,2,0,0,4.75,4.2,1.64,4.6,4.1,1.7,4.6,4.3,1.65,4.98,4.16,1.7,4.5,4,1.73,4.6,4.2,1.67,37,5,4.68,4.33,4.12,1.75,1.69,33,1.6,1.54,2.55,2.43,20,1,1.8,1.72,2.25,2.16,5.74,4.05,1.65 -SP1,07/10/2018,Valladolid,Huesca,1,0,H,1,0,H,9,11,3,1,9,13,6,2,1,2,0,0,1.9,3.5,4.2,1.9,3.5,4.25,1.93,3.4,4.2,1.97,3.48,4.3,1.95,3.5,4,1.93,3.5,4.4,37,1.97,1.92,3.55,3.47,4.46,4.24,36,2.2,2.13,1.77,1.71,18,-0.75,2.31,2.21,1.75,1.7,1.93,3.55,4.43 -SP1,19/10/2018,Celta,Alaves,0,1,A,0,0,D,19,9,9,2,9,12,6,2,2,3,0,0,1.66,4,5,1.75,3.75,4.75,1.85,3.5,4.4,1.72,3.93,5.2,1.73,3.8,4.8,1.73,3.9,5.25,36,1.93,1.73,4,3.77,5.25,4.89,33,1.96,1.88,2.02,1.92,18,-1,2.81,2.32,1.75,1.65,1.77,3.86,4.91 -SP1,20/10/2018,Barcelona,Sevilla,4,2,H,2,0,H,23,19,9,7,10,16,5,7,0,1,0,0,1.33,6,7.5,1.34,6,7.25,1.35,5.8,7,1.35,6.29,7.4,1.33,5.5,8,1.33,6,8,39,1.39,1.34,6.5,5.96,8.5,7.5,32,1.3,1.26,4.05,3.72,19,-1.75,2.1,2,1.91,1.86,1.28,6.58,9.87 -SP1,20/10/2018,Real Madrid,Levante,1,2,A,0,2,A,34,6,12,2,10,19,15,1,1,2,0,0,1.14,8.5,19,1.15,8.75,16,1.17,8.3,14.5,1.15,9.03,18.28,1.15,8.5,15,1.15,9,20,39,1.19,1.15,9.25,8.52,20.95,16.34,32,1.29,1.24,4.33,3.92,20,-2.25,1.98,1.85,2.07,2.02,1.15,8.62,20.52 -SP1,20/10/2018,Valencia,Leganes,1,1,D,0,0,D,18,7,4,5,9,13,10,1,1,2,0,0,1.5,4,7.5,1.55,4,6.5,1.65,4,5.1,1.56,4.13,6.84,1.57,3.9,6,1.55,4.1,7,39,1.65,1.55,4.2,3.99,7.5,6.52,37,2.15,2.07,1.8,1.75,21,-1,2.05,1.98,2,1.88,1.62,3.72,6.96 -SP1,20/10/2018,Villarreal,Ath Madrid,1,1,D,0,0,D,18,15,6,4,16,9,8,7,3,1,0,0,3.8,3.1,2.14,3.6,3.1,2.2,3.8,3.15,2.15,3.87,3.22,2.19,3.7,3.1,2.15,3.8,3.2,2.2,39,3.95,3.71,3.25,3.14,2.25,2.18,36,2.63,2.47,1.6,1.54,18,0.25,2.08,2.03,1.9,1.84,4.04,3.21,2.14 -SP1,21/10/2018,Betis,Valladolid,0,1,A,0,1,A,20,6,4,2,7,10,9,6,0,4,0,0,1.61,3.8,6,1.65,3.75,5.5,1.7,3.8,4.9,1.63,4.08,5.85,1.62,3.75,5.8,1.62,4,5.5,39,1.7,1.63,4.1,3.91,6,5.55,36,2.04,1.98,1.9,1.83,21,-1,2.2,2.13,1.85,1.75,1.56,4.13,6.7 -SP1,21/10/2018,Eibar,Ath Bilbao,1,1,D,1,1,D,18,6,6,3,7,13,8,2,2,3,0,0,2.7,3.2,2.75,2.75,3.1,2.75,2.7,3.1,2.75,2.79,3.21,2.82,2.75,3.1,2.75,2.75,3.13,2.75,39,2.83,2.72,3.25,3.14,2.85,2.75,37,2.4,2.29,1.67,1.61,19,-0.25,2.38,2.3,1.7,1.65,2.87,3.36,2.64 -SP1,21/10/2018,Huesca,Espanol,0,2,A,0,1,A,10,6,2,2,21,14,6,4,3,3,0,0,3.5,3.3,2.14,3.6,3.3,2.15,3.6,3.35,2.1,3.64,3.54,2.13,3.5,3.5,2.1,3.6,3.4,2.1,39,3.7,3.57,3.55,3.4,2.17,2.11,37,2.25,2.15,1.76,1.7,18,0.25,2.11,2.06,1.88,1.82,4.07,3.43,2.05 -SP1,21/10/2018,Vallecano,Getafe,1,2,A,0,0,D,10,5,3,2,14,25,6,2,5,5,1,0,2.9,3.3,2.5,2.9,3.25,2.5,2.95,3.15,2.55,3,3.26,2.61,2.9,3.2,2.55,3,3.2,2.6,39,3,2.93,3.3,3.19,2.64,2.55,37,2.31,2.23,1.7,1.65,19,0.25,1.78,1.74,2.21,2.16,2.99,3.3,2.58 -SP1,22/10/2018,Sociedad,Girona,0,0,D,0,0,D,14,12,8,2,14,15,7,6,3,1,0,0,1.72,3.75,5,1.67,4,5,1.7,3.8,4.9,1.68,4.16,5.12,1.7,3.75,5,1.67,3.9,5.2,39,1.73,1.68,4.16,3.88,5.3,5.04,35,1.97,1.9,1.97,1.89,20,-1,2.35,2.24,1.75,1.68,1.82,3.69,4.83 -SP1,24/10/2018,Vallecano,Ath Bilbao,1,1,D,1,0,H,11,12,3,4,14,9,5,4,1,1,0,0,3.3,3.3,2.25,3.3,3.3,2.25,3.25,3.35,2.25,3.28,3.53,2.29,3.2,3.4,2.25,3.4,3.4,2.25,37,3.4,3.26,3.53,3.36,2.3,2.24,34,2.05,1.97,1.91,1.83,18,0.25,1.98,1.93,1.97,1.93,3.3,3.51,2.28 -SP1,26/10/2018,Valladolid,Espanol,1,1,D,0,1,A,15,11,2,4,16,16,5,2,4,2,0,0,3.4,3.1,2.25,3.1,3.2,2.4,2.75,3.25,2.6,3.45,3.21,2.36,3.3,3.1,2.35,3.4,3.2,2.38,36,3.45,3.3,3.25,3.14,2.6,2.35,33,2.51,2.38,1.62,1.58,16,0.25,1.94,1.89,2.01,1.99,3.61,3.19,2.3 -SP1,27/10/2018,Ath Bilbao,Valencia,0,0,D,0,0,D,13,11,2,3,25,22,5,2,2,5,0,0,2.5,3.3,2.87,2.55,3.3,2.85,2.4,3.3,2.95,2.69,3.23,2.91,2.6,3.25,2.8,2.63,3.3,2.9,37,2.74,2.6,3.35,3.22,2.95,2.83,35,2.2,2.09,1.8,1.73,17,-0.25,2.31,2.23,1.74,1.69,2.88,3.26,2.7 -SP1,27/10/2018,Ath Madrid,Sociedad,2,0,H,1,0,H,14,7,4,0,10,7,10,1,2,1,0,0,1.53,3.8,7.5,1.55,3.8,7,1.5,3.9,7.6,1.55,3.96,7.47,1.55,4,6.5,1.55,4,7.5,37,1.6,1.53,4.15,3.9,7.65,7.19,35,2.35,2.22,1.71,1.65,18,-1,2.02,1.96,1.95,1.9,1.49,3.97,9.33 -SP1,27/10/2018,Celta,Eibar,4,0,H,2,0,H,10,17,6,5,9,8,2,8,0,0,0,0,2.14,3.3,3.6,2.1,3.4,3.6,2.1,3.4,3.5,2.25,3.41,3.49,2.2,3.3,3.4,2.2,3.4,3.5,37,2.25,2.18,3.45,3.35,3.62,3.42,34,2.05,1.97,1.9,1.83,17,-0.25,1.95,1.88,2.04,1.98,2.24,3.48,3.44 -SP1,27/10/2018,Girona,Vallecano,2,1,H,2,0,H,14,14,6,5,11,16,4,7,1,3,1,0,1.85,3.5,4.5,1.83,3.6,4.4,1.8,3.6,4.5,1.93,3.58,4.31,1.91,3.6,4,1.93,3.75,4.1,37,1.95,1.89,3.75,3.57,4.5,4.22,34,1.97,1.89,2,1.91,18,-1,2.79,2.66,1.55,1.5,2,3.52,4.14 -SP1,27/10/2018,Levante,Leganes,2,0,H,1,0,H,9,21,4,6,12,14,3,2,2,2,0,0,2.1,3.25,3.75,2.15,3.4,3.4,2.2,3.3,3.4,2.17,3.43,3.65,2.15,3.3,3.5,2.15,3.3,3.6,37,2.22,2.15,3.45,3.33,3.75,3.51,35,2.1,2.04,1.85,1.77,16,0,1.57,1.54,2.66,2.54,2.37,3.37,3.25 -SP1,28/10/2018,Alaves,Villarreal,2,1,H,0,1,A,19,9,6,2,9,11,8,4,1,1,0,0,3,3.2,2.5,3.1,3.2,2.4,2.65,3.3,2.65,3.18,3.34,2.43,3.1,3.2,2.4,3.1,3.25,2.38,37,3.25,3.1,3.35,3.21,2.65,2.4,35,2.35,2.24,1.7,1.64,17,0.25,1.86,1.83,2.1,2.04,3.35,3.47,2.28 -SP1,28/10/2018,Barcelona,Real Madrid,5,1,H,2,0,H,13,15,8,4,17,14,4,2,2,2,0,0,1.95,3.8,3.6,1.95,3.8,3.6,2.1,3.6,3.3,2,3.78,3.8,2,3.7,3.6,1.95,3.8,3.6,36,2.1,1.97,3.95,3.74,3.89,3.65,33,1.6,1.53,2.6,2.46,17,-0.25,1.75,1.72,2.28,2.2,2.06,3.72,3.69 -SP1,28/10/2018,Getafe,Betis,2,0,H,0,0,D,16,7,7,3,9,14,5,4,1,2,0,0,2.4,3.1,3.25,2.4,3.1,3.2,2.4,3.05,3.25,2.48,3.12,3.32,2.4,3.1,3.2,2.45,3.1,3.3,37,2.52,2.42,3.15,3.06,3.35,3.23,34,2.65,2.52,1.56,1.52,18,-0.25,2.1,2.04,1.88,1.83,2.65,3.1,3.08 -SP1,28/10/2018,Sevilla,Huesca,2,1,H,0,0,D,15,11,4,2,9,14,4,2,2,3,0,0,1.22,6.5,13,1.26,5.75,12.5,1.22,6.5,12.5,1.25,6.66,12.27,1.25,5.8,12,1.22,6.5,13,37,1.3,1.24,7,6.3,13.5,11.99,35,1.46,1.42,2.95,2.77,18,-2,2.16,2.09,1.85,1.78,1.22,6.79,14.38 -SP1,03/11/2018,Leganes,Ath Madrid,1,1,D,0,0,D,8,9,3,4,18,12,4,7,4,2,0,0,5.75,3.4,1.72,6,3.3,1.72,5.5,3.25,1.77,5.99,3.24,1.81,5.25,3.3,1.8,5.5,3.3,1.83,38,6.2,5.63,3.45,3.3,1.83,1.77,33,2.8,2.65,1.51,1.47,21,1,1.6,1.54,2.65,2.55,6.54,3.28,1.75 -SP1,03/11/2018,Real Madrid,Valladolid,2,0,H,0,0,D,16,12,7,2,14,7,8,6,1,0,0,0,1.16,8,15,1.18,7.25,15.5,1.2,7.1,13,1.2,7.28,14.98,1.18,7.5,13,1.18,8,17,37,1.23,1.19,8.1,7.34,17,13.95,32,1.4,1.35,3.43,3.13,20,-2,1.94,1.86,2.06,2,1.19,7.38,16.48 -SP1,03/11/2018,Valencia,Girona,0,1,A,0,0,D,27,5,9,3,14,13,11,2,4,4,0,0,1.5,4,7.5,1.5,4.1,7,1.65,3.8,5.4,1.48,4.49,7.48,1.5,4.2,7,1.5,4.2,8,38,1.65,1.49,4.49,4.19,8.2,7.33,35,2.15,2.05,1.82,1.77,21,-1,2.1,1.84,2.1,2.03,1.48,4.41,7.81 -SP1,03/11/2018,Vallecano,Barcelona,2,3,A,1,1,D,11,9,5,5,23,11,3,1,4,2,0,0,9.5,6,1.28,10,6,1.28,9.6,5.5,1.3,9.55,5.85,1.32,9,5.8,1.3,10.5,6,1.3,38,11,9.47,6.25,5.77,1.35,1.3,31,1.46,1.42,3,2.81,20,2,1.66,1.62,2.46,2.36,11.04,6.77,1.26 -SP1,04/11/2018,Betis,Celta,3,3,D,1,0,H,14,14,6,7,12,11,4,4,4,2,0,0,1.8,3.8,4.5,1.83,3.8,4.2,2,3.4,3.8,1.83,4.02,4.34,1.83,3.8,4.2,1.8,3.75,4.3,38,2,1.82,4.02,3.76,4.55,4.27,35,1.96,1.9,1.96,1.9,19,-0.75,2.13,2.06,1.85,1.81,1.77,3.86,4.91 -SP1,04/11/2018,Eibar,Alaves,2,1,H,0,1,A,23,9,8,3,11,7,13,1,4,0,1,1,2.04,3.3,3.9,2.1,3.3,3.7,2.3,3.3,3.15,2.1,3.35,3.96,2.1,3.25,3.75,2.1,3.3,4,37,2.3,2.08,3.4,3.3,4,3.82,35,2.38,2.28,1.7,1.62,19,-0.25,1.8,1.77,2.16,2.11,2.16,3.37,3.75 -SP1,04/11/2018,Huesca,Getafe,1,1,D,0,0,D,18,8,7,2,18,13,10,2,5,3,0,0,3.6,3.3,2.1,3.6,3.25,2.15,3.6,3.1,2.2,3.65,3.22,2.27,3.5,3.2,2.2,3.6,3.13,2.2,38,3.75,3.59,3.3,3.17,2.27,2.2,35,2.55,2.43,1.6,1.55,19,0.25,2.01,1.97,1.94,1.89,3.87,3.25,2.17 -SP1,04/11/2018,Sociedad,Sevilla,0,0,D,0,0,D,10,8,1,1,8,17,7,7,1,3,0,0,2.75,3.5,2.45,2.85,3.5,2.4,2.85,3.55,2.4,2.76,3.61,2.6,2.75,3.5,2.5,2.7,3.6,2.5,38,2.9,2.79,3.7,3.53,2.6,2.46,36,1.78,1.72,2.2,2.11,19,0.25,1.77,1.74,2.24,2.16,2.58,3.58,2.79 -SP1,04/11/2018,Villarreal,Levante,1,1,D,0,0,D,23,13,4,2,14,10,5,4,3,3,0,0,1.55,4,6,1.57,4.2,5.75,1.7,3.8,5,1.63,4.1,5.83,1.62,4.2,5.25,1.57,4.2,5.75,38,1.7,1.59,4.45,4.17,6.13,5.56,35,1.68,1.61,2.45,2.29,21,-1,2.15,1.99,1.92,1.87,1.72,4,5.06 -SP1,05/11/2018,Espanol,Ath Bilbao,1,0,H,1,0,H,8,10,3,2,15,13,2,1,1,3,0,0,2,3.3,4,1.95,3.3,4.2,1.97,3.35,4.05,2.02,3.43,4.18,2,3.4,3.9,2,3.4,4,37,2.1,1.99,3.45,3.33,4.25,4.04,35,2.3,2.22,1.71,1.65,18,-0.25,1.75,1.71,2.25,2.2,1.92,3.46,4.61 -SP1,09/11/2018,Levante,Sociedad,1,3,A,1,0,H,17,15,2,4,17,12,6,4,6,1,0,0,2.62,3.4,2.62,2.65,3.4,2.65,2.65,3.4,2.65,2.76,3.38,2.73,2.63,3.3,2.7,2.75,3.4,2.7,37,2.76,2.7,3.45,3.34,2.76,2.68,34,2.05,1.96,2,1.85,20,-0.25,2.36,2.3,1.7,1.66,2.95,3.38,2.56 -SP1,10/11/2018,Ath Madrid,Ath Bilbao,3,2,H,0,1,A,9,6,3,5,8,15,12,2,5,4,0,1,1.44,4,9,1.45,4,9,1.45,4.3,7.5,1.47,4.13,9.27,1.47,4,8.5,1.5,4,9,38,1.5,1.46,4.3,4.02,9.45,8.67,35,2.55,2.39,1.65,1.57,21,-1,1.86,1.81,2.11,2.05,1.59,3.53,8.51 -SP1,10/11/2018,Getafe,Valencia,0,1,A,0,0,D,17,7,3,3,23,8,6,4,3,3,1,0,2.75,3.1,2.75,2.8,3.1,2.7,2.7,3.2,2.7,2.91,3.1,2.78,2.75,3.1,2.75,2.9,3.1,2.75,38,2.95,2.84,3.2,3.05,2.85,2.73,35,2.75,2.58,1.57,1.49,19,0.25,1.68,1.65,2.37,2.31,3.08,3.08,2.66 -SP1,10/11/2018,Girona,Leganes,0,0,D,0,0,D,5,10,0,1,13,13,0,6,1,4,0,0,2.04,3.2,3.75,2.15,3.2,3.7,2.15,3.15,3.65,2.23,3.27,3.69,2.15,3.25,3.6,2.2,3.3,3.7,38,2.25,2.17,3.32,3.21,3.81,3.65,36,2.5,2.39,1.62,1.57,19,-0.25,1.9,1.86,2.05,2.01,2.27,3.19,3.68 -SP1,10/11/2018,Valladolid,Eibar,0,0,D,0,0,D,9,16,1,6,16,15,4,4,2,4,0,1,2.3,3.3,3.25,2.3,3.25,3.25,2.3,3.2,3.25,2.43,3.29,3.24,2.3,3.25,3.25,2.38,3.3,3.25,38,2.43,2.35,3.35,3.23,3.33,3.23,36,2.4,2.29,1.67,1.62,20,-0.25,2.07,2.01,1.9,1.86,2.55,3.11,3.22 -SP1,11/11/2018,Alaves,Huesca,2,1,H,1,1,D,13,9,5,2,20,13,5,4,3,4,0,0,1.8,3.6,4.33,1.83,3.5,4.6,1.7,3.8,5,1.88,3.47,4.83,1.85,3.5,4.5,1.87,3.6,4.6,38,1.91,1.85,3.8,3.46,5,4.59,36,2.25,2.17,1.75,1.69,19,-0.75,2.17,2.13,1.8,1.76,2.15,3.17,4.08 -SP1,11/11/2018,Barcelona,Betis,3,4,A,0,2,A,20,15,5,8,13,11,10,5,4,2,1,0,1.18,7,13,1.19,7.25,14,1.2,7,13,1.22,7.23,13.06,1.18,7.5,13,1.18,7.5,13,38,1.25,1.21,7.8,7.1,15,12.6,31,1.35,1.3,3.65,3.4,20,-2,1.98,1.91,2.02,1.95,1.19,7.71,15 -SP1,11/11/2018,Celta,Real Madrid,2,4,A,0,1,A,15,14,4,5,19,13,5,1,4,2,1,0,5,4.5,1.55,5,4.33,1.62,4.8,4.2,1.65,5.02,4.63,1.63,4.8,4.6,1.6,5.2,4.75,1.55,38,5.5,5.07,4.85,4.53,1.65,1.59,32,1.42,1.38,3.2,2.98,21,1,2.01,1.93,2,1.92,5.15,4.64,1.61 -SP1,11/11/2018,Sevilla,Espanol,2,1,H,0,1,A,23,15,10,7,18,10,6,3,4,2,0,0,1.75,3.6,4.5,1.75,3.7,4.75,1.8,3.6,4.5,1.81,3.7,4.91,1.8,3.8,4.33,1.8,3.8,4.4,38,1.85,1.79,3.9,3.7,4.91,4.58,35,1.84,1.77,2.13,2.04,21,-1,2.56,2.45,1.65,1.58,1.9,3.7,4.34 -SP1,11/11/2018,Vallecano,Villarreal,2,2,D,1,1,D,15,11,7,5,7,12,8,4,1,3,0,1,3.1,3.4,2.25,3.1,3.4,2.3,3.05,3.3,2.35,3.17,3.56,2.34,3.1,3.4,2.3,3.13,3.5,2.25,38,3.25,3.11,3.56,3.43,2.4,2.29,35,1.98,1.88,2.02,1.92,19,0.25,1.93,1.89,2.02,1.98,3.26,3.78,2.2 -SP1,23/11/2018,Leganes,Alaves,1,0,H,1,0,H,13,7,6,2,10,13,5,3,2,4,0,0,2.2,3.1,3.6,2.2,3.1,3.6,2.3,3.2,3.3,2.29,3.14,3.68,2.2,3.1,3.7,2.3,3.13,3.6,38,2.35,2.27,3.2,3.08,3.81,3.57,36,2.7,2.56,1.55,1.5,19,-0.25,1.97,1.93,1.98,1.94,2.22,3.1,3.97 -SP1,24/11/2018,Ath Madrid,Barcelona,1,1,D,0,0,D,3,8,1,2,19,12,2,8,5,3,0,0,3,3.3,2.37,3.1,3.3,2.35,3.3,3.2,2.3,3.1,3.33,2.49,3.1,3.2,2.4,3,3.4,2.45,37,3.3,3.03,3.45,3.31,2.5,2.41,35,2,1.92,1.95,1.88,20,0.25,1.84,1.8,2.13,2.07,3.1,3.34,2.48 -SP1,24/11/2018,Eibar,Real Madrid,3,0,H,1,0,H,14,9,8,3,17,8,5,4,2,1,0,0,6,4.33,1.53,6,4.4,1.53,5.5,4.65,1.53,5.96,4.55,1.56,5.8,4.5,1.52,6,4.6,1.55,38,6.5,5.71,4.85,4.54,1.57,1.53,34,1.5,1.45,1.8,1.69,23,1,2.07,2.02,2.85,2.67,7.04,4.92,1.46 -SP1,24/11/2018,Huesca,Levante,2,2,D,1,1,D,32,5,12,3,11,8,7,2,4,3,1,0,2.25,3.4,3.25,2.3,3.4,3.1,2.2,3.35,3.35,2.27,3.39,3.44,2.3,3.4,3.1,2.25,3.4,3.4,37,2.37,2.25,3.5,3.35,3.45,3.3,36,2.11,2.01,1.9,1.8,20,-0.25,1.97,1.92,2,1.94,2.31,3.4,3.36 -SP1,24/11/2018,Valencia,Vallecano,3,0,H,1,0,H,13,13,10,3,15,14,6,5,2,4,0,1,1.44,4.5,7.5,1.45,4.75,6.5,1.5,4.25,6.6,1.43,4.73,8.1,1.42,4.5,8,1.45,4.8,7.5,38,1.5,1.44,4.85,4.59,8.1,7.25,37,1.77,1.72,2.23,2.12,22,-1,1.77,1.72,2.26,2.17,1.43,4.59,8.86 -SP1,25/11/2018,Ath Bilbao,Getafe,1,1,D,0,0,D,8,15,4,2,10,12,2,2,5,4,0,0,2.04,3.3,3.9,2.1,3.25,3.8,2.05,3.2,3.9,2.11,3.37,3.9,2.05,3.25,3.9,2.1,3.3,4,37,2.15,2.08,3.4,3.25,4.05,3.85,35,2.59,2.44,1.6,1.55,20,-0.25,1.81,1.78,2.15,2.09,2.29,3.2,3.62 -SP1,25/11/2018,Espanol,Girona,1,3,A,0,2,A,18,16,10,11,16,14,8,3,3,4,0,0,1.66,3.6,5.75,1.62,3.7,6,1.7,3.7,5.1,1.68,3.85,5.8,1.65,3.5,6,1.62,3.8,5.75,37,1.75,1.66,3.9,3.7,6,5.64,36,2.3,2.18,1.75,1.68,22,-1,2.29,2.19,1.76,1.71,1.66,3.75,6.24 -SP1,25/11/2018,Sevilla,Valladolid,1,0,H,1,0,H,17,13,9,5,15,15,8,6,3,3,0,0,1.4,4.75,8,1.36,5.25,7.75,1.4,5,7.4,1.38,5.34,8.1,1.36,5,8.5,1.36,5,8,37,1.43,1.38,5.34,4.99,9,7.76,35,1.65,1.57,2.5,2.38,22,-1,1.65,1.59,2.5,2.4,1.4,4.89,8.83 -SP1,25/11/2018,Villarreal,Betis,2,1,H,0,0,D,13,13,8,6,15,13,5,4,2,1,0,0,2.14,3.4,3.4,2.15,3.5,3.3,2.2,3.3,3.4,2.25,3.59,3.32,2.2,3.5,3.25,2.2,3.5,3.25,37,2.32,2.21,3.65,3.47,3.4,3.24,35,1.84,1.78,2.15,2.03,20,-0.25,1.95,1.92,1.99,1.94,2.12,3.55,3.67 -SP1,26/11/2018,Sociedad,Celta,2,1,H,1,0,H,15,6,8,2,12,14,6,2,2,2,0,0,1.85,3.75,4.2,1.85,3.6,4.33,1.9,3.6,4,1.83,3.91,4.47,1.8,3.8,4.33,1.83,3.8,4.2,36,1.9,1.83,3.91,3.72,4.5,4.29,34,1.9,1.83,2.05,1.98,20,-0.75,2.12,2.06,1.85,1.81,1.9,3.75,4.28 -SP1,30/11/2018,Vallecano,Eibar,1,0,H,0,0,D,5,13,2,5,15,12,1,4,5,3,0,0,3.1,3.3,2.3,3,3.3,2.4,2.95,3.2,2.5,3.09,3.54,2.39,3,3.4,2.35,3.1,3.5,2.38,37,3.2,3.01,3.55,3.41,2.6,2.37,35,1.95,1.87,2.03,1.93,20,0.25,1.89,1.84,2.1,2.04,2.95,3.4,2.55 -SP1,01/12/2018,Celta,Huesca,2,0,H,1,0,H,12,8,5,3,14,14,4,4,2,3,0,0,1.64,4,5,1.65,3.9,5.25,1.65,3.8,5.4,1.74,3.87,5.17,1.7,3.8,5,1.73,4,5,37,1.8,1.69,4.15,3.88,5.6,5.07,36,1.81,1.76,2.13,2.05,22,-1,2.32,2.21,1.77,1.7,1.67,3.99,5.54 -SP1,01/12/2018,Getafe,Espanol,3,0,H,0,0,D,14,8,5,2,17,16,7,4,3,2,0,0,2.4,2.87,3.4,2.4,3,3.3,2.45,3,3.2,2.42,3.09,3.47,2.38,3,3.4,2.38,3.1,3.5,36,2.51,2.39,3.15,3.03,3.5,3.35,35,2.71,2.57,1.55,1.49,20,-0.25,2.05,2,1.91,1.86,2.48,3.13,3.31 -SP1,01/12/2018,Real Madrid,Valencia,2,0,H,1,0,H,13,7,3,2,11,10,2,2,1,3,0,0,1.44,4.75,7,1.45,4.75,6.5,1.5,4.8,5.6,1.47,4.84,6.99,1.44,4.6,7,1.45,4.8,7,37,1.51,1.45,5,4.73,7.5,6.72,35,1.55,1.5,2.71,2.55,22,-1,1.75,1.71,2.25,2.18,1.62,4.16,5.85 -SP1,01/12/2018,Valladolid,Leganes,2,4,A,0,2,A,20,14,6,5,5,13,6,5,0,3,0,0,2.37,3.1,3.3,2.35,3.1,3.3,2.4,3,3.3,2.46,3.02,3.48,2.38,3,3.4,2.4,3.1,3.4,37,2.5,2.41,3.15,3.01,3.55,3.35,33,2.92,2.73,1.5,1.44,21,-0.25,2.06,2.03,1.87,1.84,2.43,3.09,3.46 -SP1,02/12/2018,Alaves,Sevilla,1,1,D,1,0,H,11,14,3,3,21,14,2,5,3,3,0,0,3.6,3.6,2,3.6,3.5,2.05,3.4,3.5,2.1,3.79,3.69,2.03,3.7,3.6,2,3.6,3.7,2,37,3.9,3.68,3.75,3.61,2.1,2,36,1.85,1.77,2.12,2.03,20,0.25,2.23,2.16,1.77,1.73,3.72,3.48,2.13 -SP1,02/12/2018,Barcelona,Villarreal,2,0,H,1,0,H,16,12,7,2,9,17,11,1,2,4,0,0,1.25,6.5,11,1.22,6.75,11.5,1.25,6.5,10,1.25,6.9,11.47,1.22,6.5,13,1.22,6.5,13,37,1.27,1.23,7.3,6.67,13.25,11.42,30,1.36,1.33,3.45,3.23,21,-2,2.08,1.99,1.92,1.87,1.24,6.89,12.49 -SP1,02/12/2018,Betis,Sociedad,1,0,H,1,0,H,6,6,4,4,18,18,6,4,4,2,0,0,2.2,3.3,3.4,2.25,3.25,3.4,2.1,3.4,3.5,2.32,3.3,3.44,2.25,3.1,3.5,2.3,3.3,3.3,37,2.35,2.27,3.4,3.26,3.5,3.33,36,2.1,1.99,1.87,1.82,20,-0.25,2,1.94,1.96,1.92,1.85,3.76,4.5 -SP1,02/12/2018,Girona,Ath Madrid,1,1,D,1,0,H,13,17,3,3,8,16,2,9,0,5,0,0,5.5,3.4,1.75,5.5,3.4,1.75,5.1,3.3,1.8,5.64,3.42,1.79,5.5,3.4,1.75,5.5,3.4,1.8,37,5.65,5.32,3.55,3.36,1.83,1.77,35,2.55,2.44,1.61,1.54,21,1,1.6,1.55,2.63,2.5,5.52,3.38,1.81 -SP1,03/12/2018,Levante,Ath Bilbao,3,0,H,1,0,H,17,12,7,3,11,15,2,6,3,5,0,1,2.75,3.4,2.54,2.8,3.4,2.5,2.65,3.4,2.65,2.84,3.46,2.6,2.7,3.3,2.6,2.75,3.4,2.55,36,2.9,2.74,3.5,3.36,2.75,2.58,34,2.01,1.93,1.95,1.87,19,0.25,1.75,1.7,2.28,2.21,2.97,3.51,2.48 -SP1,07/12/2018,Leganes,Getafe,1,1,D,0,1,A,17,6,5,2,12,13,7,2,1,2,1,0,2.62,2.9,3,2.6,3,3,2.7,2.85,3.05,2.76,2.99,3.04,2.7,2.9,3,2.75,3,3,37,2.84,2.68,3.04,2.92,3.15,3.02,32,3.2,2.89,1.45,1.5,19,0,1.9,1.85,2.08,2.02,2.76,2.94,3.11 -SP1,08/12/2018,Ath Madrid,Alaves,3,0,H,1,0,H,12,13,5,3,20,15,5,5,5,4,0,0,1.36,4.5,10,1.4,4.33,9.5,1.43,4.2,8.5,1.39,4.38,11.88,1.38,4.33,11,1.4,4.5,10.5,38,1.45,1.39,4.6,4.35,11.88,10.12,35,2.3,2.21,1.72,1.66,23,-1,1.7,1.66,2.35,2.27,1.38,4.5,11.7 -SP1,08/12/2018,Espanol,Barcelona,0,4,A,0,3,A,15,17,3,9,16,10,11,4,1,0,0,0,6.5,4.33,1.5,6,4.4,1.53,5.7,4.3,1.55,6.09,4.64,1.53,6.5,4.4,1.5,6.5,4.6,1.53,37,6.5,6.09,4.7,4.44,1.56,1.52,34,1.63,1.58,2.5,2.36,22,1,2.08,2.03,1.87,1.83,8.23,5.02,1.4 -SP1,08/12/2018,Valencia,Sevilla,1,1,D,0,0,D,16,11,6,3,13,17,6,4,0,4,0,0,2.2,3.5,3.2,2.25,3.4,3.2,2.3,3.4,3.05,2.24,3.61,3.31,2.2,3.5,3.25,2.3,3.5,3.25,37,2.32,2.23,3.65,3.48,3.35,3.22,34,1.9,1.84,2.05,1.96,20,-0.25,1.97,1.93,1.98,1.93,2.1,3.65,3.63 -SP1,08/12/2018,Villarreal,Celta,2,3,A,0,1,A,13,14,3,7,12,10,6,1,3,3,0,0,1.72,3.8,4.75,1.8,3.75,4.33,1.85,3.6,4.3,1.81,3.9,4.56,1.78,3.8,4.4,1.8,3.9,4.6,37,1.85,1.79,4,3.81,4.81,4.45,35,1.77,1.71,2.21,2.13,22,-1,2.45,2.39,1.65,1.6,1.68,4.22,5.03 -SP1,09/12/2018,Betis,Vallecano,2,0,H,0,0,D,8,12,3,3,13,20,2,9,2,3,0,0,1.53,4.33,6,1.53,4.4,6,1.57,4.35,5.5,1.57,4.54,5.76,1.53,4.4,5.8,1.53,4.5,5.75,37,1.6,1.55,4.6,4.39,6.1,5.69,34,1.7,1.63,2.38,2.26,22,-1,1.97,1.92,1.98,1.93,1.49,4.69,6.79 -SP1,09/12/2018,Eibar,Levante,4,4,D,1,2,A,32,14,7,5,11,7,12,3,2,2,0,0,1.75,3.8,4.5,1.78,3.8,4.5,1.75,3.9,4.55,1.78,4.03,4.57,1.78,3.8,4.4,1.8,3.9,4.75,37,1.83,1.78,4.05,3.84,4.75,4.46,34,1.85,1.77,2.12,2.05,20,-0.75,2.03,1.98,1.93,1.88,1.71,3.99,5.16 -SP1,09/12/2018,Huesca,Real Madrid,0,1,A,0,1,A,11,5,4,4,12,10,11,6,2,2,0,0,10,5.5,1.3,9.25,5.25,1.33,9.6,5.5,1.3,9.11,6.01,1.32,9.5,5.8,1.3,9.5,5.75,1.3,37,10.25,9.13,6.05,5.62,1.36,1.31,31,1.5,1.44,2.9,2.72,22,1.5,2.05,1.99,1.91,1.85,9.97,5.92,1.31 -SP1,09/12/2018,Sociedad,Valladolid,1,2,A,0,1,A,23,10,5,6,9,16,11,6,2,2,0,0,1.61,3.6,6.5,1.62,3.6,6.5,1.6,3.75,6,1.61,3.94,6.47,1.6,3.8,6,1.6,3.9,6,37,1.65,1.61,4,3.78,6.5,6.11,34,2.25,2.15,1.75,1.69,22,-1,2.2,2.12,1.8,1.75,1.77,3.44,5.83 -SP1,10/12/2018,Ath Bilbao,Girona,1,0,H,0,0,D,25,3,10,1,17,15,11,0,3,1,0,0,1.95,3.4,4,2,3.3,4,1.95,3.4,4.05,1.98,3.57,4.15,1.95,3.5,4,1.95,3.5,4,36,2.05,1.98,3.57,3.38,4.33,4.02,34,2.25,2.14,1.76,1.7,19,-0.25,1.76,1.71,2.28,2.19,2.03,3.61,3.89 -SP1,14/12/2018,Celta,Leganes,0,0,D,0,0,D,15,5,2,2,11,11,10,0,3,3,0,0,1.85,3.5,4.33,1.83,3.5,4.6,1.85,3.4,4.6,1.87,3.5,4.82,1.85,3.4,4.6,1.87,3.5,4.75,36,1.91,1.86,3.65,3.46,4.95,4.59,34,2.35,2.23,1.74,1.65,21,-0.75,2.19,2.13,1.8,1.76,1.92,3.44,4.65 -SP1,15/12/2018,Eibar,Valencia,1,1,D,0,1,A,18,11,6,4,11,15,4,2,0,1,0,0,2.7,3.2,2.7,2.7,3.2,2.7,2.65,3.2,2.75,2.74,3.26,2.84,2.7,3.2,2.7,2.7,3.3,2.8,37,2.8,2.69,3.35,3.21,2.86,2.74,34,2.2,2.1,1.8,1.73,20,-0.25,2.36,2.29,1.7,1.66,2.7,3.16,2.97 -SP1,15/12/2018,Getafe,Sociedad,1,0,H,1,0,H,9,9,2,4,24,14,2,3,3,4,0,0,2.25,3.1,3.5,2.3,3.1,3.4,2.2,3.2,3.5,2.35,3.16,3.52,2.3,3,3.5,2.3,3.13,3.6,36,2.4,2.31,3.2,3.09,3.6,3.44,33,2.67,2.56,1.55,1.49,21,-0.25,2,1.95,1.96,1.91,2.35,3.12,3.59 -SP1,15/12/2018,Real Madrid,Vallecano,1,0,H,1,0,H,9,11,4,3,15,18,4,4,0,3,0,0,1.14,9,15,1.16,9.25,13,1.15,8.5,15,1.15,9.14,17.59,1.12,9,19,1.14,9,21,36,1.18,1.15,9.75,8.8,21,16.27,29,1.25,1.23,4.2,3.95,22,-2.5,2.09,2.02,1.89,1.83,1.16,8.66,17.59 -SP1,15/12/2018,Valladolid,Ath Madrid,2,3,A,0,2,A,8,14,2,5,16,13,9,3,4,1,0,0,5.75,3.4,1.72,5.75,3.3,1.75,5.1,3.3,1.8,6.11,3.5,1.72,5.8,3.5,1.7,6,3.5,1.73,36,6.15,5.7,3.51,3.41,1.8,1.73,33,2.7,2.48,1.58,1.52,22,1,1.65,1.6,2.5,2.4,6.75,3.4,1.7 -SP1,16/12/2018,Espanol,Betis,1,3,A,1,1,D,10,12,3,5,23,10,0,4,3,4,0,0,2.4,3.3,3,2.3,3.3,3.2,2.3,3.35,3.1,2.38,3.39,3.23,2.35,3.3,3.1,2.3,3.4,3.13,37,2.41,2.34,3.5,3.33,3.3,3.11,33,2.04,1.96,1.9,1.84,20,-0.25,2.05,2.01,1.9,1.86,2.57,3.35,2.97 -SP1,16/12/2018,Huesca,Villarreal,2,2,D,1,0,H,30,10,13,5,12,11,13,2,4,5,0,1,3.5,3.2,2.14,3.3,3.25,2.3,3.3,3.4,2.2,3.32,3.5,2.28,3.3,3.4,2.2,3.2,3.5,2.2,37,3.5,3.29,3.65,3.4,2.3,2.21,33,1.98,1.91,1.95,1.88,20,0.25,1.97,1.93,1.97,1.93,3.43,3.3,2.32 -SP1,16/12/2018,Levante,Barcelona,0,5,A,0,2,A,20,16,6,9,12,9,15,3,2,3,1,0,9,6.5,1.25,11,7,1.22,9.6,5.5,1.3,10.21,6.74,1.27,11,6.5,1.24,12,6.5,1.22,36,12,10.22,7.1,6.58,1.3,1.25,29,1.29,1.26,4,3.74,22,2,1.92,1.85,2.25,2.01,13.5,8.1,1.19 -SP1,16/12/2018,Sevilla,Girona,2,0,H,0,0,D,17,8,5,2,18,12,5,3,2,1,0,0,1.44,4.5,7,1.45,4.75,6.75,1.55,4,6.2,1.45,4.82,7.46,1.44,4.6,7,1.45,4.8,7,37,1.55,1.45,4.85,4.6,7.82,6.95,34,1.67,1.62,2.41,2.29,22,-1.5,2.5,2.28,1.7,1.65,1.42,4.81,8.33 -SP1,17/12/2018,Alaves,Ath Bilbao,0,0,D,0,0,D,11,6,2,3,16,13,5,3,2,2,0,0,3,3.2,2.5,2.75,3.3,2.6,2.85,3.1,2.6,2.95,3.23,2.66,2.9,3.1,2.6,2.88,3.2,2.55,35,3.01,2.88,3.3,3.15,2.81,2.59,33,2.4,2.29,1.65,1.61,19,0.25,1.75,1.71,2.25,2.2,3.23,3.22,2.47 -SP1,21/12/2018,Girona,Getafe,1,1,D,0,0,D,12,5,4,2,9,13,4,1,1,2,0,0,2.62,3,2.9,2.75,2.9,2.9,2.65,2.95,2.95,2.72,3.04,3.05,2.62,3,3,2.7,3.1,3,35,2.87,2.69,3.1,3.01,3.12,2.94,32,2.75,2.6,1.53,1.49,21,-0.25,2.35,2.25,1.73,1.69,2.69,3.03,3.1 -SP1,21/12/2018,Sociedad,Alaves,0,1,A,0,1,A,18,9,4,3,14,11,10,1,2,4,0,0,1.75,3.5,5,1.78,3.4,5.25,1.85,3.5,4.4,1.79,3.54,5.31,1.75,3.5,5.25,1.8,3.6,5,36,1.85,1.79,3.6,3.49,5.31,5.05,34,2.3,2.22,1.71,1.66,21,-1,2.6,2.53,1.6,1.55,1.72,3.61,5.81 -SP1,22/12/2018,Ath Bilbao,Valladolid,1,1,D,1,0,H,8,5,3,2,25,12,3,1,3,2,0,0,1.75,3.4,5,1.75,3.6,5,1.73,3.55,5.2,1.76,3.6,5.49,1.73,3.5,5.5,1.75,3.6,5.5,36,1.79,1.74,3.75,3.58,5.55,5.22,34,2.25,2.17,1.75,1.68,22,-1,2.49,2.39,1.65,1.61,1.7,3.72,5.81 -SP1,22/12/2018,Ath Madrid,Espanol,1,0,H,0,0,D,8,18,5,4,16,13,5,9,1,1,0,0,1.4,4,10,1.42,4.25,9,1.37,4.3,11,1.42,4.19,11.05,1.42,4,11,1.45,4.2,9.5,36,1.46,1.42,4.4,4.13,11.05,9.74,34,2.36,2.25,1.7,1.64,22,-1,1.8,1.75,2.2,2.14,1.44,4.32,9.53 -SP1,22/12/2018,Barcelona,Celta,2,0,H,2,0,H,9,11,5,1,14,15,4,6,0,1,0,0,1.12,9,21,1.11,9.75,21,1.12,9,20,1.13,10.28,18.95,1.1,11,19,1.11,11,26,36,1.17,1.12,11.25,9.83,26,19.17,32,1.2,1.17,5.25,4.74,22,-2.5,1.85,1.79,2.14,2.07,1.14,9.89,18.6 -SP1,22/12/2018,Betis,Eibar,1,1,D,1,0,H,4,15,2,4,11,13,4,11,2,4,0,0,1.8,3.75,4.5,1.78,3.7,4.6,1.75,3.7,4.8,1.81,3.84,4.68,1.78,3.75,4.5,1.85,3.75,4.5,36,1.85,1.8,3.9,3.73,4.8,4.5,34,1.85,1.78,2.11,2.04,22,-1,2.56,2.46,1.63,1.57,1.85,3.84,4.43 -SP1,23/12/2018,Leganes,Sevilla,1,1,D,1,0,H,13,8,4,2,14,9,3,6,3,3,0,1,3.4,3.2,2.25,3.25,3.25,2.3,3.3,3.25,2.3,3.42,3.25,2.35,3.3,3.2,2.3,3.2,3.3,2.3,36,3.44,3.28,3.35,3.23,2.37,2.3,33,2.2,2.1,1.8,1.73,19,0.25,1.94,1.89,2.03,1.98,3.05,3.15,2.64 -SP1,23/12/2018,Valencia,Huesca,2,1,H,1,0,H,19,11,8,4,14,15,12,5,7,4,0,0,1.4,4.75,8,1.4,4.4,9,1.42,4.55,7.9,1.4,4.69,9.64,1.38,4.6,9.5,1.4,4.8,8.5,36,1.45,1.4,4.85,4.59,9.8,8.51,33,1.8,1.73,2.2,2.09,21,-1.5,2.31,2.2,1.75,1.71,1.45,4.3,9.15 -SP1,23/12/2018,Vallecano,Levante,2,1,H,1,0,H,18,12,8,7,13,10,3,5,2,2,0,0,2.1,3.6,3.4,2.1,3.8,3.25,2.25,3.4,3.2,2.14,3.95,3.27,2.1,3.8,3.2,2.1,3.75,3.25,35,2.25,2.11,4,3.77,3.4,3.24,32,1.7,1.63,2.36,2.26,19,-0.25,1.9,1.86,2.07,2.02,2.17,3.83,3.3 -SP1,03/01/2019,Villarreal,Real Madrid,2,2,D,1,2,A,12,14,4,7,12,13,6,4,2,2,0,0,3.8,3.8,1.85,3.9,3.75,1.83,3.8,3.9,1.87,4.02,3.98,1.9,4,3.9,1.85,3.9,3.9,1.87,34,4.1,3.93,4,3.83,1.92,1.87,32,1.6,1.54,2.55,2.44,20,0.75,1.84,1.78,2.16,2.11,4.95,4.2,1.7 -SP1,04/01/2019,Espanol,Leganes,1,0,H,1,0,H,12,10,1,2,10,17,3,6,2,5,0,1,2,3.3,4.2,2,3.2,4.2,2,3.3,4,2.04,3.28,4.33,2,3.2,4.2,2,3.3,4.3,36,2.08,2.01,3.33,3.22,4.4,4.2,33,2.67,2.52,1.58,1.52,20,-0.25,1.76,1.72,2.26,2.2,1.99,3.17,4.78 -SP1,04/01/2019,Levante,Girona,2,2,D,0,1,A,19,9,8,2,18,16,8,2,3,1,1,0,2.15,3.5,3.3,2.15,3.5,3.3,2.15,3.55,3.25,2.24,3.6,3.32,2.2,3.5,3.25,2.15,3.6,3.3,36,2.28,2.18,3.65,3.55,3.47,3.3,34,1.76,1.71,2.23,2.14,19,-0.25,2,1.9,2.02,1.98,2.21,3.68,3.33 -SP1,05/01/2019,Alaves,Valencia,2,1,H,2,1,H,14,14,5,2,10,13,2,6,3,3,0,0,3.1,3.1,2.4,3.1,3.2,2.4,3.15,3.1,2.45,3.15,3.27,2.49,3.1,3.2,2.4,3.2,3.2,2.5,33,3.3,3.13,3.29,3.15,2.5,2.43,30,2.55,2.41,1.61,1.56,18,0.25,1.84,1.8,2.12,2.07,3.4,3.25,2.36 -SP1,05/01/2019,Huesca,Betis,2,1,H,0,0,D,11,7,6,1,21,7,4,6,3,2,0,0,3.2,3.5,2.2,3.3,3.4,2.2,3.2,3.4,2.25,3.28,3.46,2.32,3.2,3.4,2.25,3.25,3.5,2.3,33,3.4,3.24,3.5,3.4,2.34,2.25,30,1.95,1.88,2.05,1.92,17,0.25,1.96,1.92,1.99,1.94,3.27,3.55,2.29 -SP1,05/01/2019,Valladolid,Vallecano,0,1,A,0,1,A,12,9,5,5,16,23,9,5,0,3,0,0,2.1,3.4,3.6,2.05,3.4,3.7,2.1,3.35,3.65,2.14,3.38,3.8,2.1,3.3,3.7,2.15,3.4,3.7,33,2.16,2.09,3.47,3.35,3.85,3.71,31,2.12,2.04,1.85,1.77,18,-0.25,1.86,1.8,2.16,2.08,2.16,3.3,3.86 -SP1,06/01/2019,Eibar,Villarreal,0,0,D,0,0,D,24,7,6,4,12,17,13,1,0,2,0,0,2.1,3.25,3.5,2.1,3.5,3.5,2.15,3.5,3.4,2.18,3.54,3.52,2.15,3.4,3.4,2.15,3.5,3.5,33,2.2,2.14,3.6,3.46,3.6,3.44,30,1.95,1.87,2,1.93,17,-0.25,1.91,1.85,2.07,2.02,2.19,3.45,3.58 -SP1,06/01/2019,Getafe,Barcelona,1,2,A,1,2,A,10,12,2,8,23,12,4,4,4,3,0,0,8,5.25,1.36,7.5,5,1.4,7.2,5,1.4,7.4,5.18,1.42,8,5,1.38,8,5.2,1.36,33,8.5,7.62,5.3,5.01,1.45,1.4,31,1.6,1.54,2.6,2.43,19,1.5,1.82,1.78,2.17,2.1,7.27,4.96,1.44 -SP1,06/01/2019,Real Madrid,Sociedad,0,2,A,0,1,A,28,12,8,4,13,13,10,4,5,1,1,0,1.33,6,7.5,1.33,5.5,8.75,1.35,6,7,1.35,5.49,9.03,1.33,5.25,9,1.33,5.5,8.5,33,1.38,1.34,6,5.43,9.1,8.47,32,1.5,1.43,3,2.75,19,-1.5,2.02,1.94,2,1.91,1.36,5.14,9.51 -SP1,06/01/2019,Sevilla,Ath Madrid,1,1,D,1,1,D,15,12,5,7,15,11,4,5,5,7,0,0,2.8,3.1,2.7,2.8,3.2,2.65,2.7,3.1,2.8,2.84,3.15,2.81,2.75,3.1,2.75,2.8,3.2,2.8,33,2.86,2.78,3.2,3.11,2.85,2.73,31,2.35,2.26,1.68,1.63,17,-0.25,2.42,2.36,1.66,1.63,2.94,3.41,2.56 -SP1,07/01/2019,Celta,Ath Bilbao,1,2,A,1,1,D,17,8,3,4,16,21,3,2,2,5,0,0,2.4,3.3,3,2.4,3.3,3,2.45,3.25,2.95,2.52,3.33,3.05,2.5,3.25,2.9,2.45,3.3,3,33,2.55,2.44,3.38,3.27,3.17,2.99,30,2.06,1.99,1.87,1.81,17,-0.25,2.19,2.12,1.8,1.77,2.58,3.1,3.19 -SP1,11/01/2019,Vallecano,Celta,4,2,H,2,2,D,11,13,8,4,12,8,7,5,4,1,0,0,2.5,3.4,2.8,2.5,3.3,2.85,2.5,3.3,2.85,2.59,3.26,3.02,2.5,3.25,2.9,2.5,3.4,3,38,2.62,2.53,3.4,3.23,3.02,2.93,37,2.24,2.14,1.84,1.71,22,-0.25,2.24,2.16,1.78,1.74,2.52,3.28,3.09 -SP1,12/01/2019,Girona,Alaves,1,1,D,1,0,H,9,15,4,4,21,14,6,3,4,2,0,0,2.1,3.1,4,2.15,3.1,3.75,2.3,3.1,3.4,2.23,3.15,3.86,2.2,3,3.75,2.25,3.1,3.8,38,2.3,2.19,3.2,3.09,4,3.73,36,2.65,2.51,1.57,1.52,21,-0.25,1.9,1.86,2.05,2,1.96,3.48,4.36 -SP1,12/01/2019,Leganes,Huesca,1,0,H,0,0,D,14,9,7,3,11,9,4,4,3,3,0,0,1.95,3.25,4.33,1.95,3.25,4.4,2,3.3,4,2.01,3.26,4.48,1.95,3.2,4.4,2,3.3,4.4,38,2.05,1.98,3.34,3.23,4.55,4.32,36,2.57,2.44,1.6,1.55,22,-0.25,1.72,1.69,2.33,2.25,2.12,3.03,4.47 -SP1,12/01/2019,Valencia,Valladolid,1,1,D,0,0,D,17,6,5,1,15,18,7,0,2,5,0,0,1.53,4,7,1.55,3.9,6.75,1.65,3.9,5.2,1.59,3.86,7.01,1.55,3.8,7,1.6,4,6.5,38,1.65,1.57,4.1,3.89,7.1,6.63,36,2.09,2,1.9,1.82,24,-1,2.1,2.01,1.91,1.86,1.53,3.97,7.96 -SP1,12/01/2019,Villarreal,Getafe,1,2,A,0,0,D,17,9,6,4,14,13,6,1,5,3,0,0,2.15,3.1,3.8,2.15,3.1,3.8,2.2,3.2,3.5,2.16,3.21,3.99,2.15,3.1,3.8,2.2,3.2,3.8,38,2.2,2.15,3.25,3.14,4.05,3.8,37,2.35,2.26,1.72,1.64,21,-0.25,1.9,1.83,2.1,2.05,2.05,3.38,4.14 -SP1,13/01/2019,Ath Bilbao,Sevilla,2,0,H,1,0,H,10,10,3,4,14,14,7,6,4,3,0,0,2.75,3.2,2.7,2.75,3.25,2.65,2.85,3.2,2.55,2.72,3.34,2.8,2.7,3.2,2.7,2.75,3.3,2.75,38,2.85,2.71,3.37,3.25,2.8,2.69,37,2.11,2.03,1.88,1.79,21,0.25,1.7,1.66,2.38,2.29,2.7,3.21,2.92 -SP1,13/01/2019,Ath Madrid,Levante,1,0,H,0,0,D,19,7,5,2,9,17,5,2,0,3,0,0,1.25,6,12,1.28,5.75,11,1.3,5.5,9.6,1.26,5.93,13.8,1.25,5.8,13,1.29,6,11.5,38,1.3,1.27,6.1,5.75,14,11.97,37,1.7,1.64,2.4,2.26,23,-1.5,1.91,1.85,2.12,2.02,1.32,5.18,11.82 -SP1,13/01/2019,Barcelona,Eibar,3,0,H,1,0,H,7,15,6,2,10,12,2,3,2,1,0,0,1.12,9,21,1.12,9.5,18,1.15,8,17,1.14,9.51,19.09,1.12,9,19,1.12,9.5,21,38,1.16,1.13,10.75,9.07,23,18.4,36,1.26,1.24,3.85,3.61,23,-2.5,2.15,1.98,1.93,1.88,1.17,8.07,17.37 -SP1,13/01/2019,Betis,Real Madrid,1,2,A,0,1,A,9,14,2,5,9,13,6,5,2,3,0,0,3.25,3.75,2.1,3.25,3.75,2.1,3.45,3.5,2.1,3.29,3.94,2.13,3.25,3.75,2.1,3.2,3.8,2.1,36,3.45,3.26,4,3.74,2.18,2.11,34,1.67,1.62,2.4,2.28,21,0.25,2.05,2.01,1.89,1.85,3.06,3.77,2.31 -SP1,14/01/2019,Sociedad,Espanol,3,2,H,2,2,D,9,21,4,2,15,12,7,3,7,4,1,0,2,3.3,4,1.95,3.3,4.2,2,3.2,4.2,2,3.31,4.47,1.91,3.3,4.4,1.95,3.4,4.1,37,2.03,1.97,3.45,3.31,4.5,4.16,36,2.35,2.26,1.7,1.64,20,-0.25,1.71,1.68,2.31,2.25,2.2,3.29,3.75 -SP1,18/01/2019,Getafe,Alaves,4,0,H,1,0,H,12,6,5,0,17,18,4,2,0,4,0,0,2,3.1,4.5,1.95,3.1,4.75,1.9,3.3,4.5,2.09,3.01,4.63,2,3.1,4.4,2.05,3.2,4.3,34,2.1,2.01,3.3,3.07,4.9,4.54,32,3,2.74,1.49,1.44,16,-0.75,2.49,2.39,1.67,1.61,1.79,3.47,5.48 -SP1,19/01/2019,Celta,Valencia,1,2,A,1,0,H,12,13,4,8,18,12,4,6,4,3,0,0,3.1,3.2,2.4,3.1,3.1,2.45,2.7,3.2,2.7,3.15,3.34,2.45,3,3.2,2.45,3.13,3.25,2.45,37,3.2,3.04,3.34,3.22,2.7,2.45,36,2.25,2.14,1.78,1.71,21,0.25,1.84,1.8,2.13,2.09,3.37,3.41,2.29 -SP1,19/01/2019,Huesca,Ath Madrid,0,3,A,0,1,A,14,15,3,8,15,13,6,5,2,2,0,0,5.75,3.6,1.66,5.75,3.6,1.67,6.7,3.6,1.6,6.01,3.5,1.74,5.8,3.6,1.67,5.75,3.6,1.73,37,6.7,5.68,3.7,3.55,1.76,1.7,36,2.35,2.23,1.7,1.66,23,1,1.7,1.65,2.38,2.31,6.26,3.46,1.72 -SP1,19/01/2019,Real Madrid,Sevilla,2,0,H,0,0,D,23,4,6,1,9,14,7,4,2,3,0,0,1.7,4.2,4.5,1.72,4.1,4.5,1.7,4.2,4.5,1.77,4.12,4.55,1.7,4.2,4.5,1.75,4.2,4.5,37,1.8,1.74,4.25,4.1,4.65,4.42,35,1.56,1.53,2.6,2.48,21,-1,2.31,2.25,1.72,1.69,1.69,4.17,5.06 -SP1,20/01/2019,Barcelona,Leganes,3,1,H,1,0,H,15,5,7,2,12,18,5,1,3,3,0,0,1.12,9,21,1.13,9,19.5,1.12,8.5,22,1.14,8.97,24.26,1.11,9,23,1.12,9,23,37,1.15,1.13,11.25,8.86,27,21.43,35,1.4,1.36,3.25,3.07,23,-2.5,2.11,2.06,1.86,1.81,1.22,6.35,16.61 -SP1,20/01/2019,Betis,Girona,3,2,H,1,2,A,12,8,5,5,9,12,7,2,2,4,0,0,1.61,3.75,6,1.62,3.9,5.75,1.75,3.7,4.8,1.65,4.05,5.64,1.65,3.8,5.5,1.67,3.9,5.75,37,1.75,1.64,4.1,3.9,6,5.51,35,2.03,1.94,1.96,1.87,23,-1,2.25,2.16,1.8,1.73,1.65,3.97,5.92 -SP1,20/01/2019,Levante,Valladolid,2,0,H,1,0,H,13,13,4,3,12,18,3,2,6,5,0,0,2.1,3.5,3.5,2.05,3.5,3.6,2.1,3.4,3.5,2.12,3.64,3.59,2.05,3.5,3.6,2.1,3.6,3.4,37,2.14,2.08,3.75,3.55,3.65,3.5,35,1.85,1.78,2.1,2.04,21,-0.25,1.86,1.81,2.11,2.07,1.94,3.65,4.18 -SP1,20/01/2019,Vallecano,Sociedad,2,2,D,2,1,H,11,10,4,4,14,10,2,9,2,1,0,0,2.87,3.3,2.5,2.85,3.3,2.5,2.85,3.3,2.5,2.82,3.63,2.53,2.8,3.5,2.45,2.75,3.5,2.5,37,2.91,2.81,3.63,3.46,2.56,2.49,35,1.9,1.84,2.08,1.97,21,0.25,1.77,1.74,2.23,2.16,2.89,3.35,2.63 -SP1,20/01/2019,Villarreal,Ath Bilbao,1,1,D,0,1,A,3,9,1,2,17,13,1,3,4,1,0,0,2.2,3.3,3.4,2.15,3.3,3.5,2.2,3.3,3.4,2.3,3.32,3.45,2.2,3.3,3.4,2.25,3.4,3.2,37,2.32,2.24,3.45,3.31,3.5,3.36,36,2.16,2.07,1.82,1.76,21,-0.25,2.01,1.95,1.96,1.92,2.04,3.51,3.98 -SP1,21/01/2019,Eibar,Espanol,3,0,H,1,0,H,16,6,9,0,16,10,6,2,2,5,0,0,2.1,3.1,4,2.05,3.3,3.8,2.1,3.3,3.65,2.09,3.42,3.91,2.05,3.3,3.8,2.05,3.4,3.75,36,2.11,2.06,3.46,3.34,4,3.79,35,2.3,2.18,1.74,1.68,20,-0.25,1.83,1.78,2.19,2.11,1.85,3.66,4.68 -SP1,26/01/2019,Ath Madrid,Getafe,2,0,H,2,0,H,10,6,6,2,11,26,3,6,2,7,0,2,1.53,3.6,8,1.55,3.7,7.25,1.55,3.7,7.2,1.59,3.69,7.62,1.57,3.6,7.5,1.62,3.7,7,37,1.62,1.58,3.87,3.67,8,7.21,35,2.57,2.45,1.6,1.55,23,-1,2.16,2.09,1.85,1.79,1.71,3.25,7.24 -SP1,26/01/2019,Leganes,Eibar,2,2,D,0,2,A,9,5,3,2,15,14,4,5,2,3,0,0,2.62,3,3,2.6,3,3,2.7,2.9,2.9,2.77,3.04,2.99,2.62,3,3,2.75,3,3,37,2.8,2.68,3.12,2.98,3.05,2.96,35,2.9,2.7,1.5,1.45,21,-0.25,2.31,2.26,1.71,1.67,2.77,2.98,3.05 -SP1,26/01/2019,Sevilla,Levante,5,0,H,0,0,D,23,7,9,0,15,13,5,8,2,1,0,0,1.53,4.33,6,1.55,4.33,5.75,1.5,4.5,6.2,1.56,4.41,6.1,1.55,4.33,5.8,1.57,4.5,5.5,37,1.59,1.55,4.6,4.38,6.5,5.8,36,1.52,1.47,2.63,2.45,23,-1,1.96,1.9,2.01,1.96,1.4,5.1,8.17 -SP1,26/01/2019,Valencia,Villarreal,3,0,H,1,0,H,18,14,9,5,13,8,7,4,1,3,0,0,1.83,3.6,4.5,1.87,3.4,4.5,1.87,3.6,4.2,1.9,3.61,4.47,1.85,3.5,4.33,1.91,3.6,4.4,37,1.94,1.88,3.75,3.55,4.5,4.28,35,2,1.92,1.95,1.89,21,-1,2.77,2.69,1.55,1.49,2.08,3.4,3.97 -SP1,27/01/2019,Ath Bilbao,Betis,1,0,H,1,0,H,11,8,2,2,20,6,6,4,4,2,1,0,2.1,3.3,3.5,2.15,3.3,3.5,2.05,3.4,3.65,2.11,3.48,3.78,2.1,3.3,3.7,2.1,3.4,3.6,36,2.17,2.1,3.54,3.37,3.82,3.64,35,2.15,2.06,1.84,1.76,20,-0.25,1.85,1.8,2.12,2.08,2.1,3.3,4.05 -SP1,27/01/2019,Espanol,Real Madrid,2,4,A,1,3,A,13,16,6,9,15,17,1,6,3,4,0,1,4.2,4,1.8,4.1,4,1.8,4.4,3.7,1.8,4.33,4.03,1.82,4.2,3.9,1.8,4.2,3.9,1.8,35,4.5,4.21,4.05,3.86,1.85,1.8,33,1.76,1.7,2.24,2.16,20,1,1.62,1.58,2.51,2.45,5.59,4.02,1.66 -SP1,27/01/2019,Girona,Barcelona,0,2,A,0,1,A,13,15,5,7,18,12,3,8,5,3,1,0,10,5.25,1.33,9.5,5.25,1.33,8.8,5.3,1.33,8.95,5.59,1.35,8.5,5.5,1.33,9,5.5,1.33,36,10,8.79,5.65,5.34,1.37,1.34,34,1.55,1.48,2.76,2.58,22,1.5,1.95,1.92,2.01,1.95,10.12,5.66,1.32 -SP1,27/01/2019,Sociedad,Huesca,0,0,D,0,0,D,8,8,1,1,9,22,5,2,0,3,0,0,1.61,3.75,6,1.62,3.9,5.75,1.57,3.9,6.1,1.62,4.1,5.98,1.62,3.9,5.8,1.6,4,5.75,37,1.66,1.61,4.25,3.96,6.1,5.68,34,1.95,1.87,2,1.94,22,-1,2.16,2.08,1.85,1.79,1.63,3.92,6.31 -SP1,27/01/2019,Valladolid,Celta,2,1,H,0,1,A,19,8,7,3,15,19,7,5,2,5,0,1,2.4,3.2,3.1,2.4,3.25,3.1,2.4,3.15,3.1,2.5,3.26,3.14,2.4,3.2,3.1,2.45,3.3,3.13,37,2.52,2.42,3.3,3.2,3.21,3.1,35,2.38,2.28,1.67,1.62,20,-0.25,2.12,2.07,1.84,1.81,2.57,3.15,3.15 -SP1,28/01/2019,Alaves,Vallecano,0,1,A,0,0,D,16,14,1,3,14,19,7,4,2,5,0,0,2.15,3.3,3.5,2.15,3.25,3.6,2.05,3.3,3.8,2.24,3.38,3.54,2.2,3.25,3.5,2.2,3.3,3.4,36,2.29,2.2,3.38,3.27,3.8,3.47,35,2.2,2.13,1.77,1.71,20,-0.25,1.96,1.9,2.02,1.98,2.4,3.27,3.31 -SP1,01/02/2019,Huesca,Valladolid,4,0,H,1,0,H,11,9,7,4,17,11,7,7,6,2,0,0,2.25,3.25,3.4,2.25,3.2,3.4,2.3,3.05,3.45,2.31,3.29,3.47,2.25,3.1,3.5,2.25,3.25,3.6,35,2.35,2.28,3.3,3.16,3.6,3.45,33,2.65,2.52,1.57,1.52,19,-0.5,2.35,2.27,1.7,1.67,2.22,3.27,3.7 -SP1,02/02/2019,Barcelona,Valencia,2,2,D,1,2,A,20,14,8,7,8,5,9,1,3,0,0,0,1.28,5.75,11,1.3,5.75,9.25,1.3,5.8,9,1.3,6.41,9.03,1.25,6.5,10,1.29,6.25,10.5,35,1.32,1.29,6.5,6.05,11,9.31,32,1.4,1.36,3.35,3.09,22,-1.5,1.82,1.77,2.15,2.09,1.44,4.88,7.54 -SP1,02/02/2019,Celta,Sevilla,1,0,H,0,0,D,10,13,4,2,13,12,4,9,4,4,0,0,3.75,3.6,2,3.7,3.6,2,3.6,3.6,2,3.73,3.77,2.03,3.6,3.6,2,3.6,3.7,2.1,35,3.8,3.61,3.77,3.61,2.1,2.02,34,1.85,1.77,2.14,2.05,20,0.25,2.19,2.11,1.8,1.77,3.53,3.62,2.15 -SP1,02/02/2019,Levante,Getafe,0,0,D,0,0,D,8,9,4,2,7,15,5,5,4,3,0,0,2.37,3.25,3.1,2.4,3.25,3.1,2.4,3.3,3,2.47,3.37,3.09,2.4,3.3,3,2.4,3.4,3.1,35,2.48,2.39,3.42,3.33,3.2,3.05,33,2.05,1.98,1.91,1.83,20,-0.25,2.11,2.05,1.86,1.82,2.58,3.4,2.92 -SP1,02/02/2019,Sociedad,Ath Bilbao,2,1,H,2,0,H,6,8,2,5,17,13,3,3,1,1,0,0,2.35,3.3,3.2,2.25,3.25,3.4,2.4,3.15,3.15,2.41,3.24,3.32,2.3,3.2,3.25,2.38,3.3,3.25,35,2.42,2.35,3.3,3.18,3.4,3.25,34,2.4,2.3,1.67,1.62,20,-0.25,2.05,2.01,1.9,1.86,2.58,2.93,3.38 -SP1,03/02/2019,Betis,Ath Madrid,1,0,H,0,0,D,7,13,3,1,7,21,1,7,4,3,0,0,4,3.2,2.05,3.8,3.3,2.05,4,3.15,2.05,3.99,3.45,2.06,3.9,3.3,2,4,3.3,2,34,4.05,3.9,3.45,3.31,2.12,2.04,32,2.45,2.34,1.65,1.6,20,0.25,2.2,2.13,1.8,1.75,4.05,3.31,2.1 -SP1,03/02/2019,Eibar,Girona,3,0,H,1,0,H,17,6,5,2,12,9,8,5,2,1,0,0,1.66,4,5,1.72,3.7,5,1.8,3.6,4.5,1.74,3.95,4.99,1.67,4,5,1.7,3.8,5,35,1.8,1.71,4.05,3.86,5.25,4.9,33,2,1.93,1.95,1.87,22,-1,2.44,2.32,1.7,1.64,1.64,4.21,5.49 -SP1,03/02/2019,Real Madrid,Alaves,3,0,H,1,0,H,22,8,8,1,10,12,7,2,0,3,0,0,1.2,6.5,15,1.22,6.5,12.5,1.25,6.1,11,1.23,6.91,12.51,1.22,6.5,13,1.2,6.5,15,35,1.25,1.22,7.25,6.53,15.5,12.8,34,1.48,1.43,2.95,2.76,22,-2,2.18,2.06,1.86,1.8,1.2,7.61,14.04 -SP1,03/02/2019,Villarreal,Espanol,2,2,D,1,0,H,14,17,5,2,22,16,3,2,4,5,0,0,1.8,3.75,4.5,1.8,3.75,4.4,1.8,3.7,4.35,1.83,3.97,4.35,1.75,3.8,4.5,1.8,3.8,4.75,35,1.84,1.81,4,3.79,4.75,4.34,33,1.95,1.89,1.99,1.92,21,-1,2.69,2.53,1.6,1.54,2.15,3.6,3.55 -SP1,04/02/2019,Vallecano,Leganes,1,2,A,0,1,A,15,13,6,4,19,10,5,6,6,4,0,1,2.37,3.25,3.1,2.3,3.1,3.4,2.35,3.1,3.3,2.39,3.16,3.44,2.3,3.1,3.4,2.38,3.2,3.2,34,2.4,2.34,3.25,3.13,3.48,3.31,33,2.45,2.34,1.65,1.59,19,-0.25,2.05,2,1.9,1.86,2.75,3.11,2.94 -SP1,08/02/2019,Valladolid,Villarreal,0,0,D,0,0,D,9,7,3,3,13,18,8,3,3,2,0,0,2.9,3.3,2.4,3,3.25,2.45,3,3.3,2.4,3.09,3.29,2.52,3,3.2,2.55,3,3.3,2.55,34,3.1,2.99,3.35,3.24,2.58,2.48,33,2.16,2.09,1.81,1.75,19,0,2.18,2.13,1.8,1.76,3.23,3.45,2.35 -SP1,09/02/2019,Ath Madrid,Real Madrid,1,3,A,1,2,A,11,11,2,4,21,16,3,4,7,3,1,0,2.37,3.25,3.1,2.4,3.3,3,2.4,3.25,3.05,2.43,3.32,3.2,2.45,3.2,3.1,2.45,3.3,3.1,33,2.51,2.42,3.35,3.25,3.2,3.06,32,2.13,2.06,1.85,1.77,19,-0.25,2.12,2.07,1.85,1.81,2.66,3.21,2.97 -SP1,09/02/2019,Espanol,Vallecano,2,1,H,0,1,A,15,9,5,3,11,19,6,2,0,2,0,0,1.8,3.6,4.5,1.8,3.7,4.5,1.8,3.6,4.5,1.83,3.71,4.7,1.83,3.6,4.6,1.85,3.7,4.6,34,1.87,1.82,3.75,3.62,4.75,4.51,32,1.97,1.9,2,1.91,20,-1,2.62,2.53,1.6,1.54,1.7,3.89,5.42 -SP1,09/02/2019,Getafe,Celta,3,1,H,1,1,D,12,13,6,3,16,13,4,3,3,3,0,1,1.9,3.4,4.33,1.87,3.4,4.6,1.95,3.3,4.3,1.95,3.38,4.56,1.95,3.3,4.4,1.95,3.4,4.5,34,2,1.94,3.4,3.32,4.6,4.36,32,2.45,2.38,1.65,1.58,20,-0.75,2.33,2.25,1.72,1.69,2.03,3.31,4.34 -SP1,09/02/2019,Girona,Huesca,0,2,A,0,2,A,13,6,7,6,9,18,13,2,3,1,1,0,2,3.3,4,1.95,3.4,4.1,1.97,3.35,4.1,2,3.43,4.27,2,3.3,4.2,2,3.4,4.1,33,2.04,1.98,3.5,3.35,4.3,4.1,31,2.21,2.1,1.78,1.73,19,-0.25,1.73,1.7,2.28,2.22,1.92,3.48,4.58 -SP1,10/02/2019,Ath Bilbao,Barcelona,0,0,D,0,0,D,13,10,5,2,23,10,6,4,4,2,1,0,4.75,4,1.7,4.75,3.9,1.72,4.5,3.9,1.75,4.81,3.84,1.79,4.75,4,1.73,4.4,4,1.75,34,5.13,4.66,4.08,3.86,1.8,1.74,33,1.71,1.66,2.35,2.21,22,1,1.73,1.64,2.39,2.3,5.27,3.74,1.75 -SP1,10/02/2019,Leganes,Betis,3,0,H,2,0,H,16,3,4,1,22,11,4,4,4,2,0,1,2.25,3,3.6,2.35,3.1,3.3,2.3,3.05,3.4,2.38,3.18,3.45,2.35,3.1,3.4,2.3,3.2,3.5,33,2.43,2.34,3.2,3.1,3.6,3.36,31,2.63,2.48,1.42,1.38,20,-0.25,2.03,1.97,1.94,1.89,2.08,3.28,4.16 -SP1,10/02/2019,Sevilla,Eibar,2,2,D,0,1,A,13,8,4,4,11,7,9,7,4,2,1,0,1.66,4,5,1.67,4.1,4.75,1.67,4.05,4.85,1.68,4.16,5.13,1.7,4,5,1.65,4.1,5,33,1.73,1.68,4.2,4.02,5.13,4.92,32,1.75,1.71,2.25,2.14,21,-1,2.25,2.17,1.77,1.72,1.85,3.54,4.89 -SP1,10/02/2019,Valencia,Sociedad,0,0,D,0,0,D,10,8,4,1,11,18,7,5,2,4,0,0,1.83,3.5,4.5,1.83,3.5,4.5,1.8,3.6,4.55,1.82,3.74,4.74,1.83,3.6,4.6,1.8,3.7,4.8,33,1.89,1.82,3.75,3.58,4.8,4.54,32,2.11,2.02,1.87,1.8,20,-1,2.63,2.54,1.6,1.54,1.83,3.56,5.01 -SP1,11/02/2019,Alaves,Levante,2,0,H,1,0,H,16,8,4,0,14,18,3,10,3,2,0,0,2,3.4,3.8,2.05,3.4,3.8,2.05,3.45,3.6,2.1,3.54,3.75,2.05,3.5,3.7,2.05,3.5,3.6,34,2.12,2.06,3.6,3.47,3.85,3.65,32,2.05,1.97,1.9,1.84,20,-0.25,1.81,1.78,2.14,2.09,2.14,3.38,3.79 -SP1,15/02/2019,Eibar,Getafe,2,2,D,0,1,A,11,7,6,4,12,12,3,3,2,2,0,0,2.05,3.3,4,2.05,3.1,4.1,2.05,3.1,4.05,2.11,3.16,4.24,2.1,3.1,4,2.1,3.25,4.1,32,2.13,2.09,3.3,3.12,4.3,4.07,30,2.78,2.64,1.57,1.47,16,-0.25,1.81,1.78,2.16,2.11,2.07,3.09,4.55 -SP1,16/02/2019,Barcelona,Valladolid,1,0,H,1,0,H,20,10,8,0,12,18,3,5,1,3,0,0,1.14,9,15,1.16,8,16,1.15,8,17,1.15,8.44,21.24,1.14,8,19,1.15,9,19,31,1.18,1.16,9,8.08,21.24,17.25,29,1.41,1.36,3.5,3.07,17,-2,1.79,1.75,2.19,2.13,1.14,9.04,23.66 -SP1,16/02/2019,Celta,Levante,1,4,A,0,2,A,14,14,7,8,12,17,5,7,1,1,1,0,1.8,3.8,4.5,1.85,3.7,4.2,1.8,3.9,4.2,1.83,4.05,4.26,1.78,3.9,4.33,1.83,4,4.3,32,1.87,1.82,4.05,3.85,4.5,4.2,31,1.7,1.65,2.33,2.22,17,-1,2.55,2.44,1.65,1.57,1.75,4.06,4.75 -SP1,16/02/2019,Sociedad,Leganes,3,0,H,0,0,D,15,8,6,3,10,16,4,1,4,2,0,0,2.05,3.1,4.2,2.05,3.1,4.1,2.05,3.15,4,2.11,3.2,4.18,2.05,3.1,4.2,2.1,3.2,4.1,31,2.11,2.07,3.21,3.13,4.27,4.06,29,2.61,2.48,1.57,1.53,15,-0.25,1.79,1.77,2.19,2.11,2.33,2.97,3.84 -SP1,16/02/2019,Vallecano,Ath Madrid,0,1,A,0,0,D,12,4,6,3,10,14,4,6,0,1,0,0,6,3.5,1.65,5.75,3.6,1.67,4.9,3.4,1.8,5.68,3.86,1.68,5.5,3.7,1.67,6,3.75,1.67,32,6,5.51,3.86,3.7,1.8,1.68,31,2.3,2.17,1.74,1.68,18,1,1.73,1.67,2.45,2.26,6.59,4.03,1.58 -SP1,17/02/2019,Betis,Alaves,1,1,D,1,1,D,19,6,10,3,10,12,6,3,4,1,0,0,1.72,3.5,5.25,1.8,3.4,5,1.8,3.5,4.7,1.83,3.42,5.31,1.78,3.4,5.25,1.8,3.5,4.8,32,1.85,1.8,3.57,3.42,5.33,5,31,2.35,2.26,1.69,1.63,18,-1,2.63,2.54,1.59,1.54,1.76,3.55,5.63 -SP1,17/02/2019,Real Madrid,Girona,1,2,A,1,0,H,19,14,7,6,13,18,7,0,3,2,1,0,1.16,8,15,1.19,7,15,1.2,7,13,1.21,7.15,14.44,1.18,7.5,15,1.2,7.5,15,32,1.23,1.2,8,7.03,16.5,14.12,31,1.44,1.41,3.2,2.84,18,-2,2.03,1.96,1.95,1.88,1.18,8.03,15.95 -SP1,17/02/2019,Valencia,Espanol,0,0,D,0,0,D,21,6,1,1,12,10,10,2,2,4,0,1,1.72,3.7,4.8,1.8,3.5,4.75,1.75,3.7,4.8,1.78,3.69,5.17,1.75,3.7,4.8,1.75,3.8,5,32,1.84,1.77,3.8,3.63,5.17,4.81,30,2,1.93,1.95,1.87,18,-1,2.55,2.41,1.65,1.6,1.81,3.6,5.1 -SP1,17/02/2019,Villarreal,Sevilla,3,0,H,2,0,H,12,21,6,5,7,12,6,4,4,1,0,0,2.5,3.4,2.8,2.45,3.5,2.8,2.6,3.3,2.75,2.64,3.6,2.72,2.5,3.5,2.75,2.5,3.6,2.7,32,2.65,2.54,3.6,3.45,2.83,2.75,30,1.88,1.82,2.05,1.98,16,-0.25,2.27,2.2,1.76,1.71,2.47,3.47,3.02 -SP1,18/02/2019,Huesca,Ath Bilbao,0,1,A,0,1,A,12,9,2,4,16,11,3,5,5,1,0,0,3.1,3.1,2.5,3.1,3.1,2.45,2.85,3.2,2.55,3.25,3.16,2.5,3.1,3.1,2.45,3.1,3.2,2.4,32,3.3,3.11,3.22,3.12,2.55,2.45,31,2.4,2.31,1.66,1.61,16,0.25,1.83,1.79,2.13,2.09,3.68,3.21,2.26 -SP1,22/02/2019,Espanol,Huesca,1,1,D,1,0,H,13,13,2,4,9,16,7,4,2,4,0,0,1.72,3.6,5,1.75,3.6,5,1.77,3.65,4.75,1.79,3.68,5.1,1.73,3.7,5,1.75,3.7,5.2,35,1.81,1.76,3.8,3.64,5.27,4.96,34,2.08,2.01,1.86,1.81,21,-1,2.47,2.41,1.64,1.6,1.74,3.6,5.7 -SP1,23/02/2019,Alaves,Celta,0,0,D,0,0,D,17,8,4,2,15,9,3,4,2,2,0,0,2.3,3.3,3.2,2.3,3.25,3.2,2.3,3.25,3.2,2.35,3.4,3.28,2.3,3.3,3.2,2.38,3.3,3.3,35,2.4,2.31,3.42,3.29,3.35,3.22,34,2.25,2.19,1.75,1.68,19,-0.25,2.02,1.98,1.92,1.89,2.53,3.09,3.27 -SP1,23/02/2019,Ath Bilbao,Eibar,1,0,H,1,0,H,9,7,4,2,10,17,10,2,3,4,0,0,2.1,3.25,3.8,2.1,3.2,3.8,2.1,3.2,3.8,2.17,3.19,3.97,2.05,3.3,3.8,2.15,3.25,3.9,35,2.18,2.12,3.3,3.19,3.97,3.82,34,2.45,2.34,1.65,1.6,19,-0.25,1.84,1.81,2.12,2.07,2.21,3.18,3.86 -SP1,23/02/2019,Getafe,Vallecano,2,1,H,1,0,H,11,7,2,2,12,13,2,2,2,1,0,0,1.7,3.6,5.5,1.72,3.6,5.25,1.75,3.5,5.2,1.78,3.57,5.43,1.7,3.6,5.5,1.75,3.6,5.5,35,1.78,1.74,3.7,3.53,5.65,5.28,34,2.43,2.34,1.65,1.6,21,-1,2.52,2.42,1.62,1.59,1.93,3.33,4.82 -SP1,23/02/2019,Sevilla,Barcelona,2,4,A,2,1,H,13,17,4,8,15,11,3,8,6,1,0,0,3.5,4,1.95,3.6,4,1.91,3.6,3.9,1.93,3.69,4.05,1.96,3.6,3.8,1.95,3.75,4,1.95,35,3.75,3.62,4.1,3.91,2,1.94,33,1.55,1.49,2.76,2.57,19,0.75,1.75,1.71,2.26,2.2,3.99,4.24,1.85 -SP1,24/02/2019,Ath Madrid,Villarreal,2,0,H,1,0,H,15,14,7,3,9,10,6,7,0,3,0,0,1.57,3.75,7,1.57,3.9,6.25,1.57,3.9,6.4,1.58,4.08,6.56,1.55,4,6.5,1.55,4,6.5,35,1.63,1.57,4.1,3.92,7,6.34,34,2.25,2.15,1.75,1.7,21,-1,2.15,2.02,1.88,1.83,1.57,3.83,7.51 -SP1,24/02/2019,Leganes,Valencia,1,1,D,0,1,A,17,6,6,1,14,10,4,2,5,3,0,0,2.8,3.1,2.7,2.8,2.95,2.8,2.8,3.05,2.7,2.93,3.08,2.79,2.8,3,2.75,2.88,3.1,2.8,35,2.96,2.84,3.12,3.03,2.85,2.73,33,2.58,2.48,1.6,1.54,19,0.25,1.68,1.65,2.38,2.3,3.24,2.99,2.62 -SP1,24/02/2019,Levante,Real Madrid,1,2,A,0,1,A,11,19,2,5,17,11,4,6,5,3,1,1,5.25,4.75,1.53,5.25,4.6,1.55,5.2,4.65,1.55,5.85,4.68,1.55,5.5,4.6,1.53,5.75,4.75,1.5,35,5.9,5.54,4.8,4.56,1.61,1.54,32,1.4,1.36,3.3,3.07,21,1,2.11,2.04,1.89,1.82,6.48,5.29,1.45 -SP1,24/02/2019,Valladolid,Betis,0,2,A,0,1,A,10,6,2,3,10,9,13,4,1,2,0,0,2.7,3.2,2.75,2.75,3.2,2.7,2.65,3.15,2.8,2.72,3.32,2.81,2.62,3.2,2.8,2.63,3.2,2.8,35,2.75,2.67,3.32,3.17,2.86,2.78,34,2.4,2.3,1.66,1.62,19,-0.25,2.33,2.26,1.71,1.67,2.41,3.21,3.34 -SP1,25/02/2019,Girona,Sociedad,0,0,D,0,0,D,10,7,3,1,26,15,3,5,4,1,0,0,2.37,3.2,3,2.45,3.2,3,2.45,3.25,3,2.45,3.4,3.1,2.5,3.25,2.9,2.45,3.3,3,35,2.65,2.46,3.4,3.27,3.1,2.98,34,2.25,2.16,1.75,1.69,19,-0.25,2.16,2.1,1.83,1.79,2.37,3.25,3.38 -SP1,01/03/2019,Vallecano,Girona,0,2,A,0,1,A,9,12,3,4,17,23,7,1,3,4,1,0,2.25,3.4,3.2,2.25,3.3,3.3,2.3,3.35,3.2,2.36,3.37,3.3,2.2,3.3,3.4,2.3,3.4,3.25,31,2.36,2.29,3.52,3.33,3.53,3.25,30,2.01,1.94,1.94,1.87,17,-0.5,2.35,2.29,1.69,1.66,2.52,3.3,3.08 -SP1,02/03/2019,Espanol,Valladolid,3,1,H,1,1,D,15,14,6,3,17,8,5,3,2,2,0,0,1.8,3.6,4.75,1.78,3.5,5,1.8,3.5,4.85,1.82,3.59,5.01,1.8,3.5,4.75,1.8,3.6,5,32,1.85,1.8,3.7,3.52,5.01,4.83,31,2.4,2.25,1.7,1.65,19,-1,2.62,2.56,1.6,1.54,1.69,3.76,5.83 -SP1,02/03/2019,Huesca,Sevilla,2,1,H,1,0,H,7,12,3,5,15,16,3,12,5,4,0,0,3.8,3.6,1.95,3.9,3.6,1.95,3.85,3.55,1.95,3.94,3.74,1.98,3.9,3.6,1.95,4,3.6,2,33,4,3.85,3.75,3.6,2.02,1.96,31,1.9,1.85,2.05,1.96,19,0.25,2.27,2.21,1.75,1.71,4.11,3.61,1.98 -SP1,02/03/2019,Real Madrid,Barcelona,0,1,A,0,1,A,17,10,3,4,16,13,8,6,3,2,0,0,2.75,3.7,2.45,2.7,3.75,2.4,2.7,3.7,2.4,2.74,3.78,2.53,2.7,3.7,2.45,2.7,3.75,2.5,33,2.8,2.71,3.85,3.71,2.56,2.46,32,1.5,1.47,2.8,2.64,18,0.25,1.78,1.74,2.2,2.15,2.65,3.8,2.64 -SP1,02/03/2019,Villarreal,Alaves,1,2,A,0,0,D,9,10,2,2,15,12,8,2,2,3,0,0,1.66,3.75,5.5,1.67,3.7,5.5,1.67,3.85,5.2,1.67,4.02,5.47,1.65,3.9,5.25,1.67,3.9,5.75,33,1.7,1.67,4.05,3.86,5.75,5.31,31,2.07,2.01,1.86,1.81,21,-1,2.31,2.22,1.75,1.69,1.57,4.21,6.39 -SP1,03/03/2019,Betis,Getafe,1,2,A,0,2,A,6,11,2,5,14,14,4,4,2,2,0,0,2.3,3,3.4,2.35,3,3.4,2.35,3.05,3.35,2.42,3.08,3.48,2.25,3.1,3.6,2.4,3.1,3.25,33,2.42,2.37,3.15,3.02,3.7,3.38,31,2.61,2.5,1.6,1.52,19,-0.25,2.06,2.02,1.91,1.85,2.4,3.13,3.45 -SP1,03/03/2019,Eibar,Celta,1,0,H,0,0,D,15,3,4,1,14,16,7,0,1,1,0,0,1.72,3.8,4.75,1.78,3.8,4.5,1.75,3.8,4.65,1.78,3.99,4.66,1.78,3.9,4.4,1.75,3.8,5,33,1.83,1.76,4,3.82,5,4.6,31,1.95,1.89,1.98,1.91,21,-1,2.47,2.4,1.65,1.6,1.81,3.71,4.83 -SP1,03/03/2019,Sociedad,Ath Madrid,0,2,A,0,2,A,19,8,3,3,12,17,7,3,1,4,0,1,4,3.25,2.05,3.75,3.25,2.1,3.7,3.3,2.1,3.87,3.37,2.12,3.7,3.25,2.1,3.75,3.25,2.1,33,4,3.71,3.4,3.28,2.19,2.11,31,2.55,2.43,1.6,1.56,19,0.25,2.12,2.06,1.85,1.81,4.23,3.1,2.14 -SP1,03/03/2019,Valencia,Ath Bilbao,2,0,H,0,0,D,11,4,3,1,12,13,6,2,0,3,0,0,2,3.3,4,2,3.25,4.1,1.97,3.25,4.2,2.02,3.29,4.42,1.95,3.25,4.33,2,3.25,4.1,33,2.06,2,3.4,3.23,4.42,4.22,31,2.55,2.42,1.6,1.56,19,-0.25,1.74,1.7,2.3,2.22,2.01,3.26,4.5 -SP1,04/03/2019,Leganes,Levante,1,0,H,1,0,H,14,15,3,4,15,10,2,2,6,4,0,0,1.95,3.4,4.2,1.91,3.4,4.25,1.9,3.45,4.2,1.91,3.56,4.48,1.95,3.4,4.2,1.93,3.4,4.2,32,2.01,1.92,3.56,3.42,4.5,4.24,31,2.2,2.13,1.76,1.71,18,-1,2.99,2.83,1.5,1.44,2.08,3.23,4.23 -SP1,08/03/2019,Ath Bilbao,Espanol,1,1,D,0,1,A,15,5,6,2,13,20,7,0,3,5,0,0,1.66,3.6,6,1.67,3.6,5.75,1.65,3.65,5.8,1.67,3.77,6.11,1.7,3.6,5.5,1.65,3.75,6.25,31,1.73,1.67,3.8,3.64,6.28,5.86,30,2.35,2.26,1.7,1.64,16,-0.5,1.7,1.66,2.36,2.31,1.68,3.65,6.19 -SP1,09/03/2019,Alaves,Eibar,1,1,D,0,0,D,16,20,3,3,10,18,3,5,1,1,0,0,2.9,3.2,2.55,2.9,3,2.7,2.95,3.05,2.6,3.04,3.01,2.75,2.88,3.1,2.62,3,3.2,2.63,34,3.05,2.94,3.28,3.06,2.75,2.64,32,2.58,2.44,1.61,1.55,20,0.25,1.75,1.7,2.3,2.23,3.38,3.29,2.35 -SP1,09/03/2019,Ath Madrid,Leganes,1,0,H,0,0,D,13,3,4,2,9,7,4,4,2,2,0,0,1.45,4.2,10,1.45,4.2,8.25,1.47,4,8.1,1.47,4.2,9.04,1.47,4,8.5,1.45,4.2,9.5,34,1.5,1.46,4.35,4.1,10,8.62,32,2.45,2.36,1.65,1.59,21,-1,1.86,1.82,2.1,2.05,1.52,3.81,8.97 -SP1,09/03/2019,Barcelona,Vallecano,3,1,H,1,1,D,12,8,6,1,12,17,10,4,1,2,0,0,1.16,8,15,1.17,8,15,1.15,8,16.5,1.15,8.86,18.11,1.14,8,21,1.15,8.5,23,34,1.18,1.15,8.95,8.24,23,17.91,31,1.4,1.36,3.3,3.08,21,-2,1.75,1.7,2.3,2.22,1.11,11.53,23.51 -SP1,09/03/2019,Getafe,Huesca,2,1,H,0,1,A,14,8,6,1,14,17,13,1,0,4,0,0,1.61,3.6,6.5,1.62,3.7,6.25,1.63,3.7,5.8,1.63,3.91,6.31,1.62,3.75,6,1.65,3.8,6.25,34,1.67,1.63,3.91,3.77,6.5,6.03,33,2.3,2.23,1.71,1.66,21,-1,2.23,2.17,1.76,1.73,1.58,3.9,7.05 -SP1,10/03/2019,Celta,Betis,0,1,A,0,0,D,7,14,1,4,17,16,4,4,3,0,0,0,2.5,3.3,2.9,2.45,3.3,2.95,2.45,3.25,2.95,2.55,3.35,2.99,2.45,3.3,3,2.55,3.3,3,34,2.55,2.48,3.42,3.27,3.06,2.97,33,2.13,2.06,1.85,1.76,20,-0.25,2.17,2.12,1.81,1.77,2.56,3.37,2.96 -SP1,10/03/2019,Girona,Valencia,2,3,A,1,1,D,18,11,8,6,13,10,6,1,1,4,0,1,3.3,3.2,2.35,3.1,3.2,2.4,3.15,3.25,2.35,3.22,3.27,2.45,3.2,3.2,2.38,3.2,3.25,2.45,34,3.32,3.15,3.35,3.23,2.48,2.39,33,2.2,2.13,1.77,1.71,20,0.25,1.9,1.84,2.08,2.04,3.8,3.43,2.12 -SP1,10/03/2019,Levante,Villarreal,0,2,A,0,0,D,11,13,3,5,8,21,8,2,3,5,0,0,2.9,3.3,2.5,2.8,3.4,2.5,2.75,3.45,2.5,2.84,3.54,2.56,2.8,3.4,2.5,2.75,3.5,2.5,34,2.9,2.79,3.57,3.45,2.57,2.51,33,1.8,1.75,2.19,2.09,20,0.25,1.76,1.73,2.23,2.17,2.78,3.59,2.59 -SP1,10/03/2019,Sevilla,Sociedad,5,2,H,1,1,D,22,9,11,2,12,13,7,2,2,2,0,0,1.66,4.2,4.75,1.65,4.25,4.75,1.67,4.05,4.95,1.67,4.29,5.04,1.65,4,5.25,1.62,4.1,5.2,34,1.71,1.66,4.3,4.1,5.25,4.98,33,1.8,1.73,2.2,2.1,21,-1,2.25,2.17,1.8,1.73,1.63,4.07,5.85 -SP1,10/03/2019,Valladolid,Real Madrid,1,4,A,1,1,D,10,15,2,6,14,12,5,12,1,6,0,1,5,4.33,1.61,5.25,4.25,1.6,4.85,4.15,1.65,5.22,4.3,1.65,5.25,4.2,1.62,5,4.33,1.62,34,5.5,5.12,4.43,4.21,1.7,1.63,32,1.61,1.56,2.5,2.4,21,1,1.86,1.82,2.1,2.05,5.77,4.29,1.6 -SP1,15/03/2019,Sociedad,Levante,1,1,D,1,0,H,22,8,7,3,10,12,5,3,2,2,0,0,1.8,3.75,4.5,1.85,3.5,4.4,1.85,3.55,4.3,1.89,3.61,4.53,1.83,3.6,4.4,1.87,3.75,4.4,31,1.9,1.86,3.75,3.58,4.6,4.36,28,1.97,1.89,2,1.92,16,-1,2.69,2.63,1.55,1.51,1.87,3.7,4.52 -SP1,16/03/2019,Ath Bilbao,Ath Madrid,2,0,H,0,0,D,9,9,5,2,12,4,1,7,3,1,0,0,3.9,3,2.2,3.7,3,2.25,3.7,2.95,2.25,3.87,3.01,2.3,3.75,3,2.2,3.8,3,2.3,34,3.9,3.69,3.1,2.98,2.31,2.26,33,2.9,2.78,1.5,1.44,20,0.25,2,1.95,1.95,1.92,3.88,2.92,2.36 -SP1,16/03/2019,Huesca,Alaves,1,3,A,1,1,D,7,12,2,5,21,23,2,2,1,3,0,0,2.45,3.2,3,2.5,3.25,2.9,2.5,3.15,3.05,2.52,3.22,3.15,2.45,3.1,3.1,2.5,3.2,3.13,31,2.55,2.47,3.3,3.18,3.15,3.03,33,2.4,2.31,1.66,1.62,19,-0.25,2.16,2.11,1.82,1.78,2.42,3.23,3.31 -SP1,16/03/2019,Leganes,Girona,0,2,A,0,2,A,12,8,3,4,20,6,6,2,8,1,0,0,2.15,3.2,3.7,2.05,3.1,4.1,2.1,3.15,3.8,2.18,3.1,4.07,2.15,3.1,3.9,2.15,3.2,4,34,2.2,2.13,3.25,3.13,4.1,3.86,32,2.62,2.49,1.58,1.53,19,-0.25,1.84,1.82,2.1,2.06,2.31,3.11,3.69 -SP1,16/03/2019,Real Madrid,Celta,2,0,H,0,0,D,22,6,7,1,15,8,9,2,1,0,0,0,1.18,7.5,13,1.18,7.25,15,1.25,6.1,11,1.2,7.48,14.42,1.2,7,15,1.2,7.5,15,31,1.25,1.2,7.85,7.17,15.75,13.69,32,1.4,1.35,3.35,3.15,21,-2,2.05,1.89,2.05,1.97,1.16,8.77,16.3 -SP1,17/03/2019,Betis,Barcelona,1,4,A,0,2,A,13,16,3,9,10,11,3,7,1,2,0,0,7,5,1.4,6.75,5.25,1.4,7.4,4.9,1.4,6.33,5.11,1.48,6.5,4.8,1.44,6.5,5,1.44,34,7.4,6.37,5.25,4.91,1.5,1.45,33,1.46,1.42,2.95,2.79,21,1,2.31,2.23,1.75,1.69,6.3,4.63,1.52 -SP1,17/03/2019,Eibar,Valladolid,1,2,A,0,0,D,15,8,3,3,16,14,5,0,4,2,0,0,1.66,3.8,5.5,1.62,3.8,5.75,1.65,3.8,5.5,1.65,3.9,6.08,1.63,3.75,5.8,1.65,3.8,6.25,34,1.7,1.64,4,3.82,6.25,5.73,33,2.18,2.11,1.8,1.73,21,-1,2.23,2.16,1.77,1.73,1.64,3.89,6.16 -SP1,17/03/2019,Espanol,Sevilla,0,1,A,0,0,D,13,12,3,3,11,14,6,5,3,4,1,1,2.4,3.5,2.9,2.55,3.6,2.65,2.5,3.45,2.75,2.56,3.59,2.81,2.45,3.5,2.8,2.6,3.5,2.8,34,2.6,2.51,3.65,3.5,2.9,2.76,32,1.82,1.76,2.17,2.07,19,0.25,1.66,1.62,2.45,2.39,2.44,3.65,2.93 -SP1,17/03/2019,Valencia,Getafe,0,0,D,0,0,D,8,9,2,1,13,22,3,5,3,4,0,0,2,3.3,4,1.95,3.2,4.5,1.97,3.25,4.3,2,3.25,4.59,1.95,3.2,4.4,1.95,3.3,4.3,34,2.01,1.96,3.45,3.23,4.6,4.37,32,2.55,2.43,1.6,1.56,20,-0.25,1.71,1.68,2.33,2.26,1.86,3.47,4.93 -SP1,17/03/2019,Villarreal,Vallecano,3,1,H,0,1,A,12,7,4,3,16,7,5,5,3,3,0,0,1.6,4.2,5.5,1.6,4.2,5.25,1.63,4.1,5.1,1.65,4.19,5.35,1.62,4.2,5.25,1.62,4.2,5.25,34,1.66,1.63,4.33,4.15,5.55,5.18,33,1.75,1.7,2.25,2.15,21,-1,2.15,2.08,1.85,1.8,1.67,4.07,5.41 -SP1,29/03/2019,Girona,Ath Bilbao,1,2,A,1,0,H,6,8,2,5,18,18,3,3,2,4,0,0,2.87,2.9,2.7,2.85,2.95,2.75,2.9,2.95,2.75,2.94,3,2.85,2.8,2.9,2.88,2.9,3,2.8,35,3.06,2.89,3.05,2.95,2.89,2.78,33,2.7,2.57,1.55,1.5,19,-0.25,2.5,2.41,1.64,1.61,2.98,3.07,2.75 -SP1,30/03/2019,Alaves,Ath Madrid,0,4,A,0,2,A,14,11,4,7,10,8,9,2,2,2,0,0,5.5,3.4,1.75,5.5,3.4,1.75,5.1,3.35,1.8,5.49,3.35,1.83,5,3.4,1.8,5.25,3.4,1.83,34,5.5,5.2,3.5,3.37,1.84,1.79,32,2.6,2.51,1.59,1.52,19,1,1.56,1.52,2.75,2.6,6.1,3.45,1.74 -SP1,30/03/2019,Barcelona,Espanol,2,0,H,0,0,D,13,4,3,2,15,14,5,2,0,4,0,0,1.14,9,15,1.19,7.25,14,1.2,7,13,1.18,7.88,15.97,1.17,8,15,1.18,8.5,15,35,1.21,1.18,9,7.73,17,14.41,34,1.35,1.29,3.75,3.46,22,-2,1.85,1.79,2.13,2.07,1.19,7.4,17.18 -SP1,30/03/2019,Celta,Villarreal,3,2,H,0,2,A,15,14,6,5,7,8,10,7,1,3,0,0,2.5,3.3,2.75,2.55,3.4,2.75,2.6,3.3,2.75,2.71,3.33,2.82,2.55,3.3,2.8,2.63,3.3,2.8,35,2.71,2.62,3.45,3.29,2.9,2.77,33,2.05,1.98,1.9,1.84,20,-0.25,2.31,2.24,1.72,1.68,2.46,3.39,3.09 -SP1,30/03/2019,Getafe,Leganes,0,2,A,0,0,D,9,7,2,3,15,25,3,4,5,2,0,0,1.95,3.2,4.5,1.95,3.1,4.6,1.85,3.25,4.9,1.97,3.18,4.86,1.88,3.2,4.8,1.95,3.2,4.8,35,2,1.94,3.27,3.16,4.93,4.65,33,2.95,2.76,1.5,1.44,20,-1,3.27,3.02,1.45,1.41,1.99,3.06,5.1 -SP1,31/03/2019,Levante,Eibar,2,2,D,2,1,H,7,17,2,3,9,12,6,7,2,1,0,0,2.8,3.5,2.45,2.75,3.6,2.45,2.7,3.55,2.5,2.73,3.65,2.6,2.7,3.6,2.5,2.75,3.6,2.55,35,2.85,2.74,3.7,3.56,2.6,2.51,34,1.71,1.67,2.3,2.21,20,0.25,1.76,1.72,2.24,2.18,2.63,3.62,2.72 -SP1,31/03/2019,Real Madrid,Huesca,3,2,H,1,1,D,16,16,8,3,9,18,4,6,1,3,0,0,1.11,10,19,1.13,9.25,18.5,1.12,9,20,1.14,9.65,20.2,1.12,9,19,1.12,10,18,35,1.16,1.13,10.25,9.33,24,18.8,33,1.3,1.25,4.1,3.74,21,-2.5,1.97,1.92,1.98,1.93,1.19,7.71,16.03 -SP1,31/03/2019,Sevilla,Valencia,0,1,A,0,1,A,17,4,5,2,18,9,5,3,3,1,0,0,2.05,3.5,3.6,2.05,3.6,3.5,2.1,3.5,3.45,2.09,3.6,3.69,2.05,3.5,3.6,2.15,3.5,3.6,34,2.15,2.1,3.65,3.52,3.69,3.49,32,1.86,1.81,2.1,2.01,19,-0.25,1.87,1.82,2.13,2.04,2.72,3.44,2.73 -SP1,31/03/2019,Valladolid,Sociedad,1,1,D,1,0,H,10,10,4,1,18,8,7,5,4,1,0,0,2.6,3,3,2.6,3.2,2.85,2.6,3.05,2.95,2.63,3.19,3.02,2.6,3.1,2.9,2.63,3.1,2.88,35,2.7,2.62,3.2,3.11,3.03,2.92,34,2.5,2.37,1.65,1.58,20,-0.25,2.26,2.21,1.75,1.7,2.73,3.19,2.9 -SP1,31/03/2019,Vallecano,Betis,1,1,D,1,0,H,20,7,5,2,22,9,6,3,5,3,1,0,2.75,3.5,2.45,2.85,3.4,2.45,2.75,3.45,2.5,2.79,3.6,2.58,2.75,2.5,2.4,2.8,3.5,2.55,35,2.86,2.77,3.6,3.49,2.58,2.5,33,1.91,1.8,2.11,2.02,20,0.25,1.76,1.73,2.22,2.16,3.16,3.64,2.3 -SP1,02/04/2019,Ath Madrid,Girona,2,0,H,0,0,D,17,12,7,4,10,9,4,3,1,0,0,0,1.36,4.5,10,1.36,4.6,10,1.37,4.5,10,1.38,4.69,10.7,1.38,4.5,10,1.4,4.75,9.5,36,1.42,1.38,4.75,4.54,11.5,9.78,34,2.1,2.02,1.87,1.8,22,-1,1.7,1.63,2.43,2.33,1.37,4.76,10.96 -SP1,02/04/2019,Espanol,Getafe,1,1,D,0,0,D,9,13,3,3,14,14,5,4,4,3,0,0,2.4,3.1,3.2,2.4,3.1,3.2,2.45,3.1,3.15,2.49,3.17,3.24,2.45,3.1,3.1,2.55,3.1,3.2,36,2.55,2.45,3.2,3.1,3.28,3.16,34,2.55,2.43,1.59,1.56,18,-0.5,2.52,2.45,1.61,1.58,2.31,3.2,3.59 -SP1,02/04/2019,Villarreal,Barcelona,4,4,D,1,2,A,16,15,9,9,10,10,5,3,4,7,1,0,5.25,4.2,1.61,5.25,4.2,1.62,5,4,1.65,5.14,4.23,1.67,5,4.2,1.63,5.25,4.2,1.67,36,5.55,5.04,4.45,4.15,1.7,1.65,34,1.61,1.57,2.5,2.4,22,1,2.04,1.79,2.15,2.08,4.6,3.76,1.84 -SP1,03/04/2019,Ath Bilbao,Levante,3,2,H,2,0,H,14,11,7,6,13,14,2,9,3,7,0,1,1.61,4,5.5,1.6,4,5.75,1.6,3.95,5.7,1.61,4.14,6,1.6,3.9,5.8,1.62,4,6,36,1.65,1.61,4.15,3.98,6.1,5.75,34,2,1.92,1.96,1.89,22,-1,2.16,2.08,1.85,1.79,1.51,4.58,6.6 -SP1,03/04/2019,Eibar,Vallecano,2,1,H,0,1,A,12,13,6,2,14,9,2,6,2,2,0,0,1.61,4,5.5,1.65,3.8,5.5,1.63,4,5.2,1.66,4.13,5.44,1.63,4,5.25,1.67,4,5.5,36,1.69,1.64,4.2,3.99,5.69,5.29,34,1.91,1.79,2.12,2.03,22,-1,2.24,2.11,1.8,1.76,1.88,3.71,4.43 -SP1,03/04/2019,Huesca,Celta,3,3,D,0,1,A,23,11,7,5,9,12,5,0,2,3,0,0,2.62,3.5,2.62,2.65,3.4,2.65,2.6,3.35,2.7,2.71,3.41,2.76,2.62,3.3,2.7,2.75,3.4,2.7,36,2.75,2.64,3.5,3.35,2.84,2.72,34,2.01,1.95,1.92,1.86,20,-0.25,2.32,2.26,1.7,1.67,2.66,3.4,2.82 -SP1,03/04/2019,Valencia,Real Madrid,2,1,H,1,0,H,11,15,4,5,9,13,6,6,2,2,0,0,3.3,3.6,2.15,3.3,3.7,2.1,3.25,3.7,2.1,3.34,3.73,2.18,3.3,3.6,2.15,3.4,3.7,2.15,36,4,3.3,4.05,3.65,2.22,2.13,34,1.67,1.62,2.4,2.29,20,0.25,2.51,2.03,1.9,1.85,2.83,3.69,2.5 -SP1,04/04/2019,Leganes,Valladolid,1,0,H,0,0,D,18,8,2,1,13,11,3,4,2,2,0,0,1.9,3.3,4.5,1.91,3.25,4.5,1.93,3.2,4.55,1.95,3.27,4.78,1.91,3.2,4.6,1.91,3.25,4.6,36,2,1.93,3.35,3.22,4.8,4.57,34,2.77,2.61,1.55,1.48,20,-0.75,2.3,2.25,1.72,1.68,2.12,3.08,4.36 -SP1,04/04/2019,Sevilla,Alaves,2,0,H,1,0,H,18,5,5,2,13,19,11,1,3,4,0,0,1.5,4.33,6.5,1.53,4.25,6.25,1.55,4.2,5.9,1.52,4.54,6.65,1.5,4.4,6.5,1.5,4.4,6.25,36,1.55,1.52,4.55,4.38,6.76,6.24,35,1.8,1.74,2.17,2.09,22,-1,1.91,1.87,2.05,1.99,1.39,5.22,8.14 -SP1,04/04/2019,Sociedad,Betis,2,1,H,1,0,H,15,11,7,6,12,13,3,6,2,3,0,0,2.25,3.3,3.3,2.2,3.4,3.3,2.2,3.3,3.4,2.22,3.49,3.46,2.15,3.4,3.4,2.2,3.4,3.3,36,2.27,2.21,3.5,3.37,3.5,3.36,35,2.2,2.1,1.8,1.74,20,-0.25,1.96,1.9,2.02,1.96,2.27,3.45,3.39 -SP1,06/04/2019,Barcelona,Ath Madrid,2,0,H,0,0,D,21,9,10,2,14,12,5,1,3,4,0,1,1.75,3.6,5,1.78,3.6,4.75,1.9,3.7,3.9,1.76,3.97,4.96,1.75,3.7,4.75,1.8,3.8,4.8,34,1.9,1.76,3.97,3.76,5.02,4.73,32,1.9,1.84,2.06,1.97,19,-0.75,2,1.97,1.94,1.9,1.75,3.8,5.41 -SP1,06/04/2019,Girona,Espanol,1,2,A,0,0,D,14,9,5,2,23,20,1,4,5,2,0,0,2.5,3.2,3,2.55,3.1,3,2.5,3.15,2.95,2.52,3.26,3.17,2.45,3.2,3,2.55,3.25,3,34,2.61,2.49,3.29,3.17,3.17,3.04,32,2.3,2.22,1.71,1.66,19,-0.25,2.2,2.12,1.82,1.77,2.56,3.21,3.1 -SP1,06/04/2019,Real Madrid,Eibar,2,1,H,0,1,A,13,3,7,1,9,15,5,4,0,1,0,0,1.3,5.5,9.5,1.28,6,9.75,1.27,6,10,1.33,6.22,9.07,1.27,6,10,1.33,6,9.5,34,1.34,1.3,6.25,6,11.8,9.1,32,1.35,1.31,3.6,3.38,20,-1.5,1.86,1.81,2.1,2.05,1.41,5.26,7.38 -SP1,06/04/2019,Vallecano,Valencia,2,0,H,1,0,H,15,12,5,3,17,10,4,7,2,3,0,0,4.2,3.5,1.9,4,3.6,1.91,3.9,3.6,1.93,4.05,3.72,1.98,3.7,3.6,2,4,3.6,2,34,4.2,3.9,3.73,3.61,2.01,1.95,32,1.95,1.87,2.01,1.94,19,0.25,2.3,2.23,1.71,1.69,4.02,3.74,1.96 -SP1,07/04/2019,Alaves,Leganes,1,1,D,1,0,H,6,9,1,5,17,15,3,3,6,4,0,0,2.5,3,3.1,2.5,2.9,3.25,2.5,2.95,3.25,2.58,3.02,3.33,2.4,3.1,3.2,2.55,3,3.3,34,2.58,2.49,3.15,2.98,3.35,3.25,32,2.86,2.68,1.51,1.46,19,-0.25,2.16,2.11,1.82,1.78,2.5,3.03,3.39 -SP1,07/04/2019,Betis,Villarreal,2,1,H,1,1,D,17,10,7,4,15,14,4,3,4,4,0,0,2.2,3.4,3.3,2.2,3.4,3.3,2.25,3.4,3.15,2.3,3.64,3.19,2.25,3.4,3.2,2.25,3.5,3.13,34,2.35,2.27,3.64,3.46,3.3,3.17,32,1.9,1.85,2.05,1.96,19,-0.25,2,1.96,1.96,1.9,2.34,3.49,3.22 -SP1,07/04/2019,Celta,Sociedad,3,1,H,0,1,A,11,14,4,7,16,11,2,7,2,1,0,1,2.4,3.3,3,2.45,3.25,3,2.35,3.4,2.95,2.42,3.58,3.07,2.35,3.4,3,2.38,3.4,3,34,2.45,2.37,3.6,3.42,3.1,3.01,32,1.94,1.87,2.01,1.94,19,-0.25,2.1,2.05,1.86,1.82,2.45,3.39,3.12 -SP1,07/04/2019,Getafe,Ath Bilbao,1,0,H,0,0,D,6,9,2,1,16,18,1,2,2,1,0,0,2.3,3,3.5,2.35,2.9,3.6,2.35,2.9,3.55,2.44,3.01,3.6,2.3,3,3.5,2.38,3,3.6,34,2.44,2.36,3.1,2.97,3.65,3.51,32,3.04,2.82,1.46,1.42,19,-0.25,2.04,1.98,1.93,1.88,2.71,3,3.1 -SP1,07/04/2019,Levante,Huesca,2,2,D,1,0,H,14,17,8,4,22,12,9,1,2,4,0,0,1.95,3.6,3.8,1.95,3.6,3.8,1.97,3.7,3.6,2.02,3.91,3.71,1.95,3.75,3.7,1.95,3.8,3.6,34,2.05,1.98,3.91,3.74,3.8,3.64,33,1.71,1.67,2.3,2.2,19,-0.25,1.76,1.73,2.21,2.16,1.76,4.23,4.44 -SP1,07/04/2019,Valladolid,Sevilla,0,2,A,0,0,D,10,16,5,4,17,12,6,7,3,3,0,0,3.5,3.4,2.05,3.3,3.5,2.15,3.35,3.45,2.15,3.54,3.62,2.17,3.3,3.4,2.2,3.3,3.5,2.15,34,3.55,3.37,3.65,3.48,2.22,2.16,32,1.96,1.89,2,1.92,19,0.25,2.07,2,1.9,1.86,4.18,3.69,1.93 -SP1,13/04/2019,Ath Madrid,Celta,2,0,H,1,0,H,11,10,5,3,9,15,1,2,2,2,0,0,1.36,4.75,9,1.36,4.75,9.25,1.4,4.55,8.3,1.4,4.64,9.64,1.38,4.6,9,1.4,4.75,9.5,33,1.42,1.39,4.92,4.63,9.75,8.97,31,2.01,1.94,1.97,1.87,20,-1,1.7,1.65,2.41,2.31,1.5,4.29,7.74 -SP1,13/04/2019,Espanol,Alaves,2,1,H,1,0,H,6,14,2,3,12,17,4,8,3,2,0,0,1.8,3.5,4.75,1.78,3.5,5,1.83,3.45,4.7,1.82,3.54,5.12,1.8,3.5,4.75,1.83,3.6,4.8,33,1.86,1.82,3.65,3.49,5.12,4.8,32,2.35,2.28,1.67,1.63,18,-0.25,1.6,1.58,2.58,2.47,1.83,3.66,4.84 -SP1,13/04/2019,Huesca,Barcelona,0,0,D,0,0,D,6,10,1,2,18,13,6,5,1,2,0,0,4.75,4.2,1.65,4.75,4,1.7,5.2,4.2,1.6,4.71,4.16,1.74,5,4,1.67,4.75,4.2,1.73,33,5.2,4.7,4.2,4,1.76,1.72,31,1.66,1.62,2.47,2.3,20,1,1.77,1.7,2.31,2.23,3.02,3.55,2.43 -SP1,13/04/2019,Sevilla,Betis,3,2,H,1,0,H,11,12,5,7,18,8,5,4,6,3,0,0,1.66,4,5,1.67,4.1,4.75,1.7,4.1,4.5,1.72,4.26,4.71,1.67,4.2,4.8,1.73,4.2,4.8,33,1.73,1.7,4.3,4.13,5,4.65,31,1.62,1.58,2.6,2.38,20,-1,2.27,2.2,1.75,1.71,1.58,4.44,5.78 -SP1,14/04/2019,Ath Bilbao,Vallecano,3,2,H,1,1,D,15,8,9,4,10,16,3,6,1,3,0,1,1.6,4,5.5,1.65,4,5.25,1.63,4,5.3,1.64,4.18,5.51,1.63,4,5.25,1.67,4,5.5,33,1.7,1.64,4.2,4.02,5.72,5.35,31,1.85,1.8,2.1,2.02,20,-1,2.15,2.1,1.82,1.78,1.63,4.09,5.84 -SP1,14/04/2019,Girona,Villarreal,0,1,A,0,1,A,14,17,5,6,12,11,9,5,2,5,0,0,2.5,3.25,2.8,2.55,3.4,2.75,2.5,3.4,2.8,2.52,3.54,2.9,2.55,3.5,2.7,2.5,3.4,2.8,32,2.68,2.5,3.55,3.44,2.91,2.83,30,1.91,1.85,2.03,1.96,17,-0.25,2.22,2.15,1.79,1.75,2.7,3.48,2.72 -SP1,14/04/2019,Sociedad,Eibar,1,1,D,1,0,H,3,17,2,2,15,18,0,3,2,2,0,0,2.2,3.5,3.25,2.3,3.3,3.2,2.3,3.4,3.15,2.3,3.54,3.24,2.25,3.4,3.2,2.3,3.5,3,33,2.34,2.28,3.55,3.42,3.28,3.17,31,1.95,1.89,2,1.92,18,-0.5,2.35,2.27,1.72,1.67,2.53,3.27,3.09 -SP1,14/04/2019,Valencia,Levante,3,1,H,1,0,H,23,6,6,3,12,19,8,3,2,2,0,0,1.5,4.75,5.5,1.5,4.4,6.25,1.5,4.6,5.9,1.51,4.69,6.41,1.52,4.4,6,1.5,4.6,6,33,1.54,1.51,4.85,4.58,6.5,6.1,31,1.6,1.53,2.63,2.49,20,-1,1.84,1.8,2.11,2.07,1.49,4.42,7.48 -SP1,14/04/2019,Valladolid,Getafe,2,2,D,1,1,D,8,8,4,3,22,18,5,3,4,4,0,1,3.2,2.9,2.55,3.1,2.95,2.55,3.2,2.95,2.5,3.35,3.03,2.52,3.2,3,2.45,3.3,3,2.55,33,3.35,3.23,3.05,2.97,2.59,2.5,31,2.85,2.73,1.5,1.45,18,0.25,1.82,1.78,2.17,2.11,3.2,3,2.64 -SP1,15/04/2019,Leganes,Real Madrid,1,1,D,1,0,H,5,13,2,6,11,12,1,5,0,3,0,0,5.25,4.2,1.6,5,4.25,1.62,5,4.1,1.65,5.19,4.21,1.67,5.25,4.2,1.6,5.2,4.2,1.62,32,5.4,5.08,4.35,4.15,1.68,1.64,31,1.7,1.65,2.35,2.24,19,1,1.85,1.79,2.13,2.08,5.08,3.94,1.73 -SP1,19/04/2019,Alaves,Valladolid,2,2,D,2,1,H,10,12,4,7,17,16,5,7,3,5,0,0,2.1,3.2,3.75,2.1,3.2,3.9,2.15,3.1,3.8,2.2,3.23,3.83,2.15,3.1,3.75,2.2,3.2,3.8,35,2.23,2.17,3.23,3.15,3.9,3.75,33,2.55,2.45,1.6,1.55,19,-0.5,2.21,2.16,1.77,1.73,2.47,3.15,3.31 -SP1,20/04/2019,Barcelona,Sociedad,2,1,H,1,0,H,11,9,4,2,10,12,4,2,0,1,0,0,1.22,6.5,13,1.22,6.75,11.5,1.25,6.1,11,1.24,7.03,11.48,1.22,6.5,13,1.2,7,13,35,1.27,1.23,7.3,6.74,13,11.64,32,1.4,1.36,3.35,3.11,21,-2,2.1,2.03,1.88,1.83,1.17,8.47,15.44 -SP1,20/04/2019,Celta,Girona,2,1,H,1,0,H,13,9,8,1,7,10,5,1,2,1,0,0,2,3.75,3.5,2,3.7,3.6,1.97,3.7,3.65,2.03,3.88,3.63,1.95,3.75,3.7,2,3.8,3.75,35,2.05,2,3.9,3.72,3.8,3.61,34,1.72,1.68,2.3,2.18,19,-0.5,2.03,1.99,1.93,1.88,2.03,3.65,3.87 -SP1,20/04/2019,Eibar,Ath Madrid,0,1,A,0,0,D,10,8,2,4,11,12,5,8,3,1,0,0,3.2,3.1,2.4,3.2,3.1,2.4,3.1,3.1,2.5,3.21,3.13,2.54,3.1,3.1,2.45,3.25,3.1,2.5,35,3.25,3.12,3.25,3.11,2.6,2.47,33,2.45,2.37,1.65,1.58,19,0.25,1.84,1.79,2.15,2.1,3.8,3.32,2.17 -SP1,20/04/2019,Vallecano,Huesca,0,0,D,0,0,D,16,10,3,3,12,10,8,3,4,2,0,0,2.05,3.75,3.4,2.05,3.7,3.4,2.05,3.7,3.4,2.08,3.82,3.53,2.05,3.7,3.4,2.05,3.75,3.4,35,2.11,2.06,3.85,3.71,3.6,3.42,33,1.66,1.61,2.41,2.31,19,-0.5,2.1,2.05,1.87,1.82,2.11,3.85,3.44 -SP1,21/04/2019,Betis,Valencia,1,2,A,0,1,A,23,4,7,3,19,13,8,2,4,2,0,1,3,3.3,2.4,2.85,3.3,2.5,2.85,3.4,2.45,2.98,3.46,2.5,2.88,3.3,2.5,2.88,3.4,2.45,35,3,2.88,3.5,3.37,2.54,2.47,33,1.95,1.87,2,1.93,19,0.25,1.8,1.77,2.16,2.12,3.45,3.48,2.23 -SP1,21/04/2019,Getafe,Sevilla,3,0,H,2,0,H,10,12,3,2,19,15,2,7,3,6,1,1,3.1,3.4,2.3,3.1,3.3,2.35,3.15,3.25,2.35,3.17,3.39,2.41,3.1,3.3,2.35,3.13,3.3,2.38,34,3.22,3.12,3.47,3.3,2.43,2.35,33,2.2,2.1,1.79,1.74,18,0.5,1.68,1.63,2.4,2.34,3.09,3.27,2.53 -SP1,21/04/2019,Levante,Espanol,2,2,D,0,1,A,19,14,5,7,13,15,12,7,4,1,1,0,2.3,3.5,3,2.2,3.6,3.1,2.3,3.6,2.95,2.33,3.77,3.03,2.3,3.6,3,2.3,3.7,2.9,34,2.35,2.3,3.77,3.62,3.1,2.97,33,1.7,1.64,2.35,2.25,19,-0.5,2.35,2.29,1.7,1.66,2.37,3.47,3.17 -SP1,21/04/2019,Real Madrid,Ath Bilbao,3,0,H,0,0,D,11,5,4,3,12,16,8,2,2,4,0,0,1.45,4.33,7,1.45,4.4,7.5,1.55,4.2,5.8,1.51,4.38,7.22,1.44,4.6,7,1.5,4.6,6,35,1.55,1.49,4.75,4.41,7.7,6.67,34,1.59,1.53,2.65,2.48,21,-1,1.85,1.8,2.25,2.07,1.55,4.41,6.28 -SP1,21/04/2019,Villarreal,Leganes,2,1,H,0,0,D,11,6,5,2,12,15,7,4,2,1,0,0,1.72,3.5,5,1.72,3.75,5,1.75,3.7,4.8,1.79,3.81,4.81,1.83,3.7,4.33,1.75,3.7,4.75,34,1.9,1.78,3.85,3.67,5,4.71,33,2.13,2.05,1.85,1.78,18,-0.75,2.07,2.03,1.9,1.85,1.89,3.39,4.91 -SP1,23/04/2019,Alaves,Barcelona,0,2,A,0,0,D,6,17,1,6,19,9,1,4,3,1,0,0,7,5.25,1.4,7,5,1.42,6.2,5,1.45,7.5,5.06,1.43,7.5,5,1.4,7,5.2,1.44,34,7.55,6.96,5.3,5.01,1.45,1.43,34,1.55,1.5,2.75,2.56,21,1.5,1.79,1.74,2.2,2.14,7.9,4.61,1.45 -SP1,23/04/2019,Huesca,Eibar,2,0,H,0,0,D,12,7,3,4,16,16,5,3,4,1,0,0,2.25,3.5,3,2.35,3.4,3,2.3,3.55,2.95,2.33,3.69,3.08,2.3,3.5,3,2.38,3.6,3,35,2.45,2.33,3.77,3.55,3.16,3,34,1.74,1.7,2.3,2.16,18,-0.5,2.37,2.31,1.69,1.65,2.18,3.76,3.33 -SP1,23/04/2019,Valladolid,Girona,1,0,H,0,0,D,13,6,4,0,17,17,4,5,4,3,0,0,2.3,3.3,3.25,2.3,3.25,3.2,2.3,3.2,3.25,2.4,3.29,3.29,2.35,3.2,3.2,2.38,3.3,3.25,35,2.41,2.35,3.4,3.25,3.31,3.22,34,2.25,2.16,1.75,1.7,18,-0.5,2.41,2.35,1.67,1.63,2.47,3.27,3.19 -SP1,24/04/2019,Ath Madrid,Valencia,3,2,H,1,1,D,14,12,6,4,17,13,4,3,3,3,0,0,1.8,3.4,5,1.85,3.4,4.6,1.85,3.4,4.55,1.85,3.57,4.87,1.85,3.4,4.6,1.87,3.5,4.75,35,1.95,1.86,3.57,3.43,5,4.63,33,2.38,2.25,1.71,1.64,19,-1,2.8,2.66,1.55,1.5,1.86,3.45,4.97 -SP1,24/04/2019,Espanol,Celta,1,1,D,1,0,H,9,18,2,6,15,8,2,4,2,1,0,0,2.3,3.2,3.3,2.2,3.4,3.3,2.25,3.5,3.1,2.31,3.47,3.3,2.25,3.4,3.2,2.3,3.4,3.2,35,2.36,2.27,3.6,3.4,3.32,3.19,34,1.8,1.74,2.2,2.09,18,-0.5,2.31,2.27,1.72,1.67,2.13,3.59,3.61 -SP1,24/04/2019,Leganes,Ath Bilbao,0,1,A,0,1,A,14,3,1,2,11,14,2,2,1,2,0,0,2.6,3,3,2.65,3,2.95,2.65,2.95,2.95,2.77,3.07,2.96,2.7,3,2.88,2.7,3.1,2.9,35,2.78,2.69,3.1,2.99,3.05,2.93,33,2.8,2.63,1.52,1.47,18,-0.25,2.32,2.27,1.71,1.68,2.97,2.92,2.89 -SP1,24/04/2019,Levante,Betis,4,0,H,2,0,H,6,7,4,2,9,15,3,4,2,3,0,0,2.5,3.3,2.9,2.55,3.5,2.7,2.45,3.65,2.7,2.54,3.65,2.8,2.55,3.5,2.7,2.5,3.6,2.8,35,2.6,2.5,3.8,3.58,2.9,2.73,33,1.61,1.55,2.6,2.44,18,0,1.87,1.84,2.07,2.03,2.44,3.75,2.87 -SP1,25/04/2019,Getafe,Real Madrid,0,0,D,0,0,D,9,12,5,4,17,15,9,4,1,3,0,0,4,3.6,1.9,4.1,3.7,1.85,4.05,3.7,1.87,4.12,3.82,1.91,4,3.7,1.88,4,3.75,1.87,35,4.25,4.08,3.88,3.71,1.93,1.87,33,1.88,1.82,2.06,2,19,0.5,2.04,1.98,1.93,1.88,3.76,3.64,2.06 -SP1,25/04/2019,Sevilla,Vallecano,5,0,H,0,0,D,20,12,11,3,10,12,5,4,1,2,0,0,1.33,5.25,9,1.34,5.5,8,1.33,5.6,8.1,1.33,5.77,9.06,1.33,5.5,8.5,1.3,5.75,9.5,35,1.38,1.33,5.9,5.51,9.7,8.63,33,1.47,1.4,3.1,2.88,22,-1.5,2,1.88,2.05,1.97,1.24,7.22,11.48 -SP1,25/04/2019,Sociedad,Villarreal,0,1,A,0,0,D,13,8,2,3,11,14,6,3,2,3,0,0,2.5,3.3,2.9,2.4,3.5,2.9,2.45,3.45,2.85,2.5,3.51,2.94,2.45,3.4,2.88,2.45,3.5,2.8,35,2.51,2.43,3.6,3.46,3.04,2.88,33,1.85,1.79,2.11,2.03,18,0,1.83,1.79,2.15,2.1,2.85,3.42,2.62 -SP1,27/04/2019,Ath Bilbao,Alaves,1,1,D,1,1,D,14,14,1,3,14,17,8,6,2,2,0,0,1.45,4.2,7.5,1.5,4,6.5,1.53,4.05,6.9,1.52,4.46,6.82,1.47,4.2,7.5,1.53,4.2,7,34,1.55,1.52,4.46,4.13,7.5,6.86,33,2.25,2.16,1.75,1.7,21,-1,1.96,1.91,2.01,1.95,1.5,4.22,7.8 -SP1,27/04/2019,Ath Madrid,Valladolid,1,0,H,0,0,D,13,13,1,4,19,12,7,3,4,2,0,0,1.33,4.5,11,1.35,4.5,9.25,1.36,4.65,10,1.34,4.94,11.89,1.36,4.5,11,1.36,4.8,11,34,1.4,1.35,4.95,4.64,12.5,10.77,33,2.1,2.05,1.85,1.78,22,-1.5,2.2,2.13,1.8,1.75,1.35,4.63,12.87 -SP1,27/04/2019,Barcelona,Levante,1,0,H,0,0,D,23,7,12,2,17,12,6,3,4,3,0,0,1.2,6.5,11,1.22,6.25,10.5,1.27,6.2,9.8,1.28,6.33,10.46,1.25,6.5,10,1.25,6.5,11.5,34,1.29,1.26,6.75,6.23,11.5,10.41,33,1.41,1.38,3.2,3,21,-1.5,1.77,1.72,2.25,2.16,1.18,7.55,17.24 -SP1,27/04/2019,Leganes,Celta,0,0,D,0,0,D,10,8,1,2,16,5,4,6,1,0,0,0,2.37,3.25,3,2.35,3.2,3,2.45,3.1,3.1,2.53,3.25,3.1,2.45,3.2,3,2.5,3.25,3.1,34,2.54,2.46,3.28,3.18,3.2,3.07,32,2.48,2.35,1.65,1.59,18,-0.5,2.52,2.45,1.63,1.58,2.46,3.13,3.35 -SP1,28/04/2019,Girona,Sevilla,1,0,H,0,0,D,15,7,4,3,12,18,3,6,1,2,0,1,4.75,3.4,1.75,4.1,3.5,1.85,4.1,3.7,1.85,4.41,3.76,1.87,4.2,3.75,1.83,4.2,3.7,1.85,34,4.75,4.21,3.85,3.65,1.91,1.86,33,1.81,1.76,2.15,2.06,19,0.5,2.06,2.01,1.9,1.86,3.93,3.73,1.99 -SP1,28/04/2019,Sociedad,Getafe,2,1,H,1,0,H,11,12,7,3,17,14,5,7,2,3,0,0,2.6,3.2,2.75,2.55,2.95,2.95,2.6,3.1,2.9,2.62,3.29,2.89,2.45,3.2,3,2.6,3.13,2.9,34,2.68,2.57,3.29,3.17,3,2.91,32,2.5,2.39,1.63,1.57,18,-0.25,2.25,2.2,1.76,1.72,2.99,2.86,2.94 -SP1,28/04/2019,Valencia,Eibar,0,1,A,0,0,D,7,13,2,3,10,15,7,6,2,3,0,0,1.45,4.5,6.5,1.44,4.5,6.5,1.46,4.75,6.5,1.47,5.11,6.51,1.42,5,7,1.45,4.8,6.5,34,1.5,1.45,5.2,4.81,7,6.58,31,1.65,1.58,2.48,2.38,21,-1.5,2.32,2.23,1.75,1.68,1.49,4.48,7.25 -SP1,28/04/2019,Vallecano,Real Madrid,1,0,H,1,0,H,11,9,5,3,21,6,6,6,2,5,0,0,7.5,4.5,1.4,6.25,4.75,1.42,6.4,4.95,1.45,6.69,5.23,1.45,6.5,4.8,1.44,6.5,5,1.44,34,7.5,6.65,5.25,4.91,1.48,1.44,32,1.5,1.43,2.95,2.76,22,1.5,1.8,1.75,2.17,2.13,6.21,4.88,1.5 -SP1,28/04/2019,Villarreal,Huesca,1,1,D,1,0,H,18,13,5,3,15,22,0,1,5,2,0,1,1.55,4,6.5,1.55,4,5.75,1.57,4.4,5.4,1.59,4.54,5.57,1.55,4.4,5.5,1.57,4.4,5.4,34,1.61,1.58,4.57,4.3,6.5,5.52,32,1.62,1.59,2.5,2.37,21,-1,2.03,1.97,1.95,1.89,1.72,4.01,5.04 -SP1,29/04/2019,Betis,Espanol,1,1,D,0,1,A,18,10,5,4,16,14,6,5,4,1,0,0,2.3,3.3,3.1,2.3,3.3,3,2.3,3.45,3.05,2.24,3.65,3.27,2.25,3.5,3.1,2.25,3.5,3.13,32,2.35,2.27,3.65,3.45,3.27,3.11,30,1.87,1.81,2.1,2,17,-0.5,2.35,2.27,1.71,1.67,1.85,3.86,4.4 -SP1,03/05/2019,Sevilla,Leganes,0,3,A,0,2,A,7,9,3,5,11,23,3,4,1,1,0,0,1.36,5,8.5,1.36,5,8.75,1.4,4.75,7.9,1.39,5.17,8.22,1.4,4.75,8,1.4,5,8.5,35,1.44,1.39,5.2,4.9,9.15,8.21,33,1.8,1.69,2.3,2.18,22,-1.5,2.19,2.12,1.8,1.75,1.41,4.87,8.41 -SP1,04/05/2019,Alaves,Sociedad,0,1,A,0,1,A,17,9,6,2,7,22,13,6,1,3,0,0,2.5,3.25,2.9,2.6,3.1,2.9,2.55,3.2,2.9,2.64,3.3,2.92,2.6,3.2,2.8,2.63,3.25,2.9,35,2.66,2.58,3.3,3.2,2.95,2.88,34,2.25,2.18,1.75,1.68,18,0,1.86,1.83,2.1,2.04,2.81,3.23,2.78 -SP1,04/05/2019,Celta,Barcelona,2,0,H,0,0,D,14,8,6,1,11,13,11,1,1,5,0,0,2.15,3.6,3.25,2.1,3.6,3.4,2.15,3.6,3.3,2.15,3.77,3.38,2.15,3.6,3.3,2.15,3.7,3.4,35,2.17,2.12,3.8,3.65,3.48,3.32,33,1.75,1.7,2.25,2.15,19,-0.5,2.17,2.14,1.8,1.75,1.73,4.31,4.58 -SP1,04/05/2019,Espanol,Ath Madrid,3,0,H,1,0,H,11,11,5,3,11,14,5,6,1,2,0,0,3.8,3.3,2.05,3.7,3.3,2.1,3.7,3.25,2.1,3.94,3.32,2.12,3.75,3.25,2.1,3.7,3.4,2.15,35,3.94,3.69,3.4,3.28,2.2,2.12,34,2.33,2.23,1.7,1.65,19,0.5,1.81,1.77,2.16,2.11,4.17,3.54,1.98 -SP1,04/05/2019,Levante,Vallecano,4,1,H,2,0,H,12,20,7,3,17,12,6,7,1,4,0,1,1.95,3.8,3.6,1.95,4,3.5,1.97,3.9,3.5,1.98,4.17,3.56,1.95,4,3.5,1.95,4,3.7,35,2,1.95,4.17,3.96,3.7,3.52,34,1.55,1.5,2.7,2.54,19,-0.5,2,1.96,1.95,1.9,1.83,4.23,4.09 -SP1,05/05/2019,Eibar,Betis,1,0,H,1,0,H,14,12,6,6,15,7,11,8,3,2,0,0,2.05,3.6,3.5,2.05,3.6,3.5,2,3.6,3.6,2.04,3.78,3.69,2.05,3.6,3.5,2.05,3.6,3.8,35,2.08,2.03,3.78,3.59,3.8,3.59,33,1.81,1.76,2.15,2.06,18,-0.5,2.1,2.02,1.91,1.84,1.95,4,3.77 -SP1,05/05/2019,Getafe,Girona,2,0,H,1,0,H,13,4,8,2,15,13,1,3,3,3,0,1,1.8,3.6,4.75,1.78,3.5,5,1.8,3.4,4.85,1.85,3.39,5.19,1.75,3.5,5.25,1.83,3.5,5,35,1.87,1.81,3.6,3.44,5.25,4.9,33,2.41,2.33,1.65,1.6,19,-1,2.71,2.6,1.55,1.52,1.94,3.31,4.74 -SP1,05/05/2019,Huesca,Valencia,2,6,A,0,5,A,24,10,4,7,10,9,7,5,2,1,0,0,3.5,3.4,2.1,3.4,3.6,2.1,3.4,3.55,2.1,3.37,3.68,2.18,3.25,3.6,2.15,3.4,3.6,2.1,35,3.5,3.35,3.7,3.54,2.24,2.13,33,1.81,1.76,2.15,2.06,18,0.5,1.8,1.75,2.19,2.13,3.99,3.96,1.91 -SP1,05/05/2019,Real Madrid,Villarreal,3,2,H,2,1,H,24,15,11,7,9,14,8,3,0,3,0,0,1.7,4,4.75,1.67,4,5,1.7,4.05,4.7,1.7,4.1,5.07,1.65,4.2,4.8,1.7,4.3,4.8,35,1.75,1.69,4.3,4.04,5.07,4.78,33,1.55,1.49,2.75,2.58,20,-1,2.21,2.16,1.78,1.73,1.89,3.75,4.33 -SP1,05/05/2019,Valladolid,Ath Bilbao,1,0,H,1,0,H,10,9,3,1,14,22,1,3,5,5,0,0,2.9,3.1,2.6,2.8,3.1,2.7,2.85,3,2.65,2.89,3.18,2.75,2.8,3.1,2.7,2.8,3.1,2.7,35,3,2.84,3.18,3.07,2.76,2.68,32,2.65,2.52,1.56,1.52,17,-0.25,2.5,2.4,1.64,1.61,2.97,3.24,2.64 -SP1,12/05/2019,Ath Bilbao,Celta,3,1,H,3,0,H,8,3,4,2,16,18,3,3,4,3,0,0,2,3.5,3.8,2.05,3.4,3.75,2,3.4,3.85,2.02,3.58,3.96,2,3.5,3.9,1.95,3.5,3.9,35,2.05,2.01,3.6,3.45,4.05,3.84,34,2.15,2.09,1.8,1.74,18,-0.5,2.05,2,1.92,1.86,2.05,3.43,4.05 -SP1,12/05/2019,Ath Madrid,Sevilla,1,1,D,1,0,H,11,11,4,5,16,12,5,7,5,4,0,0,2.1,3.6,3.4,2.15,3.6,3.3,2.1,3.5,3.5,2.1,3.68,3.6,2.15,3.5,3.3,2.1,3.6,3.4,34,2.16,2.11,3.68,3.52,3.6,3.48,32,1.9,1.85,2.04,1.95,19,-0.5,2.15,2.09,1.85,1.78,1.97,3.7,4.01 -SP1,12/05/2019,Barcelona,Getafe,2,0,H,1,0,H,13,11,8,0,9,13,4,3,1,3,0,0,1.53,4.33,6,1.5,4.5,6.25,1.53,4.35,5.8,1.56,4.48,6.04,1.53,4.33,6,1.53,4.4,5.75,34,1.59,1.53,4.55,4.37,6.45,5.96,32,1.7,1.63,2.35,2.27,21,-1,1.93,1.87,2.04,1.98,1.48,4.47,7.66 -SP1,12/05/2019,Betis,Huesca,2,1,H,1,0,H,17,9,8,2,13,15,9,2,3,5,0,1,1.55,4.33,5.75,1.57,4.33,5.5,1.57,4.5,5.2,1.58,4.93,5.14,1.53,4.75,5.25,1.55,4.5,5.4,34,1.6,1.57,4.93,4.55,5.75,5.23,32,1.6,1.53,2.6,2.46,21,-1,2.01,1.95,1.98,1.91,1.51,4.87,6.1 -SP1,12/05/2019,Girona,Levante,1,2,A,0,0,D,14,6,6,2,15,16,9,2,2,3,0,0,2.15,3.6,3.2,2.25,3.4,3.2,2.2,3.65,3.1,2.27,3.58,3.28,2.2,3.5,3.2,2.2,3.6,3.1,34,2.28,2.22,3.75,3.58,3.28,3.15,33,1.66,1.62,2.4,2.29,19,-0.5,2.26,2.21,1.75,1.71,2.15,3.63,3.5 -SP1,12/05/2019,Leganes,Espanol,0,2,A,0,1,A,11,19,4,7,11,9,6,7,4,1,1,0,2.4,3.5,2.87,2.45,3.25,2.95,2.45,3.3,2.9,2.58,3.32,2.98,2.5,3.4,2.8,2.4,3.5,2.9,34,2.58,2.49,3.5,3.29,3,2.92,32,2.04,1.96,1.92,1.85,18,0,1.82,1.78,2.15,2.1,2.39,3.31,3.29 -SP1,12/05/2019,Sociedad,Real Madrid,3,1,H,1,1,D,19,6,7,2,12,16,5,2,1,2,0,1,3,3.6,2.3,2.9,3.75,2.3,2.95,3.7,2.25,3.09,3.86,2.26,3,3.7,2.25,3,3.75,2.25,34,3.11,3,3.86,3.69,2.35,2.26,32,1.62,1.57,2.5,2.4,19,0.5,1.72,1.68,2.31,2.25,2.72,3.95,2.48 -SP1,12/05/2019,Valencia,Alaves,3,1,H,2,1,H,10,10,4,3,9,14,7,4,2,5,0,0,1.4,5,7.5,1.4,5.25,7,1.4,5.1,7.5,1.41,5.48,7.14,1.38,5.25,7.5,1.36,5.2,8,34,1.43,1.39,5.5,5.14,8.5,7.52,32,1.65,1.6,2.45,2.34,22,-1.5,2.13,2.07,1.85,1.79,1.29,5.64,12.31 -SP1,12/05/2019,Vallecano,Valladolid,1,2,A,0,1,A,16,9,5,6,13,9,4,2,2,2,0,0,4.2,3.8,1.8,4.2,3.9,1.8,4.05,3.8,1.85,4.09,4.09,1.85,4,4,1.8,4.1,3.8,1.83,35,4.2,4.02,4.09,3.88,1.9,1.85,34,1.75,1.71,2.25,2.13,19,0.5,2.07,2.03,1.9,1.85,4.45,3.99,1.81 -SP1,12/05/2019,Villarreal,Eibar,1,0,H,0,0,D,11,4,3,0,11,14,5,3,3,2,0,0,1.6,4.33,5,1.6,4.4,5,1.6,4.25,5.1,1.61,4.7,5.08,1.62,4.4,4.8,1.62,4.33,5,35,1.65,1.61,4.7,4.36,5.3,5.01,33,1.6,1.55,2.55,2.43,21,-1,2.15,2.06,1.9,1.81,1.57,4.5,5.88 -SP1,18/05/2019,Alaves,Girona,2,1,H,1,0,H,14,13,7,4,13,10,6,4,3,3,0,0,2.25,3.5,3.1,2.3,3.5,3,2.3,3.5,3,2.38,3.66,3.01,2.3,3.5,3,2.38,3.6,3,39,2.38,2.31,3.75,3.56,3.1,2.99,37,1.81,1.76,2.15,2.05,19,-0.25,2.07,2.03,1.9,1.85,2.21,3.5,3.47 -SP1,18/05/2019,Celta,Vallecano,2,2,D,0,1,A,14,11,5,4,16,20,3,5,0,4,0,0,1.45,4.75,7,1.45,4.75,6.5,1.48,4.75,6,1.49,4.87,6.45,1.47,4.75,6.5,1.5,4.8,6.5,39,1.51,1.47,4.95,4.76,7,6.31,36,1.5,1.45,2.85,2.66,21,-1.5,2.3,2.23,1.75,1.69,1.32,5.94,9.12 -SP1,18/05/2019,Espanol,Sociedad,2,0,H,0,0,D,9,11,4,2,13,13,4,5,3,2,0,0,2.3,3.6,3,2.25,3.7,3,2.25,3.55,3,2.29,3.74,3.12,2.3,3.6,3,2.3,3.6,3.13,38,2.33,2.27,3.74,3.57,3.2,3.05,35,1.72,1.64,2.33,2.23,18,-0.25,2,1.98,1.93,1.89,2.03,3.91,3.61 -SP1,18/05/2019,Getafe,Villarreal,2,2,D,1,1,D,17,8,5,4,16,20,6,4,2,3,0,0,1.61,4.2,5.25,1.62,4.1,5.25,1.63,4.05,5.1,1.66,4.18,5.34,1.63,4,5.25,1.67,4.2,5.2,38,1.67,1.64,4.3,4.11,5.47,5.14,36,1.8,1.72,2.2,2.11,20,-1,2.19,2.13,1.85,1.76,1.58,4.43,5.81 -SP1,18/05/2019,Huesca,Leganes,2,1,H,0,1,A,15,9,6,1,18,12,4,6,0,1,0,0,2.5,3.75,2.62,2.5,3.7,2.65,2.5,3.55,2.7,2.59,3.72,2.71,2.5,3.6,2.7,2.55,3.75,2.7,39,2.6,2.53,3.75,3.55,2.8,2.7,37,1.75,1.69,2.25,2.15,19,0,1.92,1.87,2.05,1.99,2.58,3.52,2.83 -SP1,18/05/2019,Levante,Ath Madrid,2,2,D,2,0,H,17,17,7,8,9,7,6,4,0,1,0,1,3.75,3.75,1.95,3.5,3.75,2,3.55,3.8,1.97,3.67,3.87,2.02,3.6,3.8,1.95,3.6,3.8,2.05,38,3.75,3.55,3.9,3.78,2.05,2,36,1.71,1.65,2.31,2.23,18,0.5,1.91,1.87,2.04,1.99,4.34,4.1,1.81 -SP1,18/05/2019,Sevilla,Ath Bilbao,2,0,H,1,0,H,9,9,3,1,14,19,2,3,4,2,0,0,1.85,3.4,4.33,1.87,3.4,4.6,1.87,3.4,4.6,1.9,3.42,4.81,1.85,3.3,4.6,1.93,3.5,4.2,38,1.93,1.87,3.5,3.4,4.9,4.59,36,1.81,1.74,2.16,2.08,19,-1,2.7,2.6,1.6,1.53,2.17,3.08,4.15 -SP1,18/05/2019,Valladolid,Valencia,0,2,A,0,1,A,19,9,4,6,12,10,8,2,1,3,0,0,8,5.25,1.36,8,4.75,1.4,7.5,4.85,1.4,8.05,4.91,1.42,8.5,4.8,1.38,8,5.2,1.4,38,8.6,7.8,5.25,4.84,1.42,1.4,36,1.69,1.63,2.33,2.25,20,1.5,1.78,1.74,2.2,2.13,8.01,5.13,1.4 -SP1,19/05/2019,Eibar,Barcelona,2,2,D,2,2,D,15,6,8,3,11,3,5,2,4,2,0,0,3.6,4,1.9,3.7,4.1,1.87,3.75,4,1.87,3.83,4.2,1.89,3.7,4,1.88,3.7,4.1,1.87,39,3.85,3.73,4.2,4.03,1.94,1.88,37,1.5,1.46,2.85,2.65,19,0.5,2.03,1.98,1.92,1.88,4.96,4.55,1.65 -SP1,19/05/2019,Real Madrid,Betis,0,2,A,0,0,D,9,9,2,7,17,11,1,5,4,1,0,0,1.57,4.75,4.75,1.57,4.75,5,1.6,4.55,4.95,1.59,5.09,4.86,1.57,4.8,4.8,1.57,4.8,5.25,38,1.62,1.58,5.09,4.73,5.25,4.91,29,1.33,1.3,3.7,3.42,23,-1,1.94,1.91,2.01,1.98,1.33,6.38,8.09 diff --git a/sendemail.py b/sendemail.py index 12a01080ee7..070968157be 100644 --- a/sendemail.py +++ b/sendemail.py @@ -1,5 +1,4 @@ from __future__ import print_function - import base64 import mimetypes import os @@ -17,8 +16,6 @@ SCOPES = "https://www.googleapis.com/auth/gmail.send" CLIENT_SECRET_FILE = "client_secret.json" APPLICATION_NAME = "Gmail API Python Send Email" - - def get_credentials(): home_dir = os.path.expanduser("~") credential_dir = os.path.join(home_dir, ".credentials") diff --git a/sensors_information.py b/sensors_information.py index 694dc302904..257b41e5a4b 100644 --- a/sensors_information.py +++ b/sensors_information.py @@ -2,12 +2,8 @@ import sys import socket import psutil - - def python_version(): return sys.version_info - - def ip_addresses(): hostname = socket.gethostname() addresses = socket.getaddrinfo(hostname, None) @@ -35,7 +31,7 @@ def show_sensors(): for address in ip_addresses(): print("IP Addresses: {0[1]} ({0[0]})".format(address)) print("CPU Load: {:.1f}".format(cpu_load())) - print("RAM Available: {} MiB".format(ram_available() / 1024 ** 2)) + print("RAM Available: {} MiB".format(ram_available() / 1024**2)) print("AC Connected: {}".format(ac_connected())) diff --git a/sierpinski_triangle.py b/sierpinski_triangle.py index 966b5648af3..c6bfff6ca0f 100644 --- a/sierpinski_triangle.py +++ b/sierpinski_triangle.py @@ -3,10 +3,10 @@ Simple example of Fractal generation using recursive function. What is Sierpinski Triangle? ->>The Sierpinski triangle (also with the original orthography Sierpinski), also called the Sierpinski gasket or the Sierpinski Sieve, -is a fractal and attractive fixed set with the overall shape of an equilateral triangle, subdivided recursively into smaller -equilateral triangles. Originally constructed as a curve, this is one of the basic examples of self-similar sets, i.e., -it is a mathematically generated pattern that can be reproducible at any magnification or reduction. It is named after +>>The Sierpinski triangle (also with the original orthography Sierpinski), also called the Sierpinski gasket or the Sierpinski Sieve, +is a fractal and attractive fixed set with the overall shape of an equilateral triangle, subdivided recursively into smaller +equilateral triangles. Originally constructed as a curve, this is one of the basic examples of self-similar sets, i.e., +it is a mathematically generated pattern that can be reproducible at any magnification or reduction. It is named after the Polish mathematician Wacław Sierpinski, but appeared as a decorative pattern many centuries prior to the work of Sierpinski. Requirements(pip): @@ -21,6 +21,7 @@ Credits: This code was written by editing the code from http://www.lpb-riannetrujillo.com/blog/python-fractal/ """ + import sys import turtle diff --git a/simple_calcu.py b/simple_calcu.py new file mode 100644 index 00000000000..4f61908aecd --- /dev/null +++ b/simple_calcu.py @@ -0,0 +1,5 @@ +while True: + print(int(input("enter first number..")) + int(input("enter second number.."))) + q = input("press q to quit or press anu key to continue").lower() + if q == " q": + break diff --git a/simple_calculator.py b/simple_calculator.py new file mode 100644 index 00000000000..8864d9b2f60 --- /dev/null +++ b/simple_calculator.py @@ -0,0 +1,66 @@ +""" +Simple Calculator Module. + +Provides basic operations: add, subtract, multiply, divide. + +Example usage: +>>> add(2, 3) +5 +>>> subtract(10, 4) +6 +>>> multiply(3, 4) +12 +>>> divide(8, 2) +4.0 +""" + + +def add(x: float, y: float) -> float: + """Return the sum of x and y.""" + return x + y + + +def subtract(x: float, y: float) -> float: + """Return the difference of x and y.""" + return x - y + + +def multiply(x: float, y: float) -> float: + """Return the product of x and y.""" + return x * y + + +def divide(x: float, y: float) -> float: + """Return the quotient of x divided by y.""" + return x / y + + +def calculator() -> None: + """Run a simple calculator in the console.""" + print("Select operation.") + print("1.Add\n2.Subtract\n3.Multiply\n4.Divide") + + while True: + choice: str = input("Enter choice (1/2/3/4): ").strip() + if choice in ("1", "2", "3", "4"): + num1: float = float(input("Enter first number: ")) + num2: float = float(input("Enter second number: ")) + + if choice == "1": + print(f"{num1} + {num2} = {add(num1, num2)}") + elif choice == "2": + print(f"{num1} - {num2} = {subtract(num1, num2)}") + elif choice == "3": + print(f"{num1} * {num2} = {multiply(num1, num2)}") + elif choice == "4": + print(f"{num1} / {num2} = {divide(num1, num2)}") + break + else: + print("Invalid Input. Please select 1, 2, 3, or 4.") + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + calculator() diff --git a/simple_calculator/simple_calculator.py b/simple_calculator/simple_calculator.py new file mode 100644 index 00000000000..7a3f625d007 --- /dev/null +++ b/simple_calculator/simple_calculator.py @@ -0,0 +1,64 @@ +# Define functions for each operation +def add(x, y): + return x + y + + +def subtract(x, y): + return x - y + + +def multiply(x, y): + return x * y + + +def divide(x, y): + # Prevent division by zero + if y == 0: + return "Error: Division by zero is not allowed" + return x / y + + +# Display the options to the user +def display_menu(): + print("\nSelect operation:") + print("1. Add") + print("2. Subtract") + print("3. Multiply") + print("4. Divide") + + +# Main program loop +while True: + display_menu() + + # Take input from the user + choice = input("Enter choice (1/2/3/4): ") + + # Check if the choice is valid + if choice in ("1", "2", "3", "4"): + try: + num1 = float(input("Enter first number: ")) + num2 = float(input("Enter second number: ")) + except ValueError: + print("Invalid input. Please enter numeric values.") + continue + + # Perform the chosen operation + if choice == "1": + print(f"{num1} + {num2} = {add(num1, num2)}") + elif choice == "2": + print(f"{num1} - {num2} = {subtract(num1, num2)}") + elif choice == "3": + print(f"{num1} * {num2} = {multiply(num1, num2)}") + elif choice == "4": + print(f"{num1} / {num2} = {divide(num1, num2)}") + + # Check if the user wants another calculation + next_calculation = input( + "Do you want to perform another calculation? (yes/no): " + ).lower() + if next_calculation != "yes": + print("Exiting the calculator.") + break + else: + print("Invalid input. Please select a valid operation.") diff --git a/simulate_memory_cpu.py b/simulate_memory_cpu.py index 9a108fb89cc..1a8ab142071 100644 --- a/simulate_memory_cpu.py +++ b/simulate_memory_cpu.py @@ -11,30 +11,32 @@ def print_help(): - print('Usage: ') - print(' python cpu_memory_simulator.py m 1GB') - print(' python cpu_memory_simulator.py c 1') - print(' python cpu_memory_simulator.py mc 1GB 2') + print("Usage: ") + print(" python cpu_memory_simulator.py m 1GB") + print(" python cpu_memory_simulator.py c 1") + print(" python cpu_memory_simulator.py mc 1GB 2") + # memory usage def mem(): - pattern = re.compile('^(\d*)([M|G]B)$') + pattern = re.compile(r"^(\d*)([MG]B)$") size = sys.argv[2].upper() match = pattern.match(size) if match: num = int(match.group(1)) unit = match.group(2) - if unit == 'MB': - s = ' ' * (num * 1024 * 1024) + if unit == "MB": + s = " " * (num * 1024 * 1024) else: - s = ' ' * (num * 1024 * 1024 * 1024) + s = " " * (num * 1024 * 1024 * 1024) time.sleep(24 * 3600) else: print("bad args.....") print_help() + # cpu usage @@ -42,6 +44,7 @@ def deadloop(): while True: pass + # Specify how many cores to occupy according to the parameters @@ -54,7 +57,7 @@ def cpu(): return if cores > cpu_num: - print("Invalid CPU Num(cpu_count="+str(cpu_num)+")") + print("Invalid CPU Num(cpu_count=" + str(cpu_num) + ")") return if cores is None or cores < 1: @@ -71,11 +74,7 @@ def mem_cpu(): if __name__ == "__main__": if len(sys.argv) >= 3: - switcher = { - 'm': mem, - 'c': cpu, - 'mc': mem_cpu - } + switcher = {"m": mem, "c": cpu, "mc": mem_cpu} switcher.get(sys.argv[1], mem)() else: print_help() diff --git a/singly_linked_list.py b/singly_linked_list.py index bd66b5f5d8b..8eca38598fe 100644 --- a/singly_linked_list.py +++ b/singly_linked_list.py @@ -3,7 +3,8 @@ def __init__(self, data): self.data = data self.next = None -class LinkedList(): + +class LinkedList: def __init__(self): self.head = None @@ -38,7 +39,7 @@ def insert(self, pos, data): elif pos == 0: self.insert_at_head(data) return - elif pos == self.length()-1: + elif pos == self.length() - 1: self.add_node(data) return new_node = Node(data) @@ -53,12 +54,12 @@ def insert(self, pos, data): prev = curr curr = curr.next curr_pos += 1 - + def delete_head(self): temp = self.head self.head = temp.next del temp - + def delete_end(self): curr = self.head prev = None @@ -77,7 +78,7 @@ def delete(self, pos): elif pos == 0: self.delete_head() return - elif pos == self.length()-1: + elif pos == self.length() - 1: self.delete_end() return curr = self.head @@ -98,7 +99,7 @@ def display(self): rev = [] curr = self.head while curr != None: - print(f"{curr.data} --> ", end='') + print(f"{curr.data} --> ", end="") rev.append(curr.data) curr = curr.next print() diff --git a/size(resolution)image.py b/size(resolution)image.py index 333a1effb2a..6bc312b245d 100644 --- a/size(resolution)image.py +++ b/size(resolution)image.py @@ -3,7 +3,6 @@ def jpeg_res(filename): # open image for reading in binary mode with open(filename, "rb") as img_file: - # height of image (in 2 bytes) is at 164th position img_file.seek(163) diff --git a/smart_file_organizer.py b/smart_file_organizer.py new file mode 100644 index 00000000000..d9062c9fc93 --- /dev/null +++ b/smart_file_organizer.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 +""" +Smart File Organizer + +A utility script to organize files in a specified directory into categorized +subfolders based on file types. + +Example categories include: Images, Documents, Videos, Audios, Archives, Scripts, Others. + +Usage: + python smart_file_organizer.py --path "C:\\Users\\YourName\\Downloads" --interval 0 + +Arguments: + --path Directory path to organize. + --interval Interval in minutes to repeat automatically (0 = run once). + +Author: + Sangam Paudel +""" + +import os +import shutil +import argparse +import time +from datetime import datetime + +FILE_CATEGORIES = { + "Images": [".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".svg"], + "Documents": [".pdf", ".doc", ".docx", ".txt", ".ppt", ".pptx", ".xls", ".xlsx"], + "Videos": [".mp4", ".mkv", ".mov", ".avi", ".flv", ".wmv"], + "Audios": [".mp3", ".wav", ".aac", ".flac", ".ogg"], + "Archives": [".zip", ".rar", ".tar", ".gz", ".7z"], + "Scripts": [".py", ".js", ".sh", ".bat", ".java", ".cpp", ".c"], +} + + +def create_folder(folder_path: str) -> None: + """ + Create a folder if it does not already exist. + + Args: + folder_path: Path of the folder to create. + """ + if not os.path.exists(folder_path): + os.makedirs(folder_path) + + +def get_category(file_ext: str) -> str: + """ + Determine the category of a file based on its extension. + + Args: + file_ext: File extension (e.g., ".txt"). + + Returns: + Category name (e.g., "Documents") or "Others" if not matched. + """ + for category, extensions in FILE_CATEGORIES.items(): + if file_ext.lower() in extensions: + return category + return "Others" + + +def organize_files(base_path: str) -> None: + """ + Organize files in the given directory into subfolders by category. + + Args: + base_path: Path of the directory to organize. + """ + files = [ + f for f in os.listdir(base_path) if os.path.isfile(os.path.join(base_path, f)) + ] + if not files: + print(f"[{datetime.now().strftime('%H:%M:%S')}] No files found in {base_path}") + return + + for file_name in files: + source = os.path.join(base_path, file_name) + file_ext = os.path.splitext(file_name)[1] + category = get_category(file_ext) + target_folder = os.path.join(base_path, category) + create_folder(target_folder) + + try: + shutil.move(source, os.path.join(target_folder, file_name)) + print( + f"[{datetime.now().strftime('%H:%M:%S')}] Moved: {file_name} -> {category}/" + ) + except Exception as e: + print( + f"[{datetime.now().strftime('%H:%M:%S')}] Error moving {file_name}: {e}" + ) + + +def main() -> None: + """Parse command-line arguments and execute the file organizer.""" + parser = argparse.ArgumentParser( + description="Organize files in a directory into categorized subfolders." + ) + parser.add_argument("--path", required=True, help="Directory path to organize.") + parser.add_argument( + "--interval", + type=int, + default=0, + help="Interval (in minutes) to repeat automatically (0 = run once).", + ) + args = parser.parse_args() + + if not os.path.exists(args.path): + print(f"Path not found: {args.path}") + return + + print(f"Watching directory: {args.path}") + print("Organizer started. Press Ctrl+C to stop.\n") + + try: + while True: + organize_files(args.path) + if args.interval == 0: + break + print(f"Waiting {args.interval} minutes before next run...\n") + time.sleep(args.interval * 60) + except KeyboardInterrupt: + print("\nOrganizer stopped by user.") + + +if __name__ == "__main__": + main() diff --git a/snake_case_renamer_depth_one.py b/snake_case_renamer_depth_one.py index fdedcb54a7f..bfd1d3ad21d 100644 --- a/snake_case_renamer_depth_one.py +++ b/snake_case_renamer_depth_one.py @@ -1,6 +1,6 @@ import os import argparse -from typing import Union + def generate_unique_name(directory: str, name: str) -> str: """ @@ -24,6 +24,7 @@ def generate_unique_name(directory: str, name: str) -> str: index += 1 return f"{base_name}_{index}{extension}" + def rename_files_and_folders(directory: str) -> None: """ Rename files and folders in the specified directory to lowercase with underscores. @@ -54,6 +55,7 @@ def rename_files_and_folders(directory: str) -> None: os.rename(old_path, new_path) + def main() -> None: """ Main function to handle command-line arguments and call the renaming function. @@ -68,12 +70,19 @@ def main() -> None: """ # Create a parser for command-line arguments - parser = argparse.ArgumentParser(description="Rename files and folders to lowercase with underscores.") - parser.add_argument("directory", type=str, help="Path to the directory containing the files and folders to be renamed.") + parser = argparse.ArgumentParser( + description="Rename files and folders to lowercase with underscores." + ) + parser.add_argument( + "directory", + type=str, + help="Path to the directory containing the files and folders to be renamed.", + ) args = parser.parse_args() # Call the rename_files_and_folders function with the provided directory path rename_files_and_folders(args.directory) + if __name__ == "__main__": main() diff --git a/sorting_algos.py b/sorting_algos.py new file mode 100644 index 00000000000..cd9d6bcab90 --- /dev/null +++ b/sorting_algos.py @@ -0,0 +1,169 @@ +"""Contains some of the Major Sorting Algorithm""" + + +def selection_sort(arr: list) -> list: + """Sorts a list in ascending order using the selection sort algorithm. + + Args: + arr: List of comparable elements (e.g., integers, strings). + + Returns: + The sorted list (in-place modification). + + Examples: + >>> selection_sort([]) + [] + >>> selection_sort([1]) + [1] + >>> selection_sort([1, 2, 3, 4]) + [1, 2, 3, 4] + >>> selection_sort([4, 3, 2, 1]) + [1, 2, 3, 4] + >>> selection_sort([3, 1, 3, 2]) + [1, 2, 3, 3] + >>> selection_sort([5, 5, 5, 5]) + [5, 5, 5, 5] + >>> selection_sort([2, 4, 1, 3]) + [1, 2, 3, 4] + >>> selection_sort([-1, -3, 0, 2]) + [-3, -1, 0, 2] + >>> selection_sort([0, -5, 3, -2, 1]) + [-5, -2, 0, 1, 3] + >>> selection_sort(["banana", "apple", "cherry"]) + ['apple', 'banana', 'cherry'] + >>> selection_sort(["Apple", "banana", "Cherry"]) + ['Apple', 'Cherry', 'banana'] + >>> selection_sort([2147483647, -2147483648, 0]) + [-2147483648, 0, 2147483647] + """ + + """TC : O(n^2) + SC : O(1)""" + + n = len(arr) + for i in range(n): + for j in range(i + 1, n): + if arr[i] > arr[j]: + arr[i], arr[j] = arr[j], arr[i] + return arr + + +def bubble_sort(arr: list) -> list: + """TC : O(n^2) + SC : O(1)""" + n = len(arr) + flag = True + while flag: + flag = False + for i in range(1, n): + if arr[i - 1] > arr[i]: + flag = True + arr[i - 1], arr[i] = arr[i], arr[i - 1] + return arr + + +def insertion_sort(arr: list) -> list: + """TC : O(n^2) + SC : O(1)""" + n = len(arr) + for i in range(1, n): + for j in range(i, 0, -1): + if arr[j - 1] > arr[j]: + arr[j - 1], arr[j] = arr[j], arr[j - 1] + else: + break + return arr + + +def merge_sort(arr: list) -> list: + """TC : O(nlogn) + SC : O(n) for this version ... But SC can be reduced to O(1)""" + n = len(arr) + if n == 1: + return arr + + m = len(arr) // 2 + L = arr[:m] + R = arr[m:] + L = merge_sort(L) + R = merge_sort(R) + l = r = 0 + + sorted_arr = [0] * n + i = 0 + + while l < len(L) and r < len(R): + if L[l] < R[r]: + sorted_arr[i] = L[l] + l += 1 + else: + sorted_arr[i] = R[r] + r += 1 + i += 1 + + while l < len(L): + sorted_arr[i] = L[l] + l += 1 + i += 1 + + while r < len(R): + sorted_arr[i] = R[r] + r += 1 + i += 1 + + return arr + + +def quick_sort(arr: list) -> list: + """TC : O(nlogn) (TC can be n^2 for SUUUper worst case i.e. If the Pivot is continuously bad) + SC : O(n) for this version ... But SC can be reduced to O(logn)""" + + if len(arr) <= 1: + return arr + + piv = arr[-1] + L = [x for x in arr[:-1] if x <= piv] + R = [x for x in arr[:-1] if x > piv] + + L, R = quick_sort(L), quick_sort(L) + + return L + [piv] + R + + +def counting_sort(arr: list) -> list: + """This Works only for Positive int's(+ve), but can be modified for Negative's also + + TC : O(n) + SC : O(n)""" + n = len(arr) + maxx = max(arr) + counts = [0] * (maxx + 1) + for x in arr: + counts[x] += 1 + + i = 0 + for c in range(maxx + 1): + while counts[c] > 0: + arr[i] = c + i += 1 + counts[c] -= 1 + return arr + + +def main(): + algos = { + "selection_sort": ["TC : O(n^2)", "SC : O(1)"], + "bubble_sort": ["TC : O(n^2)", "SC : O(1)"], + "insertion_sort": ["TC : O(n^2)", "SC : O(1)"], + "merge_sort": ["TC : O(n^2)", "SC : O(1)"], + "quick_sort": ["TC : O(n^2)", "SC : O(1)"], + "counting_sort": ["TC : O(n^2)", "SC : O(1)"], + } + + inp = [1, 2, 7, -8, 34, 2, 80, 790, 6] + arr = counting_sort(inp) + print("U are amazing, Keep up") + + +if __name__ == "__main__": + main() diff --git a/spotifyAccount.py b/spotifyAccount.py index a585b6abb96..a4537f2a613 100644 --- a/spotifyAccount.py +++ b/spotifyAccount.py @@ -31,7 +31,6 @@ def randomPassword(size=14, chars=string.ascii_letters + string.digits): class proxy: def update(self): while True: - data = "" urls = [ "https://api.proxyscrape.com/?request=getproxies&proxytype=socks4&timeout=10000&ssl=yes" @@ -92,7 +91,6 @@ def creator(): } try: - r = s.post( "https://spclient.wg.spotify.com/signup/public/v1/account/", data=data, diff --git a/sqlite_check.py b/sqlite_check.py index 74403b1a0bb..27e35ace641 100644 --- a/sqlite_check.py +++ b/sqlite_check.py @@ -1,5 +1,4 @@ from __future__ import print_function - import os import sqlite3 as lite import sys @@ -13,7 +12,7 @@ # Description : Runs checks to check my SQLITE database dropbox = os.getenv("dropbox") -dbfile = "Databases\jarvis.db" +dbfile = r"Databases\jarvis.db" master_db = os.path.join(dropbox, dbfile) con = None @@ -26,12 +25,10 @@ except lite.Error as e: - print("Error %s:" % e.args[0]) sys.exit(1) finally: - if con: con.close() diff --git a/sqlite_table_check.py b/sqlite_table_check.py index 588b80e1c6e..ed0ae993820 100644 --- a/sqlite_table_check.py +++ b/sqlite_table_check.py @@ -14,8 +14,8 @@ dropbox = os.getenv("dropbox") config = os.getenv("my_config") -dbfile = "Databases\jarvis.db" -listfile = "sqlite_master_table.lst" +dbfile = r"Databases\jarvis.db" +listfile = r"sqlite_master_table.lst" master_db = os.path.join(dropbox, dbfile) config_file = os.path.join(config, listfile) tablelist = open(config_file, "r") diff --git a/square_root.py b/square_root.py new file mode 100644 index 00000000000..b5edae2886d --- /dev/null +++ b/square_root.py @@ -0,0 +1,12 @@ +import math + + +def square_root(number): + if number >= 0: + print(f"Square root {math.sqrt(number)}") + else: + print("Cannot find square root for the negative numbers..") + + +while True: + square_root(int(input("enter any number"))) diff --git a/stackF_Harsh2255.py b/stackF_Harsh2255.py index b28bf9de77a..6c318694e6b 100644 --- a/stackF_Harsh2255.py +++ b/stackF_Harsh2255.py @@ -4,6 +4,7 @@ # Used to return -infinite when stack is empty from sys import maxsize + # Function to create a stack. It initializes size of stack as 0 def createStack(): stack = [] diff --git a/stone_paper_scissor/main.py b/stone_paper_scissor/main.py index 2a2166f4f47..eebfdd424e3 100644 --- a/stone_paper_scissor/main.py +++ b/stone_paper_scissor/main.py @@ -15,7 +15,7 @@ raise ValueError else: break - except ValueError as e: + except ValueError: print("Please input a correct number") if utils.validate(player_hand): diff --git a/string_palin.py b/string_palin.py new file mode 100644 index 00000000000..74d6863527b --- /dev/null +++ b/string_palin.py @@ -0,0 +1,20 @@ +# + +# With slicing -> Reverses the string using string[::-1] + + +string = input("enter a word to check.. ") +copy = string[::-1] +if string == copy: + print("Plaindrome") +else: + print("!") + +# Without slicing –> Reverses the string manually using a loop +reverse_string = "" +for i in string: + reverse_string = i + reverse_string +if string == reverse_string: + print(reverse_string) +else: + print("!") diff --git a/sum_of_digits_of_a_number.py b/sum_of_digits_of_a_number.py index 06bb321441f..236de1d2c91 100644 --- a/sum_of_digits_of_a_number.py +++ b/sum_of_digits_of_a_number.py @@ -1,28 +1,85 @@ +""" +A simple program to calculate the sum of digits of a user-input integer. + +Features: +- Input validation with limited attempts. +- Graceful exit if attempts are exhausted. +- Sum of digits computed iteratively. + +Doctests: + >>> sum_of_digits(123) + 6 + >>> sum_of_digits(0) + 0 + >>> sum_of_digits(999) + 27 +""" + import sys -def get_integer_input(prompt, attempts): + +def get_integer_input(prompt: str, attempts: int) -> int | None: + """ + Prompt the user for an integer input, retrying up to a given number of attempts. + + Args: + prompt: The message shown to the user. + attempts: Maximum number of input attempts. + + Returns: + The integer entered by the user, or None if all attempts fail. + + Example: + User input: "12" -> returns 12 + """ for i in range(attempts, 0, -1): try: + # Attempt to parse user input as integer n = int(input(prompt)) return n except ValueError: + # Invalid input: notify and decrement chances print("Enter an integer only") - print(f"{i-1} {'chance' if i-1 == 1 else 'chances'} left") + print(f"{i - 1} {'chance' if i - 1 == 1 else 'chances'} left") return None -def sum_of_digits(n): + +def sum_of_digits(n: int) -> int: + """ + Compute the sum of the digits of an integer. + + Args: + n: A non-negative integer. + + Returns: + Sum of digits of the number. + + Examples: + >>> sum_of_digits(123) + 6 + >>> sum_of_digits(405) + 9 + """ total = 0 while n > 0: + # Add last digit and remove it from n total += n % 10 n //= 10 return total -chances = 3 -number = get_integer_input("Enter a number: ", chances) -if number is None: - print("You've used all your chances.") - sys.exit() +def main() -> None: + """Main entry point of the program.""" + chances = 3 + number = get_integer_input("Enter a number: ", chances) + + if number is None: + print("You've used all your chances.") + sys.exit() + + result = sum_of_digits(number) + print(f"The sum of the digits of {number} is: {result}") + -result = sum_of_digits(number) -print(f"The sum of the digits of {number} is: {result}") +if __name__ == "__main__": + main() diff --git a/swap.py b/swap.py index 00971b94165..47ec594d5bf 100644 --- a/swap.py +++ b/swap.py @@ -6,10 +6,10 @@ class Swapper: ------- swap_tuple_unpacking(self): Swaps the values of x and y using a tuple unpacking method. - + swap_temp_variable(self): Swaps the values of x and y using a temporary variable. - + swap_arithmetic_operations(self): Swaps the values of x and y using arithmetic operations. @@ -29,7 +29,7 @@ def __init__(self, x, y): """ if not isinstance(x, (int, float)) or not isinstance(y, (float, int)): raise ValueError("Both x and y should be integers.") - + self.x = x self.y = y diff --git a/text to speech b/text to speech deleted file mode 100644 index a26af2d64f8..00000000000 --- a/text to speech +++ /dev/null @@ -1,11 +0,0 @@ -pip install gTTS -#importing the gTTS library -from gtts import gTTS -#Asking the user for the required text -mt = input("Enter the required text:\t") -#Setting the output language -language = ‘en’ -#Converting text to speech and choosing speed as fast -voice = gTTS(text=mt, lang=language, slow=False) -#Saving the speech as mp3 file -voice.save(“conv.mp3”) diff --git a/text-to-audio/text-file-to-audio.py b/text-to-audio/text-file-to-audio.py index aa5ce407d6b..5dd9bdd74fd 100644 --- a/text-to-audio/text-file-to-audio.py +++ b/text-to-audio/text-file-to-audio.py @@ -8,7 +8,7 @@ language = "en" # Get the contents of your file -with open(mytextfile, 'r') as f: +with open(mytextfile, "r") as f: mytext = f.read() f.close() diff --git a/text_to_audio/main.py b/text_to_audio/main.py index ff7a3e56e64..fea9aef846c 100644 --- a/text_to_audio/main.py +++ b/text_to_audio/main.py @@ -3,7 +3,6 @@ from io import BytesIO # only use when needed to avoid memory usage in program -from pprint import pprint """_summary_ def some_function(): diff --git a/text_to_audio/requirements.txt b/text_to_audio/requirements.txt index 7d305335aac..01a5c752ec0 100644 --- a/text_to_audio/requirements.txt +++ b/text_to_audio/requirements.txt @@ -1,2 +1,2 @@ -gTTS==2.5.0 -pygame==2.5.2 +gTTS==2.5.4 +pygame==2.6.1 diff --git a/text_to_pig_latin.py b/text_to_pig_latin.py index 850b13913e8..518358a6f47 100644 --- a/text_to_pig_latin.py +++ b/text_to_pig_latin.py @@ -1,6 +1,6 @@ """ -This program converts English text to Pig-Latin. In Pig-Latin, we take the first letter of each word, -move it to the end, and add 'ay'. If the first letter is a vowel, we simply add 'hay' to the end. +This program converts English text to Pig-Latin. In Pig-Latin, we take the first letter of each word, +move it to the end, and add 'ay'. If the first letter is a vowel, we simply add 'hay' to the end. The program preserves capitalization and title case. For example: @@ -18,6 +18,7 @@ def pig_latin_word(word): else: return word[1:] + word[0] + "ay" + def pig_latin_sentence(text): words = text.split() pig_latin_words = [] @@ -31,7 +32,8 @@ def pig_latin_sentence(text): else: pig_latin_words.append(pig_latin_word(word)) - return ' '.join(pig_latin_words) + return " ".join(pig_latin_words) + user_input = input("Enter some English text: ") pig_latin_text = pig_latin_sentence(user_input) diff --git a/tf_idf_generator.py b/tf_idf_generator.py index 4e99e96ce64..f31f0137b31 100644 --- a/tf_idf_generator.py +++ b/tf_idf_generator.py @@ -1,4 +1,4 @@ -"""@Author: Anurag Kumar(mailto:anuragkumarak95@gmail.com) +"""@Author: Anurag Kumar(mailto:anuragkumarak95@gmail.com) This module is used for generating a TF-IDF file or values from a list of files that contains docs. What is TF-IDF : https://en.wikipedia.org/wiki/Tf%E2%80%93idf @@ -6,8 +6,8 @@ python: - 3.5 -pre-requisites: - - colorama==0.3.9 +pre-requisites: + - colorama==0.3.9 sample file format of input: @@ -31,6 +31,7 @@ have fun, cheers. """ + import math import pickle @@ -87,9 +88,7 @@ def find_tf_idf(file_names=None, prev_file_path=None, dump_path=None): """ if file_names is None: file_names = ["./../test/testdata"] - tf_idf = ( - [] - ) # will hold a dict of word_count for every doc(line in a doc in this case) + tf_idf = [] # will hold a dict of word_count for every doc(line in a doc in this case) idf = {} # this statement is useful for altering existant tf-idf file and adding new docs in itself.(## memory is now the biggest issue) @@ -100,7 +99,6 @@ def find_tf_idf(file_names=None, prev_file_path=None, dump_path=None): prev_corpus_length = len(tf_idf) for f in file_names: - file1 = open( f, "r" ) # never use 'rb' for textual data, it creates something like, {b'line-inside-the-doc'} diff --git a/thired-party-haarcascade-mustache-on-face/mustache-add-on-face.py b/thired-party-haarcascade-mustache-on-face/mustache-add-on-face.py index 0e30d89d195..2c22d6676df 100644 --- a/thired-party-haarcascade-mustache-on-face/mustache-add-on-face.py +++ b/thired-party-haarcascade-mustache-on-face/mustache-add-on-face.py @@ -11,27 +11,24 @@ mustache = cv2.imread("image/mustache.png", -1) while True: - ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA) - for (x, y, w, h) in faces: + for x, y, w, h in faces: roi_gray = gray[y : y + h, x : x + h] # rec roi_color = frame[y : y + h, x : x + h] nose = nose_cascade.detectMultiScale(roi_gray, scaleFactor=1.5, minNeighbors=5) - for (nx, ny, nw, nh) in nose: - + for nx, ny, nw, nh in nose: roi_nose = roi_gray[ny : ny + nh, nx : nx + nw] mustache2 = image_resize(mustache.copy(), width=nw) mw, mh, mc = mustache2.shape for i in range(0, mw): for j in range(0, mh): - if mustache2[i, j][3] != 0: # alpha 0 roi_color[ny + int(nh / 2.0) + i, nx + j] = mustache2[i, j] diff --git a/tic-tac-toe.py b/tic-tac-toe.py deleted file mode 100644 index 8956be21237..00000000000 --- a/tic-tac-toe.py +++ /dev/null @@ -1,103 +0,0 @@ -import os -import time - -board = [" ", " ", " ", " ", " ", " ", " ", " ", " ", " "] -player = 1 - -########win Flags########## -Win = 1 -Draw = -1 -Running = 0 -Stop = 1 -########################### -Game = Running -Mark = "X" - -# This Function Draws Game Board -def DrawBoard(): - print(" %c | %c | %c " % (board[1], board[2], board[3])) - print("___|___|___") - print(" %c | %c | %c " % (board[4], board[5], board[6])) - print("___|___|___") - print(" %c | %c | %c " % (board[7], board[8], board[9])) - print(" | | ") - - -# This Function Checks position is empty or not -def CheckPosition(x): - if board[x] == " ": - return True - else: - return False - - -# This Function Checks player has won or not -def CheckWin(): - global Game - # Horizontal winning condition - if board[1] == board[2] and board[2] == board[3] and board[1] != " ": - Game = Win - elif board[4] == board[5] and board[5] == board[6] and board[4] != " ": - Game = Win - elif board[7] == board[8] and board[8] == board[9] and board[7] != " ": - Game = Win - # Vertical Winning Condition - elif board[1] == board[4] and board[4] == board[7] and board[1] != " ": - Game = Win - elif board[2] == board[5] and board[5] == board[8] and board[2] != " ": - Game = Win - elif board[3] == board[6] and board[6] == board[9] and board[3] != " ": - Game = Win - # Diagonal Winning Condition - elif board[1] == board[5] and board[5] == board[9] and board[5] != " ": - Game = Win - elif board[3] == board[5] and board[5] == board[7] and board[5] != " ": - Game = Win - # Match Tie or Draw Condition - elif ( - board[1] != " " - and board[2] != " " - and board[3] != " " - and board[4] != " " - and board[5] != " " - and board[6] != " " - and board[7] != " " - and board[8] != " " - and board[9] != " " - ): - Game = Draw - else: - Game = Running - - -print("Tic-Tac-Toe Game Designed By Sourabh Somani") -print("Player 1 [X] --- Player 2 [O]\n") -print() -print() -print("Please Wait...") -time.sleep(3) -while Game == Running: - os.system("cls") - DrawBoard() - if player % 2 != 0: - print("Player 1's chance") - Mark = "X" - else: - print("Player 2's chance") - Mark = "O" - choice = int(input("Enter the position between [1-9] where you want to mark : ")) - if CheckPosition(choice): - board[choice] = Mark - player += 1 - CheckWin() - -os.system("cls") -DrawBoard() -if Game == Draw: - print("Game Draw") -elif Game == Win: - player -= 1 - if player % 2 != 0: - print("Player 1 Won") - else: - print("Player 2 Won") diff --git a/tic_tak_toe.py b/tic_tak_toe.py deleted file mode 100644 index 3138057fea0..00000000000 --- a/tic_tak_toe.py +++ /dev/null @@ -1,120 +0,0 @@ -# Tic-Tac-Toe Program using -# random number in Python - -# importing all necessary libraries -import numpy as np -import random -from time import sleep - -# Creates an empty board -def create_board(): - return np.array([[0, 0, 0], [0, 0, 0], [0, 0, 0]]) - - -# Check for empty places on board -def possibilities(board): - l = [] - - for i in range(len(board)): - for j in range(len(board)): - - if board[i][j] == 0: - l.append((i, j)) - return l - - -# Select a random place for the player -def random_place(board, player): - selection = possibilities(board) - current_loc = random.choice(selection) - board[current_loc] = player - return board - - -# Checks whether the player has three -# of their marks in a horizontal row -def row_win(board, player): - for x in range(len(board)): - win = True - - for y in range(len(board)): - if board[x, y] != player: - win = False - continue - - if win == True: - return win - return win - - -# Checks whether the player has three -# of their marks in a vertical row -def col_win(board, player): - for x in range(len(board)): - win = True - - for y in range(len(board)): - if board[y][x] != player: - win = False - continue - - if win == True: - return win - return win - - -# Checks whether the player has three -# of their marks in a diagonal row -def diag_win(board, player): - win = True - y = 0 - for x in range(len(board)): - if board[x, x] != player: - win = False - if win: - return win - win = True - if win: - for x in range(len(board)): - y = len(board) - 1 - x - if board[x, y] != player: - win = False - return win - - -# Evaluates whether there is -# a winner or a tie -def evaluate(board): - winner = 0 - - for player in [1, 2]: - if row_win(board, player) or col_win(board, player) or diag_win(board, player): - - winner = player - - if np.all(board != 0) and winner == 0: - winner = -1 - return winner - - -# Main function to start the game -def play_game(): - board, winner, counter = create_board(), 0, 1 - print(board) - sleep(2) - - while winner == 0: - for player in [1, 2]: - board = random_place(board, player) - print("Board after " + str(counter) + " move") - print(board) - sleep(2) - counter += 1 - winner = evaluate(board) - if winner != 0: - break - return winner - - -# Driver Code -print("Winner is: " + str(play_game())) diff --git a/tik_tak.py b/tik_tak.py index fb4d11601cb..734e2378bda 100644 --- a/tik_tak.py +++ b/tik_tak.py @@ -76,29 +76,21 @@ def enter_number(p1_sign, p2_sign): def checkwin(): if board[1] == board[2] == board[3]: - return 1 elif board[4] == board[5] == board[6]: - return 1 elif board[7] == board[8] == board[9]: - return 1 elif board[1] == board[4] == board[7]: - return 1 elif board[2] == board[5] == board[8]: - return 1 elif board[3] == board[6] == board[9]: - return 1 elif board[1] == board[5] == board[9]: - return 1 elif board[3] == board[5] == board[7]: - return 1 else: print("\n\nGame continue") diff --git a/time_delta.py b/time_delta.py index 9b153fd9707..dc9d479303d 100644 --- a/time_delta.py +++ b/time_delta.py @@ -1,6 +1,9 @@ -"""Time Delta Solution """ - +""" +Time Delta Calculator +This module provides functionality to calculate the absolute difference +in seconds between two timestamps in the format: Day dd Mon yyyy hh:mm:ss +xxxx +""" # ----------------------------------------------------------------------------- # You are givent two timestams in the format: Day dd Mon yyyy hh:mm:ss +xxxx # where +xxxx represents the timezone. @@ -26,42 +29,86 @@ # Sample Output: # 25200 # 88200 -#------------------------------------------------------------------------------ - -# Imports -import math -import os -import random -import re -import sys +# ------------------------------------------------------------------------------ + import datetime +from typing import List, Tuple -# Complete the time_delta function below. -def time_delta(t1, t2): + +def parse_timestamp(timestamp: str) -> datetime.datetime: """ - Calculate the time delta between two timestamps in seconds. + Parse a timestamp string into a datetime object. + + Args: + timestamp: String in the format "Day dd Mon yyyy hh:mm:ss +xxxx" + + Returns: + A datetime object with timezone information """ - # Convert the timestamps to datetime objects - t1 = datetime.datetime.strptime(t1, '%a %d %b %Y %H:%M:%S %z') - t2 = datetime.datetime.strptime(t2, '%a %d %b %Y %H:%M:%S %z') + # Define the format string to match the input timestamp format + format_str = "%a %d %b %Y %H:%M:%S %z" + return datetime.datetime.strptime(timestamp, format_str) - return (t1 - t2) +def calculate_time_delta(t1: str, t2: str) -> int: + """ + Calculate the absolute time difference between two timestamps in seconds. + Args: + t1: First timestamp string + t2: Second timestamp string -if __name__ == '__main__': + Returns: + Absolute time difference in seconds as an integer + """ + # Parse both timestamps + dt1 = parse_timestamp(t1) + dt2 = parse_timestamp(t2) - t = int(input()) + # Calculate absolute difference and convert to seconds + time_difference = abs(dt1 - dt2) + return int(time_difference.total_seconds()) - for itr_t in range(t): - t1 = input() - t2 = input() +def read_test_cases() -> Tuple[int, List[Tuple[str, str]]]: + """ + Read test cases from standard input. - delta = time_delta(t1, t2) - # print Delta with 1 Decimal Place - print(round(delta.total_seconds(), 1)) + Returns: + A tuple containing: + - Number of test cases + - List of timestamp pairs for each test case + """ + try: + num_test_cases = int(input().strip()) + test_cases = [] + + for _ in range(num_test_cases): + timestamp1 = input().strip() + timestamp2 = input().strip() + test_cases.append((timestamp1, timestamp2)) + + return num_test_cases, test_cases + except ValueError as e: + raise ValueError("Invalid input format") from e + + +def main() -> None: + """ + Main function to execute the time delta calculation program. + """ + try: + num_test_cases, test_cases = read_test_cases() + for t1, t2 in test_cases: + result = calculate_time_delta(t1, t2) + print(result) + except ValueError as e: + print(f"Error: {e}") + except Exception as e: + print(f"Unexpected error: {e}") +if __name__ == "__main__": + main() diff --git a/to check leap year b/to check leap year deleted file mode 100644 index 1e7739189a4..00000000000 --- a/to check leap year +++ /dev/null @@ -1,17 +0,0 @@ -# Python program to check if year is a leap year or not - -year = 2000 - -# To get year (integer input) from the user -# year = int(input("Enter a year: ")) - -if (year % 4) == 0: - if (year % 100) == 0: - if (year % 400) == 0: - print("{0} is a leap year".format(year)) - else: - print("{0} is not a leap year".format(year)) - else: - print("{0} is a leap year".format(year)) -else: - print("{0} is not a leap year".format(year)) diff --git a/to check leap year.py b/to check leap year.py new file mode 100644 index 00000000000..c54b3719527 --- /dev/null +++ b/to check leap year.py @@ -0,0 +1,44 @@ +""" +Leap Year Checker. + +Determine whether a given year is a leap year. + +Doctests: + +>>> is_leap_year(2000) +True +>>> is_leap_year(1900) +False +>>> is_leap_year(2024) +True +>>> is_leap_year(2023) +False +""" + + +def is_leap_year(year: int) -> bool: + """ + Return True if year is a leap year, False otherwise. + + Rules: + - Divisible by 4 => leap year + - Divisible by 100 => not leap year + - Divisible by 400 => leap year + """ + return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0) + + +if __name__ == "__main__": + import doctest + + doctest.testmod() + + year_input = input("Enter a year: ").strip() + try: + year = int(year_input) + if is_leap_year(year): + print(f"{year} is a leap year") + else: + print(f"{year} is not a leap year") + except ValueError: + print("Invalid input! Please enter a valid integer year.") diff --git a/triangles.py b/triangles.py index 97283d8dad8..df9727a7f7d 100644 --- a/triangles.py +++ b/triangles.py @@ -12,7 +12,6 @@ ) for i in range(1, max_size + 1): - print("*" * i, end=" " * (max_size - i + 3)) print("*" * (max_size - i + 1), end=" " * (i - 1 + 3)) diff --git a/tuple.py b/tuple.py index 69ee3950b9f..3f32d1df9f2 100644 --- a/tuple.py +++ b/tuple.py @@ -1,11 +1,11 @@ -a=(1,2,3,4,5) -print('Individual elements of Tuple are') +a = (1, 2, 3, 4, 5) +print("Individual elements of Tuple are") for i in a: - print(i,end=' ') + print(i, end=" ") print() -print('Value at index number 3 is:',a[3]) -print('Values from index no 2 are',a[2:]) -print('Length of tuple is',len(a)) -print('Maximum value from tuple is ',max(a)) -print('Minimum value from tuple is ',min(a)) -del a #delete the whole tuple +print("Value at index number 3 is:", a[3]) +print("Values from index no 2 are", a[2:]) +print("Length of tuple is", len(a)) +print("Maximum value from tuple is ", max(a)) +print("Minimum value from tuple is ", min(a)) +del a # delete the whole tuple diff --git a/turtal game.ipynb b/turtal game.ipynb index 70e85ff8431..4794115f709 100644 --- a/turtal game.ipynb +++ b/turtal game.ipynb @@ -6,7 +6,7 @@ "metadata": {}, "outputs": [], "source": [ - "import turtle \n" + "import turtle" ] }, { diff --git a/turtle_shapes_made.py b/turtle_shapes_made.py index e82ece728f4..60017048ffc 100644 --- a/turtle_shapes_made.py +++ b/turtle_shapes_made.py @@ -1,5 +1,6 @@ import turtle + class ShapeDrawer: def __init__(self, color, pensize): self.turtle = turtle.Turtle() @@ -18,6 +19,7 @@ def draw_triangle(self, length): self.turtle.forward(length) self.turtle.left(120) + def main(): scrn = turtle.Screen() scrn.bgcolor("lavender") @@ -45,5 +47,6 @@ def main(): scrn.exitonclick() + if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/twitter_post_scraper.py b/twitter_post_scraper.py index 06be7896e8a..5e80e0f2fa3 100644 --- a/twitter_post_scraper.py +++ b/twitter_post_scraper.py @@ -28,9 +28,9 @@ def tweeter_scrapper(): for dirty_tweet in list_of_dirty_tweets: dirty_tweet = re.sub(re_text, "", dirty_tweet, flags=re.MULTILINE) dirty_tweet = re.sub(re_text_1, "", dirty_tweet, flags=re.MULTILINE) - dirty_tweet = dirty_tweet.replace(u"\xa0…", u"") - dirty_tweet = dirty_tweet.replace(u"\xa0", u"") - dirty_tweet = dirty_tweet.replace(u"\u200c", u"") + dirty_tweet = dirty_tweet.replace("\xa0…", "") + dirty_tweet = dirty_tweet.replace("\xa0", "") + dirty_tweet = dirty_tweet.replace("\u200c", "") clear_list_of_tweets.append(dirty_tweet) print(clear_list_of_tweets) diff --git a/two_num.py b/two_num.py index 5780845217f..e0d57b2dd46 100644 --- a/two_num.py +++ b/two_num.py @@ -1,26 +1,62 @@ -"""Author Anurag Kumar (mailto:anuragkumarak95@gmail.com) +""" +Author: Anurag Kumar (mailto:anuragkumarak95@gmail.com) -Given an array of integers, return indices of the two numbers -such that they add up to a specific target. -You may assume that each input would have exactly one solution, -and you may not use the same element twice. +Description: + This function finds two numbers in a given list that add up to a specified target. + It returns the indices of those two numbers. -Example: -Given nums = [2, 7, 11, 15], target = 9, -Because nums[0] + nums[1] = 2 + 7 = 9, -return [0, 1]. +Constraints: + - Each input will have exactly one solution. + - The same element cannot be used twice. +Example: + >>> two_sum([2, 7, 11, 15], 9) + [0, 1] """ +from typing import List, Optional + + +def two_sum(nums: List[int], target: int) -> Optional[List[int]]: + """ + Finds indices of two numbers in 'nums' that add up to 'target'. + + Args: + nums (List[int]): List of integers. + target (int): Target sum. + + Returns: + Optional[List[int]]: Indices of the two numbers that add up to the target, + or None if no such pair is found. + """ + if len(nums) < 2: + raise ValueError("Input list must contain at least two numbers.") + + if not all(isinstance(num, int) for num in nums): + raise TypeError("All elements in the list must be integers.") + + # Dictionary to track seen values and their indices + seen_values = {} + + for index, value in enumerate(nums): + complement = target - value + if complement in seen_values: + return [seen_values[complement], index] + seen_values[value] = index + + return None + + +# Example usage +if __name__ == "__main__": + example_nums = [2, 7, 11, 15] + example_target = 9 + result = two_sum(example_nums, example_target) -def twoSum(nums, target): - chk_map = {} - for index, val in enumerate(nums): - compl = target - val - if compl in chk_map: - indices = [chk_map[compl], index] - print(indices) - return [indices] - else: - chk_map[val] = index - return False + if result: + num1, num2 = example_nums[result[0]], example_nums[result[1]] + print( + f"Indices that add up to {example_target}: {result} (Values: {num1} + {num2})" + ) + else: + print(f"No combination found that adds up to {example_target}.") diff --git a/ultimate-phone-book/contacts.py b/ultimate-phone-book/contacts.py index 7c53bacb28e..c1d70e9bcac 100644 --- a/ultimate-phone-book/contacts.py +++ b/ultimate-phone-book/contacts.py @@ -12,29 +12,33 @@ import os # get array from pickle data -infile = open('data/pickle-main', 'rb') +infile = open("data/pickle-main", "rb") # defining array array = pickle.load(infile) infile.close() # get key if path exists keyacess = False -path = 'data/pickle-key' -if os.path.isfile('data/pickle-key'): - pklekey = open('data/pickle-key', 'rb') +path = "data/pickle-key" +if os.path.isfile("data/pickle-key"): + pklekey = open("data/pickle-key", "rb") key = pickle.load(pklekey) pklekey.close() - if key == 'SKD0DW99SAMXI19#DJI9': + if key == "SKD0DW99SAMXI19#DJI9": keyacess = True print("key found & is correct") print("ALL FEATURES ENABLED") else: print("key is WRONG\nSOME FEATURES ARE DISABLED") - print("check https://github.com/JymPatel/Python-FirstEdition/tree/Main/PyPrograms/contacts for key, it's free") + print( + "check https://github.com/JymPatel/Python-FirstEdition/tree/Main/PyPrograms/contacts for key, it's free" + ) print("key isn't added to this repo check above repo") else: print("key not found\nSOME FEATURES ARE DISABLED") - print("check https://github.com/JymPatel/Python-FirstEdition/tree/Main/PyPrograms/contacts for key, it's free") + print( + "check https://github.com/JymPatel/Python-FirstEdition/tree/Main/PyPrograms/contacts for key, it's free" + ) print("") print("update-22.02 ADDS SAVING YOUR DATA WHEN CLOSED BY SAVING USING OPTION 0\n##") @@ -45,8 +49,8 @@ number = 2 email = 3 # getting some variables -promptvar = 0 # variable for prompt -loopvar = 0 # variable for main loop +promptvar = 0 # variable for prompt +loopvar = 0 # variable for main loop # making loop to run while loopvar < 1: # ask user what to do @@ -77,7 +81,9 @@ i1 = 0 # print all names while i1 < arraylen: - print(f"{array[fname][i1]} {array[lname][i1]}, {array[number][i1]} {array[email][i1]}") + print( + f"{array[fname][i1]} {array[lname][i1]}, {array[number][i1]} {array[email][i1]}" + ) i1 += 1 print("=======================") @@ -95,7 +101,7 @@ print("which contact would you like to delete? (enter first name)") print("enter '\nSTOP' to STOP deleting contact") rmcontact = input("INPUT: ") - if rmcontact != '\nSTOP': + if rmcontact != "\nSTOP": tempvar = 0 rmvar = 0 for i in range(arraylen): @@ -111,7 +117,7 @@ for i in range(4): print(array[i][rmvar]) tempinp = input("y/n? ") - if tempinp == 'y' or tempinp == 'Y': + if tempinp == "y" or tempinp == "Y": for i in range(4): del array[i][rmvar] print("contact REMOVED.") @@ -122,8 +128,6 @@ print("there are more than one contact with same name") # TODO - - # if option 4 is selected elif a == 4: if keyacess == True: @@ -158,7 +162,7 @@ elif a == 9: if keyacess: # change prompt settings - if promptvar == 0: + if promptvar == 0: promptvar += 1 print("you won't get prompt now!") print("ENTER 9 AGAIN TO START GETTING PROMPT AGAIN!!") @@ -167,11 +171,10 @@ else: print("NEED CORRECT KEY TO ENABLE THIS FEATURE") - # if option 0 is selected elif a == 0: print("Saving your Data ...") - outfile = open('data/pickle-main', 'wb') + outfile = open("data/pickle-main", "wb") pickle.dump(array, outfile) outfile.close() print("YOUR DATA HAS BEEN SAVED SUCESSFULLY!") diff --git a/venv/Lib/site-packages/pip-24.2.dist-info/AUTHORS.txt b/venv/Lib/site-packages/pip-24.2.dist-info/AUTHORS.txt new file mode 100644 index 00000000000..dda2ac30f85 --- /dev/null +++ b/venv/Lib/site-packages/pip-24.2.dist-info/AUTHORS.txt @@ -0,0 +1,796 @@ +@Switch01 +A_Rog +Aakanksha Agrawal +Abhinav Sagar +ABHYUDAY PRATAP SINGH +abs51295 +AceGentile +Adam Chainz +Adam Tse +Adam Wentz +admin +Adolfo Ochagavía +Adrien Morison +Agus +ahayrapetyan +Ahilya +AinsworthK +Akash Srivastava +Alan Yee +Albert Tugushev +Albert-Guan +albertg +Alberto Sottile +Aleks Bunin +Ales Erjavec +Alethea Flowers +Alex Gaynor +Alex Grönholm +Alex Hedges +Alex Loosley +Alex Morega +Alex Stachowiak +Alexander Shtyrov +Alexandre Conrad +Alexey Popravka +Aleš Erjavec +Alli +Ami Fischman +Ananya Maiti +Anatoly Techtonik +Anders Kaseorg +Andre Aguiar +Andreas Lutro +Andrei Geacar +Andrew Gaul +Andrew Shymanel +Andrey Bienkowski +Andrey Bulgakov +Andrés Delfino +Andy Freeland +Andy Kluger +Ani Hayrapetyan +Aniruddha Basak +Anish Tambe +Anrs Hu +Anthony Sottile +Antoine Musso +Anton Ovchinnikov +Anton Patrushev +Antonio Alvarado Hernandez +Antony Lee +Antti Kaihola +Anubhav Patel +Anudit Nagar +Anuj Godase +AQNOUCH Mohammed +AraHaan +arena +arenasys +Arindam Choudhury +Armin Ronacher +Arnon Yaari +Artem +Arun Babu Neelicattu +Ashley Manton +Ashwin Ramaswami +atse +Atsushi Odagiri +Avinash Karhana +Avner Cohen +Awit (Ah-Wit) Ghirmai +Baptiste Mispelon +Barney Gale +barneygale +Bartek Ogryczak +Bastian Venthur +Ben Bodenmiller +Ben Darnell +Ben Hoyt +Ben Mares +Ben Rosser +Bence Nagy +Benjamin Peterson +Benjamin VanEvery +Benoit Pierre +Berker Peksag +Bernard +Bernard Tyers +Bernardo B. Marques +Bernhard M. Wiedemann +Bertil Hatt +Bhavam Vidyarthi +Blazej Michalik +Bogdan Opanchuk +BorisZZZ +Brad Erickson +Bradley Ayers +Branch Vincent +Brandon L. Reiss +Brandt Bucher +Brannon Dorsey +Brett Randall +Brett Rosen +Brian Cristante +Brian Rosner +briantracy +BrownTruck +Bruno Oliveira +Bruno Renié +Bruno S +Bstrdsmkr +Buck Golemon +burrows +Bussonnier Matthias +bwoodsend +c22 +Caleb Martinez +Calvin Smith +Carl Meyer +Carlos Liam +Carol Willing +Carter Thayer +Cass +Chandrasekhar Atina +Charlie Marsh +Chih-Hsuan Yen +Chris Brinker +Chris Hunt +Chris Jerdonek +Chris Kuehl +Chris Markiewicz +Chris McDonough +Chris Pawley +Chris Pryer +Chris Wolfe +Christian Clauss +Christian Heimes +Christian Oudard +Christoph Reiter +Christopher Hunt +Christopher Snyder +chrysle +cjc7373 +Clark Boylan +Claudio Jolowicz +Clay McClure +Cody +Cody Soyland +Colin Watson +Collin Anderson +Connor Osborn +Cooper Lees +Cooper Ry Lees +Cory Benfield +Cory Wright +Craig Kerstiens +Cristian Sorinel +Cristina +Cristina Muñoz +ctg123 +Curtis Doty +cytolentino +Daan De Meyer +Dale +Damian +Damian Quiroga +Damian Shaw +Dan Black +Dan Savilonis +Dan Sully +Dane Hillard +daniel +Daniel Collins +Daniel Hahler +Daniel Holth +Daniel Jost +Daniel Katz +Daniel Shaulov +Daniele Esposti +Daniele Nicolodi +Daniele Procida +Daniil Konovalenko +Danny Hermes +Danny McClanahan +Darren Kavanagh +Dav Clark +Dave Abrahams +Dave Jones +David Aguilar +David Black +David Bordeynik +David Caro +David D Lowe +David Evans +David Hewitt +David Linke +David Poggi +David Poznik +David Pursehouse +David Runge +David Tucker +David Wales +Davidovich +ddelange +Deepak Sharma +Deepyaman Datta +Denise Yu +dependabot[bot] +derwolfe +Desetude +Devesh Kumar Singh +devsagul +Diego Caraballo +Diego Ramirez +DiegoCaraballo +Dimitri Merejkowsky +Dimitri Papadopoulos +Dirk Stolle +Dmitry Gladkov +Dmitry Volodin +Domen Kožar +Dominic Davis-Foster +Donald Stufft +Dongweiming +doron zarhi +Dos Moonen +Douglas Thor +DrFeathers +Dustin Ingram +Dustin Rodrigues +Dwayne Bailey +Ed Morley +Edgar Ramírez +Edgar Ramírez Mondragón +Ee Durbin +Efflam Lemaillet +efflamlemaillet +Eitan Adler +ekristina +elainechan +Eli Schwartz +Elisha Hollander +Ellen Marie Dash +Emil Burzo +Emil Styrke +Emmanuel Arias +Endoh Takanao +enoch +Erdinc Mutlu +Eric Cousineau +Eric Gillingham +Eric Hanchrow +Eric Hopper +Erik M. Bray +Erik Rose +Erwin Janssen +Eugene Vereshchagin +everdimension +Federico +Felipe Peter +Felix Yan +fiber-space +Filip Kokosiński +Filipe Laíns +Finn Womack +finnagin +Flavio Amurrio +Florian Briand +Florian Rathgeber +Francesco +Francesco Montesano +Fredrik Orderud +Frost Ming +Gabriel Curio +Gabriel de Perthuis +Garry Polley +gavin +gdanielson +Geoffrey Sneddon +George Song +Georgi Valkov +Georgy Pchelkin +ghost +Giftlin Rajaiah +gizmoguy1 +gkdoc +Godefroid Chapelle +Gopinath M +GOTO Hayato +gousaiyang +gpiks +Greg Roodt +Greg Ward +Guilherme Espada +Guillaume Seguin +gutsytechster +Guy Rozendorn +Guy Tuval +gzpan123 +Hanjun Kim +Hari Charan +Harsh Vardhan +harupy +Harutaka Kawamura +hauntsaninja +Henrich Hartzer +Henry Schreiner +Herbert Pfennig +Holly Stotelmyer +Honnix +Hsiaoming Yang +Hugo Lopes Tavares +Hugo van Kemenade +Hugues Bruant +Hynek Schlawack +Ian Bicking +Ian Cordasco +Ian Lee +Ian Stapleton Cordasco +Ian Wienand +Igor Kuzmitshov +Igor Sobreira +Ikko Ashimine +Ilan Schnell +Illia Volochii +Ilya Baryshev +Inada Naoki +Ionel Cristian Mărieș +Ionel Maries Cristian +Itamar Turner-Trauring +Ivan Pozdeev +J. Nick Koston +Jacob Kim +Jacob Walls +Jaime Sanz +jakirkham +Jakub Kuczys +Jakub Stasiak +Jakub Vysoky +Jakub Wilk +James Cleveland +James Curtin +James Firth +James Gerity +James Polley +Jan Pokorný +Jannis Leidel +Jarek Potiuk +jarondl +Jason Curtis +Jason R. Coombs +JasonMo +JasonMo1 +Jay Graves +Jean Abou Samra +Jean-Christophe Fillion-Robin +Jeff Barber +Jeff Dairiki +Jeff Widman +Jelmer Vernooij +jenix21 +Jeremy Fleischman +Jeremy Stanley +Jeremy Zafran +Jesse Rittner +Jiashuo Li +Jim Fisher +Jim Garrison +Jinzhe Zeng +Jiun Bae +Jivan Amara +Joe Bylund +Joe Michelini +John Paton +John Sirois +John T. Wodder II +John-Scott Atlakson +johnthagen +Jon Banafato +Jon Dufresne +Jon Parise +Jonas Nockert +Jonathan Herbert +Joonatan Partanen +Joost Molenaar +Jorge Niedbalski +Joseph Bylund +Joseph Long +Josh Bronson +Josh Cannon +Josh Hansen +Josh Schneier +Joshua +Juan Luis Cano Rodríguez +Juanjo Bazán +Judah Rand +Julian Berman +Julian Gethmann +Julien Demoor +Jussi Kukkonen +jwg4 +Jyrki Pulliainen +Kai Chen +Kai Mueller +Kamal Bin Mustafa +kasium +kaustav haldar +keanemind +Keith Maxwell +Kelsey Hightower +Kenneth Belitzky +Kenneth Reitz +Kevin Burke +Kevin Carter +Kevin Frommelt +Kevin R Patterson +Kexuan Sun +Kit Randel +Klaas van Schelven +KOLANICH +konstin +kpinc +Krishna Oza +Kumar McMillan +Kuntal Majumder +Kurt McKee +Kyle Persohn +lakshmanaram +Laszlo Kiss-Kollar +Laurent Bristiel +Laurent LAPORTE +Laurie O +Laurie Opperman +layday +Leon Sasson +Lev Givon +Lincoln de Sousa +Lipis +lorddavidiii +Loren Carvalho +Lucas Cimon +Ludovic Gasc +Luis Medel +Lukas Geiger +Lukas Juhrich +Luke Macken +Luo Jiebin +luojiebin +luz.paz +László Kiss Kollár +M00nL1ght +Marc Abramowitz +Marc Tamlyn +Marcus Smith +Mariatta +Mark Kohler +Mark McLoughlin +Mark Williams +Markus Hametner +Martey Dodoo +Martin Fischer +Martin Häcker +Martin Pavlasek +Masaki +Masklinn +Matej Stuchlik +Mathew Jennings +Mathieu Bridon +Mathieu Kniewallner +Matt Bacchi +Matt Good +Matt Maker +Matt Robenolt +Matt Wozniski +matthew +Matthew Einhorn +Matthew Feickert +Matthew Gilliard +Matthew Hughes +Matthew Iversen +Matthew Treinish +Matthew Trumbell +Matthew Willson +Matthias Bussonnier +mattip +Maurits van Rees +Max W Chase +Maxim Kurnikov +Maxime Rouyrre +mayeut +mbaluna +mdebi +memoselyk +meowmeowcat +Michael +Michael Aquilina +Michael E. Karpeles +Michael Klich +Michael Mintz +Michael Williamson +michaelpacer +Michał Górny +Mickaël Schoentgen +Miguel Araujo Perez +Mihir Singh +Mike +Mike Hendricks +Min RK +MinRK +Miro Hrončok +Monica Baluna +montefra +Monty Taylor +morotti +mrKazzila +Muha Ajjan +Nadav Wexler +Nahuel Ambrosini +Nate Coraor +Nate Prewitt +Nathan Houghton +Nathaniel J. Smith +Nehal J Wani +Neil Botelho +Nguyễn Gia Phong +Nicholas Serra +Nick Coghlan +Nick Stenning +Nick Timkovich +Nicolas Bock +Nicole Harris +Nikhil Benesch +Nikhil Ladha +Nikita Chepanov +Nikolay Korolev +Nipunn Koorapati +Nitesh Sharma +Niyas Sait +Noah +Noah Gorny +Nowell Strite +NtaleGrey +nvdv +OBITORASU +Ofek Lev +ofrinevo +Oliver Freund +Oliver Jeeves +Oliver Mannion +Oliver Tonnhofer +Olivier Girardot +Olivier Grisel +Ollie Rutherfurd +OMOTO Kenji +Omry Yadan +onlinejudge95 +Oren Held +Oscar Benjamin +Oz N Tiram +Pachwenko +Patrick Dubroy +Patrick Jenkins +Patrick Lawson +patricktokeeffe +Patrik Kopkan +Paul Ganssle +Paul Kehrer +Paul Moore +Paul Nasrat +Paul Oswald +Paul van der Linden +Paulus Schoutsen +Pavel Safronov +Pavithra Eswaramoorthy +Pawel Jasinski +Paweł Szramowski +Pekka Klärck +Peter Gessler +Peter Lisák +Peter Shen +Peter Waller +Petr Viktorin +petr-tik +Phaneendra Chiruvella +Phil Elson +Phil Freo +Phil Pennock +Phil Whelan +Philip Jägenstedt +Philip Molloy +Philippe Ombredanne +Pi Delport +Pierre-Yves Rofes +Pieter Degroote +pip +Prabakaran Kumaresshan +Prabhjyotsing Surjit Singh Sodhi +Prabhu Marappan +Pradyun Gedam +Prashant Sharma +Pratik Mallya +pre-commit-ci[bot] +Preet Thakkar +Preston Holmes +Przemek Wrzos +Pulkit Goyal +q0w +Qiangning Hong +Qiming Xu +Quentin Lee +Quentin Pradet +R. David Murray +Rafael Caricio +Ralf Schmitt +Ran Benita +Razzi Abuissa +rdb +Reece Dunham +Remi Rampin +Rene Dudfield +Riccardo Magliocchetti +Riccardo Schirone +Richard Jones +Richard Si +Ricky Ng-Adam +Rishi +rmorotti +RobberPhex +Robert Collins +Robert McGibbon +Robert Pollak +Robert T. McGibbon +robin elisha robinson +Roey Berman +Rohan Jain +Roman Bogorodskiy +Roman Donchenko +Romuald Brunet +ronaudinho +Ronny Pfannschmidt +Rory McCann +Ross Brattain +Roy Wellington Ⅳ +Ruairidh MacLeod +Russell Keith-Magee +Ryan Shepherd +Ryan Wooden +ryneeverett +S. Guliaev +Sachi King +Salvatore Rinchiera +sandeepkiran-js +Sander Van Balen +Savio Jomton +schlamar +Scott Kitterman +Sean +seanj +Sebastian Jordan +Sebastian Schaetz +Segev Finer +SeongSoo Cho +Sergey Vasilyev +Seth Michael Larson +Seth Woodworth +Shahar Epstein +Shantanu +shenxianpeng +shireenrao +Shivansh-007 +Shixian Sheng +Shlomi Fish +Shovan Maity +Simeon Visser +Simon Cross +Simon Pichugin +sinoroc +sinscary +snook92 +socketubs +Sorin Sbarnea +Srinivas Nyayapati +Stavros Korokithakis +Stefan Scherfke +Stefano Rivera +Stephan Erb +Stephen Rosen +stepshal +Steve (Gadget) Barnes +Steve Barnes +Steve Dower +Steve Kowalik +Steven Myint +Steven Silvester +stonebig +studioj +Stéphane Bidoul +Stéphane Bidoul (ACSONE) +Stéphane Klein +Sumana Harihareswara +Surbhi Sharma +Sviatoslav Sydorenko +Sviatoslav Sydorenko (Святослав Сидоренко) +Swat009 +Sylvain +Takayuki SHIMIZUKAWA +Taneli Hukkinen +tbeswick +Thiago +Thijs Triemstra +Thomas Fenzl +Thomas Grainger +Thomas Guettler +Thomas Johansson +Thomas Kluyver +Thomas Smith +Thomas VINCENT +Tim D. Smith +Tim Gates +Tim Harder +Tim Heap +tim smith +tinruufu +Tobias Hermann +Tom Forbes +Tom Freudenheim +Tom V +Tomas Hrnciar +Tomas Orsava +Tomer Chachamu +Tommi Enenkel | AnB +Tomáš Hrnčiar +Tony Beswick +Tony Narlock +Tony Zhaocheng Tan +TonyBeswick +toonarmycaptain +Toshio Kuratomi +toxinu +Travis Swicegood +Tushar Sadhwani +Tzu-ping Chung +Valentin Haenel +Victor Stinner +victorvpaulo +Vikram - Google +Viktor Szépe +Ville Skyttä +Vinay Sajip +Vincent Philippon +Vinicyus Macedo +Vipul Kumar +Vitaly Babiy +Vladimir Fokow +Vladimir Rutsky +W. Trevor King +Wil Tan +Wilfred Hughes +William Edwards +William ML Leslie +William T Olson +William Woodruff +Wilson Mo +wim glenn +Winson Luk +Wolfgang Maier +Wu Zhenyu +XAMES3 +Xavier Fernandez +Xianpeng Shen +xoviat +xtreak +YAMAMOTO Takashi +Yen Chi Hsuan +Yeray Diaz Diaz +Yoval P +Yu Jian +Yuan Jing Vincent Yan +Yusuke Hayashi +Zearin +Zhiping Deng +ziebam +Zvezdan Petkovic +Łukasz Langa +Роман Донченко +Семён Марьясин diff --git a/venv/Lib/site-packages/pip-24.2.dist-info/INSTALLER b/venv/Lib/site-packages/pip-24.2.dist-info/INSTALLER new file mode 100644 index 00000000000..a1b589e38a3 --- /dev/null +++ b/venv/Lib/site-packages/pip-24.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/pip-24.2.dist-info/LICENSE.txt b/venv/Lib/site-packages/pip-24.2.dist-info/LICENSE.txt new file mode 100644 index 00000000000..8e7b65eaf62 --- /dev/null +++ b/venv/Lib/site-packages/pip-24.2.dist-info/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2008-present The pip developers (see AUTHORS.txt file) + +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 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/venv/Lib/site-packages/pip-24.2.dist-info/METADATA b/venv/Lib/site-packages/pip-24.2.dist-info/METADATA new file mode 100644 index 00000000000..6141107f90b --- /dev/null +++ b/venv/Lib/site-packages/pip-24.2.dist-info/METADATA @@ -0,0 +1,89 @@ +Metadata-Version: 2.1 +Name: pip +Version: 24.2 +Summary: The PyPA recommended tool for installing Python packages. +Author-email: The pip developers +License: MIT +Project-URL: Homepage, https://pip.pypa.io/ +Project-URL: Documentation, https://pip.pypa.io +Project-URL: Source, https://github.com/pypa/pip +Project-URL: Changelog, https://pip.pypa.io/en/stable/news/ +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Topic :: Software Development :: Build Tools +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Requires-Python: >=3.8 +Description-Content-Type: text/x-rst +License-File: LICENSE.txt +License-File: AUTHORS.txt + +pip - The Python Package Installer +================================== + +.. |pypi-version| image:: https://img.shields.io/pypi/v/pip.svg + :target: https://pypi.org/project/pip/ + :alt: PyPI + +.. |python-versions| image:: https://img.shields.io/pypi/pyversions/pip + :target: https://pypi.org/project/pip + :alt: PyPI - Python Version + +.. |docs-badge| image:: https://readthedocs.org/projects/pip/badge/?version=latest + :target: https://pip.pypa.io/en/latest + :alt: Documentation + +|pypi-version| |python-versions| |docs-badge| + +pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes. + +Please take a look at our documentation for how to install and use pip: + +* `Installation`_ +* `Usage`_ + +We release updates regularly, with a new version every 3 months. Find more details in our documentation: + +* `Release notes`_ +* `Release process`_ + +If you find bugs, need help, or want to talk to the developers, please use our mailing lists or chat rooms: + +* `Issue tracking`_ +* `Discourse channel`_ +* `User IRC`_ + +If you want to get involved head over to GitHub to get the source code, look at our development documentation and feel free to jump on the developer mailing lists and chat rooms: + +* `GitHub page`_ +* `Development documentation`_ +* `Development IRC`_ + +Code of Conduct +--------------- + +Everyone interacting in the pip project's codebases, issue trackers, chat +rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_. + +.. _package installer: https://packaging.python.org/guides/tool-recommendations/ +.. _Python Package Index: https://pypi.org +.. _Installation: https://pip.pypa.io/en/stable/installation/ +.. _Usage: https://pip.pypa.io/en/stable/ +.. _Release notes: https://pip.pypa.io/en/stable/news.html +.. _Release process: https://pip.pypa.io/en/latest/development/release-process/ +.. _GitHub page: https://github.com/pypa/pip +.. _Development documentation: https://pip.pypa.io/en/latest/development +.. _Issue tracking: https://github.com/pypa/pip/issues +.. _Discourse channel: https://discuss.python.org/c/packaging +.. _User IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa +.. _Development IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa-dev +.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md diff --git a/venv/Lib/site-packages/pip-24.2.dist-info/RECORD b/venv/Lib/site-packages/pip-24.2.dist-info/RECORD new file mode 100644 index 00000000000..230e8f8bf14 --- /dev/null +++ b/venv/Lib/site-packages/pip-24.2.dist-info/RECORD @@ -0,0 +1,853 @@ +../../Scripts/pip.exe,sha256=Eev996HIKF6Ni6hzFFcXVnJRV3Lm8PVyVI9ZuYGxlhw,108442 +../../Scripts/pip3.12.exe,sha256=Eev996HIKF6Ni6hzFFcXVnJRV3Lm8PVyVI9ZuYGxlhw,108442 +../../Scripts/pip3.exe,sha256=Eev996HIKF6Ni6hzFFcXVnJRV3Lm8PVyVI9ZuYGxlhw,108442 +pip-24.2.dist-info/AUTHORS.txt,sha256=KDa8Pd3GDeKSogF6yFW0l9A9eMneLDOFrcIDqkL8G8s,10868 +pip-24.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip-24.2.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093 +pip-24.2.dist-info/METADATA,sha256=PhzCxQxIhsnZ871cPUe3Hew9PhhpgflLbfqU3WizZqM,3624 +pip-24.2.dist-info/RECORD,, +pip-24.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip-24.2.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91 +pip-24.2.dist-info/entry_points.txt,sha256=eeIjuzfnfR2PrhbjnbzFU6MnSS70kZLxwaHHq6M-bD0,87 +pip-24.2.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip/__init__.py,sha256=EQxEGXUQIu-9fNJxVEK74ufx_fTk_HpYV9lAbw-WWbs,355 +pip/__main__.py,sha256=WzbhHXTbSE6gBY19mNN9m4s5o_365LOvTYSgqgbdBhE,854 +pip/__pip-runner__.py,sha256=cPPWuJ6NK_k-GzfvlejLFgwzmYUROmpAR6QC3Q-vkXQ,1450 +pip/__pycache__/__init__.cpython-312.pyc,, +pip/__pycache__/__main__.cpython-312.pyc,, +pip/__pycache__/__pip-runner__.cpython-312.pyc,, +pip/_internal/__init__.py,sha256=MfcoOluDZ8QMCFYal04IqOJ9q6m2V7a0aOsnI-WOxUo,513 +pip/_internal/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/__pycache__/build_env.cpython-312.pyc,, +pip/_internal/__pycache__/cache.cpython-312.pyc,, +pip/_internal/__pycache__/configuration.cpython-312.pyc,, +pip/_internal/__pycache__/exceptions.cpython-312.pyc,, +pip/_internal/__pycache__/main.cpython-312.pyc,, +pip/_internal/__pycache__/pyproject.cpython-312.pyc,, +pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc,, +pip/_internal/__pycache__/wheel_builder.cpython-312.pyc,, +pip/_internal/build_env.py,sha256=QiusW8QEaj387y0hdRqVbuelHSHGYcT7WzVckbmMhR0,10420 +pip/_internal/cache.py,sha256=Jb698p5PNigRtpW5o26wQNkkUv4MnQ94mc471wL63A0,10369 +pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132 +pip/_internal/cli/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc,, +pip/_internal/cli/__pycache__/base_command.cpython-312.pyc,, +pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc,, +pip/_internal/cli/__pycache__/command_context.cpython-312.pyc,, +pip/_internal/cli/__pycache__/index_command.cpython-312.pyc,, +pip/_internal/cli/__pycache__/main.cpython-312.pyc,, +pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc,, +pip/_internal/cli/__pycache__/parser.cpython-312.pyc,, +pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc,, +pip/_internal/cli/__pycache__/req_command.cpython-312.pyc,, +pip/_internal/cli/__pycache__/spinners.cpython-312.pyc,, +pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc,, +pip/_internal/cli/autocompletion.py,sha256=Lli3Mr6aDNu7ZkJJFFvwD2-hFxNI6Avz8OwMyS5TVrs,6865 +pip/_internal/cli/base_command.py,sha256=F8nUcSM-Y-MQljJUe724-yxmc5viFXHyM_zH70NmIh4,8289 +pip/_internal/cli/cmdoptions.py,sha256=mDqBr0d0hoztbRJs-PWtcKpqNAc7khU6ZpoesZKocT8,30110 +pip/_internal/cli/command_context.py,sha256=RHgIPwtObh5KhMrd3YZTkl8zbVG-6Okml7YbFX4Ehg0,774 +pip/_internal/cli/index_command.py,sha256=YIJ84cfYcbDBACnB8eoDgqjYJU6GpiWP2Rh7Ij-Xyak,5633 +pip/_internal/cli/main.py,sha256=BDZef-bWe9g9Jpr4OVs4dDf-845HJsKw835T7AqEnAc,2817 +pip/_internal/cli/main_parser.py,sha256=laDpsuBDl6kyfywp9eMMA9s84jfH2TJJn-vmL0GG90w,4338 +pip/_internal/cli/parser.py,sha256=QAkY6s8N-AD7w5D2PQm2Y8C2MIJSv7iuAeNjOMvDBUA,10811 +pip/_internal/cli/progress_bars.py,sha256=0FAf7eN67KnIv_gZQhTWSnKXXUzQko1ftGXEoLe5Yec,2713 +pip/_internal/cli/req_command.py,sha256=DqeFhmUMs6o6Ev8qawAcOoYNdAZsfyKS0MZI5jsJYwQ,12250 +pip/_internal/cli/spinners.py,sha256=hIJ83GerdFgFCdobIA23Jggetegl_uC4Sp586nzFbPE,5118 +pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116 +pip/_internal/commands/__init__.py,sha256=5oRO9O3dM2vGuh0bFw4HOVletryrz5HHMmmPWwJrH9U,3882 +pip/_internal/commands/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/commands/__pycache__/cache.cpython-312.pyc,, +pip/_internal/commands/__pycache__/check.cpython-312.pyc,, +pip/_internal/commands/__pycache__/completion.cpython-312.pyc,, +pip/_internal/commands/__pycache__/configuration.cpython-312.pyc,, +pip/_internal/commands/__pycache__/debug.cpython-312.pyc,, +pip/_internal/commands/__pycache__/download.cpython-312.pyc,, +pip/_internal/commands/__pycache__/freeze.cpython-312.pyc,, +pip/_internal/commands/__pycache__/hash.cpython-312.pyc,, +pip/_internal/commands/__pycache__/help.cpython-312.pyc,, +pip/_internal/commands/__pycache__/index.cpython-312.pyc,, +pip/_internal/commands/__pycache__/inspect.cpython-312.pyc,, +pip/_internal/commands/__pycache__/install.cpython-312.pyc,, +pip/_internal/commands/__pycache__/list.cpython-312.pyc,, +pip/_internal/commands/__pycache__/search.cpython-312.pyc,, +pip/_internal/commands/__pycache__/show.cpython-312.pyc,, +pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc,, +pip/_internal/commands/__pycache__/wheel.cpython-312.pyc,, +pip/_internal/commands/cache.py,sha256=xg76_ZFEBC6zoQ3gXLRfMZJft4z2a0RwH4GEFZC6nnU,7944 +pip/_internal/commands/check.py,sha256=Hr_4eiMd9cgVDgEvjtIdw915NmL7ROIWW8enkr8slPQ,2268 +pip/_internal/commands/completion.py,sha256=HT4lD0bgsflHq2IDgYfiEdp7IGGtE7s6MgI3xn0VQEw,4287 +pip/_internal/commands/configuration.py,sha256=n98enwp6y0b5G6fiRQjaZo43FlJKYve_daMhN-4BRNc,9766 +pip/_internal/commands/debug.py,sha256=DNDRgE9YsKrbYzU0s3VKi8rHtKF4X13CJ_br_8PUXO0,6797 +pip/_internal/commands/download.py,sha256=0qB0nys6ZEPsog451lDsjL5Bx7Z97t-B80oFZKhpzKM,5273 +pip/_internal/commands/freeze.py,sha256=2Vt72BYTSm9rzue6d8dNzt8idxWK4Db6Hd-anq7GQ80,3203 +pip/_internal/commands/hash.py,sha256=EVVOuvGtoPEdFi8SNnmdqlCQrhCxV-kJsdwtdcCnXGQ,1703 +pip/_internal/commands/help.py,sha256=gcc6QDkcgHMOuAn5UxaZwAStsRBrnGSn_yxjS57JIoM,1132 +pip/_internal/commands/index.py,sha256=RAXxmJwFhVb5S1BYzb5ifX3sn9Na8v2CCVYwSMP8pao,4731 +pip/_internal/commands/inspect.py,sha256=PGrY9TRTRCM3y5Ml8Bdk8DEOXquWRfscr4DRo1LOTPc,3189 +pip/_internal/commands/install.py,sha256=iqesiLIZc6Op9uihMQFYRhAA2DQRZUxbM4z1BwXoFls,29428 +pip/_internal/commands/list.py,sha256=RgaIV4kN-eMSpgUAXc-6bjnURzl0v3cRE11xr54O9Cg,12771 +pip/_internal/commands/search.py,sha256=hSGtIHg26LRe468Ly7oZ6gfd9KbTxBRZAAtJc9Um6S4,5628 +pip/_internal/commands/show.py,sha256=IG9L5uo8w6UA4tI_IlmaxLCoNKPa5JNJCljj3NWs0OE,7507 +pip/_internal/commands/uninstall.py,sha256=7pOR7enK76gimyxQbzxcG1OsyLXL3DvX939xmM8Fvtg,3892 +pip/_internal/commands/wheel.py,sha256=eJRhr_qoNNxWAkkdJCNiQM7CXd4E1_YyQhsqJnBPGGg,6414 +pip/_internal/configuration.py,sha256=XkAiBS0hpzsM-LF0Qu5hvPWO_Bs67-oQKRYFBuMbESs,14006 +pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858 +pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/distributions/__pycache__/base.cpython-312.pyc,, +pip/_internal/distributions/__pycache__/installed.cpython-312.pyc,, +pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc,, +pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc,, +pip/_internal/distributions/base.py,sha256=QeB9qvKXDIjLdPBDE5fMgpfGqMMCr-govnuoQnGuiF8,1783 +pip/_internal/distributions/installed.py,sha256=QinHFbWAQ8oE0pbD8MFZWkwlnfU1QYTccA1vnhrlYOU,842 +pip/_internal/distributions/sdist.py,sha256=PlcP4a6-R6c98XnOM-b6Lkb3rsvh9iG4ok8shaanrzs,6751 +pip/_internal/distributions/wheel.py,sha256=THBYfnv7VVt8mYhMYUtH13S1E7FDwtDyDfmUcl8ai0E,1317 +pip/_internal/exceptions.py,sha256=6qcW3QgmFVlRxlZvDSLUhSzKJ7_Tedo-lyqWA6NfdAU,25371 +pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30 +pip/_internal/index/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/index/__pycache__/collector.cpython-312.pyc,, +pip/_internal/index/__pycache__/package_finder.cpython-312.pyc,, +pip/_internal/index/__pycache__/sources.cpython-312.pyc,, +pip/_internal/index/collector.py,sha256=RdPO0JLAlmyBWPAWYHPyRoGjz3GNAeTngCNkbGey_mE,16265 +pip/_internal/index/package_finder.py,sha256=yRC4xsyudwKnNoU6IXvNoyqYo5ScT7lB6Wa-z2eh7cs,37666 +pip/_internal/index/sources.py,sha256=dJegiR9f86kslaAHcv9-R5L_XBf5Rzm_FkyPteDuPxI,8688 +pip/_internal/locations/__init__.py,sha256=UaAxeZ_f93FyouuFf4p7SXYF-4WstXuEvd3LbmPCAno,14925 +pip/_internal/locations/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc,, +pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc,, +pip/_internal/locations/__pycache__/base.cpython-312.pyc,, +pip/_internal/locations/_distutils.py,sha256=H9ZHK_35rdDV1Qsmi4QeaBULjFT4Mbu6QuoVGkJ6QHI,6009 +pip/_internal/locations/_sysconfig.py,sha256=IGzds60qsFneRogC-oeBaY7bEh3lPt_v47kMJChQXsU,7724 +pip/_internal/locations/base.py,sha256=RQiPi1d4FVM2Bxk04dQhXZ2PqkeljEL2fZZ9SYqIQ78,2556 +pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340 +pip/_internal/metadata/__init__.py,sha256=9pU3W3s-6HtjFuYhWcLTYVmSaziklPv7k2x8p7X1GmA,4339 +pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/metadata/__pycache__/_json.cpython-312.pyc,, +pip/_internal/metadata/__pycache__/base.cpython-312.pyc,, +pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc,, +pip/_internal/metadata/_json.py,sha256=P0cAJrH_mtmMZvlZ16ZXm_-izA4lpr5wy08laICuiaA,2644 +pip/_internal/metadata/base.py,sha256=ft0K5XNgI4ETqZnRv2-CtvgYiMOMAeGMAzxT-f6VLJA,25298 +pip/_internal/metadata/importlib/__init__.py,sha256=jUUidoxnHcfITHHaAWG1G2i5fdBYklv_uJcjo2x7VYE,135 +pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc,, +pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc,, +pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc,, +pip/_internal/metadata/importlib/_compat.py,sha256=c6av8sP8BBjAZuFSJow1iWfygUXNM3xRTCn5nqw6B9M,2796 +pip/_internal/metadata/importlib/_dists.py,sha256=anh0mLI-FYRPUhAdipd0Va3YJJc6HelCKQ0bFhY10a0,8017 +pip/_internal/metadata/importlib/_envs.py,sha256=JHjNfnk9RsjrcQw8dLBqdfBglOKSepEe9aq03B4nRpU,7431 +pip/_internal/metadata/pkg_resources.py,sha256=U07ETAINSGeSRBfWUG93E4tZZbaW_f7PGzEqZN0hulc,10542 +pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63 +pip/_internal/models/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/models/__pycache__/candidate.cpython-312.pyc,, +pip/_internal/models/__pycache__/direct_url.cpython-312.pyc,, +pip/_internal/models/__pycache__/format_control.cpython-312.pyc,, +pip/_internal/models/__pycache__/index.cpython-312.pyc,, +pip/_internal/models/__pycache__/installation_report.cpython-312.pyc,, +pip/_internal/models/__pycache__/link.cpython-312.pyc,, +pip/_internal/models/__pycache__/scheme.cpython-312.pyc,, +pip/_internal/models/__pycache__/search_scope.cpython-312.pyc,, +pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc,, +pip/_internal/models/__pycache__/target_python.cpython-312.pyc,, +pip/_internal/models/__pycache__/wheel.cpython-312.pyc,, +pip/_internal/models/candidate.py,sha256=zzgFRuw_kWPjKpGw7LC0ZUMD2CQ2EberUIYs8izjdCA,753 +pip/_internal/models/direct_url.py,sha256=uBtY2HHd3TO9cKQJWh0ThvE5FRr-MWRYChRU4IG9HZE,6578 +pip/_internal/models/format_control.py,sha256=wtsQqSK9HaUiNxQEuB-C62eVimw6G4_VQFxV9-_KDBE,2486 +pip/_internal/models/index.py,sha256=tYnL8oxGi4aSNWur0mG8DAP7rC6yuha_MwJO8xw0crI,1030 +pip/_internal/models/installation_report.py,sha256=zRVZoaz-2vsrezj_H3hLOhMZCK9c7TbzWgC-jOalD00,2818 +pip/_internal/models/link.py,sha256=jHax9O-9zlSzEwjBCDkx0OXjKXwBDwOuPwn-PsR8dCs,21034 +pip/_internal/models/scheme.py,sha256=PakmHJM3e8OOWSZFtfz1Az7f1meONJnkGuQxFlt3wBE,575 +pip/_internal/models/search_scope.py,sha256=67NEnsYY84784S-MM7ekQuo9KXLH-7MzFntXjapvAo0,4531 +pip/_internal/models/selection_prefs.py,sha256=qaFfDs3ciqoXPg6xx45N1jPLqccLJw4N0s4P0PyHTQ8,2015 +pip/_internal/models/target_python.py,sha256=2XaH2rZ5ZF-K5wcJbEMGEl7SqrTToDDNkrtQ2v_v_-Q,4271 +pip/_internal/models/wheel.py,sha256=Odc1NVWL5N-i6A3vFa50BfNvCRlGvGa4som60FQM198,3601 +pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50 +pip/_internal/network/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/network/__pycache__/auth.cpython-312.pyc,, +pip/_internal/network/__pycache__/cache.cpython-312.pyc,, +pip/_internal/network/__pycache__/download.cpython-312.pyc,, +pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc,, +pip/_internal/network/__pycache__/session.cpython-312.pyc,, +pip/_internal/network/__pycache__/utils.cpython-312.pyc,, +pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc,, +pip/_internal/network/auth.py,sha256=D4gASjUrqoDFlSt6gQ767KAAjv6PUyJU0puDlhXNVRE,20809 +pip/_internal/network/cache.py,sha256=48A971qCzKNFvkb57uGEk7-0xaqPS0HWj2711QNTxkU,3935 +pip/_internal/network/download.py,sha256=FLOP29dPYECBiAi7eEjvAbNkyzaKNqbyjOT2m8HPW8U,6048 +pip/_internal/network/lazy_wheel.py,sha256=2PXVduYZPCPZkkQFe1J1GbfHJWeCU--FXonGyIfw9eU,7638 +pip/_internal/network/session.py,sha256=XmanBKjVwPFmh1iJ58q6TDh9xabH37gREuQJ_feuZGA,18741 +pip/_internal/network/utils.py,sha256=Inaxel-NxBu4PQWkjyErdnfewsFCcgHph7dzR1-FboY,4088 +pip/_internal/network/xmlrpc.py,sha256=sAxzOacJ-N1NXGPvap9jC3zuYWSnnv3GXtgR2-E2APA,1838 +pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/operations/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/operations/__pycache__/check.cpython-312.pyc,, +pip/_internal/operations/__pycache__/freeze.cpython-312.pyc,, +pip/_internal/operations/__pycache__/prepare.cpython-312.pyc,, +pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc,, +pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc,, +pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc,, +pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc,, +pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc,, +pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc,, +pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc,, +pip/_internal/operations/build/build_tracker.py,sha256=-ARW_TcjHCOX7D2NUOGntB4Fgc6b4aolsXkAK6BWL7w,4774 +pip/_internal/operations/build/metadata.py,sha256=9S0CUD8U3QqZeXp-Zyt8HxwU90lE4QrnYDgrqZDzBnc,1422 +pip/_internal/operations/build/metadata_editable.py,sha256=VLL7LvntKE8qxdhUdEJhcotFzUsOSI8NNS043xULKew,1474 +pip/_internal/operations/build/metadata_legacy.py,sha256=8i6i1QZX9m_lKPStEFsHKM0MT4a-CD408JOw99daLmo,2190 +pip/_internal/operations/build/wheel.py,sha256=sT12FBLAxDC6wyrDorh8kvcZ1jG5qInCRWzzP-UkJiQ,1075 +pip/_internal/operations/build/wheel_editable.py,sha256=yOtoH6zpAkoKYEUtr8FhzrYnkNHQaQBjWQ2HYae1MQg,1417 +pip/_internal/operations/build/wheel_legacy.py,sha256=K-6kNhmj-1xDF45ny1yheMerF0ui4EoQCLzEoHh6-tc,3045 +pip/_internal/operations/check.py,sha256=L24vRL8VWbyywdoeAhM89WCd8zLTnjIbULlKelUgIec,5912 +pip/_internal/operations/freeze.py,sha256=V59yEyCSz_YhZuhH09-6aV_zvYBMrS_IxFFNqn2QzlA,9864 +pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51 +pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc,, +pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc,, +pip/_internal/operations/install/editable_legacy.py,sha256=PoEsNEPGbIZ2yQphPsmYTKLOCMs4gv5OcCdzW124NcA,1283 +pip/_internal/operations/install/wheel.py,sha256=X5Iz9yUg5LlK5VNQ9g2ikc6dcRu8EPi_SUi5iuEDRgo,27615 +pip/_internal/operations/prepare.py,sha256=joWJwPkuqGscQgVNImLK71e9hRapwKvRCM8HclysmvU,28118 +pip/_internal/pyproject.py,sha256=rw4fwlptDp1hZgYoplwbAGwWA32sWQkp7ysf8Ju6iXc,7287 +pip/_internal/req/__init__.py,sha256=HxBFtZy_BbCclLgr26waMtpzYdO5T3vxePvpGAXSt5s,2653 +pip/_internal/req/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/req/__pycache__/constructors.cpython-312.pyc,, +pip/_internal/req/__pycache__/req_file.cpython-312.pyc,, +pip/_internal/req/__pycache__/req_install.cpython-312.pyc,, +pip/_internal/req/__pycache__/req_set.cpython-312.pyc,, +pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc,, +pip/_internal/req/constructors.py,sha256=qXNZtUqhsXpHxkRaIQhp20_Kz6I88MDKM8SQR9fckIc,18424 +pip/_internal/req/req_file.py,sha256=hnC9Oz-trqGQpuDnCVWqwpJkAvtbCsk7-5k0EWVQhlQ,17687 +pip/_internal/req/req_install.py,sha256=yhT98NGDoAEk03jznTJnYCznzhiMEEA2ocgsUG_dcNU,35788 +pip/_internal/req/req_set.py,sha256=j3esG0s6SzoVReX9rWn4rpYNtyET_fwxbwJPRimvRxo,2858 +pip/_internal/req/req_uninstall.py,sha256=qzDIxJo-OETWqGais7tSMCDcWbATYABT-Tid3ityF0s,23853 +pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/resolution/__pycache__/base.cpython-312.pyc,, +pip/_internal/resolution/base.py,sha256=qlmh325SBVfvG6Me9gc5Nsh5sdwHBwzHBq6aEXtKsLA,583 +pip/_internal/resolution/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc,, +pip/_internal/resolution/legacy/resolver.py,sha256=3HZiJBRd1FTN6jQpI4qRO8-TbLYeIbUTS6PFvXnXs2w,24068 +pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc,, +pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc,, +pip/_internal/resolution/resolvelib/base.py,sha256=DCf669FsqyQY5uqXeePDHQY1e4QO-pBzWH8O0s9-K94,5023 +pip/_internal/resolution/resolvelib/candidates.py,sha256=07CBc85ya3J19XqdvUsLQwtVIxiTYq9km9hbTRh0jb0,19823 +pip/_internal/resolution/resolvelib/factory.py,sha256=mTTq_nG1F9Eq3VnlYPH6Ap-mydcS-mxC5y5L-CLLp80,32459 +pip/_internal/resolution/resolvelib/found_candidates.py,sha256=9hrTyQqFvl9I7Tji79F1AxHv39Qh1rkJ_7deSHSMfQc,6383 +pip/_internal/resolution/resolvelib/provider.py,sha256=bcsFnYvlmtB80cwVdW1fIwgol8ZNr1f1VHyRTkz47SM,9935 +pip/_internal/resolution/resolvelib/reporter.py,sha256=00JtoXEkTlw0-rl_sl54d71avwOsJHt9GGHcrj5Sza0,3168 +pip/_internal/resolution/resolvelib/requirements.py,sha256=7JG4Z72e5Yk4vU0S5ulGvbqTy4FMQGYhY5zQhX9zTtY,8065 +pip/_internal/resolution/resolvelib/resolver.py,sha256=nLJOsVMEVi2gQUVJoUFKMZAeu2f7GRMjGMvNSWyz0Bc,12592 +pip/_internal/self_outdated_check.py,sha256=pkjQixuWyQ1vrVxZAaYD6SSHgXuFUnHZybXEWTkh0S0,8145 +pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/utils/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc,, +pip/_internal/utils/__pycache__/_log.cpython-312.pyc,, +pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc,, +pip/_internal/utils/__pycache__/compat.cpython-312.pyc,, +pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc,, +pip/_internal/utils/__pycache__/datetime.cpython-312.pyc,, +pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc,, +pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc,, +pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc,, +pip/_internal/utils/__pycache__/encoding.cpython-312.pyc,, +pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc,, +pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc,, +pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc,, +pip/_internal/utils/__pycache__/glibc.cpython-312.pyc,, +pip/_internal/utils/__pycache__/hashes.cpython-312.pyc,, +pip/_internal/utils/__pycache__/logging.cpython-312.pyc,, +pip/_internal/utils/__pycache__/misc.cpython-312.pyc,, +pip/_internal/utils/__pycache__/packaging.cpython-312.pyc,, +pip/_internal/utils/__pycache__/retry.cpython-312.pyc,, +pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc,, +pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc,, +pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc,, +pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc,, +pip/_internal/utils/__pycache__/urls.cpython-312.pyc,, +pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc,, +pip/_internal/utils/__pycache__/wheel.cpython-312.pyc,, +pip/_internal/utils/_jaraco_text.py,sha256=M15uUPIh5NpP1tdUGBxRau6q1ZAEtI8-XyLEETscFfE,3350 +pip/_internal/utils/_log.py,sha256=-jHLOE_THaZz5BFcCnoSL9EYAtJ0nXem49s9of4jvKw,1015 +pip/_internal/utils/appdirs.py,sha256=swgcTKOm3daLeXTW6v5BUS2Ti2RvEnGRQYH_yDXklAo,1665 +pip/_internal/utils/compat.py,sha256=ckkFveBiYQjRWjkNsajt_oWPS57tJvE8XxoC4OIYgCY,2399 +pip/_internal/utils/compatibility_tags.py,sha256=ydin8QG8BHqYRsPY4OL6cmb44CbqXl1T0xxS97VhHkk,5377 +pip/_internal/utils/datetime.py,sha256=m21Y3wAtQc-ji6Veb6k_M5g6A0ZyFI4egchTdnwh-pQ,242 +pip/_internal/utils/deprecation.py,sha256=k7Qg_UBAaaTdyq82YVARA6D7RmcGTXGv7fnfcgigj4Q,3707 +pip/_internal/utils/direct_url_helpers.py,sha256=r2MRtkVDACv9AGqYODBUC9CjwgtsUU1s68hmgfCJMtA,3196 +pip/_internal/utils/egg_link.py,sha256=0FePZoUYKv4RGQ2t6x7w5Z427wbA_Uo3WZnAkrgsuqo,2463 +pip/_internal/utils/encoding.py,sha256=qqsXDtiwMIjXMEiIVSaOjwH5YmirCaK-dIzb6-XJsL0,1169 +pip/_internal/utils/entrypoints.py,sha256=YlhLTRl2oHBAuqhc-zmL7USS67TPWVHImjeAQHreZTQ,3064 +pip/_internal/utils/filesystem.py,sha256=ajvA-q4ocliW9kPp8Yquh-4vssXbu-UKbo5FV9V4X64,4950 +pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716 +pip/_internal/utils/glibc.py,sha256=vUkWq_1pJuzcYNcGKLlQmABoUiisK8noYY1yc8Wq4w4,3734 +pip/_internal/utils/hashes.py,sha256=XGGLL0AG8-RhWnyz87xF6MFZ--BKadHU35D47eApCKI,4972 +pip/_internal/utils/logging.py,sha256=7BFKB1uFjdxD5crM-GtwA5T2qjbQ2LPD-gJDuJeDNTg,11606 +pip/_internal/utils/misc.py,sha256=HR_V97vNTHNzwq01JrnTZtsLLkWAOJ9_EeYfHJZSgDY,23745 +pip/_internal/utils/packaging.py,sha256=iI3LH43lVNR4hWBOqF6lFsZq4aycb2j0UcHlmDmcqUg,2109 +pip/_internal/utils/retry.py,sha256=mhFbykXjhTnZfgzeuy-vl9c8nECnYn_CMtwNJX2tYzQ,1392 +pip/_internal/utils/setuptools_build.py,sha256=ouXpud-jeS8xPyTPsXJ-m34NPvK5os45otAzdSV_IJE,4435 +pip/_internal/utils/subprocess.py,sha256=EsvqSRiSMHF98T8Txmu6NLU3U--MpTTQjtNgKP0P--M,8988 +pip/_internal/utils/temp_dir.py,sha256=5qOXe8M4JeY6vaFQM867d5zkp1bSwMZ-KT5jymmP0Zg,9310 +pip/_internal/utils/unpacking.py,sha256=eyDkSsk4nW8ZfiSjNzJduCznpHyaGHVv3ak_LMGsiEM,11951 +pip/_internal/utils/urls.py,sha256=qceSOZb5lbNDrHNsv7_S4L4Ytszja5NwPKUMnZHbYnM,1599 +pip/_internal/utils/virtualenv.py,sha256=S6f7csYorRpiD6cvn3jISZYc3I8PJC43H5iMFpRAEDU,3456 +pip/_internal/utils/wheel.py,sha256=b442jkydFHjXzDy6cMR7MpzWBJ1Q82hR5F33cmcHV3g,4494 +pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596 +pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc,, +pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc,, +pip/_internal/vcs/__pycache__/git.cpython-312.pyc,, +pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc,, +pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc,, +pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc,, +pip/_internal/vcs/bazaar.py,sha256=EKStcQaKpNu0NK4p5Q10Oc4xb3DUxFw024XrJy40bFQ,3528 +pip/_internal/vcs/git.py,sha256=3tpc9LQA_J4IVW5r5NvWaaSeDzcmJOrSFZN0J8vIKfU,18177 +pip/_internal/vcs/mercurial.py,sha256=oULOhzJ2Uie-06d1omkL-_Gc6meGaUkyogvqG9ZCyPs,5249 +pip/_internal/vcs/subversion.py,sha256=ddTugHBqHzV3ebKlU5QXHPN4gUqlyXbOx8q8NgXKvs8,11735 +pip/_internal/vcs/versioncontrol.py,sha256=cvf_-hnTAjQLXJ3d17FMNhQfcO1AcKWUF10tfrYyP-c,22440 +pip/_internal/wheel_builder.py,sha256=DL3A8LKeRj_ACp11WS5wSgASgPFqeyAeXJKdXfmaWXU,11799 +pip/_vendor/__init__.py,sha256=JYuAXvClhInxIrA2FTp5p-uuWVL7WV6-vEpTs46-Qh4,4873 +pip/_vendor/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc,, +pip/_vendor/cachecontrol/__init__.py,sha256=GiYoagwPEiJ_xR_lbwWGaoCiPtF_rz4isjfjdDAgHU4,676 +pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc,, +pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc,, +pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc,, +pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc,, +pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc,, +pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc,, +pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc,, +pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc,, +pip/_vendor/cachecontrol/_cmd.py,sha256=iist2EpzJvDVIhMAxXq8iFnTBsiZAd6iplxfmNboNyk,1737 +pip/_vendor/cachecontrol/adapter.py,sha256=fByO_Pd_EOemjWbuocvBWdN85xT0q_TBm2lxS6vD4fk,6355 +pip/_vendor/cachecontrol/cache.py,sha256=OTQj72tUf8C1uEgczdl3Gc8vkldSzsTITKtDGKMx4z8,1952 +pip/_vendor/cachecontrol/caches/__init__.py,sha256=dtrrroK5BnADR1GWjCZ19aZ0tFsMfvFBtLQQU1sp_ag,303 +pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc,, +pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc,, +pip/_vendor/cachecontrol/caches/file_cache.py,sha256=9AlmmTJc6cslb6k5z_6q0sGPHVrMj8zv-uWy-simmfE,5406 +pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=9rmqwtYu_ljVkW6_oLqbC7EaX_a8YT_yLuna-eS0dgo,1386 +pip/_vendor/cachecontrol/controller.py,sha256=o-ejGJlBmpKK8QQLyTPJj0t7siU8XVHXuV8MCybCxQ8,18575 +pip/_vendor/cachecontrol/filewrapper.py,sha256=STttGmIPBvZzt2b51dUOwoWX5crcMCpKZOisM3f5BNc,4292 +pip/_vendor/cachecontrol/heuristics.py,sha256=IYe4QmHERWsMvtxNrp920WeaIsaTTyqLB14DSheSbtY,4834 +pip/_vendor/cachecontrol/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/cachecontrol/serialize.py,sha256=HQd2IllQ05HzPkVLMXTF2uX5mjEQjDBkxCqUJUODpZk,5163 +pip/_vendor/cachecontrol/wrapper.py,sha256=hsGc7g8QGQTT-4f8tgz3AM5qwScg6FO0BSdLSRdEvpU,1417 +pip/_vendor/certifi/__init__.py,sha256=LHXz7E80YJYBzCBv6ZyidQ5-ciYSkSebpY2E5OM0l7o,94 +pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255 +pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc,, +pip/_vendor/certifi/__pycache__/core.cpython-312.pyc,, +pip/_vendor/certifi/cacert.pem,sha256=SIupYGAr8HzGP073rsEIaS_sQYIPwzKKjj894DgUmu4,291528 +pip/_vendor/certifi/core.py,sha256=2SRT5rIcQChFDbe37BQa-kULxAgJ8qN6l1jfqTp4HIs,4486 +pip/_vendor/certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/distlib/__init__.py,sha256=hJKF7FHoqbmGckncDuEINWo_OYkDNiHODtYXSMcvjcc,625 +pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/database.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/index.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/util.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/version.cpython-312.pyc,, +pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc,, +pip/_vendor/distlib/compat.py,sha256=Un-uIBvy02w-D267OG4VEhuddqWgKj9nNkxVltAb75w,41487 +pip/_vendor/distlib/database.py,sha256=0V9Qvs0Vrxa2F_-hLWitIyVyRifJ0pCxyOI-kEOBwsA,51965 +pip/_vendor/distlib/index.py,sha256=lTbw268rRhj8dw1sib3VZ_0EhSGgoJO3FKJzSFMOaeA,20797 +pip/_vendor/distlib/locators.py,sha256=o1r_M86_bRLafSpetmyfX8KRtFu-_Q58abvQrnOSnbA,51767 +pip/_vendor/distlib/manifest.py,sha256=3qfmAmVwxRqU1o23AlfXrQGZzh6g_GGzTAP_Hb9C5zQ,14168 +pip/_vendor/distlib/markers.py,sha256=n3DfOh1yvZ_8EW7atMyoYeZFXjYla0Nz0itQlojCd0A,5268 +pip/_vendor/distlib/metadata.py,sha256=pB9WZ9mBfmQxc9OVIldLS5CjOoQRvKAvUwwQyKwKQtQ,39693 +pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820 +pip/_vendor/distlib/scripts.py,sha256=8_gP9J7_tlNRicnWmPX4ZiDlP5wTwJKDeeg-8_qXUZU,18780 +pip/_vendor/distlib/t32.exe,sha256=a0GV5kCoWsMutvliiCKmIgV98eRZ33wXoS-XrqvJQVs,97792 +pip/_vendor/distlib/t64-arm.exe,sha256=68TAa32V504xVBnufojh0PcenpR3U4wAqTqf-MZqbPw,182784 +pip/_vendor/distlib/t64.exe,sha256=gaYY8hy4fbkHYTTnA4i26ct8IQZzkBG2pRdy0iyuBrc,108032 +pip/_vendor/distlib/util.py,sha256=XSznxEi_i3T20UJuaVc0qXHz5ksGUCW1khYlBprN_QE,67530 +pip/_vendor/distlib/version.py,sha256=9pXkduchve_aN7JG6iL9VTYV_kqNSGoc2Dwl8JuySnQ,23747 +pip/_vendor/distlib/w32.exe,sha256=R4csx3-OGM9kL4aPIzQKRo5TfmRSHZo6QWyLhDhNBks,91648 +pip/_vendor/distlib/w64-arm.exe,sha256=xdyYhKj0WDcVUOCb05blQYvzdYIKMbmJn2SZvzkcey4,168448 +pip/_vendor/distlib/w64.exe,sha256=ejGf-rojoBfXseGLpya6bFTFPWRG21X5KvU8J5iU-K0,101888 +pip/_vendor/distlib/wheel.py,sha256=FVQCve8u-L0QYk5-YTZc7s4WmNQdvjRWTK08KXzZVX4,43958 +pip/_vendor/distro/__init__.py,sha256=2fHjF-SfgPvjyNZ1iHh_wjqWdR_Yo5ODHwZC0jLBPhc,981 +pip/_vendor/distro/__main__.py,sha256=bu9d3TifoKciZFcqRBuygV3GSuThnVD_m2IK4cz96Vs,64 +pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc,, +pip/_vendor/distro/__pycache__/distro.cpython-312.pyc,, +pip/_vendor/distro/distro.py,sha256=XqbefacAhDT4zr_trnbA15eY8vdK4GTghgmvUGrEM_4,49430 +pip/_vendor/distro/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849 +pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/idna/__pycache__/codec.cpython-312.pyc,, +pip/_vendor/idna/__pycache__/compat.cpython-312.pyc,, +pip/_vendor/idna/__pycache__/core.cpython-312.pyc,, +pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc,, +pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc,, +pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc,, +pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc,, +pip/_vendor/idna/codec.py,sha256=PS6m-XmdST7Wj7J7ulRMakPDt5EBJyYrT3CPtjh-7t4,3426 +pip/_vendor/idna/compat.py,sha256=0_sOEUMT4CVw9doD3vyRhX80X19PwqFoUBs7gWsFME4,321 +pip/_vendor/idna/core.py,sha256=lyhpoe2vulEaB_65xhXmoKgO-xUqFDvcwxu5hpNNO4E,12663 +pip/_vendor/idna/idnadata.py,sha256=dqRwytzkjIHMBa2R1lYvHDwACenZPt8eGVu1Y8UBE-E,78320 +pip/_vendor/idna/intranges.py,sha256=YBr4fRYuWH7kTKS2tXlFjM24ZF1Pdvcir-aywniInqg,1881 +pip/_vendor/idna/package_data.py,sha256=Tkt0KnIeyIlnHddOaz9WSkkislNgokJAuE-p5GorMqo,21 +pip/_vendor/idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/idna/uts46data.py,sha256=1KuksWqLuccPXm2uyRVkhfiFLNIhM_H2m4azCcnOqEU,206503 +pip/_vendor/msgpack/__init__.py,sha256=gsMP7JTECZNUSjvOyIbdhNOkpB9Z8BcGwabVGY2UcdQ,1077 +pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc,, +pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc,, +pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc,, +pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081 +pip/_vendor/msgpack/ext.py,sha256=fKp00BqDLjUtZnPd70Llr138zk8JsCuSpJkkZ5S4dt8,5629 +pip/_vendor/msgpack/fallback.py,sha256=wdUWJkWX2gzfRW9BBCTOuIE1Wvrf5PtBtR8ZtY7G_EE,33175 +pip/_vendor/packaging/__init__.py,sha256=dtw2bNmWCQ9WnMoK3bk_elL1svSlikXtLpZhCFIB9SE,496 +pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/_elffile.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/_parser.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/_tokenizer.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/metadata.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc,, +pip/_vendor/packaging/__pycache__/version.cpython-312.pyc,, +pip/_vendor/packaging/_elffile.py,sha256=_LcJW4YNKywYsl4169B2ukKRqwxjxst_8H0FRVQKlz8,3282 +pip/_vendor/packaging/_manylinux.py,sha256=Xo4V0PZz8sbuVCbTni0t1CR0AHeir_7ib4lTmV8scD4,9586 +pip/_vendor/packaging/_musllinux.py,sha256=p9ZqNYiOItGee8KcZFeHF_YcdhVwGHdK6r-8lgixvGQ,2694 +pip/_vendor/packaging/_parser.py,sha256=s_TvTvDNK0NrM2QB3VKThdWFM4Nc0P6JnkObkl3MjpM,10236 +pip/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431 +pip/_vendor/packaging/_tokenizer.py,sha256=J6v5H7Jzvb-g81xp_2QACKwO7LxHQA6ikryMU7zXwN8,5273 +pip/_vendor/packaging/markers.py,sha256=dWKSqn5Sp-jDmOG-W3GfLHKjwhf1IsznbT71VlBoB5M,10671 +pip/_vendor/packaging/metadata.py,sha256=KINuSkJ12u-SyoKNTy_pHNGAfMUtxNvZ53qA1zAKcKI,32349 +pip/_vendor/packaging/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/packaging/requirements.py,sha256=gYyRSAdbrIyKDY66ugIDUQjRMvxkH2ALioTmX3tnL6o,2947 +pip/_vendor/packaging/specifiers.py,sha256=HfGgfNJRvrzC759gnnoojHyiWs_DYmcw5PEh5jHH-YE,39738 +pip/_vendor/packaging/tags.py,sha256=y8EbheOu9WS7s-MebaXMcHMF-jzsA_C1Lz5XRTiSy4w,18883 +pip/_vendor/packaging/utils.py,sha256=NAdYUwnlAOpkat_RthavX8a07YuVxgGL_vwrx73GSDM,5287 +pip/_vendor/packaging/version.py,sha256=wE4sSVlF-d1H6HFC1vszEe35CwTig_fh4HHIFg95hFE,16210 +pip/_vendor/pkg_resources/__init__.py,sha256=jrhDRbOubP74QuPXxd7U7Po42PH2l-LZ2XfcO7llpZ4,124463 +pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/platformdirs/__init__.py,sha256=FTA6LGNm40GwNZt3gG3uLAacWvf2E_2HTmH0rAALGR8,22285 +pip/_vendor/platformdirs/__main__.py,sha256=jBJ8zb7Mpx5ebcqF83xrpO94MaeCpNGHVf9cvDN2JLg,1505 +pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc,, +pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc,, +pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc,, +pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc,, +pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc,, +pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc,, +pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc,, +pip/_vendor/platformdirs/android.py,sha256=xZXY9Jd46WOsxT2U6-5HsNtDZ-IQqxcEUrBLl3hYk4o,9016 +pip/_vendor/platformdirs/api.py,sha256=QBYdUac2eC521ek_y53uD1Dcq-lJX8IgSRVd4InC6uc,8996 +pip/_vendor/platformdirs/macos.py,sha256=wftsbsvq6nZ0WORXSiCrZNkRHz_WKuktl0a6mC7MFkI,5580 +pip/_vendor/platformdirs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/platformdirs/unix.py,sha256=Cci9Wqt35dAMsg6HT9nRGHSBW5obb0pR3AE1JJnsCXg,10643 +pip/_vendor/platformdirs/version.py,sha256=r7F76tZRjgQKzrpx_I0_ZMQOMU-PS7eGnHD7zEK3KB0,411 +pip/_vendor/platformdirs/windows.py,sha256=IFpiohUBwxPtCzlyKwNtxyW4Jk8haa6W8o59mfrDXVo,10125 +pip/_vendor/pygments/__init__.py,sha256=7N1oiaWulw_nCsTY4EEixYLz15pWY5u4uPAFFi-ielU,2983 +pip/_vendor/pygments/__main__.py,sha256=isIhBxLg65nLlXukG4VkMuPfNdd7gFzTZ_R_z3Q8diY,353 +pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/console.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/style.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/token.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc,, +pip/_vendor/pygments/__pycache__/util.cpython-312.pyc,, +pip/_vendor/pygments/cmdline.py,sha256=LIVzmAunlk9sRJJp54O4KRy9GDIN4Wu13v9p9QzfGPM,23656 +pip/_vendor/pygments/console.py,sha256=yhP9UsLAVmWKVQf2446JJewkA7AiXeeTf4Ieg3Oi2fU,1718 +pip/_vendor/pygments/filter.py,sha256=_ADNPCskD8_GmodHi6_LoVgPU3Zh336aBCT5cOeTMs0,1910 +pip/_vendor/pygments/filters/__init__.py,sha256=RdedK2KWKXlKwR7cvkfr3NUj9YiZQgMgilRMFUg2jPA,40392 +pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/pygments/formatter.py,sha256=jDWBTndlBH2Z5IYZFVDnP0qn1CaTQjTWt7iAGtCnJEg,4390 +pip/_vendor/pygments/formatters/__init__.py,sha256=8No-NUs8rBTSSBJIv4hSEQt2M0cFB4hwAT0snVc2QGE,5385 +pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc,, +pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc,, +pip/_vendor/pygments/formatters/_mapping.py,sha256=1Cw37FuQlNacnxRKmtlPX4nyLoX9_ttko5ZwscNUZZ4,4176 +pip/_vendor/pygments/formatters/bbcode.py,sha256=3JQLI45tcrQ_kRUMjuab6C7Hb0XUsbVWqqbSn9cMjkI,3320 +pip/_vendor/pygments/formatters/groff.py,sha256=M39k0PaSSZRnxWjqBSVPkF0mu1-Vr7bm6RsFvs-CNN4,5106 +pip/_vendor/pygments/formatters/html.py,sha256=SE2jc3YCqbMS3rZW9EAmDlAUhdVxJ52gA4dileEvCGU,35669 +pip/_vendor/pygments/formatters/img.py,sha256=MwA4xWPLOwh6j7Yc6oHzjuqSPt0M1fh5r-5BTIIUfsU,23287 +pip/_vendor/pygments/formatters/irc.py,sha256=dp1Z0l_ObJ5NFh9MhqLGg5ptG5hgJqedT2Vkutt9v0M,4981 +pip/_vendor/pygments/formatters/latex.py,sha256=XMmhOCqUKDBQtG5mGJNAFYxApqaC5puo5cMmPfK3944,19306 +pip/_vendor/pygments/formatters/other.py,sha256=56PMJOliin-rAUdnRM0i1wsV1GdUPd_dvQq0_UPfF9c,5034 +pip/_vendor/pygments/formatters/pangomarkup.py,sha256=y16U00aVYYEFpeCfGXlYBSMacG425CbfoG8oKbKegIg,2218 +pip/_vendor/pygments/formatters/rtf.py,sha256=ZT90dmcKyJboIB0mArhL7IhE467GXRN0G7QAUgG03To,11957 +pip/_vendor/pygments/formatters/svg.py,sha256=KKsiophPupHuxm0So-MsbQEWOT54IAiSF7hZPmxtKXE,7174 +pip/_vendor/pygments/formatters/terminal.py,sha256=AojNG4MlKq2L6IsC_VnXHu4AbHCBn9Otog6u45XvxeI,4674 +pip/_vendor/pygments/formatters/terminal256.py,sha256=kGkNUVo3FpwjytIDS0if79EuUoroAprcWt3igrcIqT0,11753 +pip/_vendor/pygments/lexer.py,sha256=TYHDt___gNW4axTl2zvPZff-VQi8fPaIh5OKRcVSjUM,35349 +pip/_vendor/pygments/lexers/__init__.py,sha256=pIlxyQJuu_syh9lE080cq8ceVbEVcKp0osAFU5fawJU,12115 +pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc,, +pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc,, +pip/_vendor/pygments/lexers/_mapping.py,sha256=61-h3zr103m01OS5BUq_AfUiL9YI06Ves9ipQ7k4vr4,76097 +pip/_vendor/pygments/lexers/python.py,sha256=2J_YJrPTr_A6fJY_qKiKv0GpgPwHMrlMSeo59qN3fe4,53687 +pip/_vendor/pygments/modeline.py,sha256=gtRYZBS-CKOCDXHhGZqApboHBaZwGH8gznN3O6nuxj4,1005 +pip/_vendor/pygments/plugin.py,sha256=ioeJ3QeoJ-UQhZpY9JL7vbxsTVuwwM7BCu-Jb8nN0AU,1891 +pip/_vendor/pygments/regexopt.py,sha256=Hky4EB13rIXEHQUNkwmCrYqtIlnXDehNR3MztafZ43w,3072 +pip/_vendor/pygments/scanner.py,sha256=NDy3ofK_fHRFK4hIDvxpamG871aewqcsIb6sgTi7Fhk,3092 +pip/_vendor/pygments/sphinxext.py,sha256=iOptJBcqOGPwMEJ2p70PvwpZPIGdvdZ8dxvq6kzxDgA,7981 +pip/_vendor/pygments/style.py,sha256=rSCZWFpg1_DwFMXDU0nEVmAcBHpuQGf9RxvOPPQvKLQ,6420 +pip/_vendor/pygments/styles/__init__.py,sha256=qUk6_1z5KmT8EdJFZYgESmG6P_HJF_2vVrDD7HSCGYY,2042 +pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-312.pyc,, +pip/_vendor/pygments/styles/_mapping.py,sha256=6lovFUE29tz6EsV3XYY4hgozJ7q1JL7cfO3UOlgnS8w,3312 +pip/_vendor/pygments/token.py,sha256=qZwT7LSPy5YBY3JgDjut642CCy7JdQzAfmqD9NmT5j0,6226 +pip/_vendor/pygments/unistring.py,sha256=p5c1i-HhoIhWemy9CUsaN9o39oomYHNxXll0Xfw6tEA,63208 +pip/_vendor/pygments/util.py,sha256=2tj2nS1X9_OpcuSjf8dOET2bDVZhs8cEKd_uT6-Fgg8,10031 +pip/_vendor/pyproject_hooks/__init__.py,sha256=kCehmy0UaBa9oVMD7ZIZrnswfnP3LXZ5lvnNJAL5JBM,491 +pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc,, +pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc,, +pip/_vendor/pyproject_hooks/_compat.py,sha256=by6evrYnqkisiM-MQcvOKs5bgDMzlOSgZqRHNqf04zE,138 +pip/_vendor/pyproject_hooks/_impl.py,sha256=61GJxzQip0IInhuO69ZI5GbNQ82XEDUB_1Gg5_KtUoc,11920 +pip/_vendor/pyproject_hooks/_in_process/__init__.py,sha256=9gQATptbFkelkIy0OfWFEACzqxXJMQDWCH9rBOAZVwQ,546 +pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc,, +pip/_vendor/pyproject_hooks/_in_process/_in_process.py,sha256=m2b34c917IW5o-Q_6TYIHlsK9lSUlNiyrITTUH_zwew,10927 +pip/_vendor/requests/__init__.py,sha256=HlB_HzhrzGtfD_aaYUwUh1zWXLZ75_YCLyit75d0Vz8,5057 +pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/api.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/auth.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/certs.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/compat.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/help.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/models.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/packages.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/structures.cpython-312.pyc,, +pip/_vendor/requests/__pycache__/utils.cpython-312.pyc,, +pip/_vendor/requests/__version__.py,sha256=FVfglgZmNQnmYPXpOohDU58F5EUb_-VnSTaAesS187g,435 +pip/_vendor/requests/_internal_utils.py,sha256=nMQymr4hs32TqVo5AbCrmcJEhvPUh7xXlluyqwslLiQ,1495 +pip/_vendor/requests/adapters.py,sha256=J7VeVxKBvawbtlX2DERVo05J9BXTcWYLMHNd1Baa-bk,27607 +pip/_vendor/requests/api.py,sha256=_Zb9Oa7tzVIizTKwFrPjDEY9ejtm_OnSRERnADxGsQs,6449 +pip/_vendor/requests/auth.py,sha256=kF75tqnLctZ9Mf_hm9TZIj4cQWnN5uxRz8oWsx5wmR0,10186 +pip/_vendor/requests/certs.py,sha256=PVPooB0jP5hkZEULSCwC074532UFbR2Ptgu0I5zwmCs,575 +pip/_vendor/requests/compat.py,sha256=Mo9f9xZpefod8Zm-n9_StJcVTmwSukXR2p3IQyyVXvU,1485 +pip/_vendor/requests/cookies.py,sha256=bNi-iqEj4NPZ00-ob-rHvzkvObzN3lEpgw3g6paS3Xw,18590 +pip/_vendor/requests/exceptions.py,sha256=D1wqzYWne1mS2rU43tP9CeN1G7QAy7eqL9o1god6Ejw,4272 +pip/_vendor/requests/help.py,sha256=hRKaf9u0G7fdwrqMHtF3oG16RKktRf6KiwtSq2Fo1_0,3813 +pip/_vendor/requests/hooks.py,sha256=CiuysiHA39V5UfcCBXFIx83IrDpuwfN9RcTUgv28ftQ,733 +pip/_vendor/requests/models.py,sha256=x4K4CmH-lC0l2Kb-iPfMN4dRXxHEcbOaEWBL_i09AwI,35483 +pip/_vendor/requests/packages.py,sha256=_ZQDCJTJ8SP3kVWunSqBsRZNPzj2c1WFVqbdr08pz3U,1057 +pip/_vendor/requests/sessions.py,sha256=ykTI8UWGSltOfH07HKollH7kTBGw4WhiBVaQGmckTw4,30495 +pip/_vendor/requests/status_codes.py,sha256=iJUAeA25baTdw-6PfD0eF4qhpINDJRJI-yaMqxs4LEI,4322 +pip/_vendor/requests/structures.py,sha256=-IbmhVz06S-5aPSZuUthZ6-6D9XOjRuTXHOabY041XM,2912 +pip/_vendor/requests/utils.py,sha256=L79vnFbzJ3SFLKtJwpoWe41Tozi3RlZv94pY1TFIyow,33631 +pip/_vendor/resolvelib/__init__.py,sha256=h509TdEcpb5-44JonaU3ex2TM15GVBLjM9CNCPwnTTs,537 +pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc,, +pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc,, +pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc,, +pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc,, +pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc,, +pip/_vendor/resolvelib/compat/collections_abc.py,sha256=uy8xUZ-NDEw916tugUXm8HgwCGiMO0f-RcdnpkfXfOs,156 +pip/_vendor/resolvelib/providers.py,sha256=fuuvVrCetu5gsxPB43ERyjfO8aReS3rFQHpDgiItbs4,5871 +pip/_vendor/resolvelib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/resolvelib/reporters.py,sha256=TSbRmWzTc26w0ggsV1bxVpeWDB8QNIre6twYl7GIZBE,1601 +pip/_vendor/resolvelib/resolvers.py,sha256=G8rsLZSq64g5VmIq-lB7UcIJ1gjAxIQJmTF4REZleQ0,20511 +pip/_vendor/resolvelib/structs.py,sha256=0_1_XO8z_CLhegP3Vpf9VJ3zJcfLm0NOHRM-i0Ykz3o,4963 +pip/_vendor/rich/__init__.py,sha256=dRxjIL-SbFVY0q3IjSMrfgBTHrm1LZDgLOygVBwiYZc,6090 +pip/_vendor/rich/__main__.py,sha256=eO7Cq8JnrgG8zVoeImiAs92q3hXNMIfp0w5lMsO7Q2Y,8477 +pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/abc.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/align.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/bar.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/box.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/cells.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/color.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/columns.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/console.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/containers.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/control.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/errors.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/json.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/layout.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/live.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/logging.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/markup.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/measure.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/padding.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/pager.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/palette.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/panel.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/progress.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/region.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/repr.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/rule.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/scope.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/screen.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/segment.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/status.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/style.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/styled.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/table.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/text.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/theme.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/themes.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc,, +pip/_vendor/rich/__pycache__/tree.cpython-312.pyc,, +pip/_vendor/rich/_cell_widths.py,sha256=fbmeyetEdHjzE_Vx2l1uK7tnPOhMs2X1lJfO3vsKDpA,10209 +pip/_vendor/rich/_emoji_codes.py,sha256=hu1VL9nbVdppJrVoijVshRlcRRe_v3dju3Mmd2sKZdY,140235 +pip/_vendor/rich/_emoji_replace.py,sha256=n-kcetsEUx2ZUmhQrfeMNc-teeGhpuSQ5F8VPBsyvDo,1064 +pip/_vendor/rich/_export_format.py,sha256=RI08pSrm5tBSzPMvnbTqbD9WIalaOoN5d4M1RTmLq1Y,2128 +pip/_vendor/rich/_extension.py,sha256=Xt47QacCKwYruzjDi-gOBq724JReDj9Cm9xUi5fr-34,265 +pip/_vendor/rich/_fileno.py,sha256=HWZxP5C2ajMbHryvAQZseflVfQoGzsKOHzKGsLD8ynQ,799 +pip/_vendor/rich/_inspect.py,sha256=oZJGw31e64dwXSCmrDnvZbwVb1ZKhWfU8wI3VWohjJk,9695 +pip/_vendor/rich/_log_render.py,sha256=1ByI0PA1ZpxZY3CGJOK54hjlq4X-Bz_boIjIqCd8Kns,3225 +pip/_vendor/rich/_loop.py,sha256=hV_6CLdoPm0va22Wpw4zKqM0RYsz3TZxXj0PoS-9eDQ,1236 +pip/_vendor/rich/_null_file.py,sha256=tGSXk_v-IZmbj1GAzHit8A3kYIQMiCpVsCFfsC-_KJ4,1387 +pip/_vendor/rich/_palettes.py,sha256=cdev1JQKZ0JvlguV9ipHgznTdnvlIzUFDBb0It2PzjI,7063 +pip/_vendor/rich/_pick.py,sha256=evDt8QN4lF5CiwrUIXlOJCntitBCOsI3ZLPEIAVRLJU,423 +pip/_vendor/rich/_ratio.py,sha256=Zt58apszI6hAAcXPpgdWKpu3c31UBWebOeR4mbyptvU,5471 +pip/_vendor/rich/_spinners.py,sha256=U2r1_g_1zSjsjiUdAESc2iAMc3i4ri_S8PYP6kQ5z1I,19919 +pip/_vendor/rich/_stack.py,sha256=-C8OK7rxn3sIUdVwxZBBpeHhIzX0eI-VM3MemYfaXm0,351 +pip/_vendor/rich/_timer.py,sha256=zelxbT6oPFZnNrwWPpc1ktUeAT-Vc4fuFcRZLQGLtMI,417 +pip/_vendor/rich/_win32_console.py,sha256=P0vxI2fcndym1UU1S37XAzQzQnkyY7YqAKmxm24_gug,22820 +pip/_vendor/rich/_windows.py,sha256=aBwaD_S56SbgopIvayVmpk0Y28uwY2C5Bab1wl3Bp-I,1925 +pip/_vendor/rich/_windows_renderer.py,sha256=t74ZL3xuDCP3nmTp9pH1L5LiI2cakJuQRQleHCJerlk,2783 +pip/_vendor/rich/_wrap.py,sha256=FlSsom5EX0LVkA3KWy34yHnCfLtqX-ZIepXKh-70rpc,3404 +pip/_vendor/rich/abc.py,sha256=ON-E-ZqSSheZ88VrKX2M3PXpFbGEUUZPMa_Af0l-4f0,890 +pip/_vendor/rich/align.py,sha256=sCUkisXkQfoq-IQPyBELfJ8l7LihZJX3HbH8K7Cie-M,10368 +pip/_vendor/rich/ansi.py,sha256=iD6532QYqnBm6hADulKjrV8l8kFJ-9fEVooHJHH3hMg,6906 +pip/_vendor/rich/bar.py,sha256=ldbVHOzKJOnflVNuv1xS7g6dLX2E3wMnXkdPbpzJTcs,3263 +pip/_vendor/rich/box.py,sha256=nr5fYIUghB_iUCEq6y0Z3LlCT8gFPDrzN9u2kn7tJl4,10831 +pip/_vendor/rich/cells.py,sha256=aMmGK4BjXhgE6_JF1ZEGmW3O7mKkE8g84vUnj4Et4To,4780 +pip/_vendor/rich/color.py,sha256=bCRATVdRe5IClJ6Hl62de2PKQ_U4i2MZ4ugjUEg7Tao,18223 +pip/_vendor/rich/color_triplet.py,sha256=3lhQkdJbvWPoLDO-AnYImAWmJvV5dlgYNCVZ97ORaN4,1054 +pip/_vendor/rich/columns.py,sha256=HUX0KcMm9dsKNi11fTbiM_h2iDtl8ySCaVcxlalEzq8,7131 +pip/_vendor/rich/console.py,sha256=deFZIubq2M9A2MCsKFAsFQlWDvcOMsGuUA07QkOaHIw,99173 +pip/_vendor/rich/constrain.py,sha256=1VIPuC8AgtKWrcncQrjBdYqA3JVWysu6jZo1rrh7c7Q,1288 +pip/_vendor/rich/containers.py,sha256=c_56TxcedGYqDepHBMTuZdUIijitAQgnox-Qde0Z1qo,5502 +pip/_vendor/rich/control.py,sha256=DSkHTUQLorfSERAKE_oTAEUFefZnZp4bQb4q8rHbKws,6630 +pip/_vendor/rich/default_styles.py,sha256=-Fe318kMVI_IwciK5POpThcO0-9DYJ67TZAN6DlmlmM,8082 +pip/_vendor/rich/diagnose.py,sha256=an6uouwhKPAlvQhYpNNpGq9EJysfMIOvvCbO3oSoR24,972 +pip/_vendor/rich/emoji.py,sha256=omTF9asaAnsM4yLY94eR_9dgRRSm1lHUszX20D1yYCQ,2501 +pip/_vendor/rich/errors.py,sha256=5pP3Kc5d4QJ_c0KFsxrfyhjiPVe7J1zOqSFbFAzcV-Y,642 +pip/_vendor/rich/file_proxy.py,sha256=Tl9THMDZ-Pk5Wm8sI1gGg_U5DhusmxD-FZ0fUbcU0W0,1683 +pip/_vendor/rich/filesize.py,sha256=9fTLAPCAwHmBXdRv7KZU194jSgNrRb6Wx7RIoBgqeKY,2508 +pip/_vendor/rich/highlighter.py,sha256=6ZAjUcNhBRajBCo9umFUclyi2xL0-55JL7S0vYGUJu4,9585 +pip/_vendor/rich/json.py,sha256=vVEoKdawoJRjAFayPwXkMBPLy7RSTs-f44wSQDR2nJ0,5031 +pip/_vendor/rich/jupyter.py,sha256=QyoKoE_8IdCbrtiSHp9TsTSNyTHY0FO5whE7jOTd9UE,3252 +pip/_vendor/rich/layout.py,sha256=ajkSFAtEVv9EFTcFs-w4uZfft7nEXhNzL7ZVdgrT5rI,14004 +pip/_vendor/rich/live.py,sha256=vUcnJV2LMSK3sQNaILbm0-_B8BpAeiHfcQMAMLfpRe0,14271 +pip/_vendor/rich/live_render.py,sha256=zJtB471jGziBtEwxc54x12wEQtH4BuQr1SA8v9kU82w,3666 +pip/_vendor/rich/logging.py,sha256=uB-cB-3Q4bmXDLLpbOWkmFviw-Fde39zyMV6tKJ2WHQ,11903 +pip/_vendor/rich/markup.py,sha256=3euGKP5s41NCQwaSjTnJxus5iZMHjxpIM0W6fCxra38,8451 +pip/_vendor/rich/measure.py,sha256=HmrIJX8sWRTHbgh8MxEay_83VkqNW_70s8aKP5ZcYI8,5305 +pip/_vendor/rich/padding.py,sha256=kTFGsdGe0os7tXLnHKpwTI90CXEvrceeZGCshmJy5zw,4970 +pip/_vendor/rich/pager.py,sha256=SO_ETBFKbg3n_AgOzXm41Sv36YxXAyI3_R-KOY2_uSc,828 +pip/_vendor/rich/palette.py,sha256=lInvR1ODDT2f3UZMfL1grq7dY_pDdKHw4bdUgOGaM4Y,3396 +pip/_vendor/rich/panel.py,sha256=2Fd1V7e1kHxlPFIusoHY5T7-Cs0RpkrihgVG9ZVqJ4g,10705 +pip/_vendor/rich/pretty.py,sha256=5oIHP_CGWnHEnD0zMdW5qfGC5kHqIKn7zH_eC4crULE,35848 +pip/_vendor/rich/progress.py,sha256=P02xi7T2Ua3qq17o83bkshe4c0v_45cg8VyTj6US6Vg,59715 +pip/_vendor/rich/progress_bar.py,sha256=L4jw8E6Qb_x-jhOrLVhkuMaPmiAhFIl8jHQbWFrKuR8,8164 +pip/_vendor/rich/prompt.py,sha256=wdOn2X8XTJKnLnlw6PoMY7xG4iUPp3ezt4O5gqvpV-E,11304 +pip/_vendor/rich/protocol.py,sha256=5hHHDDNHckdk8iWH5zEbi-zuIVSF5hbU2jIo47R7lTE,1391 +pip/_vendor/rich/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/rich/region.py,sha256=rNT9xZrVZTYIXZC0NYn41CJQwYNbR-KecPOxTgQvB8Y,166 +pip/_vendor/rich/repr.py,sha256=5MZJZmONgC6kud-QW-_m1okXwL2aR6u6y-pUcUCJz28,4431 +pip/_vendor/rich/rule.py,sha256=0fNaS_aERa3UMRc3T5WMpN_sumtDxfaor2y3of1ftBk,4602 +pip/_vendor/rich/scope.py,sha256=TMUU8qo17thyqQCPqjDLYpg_UU1k5qVd-WwiJvnJVas,2843 +pip/_vendor/rich/screen.py,sha256=YoeReESUhx74grqb0mSSb9lghhysWmFHYhsbMVQjXO8,1591 +pip/_vendor/rich/segment.py,sha256=hU1ueeXqI6YeFa08K9DAjlF2QLxcJY9pwZx7RsXavlk,24246 +pip/_vendor/rich/spinner.py,sha256=15koCmF0DQeD8-k28Lpt6X_zJQUlzEhgo_6A6uy47lc,4339 +pip/_vendor/rich/status.py,sha256=kkPph3YeAZBo-X-4wPp8gTqZyU466NLwZBA4PZTTewo,4424 +pip/_vendor/rich/style.py,sha256=3hiocH_4N8vwRm3-8yFWzM7tSwjjEven69XqWasSQwM,27073 +pip/_vendor/rich/styled.py,sha256=eZNnzGrI4ki_54pgY3Oj0T-x3lxdXTYh4_ryDB24wBU,1258 +pip/_vendor/rich/syntax.py,sha256=TnZDuOD4DeHFbkaVEAji1gf8qgAlMU9Boe_GksMGCkk,35475 +pip/_vendor/rich/table.py,sha256=nGEvAZHF4dy1vT9h9Gj9O5qhSQO3ODAxJv0RY1vnIB8,39680 +pip/_vendor/rich/terminal_theme.py,sha256=1j5-ufJfnvlAo5Qsi_ACZiXDmwMXzqgmFByObT9-yJY,3370 +pip/_vendor/rich/text.py,sha256=5rQ3zvNrg5UZKNLecbh7fiw9v3HeFulNVtRY_CBDjjE,47312 +pip/_vendor/rich/theme.py,sha256=belFJogzA0W0HysQabKaHOc3RWH2ko3fQAJhoN-AFdo,3777 +pip/_vendor/rich/themes.py,sha256=0xgTLozfabebYtcJtDdC5QkX5IVUEaviqDUJJh4YVFk,102 +pip/_vendor/rich/traceback.py,sha256=CUpxYLjQWIb6vQQ6O72X0hvDV6caryGqU6UweHgOyCY,29601 +pip/_vendor/rich/tree.py,sha256=meAOUU6sYnoBEOX2ILrPLY9k5bWrWNQKkaiEFvHinXM,9167 +pip/_vendor/tomli/__init__.py,sha256=JhUwV66DB1g4Hvt1UQCVMdfCu-IgAV8FXmvDU9onxd4,396 +pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc,, +pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc,, +pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc,, +pip/_vendor/tomli/_parser.py,sha256=g9-ENaALS-B8dokYpCuzUFalWlog7T-SIYMjLZSWrtM,22633 +pip/_vendor/tomli/_re.py,sha256=dbjg5ChZT23Ka9z9DHOXfdtSpPwUfdgMXnj8NOoly-w,2943 +pip/_vendor/tomli/_types.py,sha256=-GTG2VUqkpxwMqzmVO4F7ybKddIbAnuAHXfmWQcTi3Q,254 +pip/_vendor/tomli/py.typed,sha256=8PjyZ1aVoQpRVvt71muvuq5qE-jTFZkK-GLHkhdebmc,26 +pip/_vendor/truststore/__init__.py,sha256=M-PhuLMIF7gxKXk7tpo2MD7dk6nqG1ae8GXWdNXbMdQ,403 +pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc,, +pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc,, +pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc,, +pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc,, +pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc,, +pip/_vendor/truststore/_api.py,sha256=B9JIHipzBIS8pMP_J50-o1DHVZsvKZQUXTB0HQQ_UPg,10461 +pip/_vendor/truststore/_macos.py,sha256=VJ24avz5aEGYAs_kWvnGjMJtuIP4xJcYa459UQOQC3M,17608 +pip/_vendor/truststore/_openssl.py,sha256=LLUZ7ZGaio-i5dpKKjKCSeSufmn6T8pi9lDcFnvSyq0,2324 +pip/_vendor/truststore/_ssl_constants.py,sha256=NUD4fVKdSD02ri7-db0tnO0VqLP9aHuzmStcW7tAl08,1130 +pip/_vendor/truststore/_windows.py,sha256=eldNViHNHeY5r3fiBoz_JFGD37atXB9S5yaRoPKEGAA,17891 +pip/_vendor/truststore/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/typing_extensions.py,sha256=78hFl0HpDY-ylHUVCnWdU5nTHxUP2-S-3wEZk6CQmLk,134499 +pip/_vendor/urllib3/__init__.py,sha256=iXLcYiJySn0GNbWOOZDDApgBL1JgP44EZ8i1760S8Mc,3333 +pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc,, +pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc,, +pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc,, +pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc,, +pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc,, +pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc,, +pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc,, +pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc,, +pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc,, +pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc,, +pip/_vendor/urllib3/_collections.py,sha256=pyASJJhW7wdOpqJj9QJA8FyGRfr8E8uUUhqUvhF0728,11372 +pip/_vendor/urllib3/_version.py,sha256=cuJvnSrWxXGYgQ3-ZRoPMw8-qaN5tpw71jnH1t16dLA,64 +pip/_vendor/urllib3/connection.py,sha256=92k9td_y4PEiTIjNufCUa1NzMB3J3w0LEdyokYgXnW8,20300 +pip/_vendor/urllib3/connectionpool.py,sha256=Be6q65SR9laoikg-h_jmc_p8OWtEmwgq_Om_Xtig-2M,40285 +pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc,, +pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc,, +pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=bDbyOEhW2CKLJcQqAKAyrEHN-aklsyHFKq6vF8ZFsmk,957 +pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc,, +pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=4Xk64qIkPBt09A5q-RIFUuDhNc9mXilVapm7WnYnzRw,17632 +pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922 +pip/_vendor/urllib3/contrib/appengine.py,sha256=VR68eAVE137lxTgjBDwCna5UiBZTOKa01Aj_-5BaCz4,11036 +pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=NlfkW7WMdW8ziqudopjHoW299og1BTWi0IeIibquFwk,4528 +pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=hDJh4MhyY_p-oKlFcYcQaVQRDv6GMmBGuW9yjxyeejM,17081 +pip/_vendor/urllib3/contrib/securetransport.py,sha256=Fef1IIUUFHqpevzXiDPbIGkDKchY2FVKeVeLGR1Qq3g,34446 +pip/_vendor/urllib3/contrib/socks.py,sha256=aRi9eWXo9ZEb95XUxef4Z21CFlnnjbEiAo9HOseoMt4,7097 +pip/_vendor/urllib3/exceptions.py,sha256=0Mnno3KHTNfXRfY7638NufOPkUb6mXOm-Lqj-4x2w8A,8217 +pip/_vendor/urllib3/fields.py,sha256=kvLDCg_JmH1lLjUUEY_FLS8UhY7hBvDPuVETbY8mdrM,8579 +pip/_vendor/urllib3/filepost.py,sha256=5b_qqgRHVlL7uLtdAYBzBh-GHmU5AfJVt_2N0XS3PeY,2440 +pip/_vendor/urllib3/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc,, +pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc,, +pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc,, +pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417 +pip/_vendor/urllib3/packages/backports/weakref_finalize.py,sha256=tRCal5OAhNSRyb0DhHp-38AtIlCsRP8BxF3NX-6rqIA,5343 +pip/_vendor/urllib3/packages/six.py,sha256=b9LM0wBXv7E7SrbCjAm4wwN-hrH-iNxv18LgWNMMKPo,34665 +pip/_vendor/urllib3/poolmanager.py,sha256=aWyhXRtNO4JUnCSVVqKTKQd8EXTvUm1VN9pgs2bcONo,19990 +pip/_vendor/urllib3/request.py,sha256=YTWFNr7QIwh7E1W9dde9LM77v2VWTJ5V78XuTTw7D1A,6691 +pip/_vendor/urllib3/response.py,sha256=fmDJAFkG71uFTn-sVSTh2Iw0WmcXQYqkbRjihvwBjU8,30641 +pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155 +pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc,, +pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc,, +pip/_vendor/urllib3/util/connection.py,sha256=5Lx2B1PW29KxBn2T0xkN1CBgRBa3gGVJBKoQoRogEVk,4901 +pip/_vendor/urllib3/util/proxy.py,sha256=zUvPPCJrp6dOF0N4GAVbOcl6o-4uXKSrGiTkkr5vUS4,1605 +pip/_vendor/urllib3/util/queue.py,sha256=nRgX8_eX-_VkvxoX096QWoz8Ps0QHUAExILCY_7PncM,498 +pip/_vendor/urllib3/util/request.py,sha256=C0OUt2tcU6LRiQJ7YYNP9GvPrSvl7ziIBekQ-5nlBZk,3997 +pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510 +pip/_vendor/urllib3/util/retry.py,sha256=Z6WEf518eTOXP5jr5QSQ9gqJI0DVYt3Xs3EKnYaTmus,22013 +pip/_vendor/urllib3/util/ssl_.py,sha256=X4-AqW91aYPhPx6-xbf66yHFQKbqqfC_5Zt4WkLX1Hc,17177 +pip/_vendor/urllib3/util/ssl_match_hostname.py,sha256=Ir4cZVEjmAk8gUAIHWSi7wtOO83UCYABY2xFD1Ql_WA,5758 +pip/_vendor/urllib3/util/ssltransport.py,sha256=NA-u5rMTrDFDFC8QzRKUEKMG0561hOD4qBTr3Z4pv6E,6895 +pip/_vendor/urllib3/util/timeout.py,sha256=cwq4dMk87mJHSBktK1miYJ-85G-3T3RmT20v7SFCpno,10168 +pip/_vendor/urllib3/util/url.py,sha256=lCAE7M5myA8EDdW0sJuyyZhVB9K_j38ljWhHAnFaWoE,14296 +pip/_vendor/urllib3/util/wait.py,sha256=fOX0_faozG2P7iVojQoE1mbydweNyTcm-hXEfFrTtLI,5403 +pip/_vendor/vendor.txt,sha256=PxNaxxkkpBaw5zOTsDpHEY-zEaHjgkDgyrSxOuxg8nw,330 +pip/py.typed,sha256=EBVvvPRTn_eIpz5e5QztSCdrMX7Qwd7VP93RSoIlZ2I,286 diff --git a/venv/Lib/site-packages/pip-24.2.dist-info/REQUESTED b/venv/Lib/site-packages/pip-24.2.dist-info/REQUESTED new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip-24.2.dist-info/WHEEL b/venv/Lib/site-packages/pip-24.2.dist-info/WHEEL new file mode 100644 index 00000000000..ecaf39f3c3d --- /dev/null +++ b/venv/Lib/site-packages/pip-24.2.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (71.1.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/Lib/site-packages/pip-24.2.dist-info/entry_points.txt b/venv/Lib/site-packages/pip-24.2.dist-info/entry_points.txt new file mode 100644 index 00000000000..25fcf7e2cdf --- /dev/null +++ b/venv/Lib/site-packages/pip-24.2.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +pip = pip._internal.cli.main:main +pip3 = pip._internal.cli.main:main diff --git a/venv/Lib/site-packages/pip-24.2.dist-info/top_level.txt b/venv/Lib/site-packages/pip-24.2.dist-info/top_level.txt new file mode 100644 index 00000000000..a1b589e38a3 --- /dev/null +++ b/venv/Lib/site-packages/pip-24.2.dist-info/top_level.txt @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/pip/__init__.py b/venv/Lib/site-packages/pip/__init__.py new file mode 100644 index 00000000000..640e922f537 --- /dev/null +++ b/venv/Lib/site-packages/pip/__init__.py @@ -0,0 +1,13 @@ +from typing import List, Optional + +__version__ = "24.2" + + +def main(args: Optional[List[str]] = None) -> int: + """This is an internal API only meant for use by pip's own console scripts. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/venv/Lib/site-packages/pip/__main__.py b/venv/Lib/site-packages/pip/__main__.py new file mode 100644 index 00000000000..5991326115f --- /dev/null +++ b/venv/Lib/site-packages/pip/__main__.py @@ -0,0 +1,24 @@ +import os +import sys + +# Remove '' and current working directory from the first entry +# of sys.path, if present to avoid using current directory +# in pip commands check, freeze, install, list and show, +# when invoked as python -m pip +if sys.path[0] in ("", os.getcwd()): + sys.path.pop(0) + +# If we are running from a wheel, add the wheel to sys.path +# This allows the usage python pip-*.whl/pip install pip-*.whl +if __package__ == "": + # __file__ is pip-*.whl/pip/__main__.py + # first dirname call strips of '/__main__.py', second strips off '/pip' + # Resulting path is the name of the wheel itself + # Add that to sys.path so we can import pip + path = os.path.dirname(os.path.dirname(__file__)) + sys.path.insert(0, path) + +if __name__ == "__main__": + from pip._internal.cli.main import main as _main + + sys.exit(_main()) diff --git a/venv/Lib/site-packages/pip/__pip-runner__.py b/venv/Lib/site-packages/pip/__pip-runner__.py new file mode 100644 index 00000000000..c633787fced --- /dev/null +++ b/venv/Lib/site-packages/pip/__pip-runner__.py @@ -0,0 +1,50 @@ +"""Execute exactly this copy of pip, within a different environment. + +This file is named as it is, to ensure that this module can't be imported via +an import statement. +""" + +# /!\ This version compatibility check section must be Python 2 compatible. /!\ + +import sys + +# Copied from pyproject.toml +PYTHON_REQUIRES = (3, 8) + + +def version_str(version): # type: ignore + return ".".join(str(v) for v in version) + + +if sys.version_info[:2] < PYTHON_REQUIRES: + raise SystemExit( + "This version of pip does not support python {} (requires >={}).".format( + version_str(sys.version_info[:2]), version_str(PYTHON_REQUIRES) + ) + ) + +# From here on, we can use Python 3 features, but the syntax must remain +# Python 2 compatible. + +import runpy # noqa: E402 +from importlib.machinery import PathFinder # noqa: E402 +from os.path import dirname # noqa: E402 + +PIP_SOURCES_ROOT = dirname(dirname(__file__)) + + +class PipImportRedirectingFinder: + @classmethod + def find_spec(self, fullname, path=None, target=None): # type: ignore + if fullname != "pip": + return None + + spec = PathFinder.find_spec(fullname, [PIP_SOURCES_ROOT], target) + assert spec, (PIP_SOURCES_ROOT, fullname) + return spec + + +sys.meta_path.insert(0, PipImportRedirectingFinder()) + +assert __name__ == "__main__", "Cannot run __pip-runner__.py as a non-main module" +runpy.run_module("pip", run_name="__main__", alter_sys=True) diff --git a/venv/Lib/site-packages/pip/_internal/__init__.py b/venv/Lib/site-packages/pip/_internal/__init__.py new file mode 100644 index 00000000000..1a5b7f87f97 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/__init__.py @@ -0,0 +1,18 @@ +from typing import List, Optional + +from pip._internal.utils import _log + +# init_logging() must be called before any call to logging.getLogger() +# which happens at import of most modules. +_log.init_logging() + + +def main(args: Optional[List[str]] = None) -> int: + """This is preserved for old console scripts that may still be referencing + it. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/venv/Lib/site-packages/pip/_internal/build_env.py b/venv/Lib/site-packages/pip/_internal/build_env.py new file mode 100644 index 00000000000..be1e0ca85d2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/build_env.py @@ -0,0 +1,315 @@ +"""Build Environment used for isolation during sdist building +""" + +import logging +import os +import pathlib +import site +import sys +import textwrap +from collections import OrderedDict +from types import TracebackType +from typing import TYPE_CHECKING, Iterable, List, Optional, Set, Tuple, Type, Union + +from pip._vendor.certifi import where +from pip._vendor.packaging.version import Version + +from pip import __file__ as pip_location +from pip._internal.cli.spinners import open_spinner +from pip._internal.locations import get_platlib, get_purelib, get_scheme +from pip._internal.metadata import get_default_environment, get_environment +from pip._internal.utils.logging import VERBOSE +from pip._internal.utils.packaging import get_requirement +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds + +if TYPE_CHECKING: + from pip._internal.index.package_finder import PackageFinder + +logger = logging.getLogger(__name__) + + +def _dedup(a: str, b: str) -> Union[Tuple[str], Tuple[str, str]]: + return (a, b) if a != b else (a,) + + +class _Prefix: + def __init__(self, path: str) -> None: + self.path = path + self.setup = False + scheme = get_scheme("", prefix=path) + self.bin_dir = scheme.scripts + self.lib_dirs = _dedup(scheme.purelib, scheme.platlib) + + +def get_runnable_pip() -> str: + """Get a file to pass to a Python executable, to run the currently-running pip. + + This is used to run a pip subprocess, for installing requirements into the build + environment. + """ + source = pathlib.Path(pip_location).resolve().parent + + if not source.is_dir(): + # This would happen if someone is using pip from inside a zip file. In that + # case, we can use that directly. + return str(source) + + return os.fsdecode(source / "__pip-runner__.py") + + +def _get_system_sitepackages() -> Set[str]: + """Get system site packages + + Usually from site.getsitepackages, + but fallback on `get_purelib()/get_platlib()` if unavailable + (e.g. in a virtualenv created by virtualenv<20) + + Returns normalized set of strings. + """ + if hasattr(site, "getsitepackages"): + system_sites = site.getsitepackages() + else: + # virtualenv < 20 overwrites site.py without getsitepackages + # fallback on get_purelib/get_platlib. + # this is known to miss things, but shouldn't in the cases + # where getsitepackages() has been removed (inside a virtualenv) + system_sites = [get_purelib(), get_platlib()] + return {os.path.normcase(path) for path in system_sites} + + +class BuildEnvironment: + """Creates and manages an isolated environment to install build deps""" + + def __init__(self) -> None: + temp_dir = TempDirectory(kind=tempdir_kinds.BUILD_ENV, globally_managed=True) + + self._prefixes = OrderedDict( + (name, _Prefix(os.path.join(temp_dir.path, name))) + for name in ("normal", "overlay") + ) + + self._bin_dirs: List[str] = [] + self._lib_dirs: List[str] = [] + for prefix in reversed(list(self._prefixes.values())): + self._bin_dirs.append(prefix.bin_dir) + self._lib_dirs.extend(prefix.lib_dirs) + + # Customize site to: + # - ensure .pth files are honored + # - prevent access to system site packages + system_sites = _get_system_sitepackages() + + self._site_dir = os.path.join(temp_dir.path, "site") + if not os.path.exists(self._site_dir): + os.mkdir(self._site_dir) + with open( + os.path.join(self._site_dir, "sitecustomize.py"), "w", encoding="utf-8" + ) as fp: + fp.write( + textwrap.dedent( + """ + import os, site, sys + + # First, drop system-sites related paths. + original_sys_path = sys.path[:] + known_paths = set() + for path in {system_sites!r}: + site.addsitedir(path, known_paths=known_paths) + system_paths = set( + os.path.normcase(path) + for path in sys.path[len(original_sys_path):] + ) + original_sys_path = [ + path for path in original_sys_path + if os.path.normcase(path) not in system_paths + ] + sys.path = original_sys_path + + # Second, add lib directories. + # ensuring .pth file are processed. + for path in {lib_dirs!r}: + assert not path in sys.path + site.addsitedir(path) + """ + ).format(system_sites=system_sites, lib_dirs=self._lib_dirs) + ) + + def __enter__(self) -> None: + self._save_env = { + name: os.environ.get(name, None) + for name in ("PATH", "PYTHONNOUSERSITE", "PYTHONPATH") + } + + path = self._bin_dirs[:] + old_path = self._save_env["PATH"] + if old_path: + path.extend(old_path.split(os.pathsep)) + + pythonpath = [self._site_dir] + + os.environ.update( + { + "PATH": os.pathsep.join(path), + "PYTHONNOUSERSITE": "1", + "PYTHONPATH": os.pathsep.join(pythonpath), + } + ) + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + for varname, old_value in self._save_env.items(): + if old_value is None: + os.environ.pop(varname, None) + else: + os.environ[varname] = old_value + + def check_requirements( + self, reqs: Iterable[str] + ) -> Tuple[Set[Tuple[str, str]], Set[str]]: + """Return 2 sets: + - conflicting requirements: set of (installed, wanted) reqs tuples + - missing requirements: set of reqs + """ + missing = set() + conflicting = set() + if reqs: + env = ( + get_environment(self._lib_dirs) + if hasattr(self, "_lib_dirs") + else get_default_environment() + ) + for req_str in reqs: + req = get_requirement(req_str) + # We're explicitly evaluating with an empty extra value, since build + # environments are not provided any mechanism to select specific extras. + if req.marker is not None and not req.marker.evaluate({"extra": ""}): + continue + dist = env.get_distribution(req.name) + if not dist: + missing.add(req_str) + continue + if isinstance(dist.version, Version): + installed_req_str = f"{req.name}=={dist.version}" + else: + installed_req_str = f"{req.name}==={dist.version}" + if not req.specifier.contains(dist.version, prereleases=True): + conflicting.add((installed_req_str, req_str)) + # FIXME: Consider direct URL? + return conflicting, missing + + def install_requirements( + self, + finder: "PackageFinder", + requirements: Iterable[str], + prefix_as_string: str, + *, + kind: str, + ) -> None: + prefix = self._prefixes[prefix_as_string] + assert not prefix.setup + prefix.setup = True + if not requirements: + return + self._install_requirements( + get_runnable_pip(), + finder, + requirements, + prefix, + kind=kind, + ) + + @staticmethod + def _install_requirements( + pip_runnable: str, + finder: "PackageFinder", + requirements: Iterable[str], + prefix: _Prefix, + *, + kind: str, + ) -> None: + args: List[str] = [ + sys.executable, + pip_runnable, + "install", + "--ignore-installed", + "--no-user", + "--prefix", + prefix.path, + "--no-warn-script-location", + "--disable-pip-version-check", + ] + if logger.getEffectiveLevel() <= logging.DEBUG: + args.append("-vv") + elif logger.getEffectiveLevel() <= VERBOSE: + args.append("-v") + for format_control in ("no_binary", "only_binary"): + formats = getattr(finder.format_control, format_control) + args.extend( + ( + "--" + format_control.replace("_", "-"), + ",".join(sorted(formats or {":none:"})), + ) + ) + + index_urls = finder.index_urls + if index_urls: + args.extend(["-i", index_urls[0]]) + for extra_index in index_urls[1:]: + args.extend(["--extra-index-url", extra_index]) + else: + args.append("--no-index") + for link in finder.find_links: + args.extend(["--find-links", link]) + + for host in finder.trusted_hosts: + args.extend(["--trusted-host", host]) + if finder.allow_all_prereleases: + args.append("--pre") + if finder.prefer_binary: + args.append("--prefer-binary") + args.append("--") + args.extend(requirements) + extra_environ = {"_PIP_STANDALONE_CERT": where()} + with open_spinner(f"Installing {kind}") as spinner: + call_subprocess( + args, + command_desc=f"pip subprocess to install {kind}", + spinner=spinner, + extra_environ=extra_environ, + ) + + +class NoOpBuildEnvironment(BuildEnvironment): + """A no-op drop-in replacement for BuildEnvironment""" + + def __init__(self) -> None: + pass + + def __enter__(self) -> None: + pass + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + pass + + def cleanup(self) -> None: + pass + + def install_requirements( + self, + finder: "PackageFinder", + requirements: Iterable[str], + prefix_as_string: str, + *, + kind: str, + ) -> None: + raise NotImplementedError() diff --git a/venv/Lib/site-packages/pip/_internal/cache.py b/venv/Lib/site-packages/pip/_internal/cache.py new file mode 100644 index 00000000000..6b4512672db --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cache.py @@ -0,0 +1,290 @@ +"""Cache Management +""" + +import hashlib +import json +import logging +import os +from pathlib import Path +from typing import Any, Dict, List, Optional + +from pip._vendor.packaging.tags import Tag, interpreter_name, interpreter_version +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import InvalidWheelFilename +from pip._internal.models.direct_url import DirectUrl +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds +from pip._internal.utils.urls import path_to_url + +logger = logging.getLogger(__name__) + +ORIGIN_JSON_NAME = "origin.json" + + +def _hash_dict(d: Dict[str, str]) -> str: + """Return a stable sha224 of a dictionary.""" + s = json.dumps(d, sort_keys=True, separators=(",", ":"), ensure_ascii=True) + return hashlib.sha224(s.encode("ascii")).hexdigest() + + +class Cache: + """An abstract class - provides cache directories for data from links + + :param cache_dir: The root of the cache. + """ + + def __init__(self, cache_dir: str) -> None: + super().__init__() + assert not cache_dir or os.path.isabs(cache_dir) + self.cache_dir = cache_dir or None + + def _get_cache_path_parts(self, link: Link) -> List[str]: + """Get parts of part that must be os.path.joined with cache_dir""" + + # We want to generate an url to use as our cache key, we don't want to + # just reuse the URL because it might have other items in the fragment + # and we don't care about those. + key_parts = {"url": link.url_without_fragment} + if link.hash_name is not None and link.hash is not None: + key_parts[link.hash_name] = link.hash + if link.subdirectory_fragment: + key_parts["subdirectory"] = link.subdirectory_fragment + + # Include interpreter name, major and minor version in cache key + # to cope with ill-behaved sdists that build a different wheel + # depending on the python version their setup.py is being run on, + # and don't encode the difference in compatibility tags. + # https://github.com/pypa/pip/issues/7296 + key_parts["interpreter_name"] = interpreter_name() + key_parts["interpreter_version"] = interpreter_version() + + # Encode our key url with sha224, we'll use this because it has similar + # security properties to sha256, but with a shorter total output (and + # thus less secure). However the differences don't make a lot of + # difference for our use case here. + hashed = _hash_dict(key_parts) + + # We want to nest the directories some to prevent having a ton of top + # level directories where we might run out of sub directories on some + # FS. + parts = [hashed[:2], hashed[2:4], hashed[4:6], hashed[6:]] + + return parts + + def _get_candidates(self, link: Link, canonical_package_name: str) -> List[Any]: + can_not_cache = not self.cache_dir or not canonical_package_name or not link + if can_not_cache: + return [] + + path = self.get_path_for_link(link) + if os.path.isdir(path): + return [(candidate, path) for candidate in os.listdir(path)] + return [] + + def get_path_for_link(self, link: Link) -> str: + """Return a directory to store cached items in for link.""" + raise NotImplementedError() + + def get( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Link: + """Returns a link to a cached item if it exists, otherwise returns the + passed link. + """ + raise NotImplementedError() + + +class SimpleWheelCache(Cache): + """A cache of wheels for future installs.""" + + def __init__(self, cache_dir: str) -> None: + super().__init__(cache_dir) + + def get_path_for_link(self, link: Link) -> str: + """Return a directory to store cached wheels for link + + Because there are M wheels for any one sdist, we provide a directory + to cache them in, and then consult that directory when looking up + cache hits. + + We only insert things into the cache if they have plausible version + numbers, so that we don't contaminate the cache with things that were + not unique. E.g. ./package might have dozens of installs done for it + and build a version of 0.0...and if we built and cached a wheel, we'd + end up using the same wheel even if the source has been edited. + + :param link: The link of the sdist for which this will cache wheels. + """ + parts = self._get_cache_path_parts(link) + assert self.cache_dir + # Store wheels within the root cache_dir + return os.path.join(self.cache_dir, "wheels", *parts) + + def get( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Link: + candidates = [] + + if not package_name: + return link + + canonical_package_name = canonicalize_name(package_name) + for wheel_name, wheel_dir in self._get_candidates(link, canonical_package_name): + try: + wheel = Wheel(wheel_name) + except InvalidWheelFilename: + continue + if canonicalize_name(wheel.name) != canonical_package_name: + logger.debug( + "Ignoring cached wheel %s for %s as it " + "does not match the expected distribution name %s.", + wheel_name, + link, + package_name, + ) + continue + if not wheel.supported(supported_tags): + # Built for a different python/arch/etc + continue + candidates.append( + ( + wheel.support_index_min(supported_tags), + wheel_name, + wheel_dir, + ) + ) + + if not candidates: + return link + + _, wheel_name, wheel_dir = min(candidates) + return Link(path_to_url(os.path.join(wheel_dir, wheel_name))) + + +class EphemWheelCache(SimpleWheelCache): + """A SimpleWheelCache that creates it's own temporary cache directory""" + + def __init__(self) -> None: + self._temp_dir = TempDirectory( + kind=tempdir_kinds.EPHEM_WHEEL_CACHE, + globally_managed=True, + ) + + super().__init__(self._temp_dir.path) + + +class CacheEntry: + def __init__( + self, + link: Link, + persistent: bool, + ): + self.link = link + self.persistent = persistent + self.origin: Optional[DirectUrl] = None + origin_direct_url_path = Path(self.link.file_path).parent / ORIGIN_JSON_NAME + if origin_direct_url_path.exists(): + try: + self.origin = DirectUrl.from_json( + origin_direct_url_path.read_text(encoding="utf-8") + ) + except Exception as e: + logger.warning( + "Ignoring invalid cache entry origin file %s for %s (%s)", + origin_direct_url_path, + link.filename, + e, + ) + + +class WheelCache(Cache): + """Wraps EphemWheelCache and SimpleWheelCache into a single Cache + + This Cache allows for gracefully degradation, using the ephem wheel cache + when a certain link is not found in the simple wheel cache first. + """ + + def __init__(self, cache_dir: str) -> None: + super().__init__(cache_dir) + self._wheel_cache = SimpleWheelCache(cache_dir) + self._ephem_cache = EphemWheelCache() + + def get_path_for_link(self, link: Link) -> str: + return self._wheel_cache.get_path_for_link(link) + + def get_ephem_path_for_link(self, link: Link) -> str: + return self._ephem_cache.get_path_for_link(link) + + def get( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Link: + cache_entry = self.get_cache_entry(link, package_name, supported_tags) + if cache_entry is None: + return link + return cache_entry.link + + def get_cache_entry( + self, + link: Link, + package_name: Optional[str], + supported_tags: List[Tag], + ) -> Optional[CacheEntry]: + """Returns a CacheEntry with a link to a cached item if it exists or + None. The cache entry indicates if the item was found in the persistent + or ephemeral cache. + """ + retval = self._wheel_cache.get( + link=link, + package_name=package_name, + supported_tags=supported_tags, + ) + if retval is not link: + return CacheEntry(retval, persistent=True) + + retval = self._ephem_cache.get( + link=link, + package_name=package_name, + supported_tags=supported_tags, + ) + if retval is not link: + return CacheEntry(retval, persistent=False) + + return None + + @staticmethod + def record_download_origin(cache_dir: str, download_info: DirectUrl) -> None: + origin_path = Path(cache_dir) / ORIGIN_JSON_NAME + if origin_path.exists(): + try: + origin = DirectUrl.from_json(origin_path.read_text(encoding="utf-8")) + except Exception as e: + logger.warning( + "Could not read origin file %s in cache entry (%s). " + "Will attempt to overwrite it.", + origin_path, + e, + ) + else: + # TODO: use DirectUrl.equivalent when + # https://github.com/pypa/pip/pull/10564 is merged. + if origin.url != download_info.url: + logger.warning( + "Origin URL %s in cache entry %s does not match download URL " + "%s. This is likely a pip bug or a cache corruption issue. " + "Will overwrite it with the new value.", + origin.url, + cache_dir, + download_info.url, + ) + origin_path.write_text(download_info.to_json(), encoding="utf-8") diff --git a/venv/Lib/site-packages/pip/_internal/cli/__init__.py b/venv/Lib/site-packages/pip/_internal/cli/__init__.py new file mode 100644 index 00000000000..e589bb917e2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/__init__.py @@ -0,0 +1,4 @@ +"""Subpackage containing all of pip's command line interface related code +""" + +# This file intentionally does not import submodules diff --git a/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py b/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py new file mode 100644 index 00000000000..f3f70ac8553 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py @@ -0,0 +1,176 @@ +"""Logic that powers autocompletion installed by ``pip completion``. +""" + +import optparse +import os +import sys +from itertools import chain +from typing import Any, Iterable, List, Optional + +from pip._internal.cli.main_parser import create_main_parser +from pip._internal.commands import commands_dict, create_command +from pip._internal.metadata import get_default_environment + + +def autocomplete() -> None: + """Entry Point for completion of main and subcommand options.""" + # Don't complete if user hasn't sourced bash_completion file. + if "PIP_AUTO_COMPLETE" not in os.environ: + return + # Don't complete if autocompletion environment variables + # are not present + if not os.environ.get("COMP_WORDS") or not os.environ.get("COMP_CWORD"): + return + cwords = os.environ["COMP_WORDS"].split()[1:] + cword = int(os.environ["COMP_CWORD"]) + try: + current = cwords[cword - 1] + except IndexError: + current = "" + + parser = create_main_parser() + subcommands = list(commands_dict) + options = [] + + # subcommand + subcommand_name: Optional[str] = None + for word in cwords: + if word in subcommands: + subcommand_name = word + break + # subcommand options + if subcommand_name is not None: + # special case: 'help' subcommand has no options + if subcommand_name == "help": + sys.exit(1) + # special case: list locally installed dists for show and uninstall + should_list_installed = not current.startswith("-") and subcommand_name in [ + "show", + "uninstall", + ] + if should_list_installed: + env = get_default_environment() + lc = current.lower() + installed = [ + dist.canonical_name + for dist in env.iter_installed_distributions(local_only=True) + if dist.canonical_name.startswith(lc) + and dist.canonical_name not in cwords[1:] + ] + # if there are no dists installed, fall back to option completion + if installed: + for dist in installed: + print(dist) + sys.exit(1) + + should_list_installables = ( + not current.startswith("-") and subcommand_name == "install" + ) + if should_list_installables: + for path in auto_complete_paths(current, "path"): + print(path) + sys.exit(1) + + subcommand = create_command(subcommand_name) + + for opt in subcommand.parser.option_list_all: + if opt.help != optparse.SUPPRESS_HELP: + options += [ + (opt_str, opt.nargs) for opt_str in opt._long_opts + opt._short_opts + ] + + # filter out previously specified options from available options + prev_opts = [x.split("=")[0] for x in cwords[1 : cword - 1]] + options = [(x, v) for (x, v) in options if x not in prev_opts] + # filter options by current input + options = [(k, v) for k, v in options if k.startswith(current)] + # get completion type given cwords and available subcommand options + completion_type = get_path_completion_type( + cwords, + cword, + subcommand.parser.option_list_all, + ) + # get completion files and directories if ``completion_type`` is + # ````, ```` or ```` + if completion_type: + paths = auto_complete_paths(current, completion_type) + options = [(path, 0) for path in paths] + for option in options: + opt_label = option[0] + # append '=' to options which require args + if option[1] and option[0][:2] == "--": + opt_label += "=" + print(opt_label) + else: + # show main parser options only when necessary + + opts = [i.option_list for i in parser.option_groups] + opts.append(parser.option_list) + flattened_opts = chain.from_iterable(opts) + if current.startswith("-"): + for opt in flattened_opts: + if opt.help != optparse.SUPPRESS_HELP: + subcommands += opt._long_opts + opt._short_opts + else: + # get completion type given cwords and all available options + completion_type = get_path_completion_type(cwords, cword, flattened_opts) + if completion_type: + subcommands = list(auto_complete_paths(current, completion_type)) + + print(" ".join([x for x in subcommands if x.startswith(current)])) + sys.exit(1) + + +def get_path_completion_type( + cwords: List[str], cword: int, opts: Iterable[Any] +) -> Optional[str]: + """Get the type of path completion (``file``, ``dir``, ``path`` or None) + + :param cwords: same as the environmental variable ``COMP_WORDS`` + :param cword: same as the environmental variable ``COMP_CWORD`` + :param opts: The available options to check + :return: path completion type (``file``, ``dir``, ``path`` or None) + """ + if cword < 2 or not cwords[cword - 2].startswith("-"): + return None + for opt in opts: + if opt.help == optparse.SUPPRESS_HELP: + continue + for o in str(opt).split("/"): + if cwords[cword - 2].split("=")[0] == o: + if not opt.metavar or any( + x in ("path", "file", "dir") for x in opt.metavar.split("/") + ): + return opt.metavar + return None + + +def auto_complete_paths(current: str, completion_type: str) -> Iterable[str]: + """If ``completion_type`` is ``file`` or ``path``, list all regular files + and directories starting with ``current``; otherwise only list directories + starting with ``current``. + + :param current: The word to be completed + :param completion_type: path completion type(``file``, ``path`` or ``dir``) + :return: A generator of regular files and/or directories + """ + directory, filename = os.path.split(current) + current_path = os.path.abspath(directory) + # Don't complete paths if they can't be accessed + if not os.access(current_path, os.R_OK): + return + filename = os.path.normcase(filename) + # list all files that start with ``filename`` + file_list = ( + x for x in os.listdir(current_path) if os.path.normcase(x).startswith(filename) + ) + for f in file_list: + opt = os.path.join(current_path, f) + comp_file = os.path.normcase(os.path.join(directory, f)) + # complete regular files when there is not ```` after option + # complete directories when there is ````, ```` or + # ````after option + if completion_type != "dir" and os.path.isfile(opt): + yield comp_file + elif os.path.isdir(opt): + yield os.path.join(comp_file, "") diff --git a/venv/Lib/site-packages/pip/_internal/cli/base_command.py b/venv/Lib/site-packages/pip/_internal/cli/base_command.py new file mode 100644 index 00000000000..bc1ab65949d --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/base_command.py @@ -0,0 +1,231 @@ +"""Base Command class, and related routines""" + +import logging +import logging.config +import optparse +import os +import sys +import traceback +from optparse import Values +from typing import List, Optional, Tuple + +from pip._vendor.rich import reconfigure +from pip._vendor.rich import traceback as rich_traceback + +from pip._internal.cli import cmdoptions +from pip._internal.cli.command_context import CommandContextMixIn +from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter +from pip._internal.cli.status_codes import ( + ERROR, + PREVIOUS_BUILD_DIR_ERROR, + UNKNOWN_ERROR, + VIRTUALENV_NOT_FOUND, +) +from pip._internal.exceptions import ( + BadCommand, + CommandError, + DiagnosticPipError, + InstallationError, + NetworkConnectionError, + PreviousBuildDirError, +) +from pip._internal.utils.filesystem import check_path_owner +from pip._internal.utils.logging import BrokenStdoutLoggingError, setup_logging +from pip._internal.utils.misc import get_prog, normalize_path +from pip._internal.utils.temp_dir import TempDirectoryTypeRegistry as TempDirRegistry +from pip._internal.utils.temp_dir import global_tempdir_manager, tempdir_registry +from pip._internal.utils.virtualenv import running_under_virtualenv + +__all__ = ["Command"] + +logger = logging.getLogger(__name__) + + +class Command(CommandContextMixIn): + usage: str = "" + ignore_require_venv: bool = False + + def __init__(self, name: str, summary: str, isolated: bool = False) -> None: + super().__init__() + + self.name = name + self.summary = summary + self.parser = ConfigOptionParser( + usage=self.usage, + prog=f"{get_prog()} {name}", + formatter=UpdatingDefaultsHelpFormatter(), + add_help_option=False, + name=name, + description=self.__doc__, + isolated=isolated, + ) + + self.tempdir_registry: Optional[TempDirRegistry] = None + + # Commands should add options to this option group + optgroup_name = f"{self.name.capitalize()} Options" + self.cmd_opts = optparse.OptionGroup(self.parser, optgroup_name) + + # Add the general options + gen_opts = cmdoptions.make_option_group( + cmdoptions.general_group, + self.parser, + ) + self.parser.add_option_group(gen_opts) + + self.add_options() + + def add_options(self) -> None: + pass + + def handle_pip_version_check(self, options: Values) -> None: + """ + This is a no-op so that commands by default do not do the pip version + check. + """ + # Make sure we do the pip version check if the index_group options + # are present. + assert not hasattr(options, "no_index") + + def run(self, options: Values, args: List[str]) -> int: + raise NotImplementedError + + def _run_wrapper(self, level_number: int, options: Values, args: List[str]) -> int: + def _inner_run() -> int: + try: + return self.run(options, args) + finally: + self.handle_pip_version_check(options) + + if options.debug_mode: + rich_traceback.install(show_locals=True) + return _inner_run() + + try: + status = _inner_run() + assert isinstance(status, int) + return status + except DiagnosticPipError as exc: + logger.error("%s", exc, extra={"rich": True}) + logger.debug("Exception information:", exc_info=True) + + return ERROR + except PreviousBuildDirError as exc: + logger.critical(str(exc)) + logger.debug("Exception information:", exc_info=True) + + return PREVIOUS_BUILD_DIR_ERROR + except ( + InstallationError, + BadCommand, + NetworkConnectionError, + ) as exc: + logger.critical(str(exc)) + logger.debug("Exception information:", exc_info=True) + + return ERROR + except CommandError as exc: + logger.critical("%s", exc) + logger.debug("Exception information:", exc_info=True) + + return ERROR + except BrokenStdoutLoggingError: + # Bypass our logger and write any remaining messages to + # stderr because stdout no longer works. + print("ERROR: Pipe to stdout was broken", file=sys.stderr) + if level_number <= logging.DEBUG: + traceback.print_exc(file=sys.stderr) + + return ERROR + except KeyboardInterrupt: + logger.critical("Operation cancelled by user") + logger.debug("Exception information:", exc_info=True) + + return ERROR + except BaseException: + logger.critical("Exception:", exc_info=True) + + return UNKNOWN_ERROR + + def parse_args(self, args: List[str]) -> Tuple[Values, List[str]]: + # factored out for testability + return self.parser.parse_args(args) + + def main(self, args: List[str]) -> int: + try: + with self.main_context(): + return self._main(args) + finally: + logging.shutdown() + + def _main(self, args: List[str]) -> int: + # We must initialize this before the tempdir manager, otherwise the + # configuration would not be accessible by the time we clean up the + # tempdir manager. + self.tempdir_registry = self.enter_context(tempdir_registry()) + # Intentionally set as early as possible so globally-managed temporary + # directories are available to the rest of the code. + self.enter_context(global_tempdir_manager()) + + options, args = self.parse_args(args) + + # Set verbosity so that it can be used elsewhere. + self.verbosity = options.verbose - options.quiet + + reconfigure(no_color=options.no_color) + level_number = setup_logging( + verbosity=self.verbosity, + no_color=options.no_color, + user_log_file=options.log, + ) + + always_enabled_features = set(options.features_enabled) & set( + cmdoptions.ALWAYS_ENABLED_FEATURES + ) + if always_enabled_features: + logger.warning( + "The following features are always enabled: %s. ", + ", ".join(sorted(always_enabled_features)), + ) + + # Make sure that the --python argument isn't specified after the + # subcommand. We can tell, because if --python was specified, + # we should only reach this point if we're running in the created + # subprocess, which has the _PIP_RUNNING_IN_SUBPROCESS environment + # variable set. + if options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ: + logger.critical( + "The --python option must be placed before the pip subcommand name" + ) + sys.exit(ERROR) + + # TODO: Try to get these passing down from the command? + # without resorting to os.environ to hold these. + # This also affects isolated builds and it should. + + if options.no_input: + os.environ["PIP_NO_INPUT"] = "1" + + if options.exists_action: + os.environ["PIP_EXISTS_ACTION"] = " ".join(options.exists_action) + + if options.require_venv and not self.ignore_require_venv: + # If a venv is required check if it can really be found + if not running_under_virtualenv(): + logger.critical("Could not find an activated virtualenv (required).") + sys.exit(VIRTUALENV_NOT_FOUND) + + if options.cache_dir: + options.cache_dir = normalize_path(options.cache_dir) + if not check_path_owner(options.cache_dir): + logger.warning( + "The directory '%s' or its parent directory is not owned " + "or is not writable by the current user. The cache " + "has been disabled. Check the permissions and owner of " + "that directory. If executing pip with sudo, you should " + "use sudo's -H flag.", + options.cache_dir, + ) + options.cache_dir = None + + return self._run_wrapper(level_number, options, args) diff --git a/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py b/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py new file mode 100644 index 00000000000..0b7cff77bdd --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py @@ -0,0 +1,1075 @@ +""" +shared options and groups + +The principle here is to define options once, but *not* instantiate them +globally. One reason being that options with action='append' can carry state +between parses. pip parses general options twice internally, and shouldn't +pass on state. To be consistent, all options will follow this design. +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import importlib.util +import logging +import os +import textwrap +from functools import partial +from optparse import SUPPRESS_HELP, Option, OptionGroup, OptionParser, Values +from textwrap import dedent +from typing import Any, Callable, Dict, Optional, Tuple + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli.parser import ConfigOptionParser +from pip._internal.exceptions import CommandError +from pip._internal.locations import USER_CACHE_DIR, get_src_prefix +from pip._internal.models.format_control import FormatControl +from pip._internal.models.index import PyPI +from pip._internal.models.target_python import TargetPython +from pip._internal.utils.hashes import STRONG_HASHES +from pip._internal.utils.misc import strtobool + +logger = logging.getLogger(__name__) + + +def raise_option_error(parser: OptionParser, option: Option, msg: str) -> None: + """ + Raise an option parsing error using parser.error(). + + Args: + parser: an OptionParser instance. + option: an Option instance. + msg: the error text. + """ + msg = f"{option} error: {msg}" + msg = textwrap.fill(" ".join(msg.split())) + parser.error(msg) + + +def make_option_group(group: Dict[str, Any], parser: ConfigOptionParser) -> OptionGroup: + """ + Return an OptionGroup object + group -- assumed to be dict with 'name' and 'options' keys + parser -- an optparse Parser + """ + option_group = OptionGroup(parser, group["name"]) + for option in group["options"]: + option_group.add_option(option()) + return option_group + + +def check_dist_restriction(options: Values, check_target: bool = False) -> None: + """Function for determining if custom platform options are allowed. + + :param options: The OptionParser options. + :param check_target: Whether or not to check if --target is being used. + """ + dist_restriction_set = any( + [ + options.python_version, + options.platforms, + options.abis, + options.implementation, + ] + ) + + binary_only = FormatControl(set(), {":all:"}) + sdist_dependencies_allowed = ( + options.format_control != binary_only and not options.ignore_dependencies + ) + + # Installations or downloads using dist restrictions must not combine + # source distributions and dist-specific wheels, as they are not + # guaranteed to be locally compatible. + if dist_restriction_set and sdist_dependencies_allowed: + raise CommandError( + "When restricting platform and interpreter constraints using " + "--python-version, --platform, --abi, or --implementation, " + "either --no-deps must be set, or --only-binary=:all: must be " + "set and --no-binary must not be set (or must be set to " + ":none:)." + ) + + if check_target: + if not options.dry_run and dist_restriction_set and not options.target_dir: + raise CommandError( + "Can not use any platform or abi specific options unless " + "installing via '--target' or using '--dry-run'" + ) + + +def _path_option_check(option: Option, opt: str, value: str) -> str: + return os.path.expanduser(value) + + +def _package_name_option_check(option: Option, opt: str, value: str) -> str: + return canonicalize_name(value) + + +class PipOption(Option): + TYPES = Option.TYPES + ("path", "package_name") + TYPE_CHECKER = Option.TYPE_CHECKER.copy() + TYPE_CHECKER["package_name"] = _package_name_option_check + TYPE_CHECKER["path"] = _path_option_check + + +########### +# options # +########### + +help_: Callable[..., Option] = partial( + Option, + "-h", + "--help", + dest="help", + action="help", + help="Show help.", +) + +debug_mode: Callable[..., Option] = partial( + Option, + "--debug", + dest="debug_mode", + action="store_true", + default=False, + help=( + "Let unhandled exceptions propagate outside the main subroutine, " + "instead of logging them to stderr." + ), +) + +isolated_mode: Callable[..., Option] = partial( + Option, + "--isolated", + dest="isolated_mode", + action="store_true", + default=False, + help=( + "Run pip in an isolated mode, ignoring environment variables and user " + "configuration." + ), +) + +require_virtualenv: Callable[..., Option] = partial( + Option, + "--require-virtualenv", + "--require-venv", + dest="require_venv", + action="store_true", + default=False, + help=( + "Allow pip to only run in a virtual environment; " + "exit with an error otherwise." + ), +) + +override_externally_managed: Callable[..., Option] = partial( + Option, + "--break-system-packages", + dest="override_externally_managed", + action="store_true", + help="Allow pip to modify an EXTERNALLY-MANAGED Python installation", +) + +python: Callable[..., Option] = partial( + Option, + "--python", + dest="python", + help="Run pip with the specified Python interpreter.", +) + +verbose: Callable[..., Option] = partial( + Option, + "-v", + "--verbose", + dest="verbose", + action="count", + default=0, + help="Give more output. Option is additive, and can be used up to 3 times.", +) + +no_color: Callable[..., Option] = partial( + Option, + "--no-color", + dest="no_color", + action="store_true", + default=False, + help="Suppress colored output.", +) + +version: Callable[..., Option] = partial( + Option, + "-V", + "--version", + dest="version", + action="store_true", + help="Show version and exit.", +) + +quiet: Callable[..., Option] = partial( + Option, + "-q", + "--quiet", + dest="quiet", + action="count", + default=0, + help=( + "Give less output. Option is additive, and can be used up to 3" + " times (corresponding to WARNING, ERROR, and CRITICAL logging" + " levels)." + ), +) + +progress_bar: Callable[..., Option] = partial( + Option, + "--progress-bar", + dest="progress_bar", + type="choice", + choices=["on", "off", "raw"], + default="on", + help="Specify whether the progress bar should be used [on, off, raw] (default: on)", +) + +log: Callable[..., Option] = partial( + PipOption, + "--log", + "--log-file", + "--local-log", + dest="log", + metavar="path", + type="path", + help="Path to a verbose appending log.", +) + +no_input: Callable[..., Option] = partial( + Option, + # Don't ask for input + "--no-input", + dest="no_input", + action="store_true", + default=False, + help="Disable prompting for input.", +) + +keyring_provider: Callable[..., Option] = partial( + Option, + "--keyring-provider", + dest="keyring_provider", + choices=["auto", "disabled", "import", "subprocess"], + default="auto", + help=( + "Enable the credential lookup via the keyring library if user input is allowed." + " Specify which mechanism to use [disabled, import, subprocess]." + " (default: disabled)" + ), +) + +proxy: Callable[..., Option] = partial( + Option, + "--proxy", + dest="proxy", + type="str", + default="", + help="Specify a proxy in the form scheme://[user:passwd@]proxy.server:port.", +) + +retries: Callable[..., Option] = partial( + Option, + "--retries", + dest="retries", + type="int", + default=5, + help="Maximum number of retries each connection should attempt " + "(default %default times).", +) + +timeout: Callable[..., Option] = partial( + Option, + "--timeout", + "--default-timeout", + metavar="sec", + dest="timeout", + type="float", + default=15, + help="Set the socket timeout (default %default seconds).", +) + + +def exists_action() -> Option: + return Option( + # Option when path already exist + "--exists-action", + dest="exists_action", + type="choice", + choices=["s", "i", "w", "b", "a"], + default=[], + action="append", + metavar="action", + help="Default action when a path already exists: " + "(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.", + ) + + +cert: Callable[..., Option] = partial( + PipOption, + "--cert", + dest="cert", + type="path", + metavar="path", + help=( + "Path to PEM-encoded CA certificate bundle. " + "If provided, overrides the default. " + "See 'SSL Certificate Verification' in pip documentation " + "for more information." + ), +) + +client_cert: Callable[..., Option] = partial( + PipOption, + "--client-cert", + dest="client_cert", + type="path", + default=None, + metavar="path", + help="Path to SSL client certificate, a single file containing the " + "private key and the certificate in PEM format.", +) + +index_url: Callable[..., Option] = partial( + Option, + "-i", + "--index-url", + "--pypi-url", + dest="index_url", + metavar="URL", + default=PyPI.simple_url, + help="Base URL of the Python Package Index (default %default). " + "This should point to a repository compliant with PEP 503 " + "(the simple repository API) or a local directory laid out " + "in the same format.", +) + + +def extra_index_url() -> Option: + return Option( + "--extra-index-url", + dest="extra_index_urls", + metavar="URL", + action="append", + default=[], + help="Extra URLs of package indexes to use in addition to " + "--index-url. Should follow the same rules as " + "--index-url.", + ) + + +no_index: Callable[..., Option] = partial( + Option, + "--no-index", + dest="no_index", + action="store_true", + default=False, + help="Ignore package index (only looking at --find-links URLs instead).", +) + + +def find_links() -> Option: + return Option( + "-f", + "--find-links", + dest="find_links", + action="append", + default=[], + metavar="url", + help="If a URL or path to an html file, then parse for links to " + "archives such as sdist (.tar.gz) or wheel (.whl) files. " + "If a local path or file:// URL that's a directory, " + "then look for archives in the directory listing. " + "Links to VCS project URLs are not supported.", + ) + + +def trusted_host() -> Option: + return Option( + "--trusted-host", + dest="trusted_hosts", + action="append", + metavar="HOSTNAME", + default=[], + help="Mark this host or host:port pair as trusted, even though it " + "does not have valid or any HTTPS.", + ) + + +def constraints() -> Option: + return Option( + "-c", + "--constraint", + dest="constraints", + action="append", + default=[], + metavar="file", + help="Constrain versions using the given constraints file. " + "This option can be used multiple times.", + ) + + +def requirements() -> Option: + return Option( + "-r", + "--requirement", + dest="requirements", + action="append", + default=[], + metavar="file", + help="Install from the given requirements file. " + "This option can be used multiple times.", + ) + + +def editable() -> Option: + return Option( + "-e", + "--editable", + dest="editables", + action="append", + default=[], + metavar="path/url", + help=( + "Install a project in editable mode (i.e. setuptools " + '"develop mode") from a local project path or a VCS url.' + ), + ) + + +def _handle_src(option: Option, opt_str: str, value: str, parser: OptionParser) -> None: + value = os.path.abspath(value) + setattr(parser.values, option.dest, value) + + +src: Callable[..., Option] = partial( + PipOption, + "--src", + "--source", + "--source-dir", + "--source-directory", + dest="src_dir", + type="path", + metavar="dir", + default=get_src_prefix(), + action="callback", + callback=_handle_src, + help="Directory to check out editable projects into. " + 'The default in a virtualenv is "/src". ' + 'The default for global installs is "/src".', +) + + +def _get_format_control(values: Values, option: Option) -> Any: + """Get a format_control object.""" + return getattr(values, option.dest) + + +def _handle_no_binary( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + existing = _get_format_control(parser.values, option) + FormatControl.handle_mutual_excludes( + value, + existing.no_binary, + existing.only_binary, + ) + + +def _handle_only_binary( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + existing = _get_format_control(parser.values, option) + FormatControl.handle_mutual_excludes( + value, + existing.only_binary, + existing.no_binary, + ) + + +def no_binary() -> Option: + format_control = FormatControl(set(), set()) + return Option( + "--no-binary", + dest="format_control", + action="callback", + callback=_handle_no_binary, + type="str", + default=format_control, + help="Do not use binary packages. Can be supplied multiple times, and " + 'each time adds to the existing value. Accepts either ":all:" to ' + 'disable all binary packages, ":none:" to empty the set (notice ' + "the colons), or one or more package names with commas between " + "them (no colons). Note that some packages are tricky to compile " + "and may fail to install when this option is used on them.", + ) + + +def only_binary() -> Option: + format_control = FormatControl(set(), set()) + return Option( + "--only-binary", + dest="format_control", + action="callback", + callback=_handle_only_binary, + type="str", + default=format_control, + help="Do not use source packages. Can be supplied multiple times, and " + 'each time adds to the existing value. Accepts either ":all:" to ' + 'disable all source packages, ":none:" to empty the set, or one ' + "or more package names with commas between them. Packages " + "without binary distributions will fail to install when this " + "option is used on them.", + ) + + +platforms: Callable[..., Option] = partial( + Option, + "--platform", + dest="platforms", + metavar="platform", + action="append", + default=None, + help=( + "Only use wheels compatible with . Defaults to the " + "platform of the running system. Use this option multiple times to " + "specify multiple platforms supported by the target interpreter." + ), +) + + +# This was made a separate function for unit-testing purposes. +def _convert_python_version(value: str) -> Tuple[Tuple[int, ...], Optional[str]]: + """ + Convert a version string like "3", "37", or "3.7.3" into a tuple of ints. + + :return: A 2-tuple (version_info, error_msg), where `error_msg` is + non-None if and only if there was a parsing error. + """ + if not value: + # The empty string is the same as not providing a value. + return (None, None) + + parts = value.split(".") + if len(parts) > 3: + return ((), "at most three version parts are allowed") + + if len(parts) == 1: + # Then we are in the case of "3" or "37". + value = parts[0] + if len(value) > 1: + parts = [value[0], value[1:]] + + try: + version_info = tuple(int(part) for part in parts) + except ValueError: + return ((), "each version part must be an integer") + + return (version_info, None) + + +def _handle_python_version( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + """ + Handle a provided --python-version value. + """ + version_info, error_msg = _convert_python_version(value) + if error_msg is not None: + msg = f"invalid --python-version value: {value!r}: {error_msg}" + raise_option_error(parser, option=option, msg=msg) + + parser.values.python_version = version_info + + +python_version: Callable[..., Option] = partial( + Option, + "--python-version", + dest="python_version", + metavar="python_version", + action="callback", + callback=_handle_python_version, + type="str", + default=None, + help=dedent( + """\ + The Python interpreter version to use for wheel and "Requires-Python" + compatibility checks. Defaults to a version derived from the running + interpreter. The version can be specified using up to three dot-separated + integers (e.g. "3" for 3.0.0, "3.7" for 3.7.0, or "3.7.3"). A major-minor + version can also be given as a string without dots (e.g. "37" for 3.7.0). + """ + ), +) + + +implementation: Callable[..., Option] = partial( + Option, + "--implementation", + dest="implementation", + metavar="implementation", + default=None, + help=( + "Only use wheels compatible with Python " + "implementation , e.g. 'pp', 'jy', 'cp', " + " or 'ip'. If not specified, then the current " + "interpreter implementation is used. Use 'py' to force " + "implementation-agnostic wheels." + ), +) + + +abis: Callable[..., Option] = partial( + Option, + "--abi", + dest="abis", + metavar="abi", + action="append", + default=None, + help=( + "Only use wheels compatible with Python abi , e.g. 'pypy_41'. " + "If not specified, then the current interpreter abi tag is used. " + "Use this option multiple times to specify multiple abis supported " + "by the target interpreter. Generally you will need to specify " + "--implementation, --platform, and --python-version when using this " + "option." + ), +) + + +def add_target_python_options(cmd_opts: OptionGroup) -> None: + cmd_opts.add_option(platforms()) + cmd_opts.add_option(python_version()) + cmd_opts.add_option(implementation()) + cmd_opts.add_option(abis()) + + +def make_target_python(options: Values) -> TargetPython: + target_python = TargetPython( + platforms=options.platforms, + py_version_info=options.python_version, + abis=options.abis, + implementation=options.implementation, + ) + + return target_python + + +def prefer_binary() -> Option: + return Option( + "--prefer-binary", + dest="prefer_binary", + action="store_true", + default=False, + help=( + "Prefer binary packages over source packages, even if the " + "source packages are newer." + ), + ) + + +cache_dir: Callable[..., Option] = partial( + PipOption, + "--cache-dir", + dest="cache_dir", + default=USER_CACHE_DIR, + metavar="dir", + type="path", + help="Store the cache data in .", +) + + +def _handle_no_cache_dir( + option: Option, opt: str, value: str, parser: OptionParser +) -> None: + """ + Process a value provided for the --no-cache-dir option. + + This is an optparse.Option callback for the --no-cache-dir option. + """ + # The value argument will be None if --no-cache-dir is passed via the + # command-line, since the option doesn't accept arguments. However, + # the value can be non-None if the option is triggered e.g. by an + # environment variable, like PIP_NO_CACHE_DIR=true. + if value is not None: + # Then parse the string value to get argument error-checking. + try: + strtobool(value) + except ValueError as exc: + raise_option_error(parser, option=option, msg=str(exc)) + + # Originally, setting PIP_NO_CACHE_DIR to a value that strtobool() + # converted to 0 (like "false" or "no") caused cache_dir to be disabled + # rather than enabled (logic would say the latter). Thus, we disable + # the cache directory not just on values that parse to True, but (for + # backwards compatibility reasons) also on values that parse to False. + # In other words, always set it to False if the option is provided in + # some (valid) form. + parser.values.cache_dir = False + + +no_cache: Callable[..., Option] = partial( + Option, + "--no-cache-dir", + dest="cache_dir", + action="callback", + callback=_handle_no_cache_dir, + help="Disable the cache.", +) + +no_deps: Callable[..., Option] = partial( + Option, + "--no-deps", + "--no-dependencies", + dest="ignore_dependencies", + action="store_true", + default=False, + help="Don't install package dependencies.", +) + +ignore_requires_python: Callable[..., Option] = partial( + Option, + "--ignore-requires-python", + dest="ignore_requires_python", + action="store_true", + help="Ignore the Requires-Python information.", +) + +no_build_isolation: Callable[..., Option] = partial( + Option, + "--no-build-isolation", + dest="build_isolation", + action="store_false", + default=True, + help="Disable isolation when building a modern source distribution. " + "Build dependencies specified by PEP 518 must be already installed " + "if this option is used.", +) + +check_build_deps: Callable[..., Option] = partial( + Option, + "--check-build-dependencies", + dest="check_build_deps", + action="store_true", + default=False, + help="Check the build dependencies when PEP517 is used.", +) + + +def _handle_no_use_pep517( + option: Option, opt: str, value: str, parser: OptionParser +) -> None: + """ + Process a value provided for the --no-use-pep517 option. + + This is an optparse.Option callback for the no_use_pep517 option. + """ + # Since --no-use-pep517 doesn't accept arguments, the value argument + # will be None if --no-use-pep517 is passed via the command-line. + # However, the value can be non-None if the option is triggered e.g. + # by an environment variable, for example "PIP_NO_USE_PEP517=true". + if value is not None: + msg = """A value was passed for --no-use-pep517, + probably using either the PIP_NO_USE_PEP517 environment variable + or the "no-use-pep517" config file option. Use an appropriate value + of the PIP_USE_PEP517 environment variable or the "use-pep517" + config file option instead. + """ + raise_option_error(parser, option=option, msg=msg) + + # If user doesn't wish to use pep517, we check if setuptools and wheel are installed + # and raise error if it is not. + packages = ("setuptools", "wheel") + if not all(importlib.util.find_spec(package) for package in packages): + msg = ( + f"It is not possible to use --no-use-pep517 " + f"without {' and '.join(packages)} installed." + ) + raise_option_error(parser, option=option, msg=msg) + + # Otherwise, --no-use-pep517 was passed via the command-line. + parser.values.use_pep517 = False + + +use_pep517: Any = partial( + Option, + "--use-pep517", + dest="use_pep517", + action="store_true", + default=None, + help="Use PEP 517 for building source distributions " + "(use --no-use-pep517 to force legacy behaviour).", +) + +no_use_pep517: Any = partial( + Option, + "--no-use-pep517", + dest="use_pep517", + action="callback", + callback=_handle_no_use_pep517, + default=None, + help=SUPPRESS_HELP, +) + + +def _handle_config_settings( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + key, sep, val = value.partition("=") + if sep != "=": + parser.error(f"Arguments to {opt_str} must be of the form KEY=VAL") + dest = getattr(parser.values, option.dest) + if dest is None: + dest = {} + setattr(parser.values, option.dest, dest) + if key in dest: + if isinstance(dest[key], list): + dest[key].append(val) + else: + dest[key] = [dest[key], val] + else: + dest[key] = val + + +config_settings: Callable[..., Option] = partial( + Option, + "-C", + "--config-settings", + dest="config_settings", + type=str, + action="callback", + callback=_handle_config_settings, + metavar="settings", + help="Configuration settings to be passed to the PEP 517 build backend. " + "Settings take the form KEY=VALUE. Use multiple --config-settings options " + "to pass multiple keys to the backend.", +) + +build_options: Callable[..., Option] = partial( + Option, + "--build-option", + dest="build_options", + metavar="options", + action="append", + help="Extra arguments to be supplied to 'setup.py bdist_wheel'.", +) + +global_options: Callable[..., Option] = partial( + Option, + "--global-option", + dest="global_options", + action="append", + metavar="options", + help="Extra global options to be supplied to the setup.py " + "call before the install or bdist_wheel command.", +) + +no_clean: Callable[..., Option] = partial( + Option, + "--no-clean", + action="store_true", + default=False, + help="Don't clean up build directories.", +) + +pre: Callable[..., Option] = partial( + Option, + "--pre", + action="store_true", + default=False, + help="Include pre-release and development versions. By default, " + "pip only finds stable versions.", +) + +disable_pip_version_check: Callable[..., Option] = partial( + Option, + "--disable-pip-version-check", + dest="disable_pip_version_check", + action="store_true", + default=False, + help="Don't periodically check PyPI to determine whether a new version " + "of pip is available for download. Implied with --no-index.", +) + +root_user_action: Callable[..., Option] = partial( + Option, + "--root-user-action", + dest="root_user_action", + default="warn", + choices=["warn", "ignore"], + help="Action if pip is run as a root user [warn, ignore] (default: warn)", +) + + +def _handle_merge_hash( + option: Option, opt_str: str, value: str, parser: OptionParser +) -> None: + """Given a value spelled "algo:digest", append the digest to a list + pointed to in a dict by the algo name.""" + if not parser.values.hashes: + parser.values.hashes = {} + try: + algo, digest = value.split(":", 1) + except ValueError: + parser.error( + f"Arguments to {opt_str} must be a hash name " + "followed by a value, like --hash=sha256:" + "abcde..." + ) + if algo not in STRONG_HASHES: + parser.error( + "Allowed hash algorithms for {} are {}.".format( + opt_str, ", ".join(STRONG_HASHES) + ) + ) + parser.values.hashes.setdefault(algo, []).append(digest) + + +hash: Callable[..., Option] = partial( + Option, + "--hash", + # Hash values eventually end up in InstallRequirement.hashes due to + # __dict__ copying in process_line(). + dest="hashes", + action="callback", + callback=_handle_merge_hash, + type="string", + help="Verify that the package's archive matches this " + "hash before installing. Example: --hash=sha256:abcdef...", +) + + +require_hashes: Callable[..., Option] = partial( + Option, + "--require-hashes", + dest="require_hashes", + action="store_true", + default=False, + help="Require a hash to check each requirement against, for " + "repeatable installs. This option is implied when any package in a " + "requirements file has a --hash option.", +) + + +list_path: Callable[..., Option] = partial( + PipOption, + "--path", + dest="path", + type="path", + action="append", + help="Restrict to the specified installation path for listing " + "packages (can be used multiple times).", +) + + +def check_list_path_option(options: Values) -> None: + if options.path and (options.user or options.local): + raise CommandError("Cannot combine '--path' with '--user' or '--local'") + + +list_exclude: Callable[..., Option] = partial( + PipOption, + "--exclude", + dest="excludes", + action="append", + metavar="package", + type="package_name", + help="Exclude specified package from the output", +) + + +no_python_version_warning: Callable[..., Option] = partial( + Option, + "--no-python-version-warning", + dest="no_python_version_warning", + action="store_true", + default=False, + help="Silence deprecation warnings for upcoming unsupported Pythons.", +) + + +# Features that are now always on. A warning is printed if they are used. +ALWAYS_ENABLED_FEATURES = [ + "truststore", # always on since 24.2 + "no-binary-enable-wheel-cache", # always on since 23.1 +] + +use_new_feature: Callable[..., Option] = partial( + Option, + "--use-feature", + dest="features_enabled", + metavar="feature", + action="append", + default=[], + choices=[ + "fast-deps", + ] + + ALWAYS_ENABLED_FEATURES, + help="Enable new functionality, that may be backward incompatible.", +) + +use_deprecated_feature: Callable[..., Option] = partial( + Option, + "--use-deprecated", + dest="deprecated_features_enabled", + metavar="feature", + action="append", + default=[], + choices=[ + "legacy-resolver", + "legacy-certs", + ], + help=("Enable deprecated functionality, that will be removed in the future."), +) + + +########## +# groups # +########## + +general_group: Dict[str, Any] = { + "name": "General Options", + "options": [ + help_, + debug_mode, + isolated_mode, + require_virtualenv, + python, + verbose, + version, + quiet, + log, + no_input, + keyring_provider, + proxy, + retries, + timeout, + exists_action, + trusted_host, + cert, + client_cert, + cache_dir, + no_cache, + disable_pip_version_check, + no_color, + no_python_version_warning, + use_new_feature, + use_deprecated_feature, + ], +} + +index_group: Dict[str, Any] = { + "name": "Package Index Options", + "options": [ + index_url, + extra_index_url, + no_index, + find_links, + ], +} diff --git a/venv/Lib/site-packages/pip/_internal/cli/command_context.py b/venv/Lib/site-packages/pip/_internal/cli/command_context.py new file mode 100644 index 00000000000..139995ac3f1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/command_context.py @@ -0,0 +1,27 @@ +from contextlib import ExitStack, contextmanager +from typing import ContextManager, Generator, TypeVar + +_T = TypeVar("_T", covariant=True) + + +class CommandContextMixIn: + def __init__(self) -> None: + super().__init__() + self._in_main_context = False + self._main_context = ExitStack() + + @contextmanager + def main_context(self) -> Generator[None, None, None]: + assert not self._in_main_context + + self._in_main_context = True + try: + with self._main_context: + yield + finally: + self._in_main_context = False + + def enter_context(self, context_provider: ContextManager[_T]) -> _T: + assert self._in_main_context + + return self._main_context.enter_context(context_provider) diff --git a/venv/Lib/site-packages/pip/_internal/cli/index_command.py b/venv/Lib/site-packages/pip/_internal/cli/index_command.py new file mode 100644 index 00000000000..226f8da1e94 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/index_command.py @@ -0,0 +1,170 @@ +""" +Contains command classes which may interact with an index / the network. + +Unlike its sister module, req_command, this module still uses lazy imports +so commands which don't always hit the network (e.g. list w/o --outdated or +--uptodate) don't need waste time importing PipSession and friends. +""" + +import logging +import os +import sys +from optparse import Values +from typing import TYPE_CHECKING, List, Optional + +from pip._vendor import certifi + +from pip._internal.cli.base_command import Command +from pip._internal.cli.command_context import CommandContextMixIn + +if TYPE_CHECKING: + from ssl import SSLContext + + from pip._internal.network.session import PipSession + +logger = logging.getLogger(__name__) + + +def _create_truststore_ssl_context() -> Optional["SSLContext"]: + if sys.version_info < (3, 10): + logger.debug("Disabling truststore because Python version isn't 3.10+") + return None + + try: + import ssl + except ImportError: + logger.warning("Disabling truststore since ssl support is missing") + return None + + try: + from pip._vendor import truststore + except ImportError: + logger.warning("Disabling truststore because platform isn't supported") + return None + + ctx = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT) + ctx.load_verify_locations(certifi.where()) + return ctx + + +class SessionCommandMixin(CommandContextMixIn): + """ + A class mixin for command classes needing _build_session(). + """ + + def __init__(self) -> None: + super().__init__() + self._session: Optional["PipSession"] = None + + @classmethod + def _get_index_urls(cls, options: Values) -> Optional[List[str]]: + """Return a list of index urls from user-provided options.""" + index_urls = [] + if not getattr(options, "no_index", False): + url = getattr(options, "index_url", None) + if url: + index_urls.append(url) + urls = getattr(options, "extra_index_urls", None) + if urls: + index_urls.extend(urls) + # Return None rather than an empty list + return index_urls or None + + def get_default_session(self, options: Values) -> "PipSession": + """Get a default-managed session.""" + if self._session is None: + self._session = self.enter_context(self._build_session(options)) + # there's no type annotation on requests.Session, so it's + # automatically ContextManager[Any] and self._session becomes Any, + # then https://github.com/python/mypy/issues/7696 kicks in + assert self._session is not None + return self._session + + def _build_session( + self, + options: Values, + retries: Optional[int] = None, + timeout: Optional[int] = None, + ) -> "PipSession": + from pip._internal.network.session import PipSession + + cache_dir = options.cache_dir + assert not cache_dir or os.path.isabs(cache_dir) + + if "legacy-certs" not in options.deprecated_features_enabled: + ssl_context = _create_truststore_ssl_context() + else: + ssl_context = None + + session = PipSession( + cache=os.path.join(cache_dir, "http-v2") if cache_dir else None, + retries=retries if retries is not None else options.retries, + trusted_hosts=options.trusted_hosts, + index_urls=self._get_index_urls(options), + ssl_context=ssl_context, + ) + + # Handle custom ca-bundles from the user + if options.cert: + session.verify = options.cert + + # Handle SSL client certificate + if options.client_cert: + session.cert = options.client_cert + + # Handle timeouts + if options.timeout or timeout: + session.timeout = timeout if timeout is not None else options.timeout + + # Handle configured proxies + if options.proxy: + session.proxies = { + "http": options.proxy, + "https": options.proxy, + } + session.trust_env = False + + # Determine if we can prompt the user for authentication or not + session.auth.prompting = not options.no_input + session.auth.keyring_provider = options.keyring_provider + + return session + + +def _pip_self_version_check(session: "PipSession", options: Values) -> None: + from pip._internal.self_outdated_check import pip_self_version_check as check + + check(session, options) + + +class IndexGroupCommand(Command, SessionCommandMixin): + """ + Abstract base class for commands with the index_group options. + + This also corresponds to the commands that permit the pip version check. + """ + + def handle_pip_version_check(self, options: Values) -> None: + """ + Do the pip version check if not disabled. + + This overrides the default behavior of not doing the check. + """ + # Make sure the index_group options are present. + assert hasattr(options, "no_index") + + if options.disable_pip_version_check or options.no_index: + return + + try: + # Otherwise, check if we're using the latest version of pip available. + session = self._build_session( + options, + retries=0, + timeout=min(5, options.timeout), + ) + with session: + _pip_self_version_check(session, options) + except Exception: + logger.warning("There was an error checking the latest version of pip.") + logger.debug("See below for error", exc_info=True) diff --git a/venv/Lib/site-packages/pip/_internal/cli/main.py b/venv/Lib/site-packages/pip/_internal/cli/main.py new file mode 100644 index 00000000000..563ac79c984 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/main.py @@ -0,0 +1,80 @@ +"""Primary application entrypoint. +""" + +import locale +import logging +import os +import sys +import warnings +from typing import List, Optional + +from pip._internal.cli.autocompletion import autocomplete +from pip._internal.cli.main_parser import parse_command +from pip._internal.commands import create_command +from pip._internal.exceptions import PipError +from pip._internal.utils import deprecation + +logger = logging.getLogger(__name__) + + +# Do not import and use main() directly! Using it directly is actively +# discouraged by pip's maintainers. The name, location and behavior of +# this function is subject to change, so calling it directly is not +# portable across different pip versions. + +# In addition, running pip in-process is unsupported and unsafe. This is +# elaborated in detail at +# https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program. +# That document also provides suggestions that should work for nearly +# all users that are considering importing and using main() directly. + +# However, we know that certain users will still want to invoke pip +# in-process. If you understand and accept the implications of using pip +# in an unsupported manner, the best approach is to use runpy to avoid +# depending on the exact location of this entry point. + +# The following example shows how to use runpy to invoke pip in that +# case: +# +# sys.argv = ["pip", your, args, here] +# runpy.run_module("pip", run_name="__main__") +# +# Note that this will exit the process after running, unlike a direct +# call to main. As it is not safe to do any processing after calling +# main, this should not be an issue in practice. + + +def main(args: Optional[List[str]] = None) -> int: + if args is None: + args = sys.argv[1:] + + # Suppress the pkg_resources deprecation warning + # Note - we use a module of .*pkg_resources to cover + # the normal case (pip._vendor.pkg_resources) and the + # devendored case (a bare pkg_resources) + warnings.filterwarnings( + action="ignore", category=DeprecationWarning, module=".*pkg_resources" + ) + + # Configure our deprecation warnings to be sent through loggers + deprecation.install_warning_logger() + + autocomplete() + + try: + cmd_name, cmd_args = parse_command(args) + except PipError as exc: + sys.stderr.write(f"ERROR: {exc}") + sys.stderr.write(os.linesep) + sys.exit(1) + + # Needed for locale.getpreferredencoding(False) to work + # in pip._internal.utils.encoding.auto_decode + try: + locale.setlocale(locale.LC_ALL, "") + except locale.Error as e: + # setlocale can apparently crash if locale are uninitialized + logger.debug("Ignoring error %s when setting locale", e) + command = create_command(cmd_name, isolated=("--isolated" in cmd_args)) + + return command.main(cmd_args) diff --git a/venv/Lib/site-packages/pip/_internal/cli/main_parser.py b/venv/Lib/site-packages/pip/_internal/cli/main_parser.py new file mode 100644 index 00000000000..5ade356b9c2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/main_parser.py @@ -0,0 +1,134 @@ +"""A single place for constructing and exposing the main parser +""" + +import os +import subprocess +import sys +from typing import List, Optional, Tuple + +from pip._internal.build_env import get_runnable_pip +from pip._internal.cli import cmdoptions +from pip._internal.cli.parser import ConfigOptionParser, UpdatingDefaultsHelpFormatter +from pip._internal.commands import commands_dict, get_similar_commands +from pip._internal.exceptions import CommandError +from pip._internal.utils.misc import get_pip_version, get_prog + +__all__ = ["create_main_parser", "parse_command"] + + +def create_main_parser() -> ConfigOptionParser: + """Creates and returns the main parser for pip's CLI""" + + parser = ConfigOptionParser( + usage="\n%prog [options]", + add_help_option=False, + formatter=UpdatingDefaultsHelpFormatter(), + name="global", + prog=get_prog(), + ) + parser.disable_interspersed_args() + + parser.version = get_pip_version() + + # add the general options + gen_opts = cmdoptions.make_option_group(cmdoptions.general_group, parser) + parser.add_option_group(gen_opts) + + # so the help formatter knows + parser.main = True # type: ignore + + # create command listing for description + description = [""] + [ + f"{name:27} {command_info.summary}" + for name, command_info in commands_dict.items() + ] + parser.description = "\n".join(description) + + return parser + + +def identify_python_interpreter(python: str) -> Optional[str]: + # If the named file exists, use it. + # If it's a directory, assume it's a virtual environment and + # look for the environment's Python executable. + if os.path.exists(python): + if os.path.isdir(python): + # bin/python for Unix, Scripts/python.exe for Windows + # Try both in case of odd cases like cygwin. + for exe in ("bin/python", "Scripts/python.exe"): + py = os.path.join(python, exe) + if os.path.exists(py): + return py + else: + return python + + # Could not find the interpreter specified + return None + + +def parse_command(args: List[str]) -> Tuple[str, List[str]]: + parser = create_main_parser() + + # Note: parser calls disable_interspersed_args(), so the result of this + # call is to split the initial args into the general options before the + # subcommand and everything else. + # For example: + # args: ['--timeout=5', 'install', '--user', 'INITools'] + # general_options: ['--timeout==5'] + # args_else: ['install', '--user', 'INITools'] + general_options, args_else = parser.parse_args(args) + + # --python + if general_options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ: + # Re-invoke pip using the specified Python interpreter + interpreter = identify_python_interpreter(general_options.python) + if interpreter is None: + raise CommandError( + f"Could not locate Python interpreter {general_options.python}" + ) + + pip_cmd = [ + interpreter, + get_runnable_pip(), + ] + pip_cmd.extend(args) + + # Set a flag so the child doesn't re-invoke itself, causing + # an infinite loop. + os.environ["_PIP_RUNNING_IN_SUBPROCESS"] = "1" + returncode = 0 + try: + proc = subprocess.run(pip_cmd) + returncode = proc.returncode + except (subprocess.SubprocessError, OSError) as exc: + raise CommandError(f"Failed to run pip under {interpreter}: {exc}") + sys.exit(returncode) + + # --version + if general_options.version: + sys.stdout.write(parser.version) + sys.stdout.write(os.linesep) + sys.exit() + + # pip || pip help -> print_help() + if not args_else or (args_else[0] == "help" and len(args_else) == 1): + parser.print_help() + sys.exit() + + # the subcommand name + cmd_name = args_else[0] + + if cmd_name not in commands_dict: + guess = get_similar_commands(cmd_name) + + msg = [f'unknown command "{cmd_name}"'] + if guess: + msg.append(f'maybe you meant "{guess}"') + + raise CommandError(" - ".join(msg)) + + # all the args without the subcommand + cmd_args = args[:] + cmd_args.remove(cmd_name) + + return cmd_name, cmd_args diff --git a/venv/Lib/site-packages/pip/_internal/cli/parser.py b/venv/Lib/site-packages/pip/_internal/cli/parser.py new file mode 100644 index 00000000000..b7d7c1f600a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/parser.py @@ -0,0 +1,294 @@ +"""Base option parser setup""" + +import logging +import optparse +import shutil +import sys +import textwrap +from contextlib import suppress +from typing import Any, Dict, Generator, List, Optional, Tuple + +from pip._internal.cli.status_codes import UNKNOWN_ERROR +from pip._internal.configuration import Configuration, ConfigurationError +from pip._internal.utils.misc import redact_auth_from_url, strtobool + +logger = logging.getLogger(__name__) + + +class PrettyHelpFormatter(optparse.IndentedHelpFormatter): + """A prettier/less verbose help formatter for optparse.""" + + def __init__(self, *args: Any, **kwargs: Any) -> None: + # help position must be aligned with __init__.parseopts.description + kwargs["max_help_position"] = 30 + kwargs["indent_increment"] = 1 + kwargs["width"] = shutil.get_terminal_size()[0] - 2 + super().__init__(*args, **kwargs) + + def format_option_strings(self, option: optparse.Option) -> str: + return self._format_option_strings(option) + + def _format_option_strings( + self, option: optparse.Option, mvarfmt: str = " <{}>", optsep: str = ", " + ) -> str: + """ + Return a comma-separated list of option strings and metavars. + + :param option: tuple of (short opt, long opt), e.g: ('-f', '--format') + :param mvarfmt: metavar format string + :param optsep: separator + """ + opts = [] + + if option._short_opts: + opts.append(option._short_opts[0]) + if option._long_opts: + opts.append(option._long_opts[0]) + if len(opts) > 1: + opts.insert(1, optsep) + + if option.takes_value(): + assert option.dest is not None + metavar = option.metavar or option.dest.lower() + opts.append(mvarfmt.format(metavar.lower())) + + return "".join(opts) + + def format_heading(self, heading: str) -> str: + if heading == "Options": + return "" + return heading + ":\n" + + def format_usage(self, usage: str) -> str: + """ + Ensure there is only one newline between usage and the first heading + if there is no description. + """ + msg = "\nUsage: {}\n".format(self.indent_lines(textwrap.dedent(usage), " ")) + return msg + + def format_description(self, description: Optional[str]) -> str: + # leave full control over description to us + if description: + if hasattr(self.parser, "main"): + label = "Commands" + else: + label = "Description" + # some doc strings have initial newlines, some don't + description = description.lstrip("\n") + # some doc strings have final newlines and spaces, some don't + description = description.rstrip() + # dedent, then reindent + description = self.indent_lines(textwrap.dedent(description), " ") + description = f"{label}:\n{description}\n" + return description + else: + return "" + + def format_epilog(self, epilog: Optional[str]) -> str: + # leave full control over epilog to us + if epilog: + return epilog + else: + return "" + + def indent_lines(self, text: str, indent: str) -> str: + new_lines = [indent + line for line in text.split("\n")] + return "\n".join(new_lines) + + +class UpdatingDefaultsHelpFormatter(PrettyHelpFormatter): + """Custom help formatter for use in ConfigOptionParser. + + This is updates the defaults before expanding them, allowing + them to show up correctly in the help listing. + + Also redact auth from url type options + """ + + def expand_default(self, option: optparse.Option) -> str: + default_values = None + if self.parser is not None: + assert isinstance(self.parser, ConfigOptionParser) + self.parser._update_defaults(self.parser.defaults) + assert option.dest is not None + default_values = self.parser.defaults.get(option.dest) + help_text = super().expand_default(option) + + if default_values and option.metavar == "URL": + if isinstance(default_values, str): + default_values = [default_values] + + # If its not a list, we should abort and just return the help text + if not isinstance(default_values, list): + default_values = [] + + for val in default_values: + help_text = help_text.replace(val, redact_auth_from_url(val)) + + return help_text + + +class CustomOptionParser(optparse.OptionParser): + def insert_option_group( + self, idx: int, *args: Any, **kwargs: Any + ) -> optparse.OptionGroup: + """Insert an OptionGroup at a given position.""" + group = self.add_option_group(*args, **kwargs) + + self.option_groups.pop() + self.option_groups.insert(idx, group) + + return group + + @property + def option_list_all(self) -> List[optparse.Option]: + """Get a list of all options, including those in option groups.""" + res = self.option_list[:] + for i in self.option_groups: + res.extend(i.option_list) + + return res + + +class ConfigOptionParser(CustomOptionParser): + """Custom option parser which updates its defaults by checking the + configuration files and environmental variables""" + + def __init__( + self, + *args: Any, + name: str, + isolated: bool = False, + **kwargs: Any, + ) -> None: + self.name = name + self.config = Configuration(isolated) + + assert self.name + super().__init__(*args, **kwargs) + + def check_default(self, option: optparse.Option, key: str, val: Any) -> Any: + try: + return option.check_value(key, val) + except optparse.OptionValueError as exc: + print(f"An error occurred during configuration: {exc}") + sys.exit(3) + + def _get_ordered_configuration_items( + self, + ) -> Generator[Tuple[str, Any], None, None]: + # Configuration gives keys in an unordered manner. Order them. + override_order = ["global", self.name, ":env:"] + + # Pool the options into different groups + section_items: Dict[str, List[Tuple[str, Any]]] = { + name: [] for name in override_order + } + for section_key, val in self.config.items(): + # ignore empty values + if not val: + logger.debug( + "Ignoring configuration key '%s' as it's value is empty.", + section_key, + ) + continue + + section, key = section_key.split(".", 1) + if section in override_order: + section_items[section].append((key, val)) + + # Yield each group in their override order + for section in override_order: + for key, val in section_items[section]: + yield key, val + + def _update_defaults(self, defaults: Dict[str, Any]) -> Dict[str, Any]: + """Updates the given defaults with values from the config files and + the environ. Does a little special handling for certain types of + options (lists).""" + + # Accumulate complex default state. + self.values = optparse.Values(self.defaults) + late_eval = set() + # Then set the options with those values + for key, val in self._get_ordered_configuration_items(): + # '--' because configuration supports only long names + option = self.get_option("--" + key) + + # Ignore options not present in this parser. E.g. non-globals put + # in [global] by users that want them to apply to all applicable + # commands. + if option is None: + continue + + assert option.dest is not None + + if option.action in ("store_true", "store_false"): + try: + val = strtobool(val) + except ValueError: + self.error( + f"{val} is not a valid value for {key} option, " + "please specify a boolean value like yes/no, " + "true/false or 1/0 instead." + ) + elif option.action == "count": + with suppress(ValueError): + val = strtobool(val) + with suppress(ValueError): + val = int(val) + if not isinstance(val, int) or val < 0: + self.error( + f"{val} is not a valid value for {key} option, " + "please instead specify either a non-negative integer " + "or a boolean value like yes/no or false/true " + "which is equivalent to 1/0." + ) + elif option.action == "append": + val = val.split() + val = [self.check_default(option, key, v) for v in val] + elif option.action == "callback": + assert option.callback is not None + late_eval.add(option.dest) + opt_str = option.get_opt_string() + val = option.convert_value(opt_str, val) + # From take_action + args = option.callback_args or () + kwargs = option.callback_kwargs or {} + option.callback(option, opt_str, val, self, *args, **kwargs) + else: + val = self.check_default(option, key, val) + + defaults[option.dest] = val + + for key in late_eval: + defaults[key] = getattr(self.values, key) + self.values = None + return defaults + + def get_default_values(self) -> optparse.Values: + """Overriding to make updating the defaults after instantiation of + the option parser possible, _update_defaults() does the dirty work.""" + if not self.process_default_values: + # Old, pre-Optik 1.5 behaviour. + return optparse.Values(self.defaults) + + # Load the configuration, or error out in case of an error + try: + self.config.load() + except ConfigurationError as err: + self.exit(UNKNOWN_ERROR, str(err)) + + defaults = self._update_defaults(self.defaults.copy()) # ours + for option in self._get_all_options(): + assert option.dest is not None + default = defaults.get(option.dest) + if isinstance(default, str): + opt_str = option.get_opt_string() + defaults[option.dest] = option.check_value(opt_str, default) + return optparse.Values(defaults) + + def error(self, msg: str) -> None: + self.print_usage(sys.stderr) + self.exit(UNKNOWN_ERROR, f"{msg}\n") diff --git a/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py b/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py new file mode 100644 index 00000000000..883359c9ce7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py @@ -0,0 +1,94 @@ +import functools +import sys +from typing import Callable, Generator, Iterable, Iterator, Optional, Tuple + +from pip._vendor.rich.progress import ( + BarColumn, + DownloadColumn, + FileSizeColumn, + Progress, + ProgressColumn, + SpinnerColumn, + TextColumn, + TimeElapsedColumn, + TimeRemainingColumn, + TransferSpeedColumn, +) + +from pip._internal.cli.spinners import RateLimiter +from pip._internal.utils.logging import get_indentation + +DownloadProgressRenderer = Callable[[Iterable[bytes]], Iterator[bytes]] + + +def _rich_progress_bar( + iterable: Iterable[bytes], + *, + bar_type: str, + size: int, +) -> Generator[bytes, None, None]: + assert bar_type == "on", "This should only be used in the default mode." + + if not size: + total = float("inf") + columns: Tuple[ProgressColumn, ...] = ( + TextColumn("[progress.description]{task.description}"), + SpinnerColumn("line", speed=1.5), + FileSizeColumn(), + TransferSpeedColumn(), + TimeElapsedColumn(), + ) + else: + total = size + columns = ( + TextColumn("[progress.description]{task.description}"), + BarColumn(), + DownloadColumn(), + TransferSpeedColumn(), + TextColumn("eta"), + TimeRemainingColumn(), + ) + + progress = Progress(*columns, refresh_per_second=5) + task_id = progress.add_task(" " * (get_indentation() + 2), total=total) + with progress: + for chunk in iterable: + yield chunk + progress.update(task_id, advance=len(chunk)) + + +def _raw_progress_bar( + iterable: Iterable[bytes], + *, + size: Optional[int], +) -> Generator[bytes, None, None]: + def write_progress(current: int, total: int) -> None: + sys.stdout.write("Progress %d of %d\n" % (current, total)) + sys.stdout.flush() + + current = 0 + total = size or 0 + rate_limiter = RateLimiter(0.25) + + write_progress(current, total) + for chunk in iterable: + current += len(chunk) + if rate_limiter.ready() or current == total: + write_progress(current, total) + rate_limiter.reset() + yield chunk + + +def get_download_progress_renderer( + *, bar_type: str, size: Optional[int] = None +) -> DownloadProgressRenderer: + """Get an object that can be used to render the download progress. + + Returns a callable, that takes an iterable to "wrap". + """ + if bar_type == "on": + return functools.partial(_rich_progress_bar, bar_type=bar_type, size=size) + elif bar_type == "raw": + return functools.partial(_raw_progress_bar, size=size) + else: + return iter # no-op, when passed an iterator diff --git a/venv/Lib/site-packages/pip/_internal/cli/req_command.py b/venv/Lib/site-packages/pip/_internal/cli/req_command.py new file mode 100644 index 00000000000..92900f94ff4 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/req_command.py @@ -0,0 +1,329 @@ +"""Contains the RequirementCommand base class. + +This class is in a separate module so the commands that do not always +need PackageFinder capability don't unnecessarily import the +PackageFinder machinery and all its vendored dependencies, etc. +""" + +import logging +from functools import partial +from optparse import Values +from typing import Any, List, Optional, Tuple + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.index_command import IndexGroupCommand +from pip._internal.cli.index_command import SessionCommandMixin as SessionCommandMixin +from pip._internal.exceptions import CommandError, PreviousBuildDirError +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.models.target_python import TargetPython +from pip._internal.network.session import PipSession +from pip._internal.operations.build.build_tracker import BuildTracker +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, + install_req_from_parsed_requirement, + install_req_from_req_string, +) +from pip._internal.req.req_file import parse_requirements +from pip._internal.req.req_install import InstallRequirement +from pip._internal.resolution.base import BaseResolver +from pip._internal.utils.temp_dir import ( + TempDirectory, + TempDirectoryTypeRegistry, + tempdir_kinds, +) + +logger = logging.getLogger(__name__) + + +KEEPABLE_TEMPDIR_TYPES = [ + tempdir_kinds.BUILD_ENV, + tempdir_kinds.EPHEM_WHEEL_CACHE, + tempdir_kinds.REQ_BUILD, +] + + +def with_cleanup(func: Any) -> Any: + """Decorator for common logic related to managing temporary + directories. + """ + + def configure_tempdir_registry(registry: TempDirectoryTypeRegistry) -> None: + for t in KEEPABLE_TEMPDIR_TYPES: + registry.set_delete(t, False) + + def wrapper( + self: RequirementCommand, options: Values, args: List[Any] + ) -> Optional[int]: + assert self.tempdir_registry is not None + if options.no_clean: + configure_tempdir_registry(self.tempdir_registry) + + try: + return func(self, options, args) + except PreviousBuildDirError: + # This kind of conflict can occur when the user passes an explicit + # build directory with a pre-existing folder. In that case we do + # not want to accidentally remove it. + configure_tempdir_registry(self.tempdir_registry) + raise + + return wrapper + + +class RequirementCommand(IndexGroupCommand): + def __init__(self, *args: Any, **kw: Any) -> None: + super().__init__(*args, **kw) + + self.cmd_opts.add_option(cmdoptions.no_clean()) + + @staticmethod + def determine_resolver_variant(options: Values) -> str: + """Determines which resolver should be used, based on the given options.""" + if "legacy-resolver" in options.deprecated_features_enabled: + return "legacy" + + return "resolvelib" + + @classmethod + def make_requirement_preparer( + cls, + temp_build_dir: TempDirectory, + options: Values, + build_tracker: BuildTracker, + session: PipSession, + finder: PackageFinder, + use_user_site: bool, + download_dir: Optional[str] = None, + verbosity: int = 0, + ) -> RequirementPreparer: + """ + Create a RequirementPreparer instance for the given parameters. + """ + temp_build_dir_path = temp_build_dir.path + assert temp_build_dir_path is not None + legacy_resolver = False + + resolver_variant = cls.determine_resolver_variant(options) + if resolver_variant == "resolvelib": + lazy_wheel = "fast-deps" in options.features_enabled + if lazy_wheel: + logger.warning( + "pip is using lazily downloaded wheels using HTTP " + "range requests to obtain dependency information. " + "This experimental feature is enabled through " + "--use-feature=fast-deps and it is not ready for " + "production." + ) + else: + legacy_resolver = True + lazy_wheel = False + if "fast-deps" in options.features_enabled: + logger.warning( + "fast-deps has no effect when used with the legacy resolver." + ) + + return RequirementPreparer( + build_dir=temp_build_dir_path, + src_dir=options.src_dir, + download_dir=download_dir, + build_isolation=options.build_isolation, + check_build_deps=options.check_build_deps, + build_tracker=build_tracker, + session=session, + progress_bar=options.progress_bar, + finder=finder, + require_hashes=options.require_hashes, + use_user_site=use_user_site, + lazy_wheel=lazy_wheel, + verbosity=verbosity, + legacy_resolver=legacy_resolver, + ) + + @classmethod + def make_resolver( + cls, + preparer: RequirementPreparer, + finder: PackageFinder, + options: Values, + wheel_cache: Optional[WheelCache] = None, + use_user_site: bool = False, + ignore_installed: bool = True, + ignore_requires_python: bool = False, + force_reinstall: bool = False, + upgrade_strategy: str = "to-satisfy-only", + use_pep517: Optional[bool] = None, + py_version_info: Optional[Tuple[int, ...]] = None, + ) -> BaseResolver: + """ + Create a Resolver instance for the given parameters. + """ + make_install_req = partial( + install_req_from_req_string, + isolated=options.isolated_mode, + use_pep517=use_pep517, + ) + resolver_variant = cls.determine_resolver_variant(options) + # The long import name and duplicated invocation is needed to convince + # Mypy into correctly typechecking. Otherwise it would complain the + # "Resolver" class being redefined. + if resolver_variant == "resolvelib": + import pip._internal.resolution.resolvelib.resolver + + return pip._internal.resolution.resolvelib.resolver.Resolver( + preparer=preparer, + finder=finder, + wheel_cache=wheel_cache, + make_install_req=make_install_req, + use_user_site=use_user_site, + ignore_dependencies=options.ignore_dependencies, + ignore_installed=ignore_installed, + ignore_requires_python=ignore_requires_python, + force_reinstall=force_reinstall, + upgrade_strategy=upgrade_strategy, + py_version_info=py_version_info, + ) + import pip._internal.resolution.legacy.resolver + + return pip._internal.resolution.legacy.resolver.Resolver( + preparer=preparer, + finder=finder, + wheel_cache=wheel_cache, + make_install_req=make_install_req, + use_user_site=use_user_site, + ignore_dependencies=options.ignore_dependencies, + ignore_installed=ignore_installed, + ignore_requires_python=ignore_requires_python, + force_reinstall=force_reinstall, + upgrade_strategy=upgrade_strategy, + py_version_info=py_version_info, + ) + + def get_requirements( + self, + args: List[str], + options: Values, + finder: PackageFinder, + session: PipSession, + ) -> List[InstallRequirement]: + """ + Parse command-line arguments into the corresponding requirements. + """ + requirements: List[InstallRequirement] = [] + for filename in options.constraints: + for parsed_req in parse_requirements( + filename, + constraint=True, + finder=finder, + options=options, + session=session, + ): + req_to_add = install_req_from_parsed_requirement( + parsed_req, + isolated=options.isolated_mode, + user_supplied=False, + ) + requirements.append(req_to_add) + + for req in args: + req_to_add = install_req_from_line( + req, + comes_from=None, + isolated=options.isolated_mode, + use_pep517=options.use_pep517, + user_supplied=True, + config_settings=getattr(options, "config_settings", None), + ) + requirements.append(req_to_add) + + for req in options.editables: + req_to_add = install_req_from_editable( + req, + user_supplied=True, + isolated=options.isolated_mode, + use_pep517=options.use_pep517, + config_settings=getattr(options, "config_settings", None), + ) + requirements.append(req_to_add) + + # NOTE: options.require_hashes may be set if --require-hashes is True + for filename in options.requirements: + for parsed_req in parse_requirements( + filename, finder=finder, options=options, session=session + ): + req_to_add = install_req_from_parsed_requirement( + parsed_req, + isolated=options.isolated_mode, + use_pep517=options.use_pep517, + user_supplied=True, + config_settings=( + parsed_req.options.get("config_settings") + if parsed_req.options + else None + ), + ) + requirements.append(req_to_add) + + # If any requirement has hash options, enable hash checking. + if any(req.has_hash_options for req in requirements): + options.require_hashes = True + + if not (args or options.editables or options.requirements): + opts = {"name": self.name} + if options.find_links: + raise CommandError( + "You must give at least one requirement to {name} " + '(maybe you meant "pip {name} {links}"?)'.format( + **dict(opts, links=" ".join(options.find_links)) + ) + ) + else: + raise CommandError( + "You must give at least one requirement to {name} " + '(see "pip help {name}")'.format(**opts) + ) + + return requirements + + @staticmethod + def trace_basic_info(finder: PackageFinder) -> None: + """ + Trace basic information about the provided objects. + """ + # Display where finder is looking for packages + search_scope = finder.search_scope + locations = search_scope.get_formatted_locations() + if locations: + logger.info(locations) + + def _build_package_finder( + self, + options: Values, + session: PipSession, + target_python: Optional[TargetPython] = None, + ignore_requires_python: Optional[bool] = None, + ) -> PackageFinder: + """ + Create a package finder appropriate to this requirement command. + + :param ignore_requires_python: Whether to ignore incompatible + "Requires-Python" values in links. Defaults to False. + """ + link_collector = LinkCollector.create(session, options=options) + selection_prefs = SelectionPreferences( + allow_yanked=True, + format_control=options.format_control, + allow_all_prereleases=options.pre, + prefer_binary=options.prefer_binary, + ignore_requires_python=ignore_requires_python, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + target_python=target_python, + ) diff --git a/venv/Lib/site-packages/pip/_internal/cli/spinners.py b/venv/Lib/site-packages/pip/_internal/cli/spinners.py new file mode 100644 index 00000000000..cf2b976f377 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/spinners.py @@ -0,0 +1,159 @@ +import contextlib +import itertools +import logging +import sys +import time +from typing import IO, Generator, Optional + +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.logging import get_indentation + +logger = logging.getLogger(__name__) + + +class SpinnerInterface: + def spin(self) -> None: + raise NotImplementedError() + + def finish(self, final_status: str) -> None: + raise NotImplementedError() + + +class InteractiveSpinner(SpinnerInterface): + def __init__( + self, + message: str, + file: Optional[IO[str]] = None, + spin_chars: str = "-\\|/", + # Empirically, 8 updates/second looks nice + min_update_interval_seconds: float = 0.125, + ): + self._message = message + if file is None: + file = sys.stdout + self._file = file + self._rate_limiter = RateLimiter(min_update_interval_seconds) + self._finished = False + + self._spin_cycle = itertools.cycle(spin_chars) + + self._file.write(" " * get_indentation() + self._message + " ... ") + self._width = 0 + + def _write(self, status: str) -> None: + assert not self._finished + # Erase what we wrote before by backspacing to the beginning, writing + # spaces to overwrite the old text, and then backspacing again + backup = "\b" * self._width + self._file.write(backup + " " * self._width + backup) + # Now we have a blank slate to add our status + self._file.write(status) + self._width = len(status) + self._file.flush() + self._rate_limiter.reset() + + def spin(self) -> None: + if self._finished: + return + if not self._rate_limiter.ready(): + return + self._write(next(self._spin_cycle)) + + def finish(self, final_status: str) -> None: + if self._finished: + return + self._write(final_status) + self._file.write("\n") + self._file.flush() + self._finished = True + + +# Used for dumb terminals, non-interactive installs (no tty), etc. +# We still print updates occasionally (once every 60 seconds by default) to +# act as a keep-alive for systems like Travis-CI that take lack-of-output as +# an indication that a task has frozen. +class NonInteractiveSpinner(SpinnerInterface): + def __init__(self, message: str, min_update_interval_seconds: float = 60.0) -> None: + self._message = message + self._finished = False + self._rate_limiter = RateLimiter(min_update_interval_seconds) + self._update("started") + + def _update(self, status: str) -> None: + assert not self._finished + self._rate_limiter.reset() + logger.info("%s: %s", self._message, status) + + def spin(self) -> None: + if self._finished: + return + if not self._rate_limiter.ready(): + return + self._update("still running...") + + def finish(self, final_status: str) -> None: + if self._finished: + return + self._update(f"finished with status '{final_status}'") + self._finished = True + + +class RateLimiter: + def __init__(self, min_update_interval_seconds: float) -> None: + self._min_update_interval_seconds = min_update_interval_seconds + self._last_update: float = 0 + + def ready(self) -> bool: + now = time.time() + delta = now - self._last_update + return delta >= self._min_update_interval_seconds + + def reset(self) -> None: + self._last_update = time.time() + + +@contextlib.contextmanager +def open_spinner(message: str) -> Generator[SpinnerInterface, None, None]: + # Interactive spinner goes directly to sys.stdout rather than being routed + # through the logging system, but it acts like it has level INFO, + # i.e. it's only displayed if we're at level INFO or better. + # Non-interactive spinner goes through the logging system, so it is always + # in sync with logging configuration. + if sys.stdout.isatty() and logger.getEffectiveLevel() <= logging.INFO: + spinner: SpinnerInterface = InteractiveSpinner(message) + else: + spinner = NonInteractiveSpinner(message) + try: + with hidden_cursor(sys.stdout): + yield spinner + except KeyboardInterrupt: + spinner.finish("canceled") + raise + except Exception: + spinner.finish("error") + raise + else: + spinner.finish("done") + + +HIDE_CURSOR = "\x1b[?25l" +SHOW_CURSOR = "\x1b[?25h" + + +@contextlib.contextmanager +def hidden_cursor(file: IO[str]) -> Generator[None, None, None]: + # The Windows terminal does not support the hide/show cursor ANSI codes, + # even via colorama. So don't even try. + if WINDOWS: + yield + # We don't want to clutter the output with control characters if we're + # writing to a file, or if the user is running with --quiet. + # See https://github.com/pypa/pip/issues/3418 + elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO: + yield + else: + file.write(HIDE_CURSOR) + try: + yield + finally: + file.write(SHOW_CURSOR) diff --git a/venv/Lib/site-packages/pip/_internal/cli/status_codes.py b/venv/Lib/site-packages/pip/_internal/cli/status_codes.py new file mode 100644 index 00000000000..5e29502cddf --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/cli/status_codes.py @@ -0,0 +1,6 @@ +SUCCESS = 0 +ERROR = 1 +UNKNOWN_ERROR = 2 +VIRTUALENV_NOT_FOUND = 3 +PREVIOUS_BUILD_DIR_ERROR = 4 +NO_MATCHES_FOUND = 23 diff --git a/venv/Lib/site-packages/pip/_internal/commands/__init__.py b/venv/Lib/site-packages/pip/_internal/commands/__init__.py new file mode 100644 index 00000000000..858a4101416 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/__init__.py @@ -0,0 +1,132 @@ +""" +Package containing all pip commands +""" + +import importlib +from collections import namedtuple +from typing import Any, Dict, Optional + +from pip._internal.cli.base_command import Command + +CommandInfo = namedtuple("CommandInfo", "module_path, class_name, summary") + +# This dictionary does a bunch of heavy lifting for help output: +# - Enables avoiding additional (costly) imports for presenting `--help`. +# - The ordering matters for help display. +# +# Even though the module path starts with the same "pip._internal.commands" +# prefix, the full path makes testing easier (specifically when modifying +# `commands_dict` in test setup / teardown). +commands_dict: Dict[str, CommandInfo] = { + "install": CommandInfo( + "pip._internal.commands.install", + "InstallCommand", + "Install packages.", + ), + "download": CommandInfo( + "pip._internal.commands.download", + "DownloadCommand", + "Download packages.", + ), + "uninstall": CommandInfo( + "pip._internal.commands.uninstall", + "UninstallCommand", + "Uninstall packages.", + ), + "freeze": CommandInfo( + "pip._internal.commands.freeze", + "FreezeCommand", + "Output installed packages in requirements format.", + ), + "inspect": CommandInfo( + "pip._internal.commands.inspect", + "InspectCommand", + "Inspect the python environment.", + ), + "list": CommandInfo( + "pip._internal.commands.list", + "ListCommand", + "List installed packages.", + ), + "show": CommandInfo( + "pip._internal.commands.show", + "ShowCommand", + "Show information about installed packages.", + ), + "check": CommandInfo( + "pip._internal.commands.check", + "CheckCommand", + "Verify installed packages have compatible dependencies.", + ), + "config": CommandInfo( + "pip._internal.commands.configuration", + "ConfigurationCommand", + "Manage local and global configuration.", + ), + "search": CommandInfo( + "pip._internal.commands.search", + "SearchCommand", + "Search PyPI for packages.", + ), + "cache": CommandInfo( + "pip._internal.commands.cache", + "CacheCommand", + "Inspect and manage pip's wheel cache.", + ), + "index": CommandInfo( + "pip._internal.commands.index", + "IndexCommand", + "Inspect information available from package indexes.", + ), + "wheel": CommandInfo( + "pip._internal.commands.wheel", + "WheelCommand", + "Build wheels from your requirements.", + ), + "hash": CommandInfo( + "pip._internal.commands.hash", + "HashCommand", + "Compute hashes of package archives.", + ), + "completion": CommandInfo( + "pip._internal.commands.completion", + "CompletionCommand", + "A helper command used for command completion.", + ), + "debug": CommandInfo( + "pip._internal.commands.debug", + "DebugCommand", + "Show information useful for debugging.", + ), + "help": CommandInfo( + "pip._internal.commands.help", + "HelpCommand", + "Show help for commands.", + ), +} + + +def create_command(name: str, **kwargs: Any) -> Command: + """ + Create an instance of the Command class with the given name. + """ + module_path, class_name, summary = commands_dict[name] + module = importlib.import_module(module_path) + command_class = getattr(module, class_name) + command = command_class(name=name, summary=summary, **kwargs) + + return command + + +def get_similar_commands(name: str) -> Optional[str]: + """Command name auto-correct.""" + from difflib import get_close_matches + + name = name.lower() + + close_commands = get_close_matches(name, commands_dict.keys()) + + if close_commands: + return close_commands[0] + else: + return None diff --git a/venv/Lib/site-packages/pip/_internal/commands/cache.py b/venv/Lib/site-packages/pip/_internal/commands/cache.py new file mode 100644 index 00000000000..328336152cc --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/cache.py @@ -0,0 +1,225 @@ +import os +import textwrap +from optparse import Values +from typing import Any, List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.exceptions import CommandError, PipError +from pip._internal.utils import filesystem +from pip._internal.utils.logging import getLogger + +logger = getLogger(__name__) + + +class CacheCommand(Command): + """ + Inspect and manage pip's wheel cache. + + Subcommands: + + - dir: Show the cache directory. + - info: Show information about the cache. + - list: List filenames of packages stored in the cache. + - remove: Remove one or more package from the cache. + - purge: Remove all items from the cache. + + ```` can be a glob expression or a package name. + """ + + ignore_require_venv = True + usage = """ + %prog dir + %prog info + %prog list [] [--format=[human, abspath]] + %prog remove + %prog purge + """ + + def add_options(self) -> None: + self.cmd_opts.add_option( + "--format", + action="store", + dest="list_format", + default="human", + choices=("human", "abspath"), + help="Select the output format among: human (default) or abspath", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + handlers = { + "dir": self.get_cache_dir, + "info": self.get_cache_info, + "list": self.list_cache_items, + "remove": self.remove_cache_items, + "purge": self.purge_cache, + } + + if not options.cache_dir: + logger.error("pip cache commands can not function since cache is disabled.") + return ERROR + + # Determine action + if not args or args[0] not in handlers: + logger.error( + "Need an action (%s) to perform.", + ", ".join(sorted(handlers)), + ) + return ERROR + + action = args[0] + + # Error handling happens here, not in the action-handlers. + try: + handlers[action](options, args[1:]) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + return SUCCESS + + def get_cache_dir(self, options: Values, args: List[Any]) -> None: + if args: + raise CommandError("Too many arguments") + + logger.info(options.cache_dir) + + def get_cache_info(self, options: Values, args: List[Any]) -> None: + if args: + raise CommandError("Too many arguments") + + num_http_files = len(self._find_http_files(options)) + num_packages = len(self._find_wheels(options, "*")) + + http_cache_location = self._cache_dir(options, "http-v2") + old_http_cache_location = self._cache_dir(options, "http") + wheels_cache_location = self._cache_dir(options, "wheels") + http_cache_size = filesystem.format_size( + filesystem.directory_size(http_cache_location) + + filesystem.directory_size(old_http_cache_location) + ) + wheels_cache_size = filesystem.format_directory_size(wheels_cache_location) + + message = ( + textwrap.dedent( + """ + Package index page cache location (pip v23.3+): {http_cache_location} + Package index page cache location (older pips): {old_http_cache_location} + Package index page cache size: {http_cache_size} + Number of HTTP files: {num_http_files} + Locally built wheels location: {wheels_cache_location} + Locally built wheels size: {wheels_cache_size} + Number of locally built wheels: {package_count} + """ # noqa: E501 + ) + .format( + http_cache_location=http_cache_location, + old_http_cache_location=old_http_cache_location, + http_cache_size=http_cache_size, + num_http_files=num_http_files, + wheels_cache_location=wheels_cache_location, + package_count=num_packages, + wheels_cache_size=wheels_cache_size, + ) + .strip() + ) + + logger.info(message) + + def list_cache_items(self, options: Values, args: List[Any]) -> None: + if len(args) > 1: + raise CommandError("Too many arguments") + + if args: + pattern = args[0] + else: + pattern = "*" + + files = self._find_wheels(options, pattern) + if options.list_format == "human": + self.format_for_human(files) + else: + self.format_for_abspath(files) + + def format_for_human(self, files: List[str]) -> None: + if not files: + logger.info("No locally built wheels cached.") + return + + results = [] + for filename in files: + wheel = os.path.basename(filename) + size = filesystem.format_file_size(filename) + results.append(f" - {wheel} ({size})") + logger.info("Cache contents:\n") + logger.info("\n".join(sorted(results))) + + def format_for_abspath(self, files: List[str]) -> None: + if files: + logger.info("\n".join(sorted(files))) + + def remove_cache_items(self, options: Values, args: List[Any]) -> None: + if len(args) > 1: + raise CommandError("Too many arguments") + + if not args: + raise CommandError("Please provide a pattern") + + files = self._find_wheels(options, args[0]) + + no_matching_msg = "No matching packages" + if args[0] == "*": + # Only fetch http files if no specific pattern given + files += self._find_http_files(options) + else: + # Add the pattern to the log message + no_matching_msg += f' for pattern "{args[0]}"' + + if not files: + logger.warning(no_matching_msg) + + for filename in files: + os.unlink(filename) + logger.verbose("Removed %s", filename) + logger.info("Files removed: %s", len(files)) + + def purge_cache(self, options: Values, args: List[Any]) -> None: + if args: + raise CommandError("Too many arguments") + + return self.remove_cache_items(options, ["*"]) + + def _cache_dir(self, options: Values, subdir: str) -> str: + return os.path.join(options.cache_dir, subdir) + + def _find_http_files(self, options: Values) -> List[str]: + old_http_dir = self._cache_dir(options, "http") + new_http_dir = self._cache_dir(options, "http-v2") + return filesystem.find_files(old_http_dir, "*") + filesystem.find_files( + new_http_dir, "*" + ) + + def _find_wheels(self, options: Values, pattern: str) -> List[str]: + wheel_dir = self._cache_dir(options, "wheels") + + # The wheel filename format, as specified in PEP 427, is: + # {distribution}-{version}(-{build})?-{python}-{abi}-{platform}.whl + # + # Additionally, non-alphanumeric values in the distribution are + # normalized to underscores (_), meaning hyphens can never occur + # before `-{version}`. + # + # Given that information: + # - If the pattern we're given contains a hyphen (-), the user is + # providing at least the version. Thus, we can just append `*.whl` + # to match the rest of it. + # - If the pattern we're given doesn't contain a hyphen (-), the + # user is only providing the name. Thus, we append `-*.whl` to + # match the hyphen before the version, followed by anything else. + # + # PEP 427: https://www.python.org/dev/peps/pep-0427/ + pattern = pattern + ("*.whl" if "-" in pattern else "-*.whl") + + return filesystem.find_files(wheel_dir, pattern) diff --git a/venv/Lib/site-packages/pip/_internal/commands/check.py b/venv/Lib/site-packages/pip/_internal/commands/check.py new file mode 100644 index 00000000000..f54a16dc0a1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/check.py @@ -0,0 +1,67 @@ +import logging +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.metadata import get_default_environment +from pip._internal.operations.check import ( + check_package_set, + check_unsupported, + create_package_set_from_installed, +) +from pip._internal.utils.compatibility_tags import get_supported +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class CheckCommand(Command): + """Verify installed packages have compatible dependencies.""" + + ignore_require_venv = True + usage = """ + %prog [options]""" + + def run(self, options: Values, args: List[str]) -> int: + package_set, parsing_probs = create_package_set_from_installed() + missing, conflicting = check_package_set(package_set) + unsupported = list( + check_unsupported( + get_default_environment().iter_installed_distributions(), + get_supported(), + ) + ) + + for project_name in missing: + version = package_set[project_name].version + for dependency in missing[project_name]: + write_output( + "%s %s requires %s, which is not installed.", + project_name, + version, + dependency[0], + ) + + for project_name in conflicting: + version = package_set[project_name].version + for dep_name, dep_version, req in conflicting[project_name]: + write_output( + "%s %s has requirement %s, but you have %s %s.", + project_name, + version, + req, + dep_name, + dep_version, + ) + for package in unsupported: + write_output( + "%s %s is not supported on this platform", + package.raw_name, + package.version, + ) + if missing or conflicting or parsing_probs or unsupported: + return ERROR + else: + write_output("No broken requirements found.") + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/completion.py b/venv/Lib/site-packages/pip/_internal/commands/completion.py new file mode 100644 index 00000000000..9e89e279883 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/completion.py @@ -0,0 +1,130 @@ +import sys +import textwrap +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.utils.misc import get_prog + +BASE_COMPLETION = """ +# pip {shell} completion start{script}# pip {shell} completion end +""" + +COMPLETION_SCRIPTS = { + "bash": """ + _pip_completion() + {{ + COMPREPLY=( $( COMP_WORDS="${{COMP_WORDS[*]}}" \\ + COMP_CWORD=$COMP_CWORD \\ + PIP_AUTO_COMPLETE=1 $1 2>/dev/null ) ) + }} + complete -o default -F _pip_completion {prog} + """, + "zsh": """ + #compdef -P pip[0-9.]# + __pip() {{ + compadd $( COMP_WORDS="$words[*]" \\ + COMP_CWORD=$((CURRENT-1)) \\ + PIP_AUTO_COMPLETE=1 $words[1] 2>/dev/null ) + }} + if [[ $zsh_eval_context[-1] == loadautofunc ]]; then + # autoload from fpath, call function directly + __pip "$@" + else + # eval/source/. command, register function for later + compdef __pip -P 'pip[0-9.]#' + fi + """, + "fish": """ + function __fish_complete_pip + set -lx COMP_WORDS (commandline -o) "" + set -lx COMP_CWORD ( \\ + math (contains -i -- (commandline -t) $COMP_WORDS)-1 \\ + ) + set -lx PIP_AUTO_COMPLETE 1 + string split \\ -- (eval $COMP_WORDS[1]) + end + complete -fa "(__fish_complete_pip)" -c {prog} + """, + "powershell": """ + if ((Test-Path Function:\\TabExpansion) -and -not ` + (Test-Path Function:\\_pip_completeBackup)) {{ + Rename-Item Function:\\TabExpansion _pip_completeBackup + }} + function TabExpansion($line, $lastWord) {{ + $lastBlock = [regex]::Split($line, '[|;]')[-1].TrimStart() + if ($lastBlock.StartsWith("{prog} ")) {{ + $Env:COMP_WORDS=$lastBlock + $Env:COMP_CWORD=$lastBlock.Split().Length - 1 + $Env:PIP_AUTO_COMPLETE=1 + (& {prog}).Split() + Remove-Item Env:COMP_WORDS + Remove-Item Env:COMP_CWORD + Remove-Item Env:PIP_AUTO_COMPLETE + }} + elseif (Test-Path Function:\\_pip_completeBackup) {{ + # Fall back on existing tab expansion + _pip_completeBackup $line $lastWord + }} + }} + """, +} + + +class CompletionCommand(Command): + """A helper command to be used for command completion.""" + + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "--bash", + "-b", + action="store_const", + const="bash", + dest="shell", + help="Emit completion code for bash", + ) + self.cmd_opts.add_option( + "--zsh", + "-z", + action="store_const", + const="zsh", + dest="shell", + help="Emit completion code for zsh", + ) + self.cmd_opts.add_option( + "--fish", + "-f", + action="store_const", + const="fish", + dest="shell", + help="Emit completion code for fish", + ) + self.cmd_opts.add_option( + "--powershell", + "-p", + action="store_const", + const="powershell", + dest="shell", + help="Emit completion code for powershell", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + """Prints the completion code of the given shell""" + shells = COMPLETION_SCRIPTS.keys() + shell_options = ["--" + shell for shell in sorted(shells)] + if options.shell in shells: + script = textwrap.dedent( + COMPLETION_SCRIPTS.get(options.shell, "").format(prog=get_prog()) + ) + print(BASE_COMPLETION.format(script=script, shell=options.shell)) + return SUCCESS + else: + sys.stderr.write( + "ERROR: You must pass {}\n".format(" or ".join(shell_options)) + ) + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/configuration.py b/venv/Lib/site-packages/pip/_internal/commands/configuration.py new file mode 100644 index 00000000000..1a1dc6b6cd8 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/configuration.py @@ -0,0 +1,280 @@ +import logging +import os +import subprocess +from optparse import Values +from typing import Any, List, Optional + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.configuration import ( + Configuration, + Kind, + get_configuration_files, + kinds, +) +from pip._internal.exceptions import PipError +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import get_prog, write_output + +logger = logging.getLogger(__name__) + + +class ConfigurationCommand(Command): + """ + Manage local and global configuration. + + Subcommands: + + - list: List the active configuration (or from the file specified) + - edit: Edit the configuration file in an editor + - get: Get the value associated with command.option + - set: Set the command.option=value + - unset: Unset the value associated with command.option + - debug: List the configuration files and values defined under them + + Configuration keys should be dot separated command and option name, + with the special prefix "global" affecting any command. For example, + "pip config set global.index-url https://example.org/" would configure + the index url for all commands, but "pip config set download.timeout 10" + would configure a 10 second timeout only for "pip download" commands. + + If none of --user, --global and --site are passed, a virtual + environment configuration file is used if one is active and the file + exists. Otherwise, all modifications happen to the user file by + default. + """ + + ignore_require_venv = True + usage = """ + %prog [] list + %prog [] [--editor ] edit + + %prog [] get command.option + %prog [] set command.option value + %prog [] unset command.option + %prog [] debug + """ + + def add_options(self) -> None: + self.cmd_opts.add_option( + "--editor", + dest="editor", + action="store", + default=None, + help=( + "Editor to use to edit the file. Uses VISUAL or EDITOR " + "environment variables if not provided." + ), + ) + + self.cmd_opts.add_option( + "--global", + dest="global_file", + action="store_true", + default=False, + help="Use the system-wide configuration file only", + ) + + self.cmd_opts.add_option( + "--user", + dest="user_file", + action="store_true", + default=False, + help="Use the user configuration file only", + ) + + self.cmd_opts.add_option( + "--site", + dest="site_file", + action="store_true", + default=False, + help="Use the current environment configuration file only", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + handlers = { + "list": self.list_values, + "edit": self.open_in_editor, + "get": self.get_name, + "set": self.set_name_value, + "unset": self.unset_name, + "debug": self.list_config_values, + } + + # Determine action + if not args or args[0] not in handlers: + logger.error( + "Need an action (%s) to perform.", + ", ".join(sorted(handlers)), + ) + return ERROR + + action = args[0] + + # Determine which configuration files are to be loaded + # Depends on whether the command is modifying. + try: + load_only = self._determine_file( + options, need_value=(action in ["get", "set", "unset", "edit"]) + ) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + # Load a new configuration + self.configuration = Configuration( + isolated=options.isolated_mode, load_only=load_only + ) + self.configuration.load() + + # Error handling happens here, not in the action-handlers. + try: + handlers[action](options, args[1:]) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + return SUCCESS + + def _determine_file(self, options: Values, need_value: bool) -> Optional[Kind]: + file_options = [ + key + for key, value in ( + (kinds.USER, options.user_file), + (kinds.GLOBAL, options.global_file), + (kinds.SITE, options.site_file), + ) + if value + ] + + if not file_options: + if not need_value: + return None + # Default to user, unless there's a site file. + elif any( + os.path.exists(site_config_file) + for site_config_file in get_configuration_files()[kinds.SITE] + ): + return kinds.SITE + else: + return kinds.USER + elif len(file_options) == 1: + return file_options[0] + + raise PipError( + "Need exactly one file to operate upon " + "(--user, --site, --global) to perform." + ) + + def list_values(self, options: Values, args: List[str]) -> None: + self._get_n_args(args, "list", n=0) + + for key, value in sorted(self.configuration.items()): + write_output("%s=%r", key, value) + + def get_name(self, options: Values, args: List[str]) -> None: + key = self._get_n_args(args, "get [name]", n=1) + value = self.configuration.get_value(key) + + write_output("%s", value) + + def set_name_value(self, options: Values, args: List[str]) -> None: + key, value = self._get_n_args(args, "set [name] [value]", n=2) + self.configuration.set_value(key, value) + + self._save_configuration() + + def unset_name(self, options: Values, args: List[str]) -> None: + key = self._get_n_args(args, "unset [name]", n=1) + self.configuration.unset_value(key) + + self._save_configuration() + + def list_config_values(self, options: Values, args: List[str]) -> None: + """List config key-value pairs across different config files""" + self._get_n_args(args, "debug", n=0) + + self.print_env_var_values() + # Iterate over config files and print if they exist, and the + # key-value pairs present in them if they do + for variant, files in sorted(self.configuration.iter_config_files()): + write_output("%s:", variant) + for fname in files: + with indent_log(): + file_exists = os.path.exists(fname) + write_output("%s, exists: %r", fname, file_exists) + if file_exists: + self.print_config_file_values(variant) + + def print_config_file_values(self, variant: Kind) -> None: + """Get key-value pairs from the file of a variant""" + for name, value in self.configuration.get_values_in_config(variant).items(): + with indent_log(): + write_output("%s: %s", name, value) + + def print_env_var_values(self) -> None: + """Get key-values pairs present as environment variables""" + write_output("%s:", "env_var") + with indent_log(): + for key, value in sorted(self.configuration.get_environ_vars()): + env_var = f"PIP_{key.upper()}" + write_output("%s=%r", env_var, value) + + def open_in_editor(self, options: Values, args: List[str]) -> None: + editor = self._determine_editor(options) + + fname = self.configuration.get_file_to_edit() + if fname is None: + raise PipError("Could not determine appropriate file.") + elif '"' in fname: + # This shouldn't happen, unless we see a username like that. + # If that happens, we'd appreciate a pull request fixing this. + raise PipError( + f'Can not open an editor for a file name containing "\n{fname}' + ) + + try: + subprocess.check_call(f'{editor} "{fname}"', shell=True) + except FileNotFoundError as e: + if not e.filename: + e.filename = editor + raise + except subprocess.CalledProcessError as e: + raise PipError(f"Editor Subprocess exited with exit code {e.returncode}") + + def _get_n_args(self, args: List[str], example: str, n: int) -> Any: + """Helper to make sure the command got the right number of arguments""" + if len(args) != n: + msg = ( + f"Got unexpected number of arguments, expected {n}. " + f'(example: "{get_prog()} config {example}")' + ) + raise PipError(msg) + + if n == 1: + return args[0] + else: + return args + + def _save_configuration(self) -> None: + # We successfully ran a modifying command. Need to save the + # configuration. + try: + self.configuration.save() + except Exception: + logger.exception( + "Unable to save configuration. Please report this as a bug." + ) + raise PipError("Internal Error.") + + def _determine_editor(self, options: Values) -> str: + if options.editor is not None: + return options.editor + elif "VISUAL" in os.environ: + return os.environ["VISUAL"] + elif "EDITOR" in os.environ: + return os.environ["EDITOR"] + else: + raise PipError("Could not determine editor to use.") diff --git a/venv/Lib/site-packages/pip/_internal/commands/debug.py b/venv/Lib/site-packages/pip/_internal/commands/debug.py new file mode 100644 index 00000000000..567ca967e5b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/debug.py @@ -0,0 +1,201 @@ +import locale +import logging +import os +import sys +from optparse import Values +from types import ModuleType +from typing import Any, Dict, List, Optional + +import pip._vendor +from pip._vendor.certifi import where +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.configuration import Configuration +from pip._internal.metadata import get_environment +from pip._internal.utils.compat import open_text_resource +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import get_pip_version + +logger = logging.getLogger(__name__) + + +def show_value(name: str, value: Any) -> None: + logger.info("%s: %s", name, value) + + +def show_sys_implementation() -> None: + logger.info("sys.implementation:") + implementation_name = sys.implementation.name + with indent_log(): + show_value("name", implementation_name) + + +def create_vendor_txt_map() -> Dict[str, str]: + with open_text_resource("pip._vendor", "vendor.txt") as f: + # Purge non version specifying lines. + # Also, remove any space prefix or suffixes (including comments). + lines = [ + line.strip().split(" ", 1)[0] for line in f.readlines() if "==" in line + ] + + # Transform into "module" -> version dict. + return dict(line.split("==", 1) for line in lines) + + +def get_module_from_module_name(module_name: str) -> Optional[ModuleType]: + # Module name can be uppercase in vendor.txt for some reason... + module_name = module_name.lower().replace("-", "_") + # PATCH: setuptools is actually only pkg_resources. + if module_name == "setuptools": + module_name = "pkg_resources" + + try: + __import__(f"pip._vendor.{module_name}", globals(), locals(), level=0) + return getattr(pip._vendor, module_name) + except ImportError: + # We allow 'truststore' to fail to import due + # to being unavailable on Python 3.9 and earlier. + if module_name == "truststore" and sys.version_info < (3, 10): + return None + raise + + +def get_vendor_version_from_module(module_name: str) -> Optional[str]: + module = get_module_from_module_name(module_name) + version = getattr(module, "__version__", None) + + if module and not version: + # Try to find version in debundled module info. + assert module.__file__ is not None + env = get_environment([os.path.dirname(module.__file__)]) + dist = env.get_distribution(module_name) + if dist: + version = str(dist.version) + + return version + + +def show_actual_vendor_versions(vendor_txt_versions: Dict[str, str]) -> None: + """Log the actual version and print extra info if there is + a conflict or if the actual version could not be imported. + """ + for module_name, expected_version in vendor_txt_versions.items(): + extra_message = "" + actual_version = get_vendor_version_from_module(module_name) + if not actual_version: + extra_message = ( + " (Unable to locate actual module version, using" + " vendor.txt specified version)" + ) + actual_version = expected_version + elif parse_version(actual_version) != parse_version(expected_version): + extra_message = ( + " (CONFLICT: vendor.txt suggests version should" + f" be {expected_version})" + ) + logger.info("%s==%s%s", module_name, actual_version, extra_message) + + +def show_vendor_versions() -> None: + logger.info("vendored library versions:") + + vendor_txt_versions = create_vendor_txt_map() + with indent_log(): + show_actual_vendor_versions(vendor_txt_versions) + + +def show_tags(options: Values) -> None: + tag_limit = 10 + + target_python = make_target_python(options) + tags = target_python.get_sorted_tags() + + # Display the target options that were explicitly provided. + formatted_target = target_python.format_given() + suffix = "" + if formatted_target: + suffix = f" (target: {formatted_target})" + + msg = f"Compatible tags: {len(tags)}{suffix}" + logger.info(msg) + + if options.verbose < 1 and len(tags) > tag_limit: + tags_limited = True + tags = tags[:tag_limit] + else: + tags_limited = False + + with indent_log(): + for tag in tags: + logger.info(str(tag)) + + if tags_limited: + msg = f"...\n[First {tag_limit} tags shown. Pass --verbose to show all.]" + logger.info(msg) + + +def ca_bundle_info(config: Configuration) -> str: + levels = {key.split(".", 1)[0] for key, _ in config.items()} + if not levels: + return "Not specified" + + levels_that_override_global = ["install", "wheel", "download"] + global_overriding_level = [ + level for level in levels if level in levels_that_override_global + ] + if not global_overriding_level: + return "global" + + if "global" in levels: + levels.remove("global") + return ", ".join(levels) + + +class DebugCommand(Command): + """ + Display debug information. + """ + + usage = """ + %prog """ + ignore_require_venv = True + + def add_options(self) -> None: + cmdoptions.add_target_python_options(self.cmd_opts) + self.parser.insert_option_group(0, self.cmd_opts) + self.parser.config.load() + + def run(self, options: Values, args: List[str]) -> int: + logger.warning( + "This command is only meant for debugging. " + "Do not use this with automation for parsing and getting these " + "details, since the output and options of this command may " + "change without notice." + ) + show_value("pip version", get_pip_version()) + show_value("sys.version", sys.version) + show_value("sys.executable", sys.executable) + show_value("sys.getdefaultencoding", sys.getdefaultencoding()) + show_value("sys.getfilesystemencoding", sys.getfilesystemencoding()) + show_value( + "locale.getpreferredencoding", + locale.getpreferredencoding(), + ) + show_value("sys.platform", sys.platform) + show_sys_implementation() + + show_value("'cert' config value", ca_bundle_info(self.parser.config)) + show_value("REQUESTS_CA_BUNDLE", os.environ.get("REQUESTS_CA_BUNDLE")) + show_value("CURL_CA_BUNDLE", os.environ.get("CURL_CA_BUNDLE")) + show_value("pip._vendor.certifi.where()", where()) + show_value("pip._vendor.DEBUNDLED", pip._vendor.DEBUNDLED) + + show_vendor_versions() + + show_tags(options) + + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/download.py b/venv/Lib/site-packages/pip/_internal/commands/download.py new file mode 100644 index 00000000000..917bbb91d83 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/download.py @@ -0,0 +1,146 @@ +import logging +import os +from optparse import Values +from typing import List + +from pip._internal.cli import cmdoptions +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.req_command import RequirementCommand, with_cleanup +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.operations.build.build_tracker import get_build_tracker +from pip._internal.req.req_install import check_legacy_setup_py_options +from pip._internal.utils.misc import ensure_dir, normalize_path, write_output +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +class DownloadCommand(RequirementCommand): + """ + Download packages from: + + - PyPI (and other indexes) using requirement specifiers. + - VCS project urls. + - Local project directories. + - Local or remote source archives. + + pip also supports downloading from "requirements files", which provide + an easy way to specify a whole environment to be downloaded. + """ + + usage = """ + %prog [options] [package-index-options] ... + %prog [options] -r [package-index-options] ... + %prog [options] ... + %prog [options] ... + %prog [options] ...""" + + def add_options(self) -> None: + self.cmd_opts.add_option(cmdoptions.constraints()) + self.cmd_opts.add_option(cmdoptions.requirements()) + self.cmd_opts.add_option(cmdoptions.no_deps()) + self.cmd_opts.add_option(cmdoptions.global_options()) + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + self.cmd_opts.add_option(cmdoptions.prefer_binary()) + self.cmd_opts.add_option(cmdoptions.src()) + self.cmd_opts.add_option(cmdoptions.pre()) + self.cmd_opts.add_option(cmdoptions.require_hashes()) + self.cmd_opts.add_option(cmdoptions.progress_bar()) + self.cmd_opts.add_option(cmdoptions.no_build_isolation()) + self.cmd_opts.add_option(cmdoptions.use_pep517()) + self.cmd_opts.add_option(cmdoptions.no_use_pep517()) + self.cmd_opts.add_option(cmdoptions.check_build_deps()) + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + + self.cmd_opts.add_option( + "-d", + "--dest", + "--destination-dir", + "--destination-directory", + dest="download_dir", + metavar="dir", + default=os.curdir, + help="Download packages into .", + ) + + cmdoptions.add_target_python_options(self.cmd_opts) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + @with_cleanup + def run(self, options: Values, args: List[str]) -> int: + options.ignore_installed = True + # editable doesn't really make sense for `pip download`, but the bowels + # of the RequirementSet code require that property. + options.editables = [] + + cmdoptions.check_dist_restriction(options) + + options.download_dir = normalize_path(options.download_dir) + ensure_dir(options.download_dir) + + session = self.get_default_session(options) + + target_python = make_target_python(options) + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ignore_requires_python=options.ignore_requires_python, + ) + + build_tracker = self.enter_context(get_build_tracker()) + + directory = TempDirectory( + delete=not options.no_clean, + kind="download", + globally_managed=True, + ) + + reqs = self.get_requirements(args, options, finder, session) + check_legacy_setup_py_options(options, reqs) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + build_tracker=build_tracker, + session=session, + finder=finder, + download_dir=options.download_dir, + use_user_site=False, + verbosity=self.verbosity, + ) + + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + ignore_requires_python=options.ignore_requires_python, + use_pep517=options.use_pep517, + py_version_info=options.python_version, + ) + + self.trace_basic_info(finder) + + requirement_set = resolver.resolve(reqs, check_supported_wheels=True) + + downloaded: List[str] = [] + for req in requirement_set.requirements.values(): + if req.satisfied_by is None: + assert req.name is not None + preparer.save_linked_requirement(req) + downloaded.append(req.name) + + preparer.prepare_linked_requirements_more(requirement_set.requirements.values()) + + if downloaded: + write_output("Successfully downloaded %s", " ".join(downloaded)) + + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/freeze.py b/venv/Lib/site-packages/pip/_internal/commands/freeze.py new file mode 100644 index 00000000000..885fdfeb83b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/freeze.py @@ -0,0 +1,109 @@ +import sys +from optparse import Values +from typing import AbstractSet, List + +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.operations.freeze import freeze +from pip._internal.utils.compat import stdlib_pkgs + + +def _should_suppress_build_backends() -> bool: + return sys.version_info < (3, 12) + + +def _dev_pkgs() -> AbstractSet[str]: + pkgs = {"pip"} + + if _should_suppress_build_backends(): + pkgs |= {"setuptools", "distribute", "wheel"} + + return pkgs + + +class FreezeCommand(Command): + """ + Output installed packages in requirements format. + + packages are listed in a case-insensitive sorted order. + """ + + ignore_require_venv = True + usage = """ + %prog [options]""" + log_streams = ("ext://sys.stderr", "ext://sys.stderr") + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-r", + "--requirement", + dest="requirements", + action="append", + default=[], + metavar="file", + help=( + "Use the order in the given requirements file and its " + "comments when generating output. This option can be " + "used multiple times." + ), + ) + self.cmd_opts.add_option( + "-l", + "--local", + dest="local", + action="store_true", + default=False, + help=( + "If in a virtualenv that has global access, do not output " + "globally-installed packages." + ), + ) + self.cmd_opts.add_option( + "--user", + dest="user", + action="store_true", + default=False, + help="Only output packages installed in user-site.", + ) + self.cmd_opts.add_option(cmdoptions.list_path()) + self.cmd_opts.add_option( + "--all", + dest="freeze_all", + action="store_true", + help=( + "Do not skip these packages in the output:" + " {}".format(", ".join(_dev_pkgs())) + ), + ) + self.cmd_opts.add_option( + "--exclude-editable", + dest="exclude_editable", + action="store_true", + help="Exclude editable package from output.", + ) + self.cmd_opts.add_option(cmdoptions.list_exclude()) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + skip = set(stdlib_pkgs) + if not options.freeze_all: + skip.update(_dev_pkgs()) + + if options.excludes: + skip.update(options.excludes) + + cmdoptions.check_list_path_option(options) + + for line in freeze( + requirement=options.requirements, + local_only=options.local, + user_only=options.user, + paths=options.path, + isolated=options.isolated_mode, + skip=skip, + exclude_editable=options.exclude_editable, + ): + sys.stdout.write(line + "\n") + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/hash.py b/venv/Lib/site-packages/pip/_internal/commands/hash.py new file mode 100644 index 00000000000..042dac813e7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/hash.py @@ -0,0 +1,59 @@ +import hashlib +import logging +import sys +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.utils.hashes import FAVORITE_HASH, STRONG_HASHES +from pip._internal.utils.misc import read_chunks, write_output + +logger = logging.getLogger(__name__) + + +class HashCommand(Command): + """ + Compute a hash of a local package archive. + + These can be used with --hash in a requirements file to do repeatable + installs. + """ + + usage = "%prog [options] ..." + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-a", + "--algorithm", + dest="algorithm", + choices=STRONG_HASHES, + action="store", + default=FAVORITE_HASH, + help="The hash algorithm to use: one of {}".format( + ", ".join(STRONG_HASHES) + ), + ) + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + if not args: + self.parser.print_usage(sys.stderr) + return ERROR + + algorithm = options.algorithm + for path in args: + write_output( + "%s:\n--hash=%s:%s", path, algorithm, _hash_of_file(path, algorithm) + ) + return SUCCESS + + +def _hash_of_file(path: str, algorithm: str) -> str: + """Return the hash digest of a file.""" + with open(path, "rb") as archive: + hash = hashlib.new(algorithm) + for chunk in read_chunks(archive): + hash.update(chunk) + return hash.hexdigest() diff --git a/venv/Lib/site-packages/pip/_internal/commands/help.py b/venv/Lib/site-packages/pip/_internal/commands/help.py new file mode 100644 index 00000000000..62066318b74 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/help.py @@ -0,0 +1,41 @@ +from optparse import Values +from typing import List + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import CommandError + + +class HelpCommand(Command): + """Show help for commands""" + + usage = """ + %prog """ + ignore_require_venv = True + + def run(self, options: Values, args: List[str]) -> int: + from pip._internal.commands import ( + commands_dict, + create_command, + get_similar_commands, + ) + + try: + # 'pip help' with no args is handled by pip.__init__.parseopt() + cmd_name = args[0] # the command we need help for + except IndexError: + return SUCCESS + + if cmd_name not in commands_dict: + guess = get_similar_commands(cmd_name) + + msg = [f'unknown command "{cmd_name}"'] + if guess: + msg.append(f'maybe you meant "{guess}"') + + raise CommandError(" - ".join(msg)) + + command = create_command(cmd_name) + command.parser.print_help() + + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/index.py b/venv/Lib/site-packages/pip/_internal/commands/index.py new file mode 100644 index 00000000000..2e2661bba71 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/index.py @@ -0,0 +1,139 @@ +import logging +from optparse import Values +from typing import Any, Iterable, List, Optional + +from pip._vendor.packaging.version import Version + +from pip._internal.cli import cmdoptions +from pip._internal.cli.req_command import IndexGroupCommand +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.commands.search import print_dist_installation_info +from pip._internal.exceptions import CommandError, DistributionNotFound, PipError +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.models.target_python import TargetPython +from pip._internal.network.session import PipSession +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class IndexCommand(IndexGroupCommand): + """ + Inspect information available from package indexes. + """ + + ignore_require_venv = True + usage = """ + %prog versions + """ + + def add_options(self) -> None: + cmdoptions.add_target_python_options(self.cmd_opts) + + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + self.cmd_opts.add_option(cmdoptions.pre()) + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + handlers = { + "versions": self.get_available_package_versions, + } + + logger.warning( + "pip index is currently an experimental command. " + "It may be removed/changed in a future release " + "without prior warning." + ) + + # Determine action + if not args or args[0] not in handlers: + logger.error( + "Need an action (%s) to perform.", + ", ".join(sorted(handlers)), + ) + return ERROR + + action = args[0] + + # Error handling happens here, not in the action-handlers. + try: + handlers[action](options, args[1:]) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + return SUCCESS + + def _build_package_finder( + self, + options: Values, + session: PipSession, + target_python: Optional[TargetPython] = None, + ignore_requires_python: Optional[bool] = None, + ) -> PackageFinder: + """ + Create a package finder appropriate to the index command. + """ + link_collector = LinkCollector.create(session, options=options) + + # Pass allow_yanked=False to ignore yanked versions. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=options.pre, + ignore_requires_python=ignore_requires_python, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + target_python=target_python, + ) + + def get_available_package_versions(self, options: Values, args: List[Any]) -> None: + if len(args) != 1: + raise CommandError("You need to specify exactly one argument") + + target_python = cmdoptions.make_target_python(options) + query = args[0] + + with self._build_session(options) as session: + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ignore_requires_python=options.ignore_requires_python, + ) + + versions: Iterable[Version] = ( + candidate.version for candidate in finder.find_all_candidates(query) + ) + + if not options.pre: + # Remove prereleases + versions = ( + version for version in versions if not version.is_prerelease + ) + versions = set(versions) + + if not versions: + raise DistributionNotFound( + f"No matching distribution found for {query}" + ) + + formatted_versions = [str(ver) for ver in sorted(versions, reverse=True)] + latest = formatted_versions[0] + + write_output(f"{query} ({latest})") + write_output("Available versions: {}".format(", ".join(formatted_versions))) + print_dist_installation_info(query, latest) diff --git a/venv/Lib/site-packages/pip/_internal/commands/inspect.py b/venv/Lib/site-packages/pip/_internal/commands/inspect.py new file mode 100644 index 00000000000..e810c13166b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/inspect.py @@ -0,0 +1,92 @@ +import logging +from optparse import Values +from typing import Any, Dict, List + +from pip._vendor.packaging.markers import default_environment +from pip._vendor.rich import print_json + +from pip import __version__ +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.metadata import BaseDistribution, get_environment +from pip._internal.utils.compat import stdlib_pkgs +from pip._internal.utils.urls import path_to_url + +logger = logging.getLogger(__name__) + + +class InspectCommand(Command): + """ + Inspect the content of a Python environment and produce a report in JSON format. + """ + + ignore_require_venv = True + usage = """ + %prog [options]""" + + def add_options(self) -> None: + self.cmd_opts.add_option( + "--local", + action="store_true", + default=False, + help=( + "If in a virtualenv that has global access, do not list " + "globally-installed packages." + ), + ) + self.cmd_opts.add_option( + "--user", + dest="user", + action="store_true", + default=False, + help="Only output packages installed in user-site.", + ) + self.cmd_opts.add_option(cmdoptions.list_path()) + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + cmdoptions.check_list_path_option(options) + dists = get_environment(options.path).iter_installed_distributions( + local_only=options.local, + user_only=options.user, + skip=set(stdlib_pkgs), + ) + output = { + "version": "1", + "pip_version": __version__, + "installed": [self._dist_to_dict(dist) for dist in dists], + "environment": default_environment(), + # TODO tags? scheme? + } + print_json(data=output) + return SUCCESS + + def _dist_to_dict(self, dist: BaseDistribution) -> Dict[str, Any]: + res: Dict[str, Any] = { + "metadata": dist.metadata_dict, + "metadata_location": dist.info_location, + } + # direct_url. Note that we don't have download_info (as in the installation + # report) since it is not recorded in installed metadata. + direct_url = dist.direct_url + if direct_url is not None: + res["direct_url"] = direct_url.to_dict() + else: + # Emulate direct_url for legacy editable installs. + editable_project_location = dist.editable_project_location + if editable_project_location is not None: + res["direct_url"] = { + "url": path_to_url(editable_project_location), + "dir_info": { + "editable": True, + }, + } + # installer + installer = dist.installer + if dist.installer: + res["installer"] = installer + # requested + if dist.installed_with_dist_info: + res["requested"] = dist.requested + return res diff --git a/venv/Lib/site-packages/pip/_internal/commands/install.py b/venv/Lib/site-packages/pip/_internal/commands/install.py new file mode 100644 index 00000000000..ad45a2f2a57 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/install.py @@ -0,0 +1,783 @@ +import errno +import json +import operator +import os +import shutil +import site +from optparse import SUPPRESS_HELP, Values +from typing import List, Optional + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.rich import print_json + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.req_command import ( + RequirementCommand, + with_cleanup, +) +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.exceptions import CommandError, InstallationError +from pip._internal.locations import get_scheme +from pip._internal.metadata import get_environment +from pip._internal.models.installation_report import InstallationReport +from pip._internal.operations.build.build_tracker import get_build_tracker +from pip._internal.operations.check import ConflictDetails, check_install_conflicts +from pip._internal.req import install_given_reqs +from pip._internal.req.req_install import ( + InstallRequirement, + check_legacy_setup_py_options, +) +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.filesystem import test_writable_dir +from pip._internal.utils.logging import getLogger +from pip._internal.utils.misc import ( + check_externally_managed, + ensure_dir, + get_pip_version, + protect_pip_from_modification_on_windows, + warn_if_run_as_root, + write_output, +) +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.virtualenv import ( + running_under_virtualenv, + virtualenv_no_global, +) +from pip._internal.wheel_builder import build, should_build_for_install_command + +logger = getLogger(__name__) + + +class InstallCommand(RequirementCommand): + """ + Install packages from: + + - PyPI (and other indexes) using requirement specifiers. + - VCS project urls. + - Local project directories. + - Local or remote source archives. + + pip also supports installing from "requirements files", which provide + an easy way to specify a whole environment to be installed. + """ + + usage = """ + %prog [options] [package-index-options] ... + %prog [options] -r [package-index-options] ... + %prog [options] [-e] ... + %prog [options] [-e] ... + %prog [options] ...""" + + def add_options(self) -> None: + self.cmd_opts.add_option(cmdoptions.requirements()) + self.cmd_opts.add_option(cmdoptions.constraints()) + self.cmd_opts.add_option(cmdoptions.no_deps()) + self.cmd_opts.add_option(cmdoptions.pre()) + + self.cmd_opts.add_option(cmdoptions.editable()) + self.cmd_opts.add_option( + "--dry-run", + action="store_true", + dest="dry_run", + default=False, + help=( + "Don't actually install anything, just print what would be. " + "Can be used in combination with --ignore-installed " + "to 'resolve' the requirements." + ), + ) + self.cmd_opts.add_option( + "-t", + "--target", + dest="target_dir", + metavar="dir", + default=None, + help=( + "Install packages into . " + "By default this will not replace existing files/folders in " + ". Use --upgrade to replace existing packages in " + "with new versions." + ), + ) + cmdoptions.add_target_python_options(self.cmd_opts) + + self.cmd_opts.add_option( + "--user", + dest="use_user_site", + action="store_true", + help=( + "Install to the Python user install directory for your " + "platform. Typically ~/.local/, or %APPDATA%\\Python on " + "Windows. (See the Python documentation for site.USER_BASE " + "for full details.)" + ), + ) + self.cmd_opts.add_option( + "--no-user", + dest="use_user_site", + action="store_false", + help=SUPPRESS_HELP, + ) + self.cmd_opts.add_option( + "--root", + dest="root_path", + metavar="dir", + default=None, + help="Install everything relative to this alternate root directory.", + ) + self.cmd_opts.add_option( + "--prefix", + dest="prefix_path", + metavar="dir", + default=None, + help=( + "Installation prefix where lib, bin and other top-level " + "folders are placed. Note that the resulting installation may " + "contain scripts and other resources which reference the " + "Python interpreter of pip, and not that of ``--prefix``. " + "See also the ``--python`` option if the intention is to " + "install packages into another (possibly pip-free) " + "environment." + ), + ) + + self.cmd_opts.add_option(cmdoptions.src()) + + self.cmd_opts.add_option( + "-U", + "--upgrade", + dest="upgrade", + action="store_true", + help=( + "Upgrade all specified packages to the newest available " + "version. The handling of dependencies depends on the " + "upgrade-strategy used." + ), + ) + + self.cmd_opts.add_option( + "--upgrade-strategy", + dest="upgrade_strategy", + default="only-if-needed", + choices=["only-if-needed", "eager"], + help=( + "Determines how dependency upgrading should be handled " + "[default: %default]. " + '"eager" - dependencies are upgraded regardless of ' + "whether the currently installed version satisfies the " + "requirements of the upgraded package(s). " + '"only-if-needed" - are upgraded only when they do not ' + "satisfy the requirements of the upgraded package(s)." + ), + ) + + self.cmd_opts.add_option( + "--force-reinstall", + dest="force_reinstall", + action="store_true", + help="Reinstall all packages even if they are already up-to-date.", + ) + + self.cmd_opts.add_option( + "-I", + "--ignore-installed", + dest="ignore_installed", + action="store_true", + help=( + "Ignore the installed packages, overwriting them. " + "This can break your system if the existing package " + "is of a different version or was installed " + "with a different package manager!" + ), + ) + + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + self.cmd_opts.add_option(cmdoptions.no_build_isolation()) + self.cmd_opts.add_option(cmdoptions.use_pep517()) + self.cmd_opts.add_option(cmdoptions.no_use_pep517()) + self.cmd_opts.add_option(cmdoptions.check_build_deps()) + self.cmd_opts.add_option(cmdoptions.override_externally_managed()) + + self.cmd_opts.add_option(cmdoptions.config_settings()) + self.cmd_opts.add_option(cmdoptions.global_options()) + + self.cmd_opts.add_option( + "--compile", + action="store_true", + dest="compile", + default=True, + help="Compile Python source files to bytecode", + ) + + self.cmd_opts.add_option( + "--no-compile", + action="store_false", + dest="compile", + help="Do not compile Python source files to bytecode", + ) + + self.cmd_opts.add_option( + "--no-warn-script-location", + action="store_false", + dest="warn_script_location", + default=True, + help="Do not warn when installing scripts outside PATH", + ) + self.cmd_opts.add_option( + "--no-warn-conflicts", + action="store_false", + dest="warn_about_conflicts", + default=True, + help="Do not warn about broken dependencies", + ) + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + self.cmd_opts.add_option(cmdoptions.prefer_binary()) + self.cmd_opts.add_option(cmdoptions.require_hashes()) + self.cmd_opts.add_option(cmdoptions.progress_bar()) + self.cmd_opts.add_option(cmdoptions.root_user_action()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + self.cmd_opts.add_option( + "--report", + dest="json_report_file", + metavar="file", + default=None, + help=( + "Generate a JSON file describing what pip did to install " + "the provided requirements. " + "Can be used in combination with --dry-run and --ignore-installed " + "to 'resolve' the requirements. " + "When - is used as file name it writes to stdout. " + "When writing to stdout, please combine with the --quiet option " + "to avoid mixing pip logging output with JSON output." + ), + ) + + @with_cleanup + def run(self, options: Values, args: List[str]) -> int: + if options.use_user_site and options.target_dir is not None: + raise CommandError("Can not combine '--user' and '--target'") + + # Check whether the environment we're installing into is externally + # managed, as specified in PEP 668. Specifying --root, --target, or + # --prefix disables the check, since there's no reliable way to locate + # the EXTERNALLY-MANAGED file for those cases. An exception is also + # made specifically for "--dry-run --report" for convenience. + installing_into_current_environment = ( + not (options.dry_run and options.json_report_file) + and options.root_path is None + and options.target_dir is None + and options.prefix_path is None + ) + if ( + installing_into_current_environment + and not options.override_externally_managed + ): + check_externally_managed() + + upgrade_strategy = "to-satisfy-only" + if options.upgrade: + upgrade_strategy = options.upgrade_strategy + + cmdoptions.check_dist_restriction(options, check_target=True) + + logger.verbose("Using %s", get_pip_version()) + options.use_user_site = decide_user_install( + options.use_user_site, + prefix_path=options.prefix_path, + target_dir=options.target_dir, + root_path=options.root_path, + isolated_mode=options.isolated_mode, + ) + + target_temp_dir: Optional[TempDirectory] = None + target_temp_dir_path: Optional[str] = None + if options.target_dir: + options.ignore_installed = True + options.target_dir = os.path.abspath(options.target_dir) + if ( + # fmt: off + os.path.exists(options.target_dir) and + not os.path.isdir(options.target_dir) + # fmt: on + ): + raise CommandError( + "Target path exists but is not a directory, will not continue." + ) + + # Create a target directory for using with the target option + target_temp_dir = TempDirectory(kind="target") + target_temp_dir_path = target_temp_dir.path + self.enter_context(target_temp_dir) + + global_options = options.global_options or [] + + session = self.get_default_session(options) + + target_python = make_target_python(options) + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ignore_requires_python=options.ignore_requires_python, + ) + build_tracker = self.enter_context(get_build_tracker()) + + directory = TempDirectory( + delete=not options.no_clean, + kind="install", + globally_managed=True, + ) + + try: + reqs = self.get_requirements(args, options, finder, session) + check_legacy_setup_py_options(options, reqs) + + wheel_cache = WheelCache(options.cache_dir) + + # Only when installing is it permitted to use PEP 660. + # In other circumstances (pip wheel, pip download) we generate + # regular (i.e. non editable) metadata and wheels. + for req in reqs: + req.permit_editable_wheels = True + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + build_tracker=build_tracker, + session=session, + finder=finder, + use_user_site=options.use_user_site, + verbosity=self.verbosity, + ) + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + wheel_cache=wheel_cache, + use_user_site=options.use_user_site, + ignore_installed=options.ignore_installed, + ignore_requires_python=options.ignore_requires_python, + force_reinstall=options.force_reinstall, + upgrade_strategy=upgrade_strategy, + use_pep517=options.use_pep517, + py_version_info=options.python_version, + ) + + self.trace_basic_info(finder) + + requirement_set = resolver.resolve( + reqs, check_supported_wheels=not options.target_dir + ) + + if options.json_report_file: + report = InstallationReport(requirement_set.requirements_to_install) + if options.json_report_file == "-": + print_json(data=report.to_dict()) + else: + with open(options.json_report_file, "w", encoding="utf-8") as f: + json.dump(report.to_dict(), f, indent=2, ensure_ascii=False) + + if options.dry_run: + would_install_items = sorted( + (r.metadata["name"], r.metadata["version"]) + for r in requirement_set.requirements_to_install + ) + if would_install_items: + write_output( + "Would install %s", + " ".join("-".join(item) for item in would_install_items), + ) + return SUCCESS + + try: + pip_req = requirement_set.get_requirement("pip") + except KeyError: + modifying_pip = False + else: + # If we're not replacing an already installed pip, + # we're not modifying it. + modifying_pip = pip_req.satisfied_by is None + if modifying_pip: + # Eagerly import this module to avoid crashes. Otherwise, this + # module would be imported *after* pip was replaced, resulting in + # crashes if the new self_outdated_check module was incompatible + # with the rest of pip that's already imported. + import pip._internal.self_outdated_check # noqa: F401 + protect_pip_from_modification_on_windows(modifying_pip=modifying_pip) + + reqs_to_build = [ + r + for r in requirement_set.requirements.values() + if should_build_for_install_command(r) + ] + + _, build_failures = build( + reqs_to_build, + wheel_cache=wheel_cache, + verify=True, + build_options=[], + global_options=global_options, + ) + + if build_failures: + raise InstallationError( + "ERROR: Failed to build installable wheels for some " + "pyproject.toml based projects ({})".format( + ", ".join(r.name for r in build_failures) # type: ignore + ) + ) + + to_install = resolver.get_installation_order(requirement_set) + + # Check for conflicts in the package set we're installing. + conflicts: Optional[ConflictDetails] = None + should_warn_about_conflicts = ( + not options.ignore_dependencies and options.warn_about_conflicts + ) + if should_warn_about_conflicts: + conflicts = self._determine_conflicts(to_install) + + # Don't warn about script install locations if + # --target or --prefix has been specified + warn_script_location = options.warn_script_location + if options.target_dir or options.prefix_path: + warn_script_location = False + + installed = install_given_reqs( + to_install, + global_options, + root=options.root_path, + home=target_temp_dir_path, + prefix=options.prefix_path, + warn_script_location=warn_script_location, + use_user_site=options.use_user_site, + pycompile=options.compile, + ) + + lib_locations = get_lib_location_guesses( + user=options.use_user_site, + home=target_temp_dir_path, + root=options.root_path, + prefix=options.prefix_path, + isolated=options.isolated_mode, + ) + env = get_environment(lib_locations) + + # Display a summary of installed packages, with extra care to + # display a package name as it was requested by the user. + installed.sort(key=operator.attrgetter("name")) + summary = [] + installed_versions = {} + for distribution in env.iter_all_distributions(): + installed_versions[distribution.canonical_name] = distribution.version + for package in installed: + display_name = package.name + version = installed_versions.get(canonicalize_name(display_name), None) + if version: + text = f"{display_name}-{version}" + else: + text = display_name + summary.append(text) + + if conflicts is not None: + self._warn_about_conflicts( + conflicts, + resolver_variant=self.determine_resolver_variant(options), + ) + + installed_desc = " ".join(summary) + if installed_desc: + write_output( + "Successfully installed %s", + installed_desc, + ) + except OSError as error: + show_traceback = self.verbosity >= 1 + + message = create_os_error_message( + error, + show_traceback, + options.use_user_site, + ) + logger.error(message, exc_info=show_traceback) + + return ERROR + + if options.target_dir: + assert target_temp_dir + self._handle_target_dir( + options.target_dir, target_temp_dir, options.upgrade + ) + if options.root_user_action == "warn": + warn_if_run_as_root() + return SUCCESS + + def _handle_target_dir( + self, target_dir: str, target_temp_dir: TempDirectory, upgrade: bool + ) -> None: + ensure_dir(target_dir) + + # Checking both purelib and platlib directories for installed + # packages to be moved to target directory + lib_dir_list = [] + + # Checking both purelib and platlib directories for installed + # packages to be moved to target directory + scheme = get_scheme("", home=target_temp_dir.path) + purelib_dir = scheme.purelib + platlib_dir = scheme.platlib + data_dir = scheme.data + + if os.path.exists(purelib_dir): + lib_dir_list.append(purelib_dir) + if os.path.exists(platlib_dir) and platlib_dir != purelib_dir: + lib_dir_list.append(platlib_dir) + if os.path.exists(data_dir): + lib_dir_list.append(data_dir) + + for lib_dir in lib_dir_list: + for item in os.listdir(lib_dir): + if lib_dir == data_dir: + ddir = os.path.join(data_dir, item) + if any(s.startswith(ddir) for s in lib_dir_list[:-1]): + continue + target_item_dir = os.path.join(target_dir, item) + if os.path.exists(target_item_dir): + if not upgrade: + logger.warning( + "Target directory %s already exists. Specify " + "--upgrade to force replacement.", + target_item_dir, + ) + continue + if os.path.islink(target_item_dir): + logger.warning( + "Target directory %s already exists and is " + "a link. pip will not automatically replace " + "links, please remove if replacement is " + "desired.", + target_item_dir, + ) + continue + if os.path.isdir(target_item_dir): + shutil.rmtree(target_item_dir) + else: + os.remove(target_item_dir) + + shutil.move(os.path.join(lib_dir, item), target_item_dir) + + def _determine_conflicts( + self, to_install: List[InstallRequirement] + ) -> Optional[ConflictDetails]: + try: + return check_install_conflicts(to_install) + except Exception: + logger.exception( + "Error while checking for conflicts. Please file an issue on " + "pip's issue tracker: https://github.com/pypa/pip/issues/new" + ) + return None + + def _warn_about_conflicts( + self, conflict_details: ConflictDetails, resolver_variant: str + ) -> None: + package_set, (missing, conflicting) = conflict_details + if not missing and not conflicting: + return + + parts: List[str] = [] + if resolver_variant == "legacy": + parts.append( + "pip's legacy dependency resolver does not consider dependency " + "conflicts when selecting packages. This behaviour is the " + "source of the following dependency conflicts." + ) + else: + assert resolver_variant == "resolvelib" + parts.append( + "pip's dependency resolver does not currently take into account " + "all the packages that are installed. This behaviour is the " + "source of the following dependency conflicts." + ) + + # NOTE: There is some duplication here, with commands/check.py + for project_name in missing: + version = package_set[project_name][0] + for dependency in missing[project_name]: + message = ( + f"{project_name} {version} requires {dependency[1]}, " + "which is not installed." + ) + parts.append(message) + + for project_name in conflicting: + version = package_set[project_name][0] + for dep_name, dep_version, req in conflicting[project_name]: + message = ( + "{name} {version} requires {requirement}, but {you} have " + "{dep_name} {dep_version} which is incompatible." + ).format( + name=project_name, + version=version, + requirement=req, + dep_name=dep_name, + dep_version=dep_version, + you=("you" if resolver_variant == "resolvelib" else "you'll"), + ) + parts.append(message) + + logger.critical("\n".join(parts)) + + +def get_lib_location_guesses( + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + isolated: bool = False, + prefix: Optional[str] = None, +) -> List[str]: + scheme = get_scheme( + "", + user=user, + home=home, + root=root, + isolated=isolated, + prefix=prefix, + ) + return [scheme.purelib, scheme.platlib] + + +def site_packages_writable(root: Optional[str], isolated: bool) -> bool: + return all( + test_writable_dir(d) + for d in set(get_lib_location_guesses(root=root, isolated=isolated)) + ) + + +def decide_user_install( + use_user_site: Optional[bool], + prefix_path: Optional[str] = None, + target_dir: Optional[str] = None, + root_path: Optional[str] = None, + isolated_mode: bool = False, +) -> bool: + """Determine whether to do a user install based on the input options. + + If use_user_site is False, no additional checks are done. + If use_user_site is True, it is checked for compatibility with other + options. + If use_user_site is None, the default behaviour depends on the environment, + which is provided by the other arguments. + """ + # In some cases (config from tox), use_user_site can be set to an integer + # rather than a bool, which 'use_user_site is False' wouldn't catch. + if (use_user_site is not None) and (not use_user_site): + logger.debug("Non-user install by explicit request") + return False + + if use_user_site: + if prefix_path: + raise CommandError( + "Can not combine '--user' and '--prefix' as they imply " + "different installation locations" + ) + if virtualenv_no_global(): + raise InstallationError( + "Can not perform a '--user' install. User site-packages " + "are not visible in this virtualenv." + ) + logger.debug("User install by explicit request") + return True + + # If we are here, user installs have not been explicitly requested/avoided + assert use_user_site is None + + # user install incompatible with --prefix/--target + if prefix_path or target_dir: + logger.debug("Non-user install due to --prefix or --target option") + return False + + # If user installs are not enabled, choose a non-user install + if not site.ENABLE_USER_SITE: + logger.debug("Non-user install because user site-packages disabled") + return False + + # If we have permission for a non-user install, do that, + # otherwise do a user install. + if site_packages_writable(root=root_path, isolated=isolated_mode): + logger.debug("Non-user install because site-packages writeable") + return False + + logger.info( + "Defaulting to user installation because normal site-packages " + "is not writeable" + ) + return True + + +def create_os_error_message( + error: OSError, show_traceback: bool, using_user_site: bool +) -> str: + """Format an error message for an OSError + + It may occur anytime during the execution of the install command. + """ + parts = [] + + # Mention the error if we are not going to show a traceback + parts.append("Could not install packages due to an OSError") + if not show_traceback: + parts.append(": ") + parts.append(str(error)) + else: + parts.append(".") + + # Spilt the error indication from a helper message (if any) + parts[-1] += "\n" + + # Suggest useful actions to the user: + # (1) using user site-packages or (2) verifying the permissions + if error.errno == errno.EACCES: + user_option_part = "Consider using the `--user` option" + permissions_part = "Check the permissions" + + if not running_under_virtualenv() and not using_user_site: + parts.extend( + [ + user_option_part, + " or ", + permissions_part.lower(), + ] + ) + else: + parts.append(permissions_part) + parts.append(".\n") + + # Suggest the user to enable Long Paths if path length is + # more than 260 + if ( + WINDOWS + and error.errno == errno.ENOENT + and error.filename + and len(error.filename) > 260 + ): + parts.append( + "HINT: This error might have occurred since " + "this system does not have Windows Long Path " + "support enabled. You can find information on " + "how to enable this at " + "https://pip.pypa.io/warnings/enable-long-paths\n" + ) + + return "".join(parts).strip() + "\n" diff --git a/venv/Lib/site-packages/pip/_internal/commands/list.py b/venv/Lib/site-packages/pip/_internal/commands/list.py new file mode 100644 index 00000000000..82fc46a118f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/list.py @@ -0,0 +1,375 @@ +import json +import logging +from optparse import Values +from typing import TYPE_CHECKING, Generator, List, Optional, Sequence, Tuple, cast + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import Version + +from pip._internal.cli import cmdoptions +from pip._internal.cli.index_command import IndexGroupCommand +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import CommandError +from pip._internal.metadata import BaseDistribution, get_environment +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.utils.compat import stdlib_pkgs +from pip._internal.utils.misc import tabulate, write_output + +if TYPE_CHECKING: + from pip._internal.index.package_finder import PackageFinder + from pip._internal.network.session import PipSession + + class _DistWithLatestInfo(BaseDistribution): + """Give the distribution object a couple of extra fields. + + These will be populated during ``get_outdated()``. This is dirty but + makes the rest of the code much cleaner. + """ + + latest_version: Version + latest_filetype: str + + _ProcessedDists = Sequence[_DistWithLatestInfo] + + +logger = logging.getLogger(__name__) + + +class ListCommand(IndexGroupCommand): + """ + List installed packages, including editables. + + Packages are listed in a case-insensitive sorted order. + """ + + ignore_require_venv = True + usage = """ + %prog [options]""" + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-o", + "--outdated", + action="store_true", + default=False, + help="List outdated packages", + ) + self.cmd_opts.add_option( + "-u", + "--uptodate", + action="store_true", + default=False, + help="List uptodate packages", + ) + self.cmd_opts.add_option( + "-e", + "--editable", + action="store_true", + default=False, + help="List editable projects.", + ) + self.cmd_opts.add_option( + "-l", + "--local", + action="store_true", + default=False, + help=( + "If in a virtualenv that has global access, do not list " + "globally-installed packages." + ), + ) + self.cmd_opts.add_option( + "--user", + dest="user", + action="store_true", + default=False, + help="Only output packages installed in user-site.", + ) + self.cmd_opts.add_option(cmdoptions.list_path()) + self.cmd_opts.add_option( + "--pre", + action="store_true", + default=False, + help=( + "Include pre-release and development versions. By default, " + "pip only finds stable versions." + ), + ) + + self.cmd_opts.add_option( + "--format", + action="store", + dest="list_format", + default="columns", + choices=("columns", "freeze", "json"), + help=( + "Select the output format among: columns (default), freeze, or json. " + "The 'freeze' format cannot be used with the --outdated option." + ), + ) + + self.cmd_opts.add_option( + "--not-required", + action="store_true", + dest="not_required", + help="List packages that are not dependencies of installed packages.", + ) + + self.cmd_opts.add_option( + "--exclude-editable", + action="store_false", + dest="include_editable", + help="Exclude editable package from output.", + ) + self.cmd_opts.add_option( + "--include-editable", + action="store_true", + dest="include_editable", + help="Include editable package from output.", + default=True, + ) + self.cmd_opts.add_option(cmdoptions.list_exclude()) + index_opts = cmdoptions.make_option_group(cmdoptions.index_group, self.parser) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + def handle_pip_version_check(self, options: Values) -> None: + if options.outdated or options.uptodate: + super().handle_pip_version_check(options) + + def _build_package_finder( + self, options: Values, session: "PipSession" + ) -> "PackageFinder": + """ + Create a package finder appropriate to this list command. + """ + # Lazy import the heavy index modules as most list invocations won't need 'em. + from pip._internal.index.collector import LinkCollector + from pip._internal.index.package_finder import PackageFinder + + link_collector = LinkCollector.create(session, options=options) + + # Pass allow_yanked=False to ignore yanked versions. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=options.pre, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + ) + + def run(self, options: Values, args: List[str]) -> int: + if options.outdated and options.uptodate: + raise CommandError("Options --outdated and --uptodate cannot be combined.") + + if options.outdated and options.list_format == "freeze": + raise CommandError( + "List format 'freeze' cannot be used with the --outdated option." + ) + + cmdoptions.check_list_path_option(options) + + skip = set(stdlib_pkgs) + if options.excludes: + skip.update(canonicalize_name(n) for n in options.excludes) + + packages: "_ProcessedDists" = [ + cast("_DistWithLatestInfo", d) + for d in get_environment(options.path).iter_installed_distributions( + local_only=options.local, + user_only=options.user, + editables_only=options.editable, + include_editables=options.include_editable, + skip=skip, + ) + ] + + # get_not_required must be called firstly in order to find and + # filter out all dependencies correctly. Otherwise a package + # can't be identified as requirement because some parent packages + # could be filtered out before. + if options.not_required: + packages = self.get_not_required(packages, options) + + if options.outdated: + packages = self.get_outdated(packages, options) + elif options.uptodate: + packages = self.get_uptodate(packages, options) + + self.output_package_listing(packages, options) + return SUCCESS + + def get_outdated( + self, packages: "_ProcessedDists", options: Values + ) -> "_ProcessedDists": + return [ + dist + for dist in self.iter_packages_latest_infos(packages, options) + if dist.latest_version > dist.version + ] + + def get_uptodate( + self, packages: "_ProcessedDists", options: Values + ) -> "_ProcessedDists": + return [ + dist + for dist in self.iter_packages_latest_infos(packages, options) + if dist.latest_version == dist.version + ] + + def get_not_required( + self, packages: "_ProcessedDists", options: Values + ) -> "_ProcessedDists": + dep_keys = { + canonicalize_name(dep.name) + for dist in packages + for dep in (dist.iter_dependencies() or ()) + } + + # Create a set to remove duplicate packages, and cast it to a list + # to keep the return type consistent with get_outdated and + # get_uptodate + return list({pkg for pkg in packages if pkg.canonical_name not in dep_keys}) + + def iter_packages_latest_infos( + self, packages: "_ProcessedDists", options: Values + ) -> Generator["_DistWithLatestInfo", None, None]: + with self._build_session(options) as session: + finder = self._build_package_finder(options, session) + + def latest_info( + dist: "_DistWithLatestInfo", + ) -> Optional["_DistWithLatestInfo"]: + all_candidates = finder.find_all_candidates(dist.canonical_name) + if not options.pre: + # Remove prereleases + all_candidates = [ + candidate + for candidate in all_candidates + if not candidate.version.is_prerelease + ] + + evaluator = finder.make_candidate_evaluator( + project_name=dist.canonical_name, + ) + best_candidate = evaluator.sort_best_candidate(all_candidates) + if best_candidate is None: + return None + + remote_version = best_candidate.version + if best_candidate.link.is_wheel: + typ = "wheel" + else: + typ = "sdist" + dist.latest_version = remote_version + dist.latest_filetype = typ + return dist + + for dist in map(latest_info, packages): + if dist is not None: + yield dist + + def output_package_listing( + self, packages: "_ProcessedDists", options: Values + ) -> None: + packages = sorted( + packages, + key=lambda dist: dist.canonical_name, + ) + if options.list_format == "columns" and packages: + data, header = format_for_columns(packages, options) + self.output_package_listing_columns(data, header) + elif options.list_format == "freeze": + for dist in packages: + if options.verbose >= 1: + write_output( + "%s==%s (%s)", dist.raw_name, dist.version, dist.location + ) + else: + write_output("%s==%s", dist.raw_name, dist.version) + elif options.list_format == "json": + write_output(format_for_json(packages, options)) + + def output_package_listing_columns( + self, data: List[List[str]], header: List[str] + ) -> None: + # insert the header first: we need to know the size of column names + if len(data) > 0: + data.insert(0, header) + + pkg_strings, sizes = tabulate(data) + + # Create and add a separator. + if len(data) > 0: + pkg_strings.insert(1, " ".join("-" * x for x in sizes)) + + for val in pkg_strings: + write_output(val) + + +def format_for_columns( + pkgs: "_ProcessedDists", options: Values +) -> Tuple[List[List[str]], List[str]]: + """ + Convert the package data into something usable + by output_package_listing_columns. + """ + header = ["Package", "Version"] + + running_outdated = options.outdated + if running_outdated: + header.extend(["Latest", "Type"]) + + has_editables = any(x.editable for x in pkgs) + if has_editables: + header.append("Editable project location") + + if options.verbose >= 1: + header.append("Location") + if options.verbose >= 1: + header.append("Installer") + + data = [] + for proj in pkgs: + # if we're working on the 'outdated' list, separate out the + # latest_version and type + row = [proj.raw_name, proj.raw_version] + + if running_outdated: + row.append(str(proj.latest_version)) + row.append(proj.latest_filetype) + + if has_editables: + row.append(proj.editable_project_location or "") + + if options.verbose >= 1: + row.append(proj.location or "") + if options.verbose >= 1: + row.append(proj.installer) + + data.append(row) + + return data, header + + +def format_for_json(packages: "_ProcessedDists", options: Values) -> str: + data = [] + for dist in packages: + info = { + "name": dist.raw_name, + "version": str(dist.version), + } + if options.verbose >= 1: + info["location"] = dist.location or "" + info["installer"] = dist.installer + if options.outdated: + info["latest_version"] = str(dist.latest_version) + info["latest_filetype"] = dist.latest_filetype + editable_project_location = dist.editable_project_location + if editable_project_location: + info["editable_project_location"] = editable_project_location + data.append(info) + return json.dumps(data) diff --git a/venv/Lib/site-packages/pip/_internal/commands/search.py b/venv/Lib/site-packages/pip/_internal/commands/search.py new file mode 100644 index 00000000000..e0d329d58ad --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/search.py @@ -0,0 +1,172 @@ +import logging +import shutil +import sys +import textwrap +import xmlrpc.client +from collections import OrderedDict +from optparse import Values +from typing import TYPE_CHECKING, Dict, List, Optional, TypedDict + +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.cli.base_command import Command +from pip._internal.cli.req_command import SessionCommandMixin +from pip._internal.cli.status_codes import NO_MATCHES_FOUND, SUCCESS +from pip._internal.exceptions import CommandError +from pip._internal.metadata import get_default_environment +from pip._internal.models.index import PyPI +from pip._internal.network.xmlrpc import PipXmlrpcTransport +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import write_output + +if TYPE_CHECKING: + + class TransformedHit(TypedDict): + name: str + summary: str + versions: List[str] + + +logger = logging.getLogger(__name__) + + +class SearchCommand(Command, SessionCommandMixin): + """Search for PyPI packages whose name or summary contains .""" + + usage = """ + %prog [options] """ + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-i", + "--index", + dest="index", + metavar="URL", + default=PyPI.pypi_url, + help="Base URL of Python Package Index (default %default)", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + if not args: + raise CommandError("Missing required argument (search query).") + query = args + pypi_hits = self.search(query, options) + hits = transform_hits(pypi_hits) + + terminal_width = None + if sys.stdout.isatty(): + terminal_width = shutil.get_terminal_size()[0] + + print_results(hits, terminal_width=terminal_width) + if pypi_hits: + return SUCCESS + return NO_MATCHES_FOUND + + def search(self, query: List[str], options: Values) -> List[Dict[str, str]]: + index_url = options.index + + session = self.get_default_session(options) + + transport = PipXmlrpcTransport(index_url, session) + pypi = xmlrpc.client.ServerProxy(index_url, transport) + try: + hits = pypi.search({"name": query, "summary": query}, "or") + except xmlrpc.client.Fault as fault: + message = ( + f"XMLRPC request failed [code: {fault.faultCode}]\n{fault.faultString}" + ) + raise CommandError(message) + assert isinstance(hits, list) + return hits + + +def transform_hits(hits: List[Dict[str, str]]) -> List["TransformedHit"]: + """ + The list from pypi is really a list of versions. We want a list of + packages with the list of versions stored inline. This converts the + list from pypi into one we can use. + """ + packages: Dict[str, "TransformedHit"] = OrderedDict() + for hit in hits: + name = hit["name"] + summary = hit["summary"] + version = hit["version"] + + if name not in packages.keys(): + packages[name] = { + "name": name, + "summary": summary, + "versions": [version], + } + else: + packages[name]["versions"].append(version) + + # if this is the highest version, replace summary and score + if version == highest_version(packages[name]["versions"]): + packages[name]["summary"] = summary + + return list(packages.values()) + + +def print_dist_installation_info(name: str, latest: str) -> None: + env = get_default_environment() + dist = env.get_distribution(name) + if dist is not None: + with indent_log(): + if dist.version == latest: + write_output("INSTALLED: %s (latest)", dist.version) + else: + write_output("INSTALLED: %s", dist.version) + if parse_version(latest).pre: + write_output( + "LATEST: %s (pre-release; install" + " with `pip install --pre`)", + latest, + ) + else: + write_output("LATEST: %s", latest) + + +def print_results( + hits: List["TransformedHit"], + name_column_width: Optional[int] = None, + terminal_width: Optional[int] = None, +) -> None: + if not hits: + return + if name_column_width is None: + name_column_width = ( + max( + [ + len(hit["name"]) + len(highest_version(hit.get("versions", ["-"]))) + for hit in hits + ] + ) + + 4 + ) + + for hit in hits: + name = hit["name"] + summary = hit["summary"] or "" + latest = highest_version(hit.get("versions", ["-"])) + if terminal_width is not None: + target_width = terminal_width - name_column_width - 5 + if target_width > 10: + # wrap and indent summary to fit terminal + summary_lines = textwrap.wrap(summary, target_width) + summary = ("\n" + " " * (name_column_width + 3)).join(summary_lines) + + name_latest = f"{name} ({latest})" + line = f"{name_latest:{name_column_width}} - {summary}" + try: + write_output(line) + print_dist_installation_info(name, latest) + except UnicodeEncodeError: + pass + + +def highest_version(versions: List[str]) -> str: + return max(versions, key=parse_version) diff --git a/venv/Lib/site-packages/pip/_internal/commands/show.py b/venv/Lib/site-packages/pip/_internal/commands/show.py new file mode 100644 index 00000000000..c54d548f5fb --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/show.py @@ -0,0 +1,217 @@ +import logging +from optparse import Values +from typing import Generator, Iterable, Iterator, List, NamedTuple, Optional + +from pip._vendor.packaging.requirements import InvalidRequirement +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.metadata import BaseDistribution, get_default_environment +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class ShowCommand(Command): + """ + Show information about one or more installed packages. + + The output is in RFC-compliant mail header format. + """ + + usage = """ + %prog [options] ...""" + ignore_require_venv = True + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-f", + "--files", + dest="files", + action="store_true", + default=False, + help="Show the full list of installed files for each package.", + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + if not args: + logger.warning("ERROR: Please provide a package name or names.") + return ERROR + query = args + + results = search_packages_info(query) + if not print_results( + results, list_files=options.files, verbose=options.verbose + ): + return ERROR + return SUCCESS + + +class _PackageInfo(NamedTuple): + name: str + version: str + location: str + editable_project_location: Optional[str] + requires: List[str] + required_by: List[str] + installer: str + metadata_version: str + classifiers: List[str] + summary: str + homepage: str + project_urls: List[str] + author: str + author_email: str + license: str + entry_points: List[str] + files: Optional[List[str]] + + +def search_packages_info(query: List[str]) -> Generator[_PackageInfo, None, None]: + """ + Gather details from installed distributions. Print distribution name, + version, location, and installed files. Installed files requires a + pip generated 'installed-files.txt' in the distributions '.egg-info' + directory. + """ + env = get_default_environment() + + installed = {dist.canonical_name: dist for dist in env.iter_all_distributions()} + query_names = [canonicalize_name(name) for name in query] + missing = sorted( + [name for name, pkg in zip(query, query_names) if pkg not in installed] + ) + if missing: + logger.warning("Package(s) not found: %s", ", ".join(missing)) + + def _get_requiring_packages(current_dist: BaseDistribution) -> Iterator[str]: + return ( + dist.metadata["Name"] or "UNKNOWN" + for dist in installed.values() + if current_dist.canonical_name + in {canonicalize_name(d.name) for d in dist.iter_dependencies()} + ) + + for query_name in query_names: + try: + dist = installed[query_name] + except KeyError: + continue + + try: + requires = sorted( + # Avoid duplicates in requirements (e.g. due to environment markers). + {req.name for req in dist.iter_dependencies()}, + key=str.lower, + ) + except InvalidRequirement: + requires = sorted(dist.iter_raw_dependencies(), key=str.lower) + + try: + required_by = sorted(_get_requiring_packages(dist), key=str.lower) + except InvalidRequirement: + required_by = ["#N/A"] + + try: + entry_points_text = dist.read_text("entry_points.txt") + entry_points = entry_points_text.splitlines(keepends=False) + except FileNotFoundError: + entry_points = [] + + files_iter = dist.iter_declared_entries() + if files_iter is None: + files: Optional[List[str]] = None + else: + files = sorted(files_iter) + + metadata = dist.metadata + + project_urls = metadata.get_all("Project-URL", []) + homepage = metadata.get("Home-page", "") + if not homepage: + # It's common that there is a "homepage" Project-URL, but Home-page + # remains unset (especially as PEP 621 doesn't surface the field). + # + # This logic was taken from PyPI's codebase. + for url in project_urls: + url_label, url = url.split(",", maxsplit=1) + normalized_label = ( + url_label.casefold().replace("-", "").replace("_", "").strip() + ) + if normalized_label == "homepage": + homepage = url.strip() + break + + yield _PackageInfo( + name=dist.raw_name, + version=dist.raw_version, + location=dist.location or "", + editable_project_location=dist.editable_project_location, + requires=requires, + required_by=required_by, + installer=dist.installer, + metadata_version=dist.metadata_version or "", + classifiers=metadata.get_all("Classifier", []), + summary=metadata.get("Summary", ""), + homepage=homepage, + project_urls=project_urls, + author=metadata.get("Author", ""), + author_email=metadata.get("Author-email", ""), + license=metadata.get("License", ""), + entry_points=entry_points, + files=files, + ) + + +def print_results( + distributions: Iterable[_PackageInfo], + list_files: bool, + verbose: bool, +) -> bool: + """ + Print the information from installed distributions found. + """ + results_printed = False + for i, dist in enumerate(distributions): + results_printed = True + if i > 0: + write_output("---") + + write_output("Name: %s", dist.name) + write_output("Version: %s", dist.version) + write_output("Summary: %s", dist.summary) + write_output("Home-page: %s", dist.homepage) + write_output("Author: %s", dist.author) + write_output("Author-email: %s", dist.author_email) + write_output("License: %s", dist.license) + write_output("Location: %s", dist.location) + if dist.editable_project_location is not None: + write_output( + "Editable project location: %s", dist.editable_project_location + ) + write_output("Requires: %s", ", ".join(dist.requires)) + write_output("Required-by: %s", ", ".join(dist.required_by)) + + if verbose: + write_output("Metadata-Version: %s", dist.metadata_version) + write_output("Installer: %s", dist.installer) + write_output("Classifiers:") + for classifier in dist.classifiers: + write_output(" %s", classifier) + write_output("Entry-points:") + for entry in dist.entry_points: + write_output(" %s", entry.strip()) + write_output("Project-URLs:") + for project_url in dist.project_urls: + write_output(" %s", project_url) + if list_files: + write_output("Files:") + if dist.files is None: + write_output("Cannot locate RECORD or installed-files.txt") + else: + for line in dist.files: + write_output(" %s", line.strip()) + return results_printed diff --git a/venv/Lib/site-packages/pip/_internal/commands/uninstall.py b/venv/Lib/site-packages/pip/_internal/commands/uninstall.py new file mode 100644 index 00000000000..bc0edeac9fb --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/uninstall.py @@ -0,0 +1,114 @@ +import logging +from optparse import Values +from typing import List + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.index_command import SessionCommandMixin +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import InstallationError +from pip._internal.req import parse_requirements +from pip._internal.req.constructors import ( + install_req_from_line, + install_req_from_parsed_requirement, +) +from pip._internal.utils.misc import ( + check_externally_managed, + protect_pip_from_modification_on_windows, + warn_if_run_as_root, +) + +logger = logging.getLogger(__name__) + + +class UninstallCommand(Command, SessionCommandMixin): + """ + Uninstall packages. + + pip is able to uninstall most installed packages. Known exceptions are: + + - Pure distutils packages installed with ``python setup.py install``, which + leave behind no metadata to determine what files were installed. + - Script wrappers installed by ``python setup.py develop``. + """ + + usage = """ + %prog [options] ... + %prog [options] -r ...""" + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-r", + "--requirement", + dest="requirements", + action="append", + default=[], + metavar="file", + help=( + "Uninstall all the packages listed in the given requirements " + "file. This option can be used multiple times." + ), + ) + self.cmd_opts.add_option( + "-y", + "--yes", + dest="yes", + action="store_true", + help="Don't ask for confirmation of uninstall deletions.", + ) + self.cmd_opts.add_option(cmdoptions.root_user_action()) + self.cmd_opts.add_option(cmdoptions.override_externally_managed()) + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options: Values, args: List[str]) -> int: + session = self.get_default_session(options) + + reqs_to_uninstall = {} + for name in args: + req = install_req_from_line( + name, + isolated=options.isolated_mode, + ) + if req.name: + reqs_to_uninstall[canonicalize_name(req.name)] = req + else: + logger.warning( + "Invalid requirement: %r ignored -" + " the uninstall command expects named" + " requirements.", + name, + ) + for filename in options.requirements: + for parsed_req in parse_requirements( + filename, options=options, session=session + ): + req = install_req_from_parsed_requirement( + parsed_req, isolated=options.isolated_mode + ) + if req.name: + reqs_to_uninstall[canonicalize_name(req.name)] = req + if not reqs_to_uninstall: + raise InstallationError( + f"You must give at least one requirement to {self.name} (see " + f'"pip help {self.name}")' + ) + + if not options.override_externally_managed: + check_externally_managed() + + protect_pip_from_modification_on_windows( + modifying_pip="pip" in reqs_to_uninstall + ) + + for req in reqs_to_uninstall.values(): + uninstall_pathset = req.uninstall( + auto_confirm=options.yes, + verbose=self.verbosity > 0, + ) + if uninstall_pathset: + uninstall_pathset.commit() + if options.root_user_action == "warn": + warn_if_run_as_root() + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/commands/wheel.py b/venv/Lib/site-packages/pip/_internal/commands/wheel.py new file mode 100644 index 00000000000..278719f4e0c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/commands/wheel.py @@ -0,0 +1,182 @@ +import logging +import os +import shutil +from optparse import Values +from typing import List + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.req_command import RequirementCommand, with_cleanup +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import CommandError +from pip._internal.operations.build.build_tracker import get_build_tracker +from pip._internal.req.req_install import ( + InstallRequirement, + check_legacy_setup_py_options, +) +from pip._internal.utils.misc import ensure_dir, normalize_path +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.wheel_builder import build, should_build_for_wheel_command + +logger = logging.getLogger(__name__) + + +class WheelCommand(RequirementCommand): + """ + Build Wheel archives for your requirements and dependencies. + + Wheel is a built-package format, and offers the advantage of not + recompiling your software during every install. For more details, see the + wheel docs: https://wheel.readthedocs.io/en/latest/ + + 'pip wheel' uses the build system interface as described here: + https://pip.pypa.io/en/stable/reference/build-system/ + + """ + + usage = """ + %prog [options] ... + %prog [options] -r ... + %prog [options] [-e] ... + %prog [options] [-e] ... + %prog [options] ...""" + + def add_options(self) -> None: + self.cmd_opts.add_option( + "-w", + "--wheel-dir", + dest="wheel_dir", + metavar="dir", + default=os.curdir, + help=( + "Build wheels into , where the default is the " + "current working directory." + ), + ) + self.cmd_opts.add_option(cmdoptions.no_binary()) + self.cmd_opts.add_option(cmdoptions.only_binary()) + self.cmd_opts.add_option(cmdoptions.prefer_binary()) + self.cmd_opts.add_option(cmdoptions.no_build_isolation()) + self.cmd_opts.add_option(cmdoptions.use_pep517()) + self.cmd_opts.add_option(cmdoptions.no_use_pep517()) + self.cmd_opts.add_option(cmdoptions.check_build_deps()) + self.cmd_opts.add_option(cmdoptions.constraints()) + self.cmd_opts.add_option(cmdoptions.editable()) + self.cmd_opts.add_option(cmdoptions.requirements()) + self.cmd_opts.add_option(cmdoptions.src()) + self.cmd_opts.add_option(cmdoptions.ignore_requires_python()) + self.cmd_opts.add_option(cmdoptions.no_deps()) + self.cmd_opts.add_option(cmdoptions.progress_bar()) + + self.cmd_opts.add_option( + "--no-verify", + dest="no_verify", + action="store_true", + default=False, + help="Don't verify if built wheel is valid.", + ) + + self.cmd_opts.add_option(cmdoptions.config_settings()) + self.cmd_opts.add_option(cmdoptions.build_options()) + self.cmd_opts.add_option(cmdoptions.global_options()) + + self.cmd_opts.add_option( + "--pre", + action="store_true", + default=False, + help=( + "Include pre-release and development versions. By default, " + "pip only finds stable versions." + ), + ) + + self.cmd_opts.add_option(cmdoptions.require_hashes()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, self.cmd_opts) + + @with_cleanup + def run(self, options: Values, args: List[str]) -> int: + session = self.get_default_session(options) + + finder = self._build_package_finder(options, session) + + options.wheel_dir = normalize_path(options.wheel_dir) + ensure_dir(options.wheel_dir) + + build_tracker = self.enter_context(get_build_tracker()) + + directory = TempDirectory( + delete=not options.no_clean, + kind="wheel", + globally_managed=True, + ) + + reqs = self.get_requirements(args, options, finder, session) + check_legacy_setup_py_options(options, reqs) + + wheel_cache = WheelCache(options.cache_dir) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + build_tracker=build_tracker, + session=session, + finder=finder, + download_dir=options.wheel_dir, + use_user_site=False, + verbosity=self.verbosity, + ) + + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + wheel_cache=wheel_cache, + ignore_requires_python=options.ignore_requires_python, + use_pep517=options.use_pep517, + ) + + self.trace_basic_info(finder) + + requirement_set = resolver.resolve(reqs, check_supported_wheels=True) + + reqs_to_build: List[InstallRequirement] = [] + for req in requirement_set.requirements.values(): + if req.is_wheel: + preparer.save_linked_requirement(req) + elif should_build_for_wheel_command(req): + reqs_to_build.append(req) + + preparer.prepare_linked_requirements_more(requirement_set.requirements.values()) + + # build wheels + build_successes, build_failures = build( + reqs_to_build, + wheel_cache=wheel_cache, + verify=(not options.no_verify), + build_options=options.build_options or [], + global_options=options.global_options or [], + ) + for req in build_successes: + assert req.link and req.link.is_wheel + assert req.local_file_path + # copy from cache to target directory + try: + shutil.copy(req.local_file_path, options.wheel_dir) + except OSError as e: + logger.warning( + "Building wheel for %s failed: %s", + req.name, + e, + ) + build_failures.append(req) + if len(build_failures) != 0: + raise CommandError("Failed to build one or more wheels") + + return SUCCESS diff --git a/venv/Lib/site-packages/pip/_internal/configuration.py b/venv/Lib/site-packages/pip/_internal/configuration.py new file mode 100644 index 00000000000..c25273d5f0b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/configuration.py @@ -0,0 +1,383 @@ +"""Configuration management setup + +Some terminology: +- name + As written in config files. +- value + Value associated with a name +- key + Name combined with it's section (section.name) +- variant + A single word describing where the configuration key-value pair came from +""" + +import configparser +import locale +import os +import sys +from typing import Any, Dict, Iterable, List, NewType, Optional, Tuple + +from pip._internal.exceptions import ( + ConfigurationError, + ConfigurationFileCouldNotBeLoaded, +) +from pip._internal.utils import appdirs +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.logging import getLogger +from pip._internal.utils.misc import ensure_dir, enum + +RawConfigParser = configparser.RawConfigParser # Shorthand +Kind = NewType("Kind", str) + +CONFIG_BASENAME = "pip.ini" if WINDOWS else "pip.conf" +ENV_NAMES_IGNORED = "version", "help" + +# The kinds of configurations there are. +kinds = enum( + USER="user", # User Specific + GLOBAL="global", # System Wide + SITE="site", # [Virtual] Environment Specific + ENV="env", # from PIP_CONFIG_FILE + ENV_VAR="env-var", # from Environment Variables +) +OVERRIDE_ORDER = kinds.GLOBAL, kinds.USER, kinds.SITE, kinds.ENV, kinds.ENV_VAR +VALID_LOAD_ONLY = kinds.USER, kinds.GLOBAL, kinds.SITE + +logger = getLogger(__name__) + + +# NOTE: Maybe use the optionx attribute to normalize keynames. +def _normalize_name(name: str) -> str: + """Make a name consistent regardless of source (environment or file)""" + name = name.lower().replace("_", "-") + if name.startswith("--"): + name = name[2:] # only prefer long opts + return name + + +def _disassemble_key(name: str) -> List[str]: + if "." not in name: + error_message = ( + "Key does not contain dot separated section and key. " + f"Perhaps you wanted to use 'global.{name}' instead?" + ) + raise ConfigurationError(error_message) + return name.split(".", 1) + + +def get_configuration_files() -> Dict[Kind, List[str]]: + global_config_files = [ + os.path.join(path, CONFIG_BASENAME) for path in appdirs.site_config_dirs("pip") + ] + + site_config_file = os.path.join(sys.prefix, CONFIG_BASENAME) + legacy_config_file = os.path.join( + os.path.expanduser("~"), + "pip" if WINDOWS else ".pip", + CONFIG_BASENAME, + ) + new_config_file = os.path.join(appdirs.user_config_dir("pip"), CONFIG_BASENAME) + return { + kinds.GLOBAL: global_config_files, + kinds.SITE: [site_config_file], + kinds.USER: [legacy_config_file, new_config_file], + } + + +class Configuration: + """Handles management of configuration. + + Provides an interface to accessing and managing configuration files. + + This class converts provides an API that takes "section.key-name" style + keys and stores the value associated with it as "key-name" under the + section "section". + + This allows for a clean interface wherein the both the section and the + key-name are preserved in an easy to manage form in the configuration files + and the data stored is also nice. + """ + + def __init__(self, isolated: bool, load_only: Optional[Kind] = None) -> None: + super().__init__() + + if load_only is not None and load_only not in VALID_LOAD_ONLY: + raise ConfigurationError( + "Got invalid value for load_only - should be one of {}".format( + ", ".join(map(repr, VALID_LOAD_ONLY)) + ) + ) + self.isolated = isolated + self.load_only = load_only + + # Because we keep track of where we got the data from + self._parsers: Dict[Kind, List[Tuple[str, RawConfigParser]]] = { + variant: [] for variant in OVERRIDE_ORDER + } + self._config: Dict[Kind, Dict[str, Any]] = { + variant: {} for variant in OVERRIDE_ORDER + } + self._modified_parsers: List[Tuple[str, RawConfigParser]] = [] + + def load(self) -> None: + """Loads configuration from configuration files and environment""" + self._load_config_files() + if not self.isolated: + self._load_environment_vars() + + def get_file_to_edit(self) -> Optional[str]: + """Returns the file with highest priority in configuration""" + assert self.load_only is not None, "Need to be specified a file to be editing" + + try: + return self._get_parser_to_modify()[0] + except IndexError: + return None + + def items(self) -> Iterable[Tuple[str, Any]]: + """Returns key-value pairs like dict.items() representing the loaded + configuration + """ + return self._dictionary.items() + + def get_value(self, key: str) -> Any: + """Get a value from the configuration.""" + orig_key = key + key = _normalize_name(key) + try: + return self._dictionary[key] + except KeyError: + # disassembling triggers a more useful error message than simply + # "No such key" in the case that the key isn't in the form command.option + _disassemble_key(key) + raise ConfigurationError(f"No such key - {orig_key}") + + def set_value(self, key: str, value: Any) -> None: + """Modify a value in the configuration.""" + key = _normalize_name(key) + self._ensure_have_load_only() + + assert self.load_only + fname, parser = self._get_parser_to_modify() + + if parser is not None: + section, name = _disassemble_key(key) + + # Modify the parser and the configuration + if not parser.has_section(section): + parser.add_section(section) + parser.set(section, name, value) + + self._config[self.load_only][key] = value + self._mark_as_modified(fname, parser) + + def unset_value(self, key: str) -> None: + """Unset a value in the configuration.""" + orig_key = key + key = _normalize_name(key) + self._ensure_have_load_only() + + assert self.load_only + if key not in self._config[self.load_only]: + raise ConfigurationError(f"No such key - {orig_key}") + + fname, parser = self._get_parser_to_modify() + + if parser is not None: + section, name = _disassemble_key(key) + if not ( + parser.has_section(section) and parser.remove_option(section, name) + ): + # The option was not removed. + raise ConfigurationError( + "Fatal Internal error [id=1]. Please report as a bug." + ) + + # The section may be empty after the option was removed. + if not parser.items(section): + parser.remove_section(section) + self._mark_as_modified(fname, parser) + + del self._config[self.load_only][key] + + def save(self) -> None: + """Save the current in-memory state.""" + self._ensure_have_load_only() + + for fname, parser in self._modified_parsers: + logger.info("Writing to %s", fname) + + # Ensure directory exists. + ensure_dir(os.path.dirname(fname)) + + # Ensure directory's permission(need to be writeable) + try: + with open(fname, "w") as f: + parser.write(f) + except OSError as error: + raise ConfigurationError( + f"An error occurred while writing to the configuration file " + f"{fname}: {error}" + ) + + # + # Private routines + # + + def _ensure_have_load_only(self) -> None: + if self.load_only is None: + raise ConfigurationError("Needed a specific file to be modifying.") + logger.debug("Will be working with %s variant only", self.load_only) + + @property + def _dictionary(self) -> Dict[str, Any]: + """A dictionary representing the loaded configuration.""" + # NOTE: Dictionaries are not populated if not loaded. So, conditionals + # are not needed here. + retval = {} + + for variant in OVERRIDE_ORDER: + retval.update(self._config[variant]) + + return retval + + def _load_config_files(self) -> None: + """Loads configuration from configuration files""" + config_files = dict(self.iter_config_files()) + if config_files[kinds.ENV][0:1] == [os.devnull]: + logger.debug( + "Skipping loading configuration files due to " + "environment's PIP_CONFIG_FILE being os.devnull" + ) + return + + for variant, files in config_files.items(): + for fname in files: + # If there's specific variant set in `load_only`, load only + # that variant, not the others. + if self.load_only is not None and variant != self.load_only: + logger.debug("Skipping file '%s' (variant: %s)", fname, variant) + continue + + parser = self._load_file(variant, fname) + + # Keeping track of the parsers used + self._parsers[variant].append((fname, parser)) + + def _load_file(self, variant: Kind, fname: str) -> RawConfigParser: + logger.verbose("For variant '%s', will try loading '%s'", variant, fname) + parser = self._construct_parser(fname) + + for section in parser.sections(): + items = parser.items(section) + self._config[variant].update(self._normalized_keys(section, items)) + + return parser + + def _construct_parser(self, fname: str) -> RawConfigParser: + parser = configparser.RawConfigParser() + # If there is no such file, don't bother reading it but create the + # parser anyway, to hold the data. + # Doing this is useful when modifying and saving files, where we don't + # need to construct a parser. + if os.path.exists(fname): + locale_encoding = locale.getpreferredencoding(False) + try: + parser.read(fname, encoding=locale_encoding) + except UnicodeDecodeError: + # See https://github.com/pypa/pip/issues/4963 + raise ConfigurationFileCouldNotBeLoaded( + reason=f"contains invalid {locale_encoding} characters", + fname=fname, + ) + except configparser.Error as error: + # See https://github.com/pypa/pip/issues/4893 + raise ConfigurationFileCouldNotBeLoaded(error=error) + return parser + + def _load_environment_vars(self) -> None: + """Loads configuration from environment variables""" + self._config[kinds.ENV_VAR].update( + self._normalized_keys(":env:", self.get_environ_vars()) + ) + + def _normalized_keys( + self, section: str, items: Iterable[Tuple[str, Any]] + ) -> Dict[str, Any]: + """Normalizes items to construct a dictionary with normalized keys. + + This routine is where the names become keys and are made the same + regardless of source - configuration files or environment. + """ + normalized = {} + for name, val in items: + key = section + "." + _normalize_name(name) + normalized[key] = val + return normalized + + def get_environ_vars(self) -> Iterable[Tuple[str, str]]: + """Returns a generator with all environmental vars with prefix PIP_""" + for key, val in os.environ.items(): + if key.startswith("PIP_"): + name = key[4:].lower() + if name not in ENV_NAMES_IGNORED: + yield name, val + + # XXX: This is patched in the tests. + def iter_config_files(self) -> Iterable[Tuple[Kind, List[str]]]: + """Yields variant and configuration files associated with it. + + This should be treated like items of a dictionary. The order + here doesn't affect what gets overridden. That is controlled + by OVERRIDE_ORDER. However this does control the order they are + displayed to the user. It's probably most ergononmic to display + things in the same order as OVERRIDE_ORDER + """ + # SMELL: Move the conditions out of this function + + env_config_file = os.environ.get("PIP_CONFIG_FILE", None) + config_files = get_configuration_files() + + yield kinds.GLOBAL, config_files[kinds.GLOBAL] + + # per-user config is not loaded when env_config_file exists + should_load_user_config = not self.isolated and not ( + env_config_file and os.path.exists(env_config_file) + ) + if should_load_user_config: + # The legacy config file is overridden by the new config file + yield kinds.USER, config_files[kinds.USER] + + # virtualenv config + yield kinds.SITE, config_files[kinds.SITE] + + if env_config_file is not None: + yield kinds.ENV, [env_config_file] + else: + yield kinds.ENV, [] + + def get_values_in_config(self, variant: Kind) -> Dict[str, Any]: + """Get values present in a config file""" + return self._config[variant] + + def _get_parser_to_modify(self) -> Tuple[str, RawConfigParser]: + # Determine which parser to modify + assert self.load_only + parsers = self._parsers[self.load_only] + if not parsers: + # This should not happen if everything works correctly. + raise ConfigurationError( + "Fatal Internal error [id=2]. Please report as a bug." + ) + + # Use the highest priority parser. + return parsers[-1] + + # XXX: This is patched in the tests. + def _mark_as_modified(self, fname: str, parser: RawConfigParser) -> None: + file_parser_tuple = (fname, parser) + if file_parser_tuple not in self._modified_parsers: + self._modified_parsers.append(file_parser_tuple) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self._dictionary!r})" diff --git a/venv/Lib/site-packages/pip/_internal/distributions/__init__.py b/venv/Lib/site-packages/pip/_internal/distributions/__init__.py new file mode 100644 index 00000000000..9a89a838b9a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/distributions/__init__.py @@ -0,0 +1,21 @@ +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.distributions.sdist import SourceDistribution +from pip._internal.distributions.wheel import WheelDistribution +from pip._internal.req.req_install import InstallRequirement + + +def make_distribution_for_install_requirement( + install_req: InstallRequirement, +) -> AbstractDistribution: + """Returns a Distribution for the given InstallRequirement""" + # Editable requirements will always be source distributions. They use the + # legacy logic until we create a modern standard for them. + if install_req.editable: + return SourceDistribution(install_req) + + # If it's a wheel, it's a WheelDistribution + if install_req.is_wheel: + return WheelDistribution(install_req) + + # Otherwise, a SourceDistribution + return SourceDistribution(install_req) diff --git a/venv/Lib/site-packages/pip/_internal/distributions/base.py b/venv/Lib/site-packages/pip/_internal/distributions/base.py new file mode 100644 index 00000000000..6e4d0c91a90 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/distributions/base.py @@ -0,0 +1,53 @@ +import abc +from typing import TYPE_CHECKING, Optional + +from pip._internal.metadata.base import BaseDistribution +from pip._internal.req import InstallRequirement + +if TYPE_CHECKING: + from pip._internal.index.package_finder import PackageFinder + + +class AbstractDistribution(metaclass=abc.ABCMeta): + """A base class for handling installable artifacts. + + The requirements for anything installable are as follows: + + - we must be able to determine the requirement name + (or we can't correctly handle the non-upgrade case). + + - for packages with setup requirements, we must also be able + to determine their requirements without installing additional + packages (for the same reason as run-time dependencies) + + - we must be able to create a Distribution object exposing the + above metadata. + + - if we need to do work in the build tracker, we must be able to generate a unique + string to identify the requirement in the build tracker. + """ + + def __init__(self, req: InstallRequirement) -> None: + super().__init__() + self.req = req + + @abc.abstractproperty + def build_tracker_id(self) -> Optional[str]: + """A string that uniquely identifies this requirement to the build tracker. + + If None, then this dist has no work to do in the build tracker, and + ``.prepare_distribution_metadata()`` will not be called.""" + raise NotImplementedError() + + @abc.abstractmethod + def get_metadata_distribution(self) -> BaseDistribution: + raise NotImplementedError() + + @abc.abstractmethod + def prepare_distribution_metadata( + self, + finder: "PackageFinder", + build_isolation: bool, + check_build_deps: bool, + ) -> None: + raise NotImplementedError() diff --git a/venv/Lib/site-packages/pip/_internal/distributions/installed.py b/venv/Lib/site-packages/pip/_internal/distributions/installed.py new file mode 100644 index 00000000000..ab8d53be740 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/distributions/installed.py @@ -0,0 +1,29 @@ +from typing import Optional + +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution + + +class InstalledDistribution(AbstractDistribution): + """Represents an installed package. + + This does not need any preparation as the required information has already + been computed. + """ + + @property + def build_tracker_id(self) -> Optional[str]: + return None + + def get_metadata_distribution(self) -> BaseDistribution: + assert self.req.satisfied_by is not None, "not actually installed" + return self.req.satisfied_by + + def prepare_distribution_metadata( + self, + finder: PackageFinder, + build_isolation: bool, + check_build_deps: bool, + ) -> None: + pass diff --git a/venv/Lib/site-packages/pip/_internal/distributions/sdist.py b/venv/Lib/site-packages/pip/_internal/distributions/sdist.py new file mode 100644 index 00000000000..28ea5cea16c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/distributions/sdist.py @@ -0,0 +1,158 @@ +import logging +from typing import TYPE_CHECKING, Iterable, Optional, Set, Tuple + +from pip._internal.build_env import BuildEnvironment +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.exceptions import InstallationError +from pip._internal.metadata import BaseDistribution +from pip._internal.utils.subprocess import runner_with_spinner_message + +if TYPE_CHECKING: + from pip._internal.index.package_finder import PackageFinder + +logger = logging.getLogger(__name__) + + +class SourceDistribution(AbstractDistribution): + """Represents a source distribution. + + The preparation step for these needs metadata for the packages to be + generated, either using PEP 517 or using the legacy `setup.py egg_info`. + """ + + @property + def build_tracker_id(self) -> Optional[str]: + """Identify this requirement uniquely by its link.""" + assert self.req.link + return self.req.link.url_without_fragment + + def get_metadata_distribution(self) -> BaseDistribution: + return self.req.get_dist() + + def prepare_distribution_metadata( + self, + finder: "PackageFinder", + build_isolation: bool, + check_build_deps: bool, + ) -> None: + # Load pyproject.toml, to determine whether PEP 517 is to be used + self.req.load_pyproject_toml() + + # Set up the build isolation, if this requirement should be isolated + should_isolate = self.req.use_pep517 and build_isolation + if should_isolate: + # Setup an isolated environment and install the build backend static + # requirements in it. + self._prepare_build_backend(finder) + # Check that if the requirement is editable, it either supports PEP 660 or + # has a setup.py or a setup.cfg. This cannot be done earlier because we need + # to setup the build backend to verify it supports build_editable, nor can + # it be done later, because we want to avoid installing build requirements + # needlessly. Doing it here also works around setuptools generating + # UNKNOWN.egg-info when running get_requires_for_build_wheel on a directory + # without setup.py nor setup.cfg. + self.req.isolated_editable_sanity_check() + # Install the dynamic build requirements. + self._install_build_reqs(finder) + # Check if the current environment provides build dependencies + should_check_deps = self.req.use_pep517 and check_build_deps + if should_check_deps: + pyproject_requires = self.req.pyproject_requires + assert pyproject_requires is not None + conflicting, missing = self.req.build_env.check_requirements( + pyproject_requires + ) + if conflicting: + self._raise_conflicts("the backend dependencies", conflicting) + if missing: + self._raise_missing_reqs(missing) + self.req.prepare_metadata() + + def _prepare_build_backend(self, finder: "PackageFinder") -> None: + # Isolate in a BuildEnvironment and install the build-time + # requirements. + pyproject_requires = self.req.pyproject_requires + assert pyproject_requires is not None + + self.req.build_env = BuildEnvironment() + self.req.build_env.install_requirements( + finder, pyproject_requires, "overlay", kind="build dependencies" + ) + conflicting, missing = self.req.build_env.check_requirements( + self.req.requirements_to_check + ) + if conflicting: + self._raise_conflicts("PEP 517/518 supported requirements", conflicting) + if missing: + logger.warning( + "Missing build requirements in pyproject.toml for %s.", + self.req, + ) + logger.warning( + "The project does not specify a build backend, and " + "pip cannot fall back to setuptools without %s.", + " and ".join(map(repr, sorted(missing))), + ) + + def _get_build_requires_wheel(self) -> Iterable[str]: + with self.req.build_env: + runner = runner_with_spinner_message("Getting requirements to build wheel") + backend = self.req.pep517_backend + assert backend is not None + with backend.subprocess_runner(runner): + return backend.get_requires_for_build_wheel() + + def _get_build_requires_editable(self) -> Iterable[str]: + with self.req.build_env: + runner = runner_with_spinner_message( + "Getting requirements to build editable" + ) + backend = self.req.pep517_backend + assert backend is not None + with backend.subprocess_runner(runner): + return backend.get_requires_for_build_editable() + + def _install_build_reqs(self, finder: "PackageFinder") -> None: + # Install any extra build dependencies that the backend requests. + # This must be done in a second pass, as the pyproject.toml + # dependencies must be installed before we can call the backend. + if ( + self.req.editable + and self.req.permit_editable_wheels + and self.req.supports_pyproject_editable + ): + build_reqs = self._get_build_requires_editable() + else: + build_reqs = self._get_build_requires_wheel() + conflicting, missing = self.req.build_env.check_requirements(build_reqs) + if conflicting: + self._raise_conflicts("the backend dependencies", conflicting) + self.req.build_env.install_requirements( + finder, missing, "normal", kind="backend dependencies" + ) + + def _raise_conflicts( + self, conflicting_with: str, conflicting_reqs: Set[Tuple[str, str]] + ) -> None: + format_string = ( + "Some build dependencies for {requirement} " + "conflict with {conflicting_with}: {description}." + ) + error_message = format_string.format( + requirement=self.req, + conflicting_with=conflicting_with, + description=", ".join( + f"{installed} is incompatible with {wanted}" + for installed, wanted in sorted(conflicting_reqs) + ), + ) + raise InstallationError(error_message) + + def _raise_missing_reqs(self, missing: Set[str]) -> None: + format_string = ( + "Some build dependencies for {requirement} are missing: {missing}." + ) + error_message = format_string.format( + requirement=self.req, missing=", ".join(map(repr, sorted(missing))) + ) + raise InstallationError(error_message) diff --git a/venv/Lib/site-packages/pip/_internal/distributions/wheel.py b/venv/Lib/site-packages/pip/_internal/distributions/wheel.py new file mode 100644 index 00000000000..bfadd39dcb7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/distributions/wheel.py @@ -0,0 +1,42 @@ +from typing import TYPE_CHECKING, Optional + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.metadata import ( + BaseDistribution, + FilesystemWheel, + get_wheel_distribution, +) + +if TYPE_CHECKING: + from pip._internal.index.package_finder import PackageFinder + + +class WheelDistribution(AbstractDistribution): + """Represents a wheel distribution. + + This does not need any preparation as wheels can be directly unpacked. + """ + + @property + def build_tracker_id(self) -> Optional[str]: + return None + + def get_metadata_distribution(self) -> BaseDistribution: + """Loads the metadata from the wheel file into memory and returns a + Distribution that uses it, not relying on the wheel file or + requirement. + """ + assert self.req.local_file_path, "Set as part of preparation during download" + assert self.req.name, "Wheels are never unnamed" + wheel = FilesystemWheel(self.req.local_file_path) + return get_wheel_distribution(wheel, canonicalize_name(self.req.name)) + + def prepare_distribution_metadata( + self, + finder: "PackageFinder", + build_isolation: bool, + check_build_deps: bool, + ) -> None: + pass diff --git a/venv/Lib/site-packages/pip/_internal/exceptions.py b/venv/Lib/site-packages/pip/_internal/exceptions.py new file mode 100644 index 00000000000..2587740f73a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/exceptions.py @@ -0,0 +1,777 @@ +"""Exceptions used throughout package. + +This module MUST NOT try to import from anything within `pip._internal` to +operate. This is expected to be importable from any/all files within the +subpackage and, thus, should not depend on them. +""" + +import configparser +import contextlib +import locale +import logging +import pathlib +import re +import sys +from itertools import chain, groupby, repeat +from typing import TYPE_CHECKING, Dict, Iterator, List, Literal, Optional, Union + +from pip._vendor.rich.console import Console, ConsoleOptions, RenderResult +from pip._vendor.rich.markup import escape +from pip._vendor.rich.text import Text + +if TYPE_CHECKING: + from hashlib import _Hash + + from pip._vendor.requests.models import Request, Response + + from pip._internal.metadata import BaseDistribution + from pip._internal.req.req_install import InstallRequirement + +logger = logging.getLogger(__name__) + + +# +# Scaffolding +# +def _is_kebab_case(s: str) -> bool: + return re.match(r"^[a-z]+(-[a-z]+)*$", s) is not None + + +def _prefix_with_indent( + s: Union[Text, str], + console: Console, + *, + prefix: str, + indent: str, +) -> Text: + if isinstance(s, Text): + text = s + else: + text = console.render_str(s) + + return console.render_str(prefix, overflow="ignore") + console.render_str( + f"\n{indent}", overflow="ignore" + ).join(text.split(allow_blank=True)) + + +class PipError(Exception): + """The base pip error.""" + + +class DiagnosticPipError(PipError): + """An error, that presents diagnostic information to the user. + + This contains a bunch of logic, to enable pretty presentation of our error + messages. Each error gets a unique reference. Each error can also include + additional context, a hint and/or a note -- which are presented with the + main error message in a consistent style. + + This is adapted from the error output styling in `sphinx-theme-builder`. + """ + + reference: str + + def __init__( + self, + *, + kind: 'Literal["error", "warning"]' = "error", + reference: Optional[str] = None, + message: Union[str, Text], + context: Optional[Union[str, Text]], + hint_stmt: Optional[Union[str, Text]], + note_stmt: Optional[Union[str, Text]] = None, + link: Optional[str] = None, + ) -> None: + # Ensure a proper reference is provided. + if reference is None: + assert hasattr(self, "reference"), "error reference not provided!" + reference = self.reference + assert _is_kebab_case(reference), "error reference must be kebab-case!" + + self.kind = kind + self.reference = reference + + self.message = message + self.context = context + + self.note_stmt = note_stmt + self.hint_stmt = hint_stmt + + self.link = link + + super().__init__(f"<{self.__class__.__name__}: {self.reference}>") + + def __repr__(self) -> str: + return ( + f"<{self.__class__.__name__}(" + f"reference={self.reference!r}, " + f"message={self.message!r}, " + f"context={self.context!r}, " + f"note_stmt={self.note_stmt!r}, " + f"hint_stmt={self.hint_stmt!r}" + ")>" + ) + + def __rich_console__( + self, + console: Console, + options: ConsoleOptions, + ) -> RenderResult: + colour = "red" if self.kind == "error" else "yellow" + + yield f"[{colour} bold]{self.kind}[/]: [bold]{self.reference}[/]" + yield "" + + if not options.ascii_only: + # Present the main message, with relevant context indented. + if self.context is not None: + yield _prefix_with_indent( + self.message, + console, + prefix=f"[{colour}]×[/] ", + indent=f"[{colour}]│[/] ", + ) + yield _prefix_with_indent( + self.context, + console, + prefix=f"[{colour}]╰─>[/] ", + indent=f"[{colour}] [/] ", + ) + else: + yield _prefix_with_indent( + self.message, + console, + prefix="[red]×[/] ", + indent=" ", + ) + else: + yield self.message + if self.context is not None: + yield "" + yield self.context + + if self.note_stmt is not None or self.hint_stmt is not None: + yield "" + + if self.note_stmt is not None: + yield _prefix_with_indent( + self.note_stmt, + console, + prefix="[magenta bold]note[/]: ", + indent=" ", + ) + if self.hint_stmt is not None: + yield _prefix_with_indent( + self.hint_stmt, + console, + prefix="[cyan bold]hint[/]: ", + indent=" ", + ) + + if self.link is not None: + yield "" + yield f"Link: {self.link}" + + +# +# Actual Errors +# +class ConfigurationError(PipError): + """General exception in configuration""" + + +class InstallationError(PipError): + """General exception during installation""" + + +class MissingPyProjectBuildRequires(DiagnosticPipError): + """Raised when pyproject.toml has `build-system`, but no `build-system.requires`.""" + + reference = "missing-pyproject-build-system-requires" + + def __init__(self, *, package: str) -> None: + super().__init__( + message=f"Can not process {escape(package)}", + context=Text( + "This package has an invalid pyproject.toml file.\n" + "The [build-system] table is missing the mandatory `requires` key." + ), + note_stmt="This is an issue with the package mentioned above, not pip.", + hint_stmt=Text("See PEP 518 for the detailed specification."), + ) + + +class InvalidPyProjectBuildRequires(DiagnosticPipError): + """Raised when pyproject.toml an invalid `build-system.requires`.""" + + reference = "invalid-pyproject-build-system-requires" + + def __init__(self, *, package: str, reason: str) -> None: + super().__init__( + message=f"Can not process {escape(package)}", + context=Text( + "This package has an invalid `build-system.requires` key in " + f"pyproject.toml.\n{reason}" + ), + note_stmt="This is an issue with the package mentioned above, not pip.", + hint_stmt=Text("See PEP 518 for the detailed specification."), + ) + + +class NoneMetadataError(PipError): + """Raised when accessing a Distribution's "METADATA" or "PKG-INFO". + + This signifies an inconsistency, when the Distribution claims to have + the metadata file (if not, raise ``FileNotFoundError`` instead), but is + not actually able to produce its content. This may be due to permission + errors. + """ + + def __init__( + self, + dist: "BaseDistribution", + metadata_name: str, + ) -> None: + """ + :param dist: A Distribution object. + :param metadata_name: The name of the metadata being accessed + (can be "METADATA" or "PKG-INFO"). + """ + self.dist = dist + self.metadata_name = metadata_name + + def __str__(self) -> str: + # Use `dist` in the error message because its stringification + # includes more information, like the version and location. + return f"None {self.metadata_name} metadata found for distribution: {self.dist}" + + +class UserInstallationInvalid(InstallationError): + """A --user install is requested on an environment without user site.""" + + def __str__(self) -> str: + return "User base directory is not specified" + + +class InvalidSchemeCombination(InstallationError): + def __str__(self) -> str: + before = ", ".join(str(a) for a in self.args[:-1]) + return f"Cannot set {before} and {self.args[-1]} together" + + +class DistributionNotFound(InstallationError): + """Raised when a distribution cannot be found to satisfy a requirement""" + + +class RequirementsFileParseError(InstallationError): + """Raised when a general error occurs parsing a requirements file line.""" + + +class BestVersionAlreadyInstalled(PipError): + """Raised when the most up-to-date version of a package is already + installed.""" + + +class BadCommand(PipError): + """Raised when virtualenv or a command is not found""" + + +class CommandError(PipError): + """Raised when there is an error in command-line arguments""" + + +class PreviousBuildDirError(PipError): + """Raised when there's a previous conflicting build directory""" + + +class NetworkConnectionError(PipError): + """HTTP connection error""" + + def __init__( + self, + error_msg: str, + response: Optional["Response"] = None, + request: Optional["Request"] = None, + ) -> None: + """ + Initialize NetworkConnectionError with `request` and `response` + objects. + """ + self.response = response + self.request = request + self.error_msg = error_msg + if ( + self.response is not None + and not self.request + and hasattr(response, "request") + ): + self.request = self.response.request + super().__init__(error_msg, response, request) + + def __str__(self) -> str: + return str(self.error_msg) + + +class InvalidWheelFilename(InstallationError): + """Invalid wheel filename.""" + + +class UnsupportedWheel(InstallationError): + """Unsupported wheel.""" + + +class InvalidWheel(InstallationError): + """Invalid (e.g. corrupt) wheel.""" + + def __init__(self, location: str, name: str): + self.location = location + self.name = name + + def __str__(self) -> str: + return f"Wheel '{self.name}' located at {self.location} is invalid." + + +class MetadataInconsistent(InstallationError): + """Built metadata contains inconsistent information. + + This is raised when the metadata contains values (e.g. name and version) + that do not match the information previously obtained from sdist filename, + user-supplied ``#egg=`` value, or an install requirement name. + """ + + def __init__( + self, ireq: "InstallRequirement", field: str, f_val: str, m_val: str + ) -> None: + self.ireq = ireq + self.field = field + self.f_val = f_val + self.m_val = m_val + + def __str__(self) -> str: + return ( + f"Requested {self.ireq} has inconsistent {self.field}: " + f"expected {self.f_val!r}, but metadata has {self.m_val!r}" + ) + + +class MetadataInvalid(InstallationError): + """Metadata is invalid.""" + + def __init__(self, ireq: "InstallRequirement", error: str) -> None: + self.ireq = ireq + self.error = error + + def __str__(self) -> str: + return f"Requested {self.ireq} has invalid metadata: {self.error}" + + +class InstallationSubprocessError(DiagnosticPipError, InstallationError): + """A subprocess call failed.""" + + reference = "subprocess-exited-with-error" + + def __init__( + self, + *, + command_description: str, + exit_code: int, + output_lines: Optional[List[str]], + ) -> None: + if output_lines is None: + output_prompt = Text("See above for output.") + else: + output_prompt = ( + Text.from_markup(f"[red][{len(output_lines)} lines of output][/]\n") + + Text("".join(output_lines)) + + Text.from_markup(R"[red]\[end of output][/]") + ) + + super().__init__( + message=( + f"[green]{escape(command_description)}[/] did not run successfully.\n" + f"exit code: {exit_code}" + ), + context=output_prompt, + hint_stmt=None, + note_stmt=( + "This error originates from a subprocess, and is likely not a " + "problem with pip." + ), + ) + + self.command_description = command_description + self.exit_code = exit_code + + def __str__(self) -> str: + return f"{self.command_description} exited with {self.exit_code}" + + +class MetadataGenerationFailed(InstallationSubprocessError, InstallationError): + reference = "metadata-generation-failed" + + def __init__( + self, + *, + package_details: str, + ) -> None: + super(InstallationSubprocessError, self).__init__( + message="Encountered error while generating package metadata.", + context=escape(package_details), + hint_stmt="See above for details.", + note_stmt="This is an issue with the package mentioned above, not pip.", + ) + + def __str__(self) -> str: + return "metadata generation failed" + + +class HashErrors(InstallationError): + """Multiple HashError instances rolled into one for reporting""" + + def __init__(self) -> None: + self.errors: List["HashError"] = [] + + def append(self, error: "HashError") -> None: + self.errors.append(error) + + def __str__(self) -> str: + lines = [] + self.errors.sort(key=lambda e: e.order) + for cls, errors_of_cls in groupby(self.errors, lambda e: e.__class__): + lines.append(cls.head) + lines.extend(e.body() for e in errors_of_cls) + if lines: + return "\n".join(lines) + return "" + + def __bool__(self) -> bool: + return bool(self.errors) + + +class HashError(InstallationError): + """ + A failure to verify a package against known-good hashes + + :cvar order: An int sorting hash exception classes by difficulty of + recovery (lower being harder), so the user doesn't bother fretting + about unpinned packages when he has deeper issues, like VCS + dependencies, to deal with. Also keeps error reports in a + deterministic order. + :cvar head: A section heading for display above potentially many + exceptions of this kind + :ivar req: The InstallRequirement that triggered this error. This is + pasted on after the exception is instantiated, because it's not + typically available earlier. + + """ + + req: Optional["InstallRequirement"] = None + head = "" + order: int = -1 + + def body(self) -> str: + """Return a summary of me for display under the heading. + + This default implementation simply prints a description of the + triggering requirement. + + :param req: The InstallRequirement that provoked this error, with + its link already populated by the resolver's _populate_link(). + + """ + return f" {self._requirement_name()}" + + def __str__(self) -> str: + return f"{self.head}\n{self.body()}" + + def _requirement_name(self) -> str: + """Return a description of the requirement that triggered me. + + This default implementation returns long description of the req, with + line numbers + + """ + return str(self.req) if self.req else "unknown package" + + +class VcsHashUnsupported(HashError): + """A hash was provided for a version-control-system-based requirement, but + we don't have a method for hashing those.""" + + order = 0 + head = ( + "Can't verify hashes for these requirements because we don't " + "have a way to hash version control repositories:" + ) + + +class DirectoryUrlHashUnsupported(HashError): + """A hash was provided for a version-control-system-based requirement, but + we don't have a method for hashing those.""" + + order = 1 + head = ( + "Can't verify hashes for these file:// requirements because they " + "point to directories:" + ) + + +class HashMissing(HashError): + """A hash was needed for a requirement but is absent.""" + + order = 2 + head = ( + "Hashes are required in --require-hashes mode, but they are " + "missing from some requirements. Here is a list of those " + "requirements along with the hashes their downloaded archives " + "actually had. Add lines like these to your requirements files to " + "prevent tampering. (If you did not enable --require-hashes " + "manually, note that it turns on automatically when any package " + "has a hash.)" + ) + + def __init__(self, gotten_hash: str) -> None: + """ + :param gotten_hash: The hash of the (possibly malicious) archive we + just downloaded + """ + self.gotten_hash = gotten_hash + + def body(self) -> str: + # Dodge circular import. + from pip._internal.utils.hashes import FAVORITE_HASH + + package = None + if self.req: + # In the case of URL-based requirements, display the original URL + # seen in the requirements file rather than the package name, + # so the output can be directly copied into the requirements file. + package = ( + self.req.original_link + if self.req.is_direct + # In case someone feeds something downright stupid + # to InstallRequirement's constructor. + else getattr(self.req, "req", None) + ) + return " {} --hash={}:{}".format( + package or "unknown package", FAVORITE_HASH, self.gotten_hash + ) + + +class HashUnpinned(HashError): + """A requirement had a hash specified but was not pinned to a specific + version.""" + + order = 3 + head = ( + "In --require-hashes mode, all requirements must have their " + "versions pinned with ==. These do not:" + ) + + +class HashMismatch(HashError): + """ + Distribution file hash values don't match. + + :ivar package_name: The name of the package that triggered the hash + mismatch. Feel free to write to this after the exception is raise to + improve its error message. + + """ + + order = 4 + head = ( + "THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS " + "FILE. If you have updated the package versions, please update " + "the hashes. Otherwise, examine the package contents carefully; " + "someone may have tampered with them." + ) + + def __init__(self, allowed: Dict[str, List[str]], gots: Dict[str, "_Hash"]) -> None: + """ + :param allowed: A dict of algorithm names pointing to lists of allowed + hex digests + :param gots: A dict of algorithm names pointing to hashes we + actually got from the files under suspicion + """ + self.allowed = allowed + self.gots = gots + + def body(self) -> str: + return f" {self._requirement_name()}:\n{self._hash_comparison()}" + + def _hash_comparison(self) -> str: + """ + Return a comparison of actual and expected hash values. + + Example:: + + Expected sha256 abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde + or 123451234512345123451234512345123451234512345 + Got bcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdef + + """ + + def hash_then_or(hash_name: str) -> "chain[str]": + # For now, all the decent hashes have 6-char names, so we can get + # away with hard-coding space literals. + return chain([hash_name], repeat(" or")) + + lines: List[str] = [] + for hash_name, expecteds in self.allowed.items(): + prefix = hash_then_or(hash_name) + lines.extend((f" Expected {next(prefix)} {e}") for e in expecteds) + lines.append( + f" Got {self.gots[hash_name].hexdigest()}\n" + ) + return "\n".join(lines) + + +class UnsupportedPythonVersion(InstallationError): + """Unsupported python version according to Requires-Python package + metadata.""" + + +class ConfigurationFileCouldNotBeLoaded(ConfigurationError): + """When there are errors while loading a configuration file""" + + def __init__( + self, + reason: str = "could not be loaded", + fname: Optional[str] = None, + error: Optional[configparser.Error] = None, + ) -> None: + super().__init__(error) + self.reason = reason + self.fname = fname + self.error = error + + def __str__(self) -> str: + if self.fname is not None: + message_part = f" in {self.fname}." + else: + assert self.error is not None + message_part = f".\n{self.error}\n" + return f"Configuration file {self.reason}{message_part}" + + +_DEFAULT_EXTERNALLY_MANAGED_ERROR = f"""\ +The Python environment under {sys.prefix} is managed externally, and may not be +manipulated by the user. Please use specific tooling from the distributor of +the Python installation to interact with this environment instead. +""" + + +class ExternallyManagedEnvironment(DiagnosticPipError): + """The current environment is externally managed. + + This is raised when the current environment is externally managed, as + defined by `PEP 668`_. The ``EXTERNALLY-MANAGED`` configuration is checked + and displayed when the error is bubbled up to the user. + + :param error: The error message read from ``EXTERNALLY-MANAGED``. + """ + + reference = "externally-managed-environment" + + def __init__(self, error: Optional[str]) -> None: + if error is None: + context = Text(_DEFAULT_EXTERNALLY_MANAGED_ERROR) + else: + context = Text(error) + super().__init__( + message="This environment is externally managed", + context=context, + note_stmt=( + "If you believe this is a mistake, please contact your " + "Python installation or OS distribution provider. " + "You can override this, at the risk of breaking your Python " + "installation or OS, by passing --break-system-packages." + ), + hint_stmt=Text("See PEP 668 for the detailed specification."), + ) + + @staticmethod + def _iter_externally_managed_error_keys() -> Iterator[str]: + # LC_MESSAGES is in POSIX, but not the C standard. The most common + # platform that does not implement this category is Windows, where + # using other categories for console message localization is equally + # unreliable, so we fall back to the locale-less vendor message. This + # can always be re-evaluated when a vendor proposes a new alternative. + try: + category = locale.LC_MESSAGES + except AttributeError: + lang: Optional[str] = None + else: + lang, _ = locale.getlocale(category) + if lang is not None: + yield f"Error-{lang}" + for sep in ("-", "_"): + before, found, _ = lang.partition(sep) + if not found: + continue + yield f"Error-{before}" + yield "Error" + + @classmethod + def from_config( + cls, + config: Union[pathlib.Path, str], + ) -> "ExternallyManagedEnvironment": + parser = configparser.ConfigParser(interpolation=None) + try: + parser.read(config, encoding="utf-8") + section = parser["externally-managed"] + for key in cls._iter_externally_managed_error_keys(): + with contextlib.suppress(KeyError): + return cls(section[key]) + except KeyError: + pass + except (OSError, UnicodeDecodeError, configparser.ParsingError): + from pip._internal.utils._log import VERBOSE + + exc_info = logger.isEnabledFor(VERBOSE) + logger.warning("Failed to read %s", config, exc_info=exc_info) + return cls(None) + + +class UninstallMissingRecord(DiagnosticPipError): + reference = "uninstall-no-record-file" + + def __init__(self, *, distribution: "BaseDistribution") -> None: + installer = distribution.installer + if not installer or installer == "pip": + dep = f"{distribution.raw_name}=={distribution.version}" + hint = Text.assemble( + "You might be able to recover from this via: ", + (f"pip install --force-reinstall --no-deps {dep}", "green"), + ) + else: + hint = Text( + f"The package was installed by {installer}. " + "You should check if it can uninstall the package." + ) + + super().__init__( + message=Text(f"Cannot uninstall {distribution}"), + context=( + "The package's contents are unknown: " + f"no RECORD file was found for {distribution.raw_name}." + ), + hint_stmt=hint, + ) + + +class LegacyDistutilsInstall(DiagnosticPipError): + reference = "uninstall-distutils-installed-package" + + def __init__(self, *, distribution: "BaseDistribution") -> None: + super().__init__( + message=Text(f"Cannot uninstall {distribution}"), + context=( + "It is a distutils installed project and thus we cannot accurately " + "determine which files belong to it which would lead to only a partial " + "uninstall." + ), + hint_stmt=None, + ) diff --git a/venv/Lib/site-packages/pip/_internal/index/__init__.py b/venv/Lib/site-packages/pip/_internal/index/__init__.py new file mode 100644 index 00000000000..7a17b7b3b6a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/index/__init__.py @@ -0,0 +1,2 @@ +"""Index interaction code +""" diff --git a/venv/Lib/site-packages/pip/_internal/index/collector.py b/venv/Lib/site-packages/pip/_internal/index/collector.py new file mode 100644 index 00000000000..5f8fdee3d46 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/index/collector.py @@ -0,0 +1,494 @@ +""" +The main purpose of this module is to expose LinkCollector.collect_sources(). +""" + +import collections +import email.message +import functools +import itertools +import json +import logging +import os +import urllib.parse +import urllib.request +from dataclasses import dataclass +from html.parser import HTMLParser +from optparse import Values +from typing import ( + Callable, + Dict, + Iterable, + List, + MutableMapping, + NamedTuple, + Optional, + Protocol, + Sequence, + Tuple, + Union, +) + +from pip._vendor import requests +from pip._vendor.requests import Response +from pip._vendor.requests.exceptions import RetryError, SSLError + +from pip._internal.exceptions import NetworkConnectionError +from pip._internal.models.link import Link +from pip._internal.models.search_scope import SearchScope +from pip._internal.network.session import PipSession +from pip._internal.network.utils import raise_for_status +from pip._internal.utils.filetypes import is_archive_file +from pip._internal.utils.misc import redact_auth_from_url +from pip._internal.vcs import vcs + +from .sources import CandidatesFromPage, LinkSource, build_source + +logger = logging.getLogger(__name__) + +ResponseHeaders = MutableMapping[str, str] + + +def _match_vcs_scheme(url: str) -> Optional[str]: + """Look for VCS schemes in the URL. + + Returns the matched VCS scheme, or None if there's no match. + """ + for scheme in vcs.schemes: + if url.lower().startswith(scheme) and url[len(scheme)] in "+:": + return scheme + return None + + +class _NotAPIContent(Exception): + def __init__(self, content_type: str, request_desc: str) -> None: + super().__init__(content_type, request_desc) + self.content_type = content_type + self.request_desc = request_desc + + +def _ensure_api_header(response: Response) -> None: + """ + Check the Content-Type header to ensure the response contains a Simple + API Response. + + Raises `_NotAPIContent` if the content type is not a valid content-type. + """ + content_type = response.headers.get("Content-Type", "Unknown") + + content_type_l = content_type.lower() + if content_type_l.startswith( + ( + "text/html", + "application/vnd.pypi.simple.v1+html", + "application/vnd.pypi.simple.v1+json", + ) + ): + return + + raise _NotAPIContent(content_type, response.request.method) + + +class _NotHTTP(Exception): + pass + + +def _ensure_api_response(url: str, session: PipSession) -> None: + """ + Send a HEAD request to the URL, and ensure the response contains a simple + API Response. + + Raises `_NotHTTP` if the URL is not available for a HEAD request, or + `_NotAPIContent` if the content type is not a valid content type. + """ + scheme, netloc, path, query, fragment = urllib.parse.urlsplit(url) + if scheme not in {"http", "https"}: + raise _NotHTTP() + + resp = session.head(url, allow_redirects=True) + raise_for_status(resp) + + _ensure_api_header(resp) + + +def _get_simple_response(url: str, session: PipSession) -> Response: + """Access an Simple API response with GET, and return the response. + + This consists of three parts: + + 1. If the URL looks suspiciously like an archive, send a HEAD first to + check the Content-Type is HTML or Simple API, to avoid downloading a + large file. Raise `_NotHTTP` if the content type cannot be determined, or + `_NotAPIContent` if it is not HTML or a Simple API. + 2. Actually perform the request. Raise HTTP exceptions on network failures. + 3. Check the Content-Type header to make sure we got a Simple API response, + and raise `_NotAPIContent` otherwise. + """ + if is_archive_file(Link(url).filename): + _ensure_api_response(url, session=session) + + logger.debug("Getting page %s", redact_auth_from_url(url)) + + resp = session.get( + url, + headers={ + "Accept": ", ".join( + [ + "application/vnd.pypi.simple.v1+json", + "application/vnd.pypi.simple.v1+html; q=0.1", + "text/html; q=0.01", + ] + ), + # We don't want to blindly returned cached data for + # /simple/, because authors generally expecting that + # twine upload && pip install will function, but if + # they've done a pip install in the last ~10 minutes + # it won't. Thus by setting this to zero we will not + # blindly use any cached data, however the benefit of + # using max-age=0 instead of no-cache, is that we will + # still support conditional requests, so we will still + # minimize traffic sent in cases where the page hasn't + # changed at all, we will just always incur the round + # trip for the conditional GET now instead of only + # once per 10 minutes. + # For more information, please see pypa/pip#5670. + "Cache-Control": "max-age=0", + }, + ) + raise_for_status(resp) + + # The check for archives above only works if the url ends with + # something that looks like an archive. However that is not a + # requirement of an url. Unless we issue a HEAD request on every + # url we cannot know ahead of time for sure if something is a + # Simple API response or not. However we can check after we've + # downloaded it. + _ensure_api_header(resp) + + logger.debug( + "Fetched page %s as %s", + redact_auth_from_url(url), + resp.headers.get("Content-Type", "Unknown"), + ) + + return resp + + +def _get_encoding_from_headers(headers: ResponseHeaders) -> Optional[str]: + """Determine if we have any encoding information in our headers.""" + if headers and "Content-Type" in headers: + m = email.message.Message() + m["content-type"] = headers["Content-Type"] + charset = m.get_param("charset") + if charset: + return str(charset) + return None + + +class CacheablePageContent: + def __init__(self, page: "IndexContent") -> None: + assert page.cache_link_parsing + self.page = page + + def __eq__(self, other: object) -> bool: + return isinstance(other, type(self)) and self.page.url == other.page.url + + def __hash__(self) -> int: + return hash(self.page.url) + + +class ParseLinks(Protocol): + def __call__(self, page: "IndexContent") -> Iterable[Link]: ... + + +def with_cached_index_content(fn: ParseLinks) -> ParseLinks: + """ + Given a function that parses an Iterable[Link] from an IndexContent, cache the + function's result (keyed by CacheablePageContent), unless the IndexContent + `page` has `page.cache_link_parsing == False`. + """ + + @functools.lru_cache(maxsize=None) + def wrapper(cacheable_page: CacheablePageContent) -> List[Link]: + return list(fn(cacheable_page.page)) + + @functools.wraps(fn) + def wrapper_wrapper(page: "IndexContent") -> List[Link]: + if page.cache_link_parsing: + return wrapper(CacheablePageContent(page)) + return list(fn(page)) + + return wrapper_wrapper + + +@with_cached_index_content +def parse_links(page: "IndexContent") -> Iterable[Link]: + """ + Parse a Simple API's Index Content, and yield its anchor elements as Link objects. + """ + + content_type_l = page.content_type.lower() + if content_type_l.startswith("application/vnd.pypi.simple.v1+json"): + data = json.loads(page.content) + for file in data.get("files", []): + link = Link.from_json(file, page.url) + if link is None: + continue + yield link + return + + parser = HTMLLinkParser(page.url) + encoding = page.encoding or "utf-8" + parser.feed(page.content.decode(encoding)) + + url = page.url + base_url = parser.base_url or url + for anchor in parser.anchors: + link = Link.from_element(anchor, page_url=url, base_url=base_url) + if link is None: + continue + yield link + + +@dataclass(frozen=True) +class IndexContent: + """Represents one response (or page), along with its URL. + + :param encoding: the encoding to decode the given content. + :param url: the URL from which the HTML was downloaded. + :param cache_link_parsing: whether links parsed from this page's url + should be cached. PyPI index urls should + have this set to False, for example. + """ + + content: bytes + content_type: str + encoding: Optional[str] + url: str + cache_link_parsing: bool = True + + def __str__(self) -> str: + return redact_auth_from_url(self.url) + + +class HTMLLinkParser(HTMLParser): + """ + HTMLParser that keeps the first base HREF and a list of all anchor + elements' attributes. + """ + + def __init__(self, url: str) -> None: + super().__init__(convert_charrefs=True) + + self.url: str = url + self.base_url: Optional[str] = None + self.anchors: List[Dict[str, Optional[str]]] = [] + + def handle_starttag(self, tag: str, attrs: List[Tuple[str, Optional[str]]]) -> None: + if tag == "base" and self.base_url is None: + href = self.get_href(attrs) + if href is not None: + self.base_url = href + elif tag == "a": + self.anchors.append(dict(attrs)) + + def get_href(self, attrs: List[Tuple[str, Optional[str]]]) -> Optional[str]: + for name, value in attrs: + if name == "href": + return value + return None + + +def _handle_get_simple_fail( + link: Link, + reason: Union[str, Exception], + meth: Optional[Callable[..., None]] = None, +) -> None: + if meth is None: + meth = logger.debug + meth("Could not fetch URL %s: %s - skipping", link, reason) + + +def _make_index_content( + response: Response, cache_link_parsing: bool = True +) -> IndexContent: + encoding = _get_encoding_from_headers(response.headers) + return IndexContent( + response.content, + response.headers["Content-Type"], + encoding=encoding, + url=response.url, + cache_link_parsing=cache_link_parsing, + ) + + +def _get_index_content(link: Link, *, session: PipSession) -> Optional["IndexContent"]: + url = link.url.split("#", 1)[0] + + # Check for VCS schemes that do not support lookup as web pages. + vcs_scheme = _match_vcs_scheme(url) + if vcs_scheme: + logger.warning( + "Cannot look at %s URL %s because it does not support lookup as web pages.", + vcs_scheme, + link, + ) + return None + + # Tack index.html onto file:// URLs that point to directories + scheme, _, path, _, _, _ = urllib.parse.urlparse(url) + if scheme == "file" and os.path.isdir(urllib.request.url2pathname(path)): + # add trailing slash if not present so urljoin doesn't trim + # final segment + if not url.endswith("/"): + url += "/" + # TODO: In the future, it would be nice if pip supported PEP 691 + # style responses in the file:// URLs, however there's no + # standard file extension for application/vnd.pypi.simple.v1+json + # so we'll need to come up with something on our own. + url = urllib.parse.urljoin(url, "index.html") + logger.debug(" file: URL is directory, getting %s", url) + + try: + resp = _get_simple_response(url, session=session) + except _NotHTTP: + logger.warning( + "Skipping page %s because it looks like an archive, and cannot " + "be checked by a HTTP HEAD request.", + link, + ) + except _NotAPIContent as exc: + logger.warning( + "Skipping page %s because the %s request got Content-Type: %s. " + "The only supported Content-Types are application/vnd.pypi.simple.v1+json, " + "application/vnd.pypi.simple.v1+html, and text/html", + link, + exc.request_desc, + exc.content_type, + ) + except NetworkConnectionError as exc: + _handle_get_simple_fail(link, exc) + except RetryError as exc: + _handle_get_simple_fail(link, exc) + except SSLError as exc: + reason = "There was a problem confirming the ssl certificate: " + reason += str(exc) + _handle_get_simple_fail(link, reason, meth=logger.info) + except requests.ConnectionError as exc: + _handle_get_simple_fail(link, f"connection error: {exc}") + except requests.Timeout: + _handle_get_simple_fail(link, "timed out") + else: + return _make_index_content(resp, cache_link_parsing=link.cache_link_parsing) + return None + + +class CollectedSources(NamedTuple): + find_links: Sequence[Optional[LinkSource]] + index_urls: Sequence[Optional[LinkSource]] + + +class LinkCollector: + """ + Responsible for collecting Link objects from all configured locations, + making network requests as needed. + + The class's main method is its collect_sources() method. + """ + + def __init__( + self, + session: PipSession, + search_scope: SearchScope, + ) -> None: + self.search_scope = search_scope + self.session = session + + @classmethod + def create( + cls, + session: PipSession, + options: Values, + suppress_no_index: bool = False, + ) -> "LinkCollector": + """ + :param session: The Session to use to make requests. + :param suppress_no_index: Whether to ignore the --no-index option + when constructing the SearchScope object. + """ + index_urls = [options.index_url] + options.extra_index_urls + if options.no_index and not suppress_no_index: + logger.debug( + "Ignoring indexes: %s", + ",".join(redact_auth_from_url(url) for url in index_urls), + ) + index_urls = [] + + # Make sure find_links is a list before passing to create(). + find_links = options.find_links or [] + + search_scope = SearchScope.create( + find_links=find_links, + index_urls=index_urls, + no_index=options.no_index, + ) + link_collector = LinkCollector( + session=session, + search_scope=search_scope, + ) + return link_collector + + @property + def find_links(self) -> List[str]: + return self.search_scope.find_links + + def fetch_response(self, location: Link) -> Optional[IndexContent]: + """ + Fetch an HTML page containing package links. + """ + return _get_index_content(location, session=self.session) + + def collect_sources( + self, + project_name: str, + candidates_from_page: CandidatesFromPage, + ) -> CollectedSources: + # The OrderedDict calls deduplicate sources by URL. + index_url_sources = collections.OrderedDict( + build_source( + loc, + candidates_from_page=candidates_from_page, + page_validator=self.session.is_secure_origin, + expand_dir=False, + cache_link_parsing=False, + project_name=project_name, + ) + for loc in self.search_scope.get_index_urls_locations(project_name) + ).values() + find_links_sources = collections.OrderedDict( + build_source( + loc, + candidates_from_page=candidates_from_page, + page_validator=self.session.is_secure_origin, + expand_dir=True, + cache_link_parsing=True, + project_name=project_name, + ) + for loc in self.find_links + ).values() + + if logger.isEnabledFor(logging.DEBUG): + lines = [ + f"* {s.link}" + for s in itertools.chain(find_links_sources, index_url_sources) + if s is not None and s.link is not None + ] + lines = [ + f"{len(lines)} location(s) to search " + f"for versions of {project_name}:" + ] + lines + logger.debug("\n".join(lines)) + + return CollectedSources( + find_links=list(find_links_sources), + index_urls=list(index_url_sources), + ) diff --git a/venv/Lib/site-packages/pip/_internal/index/package_finder.py b/venv/Lib/site-packages/pip/_internal/index/package_finder.py new file mode 100644 index 00000000000..0d65ce35f37 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/index/package_finder.py @@ -0,0 +1,1020 @@ +"""Routines related to PyPI, indexes""" + +import enum +import functools +import itertools +import logging +import re +from dataclasses import dataclass +from typing import TYPE_CHECKING, FrozenSet, Iterable, List, Optional, Set, Tuple, Union + +from pip._vendor.packaging import specifiers +from pip._vendor.packaging.tags import Tag +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import InvalidVersion, _BaseVersion +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.exceptions import ( + BestVersionAlreadyInstalled, + DistributionNotFound, + InvalidWheelFilename, + UnsupportedWheel, +) +from pip._internal.index.collector import LinkCollector, parse_links +from pip._internal.models.candidate import InstallationCandidate +from pip._internal.models.format_control import FormatControl +from pip._internal.models.link import Link +from pip._internal.models.search_scope import SearchScope +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.models.target_python import TargetPython +from pip._internal.models.wheel import Wheel +from pip._internal.req import InstallRequirement +from pip._internal.utils._log import getLogger +from pip._internal.utils.filetypes import WHEEL_EXTENSION +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import build_netloc +from pip._internal.utils.packaging import check_requires_python +from pip._internal.utils.unpacking import SUPPORTED_EXTENSIONS + +if TYPE_CHECKING: + from pip._vendor.typing_extensions import TypeGuard + +__all__ = ["FormatControl", "BestCandidateResult", "PackageFinder"] + + +logger = getLogger(__name__) + +BuildTag = Union[Tuple[()], Tuple[int, str]] +CandidateSortingKey = Tuple[int, int, int, _BaseVersion, Optional[int], BuildTag] + + +def _check_link_requires_python( + link: Link, + version_info: Tuple[int, int, int], + ignore_requires_python: bool = False, +) -> bool: + """ + Return whether the given Python version is compatible with a link's + "Requires-Python" value. + + :param version_info: A 3-tuple of ints representing the Python + major-minor-micro version to check. + :param ignore_requires_python: Whether to ignore the "Requires-Python" + value if the given Python version isn't compatible. + """ + try: + is_compatible = check_requires_python( + link.requires_python, + version_info=version_info, + ) + except specifiers.InvalidSpecifier: + logger.debug( + "Ignoring invalid Requires-Python (%r) for link: %s", + link.requires_python, + link, + ) + else: + if not is_compatible: + version = ".".join(map(str, version_info)) + if not ignore_requires_python: + logger.verbose( + "Link requires a different Python (%s not in: %r): %s", + version, + link.requires_python, + link, + ) + return False + + logger.debug( + "Ignoring failed Requires-Python check (%s not in: %r) for link: %s", + version, + link.requires_python, + link, + ) + + return True + + +class LinkType(enum.Enum): + candidate = enum.auto() + different_project = enum.auto() + yanked = enum.auto() + format_unsupported = enum.auto() + format_invalid = enum.auto() + platform_mismatch = enum.auto() + requires_python_mismatch = enum.auto() + + +class LinkEvaluator: + """ + Responsible for evaluating links for a particular project. + """ + + _py_version_re = re.compile(r"-py([123]\.?[0-9]?)$") + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + def __init__( + self, + project_name: str, + canonical_name: str, + formats: FrozenSet[str], + target_python: TargetPython, + allow_yanked: bool, + ignore_requires_python: Optional[bool] = None, + ) -> None: + """ + :param project_name: The user supplied package name. + :param canonical_name: The canonical package name. + :param formats: The formats allowed for this package. Should be a set + with 'binary' or 'source' or both in it. + :param target_python: The target Python interpreter to use when + evaluating link compatibility. This is used, for example, to + check wheel compatibility, as well as when checking the Python + version, e.g. the Python version embedded in a link filename + (or egg fragment) and against an HTML link's optional PEP 503 + "data-requires-python" attribute. + :param allow_yanked: Whether files marked as yanked (in the sense + of PEP 592) are permitted to be candidates for install. + :param ignore_requires_python: Whether to ignore incompatible + PEP 503 "data-requires-python" values in HTML links. Defaults + to False. + """ + if ignore_requires_python is None: + ignore_requires_python = False + + self._allow_yanked = allow_yanked + self._canonical_name = canonical_name + self._ignore_requires_python = ignore_requires_python + self._formats = formats + self._target_python = target_python + + self.project_name = project_name + + def evaluate_link(self, link: Link) -> Tuple[LinkType, str]: + """ + Determine whether a link is a candidate for installation. + + :return: A tuple (result, detail), where *result* is an enum + representing whether the evaluation found a candidate, or the reason + why one is not found. If a candidate is found, *detail* will be the + candidate's version string; if one is not found, it contains the + reason the link fails to qualify. + """ + version = None + if link.is_yanked and not self._allow_yanked: + reason = link.yanked_reason or "" + return (LinkType.yanked, f"yanked for reason: {reason}") + + if link.egg_fragment: + egg_info = link.egg_fragment + ext = link.ext + else: + egg_info, ext = link.splitext() + if not ext: + return (LinkType.format_unsupported, "not a file") + if ext not in SUPPORTED_EXTENSIONS: + return ( + LinkType.format_unsupported, + f"unsupported archive format: {ext}", + ) + if "binary" not in self._formats and ext == WHEEL_EXTENSION: + reason = f"No binaries permitted for {self.project_name}" + return (LinkType.format_unsupported, reason) + if "macosx10" in link.path and ext == ".zip": + return (LinkType.format_unsupported, "macosx10 one") + if ext == WHEEL_EXTENSION: + try: + wheel = Wheel(link.filename) + except InvalidWheelFilename: + return ( + LinkType.format_invalid, + "invalid wheel filename", + ) + if canonicalize_name(wheel.name) != self._canonical_name: + reason = f"wrong project name (not {self.project_name})" + return (LinkType.different_project, reason) + + supported_tags = self._target_python.get_unsorted_tags() + if not wheel.supported(supported_tags): + # Include the wheel's tags in the reason string to + # simplify troubleshooting compatibility issues. + file_tags = ", ".join(wheel.get_formatted_file_tags()) + reason = ( + f"none of the wheel's tags ({file_tags}) are compatible " + f"(run pip debug --verbose to show compatible tags)" + ) + return (LinkType.platform_mismatch, reason) + + version = wheel.version + + # This should be up by the self.ok_binary check, but see issue 2700. + if "source" not in self._formats and ext != WHEEL_EXTENSION: + reason = f"No sources permitted for {self.project_name}" + return (LinkType.format_unsupported, reason) + + if not version: + version = _extract_version_from_fragment( + egg_info, + self._canonical_name, + ) + if not version: + reason = f"Missing project version for {self.project_name}" + return (LinkType.format_invalid, reason) + + match = self._py_version_re.search(version) + if match: + version = version[: match.start()] + py_version = match.group(1) + if py_version != self._target_python.py_version: + return ( + LinkType.platform_mismatch, + "Python version is incorrect", + ) + + supports_python = _check_link_requires_python( + link, + version_info=self._target_python.py_version_info, + ignore_requires_python=self._ignore_requires_python, + ) + if not supports_python: + reason = f"{version} Requires-Python {link.requires_python}" + return (LinkType.requires_python_mismatch, reason) + + logger.debug("Found link %s, version: %s", link, version) + + return (LinkType.candidate, version) + + +def filter_unallowed_hashes( + candidates: List[InstallationCandidate], + hashes: Optional[Hashes], + project_name: str, +) -> List[InstallationCandidate]: + """ + Filter out candidates whose hashes aren't allowed, and return a new + list of candidates. + + If at least one candidate has an allowed hash, then all candidates with + either an allowed hash or no hash specified are returned. Otherwise, + the given candidates are returned. + + Including the candidates with no hash specified when there is a match + allows a warning to be logged if there is a more preferred candidate + with no hash specified. Returning all candidates in the case of no + matches lets pip report the hash of the candidate that would otherwise + have been installed (e.g. permitting the user to more easily update + their requirements file with the desired hash). + """ + if not hashes: + logger.debug( + "Given no hashes to check %s links for project %r: " + "discarding no candidates", + len(candidates), + project_name, + ) + # Make sure we're not returning back the given value. + return list(candidates) + + matches_or_no_digest = [] + # Collect the non-matches for logging purposes. + non_matches = [] + match_count = 0 + for candidate in candidates: + link = candidate.link + if not link.has_hash: + pass + elif link.is_hash_allowed(hashes=hashes): + match_count += 1 + else: + non_matches.append(candidate) + continue + + matches_or_no_digest.append(candidate) + + if match_count: + filtered = matches_or_no_digest + else: + # Make sure we're not returning back the given value. + filtered = list(candidates) + + if len(filtered) == len(candidates): + discard_message = "discarding no candidates" + else: + discard_message = "discarding {} non-matches:\n {}".format( + len(non_matches), + "\n ".join(str(candidate.link) for candidate in non_matches), + ) + + logger.debug( + "Checked %s links for project %r against %s hashes " + "(%s matches, %s no digest): %s", + len(candidates), + project_name, + hashes.digest_count, + match_count, + len(matches_or_no_digest) - match_count, + discard_message, + ) + + return filtered + + +@dataclass +class CandidatePreferences: + """ + Encapsulates some of the preferences for filtering and sorting + InstallationCandidate objects. + """ + + prefer_binary: bool = False + allow_all_prereleases: bool = False + + +class BestCandidateResult: + """A collection of candidates, returned by `PackageFinder.find_best_candidate`. + + This class is only intended to be instantiated by CandidateEvaluator's + `compute_best_candidate()` method. + """ + + def __init__( + self, + candidates: List[InstallationCandidate], + applicable_candidates: List[InstallationCandidate], + best_candidate: Optional[InstallationCandidate], + ) -> None: + """ + :param candidates: A sequence of all available candidates found. + :param applicable_candidates: The applicable candidates. + :param best_candidate: The most preferred candidate found, or None + if no applicable candidates were found. + """ + assert set(applicable_candidates) <= set(candidates) + + if best_candidate is None: + assert not applicable_candidates + else: + assert best_candidate in applicable_candidates + + self._applicable_candidates = applicable_candidates + self._candidates = candidates + + self.best_candidate = best_candidate + + def iter_all(self) -> Iterable[InstallationCandidate]: + """Iterate through all candidates.""" + return iter(self._candidates) + + def iter_applicable(self) -> Iterable[InstallationCandidate]: + """Iterate through the applicable candidates.""" + return iter(self._applicable_candidates) + + +class CandidateEvaluator: + """ + Responsible for filtering and sorting candidates for installation based + on what tags are valid. + """ + + @classmethod + def create( + cls, + project_name: str, + target_python: Optional[TargetPython] = None, + prefer_binary: bool = False, + allow_all_prereleases: bool = False, + specifier: Optional[specifiers.BaseSpecifier] = None, + hashes: Optional[Hashes] = None, + ) -> "CandidateEvaluator": + """Create a CandidateEvaluator object. + + :param target_python: The target Python interpreter to use when + checking compatibility. If None (the default), a TargetPython + object will be constructed from the running Python. + :param specifier: An optional object implementing `filter` + (e.g. `packaging.specifiers.SpecifierSet`) to filter applicable + versions. + :param hashes: An optional collection of allowed hashes. + """ + if target_python is None: + target_python = TargetPython() + if specifier is None: + specifier = specifiers.SpecifierSet() + + supported_tags = target_python.get_sorted_tags() + + return cls( + project_name=project_name, + supported_tags=supported_tags, + specifier=specifier, + prefer_binary=prefer_binary, + allow_all_prereleases=allow_all_prereleases, + hashes=hashes, + ) + + def __init__( + self, + project_name: str, + supported_tags: List[Tag], + specifier: specifiers.BaseSpecifier, + prefer_binary: bool = False, + allow_all_prereleases: bool = False, + hashes: Optional[Hashes] = None, + ) -> None: + """ + :param supported_tags: The PEP 425 tags supported by the target + Python in order of preference (most preferred first). + """ + self._allow_all_prereleases = allow_all_prereleases + self._hashes = hashes + self._prefer_binary = prefer_binary + self._project_name = project_name + self._specifier = specifier + self._supported_tags = supported_tags + # Since the index of the tag in the _supported_tags list is used + # as a priority, precompute a map from tag to index/priority to be + # used in wheel.find_most_preferred_tag. + self._wheel_tag_preferences = { + tag: idx for idx, tag in enumerate(supported_tags) + } + + def get_applicable_candidates( + self, + candidates: List[InstallationCandidate], + ) -> List[InstallationCandidate]: + """ + Return the applicable candidates from a list of candidates. + """ + # Using None infers from the specifier instead. + allow_prereleases = self._allow_all_prereleases or None + specifier = self._specifier + + # We turn the version object into a str here because otherwise + # when we're debundled but setuptools isn't, Python will see + # packaging.version.Version and + # pkg_resources._vendor.packaging.version.Version as different + # types. This way we'll use a str as a common data interchange + # format. If we stop using the pkg_resources provided specifier + # and start using our own, we can drop the cast to str(). + candidates_and_versions = [(c, str(c.version)) for c in candidates] + versions = set( + specifier.filter( + (v for _, v in candidates_and_versions), + prereleases=allow_prereleases, + ) + ) + + applicable_candidates = [c for c, v in candidates_and_versions if v in versions] + filtered_applicable_candidates = filter_unallowed_hashes( + candidates=applicable_candidates, + hashes=self._hashes, + project_name=self._project_name, + ) + + return sorted(filtered_applicable_candidates, key=self._sort_key) + + def _sort_key(self, candidate: InstallationCandidate) -> CandidateSortingKey: + """ + Function to pass as the `key` argument to a call to sorted() to sort + InstallationCandidates by preference. + + Returns a tuple such that tuples sorting as greater using Python's + default comparison operator are more preferred. + + The preference is as follows: + + First and foremost, candidates with allowed (matching) hashes are + always preferred over candidates without matching hashes. This is + because e.g. if the only candidate with an allowed hash is yanked, + we still want to use that candidate. + + Second, excepting hash considerations, candidates that have been + yanked (in the sense of PEP 592) are always less preferred than + candidates that haven't been yanked. Then: + + If not finding wheels, they are sorted by version only. + If finding wheels, then the sort order is by version, then: + 1. existing installs + 2. wheels ordered via Wheel.support_index_min(self._supported_tags) + 3. source archives + If prefer_binary was set, then all wheels are sorted above sources. + + Note: it was considered to embed this logic into the Link + comparison operators, but then different sdist links + with the same version, would have to be considered equal + """ + valid_tags = self._supported_tags + support_num = len(valid_tags) + build_tag: BuildTag = () + binary_preference = 0 + link = candidate.link + if link.is_wheel: + # can raise InvalidWheelFilename + wheel = Wheel(link.filename) + try: + pri = -( + wheel.find_most_preferred_tag( + valid_tags, self._wheel_tag_preferences + ) + ) + except ValueError: + raise UnsupportedWheel( + f"{wheel.filename} is not a supported wheel for this platform. It " + "can't be sorted." + ) + if self._prefer_binary: + binary_preference = 1 + if wheel.build_tag is not None: + match = re.match(r"^(\d+)(.*)$", wheel.build_tag) + assert match is not None, "guaranteed by filename validation" + build_tag_groups = match.groups() + build_tag = (int(build_tag_groups[0]), build_tag_groups[1]) + else: # sdist + pri = -(support_num) + has_allowed_hash = int(link.is_hash_allowed(self._hashes)) + yank_value = -1 * int(link.is_yanked) # -1 for yanked. + return ( + has_allowed_hash, + yank_value, + binary_preference, + candidate.version, + pri, + build_tag, + ) + + def sort_best_candidate( + self, + candidates: List[InstallationCandidate], + ) -> Optional[InstallationCandidate]: + """ + Return the best candidate per the instance's sort order, or None if + no candidate is acceptable. + """ + if not candidates: + return None + best_candidate = max(candidates, key=self._sort_key) + return best_candidate + + def compute_best_candidate( + self, + candidates: List[InstallationCandidate], + ) -> BestCandidateResult: + """ + Compute and return a `BestCandidateResult` instance. + """ + applicable_candidates = self.get_applicable_candidates(candidates) + + best_candidate = self.sort_best_candidate(applicable_candidates) + + return BestCandidateResult( + candidates, + applicable_candidates=applicable_candidates, + best_candidate=best_candidate, + ) + + +class PackageFinder: + """This finds packages. + + This is meant to match easy_install's technique for looking for + packages, by reading pages and looking for appropriate links. + """ + + def __init__( + self, + link_collector: LinkCollector, + target_python: TargetPython, + allow_yanked: bool, + format_control: Optional[FormatControl] = None, + candidate_prefs: Optional[CandidatePreferences] = None, + ignore_requires_python: Optional[bool] = None, + ) -> None: + """ + This constructor is primarily meant to be used by the create() class + method and from tests. + + :param format_control: A FormatControl object, used to control + the selection of source packages / binary packages when consulting + the index and links. + :param candidate_prefs: Options to use when creating a + CandidateEvaluator object. + """ + if candidate_prefs is None: + candidate_prefs = CandidatePreferences() + + format_control = format_control or FormatControl(set(), set()) + + self._allow_yanked = allow_yanked + self._candidate_prefs = candidate_prefs + self._ignore_requires_python = ignore_requires_python + self._link_collector = link_collector + self._target_python = target_python + + self.format_control = format_control + + # These are boring links that have already been logged somehow. + self._logged_links: Set[Tuple[Link, LinkType, str]] = set() + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + @classmethod + def create( + cls, + link_collector: LinkCollector, + selection_prefs: SelectionPreferences, + target_python: Optional[TargetPython] = None, + ) -> "PackageFinder": + """Create a PackageFinder. + + :param selection_prefs: The candidate selection preferences, as a + SelectionPreferences object. + :param target_python: The target Python interpreter to use when + checking compatibility. If None (the default), a TargetPython + object will be constructed from the running Python. + """ + if target_python is None: + target_python = TargetPython() + + candidate_prefs = CandidatePreferences( + prefer_binary=selection_prefs.prefer_binary, + allow_all_prereleases=selection_prefs.allow_all_prereleases, + ) + + return cls( + candidate_prefs=candidate_prefs, + link_collector=link_collector, + target_python=target_python, + allow_yanked=selection_prefs.allow_yanked, + format_control=selection_prefs.format_control, + ignore_requires_python=selection_prefs.ignore_requires_python, + ) + + @property + def target_python(self) -> TargetPython: + return self._target_python + + @property + def search_scope(self) -> SearchScope: + return self._link_collector.search_scope + + @search_scope.setter + def search_scope(self, search_scope: SearchScope) -> None: + self._link_collector.search_scope = search_scope + + @property + def find_links(self) -> List[str]: + return self._link_collector.find_links + + @property + def index_urls(self) -> List[str]: + return self.search_scope.index_urls + + @property + def trusted_hosts(self) -> Iterable[str]: + for host_port in self._link_collector.session.pip_trusted_origins: + yield build_netloc(*host_port) + + @property + def allow_all_prereleases(self) -> bool: + return self._candidate_prefs.allow_all_prereleases + + def set_allow_all_prereleases(self) -> None: + self._candidate_prefs.allow_all_prereleases = True + + @property + def prefer_binary(self) -> bool: + return self._candidate_prefs.prefer_binary + + def set_prefer_binary(self) -> None: + self._candidate_prefs.prefer_binary = True + + def requires_python_skipped_reasons(self) -> List[str]: + reasons = { + detail + for _, result, detail in self._logged_links + if result == LinkType.requires_python_mismatch + } + return sorted(reasons) + + def make_link_evaluator(self, project_name: str) -> LinkEvaluator: + canonical_name = canonicalize_name(project_name) + formats = self.format_control.get_allowed_formats(canonical_name) + + return LinkEvaluator( + project_name=project_name, + canonical_name=canonical_name, + formats=formats, + target_python=self._target_python, + allow_yanked=self._allow_yanked, + ignore_requires_python=self._ignore_requires_python, + ) + + def _sort_links(self, links: Iterable[Link]) -> List[Link]: + """ + Returns elements of links in order, non-egg links first, egg links + second, while eliminating duplicates + """ + eggs, no_eggs = [], [] + seen: Set[Link] = set() + for link in links: + if link not in seen: + seen.add(link) + if link.egg_fragment: + eggs.append(link) + else: + no_eggs.append(link) + return no_eggs + eggs + + def _log_skipped_link(self, link: Link, result: LinkType, detail: str) -> None: + entry = (link, result, detail) + if entry not in self._logged_links: + # Put the link at the end so the reason is more visible and because + # the link string is usually very long. + logger.debug("Skipping link: %s: %s", detail, link) + self._logged_links.add(entry) + + def get_install_candidate( + self, link_evaluator: LinkEvaluator, link: Link + ) -> Optional[InstallationCandidate]: + """ + If the link is a candidate for install, convert it to an + InstallationCandidate and return it. Otherwise, return None. + """ + result, detail = link_evaluator.evaluate_link(link) + if result != LinkType.candidate: + self._log_skipped_link(link, result, detail) + return None + + try: + return InstallationCandidate( + name=link_evaluator.project_name, + link=link, + version=detail, + ) + except InvalidVersion: + return None + + def evaluate_links( + self, link_evaluator: LinkEvaluator, links: Iterable[Link] + ) -> List[InstallationCandidate]: + """ + Convert links that are candidates to InstallationCandidate objects. + """ + candidates = [] + for link in self._sort_links(links): + candidate = self.get_install_candidate(link_evaluator, link) + if candidate is not None: + candidates.append(candidate) + + return candidates + + def process_project_url( + self, project_url: Link, link_evaluator: LinkEvaluator + ) -> List[InstallationCandidate]: + logger.debug( + "Fetching project page and analyzing links: %s", + project_url, + ) + index_response = self._link_collector.fetch_response(project_url) + if index_response is None: + return [] + + page_links = list(parse_links(index_response)) + + with indent_log(): + package_links = self.evaluate_links( + link_evaluator, + links=page_links, + ) + + return package_links + + @functools.lru_cache(maxsize=None) + def find_all_candidates(self, project_name: str) -> List[InstallationCandidate]: + """Find all available InstallationCandidate for project_name + + This checks index_urls and find_links. + All versions found are returned as an InstallationCandidate list. + + See LinkEvaluator.evaluate_link() for details on which files + are accepted. + """ + link_evaluator = self.make_link_evaluator(project_name) + + collected_sources = self._link_collector.collect_sources( + project_name=project_name, + candidates_from_page=functools.partial( + self.process_project_url, + link_evaluator=link_evaluator, + ), + ) + + page_candidates_it = itertools.chain.from_iterable( + source.page_candidates() + for sources in collected_sources + for source in sources + if source is not None + ) + page_candidates = list(page_candidates_it) + + file_links_it = itertools.chain.from_iterable( + source.file_links() + for sources in collected_sources + for source in sources + if source is not None + ) + file_candidates = self.evaluate_links( + link_evaluator, + sorted(file_links_it, reverse=True), + ) + + if logger.isEnabledFor(logging.DEBUG) and file_candidates: + paths = [] + for candidate in file_candidates: + assert candidate.link.url # we need to have a URL + try: + paths.append(candidate.link.file_path) + except Exception: + paths.append(candidate.link.url) # it's not a local file + + logger.debug("Local files found: %s", ", ".join(paths)) + + # This is an intentional priority ordering + return file_candidates + page_candidates + + def make_candidate_evaluator( + self, + project_name: str, + specifier: Optional[specifiers.BaseSpecifier] = None, + hashes: Optional[Hashes] = None, + ) -> CandidateEvaluator: + """Create a CandidateEvaluator object to use.""" + candidate_prefs = self._candidate_prefs + return CandidateEvaluator.create( + project_name=project_name, + target_python=self._target_python, + prefer_binary=candidate_prefs.prefer_binary, + allow_all_prereleases=candidate_prefs.allow_all_prereleases, + specifier=specifier, + hashes=hashes, + ) + + @functools.lru_cache(maxsize=None) + def find_best_candidate( + self, + project_name: str, + specifier: Optional[specifiers.BaseSpecifier] = None, + hashes: Optional[Hashes] = None, + ) -> BestCandidateResult: + """Find matches for the given project and specifier. + + :param specifier: An optional object implementing `filter` + (e.g. `packaging.specifiers.SpecifierSet`) to filter applicable + versions. + + :return: A `BestCandidateResult` instance. + """ + candidates = self.find_all_candidates(project_name) + candidate_evaluator = self.make_candidate_evaluator( + project_name=project_name, + specifier=specifier, + hashes=hashes, + ) + return candidate_evaluator.compute_best_candidate(candidates) + + def find_requirement( + self, req: InstallRequirement, upgrade: bool + ) -> Optional[InstallationCandidate]: + """Try to find a Link matching req + + Expects req, an InstallRequirement and upgrade, a boolean + Returns a InstallationCandidate if found, + Raises DistributionNotFound or BestVersionAlreadyInstalled otherwise + """ + hashes = req.hashes(trust_internet=False) + best_candidate_result = self.find_best_candidate( + req.name, + specifier=req.specifier, + hashes=hashes, + ) + best_candidate = best_candidate_result.best_candidate + + installed_version: Optional[_BaseVersion] = None + if req.satisfied_by is not None: + installed_version = req.satisfied_by.version + + def _format_versions(cand_iter: Iterable[InstallationCandidate]) -> str: + # This repeated parse_version and str() conversion is needed to + # handle different vendoring sources from pip and pkg_resources. + # If we stop using the pkg_resources provided specifier and start + # using our own, we can drop the cast to str(). + return ( + ", ".join( + sorted( + {str(c.version) for c in cand_iter}, + key=parse_version, + ) + ) + or "none" + ) + + if installed_version is None and best_candidate is None: + logger.critical( + "Could not find a version that satisfies the requirement %s " + "(from versions: %s)", + req, + _format_versions(best_candidate_result.iter_all()), + ) + + raise DistributionNotFound(f"No matching distribution found for {req}") + + def _should_install_candidate( + candidate: Optional[InstallationCandidate], + ) -> "TypeGuard[InstallationCandidate]": + if installed_version is None: + return True + if best_candidate is None: + return False + return best_candidate.version > installed_version + + if not upgrade and installed_version is not None: + if _should_install_candidate(best_candidate): + logger.debug( + "Existing installed version (%s) satisfies requirement " + "(most up-to-date version is %s)", + installed_version, + best_candidate.version, + ) + else: + logger.debug( + "Existing installed version (%s) is most up-to-date and " + "satisfies requirement", + installed_version, + ) + return None + + if _should_install_candidate(best_candidate): + logger.debug( + "Using version %s (newest of versions: %s)", + best_candidate.version, + _format_versions(best_candidate_result.iter_applicable()), + ) + return best_candidate + + # We have an existing version, and its the best version + logger.debug( + "Installed version (%s) is most up-to-date (past versions: %s)", + installed_version, + _format_versions(best_candidate_result.iter_applicable()), + ) + raise BestVersionAlreadyInstalled + + +def _find_name_version_sep(fragment: str, canonical_name: str) -> int: + """Find the separator's index based on the package's canonical name. + + :param fragment: A + filename "fragment" (stem) or + egg fragment. + :param canonical_name: The package's canonical name. + + This function is needed since the canonicalized name does not necessarily + have the same length as the egg info's name part. An example:: + + >>> fragment = 'foo__bar-1.0' + >>> canonical_name = 'foo-bar' + >>> _find_name_version_sep(fragment, canonical_name) + 8 + """ + # Project name and version must be separated by one single dash. Find all + # occurrences of dashes; if the string in front of it matches the canonical + # name, this is the one separating the name and version parts. + for i, c in enumerate(fragment): + if c != "-": + continue + if canonicalize_name(fragment[:i]) == canonical_name: + return i + raise ValueError(f"{fragment} does not match {canonical_name}") + + +def _extract_version_from_fragment(fragment: str, canonical_name: str) -> Optional[str]: + """Parse the version string from a + filename + "fragment" (stem) or egg fragment. + + :param fragment: The string to parse. E.g. foo-2.1 + :param canonical_name: The canonicalized name of the package this + belongs to. + """ + try: + version_start = _find_name_version_sep(fragment, canonical_name) + 1 + except ValueError: + return None + version = fragment[version_start:] + if not version: + return None + return version diff --git a/venv/Lib/site-packages/pip/_internal/index/sources.py b/venv/Lib/site-packages/pip/_internal/index/sources.py new file mode 100644 index 00000000000..f4626d71ab4 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/index/sources.py @@ -0,0 +1,285 @@ +import logging +import mimetypes +import os +from collections import defaultdict +from typing import Callable, Dict, Iterable, List, Optional, Tuple + +from pip._vendor.packaging.utils import ( + InvalidSdistFilename, + InvalidVersion, + InvalidWheelFilename, + canonicalize_name, + parse_sdist_filename, + parse_wheel_filename, +) + +from pip._internal.models.candidate import InstallationCandidate +from pip._internal.models.link import Link +from pip._internal.utils.urls import path_to_url, url_to_path +from pip._internal.vcs import is_url + +logger = logging.getLogger(__name__) + +FoundCandidates = Iterable[InstallationCandidate] +FoundLinks = Iterable[Link] +CandidatesFromPage = Callable[[Link], Iterable[InstallationCandidate]] +PageValidator = Callable[[Link], bool] + + +class LinkSource: + @property + def link(self) -> Optional[Link]: + """Returns the underlying link, if there's one.""" + raise NotImplementedError() + + def page_candidates(self) -> FoundCandidates: + """Candidates found by parsing an archive listing HTML file.""" + raise NotImplementedError() + + def file_links(self) -> FoundLinks: + """Links found by specifying archives directly.""" + raise NotImplementedError() + + +def _is_html_file(file_url: str) -> bool: + return mimetypes.guess_type(file_url, strict=False)[0] == "text/html" + + +class _FlatDirectoryToUrls: + """Scans directory and caches results""" + + def __init__(self, path: str) -> None: + self._path = path + self._page_candidates: List[str] = [] + self._project_name_to_urls: Dict[str, List[str]] = defaultdict(list) + self._scanned_directory = False + + def _scan_directory(self) -> None: + """Scans directory once and populates both page_candidates + and project_name_to_urls at the same time + """ + for entry in os.scandir(self._path): + url = path_to_url(entry.path) + if _is_html_file(url): + self._page_candidates.append(url) + continue + + # File must have a valid wheel or sdist name, + # otherwise not worth considering as a package + try: + project_filename = parse_wheel_filename(entry.name)[0] + except (InvalidWheelFilename, InvalidVersion): + try: + project_filename = parse_sdist_filename(entry.name)[0] + except (InvalidSdistFilename, InvalidVersion): + continue + + self._project_name_to_urls[project_filename].append(url) + self._scanned_directory = True + + @property + def page_candidates(self) -> List[str]: + if not self._scanned_directory: + self._scan_directory() + + return self._page_candidates + + @property + def project_name_to_urls(self) -> Dict[str, List[str]]: + if not self._scanned_directory: + self._scan_directory() + + return self._project_name_to_urls + + +class _FlatDirectorySource(LinkSource): + """Link source specified by ``--find-links=``. + + This looks the content of the directory, and returns: + + * ``page_candidates``: Links listed on each HTML file in the directory. + * ``file_candidates``: Archives in the directory. + """ + + _paths_to_urls: Dict[str, _FlatDirectoryToUrls] = {} + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + path: str, + project_name: str, + ) -> None: + self._candidates_from_page = candidates_from_page + self._project_name = canonicalize_name(project_name) + + # Get existing instance of _FlatDirectoryToUrls if it exists + if path in self._paths_to_urls: + self._path_to_urls = self._paths_to_urls[path] + else: + self._path_to_urls = _FlatDirectoryToUrls(path=path) + self._paths_to_urls[path] = self._path_to_urls + + @property + def link(self) -> Optional[Link]: + return None + + def page_candidates(self) -> FoundCandidates: + for url in self._path_to_urls.page_candidates: + yield from self._candidates_from_page(Link(url)) + + def file_links(self) -> FoundLinks: + for url in self._path_to_urls.project_name_to_urls[self._project_name]: + yield Link(url) + + +class _LocalFileSource(LinkSource): + """``--find-links=`` or ``--[extra-]index-url=``. + + If a URL is supplied, it must be a ``file:`` URL. If a path is supplied to + the option, it is converted to a URL first. This returns: + + * ``page_candidates``: Links listed on an HTML file. + * ``file_candidates``: The non-HTML file. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + link: Link, + ) -> None: + self._candidates_from_page = candidates_from_page + self._link = link + + @property + def link(self) -> Optional[Link]: + return self._link + + def page_candidates(self) -> FoundCandidates: + if not _is_html_file(self._link.url): + return + yield from self._candidates_from_page(self._link) + + def file_links(self) -> FoundLinks: + if _is_html_file(self._link.url): + return + yield self._link + + +class _RemoteFileSource(LinkSource): + """``--find-links=`` or ``--[extra-]index-url=``. + + This returns: + + * ``page_candidates``: Links listed on an HTML file. + * ``file_candidates``: The non-HTML file. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + page_validator: PageValidator, + link: Link, + ) -> None: + self._candidates_from_page = candidates_from_page + self._page_validator = page_validator + self._link = link + + @property + def link(self) -> Optional[Link]: + return self._link + + def page_candidates(self) -> FoundCandidates: + if not self._page_validator(self._link): + return + yield from self._candidates_from_page(self._link) + + def file_links(self) -> FoundLinks: + yield self._link + + +class _IndexDirectorySource(LinkSource): + """``--[extra-]index-url=``. + + This is treated like a remote URL; ``candidates_from_page`` contains logic + for this by appending ``index.html`` to the link. + """ + + def __init__( + self, + candidates_from_page: CandidatesFromPage, + link: Link, + ) -> None: + self._candidates_from_page = candidates_from_page + self._link = link + + @property + def link(self) -> Optional[Link]: + return self._link + + def page_candidates(self) -> FoundCandidates: + yield from self._candidates_from_page(self._link) + + def file_links(self) -> FoundLinks: + return () + + +def build_source( + location: str, + *, + candidates_from_page: CandidatesFromPage, + page_validator: PageValidator, + expand_dir: bool, + cache_link_parsing: bool, + project_name: str, +) -> Tuple[Optional[str], Optional[LinkSource]]: + path: Optional[str] = None + url: Optional[str] = None + if os.path.exists(location): # Is a local path. + url = path_to_url(location) + path = location + elif location.startswith("file:"): # A file: URL. + url = location + path = url_to_path(location) + elif is_url(location): + url = location + + if url is None: + msg = ( + "Location '%s' is ignored: " + "it is either a non-existing path or lacks a specific scheme." + ) + logger.warning(msg, location) + return (None, None) + + if path is None: + source: LinkSource = _RemoteFileSource( + candidates_from_page=candidates_from_page, + page_validator=page_validator, + link=Link(url, cache_link_parsing=cache_link_parsing), + ) + return (url, source) + + if os.path.isdir(path): + if expand_dir: + source = _FlatDirectorySource( + candidates_from_page=candidates_from_page, + path=path, + project_name=project_name, + ) + else: + source = _IndexDirectorySource( + candidates_from_page=candidates_from_page, + link=Link(url, cache_link_parsing=cache_link_parsing), + ) + return (url, source) + elif os.path.isfile(path): + source = _LocalFileSource( + candidates_from_page=candidates_from_page, + link=Link(url, cache_link_parsing=cache_link_parsing), + ) + return (url, source) + logger.warning( + "Location '%s' is ignored: it is neither a file nor a directory.", + location, + ) + return (url, None) diff --git a/venv/Lib/site-packages/pip/_internal/locations/__init__.py b/venv/Lib/site-packages/pip/_internal/locations/__init__.py new file mode 100644 index 00000000000..32382be7fe5 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/locations/__init__.py @@ -0,0 +1,456 @@ +import functools +import logging +import os +import pathlib +import sys +import sysconfig +from typing import Any, Dict, Generator, Optional, Tuple + +from pip._internal.models.scheme import SCHEME_KEYS, Scheme +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.virtualenv import running_under_virtualenv + +from . import _sysconfig +from .base import ( + USER_CACHE_DIR, + get_major_minor_version, + get_src_prefix, + is_osx_framework, + site_packages, + user_site, +) + +__all__ = [ + "USER_CACHE_DIR", + "get_bin_prefix", + "get_bin_user", + "get_major_minor_version", + "get_platlib", + "get_purelib", + "get_scheme", + "get_src_prefix", + "site_packages", + "user_site", +] + + +logger = logging.getLogger(__name__) + + +_PLATLIBDIR: str = getattr(sys, "platlibdir", "lib") + +_USE_SYSCONFIG_DEFAULT = sys.version_info >= (3, 10) + + +def _should_use_sysconfig() -> bool: + """This function determines the value of _USE_SYSCONFIG. + + By default, pip uses sysconfig on Python 3.10+. + But Python distributors can override this decision by setting: + sysconfig._PIP_USE_SYSCONFIG = True / False + Rationale in https://github.com/pypa/pip/issues/10647 + + This is a function for testability, but should be constant during any one + run. + """ + return bool(getattr(sysconfig, "_PIP_USE_SYSCONFIG", _USE_SYSCONFIG_DEFAULT)) + + +_USE_SYSCONFIG = _should_use_sysconfig() + +if not _USE_SYSCONFIG: + # Import distutils lazily to avoid deprecation warnings, + # but import it soon enough that it is in memory and available during + # a pip reinstall. + from . import _distutils + +# Be noisy about incompatibilities if this platforms "should" be using +# sysconfig, but is explicitly opting out and using distutils instead. +if _USE_SYSCONFIG_DEFAULT and not _USE_SYSCONFIG: + _MISMATCH_LEVEL = logging.WARNING +else: + _MISMATCH_LEVEL = logging.DEBUG + + +def _looks_like_bpo_44860() -> bool: + """The resolution to bpo-44860 will change this incorrect platlib. + + See . + """ + from distutils.command.install import INSTALL_SCHEMES + + try: + unix_user_platlib = INSTALL_SCHEMES["unix_user"]["platlib"] + except KeyError: + return False + return unix_user_platlib == "$usersite" + + +def _looks_like_red_hat_patched_platlib_purelib(scheme: Dict[str, str]) -> bool: + platlib = scheme["platlib"] + if "/$platlibdir/" in platlib: + platlib = platlib.replace("/$platlibdir/", f"/{_PLATLIBDIR}/") + if "/lib64/" not in platlib: + return False + unpatched = platlib.replace("/lib64/", "/lib/") + return unpatched.replace("$platbase/", "$base/") == scheme["purelib"] + + +@functools.lru_cache(maxsize=None) +def _looks_like_red_hat_lib() -> bool: + """Red Hat patches platlib in unix_prefix and unix_home, but not purelib. + + This is the only way I can see to tell a Red Hat-patched Python. + """ + from distutils.command.install import INSTALL_SCHEMES + + return all( + k in INSTALL_SCHEMES + and _looks_like_red_hat_patched_platlib_purelib(INSTALL_SCHEMES[k]) + for k in ("unix_prefix", "unix_home") + ) + + +@functools.lru_cache(maxsize=None) +def _looks_like_debian_scheme() -> bool: + """Debian adds two additional schemes.""" + from distutils.command.install import INSTALL_SCHEMES + + return "deb_system" in INSTALL_SCHEMES and "unix_local" in INSTALL_SCHEMES + + +@functools.lru_cache(maxsize=None) +def _looks_like_red_hat_scheme() -> bool: + """Red Hat patches ``sys.prefix`` and ``sys.exec_prefix``. + + Red Hat's ``00251-change-user-install-location.patch`` changes the install + command's ``prefix`` and ``exec_prefix`` to append ``"/local"``. This is + (fortunately?) done quite unconditionally, so we create a default command + object without any configuration to detect this. + """ + from distutils.command.install import install + from distutils.dist import Distribution + + cmd: Any = install(Distribution()) + cmd.finalize_options() + return ( + cmd.exec_prefix == f"{os.path.normpath(sys.exec_prefix)}/local" + and cmd.prefix == f"{os.path.normpath(sys.prefix)}/local" + ) + + +@functools.lru_cache(maxsize=None) +def _looks_like_slackware_scheme() -> bool: + """Slackware patches sysconfig but fails to patch distutils and site. + + Slackware changes sysconfig's user scheme to use ``"lib64"`` for the lib + path, but does not do the same to the site module. + """ + if user_site is None: # User-site not available. + return False + try: + paths = sysconfig.get_paths(scheme="posix_user", expand=False) + except KeyError: # User-site not available. + return False + return "/lib64/" in paths["purelib"] and "/lib64/" not in user_site + + +@functools.lru_cache(maxsize=None) +def _looks_like_msys2_mingw_scheme() -> bool: + """MSYS2 patches distutils and sysconfig to use a UNIX-like scheme. + + However, MSYS2 incorrectly patches sysconfig ``nt`` scheme. The fix is + likely going to be included in their 3.10 release, so we ignore the warning. + See msys2/MINGW-packages#9319. + + MSYS2 MINGW's patch uses lowercase ``"lib"`` instead of the usual uppercase, + and is missing the final ``"site-packages"``. + """ + paths = sysconfig.get_paths("nt", expand=False) + return all( + "Lib" not in p and "lib" in p and not p.endswith("site-packages") + for p in (paths[key] for key in ("platlib", "purelib")) + ) + + +def _fix_abiflags(parts: Tuple[str]) -> Generator[str, None, None]: + ldversion = sysconfig.get_config_var("LDVERSION") + abiflags = getattr(sys, "abiflags", None) + + # LDVERSION does not end with sys.abiflags. Just return the path unchanged. + if not ldversion or not abiflags or not ldversion.endswith(abiflags): + yield from parts + return + + # Strip sys.abiflags from LDVERSION-based path components. + for part in parts: + if part.endswith(ldversion): + part = part[: (0 - len(abiflags))] + yield part + + +@functools.lru_cache(maxsize=None) +def _warn_mismatched(old: pathlib.Path, new: pathlib.Path, *, key: str) -> None: + issue_url = "https://github.com/pypa/pip/issues/10151" + message = ( + "Value for %s does not match. Please report this to <%s>" + "\ndistutils: %s" + "\nsysconfig: %s" + ) + logger.log(_MISMATCH_LEVEL, message, key, issue_url, old, new) + + +def _warn_if_mismatch(old: pathlib.Path, new: pathlib.Path, *, key: str) -> bool: + if old == new: + return False + _warn_mismatched(old, new, key=key) + return True + + +@functools.lru_cache(maxsize=None) +def _log_context( + *, + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + prefix: Optional[str] = None, +) -> None: + parts = [ + "Additional context:", + "user = %r", + "home = %r", + "root = %r", + "prefix = %r", + ] + + logger.log(_MISMATCH_LEVEL, "\n".join(parts), user, home, root, prefix) + + +def get_scheme( + dist_name: str, + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + isolated: bool = False, + prefix: Optional[str] = None, +) -> Scheme: + new = _sysconfig.get_scheme( + dist_name, + user=user, + home=home, + root=root, + isolated=isolated, + prefix=prefix, + ) + if _USE_SYSCONFIG: + return new + + old = _distutils.get_scheme( + dist_name, + user=user, + home=home, + root=root, + isolated=isolated, + prefix=prefix, + ) + + warning_contexts = [] + for k in SCHEME_KEYS: + old_v = pathlib.Path(getattr(old, k)) + new_v = pathlib.Path(getattr(new, k)) + + if old_v == new_v: + continue + + # distutils incorrectly put PyPy packages under ``site-packages/python`` + # in the ``posix_home`` scheme, but PyPy devs said they expect the + # directory name to be ``pypy`` instead. So we treat this as a bug fix + # and not warn about it. See bpo-43307 and python/cpython#24628. + skip_pypy_special_case = ( + sys.implementation.name == "pypy" + and home is not None + and k in ("platlib", "purelib") + and old_v.parent == new_v.parent + and old_v.name.startswith("python") + and new_v.name.startswith("pypy") + ) + if skip_pypy_special_case: + continue + + # sysconfig's ``osx_framework_user`` does not include ``pythonX.Y`` in + # the ``include`` value, but distutils's ``headers`` does. We'll let + # CPython decide whether this is a bug or feature. See bpo-43948. + skip_osx_framework_user_special_case = ( + user + and is_osx_framework() + and k == "headers" + and old_v.parent.parent == new_v.parent + and old_v.parent.name.startswith("python") + ) + if skip_osx_framework_user_special_case: + continue + + # On Red Hat and derived Linux distributions, distutils is patched to + # use "lib64" instead of "lib" for platlib. + if k == "platlib" and _looks_like_red_hat_lib(): + continue + + # On Python 3.9+, sysconfig's posix_user scheme sets platlib against + # sys.platlibdir, but distutils's unix_user incorrectly coninutes + # using the same $usersite for both platlib and purelib. This creates a + # mismatch when sys.platlibdir is not "lib". + skip_bpo_44860 = ( + user + and k == "platlib" + and not WINDOWS + and sys.version_info >= (3, 9) + and _PLATLIBDIR != "lib" + and _looks_like_bpo_44860() + ) + if skip_bpo_44860: + continue + + # Slackware incorrectly patches posix_user to use lib64 instead of lib, + # but not usersite to match the location. + skip_slackware_user_scheme = ( + user + and k in ("platlib", "purelib") + and not WINDOWS + and _looks_like_slackware_scheme() + ) + if skip_slackware_user_scheme: + continue + + # Both Debian and Red Hat patch Python to place the system site under + # /usr/local instead of /usr. Debian also places lib in dist-packages + # instead of site-packages, but the /usr/local check should cover it. + skip_linux_system_special_case = ( + not (user or home or prefix or running_under_virtualenv()) + and old_v.parts[1:3] == ("usr", "local") + and len(new_v.parts) > 1 + and new_v.parts[1] == "usr" + and (len(new_v.parts) < 3 or new_v.parts[2] != "local") + and (_looks_like_red_hat_scheme() or _looks_like_debian_scheme()) + ) + if skip_linux_system_special_case: + continue + + # MSYS2 MINGW's sysconfig patch does not include the "site-packages" + # part of the path. This is incorrect and will be fixed in MSYS. + skip_msys2_mingw_bug = ( + WINDOWS and k in ("platlib", "purelib") and _looks_like_msys2_mingw_scheme() + ) + if skip_msys2_mingw_bug: + continue + + # CPython's POSIX install script invokes pip (via ensurepip) against the + # interpreter located in the source tree, not the install site. This + # triggers special logic in sysconfig that's not present in distutils. + # https://github.com/python/cpython/blob/8c21941ddaf/Lib/sysconfig.py#L178-L194 + skip_cpython_build = ( + sysconfig.is_python_build(check_home=True) + and not WINDOWS + and k in ("headers", "include", "platinclude") + ) + if skip_cpython_build: + continue + + warning_contexts.append((old_v, new_v, f"scheme.{k}")) + + if not warning_contexts: + return old + + # Check if this path mismatch is caused by distutils config files. Those + # files will no longer work once we switch to sysconfig, so this raises a + # deprecation message for them. + default_old = _distutils.distutils_scheme( + dist_name, + user, + home, + root, + isolated, + prefix, + ignore_config_files=True, + ) + if any(default_old[k] != getattr(old, k) for k in SCHEME_KEYS): + deprecated( + reason=( + "Configuring installation scheme with distutils config files " + "is deprecated and will no longer work in the near future. If you " + "are using a Homebrew or Linuxbrew Python, please see discussion " + "at https://github.com/Homebrew/homebrew-core/issues/76621" + ), + replacement=None, + gone_in=None, + ) + return old + + # Post warnings about this mismatch so user can report them back. + for old_v, new_v, key in warning_contexts: + _warn_mismatched(old_v, new_v, key=key) + _log_context(user=user, home=home, root=root, prefix=prefix) + + return old + + +def get_bin_prefix() -> str: + new = _sysconfig.get_bin_prefix() + if _USE_SYSCONFIG: + return new + + old = _distutils.get_bin_prefix() + if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="bin_prefix"): + _log_context() + return old + + +def get_bin_user() -> str: + return _sysconfig.get_scheme("", user=True).scripts + + +def _looks_like_deb_system_dist_packages(value: str) -> bool: + """Check if the value is Debian's APT-controlled dist-packages. + + Debian's ``distutils.sysconfig.get_python_lib()`` implementation returns the + default package path controlled by APT, but does not patch ``sysconfig`` to + do the same. This is similar to the bug worked around in ``get_scheme()``, + but here the default is ``deb_system`` instead of ``unix_local``. Ultimately + we can't do anything about this Debian bug, and this detection allows us to + skip the warning when needed. + """ + if not _looks_like_debian_scheme(): + return False + if value == "/usr/lib/python3/dist-packages": + return True + return False + + +def get_purelib() -> str: + """Return the default pure-Python lib location.""" + new = _sysconfig.get_purelib() + if _USE_SYSCONFIG: + return new + + old = _distutils.get_purelib() + if _looks_like_deb_system_dist_packages(old): + return old + if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="purelib"): + _log_context() + return old + + +def get_platlib() -> str: + """Return the default platform-shared lib location.""" + new = _sysconfig.get_platlib() + if _USE_SYSCONFIG: + return new + + from . import _distutils + + old = _distutils.get_platlib() + if _looks_like_deb_system_dist_packages(old): + return old + if _warn_if_mismatch(pathlib.Path(old), pathlib.Path(new), key="platlib"): + _log_context() + return old diff --git a/venv/Lib/site-packages/pip/_internal/locations/_distutils.py b/venv/Lib/site-packages/pip/_internal/locations/_distutils.py new file mode 100644 index 00000000000..0e18c6e1e14 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/locations/_distutils.py @@ -0,0 +1,172 @@ +"""Locations where we look for configs, install stuff, etc""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +# If pip's going to use distutils, it should not be using the copy that setuptools +# might have injected into the environment. This is done by removing the injected +# shim, if it's injected. +# +# See https://github.com/pypa/pip/issues/8761 for the original discussion and +# rationale for why this is done within pip. +try: + __import__("_distutils_hack").remove_shim() +except (ImportError, AttributeError): + pass + +import logging +import os +import sys +from distutils.cmd import Command as DistutilsCommand +from distutils.command.install import SCHEME_KEYS +from distutils.command.install import install as distutils_install_command +from distutils.sysconfig import get_python_lib +from typing import Dict, List, Optional, Union, cast + +from pip._internal.models.scheme import Scheme +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.virtualenv import running_under_virtualenv + +from .base import get_major_minor_version + +logger = logging.getLogger(__name__) + + +def distutils_scheme( + dist_name: str, + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + isolated: bool = False, + prefix: Optional[str] = None, + *, + ignore_config_files: bool = False, +) -> Dict[str, str]: + """ + Return a distutils install scheme + """ + from distutils.dist import Distribution + + dist_args: Dict[str, Union[str, List[str]]] = {"name": dist_name} + if isolated: + dist_args["script_args"] = ["--no-user-cfg"] + + d = Distribution(dist_args) + if not ignore_config_files: + try: + d.parse_config_files() + except UnicodeDecodeError: + paths = d.find_config_files() + logger.warning( + "Ignore distutils configs in %s due to encoding errors.", + ", ".join(os.path.basename(p) for p in paths), + ) + obj: Optional[DistutilsCommand] = None + obj = d.get_command_obj("install", create=True) + assert obj is not None + i = cast(distutils_install_command, obj) + # NOTE: setting user or home has the side-effect of creating the home dir + # or user base for installations during finalize_options() + # ideally, we'd prefer a scheme class that has no side-effects. + assert not (user and prefix), f"user={user} prefix={prefix}" + assert not (home and prefix), f"home={home} prefix={prefix}" + i.user = user or i.user + if user or home: + i.prefix = "" + i.prefix = prefix or i.prefix + i.home = home or i.home + i.root = root or i.root + i.finalize_options() + + scheme = {} + for key in SCHEME_KEYS: + scheme[key] = getattr(i, "install_" + key) + + # install_lib specified in setup.cfg should install *everything* + # into there (i.e. it takes precedence over both purelib and + # platlib). Note, i.install_lib is *always* set after + # finalize_options(); we only want to override here if the user + # has explicitly requested it hence going back to the config + if "install_lib" in d.get_option_dict("install"): + scheme.update({"purelib": i.install_lib, "platlib": i.install_lib}) + + if running_under_virtualenv(): + if home: + prefix = home + elif user: + prefix = i.install_userbase + else: + prefix = i.prefix + scheme["headers"] = os.path.join( + prefix, + "include", + "site", + f"python{get_major_minor_version()}", + dist_name, + ) + + if root is not None: + path_no_drive = os.path.splitdrive(os.path.abspath(scheme["headers"]))[1] + scheme["headers"] = os.path.join(root, path_no_drive[1:]) + + return scheme + + +def get_scheme( + dist_name: str, + user: bool = False, + home: Optional[str] = None, + root: Optional[str] = None, + isolated: bool = False, + prefix: Optional[str] = None, +) -> Scheme: + """ + Get the "scheme" corresponding to the input parameters. The distutils + documentation provides the context for the available schemes: + https://docs.python.org/3/install/index.html#alternate-installation + + :param dist_name: the name of the package to retrieve the scheme for, used + in the headers scheme path + :param user: indicates to use the "user" scheme + :param home: indicates to use the "home" scheme and provides the base + directory for the same + :param root: root under which other directories are re-based + :param isolated: equivalent to --no-user-cfg, i.e. do not consider + ~/.pydistutils.cfg (posix) or ~/pydistutils.cfg (non-posix) for + scheme paths + :param prefix: indicates to use the "prefix" scheme and provides the + base directory for the same + """ + scheme = distutils_scheme(dist_name, user, home, root, isolated, prefix) + return Scheme( + platlib=scheme["platlib"], + purelib=scheme["purelib"], + headers=scheme["headers"], + scripts=scheme["scripts"], + data=scheme["data"], + ) + + +def get_bin_prefix() -> str: + # XXX: In old virtualenv versions, sys.prefix can contain '..' components, + # so we need to call normpath to eliminate them. + prefix = os.path.normpath(sys.prefix) + if WINDOWS: + bin_py = os.path.join(prefix, "Scripts") + # buildout uses 'bin' on Windows too? + if not os.path.exists(bin_py): + bin_py = os.path.join(prefix, "bin") + return bin_py + # Forcing to use /usr/local/bin for standard macOS framework installs + # Also log to ~/Library/Logs/ for use with the Console.app log viewer + if sys.platform[:6] == "darwin" and prefix[:16] == "/System/Library/": + return "/usr/local/bin" + return os.path.join(prefix, "bin") + + +def get_purelib() -> str: + return get_python_lib(plat_specific=False) + + +def get_platlib() -> str: + return get_python_lib(plat_specific=True) diff --git a/venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py b/venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py new file mode 100644 index 00000000000..ca860ea562c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py @@ -0,0 +1,214 @@ +import logging +import os +import sys +import sysconfig +import typing + +from pip._internal.exceptions import InvalidSchemeCombination, UserInstallationInvalid +from pip._internal.models.scheme import SCHEME_KEYS, Scheme +from pip._internal.utils.virtualenv import running_under_virtualenv + +from .base import change_root, get_major_minor_version, is_osx_framework + +logger = logging.getLogger(__name__) + + +# Notes on _infer_* functions. +# Unfortunately ``get_default_scheme()`` didn't exist before 3.10, so there's no +# way to ask things like "what is the '_prefix' scheme on this platform". These +# functions try to answer that with some heuristics while accounting for ad-hoc +# platforms not covered by CPython's default sysconfig implementation. If the +# ad-hoc implementation does not fully implement sysconfig, we'll fall back to +# a POSIX scheme. + +_AVAILABLE_SCHEMES = set(sysconfig.get_scheme_names()) + +_PREFERRED_SCHEME_API = getattr(sysconfig, "get_preferred_scheme", None) + + +def _should_use_osx_framework_prefix() -> bool: + """Check for Apple's ``osx_framework_library`` scheme. + + Python distributed by Apple's Command Line Tools has this special scheme + that's used when: + + * This is a framework build. + * We are installing into the system prefix. + + This does not account for ``pip install --prefix`` (also means we're not + installing to the system prefix), which should use ``posix_prefix``, but + logic here means ``_infer_prefix()`` outputs ``osx_framework_library``. But + since ``prefix`` is not available for ``sysconfig.get_default_scheme()``, + which is the stdlib replacement for ``_infer_prefix()``, presumably Apple + wouldn't be able to magically switch between ``osx_framework_library`` and + ``posix_prefix``. ``_infer_prefix()`` returning ``osx_framework_library`` + means its behavior is consistent whether we use the stdlib implementation + or our own, and we deal with this special case in ``get_scheme()`` instead. + """ + return ( + "osx_framework_library" in _AVAILABLE_SCHEMES + and not running_under_virtualenv() + and is_osx_framework() + ) + + +def _infer_prefix() -> str: + """Try to find a prefix scheme for the current platform. + + This tries: + + * A special ``osx_framework_library`` for Python distributed by Apple's + Command Line Tools, when not running in a virtual environment. + * Implementation + OS, used by PyPy on Windows (``pypy_nt``). + * Implementation without OS, used by PyPy on POSIX (``pypy``). + * OS + "prefix", used by CPython on POSIX (``posix_prefix``). + * Just the OS name, used by CPython on Windows (``nt``). + + If none of the above works, fall back to ``posix_prefix``. + """ + if _PREFERRED_SCHEME_API: + return _PREFERRED_SCHEME_API("prefix") + if _should_use_osx_framework_prefix(): + return "osx_framework_library" + implementation_suffixed = f"{sys.implementation.name}_{os.name}" + if implementation_suffixed in _AVAILABLE_SCHEMES: + return implementation_suffixed + if sys.implementation.name in _AVAILABLE_SCHEMES: + return sys.implementation.name + suffixed = f"{os.name}_prefix" + if suffixed in _AVAILABLE_SCHEMES: + return suffixed + if os.name in _AVAILABLE_SCHEMES: # On Windows, prefx is just called "nt". + return os.name + return "posix_prefix" + + +def _infer_user() -> str: + """Try to find a user scheme for the current platform.""" + if _PREFERRED_SCHEME_API: + return _PREFERRED_SCHEME_API("user") + if is_osx_framework() and not running_under_virtualenv(): + suffixed = "osx_framework_user" + else: + suffixed = f"{os.name}_user" + if suffixed in _AVAILABLE_SCHEMES: + return suffixed + if "posix_user" not in _AVAILABLE_SCHEMES: # User scheme unavailable. + raise UserInstallationInvalid() + return "posix_user" + + +def _infer_home() -> str: + """Try to find a home for the current platform.""" + if _PREFERRED_SCHEME_API: + return _PREFERRED_SCHEME_API("home") + suffixed = f"{os.name}_home" + if suffixed in _AVAILABLE_SCHEMES: + return suffixed + return "posix_home" + + +# Update these keys if the user sets a custom home. +_HOME_KEYS = [ + "installed_base", + "base", + "installed_platbase", + "platbase", + "prefix", + "exec_prefix", +] +if sysconfig.get_config_var("userbase") is not None: + _HOME_KEYS.append("userbase") + + +def get_scheme( + dist_name: str, + user: bool = False, + home: typing.Optional[str] = None, + root: typing.Optional[str] = None, + isolated: bool = False, + prefix: typing.Optional[str] = None, +) -> Scheme: + """ + Get the "scheme" corresponding to the input parameters. + + :param dist_name: the name of the package to retrieve the scheme for, used + in the headers scheme path + :param user: indicates to use the "user" scheme + :param home: indicates to use the "home" scheme + :param root: root under which other directories are re-based + :param isolated: ignored, but kept for distutils compatibility (where + this controls whether the user-site pydistutils.cfg is honored) + :param prefix: indicates to use the "prefix" scheme and provides the + base directory for the same + """ + if user and prefix: + raise InvalidSchemeCombination("--user", "--prefix") + if home and prefix: + raise InvalidSchemeCombination("--home", "--prefix") + + if home is not None: + scheme_name = _infer_home() + elif user: + scheme_name = _infer_user() + else: + scheme_name = _infer_prefix() + + # Special case: When installing into a custom prefix, use posix_prefix + # instead of osx_framework_library. See _should_use_osx_framework_prefix() + # docstring for details. + if prefix is not None and scheme_name == "osx_framework_library": + scheme_name = "posix_prefix" + + if home is not None: + variables = {k: home for k in _HOME_KEYS} + elif prefix is not None: + variables = {k: prefix for k in _HOME_KEYS} + else: + variables = {} + + paths = sysconfig.get_paths(scheme=scheme_name, vars=variables) + + # Logic here is very arbitrary, we're doing it for compatibility, don't ask. + # 1. Pip historically uses a special header path in virtual environments. + # 2. If the distribution name is not known, distutils uses 'UNKNOWN'. We + # only do the same when not running in a virtual environment because + # pip's historical header path logic (see point 1) did not do this. + if running_under_virtualenv(): + if user: + base = variables.get("userbase", sys.prefix) + else: + base = variables.get("base", sys.prefix) + python_xy = f"python{get_major_minor_version()}" + paths["include"] = os.path.join(base, "include", "site", python_xy) + elif not dist_name: + dist_name = "UNKNOWN" + + scheme = Scheme( + platlib=paths["platlib"], + purelib=paths["purelib"], + headers=os.path.join(paths["include"], dist_name), + scripts=paths["scripts"], + data=paths["data"], + ) + if root is not None: + converted_keys = {} + for key in SCHEME_KEYS: + converted_keys[key] = change_root(root, getattr(scheme, key)) + scheme = Scheme(**converted_keys) + return scheme + + +def get_bin_prefix() -> str: + # Forcing to use /usr/local/bin for standard macOS framework installs. + if sys.platform[:6] == "darwin" and sys.prefix[:16] == "/System/Library/": + return "/usr/local/bin" + return sysconfig.get_paths()["scripts"] + + +def get_purelib() -> str: + return sysconfig.get_paths()["purelib"] + + +def get_platlib() -> str: + return sysconfig.get_paths()["platlib"] diff --git a/venv/Lib/site-packages/pip/_internal/locations/base.py b/venv/Lib/site-packages/pip/_internal/locations/base.py new file mode 100644 index 00000000000..3f9f896e632 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/locations/base.py @@ -0,0 +1,81 @@ +import functools +import os +import site +import sys +import sysconfig +import typing + +from pip._internal.exceptions import InstallationError +from pip._internal.utils import appdirs +from pip._internal.utils.virtualenv import running_under_virtualenv + +# Application Directories +USER_CACHE_DIR = appdirs.user_cache_dir("pip") + +# FIXME doesn't account for venv linked to global site-packages +site_packages: str = sysconfig.get_path("purelib") + + +def get_major_minor_version() -> str: + """ + Return the major-minor version of the current Python as a string, e.g. + "3.7" or "3.10". + """ + return "{}.{}".format(*sys.version_info) + + +def change_root(new_root: str, pathname: str) -> str: + """Return 'pathname' with 'new_root' prepended. + + If 'pathname' is relative, this is equivalent to os.path.join(new_root, pathname). + Otherwise, it requires making 'pathname' relative and then joining the + two, which is tricky on DOS/Windows and Mac OS. + + This is borrowed from Python's standard library's distutils module. + """ + if os.name == "posix": + if not os.path.isabs(pathname): + return os.path.join(new_root, pathname) + else: + return os.path.join(new_root, pathname[1:]) + + elif os.name == "nt": + (drive, path) = os.path.splitdrive(pathname) + if path[0] == "\\": + path = path[1:] + return os.path.join(new_root, path) + + else: + raise InstallationError( + f"Unknown platform: {os.name}\n" + "Can not change root path prefix on unknown platform." + ) + + +def get_src_prefix() -> str: + if running_under_virtualenv(): + src_prefix = os.path.join(sys.prefix, "src") + else: + # FIXME: keep src in cwd for now (it is not a temporary folder) + try: + src_prefix = os.path.join(os.getcwd(), "src") + except OSError: + # In case the current working directory has been renamed or deleted + sys.exit("The folder you are executing pip from can no longer be found.") + + # under macOS + virtualenv sys.prefix is not properly resolved + # it is something like /path/to/python/bin/.. + return os.path.abspath(src_prefix) + + +try: + # Use getusersitepackages if this is present, as it ensures that the + # value is initialised properly. + user_site: typing.Optional[str] = site.getusersitepackages() +except AttributeError: + user_site = site.USER_SITE + + +@functools.lru_cache(maxsize=None) +def is_osx_framework() -> bool: + return bool(sysconfig.get_config_var("PYTHONFRAMEWORK")) diff --git a/venv/Lib/site-packages/pip/_internal/main.py b/venv/Lib/site-packages/pip/_internal/main.py new file mode 100644 index 00000000000..33c6d24cd85 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/main.py @@ -0,0 +1,12 @@ +from typing import List, Optional + + +def main(args: Optional[List[str]] = None) -> int: + """This is preserved for old console scripts that may still be referencing + it. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/venv/Lib/site-packages/pip/_internal/metadata/__init__.py b/venv/Lib/site-packages/pip/_internal/metadata/__init__.py new file mode 100644 index 00000000000..aa232b6cabd --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/__init__.py @@ -0,0 +1,128 @@ +import contextlib +import functools +import os +import sys +from typing import TYPE_CHECKING, List, Optional, Type, cast + +from pip._internal.utils.misc import strtobool + +from .base import BaseDistribution, BaseEnvironment, FilesystemWheel, MemoryWheel, Wheel + +if TYPE_CHECKING: + from typing import Literal, Protocol +else: + Protocol = object + +__all__ = [ + "BaseDistribution", + "BaseEnvironment", + "FilesystemWheel", + "MemoryWheel", + "Wheel", + "get_default_environment", + "get_environment", + "get_wheel_distribution", + "select_backend", +] + + +def _should_use_importlib_metadata() -> bool: + """Whether to use the ``importlib.metadata`` or ``pkg_resources`` backend. + + By default, pip uses ``importlib.metadata`` on Python 3.11+, and + ``pkg_resourcess`` otherwise. This can be overridden by a couple of ways: + + * If environment variable ``_PIP_USE_IMPORTLIB_METADATA`` is set, it + dictates whether ``importlib.metadata`` is used, regardless of Python + version. + * On Python 3.11+, Python distributors can patch ``importlib.metadata`` + to add a global constant ``_PIP_USE_IMPORTLIB_METADATA = False``. This + makes pip use ``pkg_resources`` (unless the user set the aforementioned + environment variable to *True*). + """ + with contextlib.suppress(KeyError, ValueError): + return bool(strtobool(os.environ["_PIP_USE_IMPORTLIB_METADATA"])) + if sys.version_info < (3, 11): + return False + import importlib.metadata + + return bool(getattr(importlib.metadata, "_PIP_USE_IMPORTLIB_METADATA", True)) + + +class Backend(Protocol): + NAME: 'Literal["importlib", "pkg_resources"]' + Distribution: Type[BaseDistribution] + Environment: Type[BaseEnvironment] + + +@functools.lru_cache(maxsize=None) +def select_backend() -> Backend: + if _should_use_importlib_metadata(): + from . import importlib + + return cast(Backend, importlib) + from . import pkg_resources + + return cast(Backend, pkg_resources) + + +def get_default_environment() -> BaseEnvironment: + """Get the default representation for the current environment. + + This returns an Environment instance from the chosen backend. The default + Environment instance should be built from ``sys.path`` and may use caching + to share instance state accorss calls. + """ + return select_backend().Environment.default() + + +def get_environment(paths: Optional[List[str]]) -> BaseEnvironment: + """Get a representation of the environment specified by ``paths``. + + This returns an Environment instance from the chosen backend based on the + given import paths. The backend must build a fresh instance representing + the state of installed distributions when this function is called. + """ + return select_backend().Environment.from_paths(paths) + + +def get_directory_distribution(directory: str) -> BaseDistribution: + """Get the distribution metadata representation in the specified directory. + + This returns a Distribution instance from the chosen backend based on + the given on-disk ``.dist-info`` directory. + """ + return select_backend().Distribution.from_directory(directory) + + +def get_wheel_distribution(wheel: Wheel, canonical_name: str) -> BaseDistribution: + """Get the representation of the specified wheel's distribution metadata. + + This returns a Distribution instance from the chosen backend based on + the given wheel's ``.dist-info`` directory. + + :param canonical_name: Normalized project name of the given wheel. + """ + return select_backend().Distribution.from_wheel(wheel, canonical_name) + + +def get_metadata_distribution( + metadata_contents: bytes, + filename: str, + canonical_name: str, +) -> BaseDistribution: + """Get the dist representation of the specified METADATA file contents. + + This returns a Distribution instance from the chosen backend sourced from the data + in `metadata_contents`. + + :param metadata_contents: Contents of a METADATA file within a dist, or one served + via PEP 658. + :param filename: Filename for the dist this metadata represents. + :param canonical_name: Normalized project name of the given dist. + """ + return select_backend().Distribution.from_metadata_file_contents( + metadata_contents, + filename, + canonical_name, + ) diff --git a/venv/Lib/site-packages/pip/_internal/metadata/_json.py b/venv/Lib/site-packages/pip/_internal/metadata/_json.py new file mode 100644 index 00000000000..9097dd58590 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/_json.py @@ -0,0 +1,84 @@ +# Extracted from https://github.com/pfmoore/pkg_metadata + +from email.header import Header, decode_header, make_header +from email.message import Message +from typing import Any, Dict, List, Union, cast + +METADATA_FIELDS = [ + # Name, Multiple-Use + ("Metadata-Version", False), + ("Name", False), + ("Version", False), + ("Dynamic", True), + ("Platform", True), + ("Supported-Platform", True), + ("Summary", False), + ("Description", False), + ("Description-Content-Type", False), + ("Keywords", False), + ("Home-page", False), + ("Download-URL", False), + ("Author", False), + ("Author-email", False), + ("Maintainer", False), + ("Maintainer-email", False), + ("License", False), + ("Classifier", True), + ("Requires-Dist", True), + ("Requires-Python", False), + ("Requires-External", True), + ("Project-URL", True), + ("Provides-Extra", True), + ("Provides-Dist", True), + ("Obsoletes-Dist", True), +] + + +def json_name(field: str) -> str: + return field.lower().replace("-", "_") + + +def msg_to_json(msg: Message) -> Dict[str, Any]: + """Convert a Message object into a JSON-compatible dictionary.""" + + def sanitise_header(h: Union[Header, str]) -> str: + if isinstance(h, Header): + chunks = [] + for bytes, encoding in decode_header(h): + if encoding == "unknown-8bit": + try: + # See if UTF-8 works + bytes.decode("utf-8") + encoding = "utf-8" + except UnicodeDecodeError: + # If not, latin1 at least won't fail + encoding = "latin1" + chunks.append((bytes, encoding)) + return str(make_header(chunks)) + return str(h) + + result = {} + for field, multi in METADATA_FIELDS: + if field not in msg: + continue + key = json_name(field) + if multi: + value: Union[str, List[str]] = [ + sanitise_header(v) for v in msg.get_all(field) # type: ignore + ] + else: + value = sanitise_header(msg.get(field)) # type: ignore + if key == "keywords": + # Accept both comma-separated and space-separated + # forms, for better compatibility with old data. + if "," in value: + value = [v.strip() for v in value.split(",")] + else: + value = value.split() + result[key] = value + + payload = cast(str, msg.get_payload()) + if payload: + result["description"] = payload + + return result diff --git a/venv/Lib/site-packages/pip/_internal/metadata/base.py b/venv/Lib/site-packages/pip/_internal/metadata/base.py new file mode 100644 index 00000000000..9eabcdb278b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/base.py @@ -0,0 +1,688 @@ +import csv +import email.message +import functools +import json +import logging +import pathlib +import re +import zipfile +from typing import ( + IO, + Any, + Collection, + Container, + Dict, + Iterable, + Iterator, + List, + NamedTuple, + Optional, + Protocol, + Tuple, + Union, +) + +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.specifiers import InvalidSpecifier, SpecifierSet +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version + +from pip._internal.exceptions import NoneMetadataError +from pip._internal.locations import site_packages, user_site +from pip._internal.models.direct_url import ( + DIRECT_URL_METADATA_NAME, + DirectUrl, + DirectUrlValidationError, +) +from pip._internal.utils.compat import stdlib_pkgs # TODO: Move definition here. +from pip._internal.utils.egg_link import egg_link_path_from_sys_path +from pip._internal.utils.misc import is_local, normalize_path +from pip._internal.utils.urls import url_to_path + +from ._json import msg_to_json + +InfoPath = Union[str, pathlib.PurePath] + +logger = logging.getLogger(__name__) + + +class BaseEntryPoint(Protocol): + @property + def name(self) -> str: + raise NotImplementedError() + + @property + def value(self) -> str: + raise NotImplementedError() + + @property + def group(self) -> str: + raise NotImplementedError() + + +def _convert_installed_files_path( + entry: Tuple[str, ...], + info: Tuple[str, ...], +) -> str: + """Convert a legacy installed-files.txt path into modern RECORD path. + + The legacy format stores paths relative to the info directory, while the + modern format stores paths relative to the package root, e.g. the + site-packages directory. + + :param entry: Path parts of the installed-files.txt entry. + :param info: Path parts of the egg-info directory relative to package root. + :returns: The converted entry. + + For best compatibility with symlinks, this does not use ``abspath()`` or + ``Path.resolve()``, but tries to work with path parts: + + 1. While ``entry`` starts with ``..``, remove the equal amounts of parts + from ``info``; if ``info`` is empty, start appending ``..`` instead. + 2. Join the two directly. + """ + while entry and entry[0] == "..": + if not info or info[-1] == "..": + info += ("..",) + else: + info = info[:-1] + entry = entry[1:] + return str(pathlib.Path(*info, *entry)) + + +class RequiresEntry(NamedTuple): + requirement: str + extra: str + marker: str + + +class BaseDistribution(Protocol): + @classmethod + def from_directory(cls, directory: str) -> "BaseDistribution": + """Load the distribution from a metadata directory. + + :param directory: Path to a metadata directory, e.g. ``.dist-info``. + """ + raise NotImplementedError() + + @classmethod + def from_metadata_file_contents( + cls, + metadata_contents: bytes, + filename: str, + project_name: str, + ) -> "BaseDistribution": + """Load the distribution from the contents of a METADATA file. + + This is used to implement PEP 658 by generating a "shallow" dist object that can + be used for resolution without downloading or building the actual dist yet. + + :param metadata_contents: The contents of a METADATA file. + :param filename: File name for the dist with this metadata. + :param project_name: Name of the project this dist represents. + """ + raise NotImplementedError() + + @classmethod + def from_wheel(cls, wheel: "Wheel", name: str) -> "BaseDistribution": + """Load the distribution from a given wheel. + + :param wheel: A concrete wheel definition. + :param name: File name of the wheel. + + :raises InvalidWheel: Whenever loading of the wheel causes a + :py:exc:`zipfile.BadZipFile` exception to be thrown. + :raises UnsupportedWheel: If the wheel is a valid zip, but malformed + internally. + """ + raise NotImplementedError() + + def __repr__(self) -> str: + return f"{self.raw_name} {self.raw_version} ({self.location})" + + def __str__(self) -> str: + return f"{self.raw_name} {self.raw_version}" + + @property + def location(self) -> Optional[str]: + """Where the distribution is loaded from. + + A string value is not necessarily a filesystem path, since distributions + can be loaded from other sources, e.g. arbitrary zip archives. ``None`` + means the distribution is created in-memory. + + Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If + this is a symbolic link, we want to preserve the relative path between + it and files in the distribution. + """ + raise NotImplementedError() + + @property + def editable_project_location(self) -> Optional[str]: + """The project location for editable distributions. + + This is the directory where pyproject.toml or setup.py is located. + None if the distribution is not installed in editable mode. + """ + # TODO: this property is relatively costly to compute, memoize it ? + direct_url = self.direct_url + if direct_url: + if direct_url.is_local_editable(): + return url_to_path(direct_url.url) + else: + # Search for an .egg-link file by walking sys.path, as it was + # done before by dist_is_editable(). + egg_link_path = egg_link_path_from_sys_path(self.raw_name) + if egg_link_path: + # TODO: get project location from second line of egg_link file + # (https://github.com/pypa/pip/issues/10243) + return self.location + return None + + @property + def installed_location(self) -> Optional[str]: + """The distribution's "installed" location. + + This should generally be a ``site-packages`` directory. This is + usually ``dist.location``, except for legacy develop-installed packages, + where ``dist.location`` is the source code location, and this is where + the ``.egg-link`` file is. + + The returned location is normalized (in particular, with symlinks removed). + """ + raise NotImplementedError() + + @property + def info_location(self) -> Optional[str]: + """Location of the .[egg|dist]-info directory or file. + + Similarly to ``location``, a string value is not necessarily a + filesystem path. ``None`` means the distribution is created in-memory. + + For a modern .dist-info installation on disk, this should be something + like ``{location}/{raw_name}-{version}.dist-info``. + + Do not canonicalize this value with e.g. ``pathlib.Path.resolve()``. If + this is a symbolic link, we want to preserve the relative path between + it and other files in the distribution. + """ + raise NotImplementedError() + + @property + def installed_by_distutils(self) -> bool: + """Whether this distribution is installed with legacy distutils format. + + A distribution installed with "raw" distutils not patched by setuptools + uses one single file at ``info_location`` to store metadata. We need to + treat this specially on uninstallation. + """ + info_location = self.info_location + if not info_location: + return False + return pathlib.Path(info_location).is_file() + + @property + def installed_as_egg(self) -> bool: + """Whether this distribution is installed as an egg. + + This usually indicates the distribution was installed by (older versions + of) easy_install. + """ + location = self.location + if not location: + return False + return location.endswith(".egg") + + @property + def installed_with_setuptools_egg_info(self) -> bool: + """Whether this distribution is installed with the ``.egg-info`` format. + + This usually indicates the distribution was installed with setuptools + with an old pip version or with ``single-version-externally-managed``. + + Note that this ensure the metadata store is a directory. distutils can + also installs an ``.egg-info``, but as a file, not a directory. This + property is *False* for that case. Also see ``installed_by_distutils``. + """ + info_location = self.info_location + if not info_location: + return False + if not info_location.endswith(".egg-info"): + return False + return pathlib.Path(info_location).is_dir() + + @property + def installed_with_dist_info(self) -> bool: + """Whether this distribution is installed with the "modern format". + + This indicates a "modern" installation, e.g. storing metadata in the + ``.dist-info`` directory. This applies to installations made by + setuptools (but through pip, not directly), or anything using the + standardized build backend interface (PEP 517). + """ + info_location = self.info_location + if not info_location: + return False + if not info_location.endswith(".dist-info"): + return False + return pathlib.Path(info_location).is_dir() + + @property + def canonical_name(self) -> NormalizedName: + raise NotImplementedError() + + @property + def version(self) -> Version: + raise NotImplementedError() + + @property + def raw_version(self) -> str: + raise NotImplementedError() + + @property + def setuptools_filename(self) -> str: + """Convert a project name to its setuptools-compatible filename. + + This is a copy of ``pkg_resources.to_filename()`` for compatibility. + """ + return self.raw_name.replace("-", "_") + + @property + def direct_url(self) -> Optional[DirectUrl]: + """Obtain a DirectUrl from this distribution. + + Returns None if the distribution has no `direct_url.json` metadata, + or if `direct_url.json` is invalid. + """ + try: + content = self.read_text(DIRECT_URL_METADATA_NAME) + except FileNotFoundError: + return None + try: + return DirectUrl.from_json(content) + except ( + UnicodeDecodeError, + json.JSONDecodeError, + DirectUrlValidationError, + ) as e: + logger.warning( + "Error parsing %s for %s: %s", + DIRECT_URL_METADATA_NAME, + self.canonical_name, + e, + ) + return None + + @property + def installer(self) -> str: + try: + installer_text = self.read_text("INSTALLER") + except (OSError, ValueError, NoneMetadataError): + return "" # Fail silently if the installer file cannot be read. + for line in installer_text.splitlines(): + cleaned_line = line.strip() + if cleaned_line: + return cleaned_line + return "" + + @property + def requested(self) -> bool: + return self.is_file("REQUESTED") + + @property + def editable(self) -> bool: + return bool(self.editable_project_location) + + @property + def local(self) -> bool: + """If distribution is installed in the current virtual environment. + + Always True if we're not in a virtualenv. + """ + if self.installed_location is None: + return False + return is_local(self.installed_location) + + @property + def in_usersite(self) -> bool: + if self.installed_location is None or user_site is None: + return False + return self.installed_location.startswith(normalize_path(user_site)) + + @property + def in_site_packages(self) -> bool: + if self.installed_location is None or site_packages is None: + return False + return self.installed_location.startswith(normalize_path(site_packages)) + + def is_file(self, path: InfoPath) -> bool: + """Check whether an entry in the info directory is a file.""" + raise NotImplementedError() + + def iter_distutils_script_names(self) -> Iterator[str]: + """Find distutils 'scripts' entries metadata. + + If 'scripts' is supplied in ``setup.py``, distutils records those in the + installed distribution's ``scripts`` directory, a file for each script. + """ + raise NotImplementedError() + + def read_text(self, path: InfoPath) -> str: + """Read a file in the info directory. + + :raise FileNotFoundError: If ``path`` does not exist in the directory. + :raise NoneMetadataError: If ``path`` exists in the info directory, but + cannot be read. + """ + raise NotImplementedError() + + def iter_entry_points(self) -> Iterable[BaseEntryPoint]: + raise NotImplementedError() + + def _metadata_impl(self) -> email.message.Message: + raise NotImplementedError() + + @functools.cached_property + def metadata(self) -> email.message.Message: + """Metadata of distribution parsed from e.g. METADATA or PKG-INFO. + + This should return an empty message if the metadata file is unavailable. + + :raises NoneMetadataError: If the metadata file is available, but does + not contain valid metadata. + """ + metadata = self._metadata_impl() + self._add_egg_info_requires(metadata) + return metadata + + @property + def metadata_dict(self) -> Dict[str, Any]: + """PEP 566 compliant JSON-serializable representation of METADATA or PKG-INFO. + + This should return an empty dict if the metadata file is unavailable. + + :raises NoneMetadataError: If the metadata file is available, but does + not contain valid metadata. + """ + return msg_to_json(self.metadata) + + @property + def metadata_version(self) -> Optional[str]: + """Value of "Metadata-Version:" in distribution metadata, if available.""" + return self.metadata.get("Metadata-Version") + + @property + def raw_name(self) -> str: + """Value of "Name:" in distribution metadata.""" + # The metadata should NEVER be missing the Name: key, but if it somehow + # does, fall back to the known canonical name. + return self.metadata.get("Name", self.canonical_name) + + @property + def requires_python(self) -> SpecifierSet: + """Value of "Requires-Python:" in distribution metadata. + + If the key does not exist or contains an invalid value, an empty + SpecifierSet should be returned. + """ + value = self.metadata.get("Requires-Python") + if value is None: + return SpecifierSet() + try: + # Convert to str to satisfy the type checker; this can be a Header object. + spec = SpecifierSet(str(value)) + except InvalidSpecifier as e: + message = "Package %r has an invalid Requires-Python: %s" + logger.warning(message, self.raw_name, e) + return SpecifierSet() + return spec + + def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: + """Dependencies of this distribution. + + For modern .dist-info distributions, this is the collection of + "Requires-Dist:" entries in distribution metadata. + """ + raise NotImplementedError() + + def iter_raw_dependencies(self) -> Iterable[str]: + """Raw Requires-Dist metadata.""" + return self.metadata.get_all("Requires-Dist", []) + + def iter_provided_extras(self) -> Iterable[NormalizedName]: + """Extras provided by this distribution. + + For modern .dist-info distributions, this is the collection of + "Provides-Extra:" entries in distribution metadata. + + The return value of this function is expected to be normalised names, + per PEP 685, with the returned value being handled appropriately by + `iter_dependencies`. + """ + raise NotImplementedError() + + def _iter_declared_entries_from_record(self) -> Optional[Iterator[str]]: + try: + text = self.read_text("RECORD") + except FileNotFoundError: + return None + # This extra Path-str cast normalizes entries. + return (str(pathlib.Path(row[0])) for row in csv.reader(text.splitlines())) + + def _iter_declared_entries_from_legacy(self) -> Optional[Iterator[str]]: + try: + text = self.read_text("installed-files.txt") + except FileNotFoundError: + return None + paths = (p for p in text.splitlines(keepends=False) if p) + root = self.location + info = self.info_location + if root is None or info is None: + return paths + try: + info_rel = pathlib.Path(info).relative_to(root) + except ValueError: # info is not relative to root. + return paths + if not info_rel.parts: # info *is* root. + return paths + return ( + _convert_installed_files_path(pathlib.Path(p).parts, info_rel.parts) + for p in paths + ) + + def iter_declared_entries(self) -> Optional[Iterator[str]]: + """Iterate through file entries declared in this distribution. + + For modern .dist-info distributions, this is the files listed in the + ``RECORD`` metadata file. For legacy setuptools distributions, this + comes from ``installed-files.txt``, with entries normalized to be + compatible with the format used by ``RECORD``. + + :return: An iterator for listed entries, or None if the distribution + contains neither ``RECORD`` nor ``installed-files.txt``. + """ + return ( + self._iter_declared_entries_from_record() + or self._iter_declared_entries_from_legacy() + ) + + def _iter_requires_txt_entries(self) -> Iterator[RequiresEntry]: + """Parse a ``requires.txt`` in an egg-info directory. + + This is an INI-ish format where an egg-info stores dependencies. A + section name describes extra other environment markers, while each entry + is an arbitrary string (not a key-value pair) representing a dependency + as a requirement string (no markers). + + There is a construct in ``importlib.metadata`` called ``Sectioned`` that + does mostly the same, but the format is currently considered private. + """ + try: + content = self.read_text("requires.txt") + except FileNotFoundError: + return + extra = marker = "" # Section-less entries don't have markers. + for line in content.splitlines(): + line = line.strip() + if not line or line.startswith("#"): # Comment; ignored. + continue + if line.startswith("[") and line.endswith("]"): # A section header. + extra, _, marker = line.strip("[]").partition(":") + continue + yield RequiresEntry(requirement=line, extra=extra, marker=marker) + + def _iter_egg_info_extras(self) -> Iterable[str]: + """Get extras from the egg-info directory.""" + known_extras = {""} + for entry in self._iter_requires_txt_entries(): + extra = canonicalize_name(entry.extra) + if extra in known_extras: + continue + known_extras.add(extra) + yield extra + + def _iter_egg_info_dependencies(self) -> Iterable[str]: + """Get distribution dependencies from the egg-info directory. + + To ease parsing, this converts a legacy dependency entry into a PEP 508 + requirement string. Like ``_iter_requires_txt_entries()``, there is code + in ``importlib.metadata`` that does mostly the same, but not do exactly + what we need. + + Namely, ``importlib.metadata`` does not normalize the extra name before + putting it into the requirement string, which causes marker comparison + to fail because the dist-info format do normalize. This is consistent in + all currently available PEP 517 backends, although not standardized. + """ + for entry in self._iter_requires_txt_entries(): + extra = canonicalize_name(entry.extra) + if extra and entry.marker: + marker = f'({entry.marker}) and extra == "{extra}"' + elif extra: + marker = f'extra == "{extra}"' + elif entry.marker: + marker = entry.marker + else: + marker = "" + if marker: + yield f"{entry.requirement} ; {marker}" + else: + yield entry.requirement + + def _add_egg_info_requires(self, metadata: email.message.Message) -> None: + """Add egg-info requires.txt information to the metadata.""" + if not metadata.get_all("Requires-Dist"): + for dep in self._iter_egg_info_dependencies(): + metadata["Requires-Dist"] = dep + if not metadata.get_all("Provides-Extra"): + for extra in self._iter_egg_info_extras(): + metadata["Provides-Extra"] = extra + + +class BaseEnvironment: + """An environment containing distributions to introspect.""" + + @classmethod + def default(cls) -> "BaseEnvironment": + raise NotImplementedError() + + @classmethod + def from_paths(cls, paths: Optional[List[str]]) -> "BaseEnvironment": + raise NotImplementedError() + + def get_distribution(self, name: str) -> Optional["BaseDistribution"]: + """Given a requirement name, return the installed distributions. + + The name may not be normalized. The implementation must canonicalize + it for lookup. + """ + raise NotImplementedError() + + def _iter_distributions(self) -> Iterator["BaseDistribution"]: + """Iterate through installed distributions. + + This function should be implemented by subclass, but never called + directly. Use the public ``iter_distribution()`` instead, which + implements additional logic to make sure the distributions are valid. + """ + raise NotImplementedError() + + def iter_all_distributions(self) -> Iterator[BaseDistribution]: + """Iterate through all installed distributions without any filtering.""" + for dist in self._iter_distributions(): + # Make sure the distribution actually comes from a valid Python + # packaging distribution. Pip's AdjacentTempDirectory leaves folders + # e.g. ``~atplotlib.dist-info`` if cleanup was interrupted. The + # valid project name pattern is taken from PEP 508. + project_name_valid = re.match( + r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", + dist.canonical_name, + flags=re.IGNORECASE, + ) + if not project_name_valid: + logger.warning( + "Ignoring invalid distribution %s (%s)", + dist.canonical_name, + dist.location, + ) + continue + yield dist + + def iter_installed_distributions( + self, + local_only: bool = True, + skip: Container[str] = stdlib_pkgs, + include_editables: bool = True, + editables_only: bool = False, + user_only: bool = False, + ) -> Iterator[BaseDistribution]: + """Return a list of installed distributions. + + This is based on ``iter_all_distributions()`` with additional filtering + options. Note that ``iter_installed_distributions()`` without arguments + is *not* equal to ``iter_all_distributions()``, since some of the + configurations exclude packages by default. + + :param local_only: If True (default), only return installations + local to the current virtualenv, if in a virtualenv. + :param skip: An iterable of canonicalized project names to ignore; + defaults to ``stdlib_pkgs``. + :param include_editables: If False, don't report editables. + :param editables_only: If True, only report editables. + :param user_only: If True, only report installations in the user + site directory. + """ + it = self.iter_all_distributions() + if local_only: + it = (d for d in it if d.local) + if not include_editables: + it = (d for d in it if not d.editable) + if editables_only: + it = (d for d in it if d.editable) + if user_only: + it = (d for d in it if d.in_usersite) + return (d for d in it if d.canonical_name not in skip) + + +class Wheel(Protocol): + location: str + + def as_zipfile(self) -> zipfile.ZipFile: + raise NotImplementedError() + + +class FilesystemWheel(Wheel): + def __init__(self, location: str) -> None: + self.location = location + + def as_zipfile(self) -> zipfile.ZipFile: + return zipfile.ZipFile(self.location, allowZip64=True) + + +class MemoryWheel(Wheel): + def __init__(self, location: str, stream: IO[bytes]) -> None: + self.location = location + self.stream = stream + + def as_zipfile(self) -> zipfile.ZipFile: + return zipfile.ZipFile(self.stream, allowZip64=True) diff --git a/venv/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py b/venv/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py new file mode 100644 index 00000000000..a779138db10 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py @@ -0,0 +1,6 @@ +from ._dists import Distribution +from ._envs import Environment + +__all__ = ["NAME", "Distribution", "Environment"] + +NAME = "importlib" diff --git a/venv/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py b/venv/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py new file mode 100644 index 00000000000..ec1e815cdbd --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py @@ -0,0 +1,85 @@ +import importlib.metadata +import os +from typing import Any, Optional, Protocol, Tuple, cast + +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name + + +class BadMetadata(ValueError): + def __init__(self, dist: importlib.metadata.Distribution, *, reason: str) -> None: + self.dist = dist + self.reason = reason + + def __str__(self) -> str: + return f"Bad metadata in {self.dist} ({self.reason})" + + +class BasePath(Protocol): + """A protocol that various path objects conform. + + This exists because importlib.metadata uses both ``pathlib.Path`` and + ``zipfile.Path``, and we need a common base for type hints (Union does not + work well since ``zipfile.Path`` is too new for our linter setup). + + This does not mean to be exhaustive, but only contains things that present + in both classes *that we need*. + """ + + @property + def name(self) -> str: + raise NotImplementedError() + + @property + def parent(self) -> "BasePath": + raise NotImplementedError() + + +def get_info_location(d: importlib.metadata.Distribution) -> Optional[BasePath]: + """Find the path to the distribution's metadata directory. + + HACK: This relies on importlib.metadata's private ``_path`` attribute. Not + all distributions exist on disk, so importlib.metadata is correct to not + expose the attribute as public. But pip's code base is old and not as clean, + so we do this to avoid having to rewrite too many things. Hopefully we can + eliminate this some day. + """ + return getattr(d, "_path", None) + + +def parse_name_and_version_from_info_directory( + dist: importlib.metadata.Distribution, +) -> Tuple[Optional[str], Optional[str]]: + """Get a name and version from the metadata directory name. + + This is much faster than reading distribution metadata. + """ + info_location = get_info_location(dist) + if info_location is None: + return None, None + + stem, suffix = os.path.splitext(info_location.name) + if suffix == ".dist-info": + name, sep, version = stem.partition("-") + if sep: + return name, version + + if suffix == ".egg-info": + name = stem.split("-", 1)[0] + return name, None + + return None, None + + +def get_dist_canonical_name(dist: importlib.metadata.Distribution) -> NormalizedName: + """Get the distribution's normalized name. + + The ``name`` attribute is only available in Python 3.10 or later. We are + targeting exactly that, but Mypy does not know this. + """ + if name := parse_name_and_version_from_info_directory(dist)[0]: + return canonicalize_name(name) + + name = cast(Any, dist).name + if not isinstance(name, str): + raise BadMetadata(dist, reason="invalid metadata entry 'name'") + return canonicalize_name(name) diff --git a/venv/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py b/venv/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py new file mode 100644 index 00000000000..36cd326232e --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py @@ -0,0 +1,221 @@ +import email.message +import importlib.metadata +import pathlib +import zipfile +from typing import ( + Collection, + Dict, + Iterable, + Iterator, + Mapping, + Optional, + Sequence, + cast, +) + +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.exceptions import InvalidWheel, UnsupportedWheel +from pip._internal.metadata.base import ( + BaseDistribution, + BaseEntryPoint, + InfoPath, + Wheel, +) +from pip._internal.utils.misc import normalize_path +from pip._internal.utils.packaging import get_requirement +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.wheel import parse_wheel, read_wheel_metadata_file + +from ._compat import ( + BasePath, + get_dist_canonical_name, + parse_name_and_version_from_info_directory, +) + + +class WheelDistribution(importlib.metadata.Distribution): + """An ``importlib.metadata.Distribution`` read from a wheel. + + Although ``importlib.metadata.PathDistribution`` accepts ``zipfile.Path``, + its implementation is too "lazy" for pip's needs (we can't keep the ZipFile + handle open for the entire lifetime of the distribution object). + + This implementation eagerly reads the entire metadata directory into the + memory instead, and operates from that. + """ + + def __init__( + self, + files: Mapping[pathlib.PurePosixPath, bytes], + info_location: pathlib.PurePosixPath, + ) -> None: + self._files = files + self.info_location = info_location + + @classmethod + def from_zipfile( + cls, + zf: zipfile.ZipFile, + name: str, + location: str, + ) -> "WheelDistribution": + info_dir, _ = parse_wheel(zf, name) + paths = ( + (name, pathlib.PurePosixPath(name.split("/", 1)[-1])) + for name in zf.namelist() + if name.startswith(f"{info_dir}/") + ) + files = { + relpath: read_wheel_metadata_file(zf, fullpath) + for fullpath, relpath in paths + } + info_location = pathlib.PurePosixPath(location, info_dir) + return cls(files, info_location) + + def iterdir(self, path: InfoPath) -> Iterator[pathlib.PurePosixPath]: + # Only allow iterating through the metadata directory. + if pathlib.PurePosixPath(str(path)) in self._files: + return iter(self._files) + raise FileNotFoundError(path) + + def read_text(self, filename: str) -> Optional[str]: + try: + data = self._files[pathlib.PurePosixPath(filename)] + except KeyError: + return None + try: + text = data.decode("utf-8") + except UnicodeDecodeError as e: + wheel = self.info_location.parent + error = f"Error decoding metadata for {wheel}: {e} in {filename} file" + raise UnsupportedWheel(error) + return text + + +class Distribution(BaseDistribution): + def __init__( + self, + dist: importlib.metadata.Distribution, + info_location: Optional[BasePath], + installed_location: Optional[BasePath], + ) -> None: + self._dist = dist + self._info_location = info_location + self._installed_location = installed_location + + @classmethod + def from_directory(cls, directory: str) -> BaseDistribution: + info_location = pathlib.Path(directory) + dist = importlib.metadata.Distribution.at(info_location) + return cls(dist, info_location, info_location.parent) + + @classmethod + def from_metadata_file_contents( + cls, + metadata_contents: bytes, + filename: str, + project_name: str, + ) -> BaseDistribution: + # Generate temp dir to contain the metadata file, and write the file contents. + temp_dir = pathlib.Path( + TempDirectory(kind="metadata", globally_managed=True).path + ) + metadata_path = temp_dir / "METADATA" + metadata_path.write_bytes(metadata_contents) + # Construct dist pointing to the newly created directory. + dist = importlib.metadata.Distribution.at(metadata_path.parent) + return cls(dist, metadata_path.parent, None) + + @classmethod + def from_wheel(cls, wheel: Wheel, name: str) -> BaseDistribution: + try: + with wheel.as_zipfile() as zf: + dist = WheelDistribution.from_zipfile(zf, name, wheel.location) + except zipfile.BadZipFile as e: + raise InvalidWheel(wheel.location, name) from e + return cls(dist, dist.info_location, pathlib.PurePosixPath(wheel.location)) + + @property + def location(self) -> Optional[str]: + if self._info_location is None: + return None + return str(self._info_location.parent) + + @property + def info_location(self) -> Optional[str]: + if self._info_location is None: + return None + return str(self._info_location) + + @property + def installed_location(self) -> Optional[str]: + if self._installed_location is None: + return None + return normalize_path(str(self._installed_location)) + + @property + def canonical_name(self) -> NormalizedName: + return get_dist_canonical_name(self._dist) + + @property + def version(self) -> Version: + if version := parse_name_and_version_from_info_directory(self._dist)[1]: + return parse_version(version) + return parse_version(self._dist.version) + + @property + def raw_version(self) -> str: + return self._dist.version + + def is_file(self, path: InfoPath) -> bool: + return self._dist.read_text(str(path)) is not None + + def iter_distutils_script_names(self) -> Iterator[str]: + # A distutils installation is always "flat" (not in e.g. egg form), so + # if this distribution's info location is NOT a pathlib.Path (but e.g. + # zipfile.Path), it can never contain any distutils scripts. + if not isinstance(self._info_location, pathlib.Path): + return + for child in self._info_location.joinpath("scripts").iterdir(): + yield child.name + + def read_text(self, path: InfoPath) -> str: + content = self._dist.read_text(str(path)) + if content is None: + raise FileNotFoundError(path) + return content + + def iter_entry_points(self) -> Iterable[BaseEntryPoint]: + # importlib.metadata's EntryPoint structure sasitfies BaseEntryPoint. + return self._dist.entry_points + + def _metadata_impl(self) -> email.message.Message: + # From Python 3.10+, importlib.metadata declares PackageMetadata as the + # return type. This protocol is unfortunately a disaster now and misses + # a ton of fields that we need, including get() and get_payload(). We + # rely on the implementation that the object is actually a Message now, + # until upstream can improve the protocol. (python/cpython#94952) + return cast(email.message.Message, self._dist.metadata) + + def iter_provided_extras(self) -> Iterable[NormalizedName]: + return [ + canonicalize_name(extra) + for extra in self.metadata.get_all("Provides-Extra", []) + ] + + def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: + contexts: Sequence[Dict[str, str]] = [{"extra": e} for e in extras] + for req_string in self.metadata.get_all("Requires-Dist", []): + # strip() because email.message.Message.get_all() may return a leading \n + # in case a long header was wrapped. + req = get_requirement(req_string.strip()) + if not req.marker: + yield req + elif not extras and req.marker.evaluate({"extra": ""}): + yield req + elif any(req.marker.evaluate(context) for context in contexts): + yield req diff --git a/venv/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py b/venv/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py new file mode 100644 index 00000000000..70cb7a6009a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py @@ -0,0 +1,189 @@ +import functools +import importlib.metadata +import logging +import os +import pathlib +import sys +import zipfile +import zipimport +from typing import Iterator, List, Optional, Sequence, Set, Tuple + +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name + +from pip._internal.metadata.base import BaseDistribution, BaseEnvironment +from pip._internal.models.wheel import Wheel +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.filetypes import WHEEL_EXTENSION + +from ._compat import BadMetadata, BasePath, get_dist_canonical_name, get_info_location +from ._dists import Distribution + +logger = logging.getLogger(__name__) + + +def _looks_like_wheel(location: str) -> bool: + if not location.endswith(WHEEL_EXTENSION): + return False + if not os.path.isfile(location): + return False + if not Wheel.wheel_file_re.match(os.path.basename(location)): + return False + return zipfile.is_zipfile(location) + + +class _DistributionFinder: + """Finder to locate distributions. + + The main purpose of this class is to memoize found distributions' names, so + only one distribution is returned for each package name. At lot of pip code + assumes this (because it is setuptools's behavior), and not doing the same + can potentially cause a distribution in lower precedence path to override a + higher precedence one if the caller is not careful. + + Eventually we probably want to make it possible to see lower precedence + installations as well. It's useful feature, after all. + """ + + FoundResult = Tuple[importlib.metadata.Distribution, Optional[BasePath]] + + def __init__(self) -> None: + self._found_names: Set[NormalizedName] = set() + + def _find_impl(self, location: str) -> Iterator[FoundResult]: + """Find distributions in a location.""" + # Skip looking inside a wheel. Since a package inside a wheel is not + # always valid (due to .data directories etc.), its .dist-info entry + # should not be considered an installed distribution. + if _looks_like_wheel(location): + return + # To know exactly where we find a distribution, we have to feed in the + # paths one by one, instead of dumping the list to importlib.metadata. + for dist in importlib.metadata.distributions(path=[location]): + info_location = get_info_location(dist) + try: + name = get_dist_canonical_name(dist) + except BadMetadata as e: + logger.warning("Skipping %s due to %s", info_location, e.reason) + continue + if name in self._found_names: + continue + self._found_names.add(name) + yield dist, info_location + + def find(self, location: str) -> Iterator[BaseDistribution]: + """Find distributions in a location. + + The path can be either a directory, or a ZIP archive. + """ + for dist, info_location in self._find_impl(location): + if info_location is None: + installed_location: Optional[BasePath] = None + else: + installed_location = info_location.parent + yield Distribution(dist, info_location, installed_location) + + def find_linked(self, location: str) -> Iterator[BaseDistribution]: + """Read location in egg-link files and return distributions in there. + + The path should be a directory; otherwise this returns nothing. This + follows how setuptools does this for compatibility. The first non-empty + line in the egg-link is read as a path (resolved against the egg-link's + containing directory if relative). Distributions found at that linked + location are returned. + """ + path = pathlib.Path(location) + if not path.is_dir(): + return + for child in path.iterdir(): + if child.suffix != ".egg-link": + continue + with child.open() as f: + lines = (line.strip() for line in f) + target_rel = next((line for line in lines if line), "") + if not target_rel: + continue + target_location = str(path.joinpath(target_rel)) + for dist, info_location in self._find_impl(target_location): + yield Distribution(dist, info_location, path) + + def _find_eggs_in_dir(self, location: str) -> Iterator[BaseDistribution]: + from pip._vendor.pkg_resources import find_distributions + + from pip._internal.metadata import pkg_resources as legacy + + with os.scandir(location) as it: + for entry in it: + if not entry.name.endswith(".egg"): + continue + for dist in find_distributions(entry.path): + yield legacy.Distribution(dist) + + def _find_eggs_in_zip(self, location: str) -> Iterator[BaseDistribution]: + from pip._vendor.pkg_resources import find_eggs_in_zip + + from pip._internal.metadata import pkg_resources as legacy + + try: + importer = zipimport.zipimporter(location) + except zipimport.ZipImportError: + return + for dist in find_eggs_in_zip(importer, location): + yield legacy.Distribution(dist) + + def find_eggs(self, location: str) -> Iterator[BaseDistribution]: + """Find eggs in a location. + + This actually uses the old *pkg_resources* backend. We likely want to + deprecate this so we can eventually remove the *pkg_resources* + dependency entirely. Before that, this should first emit a deprecation + warning for some versions when using the fallback since importing + *pkg_resources* is slow for those who don't need it. + """ + if os.path.isdir(location): + yield from self._find_eggs_in_dir(location) + if zipfile.is_zipfile(location): + yield from self._find_eggs_in_zip(location) + + +@functools.lru_cache(maxsize=None) # Warn a distribution exactly once. +def _emit_egg_deprecation(location: Optional[str]) -> None: + deprecated( + reason=f"Loading egg at {location} is deprecated.", + replacement="to use pip for package installation", + gone_in="24.3", + issue=12330, + ) + + +class Environment(BaseEnvironment): + def __init__(self, paths: Sequence[str]) -> None: + self._paths = paths + + @classmethod + def default(cls) -> BaseEnvironment: + return cls(sys.path) + + @classmethod + def from_paths(cls, paths: Optional[List[str]]) -> BaseEnvironment: + if paths is None: + return cls(sys.path) + return cls(paths) + + def _iter_distributions(self) -> Iterator[BaseDistribution]: + finder = _DistributionFinder() + for location in self._paths: + yield from finder.find(location) + for dist in finder.find_eggs(location): + _emit_egg_deprecation(dist.location) + yield dist + # This must go last because that's how pkg_resources tie-breaks. + yield from finder.find_linked(location) + + def get_distribution(self, name: str) -> Optional[BaseDistribution]: + canonical_name = canonicalize_name(name) + matches = ( + distribution + for distribution in self.iter_all_distributions() + if distribution.canonical_name == canonical_name + ) + return next(matches, None) diff --git a/venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py b/venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py new file mode 100644 index 00000000000..4ea84f93a6f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py @@ -0,0 +1,301 @@ +import email.message +import email.parser +import logging +import os +import zipfile +from typing import ( + Collection, + Iterable, + Iterator, + List, + Mapping, + NamedTuple, + Optional, +) + +from pip._vendor import pkg_resources +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.exceptions import InvalidWheel, NoneMetadataError, UnsupportedWheel +from pip._internal.utils.egg_link import egg_link_path_from_location +from pip._internal.utils.misc import display_path, normalize_path +from pip._internal.utils.wheel import parse_wheel, read_wheel_metadata_file + +from .base import ( + BaseDistribution, + BaseEntryPoint, + BaseEnvironment, + InfoPath, + Wheel, +) + +__all__ = ["NAME", "Distribution", "Environment"] + +logger = logging.getLogger(__name__) + +NAME = "pkg_resources" + + +class EntryPoint(NamedTuple): + name: str + value: str + group: str + + +class InMemoryMetadata: + """IMetadataProvider that reads metadata files from a dictionary. + + This also maps metadata decoding exceptions to our internal exception type. + """ + + def __init__(self, metadata: Mapping[str, bytes], wheel_name: str) -> None: + self._metadata = metadata + self._wheel_name = wheel_name + + def has_metadata(self, name: str) -> bool: + return name in self._metadata + + def get_metadata(self, name: str) -> str: + try: + return self._metadata[name].decode() + except UnicodeDecodeError as e: + # Augment the default error with the origin of the file. + raise UnsupportedWheel( + f"Error decoding metadata for {self._wheel_name}: {e} in {name} file" + ) + + def get_metadata_lines(self, name: str) -> Iterable[str]: + return pkg_resources.yield_lines(self.get_metadata(name)) + + def metadata_isdir(self, name: str) -> bool: + return False + + def metadata_listdir(self, name: str) -> List[str]: + return [] + + def run_script(self, script_name: str, namespace: str) -> None: + pass + + +class Distribution(BaseDistribution): + def __init__(self, dist: pkg_resources.Distribution) -> None: + self._dist = dist + # This is populated lazily, to avoid loading metadata for all possible + # distributions eagerly. + self.__extra_mapping: Optional[Mapping[NormalizedName, str]] = None + + @property + def _extra_mapping(self) -> Mapping[NormalizedName, str]: + if self.__extra_mapping is None: + self.__extra_mapping = { + canonicalize_name(extra): extra for extra in self._dist.extras + } + + return self.__extra_mapping + + @classmethod + def from_directory(cls, directory: str) -> BaseDistribution: + dist_dir = directory.rstrip(os.sep) + + # Build a PathMetadata object, from path to metadata. :wink: + base_dir, dist_dir_name = os.path.split(dist_dir) + metadata = pkg_resources.PathMetadata(base_dir, dist_dir) + + # Determine the correct Distribution object type. + if dist_dir.endswith(".egg-info"): + dist_cls = pkg_resources.Distribution + dist_name = os.path.splitext(dist_dir_name)[0] + else: + assert dist_dir.endswith(".dist-info") + dist_cls = pkg_resources.DistInfoDistribution + dist_name = os.path.splitext(dist_dir_name)[0].split("-")[0] + + dist = dist_cls(base_dir, project_name=dist_name, metadata=metadata) + return cls(dist) + + @classmethod + def from_metadata_file_contents( + cls, + metadata_contents: bytes, + filename: str, + project_name: str, + ) -> BaseDistribution: + metadata_dict = { + "METADATA": metadata_contents, + } + dist = pkg_resources.DistInfoDistribution( + location=filename, + metadata=InMemoryMetadata(metadata_dict, filename), + project_name=project_name, + ) + return cls(dist) + + @classmethod + def from_wheel(cls, wheel: Wheel, name: str) -> BaseDistribution: + try: + with wheel.as_zipfile() as zf: + info_dir, _ = parse_wheel(zf, name) + metadata_dict = { + path.split("/", 1)[-1]: read_wheel_metadata_file(zf, path) + for path in zf.namelist() + if path.startswith(f"{info_dir}/") + } + except zipfile.BadZipFile as e: + raise InvalidWheel(wheel.location, name) from e + except UnsupportedWheel as e: + raise UnsupportedWheel(f"{name} has an invalid wheel, {e}") + dist = pkg_resources.DistInfoDistribution( + location=wheel.location, + metadata=InMemoryMetadata(metadata_dict, wheel.location), + project_name=name, + ) + return cls(dist) + + @property + def location(self) -> Optional[str]: + return self._dist.location + + @property + def installed_location(self) -> Optional[str]: + egg_link = egg_link_path_from_location(self.raw_name) + if egg_link: + location = egg_link + elif self.location: + location = self.location + else: + return None + return normalize_path(location) + + @property + def info_location(self) -> Optional[str]: + return self._dist.egg_info + + @property + def installed_by_distutils(self) -> bool: + # A distutils-installed distribution is provided by FileMetadata. This + # provider has a "path" attribute not present anywhere else. Not the + # best introspection logic, but pip has been doing this for a long time. + try: + return bool(self._dist._provider.path) + except AttributeError: + return False + + @property + def canonical_name(self) -> NormalizedName: + return canonicalize_name(self._dist.project_name) + + @property + def version(self) -> Version: + return parse_version(self._dist.version) + + @property + def raw_version(self) -> str: + return self._dist.version + + def is_file(self, path: InfoPath) -> bool: + return self._dist.has_metadata(str(path)) + + def iter_distutils_script_names(self) -> Iterator[str]: + yield from self._dist.metadata_listdir("scripts") + + def read_text(self, path: InfoPath) -> str: + name = str(path) + if not self._dist.has_metadata(name): + raise FileNotFoundError(name) + content = self._dist.get_metadata(name) + if content is None: + raise NoneMetadataError(self, name) + return content + + def iter_entry_points(self) -> Iterable[BaseEntryPoint]: + for group, entries in self._dist.get_entry_map().items(): + for name, entry_point in entries.items(): + name, _, value = str(entry_point).partition("=") + yield EntryPoint(name=name.strip(), value=value.strip(), group=group) + + def _metadata_impl(self) -> email.message.Message: + """ + :raises NoneMetadataError: if the distribution reports `has_metadata()` + True but `get_metadata()` returns None. + """ + if isinstance(self._dist, pkg_resources.DistInfoDistribution): + metadata_name = "METADATA" + else: + metadata_name = "PKG-INFO" + try: + metadata = self.read_text(metadata_name) + except FileNotFoundError: + if self.location: + displaying_path = display_path(self.location) + else: + displaying_path = repr(self.location) + logger.warning("No metadata found in %s", displaying_path) + metadata = "" + feed_parser = email.parser.FeedParser() + feed_parser.feed(metadata) + return feed_parser.close() + + def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]: + if extras: + relevant_extras = set(self._extra_mapping) & set( + map(canonicalize_name, extras) + ) + extras = [self._extra_mapping[extra] for extra in relevant_extras] + return self._dist.requires(extras) + + def iter_provided_extras(self) -> Iterable[NormalizedName]: + return self._extra_mapping.keys() + + +class Environment(BaseEnvironment): + def __init__(self, ws: pkg_resources.WorkingSet) -> None: + self._ws = ws + + @classmethod + def default(cls) -> BaseEnvironment: + return cls(pkg_resources.working_set) + + @classmethod + def from_paths(cls, paths: Optional[List[str]]) -> BaseEnvironment: + return cls(pkg_resources.WorkingSet(paths)) + + def _iter_distributions(self) -> Iterator[BaseDistribution]: + for dist in self._ws: + yield Distribution(dist) + + def _search_distribution(self, name: str) -> Optional[BaseDistribution]: + """Find a distribution matching the ``name`` in the environment. + + This searches from *all* distributions available in the environment, to + match the behavior of ``pkg_resources.get_distribution()``. + """ + canonical_name = canonicalize_name(name) + for dist in self.iter_all_distributions(): + if dist.canonical_name == canonical_name: + return dist + return None + + def get_distribution(self, name: str) -> Optional[BaseDistribution]: + # Search the distribution by looking through the working set. + dist = self._search_distribution(name) + if dist: + return dist + + # If distribution could not be found, call working_set.require to + # update the working set, and try to find the distribution again. + # This might happen for e.g. when you install a package twice, once + # using setup.py develop and again using setup.py install. Now when + # running pip uninstall twice, the package gets removed from the + # working set in the first uninstall, so we have to populate the + # working set again so that pip knows about it and the packages gets + # picked up and is successfully uninstalled the second time too. + try: + # We didn't pass in any version specifiers, so this can never + # raise pkg_resources.VersionConflict. + self._ws.require(name) + except pkg_resources.DistributionNotFound: + return None + return self._search_distribution(name) diff --git a/venv/Lib/site-packages/pip/_internal/models/__init__.py b/venv/Lib/site-packages/pip/_internal/models/__init__.py new file mode 100644 index 00000000000..7855226e4b5 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/__init__.py @@ -0,0 +1,2 @@ +"""A package that contains models that represent entities. +""" diff --git a/venv/Lib/site-packages/pip/_internal/models/candidate.py b/venv/Lib/site-packages/pip/_internal/models/candidate.py new file mode 100644 index 00000000000..f27f283154a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/candidate.py @@ -0,0 +1,25 @@ +from dataclasses import dataclass + +from pip._vendor.packaging.version import Version +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.models.link import Link + + +@dataclass(frozen=True) +class InstallationCandidate: + """Represents a potential "candidate" for installation.""" + + __slots__ = ["name", "version", "link"] + + name: str + version: Version + link: Link + + def __init__(self, name: str, version: str, link: Link) -> None: + object.__setattr__(self, "name", name) + object.__setattr__(self, "version", parse_version(version)) + object.__setattr__(self, "link", link) + + def __str__(self) -> str: + return f"{self.name!r} candidate (version {self.version} at {self.link})" diff --git a/venv/Lib/site-packages/pip/_internal/models/direct_url.py b/venv/Lib/site-packages/pip/_internal/models/direct_url.py new file mode 100644 index 00000000000..fc5ec8d4aa9 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/direct_url.py @@ -0,0 +1,224 @@ +""" PEP 610 """ + +import json +import re +import urllib.parse +from dataclasses import dataclass +from typing import Any, ClassVar, Dict, Iterable, Optional, Type, TypeVar, Union + +__all__ = [ + "DirectUrl", + "DirectUrlValidationError", + "DirInfo", + "ArchiveInfo", + "VcsInfo", +] + +T = TypeVar("T") + +DIRECT_URL_METADATA_NAME = "direct_url.json" +ENV_VAR_RE = re.compile(r"^\$\{[A-Za-z0-9-_]+\}(:\$\{[A-Za-z0-9-_]+\})?$") + + +class DirectUrlValidationError(Exception): + pass + + +def _get( + d: Dict[str, Any], expected_type: Type[T], key: str, default: Optional[T] = None +) -> Optional[T]: + """Get value from dictionary and verify expected type.""" + if key not in d: + return default + value = d[key] + if not isinstance(value, expected_type): + raise DirectUrlValidationError( + f"{value!r} has unexpected type for {key} (expected {expected_type})" + ) + return value + + +def _get_required( + d: Dict[str, Any], expected_type: Type[T], key: str, default: Optional[T] = None +) -> T: + value = _get(d, expected_type, key, default) + if value is None: + raise DirectUrlValidationError(f"{key} must have a value") + return value + + +def _exactly_one_of(infos: Iterable[Optional["InfoType"]]) -> "InfoType": + infos = [info for info in infos if info is not None] + if not infos: + raise DirectUrlValidationError( + "missing one of archive_info, dir_info, vcs_info" + ) + if len(infos) > 1: + raise DirectUrlValidationError( + "more than one of archive_info, dir_info, vcs_info" + ) + assert infos[0] is not None + return infos[0] + + +def _filter_none(**kwargs: Any) -> Dict[str, Any]: + """Make dict excluding None values.""" + return {k: v for k, v in kwargs.items() if v is not None} + + +@dataclass +class VcsInfo: + name: ClassVar = "vcs_info" + + vcs: str + commit_id: str + requested_revision: Optional[str] = None + + @classmethod + def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["VcsInfo"]: + if d is None: + return None + return cls( + vcs=_get_required(d, str, "vcs"), + commit_id=_get_required(d, str, "commit_id"), + requested_revision=_get(d, str, "requested_revision"), + ) + + def _to_dict(self) -> Dict[str, Any]: + return _filter_none( + vcs=self.vcs, + requested_revision=self.requested_revision, + commit_id=self.commit_id, + ) + + +class ArchiveInfo: + name = "archive_info" + + def __init__( + self, + hash: Optional[str] = None, + hashes: Optional[Dict[str, str]] = None, + ) -> None: + # set hashes before hash, since the hash setter will further populate hashes + self.hashes = hashes + self.hash = hash + + @property + def hash(self) -> Optional[str]: + return self._hash + + @hash.setter + def hash(self, value: Optional[str]) -> None: + if value is not None: + # Auto-populate the hashes key to upgrade to the new format automatically. + # We don't back-populate the legacy hash key from hashes. + try: + hash_name, hash_value = value.split("=", 1) + except ValueError: + raise DirectUrlValidationError( + f"invalid archive_info.hash format: {value!r}" + ) + if self.hashes is None: + self.hashes = {hash_name: hash_value} + elif hash_name not in self.hashes: + self.hashes = self.hashes.copy() + self.hashes[hash_name] = hash_value + self._hash = value + + @classmethod + def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["ArchiveInfo"]: + if d is None: + return None + return cls(hash=_get(d, str, "hash"), hashes=_get(d, dict, "hashes")) + + def _to_dict(self) -> Dict[str, Any]: + return _filter_none(hash=self.hash, hashes=self.hashes) + + +@dataclass +class DirInfo: + name: ClassVar = "dir_info" + + editable: bool = False + + @classmethod + def _from_dict(cls, d: Optional[Dict[str, Any]]) -> Optional["DirInfo"]: + if d is None: + return None + return cls(editable=_get_required(d, bool, "editable", default=False)) + + def _to_dict(self) -> Dict[str, Any]: + return _filter_none(editable=self.editable or None) + + +InfoType = Union[ArchiveInfo, DirInfo, VcsInfo] + + +@dataclass +class DirectUrl: + url: str + info: InfoType + subdirectory: Optional[str] = None + + def _remove_auth_from_netloc(self, netloc: str) -> str: + if "@" not in netloc: + return netloc + user_pass, netloc_no_user_pass = netloc.split("@", 1) + if ( + isinstance(self.info, VcsInfo) + and self.info.vcs == "git" + and user_pass == "git" + ): + return netloc + if ENV_VAR_RE.match(user_pass): + return netloc + return netloc_no_user_pass + + @property + def redacted_url(self) -> str: + """url with user:password part removed unless it is formed with + environment variables as specified in PEP 610, or it is ``git`` + in the case of a git URL. + """ + purl = urllib.parse.urlsplit(self.url) + netloc = self._remove_auth_from_netloc(purl.netloc) + surl = urllib.parse.urlunsplit( + (purl.scheme, netloc, purl.path, purl.query, purl.fragment) + ) + return surl + + def validate(self) -> None: + self.from_dict(self.to_dict()) + + @classmethod + def from_dict(cls, d: Dict[str, Any]) -> "DirectUrl": + return DirectUrl( + url=_get_required(d, str, "url"), + subdirectory=_get(d, str, "subdirectory"), + info=_exactly_one_of( + [ + ArchiveInfo._from_dict(_get(d, dict, "archive_info")), + DirInfo._from_dict(_get(d, dict, "dir_info")), + VcsInfo._from_dict(_get(d, dict, "vcs_info")), + ] + ), + ) + + def to_dict(self) -> Dict[str, Any]: + res = _filter_none( + url=self.redacted_url, + subdirectory=self.subdirectory, + ) + res[self.info.name] = self.info._to_dict() + return res + + @classmethod + def from_json(cls, s: str) -> "DirectUrl": + return cls.from_dict(json.loads(s)) + + def to_json(self) -> str: + return json.dumps(self.to_dict(), sort_keys=True) + + def is_local_editable(self) -> bool: + return isinstance(self.info, DirInfo) and self.info.editable diff --git a/venv/Lib/site-packages/pip/_internal/models/format_control.py b/venv/Lib/site-packages/pip/_internal/models/format_control.py new file mode 100644 index 00000000000..ccd11272c03 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/format_control.py @@ -0,0 +1,78 @@ +from typing import FrozenSet, Optional, Set + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import CommandError + + +class FormatControl: + """Helper for managing formats from which a package can be installed.""" + + __slots__ = ["no_binary", "only_binary"] + + def __init__( + self, + no_binary: Optional[Set[str]] = None, + only_binary: Optional[Set[str]] = None, + ) -> None: + if no_binary is None: + no_binary = set() + if only_binary is None: + only_binary = set() + + self.no_binary = no_binary + self.only_binary = only_binary + + def __eq__(self, other: object) -> bool: + if not isinstance(other, self.__class__): + return NotImplemented + + if self.__slots__ != other.__slots__: + return False + + return all(getattr(self, k) == getattr(other, k) for k in self.__slots__) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self.no_binary}, {self.only_binary})" + + @staticmethod + def handle_mutual_excludes(value: str, target: Set[str], other: Set[str]) -> None: + if value.startswith("-"): + raise CommandError( + "--no-binary / --only-binary option requires 1 argument." + ) + new = value.split(",") + while ":all:" in new: + other.clear() + target.clear() + target.add(":all:") + del new[: new.index(":all:") + 1] + # Without a none, we want to discard everything as :all: covers it + if ":none:" not in new: + return + for name in new: + if name == ":none:": + target.clear() + continue + name = canonicalize_name(name) + other.discard(name) + target.add(name) + + def get_allowed_formats(self, canonical_name: str) -> FrozenSet[str]: + result = {"binary", "source"} + if canonical_name in self.only_binary: + result.discard("source") + elif canonical_name in self.no_binary: + result.discard("binary") + elif ":all:" in self.only_binary: + result.discard("source") + elif ":all:" in self.no_binary: + result.discard("binary") + return frozenset(result) + + def disallow_binaries(self) -> None: + self.handle_mutual_excludes( + ":all:", + self.no_binary, + self.only_binary, + ) diff --git a/venv/Lib/site-packages/pip/_internal/models/index.py b/venv/Lib/site-packages/pip/_internal/models/index.py new file mode 100644 index 00000000000..b94c32511f0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/index.py @@ -0,0 +1,28 @@ +import urllib.parse + + +class PackageIndex: + """Represents a Package Index and provides easier access to endpoints""" + + __slots__ = ["url", "netloc", "simple_url", "pypi_url", "file_storage_domain"] + + def __init__(self, url: str, file_storage_domain: str) -> None: + super().__init__() + self.url = url + self.netloc = urllib.parse.urlsplit(url).netloc + self.simple_url = self._url_for_path("simple") + self.pypi_url = self._url_for_path("pypi") + + # This is part of a temporary hack used to block installs of PyPI + # packages which depend on external urls only necessary until PyPI can + # block such packages themselves + self.file_storage_domain = file_storage_domain + + def _url_for_path(self, path: str) -> str: + return urllib.parse.urljoin(self.url, path) + + +PyPI = PackageIndex("https://pypi.org/", file_storage_domain="files.pythonhosted.org") +TestPyPI = PackageIndex( + "https://test.pypi.org/", file_storage_domain="test-files.pythonhosted.org" +) diff --git a/venv/Lib/site-packages/pip/_internal/models/installation_report.py b/venv/Lib/site-packages/pip/_internal/models/installation_report.py new file mode 100644 index 00000000000..b9c6330df32 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/installation_report.py @@ -0,0 +1,56 @@ +from typing import Any, Dict, Sequence + +from pip._vendor.packaging.markers import default_environment + +from pip import __version__ +from pip._internal.req.req_install import InstallRequirement + + +class InstallationReport: + def __init__(self, install_requirements: Sequence[InstallRequirement]): + self._install_requirements = install_requirements + + @classmethod + def _install_req_to_dict(cls, ireq: InstallRequirement) -> Dict[str, Any]: + assert ireq.download_info, f"No download_info for {ireq}" + res = { + # PEP 610 json for the download URL. download_info.archive_info.hashes may + # be absent when the requirement was installed from the wheel cache + # and the cache entry was populated by an older pip version that did not + # record origin.json. + "download_info": ireq.download_info.to_dict(), + # is_direct is true if the requirement was a direct URL reference (which + # includes editable requirements), and false if the requirement was + # downloaded from a PEP 503 index or --find-links. + "is_direct": ireq.is_direct, + # is_yanked is true if the requirement was yanked from the index, but + # was still selected by pip to conform to PEP 592. + "is_yanked": ireq.link.is_yanked if ireq.link else False, + # requested is true if the requirement was specified by the user (aka + # top level requirement), and false if it was installed as a dependency of a + # requirement. https://peps.python.org/pep-0376/#requested + "requested": ireq.user_supplied, + # PEP 566 json encoding for metadata + # https://www.python.org/dev/peps/pep-0566/#json-compatible-metadata + "metadata": ireq.get_dist().metadata_dict, + } + if ireq.user_supplied and ireq.extras: + # For top level requirements, the list of requested extras, if any. + res["requested_extras"] = sorted(ireq.extras) + return res + + def to_dict(self) -> Dict[str, Any]: + return { + "version": "1", + "pip_version": __version__, + "install": [ + self._install_req_to_dict(ireq) for ireq in self._install_requirements + ], + # https://peps.python.org/pep-0508/#environment-markers + # TODO: currently, the resolver uses the default environment to evaluate + # environment markers, so that is what we report here. In the future, it + # should also take into account options such as --python-version or + # --platform, perhaps under the form of an environment_override field? + # https://github.com/pypa/pip/issues/11198 + "environment": default_environment(), + } diff --git a/venv/Lib/site-packages/pip/_internal/models/link.py b/venv/Lib/site-packages/pip/_internal/models/link.py new file mode 100644 index 00000000000..2f41f2f6a09 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/link.py @@ -0,0 +1,590 @@ +import functools +import itertools +import logging +import os +import posixpath +import re +import urllib.parse +from dataclasses import dataclass +from typing import ( + TYPE_CHECKING, + Any, + Dict, + List, + Mapping, + NamedTuple, + Optional, + Tuple, + Union, +) + +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.filetypes import WHEEL_EXTENSION +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.misc import ( + pairwise, + redact_auth_from_url, + split_auth_from_netloc, + splitext, +) +from pip._internal.utils.urls import path_to_url, url_to_path + +if TYPE_CHECKING: + from pip._internal.index.collector import IndexContent + +logger = logging.getLogger(__name__) + + +# Order matters, earlier hashes have a precedence over later hashes for what +# we will pick to use. +_SUPPORTED_HASHES = ("sha512", "sha384", "sha256", "sha224", "sha1", "md5") + + +@dataclass(frozen=True) +class LinkHash: + """Links to content may have embedded hash values. This class parses those. + + `name` must be any member of `_SUPPORTED_HASHES`. + + This class can be converted to and from `ArchiveInfo`. While ArchiveInfo intends to + be JSON-serializable to conform to PEP 610, this class contains the logic for + parsing a hash name and value for correctness, and then checking whether that hash + conforms to a schema with `.is_hash_allowed()`.""" + + name: str + value: str + + _hash_url_fragment_re = re.compile( + # NB: we do not validate that the second group (.*) is a valid hex + # digest. Instead, we simply keep that string in this class, and then check it + # against Hashes when hash-checking is needed. This is easier to debug than + # proactively discarding an invalid hex digest, as we handle incorrect hashes + # and malformed hashes in the same place. + r"[#&]({choices})=([^&]*)".format( + choices="|".join(re.escape(hash_name) for hash_name in _SUPPORTED_HASHES) + ), + ) + + def __post_init__(self) -> None: + assert self.name in _SUPPORTED_HASHES + + @classmethod + @functools.lru_cache(maxsize=None) + def find_hash_url_fragment(cls, url: str) -> Optional["LinkHash"]: + """Search a string for a checksum algorithm name and encoded output value.""" + match = cls._hash_url_fragment_re.search(url) + if match is None: + return None + name, value = match.groups() + return cls(name=name, value=value) + + def as_dict(self) -> Dict[str, str]: + return {self.name: self.value} + + def as_hashes(self) -> Hashes: + """Return a Hashes instance which checks only for the current hash.""" + return Hashes({self.name: [self.value]}) + + def is_hash_allowed(self, hashes: Optional[Hashes]) -> bool: + """ + Return True if the current hash is allowed by `hashes`. + """ + if hashes is None: + return False + return hashes.is_hash_allowed(self.name, hex_digest=self.value) + + +@dataclass(frozen=True) +class MetadataFile: + """Information about a core metadata file associated with a distribution.""" + + hashes: Optional[Dict[str, str]] + + def __post_init__(self) -> None: + if self.hashes is not None: + assert all(name in _SUPPORTED_HASHES for name in self.hashes) + + +def supported_hashes(hashes: Optional[Dict[str, str]]) -> Optional[Dict[str, str]]: + # Remove any unsupported hash types from the mapping. If this leaves no + # supported hashes, return None + if hashes is None: + return None + hashes = {n: v for n, v in hashes.items() if n in _SUPPORTED_HASHES} + if not hashes: + return None + return hashes + + +def _clean_url_path_part(part: str) -> str: + """ + Clean a "part" of a URL path (i.e. after splitting on "@" characters). + """ + # We unquote prior to quoting to make sure nothing is double quoted. + return urllib.parse.quote(urllib.parse.unquote(part)) + + +def _clean_file_url_path(part: str) -> str: + """ + Clean the first part of a URL path that corresponds to a local + filesystem path (i.e. the first part after splitting on "@" characters). + """ + # We unquote prior to quoting to make sure nothing is double quoted. + # Also, on Windows the path part might contain a drive letter which + # should not be quoted. On Linux where drive letters do not + # exist, the colon should be quoted. We rely on urllib.request + # to do the right thing here. + return urllib.request.pathname2url(urllib.request.url2pathname(part)) + + +# percent-encoded: / +_reserved_chars_re = re.compile("(@|%2F)", re.IGNORECASE) + + +def _clean_url_path(path: str, is_local_path: bool) -> str: + """ + Clean the path portion of a URL. + """ + if is_local_path: + clean_func = _clean_file_url_path + else: + clean_func = _clean_url_path_part + + # Split on the reserved characters prior to cleaning so that + # revision strings in VCS URLs are properly preserved. + parts = _reserved_chars_re.split(path) + + cleaned_parts = [] + for to_clean, reserved in pairwise(itertools.chain(parts, [""])): + cleaned_parts.append(clean_func(to_clean)) + # Normalize %xx escapes (e.g. %2f -> %2F) + cleaned_parts.append(reserved.upper()) + + return "".join(cleaned_parts) + + +def _ensure_quoted_url(url: str) -> str: + """ + Make sure a link is fully quoted. + For example, if ' ' occurs in the URL, it will be replaced with "%20", + and without double-quoting other characters. + """ + # Split the URL into parts according to the general structure + # `scheme://netloc/path;parameters?query#fragment`. + result = urllib.parse.urlparse(url) + # If the netloc is empty, then the URL refers to a local filesystem path. + is_local_path = not result.netloc + path = _clean_url_path(result.path, is_local_path=is_local_path) + return urllib.parse.urlunparse(result._replace(path=path)) + + +@functools.total_ordering +class Link: + """Represents a parsed link from a Package Index's simple URL""" + + __slots__ = [ + "_parsed_url", + "_url", + "_hashes", + "comes_from", + "requires_python", + "yanked_reason", + "metadata_file_data", + "cache_link_parsing", + "egg_fragment", + ] + + def __init__( + self, + url: str, + comes_from: Optional[Union[str, "IndexContent"]] = None, + requires_python: Optional[str] = None, + yanked_reason: Optional[str] = None, + metadata_file_data: Optional[MetadataFile] = None, + cache_link_parsing: bool = True, + hashes: Optional[Mapping[str, str]] = None, + ) -> None: + """ + :param url: url of the resource pointed to (href of the link) + :param comes_from: instance of IndexContent where the link was found, + or string. + :param requires_python: String containing the `Requires-Python` + metadata field, specified in PEP 345. This may be specified by + a data-requires-python attribute in the HTML link tag, as + described in PEP 503. + :param yanked_reason: the reason the file has been yanked, if the + file has been yanked, or None if the file hasn't been yanked. + This is the value of the "data-yanked" attribute, if present, in + a simple repository HTML link. If the file has been yanked but + no reason was provided, this should be the empty string. See + PEP 592 for more information and the specification. + :param metadata_file_data: the metadata attached to the file, or None if + no such metadata is provided. This argument, if not None, indicates + that a separate metadata file exists, and also optionally supplies + hashes for that file. + :param cache_link_parsing: A flag that is used elsewhere to determine + whether resources retrieved from this link should be cached. PyPI + URLs should generally have this set to False, for example. + :param hashes: A mapping of hash names to digests to allow us to + determine the validity of a download. + """ + + # The comes_from, requires_python, and metadata_file_data arguments are + # only used by classmethods of this class, and are not used in client + # code directly. + + # url can be a UNC windows share + if url.startswith("\\\\"): + url = path_to_url(url) + + self._parsed_url = urllib.parse.urlsplit(url) + # Store the url as a private attribute to prevent accidentally + # trying to set a new value. + self._url = url + + link_hash = LinkHash.find_hash_url_fragment(url) + hashes_from_link = {} if link_hash is None else link_hash.as_dict() + if hashes is None: + self._hashes = hashes_from_link + else: + self._hashes = {**hashes, **hashes_from_link} + + self.comes_from = comes_from + self.requires_python = requires_python if requires_python else None + self.yanked_reason = yanked_reason + self.metadata_file_data = metadata_file_data + + self.cache_link_parsing = cache_link_parsing + self.egg_fragment = self._egg_fragment() + + @classmethod + def from_json( + cls, + file_data: Dict[str, Any], + page_url: str, + ) -> Optional["Link"]: + """ + Convert an pypi json document from a simple repository page into a Link. + """ + file_url = file_data.get("url") + if file_url is None: + return None + + url = _ensure_quoted_url(urllib.parse.urljoin(page_url, file_url)) + pyrequire = file_data.get("requires-python") + yanked_reason = file_data.get("yanked") + hashes = file_data.get("hashes", {}) + + # PEP 714: Indexes must use the name core-metadata, but + # clients should support the old name as a fallback for compatibility. + metadata_info = file_data.get("core-metadata") + if metadata_info is None: + metadata_info = file_data.get("dist-info-metadata") + + # The metadata info value may be a boolean, or a dict of hashes. + if isinstance(metadata_info, dict): + # The file exists, and hashes have been supplied + metadata_file_data = MetadataFile(supported_hashes(metadata_info)) + elif metadata_info: + # The file exists, but there are no hashes + metadata_file_data = MetadataFile(None) + else: + # False or not present: the file does not exist + metadata_file_data = None + + # The Link.yanked_reason expects an empty string instead of a boolean. + if yanked_reason and not isinstance(yanked_reason, str): + yanked_reason = "" + # The Link.yanked_reason expects None instead of False. + elif not yanked_reason: + yanked_reason = None + + return cls( + url, + comes_from=page_url, + requires_python=pyrequire, + yanked_reason=yanked_reason, + hashes=hashes, + metadata_file_data=metadata_file_data, + ) + + @classmethod + def from_element( + cls, + anchor_attribs: Dict[str, Optional[str]], + page_url: str, + base_url: str, + ) -> Optional["Link"]: + """ + Convert an anchor element's attributes in a simple repository page to a Link. + """ + href = anchor_attribs.get("href") + if not href: + return None + + url = _ensure_quoted_url(urllib.parse.urljoin(base_url, href)) + pyrequire = anchor_attribs.get("data-requires-python") + yanked_reason = anchor_attribs.get("data-yanked") + + # PEP 714: Indexes must use the name data-core-metadata, but + # clients should support the old name as a fallback for compatibility. + metadata_info = anchor_attribs.get("data-core-metadata") + if metadata_info is None: + metadata_info = anchor_attribs.get("data-dist-info-metadata") + # The metadata info value may be the string "true", or a string of + # the form "hashname=hashval" + if metadata_info == "true": + # The file exists, but there are no hashes + metadata_file_data = MetadataFile(None) + elif metadata_info is None: + # The file does not exist + metadata_file_data = None + else: + # The file exists, and hashes have been supplied + hashname, sep, hashval = metadata_info.partition("=") + if sep == "=": + metadata_file_data = MetadataFile(supported_hashes({hashname: hashval})) + else: + # Error - data is wrong. Treat as no hashes supplied. + logger.debug( + "Index returned invalid data-dist-info-metadata value: %s", + metadata_info, + ) + metadata_file_data = MetadataFile(None) + + return cls( + url, + comes_from=page_url, + requires_python=pyrequire, + yanked_reason=yanked_reason, + metadata_file_data=metadata_file_data, + ) + + def __str__(self) -> str: + if self.requires_python: + rp = f" (requires-python:{self.requires_python})" + else: + rp = "" + if self.comes_from: + return f"{redact_auth_from_url(self._url)} (from {self.comes_from}){rp}" + else: + return redact_auth_from_url(str(self._url)) + + def __repr__(self) -> str: + return f"" + + def __hash__(self) -> int: + return hash(self.url) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, Link): + return NotImplemented + return self.url == other.url + + def __lt__(self, other: Any) -> bool: + if not isinstance(other, Link): + return NotImplemented + return self.url < other.url + + @property + def url(self) -> str: + return self._url + + @property + def filename(self) -> str: + path = self.path.rstrip("/") + name = posixpath.basename(path) + if not name: + # Make sure we don't leak auth information if the netloc + # includes a username and password. + netloc, user_pass = split_auth_from_netloc(self.netloc) + return netloc + + name = urllib.parse.unquote(name) + assert name, f"URL {self._url!r} produced no filename" + return name + + @property + def file_path(self) -> str: + return url_to_path(self.url) + + @property + def scheme(self) -> str: + return self._parsed_url.scheme + + @property + def netloc(self) -> str: + """ + This can contain auth information. + """ + return self._parsed_url.netloc + + @property + def path(self) -> str: + return urllib.parse.unquote(self._parsed_url.path) + + def splitext(self) -> Tuple[str, str]: + return splitext(posixpath.basename(self.path.rstrip("/"))) + + @property + def ext(self) -> str: + return self.splitext()[1] + + @property + def url_without_fragment(self) -> str: + scheme, netloc, path, query, fragment = self._parsed_url + return urllib.parse.urlunsplit((scheme, netloc, path, query, "")) + + _egg_fragment_re = re.compile(r"[#&]egg=([^&]*)") + + # Per PEP 508. + _project_name_re = re.compile( + r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", re.IGNORECASE + ) + + def _egg_fragment(self) -> Optional[str]: + match = self._egg_fragment_re.search(self._url) + if not match: + return None + + # An egg fragment looks like a PEP 508 project name, along with + # an optional extras specifier. Anything else is invalid. + project_name = match.group(1) + if not self._project_name_re.match(project_name): + deprecated( + reason=f"{self} contains an egg fragment with a non-PEP 508 name", + replacement="to use the req @ url syntax, and remove the egg fragment", + gone_in="25.0", + issue=11617, + ) + + return project_name + + _subdirectory_fragment_re = re.compile(r"[#&]subdirectory=([^&]*)") + + @property + def subdirectory_fragment(self) -> Optional[str]: + match = self._subdirectory_fragment_re.search(self._url) + if not match: + return None + return match.group(1) + + def metadata_link(self) -> Optional["Link"]: + """Return a link to the associated core metadata file (if any).""" + if self.metadata_file_data is None: + return None + metadata_url = f"{self.url_without_fragment}.metadata" + if self.metadata_file_data.hashes is None: + return Link(metadata_url) + return Link(metadata_url, hashes=self.metadata_file_data.hashes) + + def as_hashes(self) -> Hashes: + return Hashes({k: [v] for k, v in self._hashes.items()}) + + @property + def hash(self) -> Optional[str]: + return next(iter(self._hashes.values()), None) + + @property + def hash_name(self) -> Optional[str]: + return next(iter(self._hashes), None) + + @property + def show_url(self) -> str: + return posixpath.basename(self._url.split("#", 1)[0].split("?", 1)[0]) + + @property + def is_file(self) -> bool: + return self.scheme == "file" + + def is_existing_dir(self) -> bool: + return self.is_file and os.path.isdir(self.file_path) + + @property + def is_wheel(self) -> bool: + return self.ext == WHEEL_EXTENSION + + @property + def is_vcs(self) -> bool: + from pip._internal.vcs import vcs + + return self.scheme in vcs.all_schemes + + @property + def is_yanked(self) -> bool: + return self.yanked_reason is not None + + @property + def has_hash(self) -> bool: + return bool(self._hashes) + + def is_hash_allowed(self, hashes: Optional[Hashes]) -> bool: + """ + Return True if the link has a hash and it is allowed by `hashes`. + """ + if hashes is None: + return False + return any(hashes.is_hash_allowed(k, v) for k, v in self._hashes.items()) + + +class _CleanResult(NamedTuple): + """Convert link for equivalency check. + + This is used in the resolver to check whether two URL-specified requirements + likely point to the same distribution and can be considered equivalent. This + equivalency logic avoids comparing URLs literally, which can be too strict + (e.g. "a=1&b=2" vs "b=2&a=1") and produce conflicts unexpecting to users. + + Currently this does three things: + + 1. Drop the basic auth part. This is technically wrong since a server can + serve different content based on auth, but if it does that, it is even + impossible to guarantee two URLs without auth are equivalent, since + the user can input different auth information when prompted. So the + practical solution is to assume the auth doesn't affect the response. + 2. Parse the query to avoid the ordering issue. Note that ordering under the + same key in the query are NOT cleaned; i.e. "a=1&a=2" and "a=2&a=1" are + still considered different. + 3. Explicitly drop most of the fragment part, except ``subdirectory=`` and + hash values, since it should have no impact the downloaded content. Note + that this drops the "egg=" part historically used to denote the requested + project (and extras), which is wrong in the strictest sense, but too many + people are supplying it inconsistently to cause superfluous resolution + conflicts, so we choose to also ignore them. + """ + + parsed: urllib.parse.SplitResult + query: Dict[str, List[str]] + subdirectory: str + hashes: Dict[str, str] + + +def _clean_link(link: Link) -> _CleanResult: + parsed = link._parsed_url + netloc = parsed.netloc.rsplit("@", 1)[-1] + # According to RFC 8089, an empty host in file: means localhost. + if parsed.scheme == "file" and not netloc: + netloc = "localhost" + fragment = urllib.parse.parse_qs(parsed.fragment) + if "egg" in fragment: + logger.debug("Ignoring egg= fragment in %s", link) + try: + # If there are multiple subdirectory values, use the first one. + # This matches the behavior of Link.subdirectory_fragment. + subdirectory = fragment["subdirectory"][0] + except (IndexError, KeyError): + subdirectory = "" + # If there are multiple hash values under the same algorithm, use the + # first one. This matches the behavior of Link.hash_value. + hashes = {k: fragment[k][0] for k in _SUPPORTED_HASHES if k in fragment} + return _CleanResult( + parsed=parsed._replace(netloc=netloc, query="", fragment=""), + query=urllib.parse.parse_qs(parsed.query), + subdirectory=subdirectory, + hashes=hashes, + ) + + +@functools.lru_cache(maxsize=None) +def links_equivalent(link1: Link, link2: Link) -> bool: + return _clean_link(link1) == _clean_link(link2) diff --git a/venv/Lib/site-packages/pip/_internal/models/scheme.py b/venv/Lib/site-packages/pip/_internal/models/scheme.py new file mode 100644 index 00000000000..06a9a550e34 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/scheme.py @@ -0,0 +1,25 @@ +""" +For types associated with installation schemes. + +For a general overview of available schemes and their context, see +https://docs.python.org/3/install/index.html#alternate-installation. +""" + +from dataclasses import dataclass + +SCHEME_KEYS = ["platlib", "purelib", "headers", "scripts", "data"] + + +@dataclass(frozen=True) +class Scheme: + """A Scheme holds paths which are used as the base directories for + artifacts associated with a Python package. + """ + + __slots__ = SCHEME_KEYS + + platlib: str + purelib: str + headers: str + scripts: str + data: str diff --git a/venv/Lib/site-packages/pip/_internal/models/search_scope.py b/venv/Lib/site-packages/pip/_internal/models/search_scope.py new file mode 100644 index 00000000000..ee7bc86229a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/search_scope.py @@ -0,0 +1,127 @@ +import itertools +import logging +import os +import posixpath +import urllib.parse +from dataclasses import dataclass +from typing import List + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.models.index import PyPI +from pip._internal.utils.compat import has_tls +from pip._internal.utils.misc import normalize_path, redact_auth_from_url + +logger = logging.getLogger(__name__) + + +@dataclass(frozen=True) +class SearchScope: + """ + Encapsulates the locations that pip is configured to search. + """ + + __slots__ = ["find_links", "index_urls", "no_index"] + + find_links: List[str] + index_urls: List[str] + no_index: bool + + @classmethod + def create( + cls, + find_links: List[str], + index_urls: List[str], + no_index: bool, + ) -> "SearchScope": + """ + Create a SearchScope object after normalizing the `find_links`. + """ + # Build find_links. If an argument starts with ~, it may be + # a local file relative to a home directory. So try normalizing + # it and if it exists, use the normalized version. + # This is deliberately conservative - it might be fine just to + # blindly normalize anything starting with a ~... + built_find_links: List[str] = [] + for link in find_links: + if link.startswith("~"): + new_link = normalize_path(link) + if os.path.exists(new_link): + link = new_link + built_find_links.append(link) + + # If we don't have TLS enabled, then WARN if anyplace we're looking + # relies on TLS. + if not has_tls(): + for link in itertools.chain(index_urls, built_find_links): + parsed = urllib.parse.urlparse(link) + if parsed.scheme == "https": + logger.warning( + "pip is configured with locations that require " + "TLS/SSL, however the ssl module in Python is not " + "available." + ) + break + + return cls( + find_links=built_find_links, + index_urls=index_urls, + no_index=no_index, + ) + + def get_formatted_locations(self) -> str: + lines = [] + redacted_index_urls = [] + if self.index_urls and self.index_urls != [PyPI.simple_url]: + for url in self.index_urls: + redacted_index_url = redact_auth_from_url(url) + + # Parse the URL + purl = urllib.parse.urlsplit(redacted_index_url) + + # URL is generally invalid if scheme and netloc is missing + # there are issues with Python and URL parsing, so this test + # is a bit crude. See bpo-20271, bpo-23505. Python doesn't + # always parse invalid URLs correctly - it should raise + # exceptions for malformed URLs + if not purl.scheme and not purl.netloc: + logger.warning( + 'The index url "%s" seems invalid, please provide a scheme.', + redacted_index_url, + ) + + redacted_index_urls.append(redacted_index_url) + + lines.append( + "Looking in indexes: {}".format(", ".join(redacted_index_urls)) + ) + + if self.find_links: + lines.append( + "Looking in links: {}".format( + ", ".join(redact_auth_from_url(url) for url in self.find_links) + ) + ) + return "\n".join(lines) + + def get_index_urls_locations(self, project_name: str) -> List[str]: + """Returns the locations found via self.index_urls + + Checks the url_name on the main (first in the list) index and + use this url_name to produce all locations + """ + + def mkurl_pypi_url(url: str) -> str: + loc = posixpath.join( + url, urllib.parse.quote(canonicalize_name(project_name)) + ) + # For maximum compatibility with easy_install, ensure the path + # ends in a trailing slash. Although this isn't in the spec + # (and PyPI can handle it without the slash) some other index + # implementations might break if they relied on easy_install's + # behavior. + if not loc.endswith("/"): + loc = loc + "/" + return loc + + return [mkurl_pypi_url(url) for url in self.index_urls] diff --git a/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py b/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py new file mode 100644 index 00000000000..e9b50aa5175 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py @@ -0,0 +1,53 @@ +from typing import Optional + +from pip._internal.models.format_control import FormatControl + + +# TODO: This needs Python 3.10's improved slots support for dataclasses +# to be converted into a dataclass. +class SelectionPreferences: + """ + Encapsulates the candidate selection preferences for downloading + and installing files. + """ + + __slots__ = [ + "allow_yanked", + "allow_all_prereleases", + "format_control", + "prefer_binary", + "ignore_requires_python", + ] + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + def __init__( + self, + allow_yanked: bool, + allow_all_prereleases: bool = False, + format_control: Optional[FormatControl] = None, + prefer_binary: bool = False, + ignore_requires_python: Optional[bool] = None, + ) -> None: + """Create a SelectionPreferences object. + + :param allow_yanked: Whether files marked as yanked (in the sense + of PEP 592) are permitted to be candidates for install. + :param format_control: A FormatControl object or None. Used to control + the selection of source packages / binary packages when consulting + the index and links. + :param prefer_binary: Whether to prefer an old, but valid, binary + dist over a new source dist. + :param ignore_requires_python: Whether to ignore incompatible + "Requires-Python" values in links. Defaults to False. + """ + if ignore_requires_python is None: + ignore_requires_python = False + + self.allow_yanked = allow_yanked + self.allow_all_prereleases = allow_all_prereleases + self.format_control = format_control + self.prefer_binary = prefer_binary + self.ignore_requires_python = ignore_requires_python diff --git a/venv/Lib/site-packages/pip/_internal/models/target_python.py b/venv/Lib/site-packages/pip/_internal/models/target_python.py new file mode 100644 index 00000000000..88925a9fd01 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/target_python.py @@ -0,0 +1,121 @@ +import sys +from typing import List, Optional, Set, Tuple + +from pip._vendor.packaging.tags import Tag + +from pip._internal.utils.compatibility_tags import get_supported, version_info_to_nodot +from pip._internal.utils.misc import normalize_version_info + + +class TargetPython: + """ + Encapsulates the properties of a Python interpreter one is targeting + for a package install, download, etc. + """ + + __slots__ = [ + "_given_py_version_info", + "abis", + "implementation", + "platforms", + "py_version", + "py_version_info", + "_valid_tags", + "_valid_tags_set", + ] + + def __init__( + self, + platforms: Optional[List[str]] = None, + py_version_info: Optional[Tuple[int, ...]] = None, + abis: Optional[List[str]] = None, + implementation: Optional[str] = None, + ) -> None: + """ + :param platforms: A list of strings or None. If None, searches for + packages that are supported by the current system. Otherwise, will + find packages that can be built on the platforms passed in. These + packages will only be downloaded for distribution: they will + not be built locally. + :param py_version_info: An optional tuple of ints representing the + Python version information to use (e.g. `sys.version_info[:3]`). + This can have length 1, 2, or 3 when provided. + :param abis: A list of strings or None. This is passed to + compatibility_tags.py's get_supported() function as is. + :param implementation: A string or None. This is passed to + compatibility_tags.py's get_supported() function as is. + """ + # Store the given py_version_info for when we call get_supported(). + self._given_py_version_info = py_version_info + + if py_version_info is None: + py_version_info = sys.version_info[:3] + else: + py_version_info = normalize_version_info(py_version_info) + + py_version = ".".join(map(str, py_version_info[:2])) + + self.abis = abis + self.implementation = implementation + self.platforms = platforms + self.py_version = py_version + self.py_version_info = py_version_info + + # This is used to cache the return value of get_(un)sorted_tags. + self._valid_tags: Optional[List[Tag]] = None + self._valid_tags_set: Optional[Set[Tag]] = None + + def format_given(self) -> str: + """ + Format the given, non-None attributes for display. + """ + display_version = None + if self._given_py_version_info is not None: + display_version = ".".join( + str(part) for part in self._given_py_version_info + ) + + key_values = [ + ("platforms", self.platforms), + ("version_info", display_version), + ("abis", self.abis), + ("implementation", self.implementation), + ] + return " ".join( + f"{key}={value!r}" for key, value in key_values if value is not None + ) + + def get_sorted_tags(self) -> List[Tag]: + """ + Return the supported PEP 425 tags to check wheel candidates against. + + The tags are returned in order of preference (most preferred first). + """ + if self._valid_tags is None: + # Pass versions=None if no py_version_info was given since + # versions=None uses special default logic. + py_version_info = self._given_py_version_info + if py_version_info is None: + version = None + else: + version = version_info_to_nodot(py_version_info) + + tags = get_supported( + version=version, + platforms=self.platforms, + abis=self.abis, + impl=self.implementation, + ) + self._valid_tags = tags + + return self._valid_tags + + def get_unsorted_tags(self) -> Set[Tag]: + """Exactly the same as get_sorted_tags, but returns a set. + + This is important for performance. + """ + if self._valid_tags_set is None: + self._valid_tags_set = set(self.get_sorted_tags()) + + return self._valid_tags_set diff --git a/venv/Lib/site-packages/pip/_internal/models/wheel.py b/venv/Lib/site-packages/pip/_internal/models/wheel.py new file mode 100644 index 00000000000..36d4d2e785c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/models/wheel.py @@ -0,0 +1,93 @@ +"""Represents a wheel file and provides access to the various parts of the +name that have meaning. +""" + +import re +from typing import Dict, Iterable, List + +from pip._vendor.packaging.tags import Tag + +from pip._internal.exceptions import InvalidWheelFilename + + +class Wheel: + """A wheel file""" + + wheel_file_re = re.compile( + r"""^(?P(?P[^\s-]+?)-(?P[^\s-]*?)) + ((-(?P\d[^-]*?))?-(?P[^\s-]+?)-(?P[^\s-]+?)-(?P[^\s-]+?) + \.whl|\.dist-info)$""", + re.VERBOSE, + ) + + def __init__(self, filename: str) -> None: + """ + :raises InvalidWheelFilename: when the filename is invalid for a wheel + """ + wheel_info = self.wheel_file_re.match(filename) + if not wheel_info: + raise InvalidWheelFilename(f"{filename} is not a valid wheel filename.") + self.filename = filename + self.name = wheel_info.group("name").replace("_", "-") + # we'll assume "_" means "-" due to wheel naming scheme + # (https://github.com/pypa/pip/issues/1150) + self.version = wheel_info.group("ver").replace("_", "-") + self.build_tag = wheel_info.group("build") + self.pyversions = wheel_info.group("pyver").split(".") + self.abis = wheel_info.group("abi").split(".") + self.plats = wheel_info.group("plat").split(".") + + # All the tag combinations from this file + self.file_tags = { + Tag(x, y, z) for x in self.pyversions for y in self.abis for z in self.plats + } + + def get_formatted_file_tags(self) -> List[str]: + """Return the wheel's tags as a sorted list of strings.""" + return sorted(str(tag) for tag in self.file_tags) + + def support_index_min(self, tags: List[Tag]) -> int: + """Return the lowest index that one of the wheel's file_tag combinations + achieves in the given list of supported tags. + + For example, if there are 8 supported tags and one of the file tags + is first in the list, then return 0. + + :param tags: the PEP 425 tags to check the wheel against, in order + with most preferred first. + + :raises ValueError: If none of the wheel's file tags match one of + the supported tags. + """ + try: + return next(i for i, t in enumerate(tags) if t in self.file_tags) + except StopIteration: + raise ValueError() + + def find_most_preferred_tag( + self, tags: List[Tag], tag_to_priority: Dict[Tag, int] + ) -> int: + """Return the priority of the most preferred tag that one of the wheel's file + tag combinations achieves in the given list of supported tags using the given + tag_to_priority mapping, where lower priorities are more-preferred. + + This is used in place of support_index_min in some cases in order to avoid + an expensive linear scan of a large list of tags. + + :param tags: the PEP 425 tags to check the wheel against. + :param tag_to_priority: a mapping from tag to priority of that tag, where + lower is more preferred. + + :raises ValueError: If none of the wheel's file tags match one of + the supported tags. + """ + return min( + tag_to_priority[tag] for tag in self.file_tags if tag in tag_to_priority + ) + + def supported(self, tags: Iterable[Tag]) -> bool: + """Return whether the wheel is compatible with one of the given tags. + + :param tags: the PEP 425 tags to check the wheel against. + """ + return not self.file_tags.isdisjoint(tags) diff --git a/venv/Lib/site-packages/pip/_internal/network/__init__.py b/venv/Lib/site-packages/pip/_internal/network/__init__.py new file mode 100644 index 00000000000..b51bde91b2e --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/__init__.py @@ -0,0 +1,2 @@ +"""Contains purely network-related utilities. +""" diff --git a/venv/Lib/site-packages/pip/_internal/network/auth.py b/venv/Lib/site-packages/pip/_internal/network/auth.py new file mode 100644 index 00000000000..1a2606ed080 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/auth.py @@ -0,0 +1,566 @@ +"""Network Authentication Helpers + +Contains interface (MultiDomainBasicAuth) and associated glue code for +providing credentials in the context of network requests. +""" + +import logging +import os +import shutil +import subprocess +import sysconfig +import typing +import urllib.parse +from abc import ABC, abstractmethod +from functools import lru_cache +from os.path import commonprefix +from pathlib import Path +from typing import Any, Dict, List, NamedTuple, Optional, Tuple + +from pip._vendor.requests.auth import AuthBase, HTTPBasicAuth +from pip._vendor.requests.models import Request, Response +from pip._vendor.requests.utils import get_netrc_auth + +from pip._internal.utils.logging import getLogger +from pip._internal.utils.misc import ( + ask, + ask_input, + ask_password, + remove_auth_from_url, + split_auth_netloc_from_url, +) +from pip._internal.vcs.versioncontrol import AuthInfo + +logger = getLogger(__name__) + +KEYRING_DISABLED = False + + +class Credentials(NamedTuple): + url: str + username: str + password: str + + +class KeyRingBaseProvider(ABC): + """Keyring base provider interface""" + + has_keyring: bool + + @abstractmethod + def get_auth_info( + self, url: str, username: Optional[str] + ) -> Optional[AuthInfo]: ... + + @abstractmethod + def save_auth_info(self, url: str, username: str, password: str) -> None: ... + + +class KeyRingNullProvider(KeyRingBaseProvider): + """Keyring null provider""" + + has_keyring = False + + def get_auth_info(self, url: str, username: Optional[str]) -> Optional[AuthInfo]: + return None + + def save_auth_info(self, url: str, username: str, password: str) -> None: + return None + + +class KeyRingPythonProvider(KeyRingBaseProvider): + """Keyring interface which uses locally imported `keyring`""" + + has_keyring = True + + def __init__(self) -> None: + import keyring + + self.keyring = keyring + + def get_auth_info(self, url: str, username: Optional[str]) -> Optional[AuthInfo]: + # Support keyring's get_credential interface which supports getting + # credentials without a username. This is only available for + # keyring>=15.2.0. + if hasattr(self.keyring, "get_credential"): + logger.debug("Getting credentials from keyring for %s", url) + cred = self.keyring.get_credential(url, username) + if cred is not None: + return cred.username, cred.password + return None + + if username is not None: + logger.debug("Getting password from keyring for %s", url) + password = self.keyring.get_password(url, username) + if password: + return username, password + return None + + def save_auth_info(self, url: str, username: str, password: str) -> None: + self.keyring.set_password(url, username, password) + + +class KeyRingCliProvider(KeyRingBaseProvider): + """Provider which uses `keyring` cli + + Instead of calling the keyring package installed alongside pip + we call keyring on the command line which will enable pip to + use which ever installation of keyring is available first in + PATH. + """ + + has_keyring = True + + def __init__(self, cmd: str) -> None: + self.keyring = cmd + + def get_auth_info(self, url: str, username: Optional[str]) -> Optional[AuthInfo]: + # This is the default implementation of keyring.get_credential + # https://github.com/jaraco/keyring/blob/97689324abcf01bd1793d49063e7ca01e03d7d07/keyring/backend.py#L134-L139 + if username is not None: + password = self._get_password(url, username) + if password is not None: + return username, password + return None + + def save_auth_info(self, url: str, username: str, password: str) -> None: + return self._set_password(url, username, password) + + def _get_password(self, service_name: str, username: str) -> Optional[str]: + """Mirror the implementation of keyring.get_password using cli""" + if self.keyring is None: + return None + + cmd = [self.keyring, "get", service_name, username] + env = os.environ.copy() + env["PYTHONIOENCODING"] = "utf-8" + res = subprocess.run( + cmd, + stdin=subprocess.DEVNULL, + stdout=subprocess.PIPE, + env=env, + ) + if res.returncode: + return None + return res.stdout.decode("utf-8").strip(os.linesep) + + def _set_password(self, service_name: str, username: str, password: str) -> None: + """Mirror the implementation of keyring.set_password using cli""" + if self.keyring is None: + return None + env = os.environ.copy() + env["PYTHONIOENCODING"] = "utf-8" + subprocess.run( + [self.keyring, "set", service_name, username], + input=f"{password}{os.linesep}".encode(), + env=env, + check=True, + ) + return None + + +@lru_cache(maxsize=None) +def get_keyring_provider(provider: str) -> KeyRingBaseProvider: + logger.verbose("Keyring provider requested: %s", provider) + + # keyring has previously failed and been disabled + if KEYRING_DISABLED: + provider = "disabled" + if provider in ["import", "auto"]: + try: + impl = KeyRingPythonProvider() + logger.verbose("Keyring provider set: import") + return impl + except ImportError: + pass + except Exception as exc: + # In the event of an unexpected exception + # we should warn the user + msg = "Installed copy of keyring fails with exception %s" + if provider == "auto": + msg = msg + ", trying to find a keyring executable as a fallback" + logger.warning(msg, exc, exc_info=logger.isEnabledFor(logging.DEBUG)) + if provider in ["subprocess", "auto"]: + cli = shutil.which("keyring") + if cli and cli.startswith(sysconfig.get_path("scripts")): + # all code within this function is stolen from shutil.which implementation + @typing.no_type_check + def PATH_as_shutil_which_determines_it() -> str: + path = os.environ.get("PATH", None) + if path is None: + try: + path = os.confstr("CS_PATH") + except (AttributeError, ValueError): + # os.confstr() or CS_PATH is not available + path = os.defpath + # bpo-35755: Don't use os.defpath if the PATH environment variable is + # set to an empty string + + return path + + scripts = Path(sysconfig.get_path("scripts")) + + paths = [] + for path in PATH_as_shutil_which_determines_it().split(os.pathsep): + p = Path(path) + try: + if not p.samefile(scripts): + paths.append(path) + except FileNotFoundError: + pass + + path = os.pathsep.join(paths) + + cli = shutil.which("keyring", path=path) + + if cli: + logger.verbose("Keyring provider set: subprocess with executable %s", cli) + return KeyRingCliProvider(cli) + + logger.verbose("Keyring provider set: disabled") + return KeyRingNullProvider() + + +class MultiDomainBasicAuth(AuthBase): + def __init__( + self, + prompting: bool = True, + index_urls: Optional[List[str]] = None, + keyring_provider: str = "auto", + ) -> None: + self.prompting = prompting + self.index_urls = index_urls + self.keyring_provider = keyring_provider # type: ignore[assignment] + self.passwords: Dict[str, AuthInfo] = {} + # When the user is prompted to enter credentials and keyring is + # available, we will offer to save them. If the user accepts, + # this value is set to the credentials they entered. After the + # request authenticates, the caller should call + # ``save_credentials`` to save these. + self._credentials_to_save: Optional[Credentials] = None + + @property + def keyring_provider(self) -> KeyRingBaseProvider: + return get_keyring_provider(self._keyring_provider) + + @keyring_provider.setter + def keyring_provider(self, provider: str) -> None: + # The free function get_keyring_provider has been decorated with + # functools.cache. If an exception occurs in get_keyring_auth that + # cache will be cleared and keyring disabled, take that into account + # if you want to remove this indirection. + self._keyring_provider = provider + + @property + def use_keyring(self) -> bool: + # We won't use keyring when --no-input is passed unless + # a specific provider is requested because it might require + # user interaction + return self.prompting or self._keyring_provider not in ["auto", "disabled"] + + def _get_keyring_auth( + self, + url: Optional[str], + username: Optional[str], + ) -> Optional[AuthInfo]: + """Return the tuple auth for a given url from keyring.""" + # Do nothing if no url was provided + if not url: + return None + + try: + return self.keyring_provider.get_auth_info(url, username) + except Exception as exc: + # Log the full exception (with stacktrace) at debug, so it'll only + # show up when running in verbose mode. + logger.debug("Keyring is skipped due to an exception", exc_info=True) + # Always log a shortened version of the exception. + logger.warning( + "Keyring is skipped due to an exception: %s", + str(exc), + ) + global KEYRING_DISABLED + KEYRING_DISABLED = True + get_keyring_provider.cache_clear() + return None + + def _get_index_url(self, url: str) -> Optional[str]: + """Return the original index URL matching the requested URL. + + Cached or dynamically generated credentials may work against + the original index URL rather than just the netloc. + + The provided url should have had its username and password + removed already. If the original index url had credentials then + they will be included in the return value. + + Returns None if no matching index was found, or if --no-index + was specified by the user. + """ + if not url or not self.index_urls: + return None + + url = remove_auth_from_url(url).rstrip("/") + "/" + parsed_url = urllib.parse.urlsplit(url) + + candidates = [] + + for index in self.index_urls: + index = index.rstrip("/") + "/" + parsed_index = urllib.parse.urlsplit(remove_auth_from_url(index)) + if parsed_url == parsed_index: + return index + + if parsed_url.netloc != parsed_index.netloc: + continue + + candidate = urllib.parse.urlsplit(index) + candidates.append(candidate) + + if not candidates: + return None + + candidates.sort( + reverse=True, + key=lambda candidate: commonprefix( + [ + parsed_url.path, + candidate.path, + ] + ).rfind("/"), + ) + + return urllib.parse.urlunsplit(candidates[0]) + + def _get_new_credentials( + self, + original_url: str, + *, + allow_netrc: bool = True, + allow_keyring: bool = False, + ) -> AuthInfo: + """Find and return credentials for the specified URL.""" + # Split the credentials and netloc from the url. + url, netloc, url_user_password = split_auth_netloc_from_url( + original_url, + ) + + # Start with the credentials embedded in the url + username, password = url_user_password + if username is not None and password is not None: + logger.debug("Found credentials in url for %s", netloc) + return url_user_password + + # Find a matching index url for this request + index_url = self._get_index_url(url) + if index_url: + # Split the credentials from the url. + index_info = split_auth_netloc_from_url(index_url) + if index_info: + index_url, _, index_url_user_password = index_info + logger.debug("Found index url %s", index_url) + + # If an index URL was found, try its embedded credentials + if index_url and index_url_user_password[0] is not None: + username, password = index_url_user_password + if username is not None and password is not None: + logger.debug("Found credentials in index url for %s", netloc) + return index_url_user_password + + # Get creds from netrc if we still don't have them + if allow_netrc: + netrc_auth = get_netrc_auth(original_url) + if netrc_auth: + logger.debug("Found credentials in netrc for %s", netloc) + return netrc_auth + + # If we don't have a password and keyring is available, use it. + if allow_keyring: + # The index url is more specific than the netloc, so try it first + # fmt: off + kr_auth = ( + self._get_keyring_auth(index_url, username) or + self._get_keyring_auth(netloc, username) + ) + # fmt: on + if kr_auth: + logger.debug("Found credentials in keyring for %s", netloc) + return kr_auth + + return username, password + + def _get_url_and_credentials( + self, original_url: str + ) -> Tuple[str, Optional[str], Optional[str]]: + """Return the credentials to use for the provided URL. + + If allowed, netrc and keyring may be used to obtain the + correct credentials. + + Returns (url_without_credentials, username, password). Note + that even if the original URL contains credentials, this + function may return a different username and password. + """ + url, netloc, _ = split_auth_netloc_from_url(original_url) + + # Try to get credentials from original url + username, password = self._get_new_credentials(original_url) + + # If credentials not found, use any stored credentials for this netloc. + # Do this if either the username or the password is missing. + # This accounts for the situation in which the user has specified + # the username in the index url, but the password comes from keyring. + if (username is None or password is None) and netloc in self.passwords: + un, pw = self.passwords[netloc] + # It is possible that the cached credentials are for a different username, + # in which case the cache should be ignored. + if username is None or username == un: + username, password = un, pw + + if username is not None or password is not None: + # Convert the username and password if they're None, so that + # this netloc will show up as "cached" in the conditional above. + # Further, HTTPBasicAuth doesn't accept None, so it makes sense to + # cache the value that is going to be used. + username = username or "" + password = password or "" + + # Store any acquired credentials. + self.passwords[netloc] = (username, password) + + assert ( + # Credentials were found + (username is not None and password is not None) + # Credentials were not found + or (username is None and password is None) + ), f"Could not load credentials from url: {original_url}" + + return url, username, password + + def __call__(self, req: Request) -> Request: + # Get credentials for this request + url, username, password = self._get_url_and_credentials(req.url) + + # Set the url of the request to the url without any credentials + req.url = url + + if username is not None and password is not None: + # Send the basic auth with this request + req = HTTPBasicAuth(username, password)(req) + + # Attach a hook to handle 401 responses + req.register_hook("response", self.handle_401) + + return req + + # Factored out to allow for easy patching in tests + def _prompt_for_password( + self, netloc: str + ) -> Tuple[Optional[str], Optional[str], bool]: + username = ask_input(f"User for {netloc}: ") if self.prompting else None + if not username: + return None, None, False + if self.use_keyring: + auth = self._get_keyring_auth(netloc, username) + if auth and auth[0] is not None and auth[1] is not None: + return auth[0], auth[1], False + password = ask_password("Password: ") + return username, password, True + + # Factored out to allow for easy patching in tests + def _should_save_password_to_keyring(self) -> bool: + if ( + not self.prompting + or not self.use_keyring + or not self.keyring_provider.has_keyring + ): + return False + return ask("Save credentials to keyring [y/N]: ", ["y", "n"]) == "y" + + def handle_401(self, resp: Response, **kwargs: Any) -> Response: + # We only care about 401 responses, anything else we want to just + # pass through the actual response + if resp.status_code != 401: + return resp + + username, password = None, None + + # Query the keyring for credentials: + if self.use_keyring: + username, password = self._get_new_credentials( + resp.url, + allow_netrc=False, + allow_keyring=True, + ) + + # We are not able to prompt the user so simply return the response + if not self.prompting and not username and not password: + return resp + + parsed = urllib.parse.urlparse(resp.url) + + # Prompt the user for a new username and password + save = False + if not username and not password: + username, password, save = self._prompt_for_password(parsed.netloc) + + # Store the new username and password to use for future requests + self._credentials_to_save = None + if username is not None and password is not None: + self.passwords[parsed.netloc] = (username, password) + + # Prompt to save the password to keyring + if save and self._should_save_password_to_keyring(): + self._credentials_to_save = Credentials( + url=parsed.netloc, + username=username, + password=password, + ) + + # Consume content and release the original connection to allow our new + # request to reuse the same one. + # The result of the assignment isn't used, it's just needed to consume + # the content. + _ = resp.content + resp.raw.release_conn() + + # Add our new username and password to the request + req = HTTPBasicAuth(username or "", password or "")(resp.request) + req.register_hook("response", self.warn_on_401) + + # On successful request, save the credentials that were used to + # keyring. (Note that if the user responded "no" above, this member + # is not set and nothing will be saved.) + if self._credentials_to_save: + req.register_hook("response", self.save_credentials) + + # Send our new request + new_resp = resp.connection.send(req, **kwargs) + new_resp.history.append(resp) + + return new_resp + + def warn_on_401(self, resp: Response, **kwargs: Any) -> None: + """Response callback to warn about incorrect credentials.""" + if resp.status_code == 401: + logger.warning( + "401 Error, Credentials not correct for %s", + resp.request.url, + ) + + def save_credentials(self, resp: Response, **kwargs: Any) -> None: + """Response callback to save credentials on success.""" + assert ( + self.keyring_provider.has_keyring + ), "should never reach here without keyring" + + creds = self._credentials_to_save + self._credentials_to_save = None + if creds and resp.status_code < 400: + try: + logger.info("Saving credentials to keyring") + self.keyring_provider.save_auth_info( + creds.url, creds.username, creds.password + ) + except Exception: + logger.exception("Failed to save credentials") diff --git a/venv/Lib/site-packages/pip/_internal/network/cache.py b/venv/Lib/site-packages/pip/_internal/network/cache.py new file mode 100644 index 00000000000..4d0fb545dc2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/cache.py @@ -0,0 +1,106 @@ +"""HTTP cache implementation. +""" + +import os +from contextlib import contextmanager +from datetime import datetime +from typing import BinaryIO, Generator, Optional, Union + +from pip._vendor.cachecontrol.cache import SeparateBodyBaseCache +from pip._vendor.cachecontrol.caches import SeparateBodyFileCache +from pip._vendor.requests.models import Response + +from pip._internal.utils.filesystem import adjacent_tmp_file, replace +from pip._internal.utils.misc import ensure_dir + + +def is_from_cache(response: Response) -> bool: + return getattr(response, "from_cache", False) + + +@contextmanager +def suppressed_cache_errors() -> Generator[None, None, None]: + """If we can't access the cache then we can just skip caching and process + requests as if caching wasn't enabled. + """ + try: + yield + except OSError: + pass + + +class SafeFileCache(SeparateBodyBaseCache): + """ + A file based cache which is safe to use even when the target directory may + not be accessible or writable. + + There is a race condition when two processes try to write and/or read the + same entry at the same time, since each entry consists of two separate + files (https://github.com/psf/cachecontrol/issues/324). We therefore have + additional logic that makes sure that both files to be present before + returning an entry; this fixes the read side of the race condition. + + For the write side, we assume that the server will only ever return the + same data for the same URL, which ought to be the case for files pip is + downloading. PyPI does not have a mechanism to swap out a wheel for + another wheel, for example. If this assumption is not true, the + CacheControl issue will need to be fixed. + """ + + def __init__(self, directory: str) -> None: + assert directory is not None, "Cache directory must not be None." + super().__init__() + self.directory = directory + + def _get_cache_path(self, name: str) -> str: + # From cachecontrol.caches.file_cache.FileCache._fn, brought into our + # class for backwards-compatibility and to avoid using a non-public + # method. + hashed = SeparateBodyFileCache.encode(name) + parts = list(hashed[:5]) + [hashed] + return os.path.join(self.directory, *parts) + + def get(self, key: str) -> Optional[bytes]: + # The cache entry is only valid if both metadata and body exist. + metadata_path = self._get_cache_path(key) + body_path = metadata_path + ".body" + if not (os.path.exists(metadata_path) and os.path.exists(body_path)): + return None + with suppressed_cache_errors(): + with open(metadata_path, "rb") as f: + return f.read() + + def _write(self, path: str, data: bytes) -> None: + with suppressed_cache_errors(): + ensure_dir(os.path.dirname(path)) + + with adjacent_tmp_file(path) as f: + f.write(data) + + replace(f.name, path) + + def set( + self, key: str, value: bytes, expires: Union[int, datetime, None] = None + ) -> None: + path = self._get_cache_path(key) + self._write(path, value) + + def delete(self, key: str) -> None: + path = self._get_cache_path(key) + with suppressed_cache_errors(): + os.remove(path) + with suppressed_cache_errors(): + os.remove(path + ".body") + + def get_body(self, key: str) -> Optional[BinaryIO]: + # The cache entry is only valid if both metadata and body exist. + metadata_path = self._get_cache_path(key) + body_path = metadata_path + ".body" + if not (os.path.exists(metadata_path) and os.path.exists(body_path)): + return None + with suppressed_cache_errors(): + return open(body_path, "rb") + + def set_body(self, key: str, body: bytes) -> None: + path = self._get_cache_path(key) + ".body" + self._write(path, body) diff --git a/venv/Lib/site-packages/pip/_internal/network/download.py b/venv/Lib/site-packages/pip/_internal/network/download.py new file mode 100644 index 00000000000..5c3bce3d2fd --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/download.py @@ -0,0 +1,187 @@ +"""Download files with progress indicators. +""" + +import email.message +import logging +import mimetypes +import os +from typing import Iterable, Optional, Tuple + +from pip._vendor.requests.models import Response + +from pip._internal.cli.progress_bars import get_download_progress_renderer +from pip._internal.exceptions import NetworkConnectionError +from pip._internal.models.index import PyPI +from pip._internal.models.link import Link +from pip._internal.network.cache import is_from_cache +from pip._internal.network.session import PipSession +from pip._internal.network.utils import HEADERS, raise_for_status, response_chunks +from pip._internal.utils.misc import format_size, redact_auth_from_url, splitext + +logger = logging.getLogger(__name__) + + +def _get_http_response_size(resp: Response) -> Optional[int]: + try: + return int(resp.headers["content-length"]) + except (ValueError, KeyError, TypeError): + return None + + +def _prepare_download( + resp: Response, + link: Link, + progress_bar: str, +) -> Iterable[bytes]: + total_length = _get_http_response_size(resp) + + if link.netloc == PyPI.file_storage_domain: + url = link.show_url + else: + url = link.url_without_fragment + + logged_url = redact_auth_from_url(url) + + if total_length: + logged_url = f"{logged_url} ({format_size(total_length)})" + + if is_from_cache(resp): + logger.info("Using cached %s", logged_url) + else: + logger.info("Downloading %s", logged_url) + + if logger.getEffectiveLevel() > logging.INFO: + show_progress = False + elif is_from_cache(resp): + show_progress = False + elif not total_length: + show_progress = True + elif total_length > (512 * 1024): + show_progress = True + else: + show_progress = False + + chunks = response_chunks(resp) + + if not show_progress: + return chunks + + renderer = get_download_progress_renderer(bar_type=progress_bar, size=total_length) + return renderer(chunks) + + +def sanitize_content_filename(filename: str) -> str: + """ + Sanitize the "filename" value from a Content-Disposition header. + """ + return os.path.basename(filename) + + +def parse_content_disposition(content_disposition: str, default_filename: str) -> str: + """ + Parse the "filename" value from a Content-Disposition header, and + return the default filename if the result is empty. + """ + m = email.message.Message() + m["content-type"] = content_disposition + filename = m.get_param("filename") + if filename: + # We need to sanitize the filename to prevent directory traversal + # in case the filename contains ".." path parts. + filename = sanitize_content_filename(str(filename)) + return filename or default_filename + + +def _get_http_response_filename(resp: Response, link: Link) -> str: + """Get an ideal filename from the given HTTP response, falling back to + the link filename if not provided. + """ + filename = link.filename # fallback + # Have a look at the Content-Disposition header for a better guess + content_disposition = resp.headers.get("content-disposition") + if content_disposition: + filename = parse_content_disposition(content_disposition, filename) + ext: Optional[str] = splitext(filename)[1] + if not ext: + ext = mimetypes.guess_extension(resp.headers.get("content-type", "")) + if ext: + filename += ext + if not ext and link.url != resp.url: + ext = os.path.splitext(resp.url)[1] + if ext: + filename += ext + return filename + + +def _http_get_download(session: PipSession, link: Link) -> Response: + target_url = link.url.split("#", 1)[0] + resp = session.get(target_url, headers=HEADERS, stream=True) + raise_for_status(resp) + return resp + + +class Downloader: + def __init__( + self, + session: PipSession, + progress_bar: str, + ) -> None: + self._session = session + self._progress_bar = progress_bar + + def __call__(self, link: Link, location: str) -> Tuple[str, str]: + """Download the file given by link into location.""" + try: + resp = _http_get_download(self._session, link) + except NetworkConnectionError as e: + assert e.response is not None + logger.critical( + "HTTP error %s while getting %s", e.response.status_code, link + ) + raise + + filename = _get_http_response_filename(resp, link) + filepath = os.path.join(location, filename) + + chunks = _prepare_download(resp, link, self._progress_bar) + with open(filepath, "wb") as content_file: + for chunk in chunks: + content_file.write(chunk) + content_type = resp.headers.get("Content-Type", "") + return filepath, content_type + + +class BatchDownloader: + def __init__( + self, + session: PipSession, + progress_bar: str, + ) -> None: + self._session = session + self._progress_bar = progress_bar + + def __call__( + self, links: Iterable[Link], location: str + ) -> Iterable[Tuple[Link, Tuple[str, str]]]: + """Download the files given by links into location.""" + for link in links: + try: + resp = _http_get_download(self._session, link) + except NetworkConnectionError as e: + assert e.response is not None + logger.critical( + "HTTP error %s while getting %s", + e.response.status_code, + link, + ) + raise + + filename = _get_http_response_filename(resp, link) + filepath = os.path.join(location, filename) + + chunks = _prepare_download(resp, link, self._progress_bar) + with open(filepath, "wb") as content_file: + for chunk in chunks: + content_file.write(chunk) + content_type = resp.headers.get("Content-Type", "") + yield link, (filepath, content_type) diff --git a/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py b/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py new file mode 100644 index 00000000000..82ec50d5106 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py @@ -0,0 +1,210 @@ +"""Lazy ZIP over HTTP""" + +__all__ = ["HTTPRangeRequestUnsupported", "dist_from_wheel_url"] + +from bisect import bisect_left, bisect_right +from contextlib import contextmanager +from tempfile import NamedTemporaryFile +from typing import Any, Dict, Generator, List, Optional, Tuple +from zipfile import BadZipFile, ZipFile + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response + +from pip._internal.metadata import BaseDistribution, MemoryWheel, get_wheel_distribution +from pip._internal.network.session import PipSession +from pip._internal.network.utils import HEADERS, raise_for_status, response_chunks + + +class HTTPRangeRequestUnsupported(Exception): + pass + + +def dist_from_wheel_url(name: str, url: str, session: PipSession) -> BaseDistribution: + """Return a distribution object from the given wheel URL. + + This uses HTTP range requests to only fetch the portion of the wheel + containing metadata, just enough for the object to be constructed. + If such requests are not supported, HTTPRangeRequestUnsupported + is raised. + """ + with LazyZipOverHTTP(url, session) as zf: + # For read-only ZIP files, ZipFile only needs methods read, + # seek, seekable and tell, not the whole IO protocol. + wheel = MemoryWheel(zf.name, zf) # type: ignore + # After context manager exit, wheel.name + # is an invalid file by intention. + return get_wheel_distribution(wheel, canonicalize_name(name)) + + +class LazyZipOverHTTP: + """File-like object mapped to a ZIP file over HTTP. + + This uses HTTP range requests to lazily fetch the file's content, + which is supposed to be fed to ZipFile. If such requests are not + supported by the server, raise HTTPRangeRequestUnsupported + during initialization. + """ + + def __init__( + self, url: str, session: PipSession, chunk_size: int = CONTENT_CHUNK_SIZE + ) -> None: + head = session.head(url, headers=HEADERS) + raise_for_status(head) + assert head.status_code == 200 + self._session, self._url, self._chunk_size = session, url, chunk_size + self._length = int(head.headers["Content-Length"]) + self._file = NamedTemporaryFile() + self.truncate(self._length) + self._left: List[int] = [] + self._right: List[int] = [] + if "bytes" not in head.headers.get("Accept-Ranges", "none"): + raise HTTPRangeRequestUnsupported("range request is not supported") + self._check_zip() + + @property + def mode(self) -> str: + """Opening mode, which is always rb.""" + return "rb" + + @property + def name(self) -> str: + """Path to the underlying file.""" + return self._file.name + + def seekable(self) -> bool: + """Return whether random access is supported, which is True.""" + return True + + def close(self) -> None: + """Close the file.""" + self._file.close() + + @property + def closed(self) -> bool: + """Whether the file is closed.""" + return self._file.closed + + def read(self, size: int = -1) -> bytes: + """Read up to size bytes from the object and return them. + + As a convenience, if size is unspecified or -1, + all bytes until EOF are returned. Fewer than + size bytes may be returned if EOF is reached. + """ + download_size = max(size, self._chunk_size) + start, length = self.tell(), self._length + stop = length if size < 0 else min(start + download_size, length) + start = max(0, stop - download_size) + self._download(start, stop - 1) + return self._file.read(size) + + def readable(self) -> bool: + """Return whether the file is readable, which is True.""" + return True + + def seek(self, offset: int, whence: int = 0) -> int: + """Change stream position and return the new absolute position. + + Seek to offset relative position indicated by whence: + * 0: Start of stream (the default). pos should be >= 0; + * 1: Current position - pos may be negative; + * 2: End of stream - pos usually negative. + """ + return self._file.seek(offset, whence) + + def tell(self) -> int: + """Return the current position.""" + return self._file.tell() + + def truncate(self, size: Optional[int] = None) -> int: + """Resize the stream to the given size in bytes. + + If size is unspecified resize to the current position. + The current stream position isn't changed. + + Return the new file size. + """ + return self._file.truncate(size) + + def writable(self) -> bool: + """Return False.""" + return False + + def __enter__(self) -> "LazyZipOverHTTP": + self._file.__enter__() + return self + + def __exit__(self, *exc: Any) -> None: + self._file.__exit__(*exc) + + @contextmanager + def _stay(self) -> Generator[None, None, None]: + """Return a context manager keeping the position. + + At the end of the block, seek back to original position. + """ + pos = self.tell() + try: + yield + finally: + self.seek(pos) + + def _check_zip(self) -> None: + """Check and download until the file is a valid ZIP.""" + end = self._length - 1 + for start in reversed(range(0, end, self._chunk_size)): + self._download(start, end) + with self._stay(): + try: + # For read-only ZIP files, ZipFile only needs + # methods read, seek, seekable and tell. + ZipFile(self) # type: ignore + except BadZipFile: + pass + else: + break + + def _stream_response( + self, start: int, end: int, base_headers: Dict[str, str] = HEADERS + ) -> Response: + """Return HTTP response to a range request from start to end.""" + headers = base_headers.copy() + headers["Range"] = f"bytes={start}-{end}" + # TODO: Get range requests to be correctly cached + headers["Cache-Control"] = "no-cache" + return self._session.get(self._url, headers=headers, stream=True) + + def _merge( + self, start: int, end: int, left: int, right: int + ) -> Generator[Tuple[int, int], None, None]: + """Return a generator of intervals to be fetched. + + Args: + start (int): Start of needed interval + end (int): End of needed interval + left (int): Index of first overlapping downloaded data + right (int): Index after last overlapping downloaded data + """ + lslice, rslice = self._left[left:right], self._right[left:right] + i = start = min([start] + lslice[:1]) + end = max([end] + rslice[-1:]) + for j, k in zip(lslice, rslice): + if j > i: + yield i, j - 1 + i = k + 1 + if i <= end: + yield i, end + self._left[left:right], self._right[left:right] = [start], [end] + + def _download(self, start: int, end: int) -> None: + """Download bytes from start to end inclusively.""" + with self._stay(): + left = bisect_left(self._right, start) + right = bisect_right(self._left, end) + for start, end in self._merge(start, end, left, right): + response = self._stream_response(start, end) + response.raise_for_status() + self.seek(start) + for chunk in response_chunks(response, self._chunk_size): + self._file.write(chunk) diff --git a/venv/Lib/site-packages/pip/_internal/network/session.py b/venv/Lib/site-packages/pip/_internal/network/session.py new file mode 100644 index 00000000000..1765b4f6bd7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/session.py @@ -0,0 +1,522 @@ +"""PipSession and supporting code, containing all pip-specific +network request configuration and behavior. +""" + +import email.utils +import functools +import io +import ipaddress +import json +import logging +import mimetypes +import os +import platform +import shutil +import subprocess +import sys +import urllib.parse +import warnings +from typing import ( + TYPE_CHECKING, + Any, + Dict, + Generator, + List, + Mapping, + Optional, + Sequence, + Tuple, + Union, +) + +from pip._vendor import requests, urllib3 +from pip._vendor.cachecontrol import CacheControlAdapter as _BaseCacheControlAdapter +from pip._vendor.requests.adapters import DEFAULT_POOLBLOCK, BaseAdapter +from pip._vendor.requests.adapters import HTTPAdapter as _BaseHTTPAdapter +from pip._vendor.requests.models import PreparedRequest, Response +from pip._vendor.requests.structures import CaseInsensitiveDict +from pip._vendor.urllib3.connectionpool import ConnectionPool +from pip._vendor.urllib3.exceptions import InsecureRequestWarning + +from pip import __version__ +from pip._internal.metadata import get_default_environment +from pip._internal.models.link import Link +from pip._internal.network.auth import MultiDomainBasicAuth +from pip._internal.network.cache import SafeFileCache + +# Import ssl from compat so the initial import occurs in only one place. +from pip._internal.utils.compat import has_tls +from pip._internal.utils.glibc import libc_ver +from pip._internal.utils.misc import build_url_from_netloc, parse_netloc +from pip._internal.utils.urls import url_to_path + +if TYPE_CHECKING: + from ssl import SSLContext + + from pip._vendor.urllib3.poolmanager import PoolManager + + +logger = logging.getLogger(__name__) + +SecureOrigin = Tuple[str, str, Optional[Union[int, str]]] + + +# Ignore warning raised when using --trusted-host. +warnings.filterwarnings("ignore", category=InsecureRequestWarning) + + +SECURE_ORIGINS: List[SecureOrigin] = [ + # protocol, hostname, port + # Taken from Chrome's list of secure origins (See: http://bit.ly/1qrySKC) + ("https", "*", "*"), + ("*", "localhost", "*"), + ("*", "127.0.0.0/8", "*"), + ("*", "::1/128", "*"), + ("file", "*", None), + # ssh is always secure. + ("ssh", "*", "*"), +] + + +# These are environment variables present when running under various +# CI systems. For each variable, some CI systems that use the variable +# are indicated. The collection was chosen so that for each of a number +# of popular systems, at least one of the environment variables is used. +# This list is used to provide some indication of and lower bound for +# CI traffic to PyPI. Thus, it is okay if the list is not comprehensive. +# For more background, see: https://github.com/pypa/pip/issues/5499 +CI_ENVIRONMENT_VARIABLES = ( + # Azure Pipelines + "BUILD_BUILDID", + # Jenkins + "BUILD_ID", + # AppVeyor, CircleCI, Codeship, Gitlab CI, Shippable, Travis CI + "CI", + # Explicit environment variable. + "PIP_IS_CI", +) + + +def looks_like_ci() -> bool: + """ + Return whether it looks like pip is running under CI. + """ + # We don't use the method of checking for a tty (e.g. using isatty()) + # because some CI systems mimic a tty (e.g. Travis CI). Thus that + # method doesn't provide definitive information in either direction. + return any(name in os.environ for name in CI_ENVIRONMENT_VARIABLES) + + +@functools.lru_cache(maxsize=1) +def user_agent() -> str: + """ + Return a string representing the user agent. + """ + data: Dict[str, Any] = { + "installer": {"name": "pip", "version": __version__}, + "python": platform.python_version(), + "implementation": { + "name": platform.python_implementation(), + }, + } + + if data["implementation"]["name"] == "CPython": + data["implementation"]["version"] = platform.python_version() + elif data["implementation"]["name"] == "PyPy": + pypy_version_info = sys.pypy_version_info # type: ignore + if pypy_version_info.releaselevel == "final": + pypy_version_info = pypy_version_info[:3] + data["implementation"]["version"] = ".".join( + [str(x) for x in pypy_version_info] + ) + elif data["implementation"]["name"] == "Jython": + # Complete Guess + data["implementation"]["version"] = platform.python_version() + elif data["implementation"]["name"] == "IronPython": + # Complete Guess + data["implementation"]["version"] = platform.python_version() + + if sys.platform.startswith("linux"): + from pip._vendor import distro + + linux_distribution = distro.name(), distro.version(), distro.codename() + distro_infos: Dict[str, Any] = dict( + filter( + lambda x: x[1], + zip(["name", "version", "id"], linux_distribution), + ) + ) + libc = dict( + filter( + lambda x: x[1], + zip(["lib", "version"], libc_ver()), + ) + ) + if libc: + distro_infos["libc"] = libc + if distro_infos: + data["distro"] = distro_infos + + if sys.platform.startswith("darwin") and platform.mac_ver()[0]: + data["distro"] = {"name": "macOS", "version": platform.mac_ver()[0]} + + if platform.system(): + data.setdefault("system", {})["name"] = platform.system() + + if platform.release(): + data.setdefault("system", {})["release"] = platform.release() + + if platform.machine(): + data["cpu"] = platform.machine() + + if has_tls(): + import _ssl as ssl + + data["openssl_version"] = ssl.OPENSSL_VERSION + + setuptools_dist = get_default_environment().get_distribution("setuptools") + if setuptools_dist is not None: + data["setuptools_version"] = str(setuptools_dist.version) + + if shutil.which("rustc") is not None: + # If for any reason `rustc --version` fails, silently ignore it + try: + rustc_output = subprocess.check_output( + ["rustc", "--version"], stderr=subprocess.STDOUT, timeout=0.5 + ) + except Exception: + pass + else: + if rustc_output.startswith(b"rustc "): + # The format of `rustc --version` is: + # `b'rustc 1.52.1 (9bc8c42bb 2021-05-09)\n'` + # We extract just the middle (1.52.1) part + data["rustc_version"] = rustc_output.split(b" ")[1].decode() + + # Use None rather than False so as not to give the impression that + # pip knows it is not being run under CI. Rather, it is a null or + # inconclusive result. Also, we include some value rather than no + # value to make it easier to know that the check has been run. + data["ci"] = True if looks_like_ci() else None + + user_data = os.environ.get("PIP_USER_AGENT_USER_DATA") + if user_data is not None: + data["user_data"] = user_data + + return "{data[installer][name]}/{data[installer][version]} {json}".format( + data=data, + json=json.dumps(data, separators=(",", ":"), sort_keys=True), + ) + + +class LocalFSAdapter(BaseAdapter): + def send( + self, + request: PreparedRequest, + stream: bool = False, + timeout: Optional[Union[float, Tuple[float, float]]] = None, + verify: Union[bool, str] = True, + cert: Optional[Union[str, Tuple[str, str]]] = None, + proxies: Optional[Mapping[str, str]] = None, + ) -> Response: + pathname = url_to_path(request.url) + + resp = Response() + resp.status_code = 200 + resp.url = request.url + + try: + stats = os.stat(pathname) + except OSError as exc: + # format the exception raised as a io.BytesIO object, + # to return a better error message: + resp.status_code = 404 + resp.reason = type(exc).__name__ + resp.raw = io.BytesIO(f"{resp.reason}: {exc}".encode()) + else: + modified = email.utils.formatdate(stats.st_mtime, usegmt=True) + content_type = mimetypes.guess_type(pathname)[0] or "text/plain" + resp.headers = CaseInsensitiveDict( + { + "Content-Type": content_type, + "Content-Length": stats.st_size, + "Last-Modified": modified, + } + ) + + resp.raw = open(pathname, "rb") + resp.close = resp.raw.close + + return resp + + def close(self) -> None: + pass + + +class _SSLContextAdapterMixin: + """Mixin to add the ``ssl_context`` constructor argument to HTTP adapters. + + The additional argument is forwarded directly to the pool manager. This allows us + to dynamically decide what SSL store to use at runtime, which is used to implement + the optional ``truststore`` backend. + """ + + def __init__( + self, + *, + ssl_context: Optional["SSLContext"] = None, + **kwargs: Any, + ) -> None: + self._ssl_context = ssl_context + super().__init__(**kwargs) + + def init_poolmanager( + self, + connections: int, + maxsize: int, + block: bool = DEFAULT_POOLBLOCK, + **pool_kwargs: Any, + ) -> "PoolManager": + if self._ssl_context is not None: + pool_kwargs.setdefault("ssl_context", self._ssl_context) + return super().init_poolmanager( # type: ignore[misc] + connections=connections, + maxsize=maxsize, + block=block, + **pool_kwargs, + ) + + +class HTTPAdapter(_SSLContextAdapterMixin, _BaseHTTPAdapter): + pass + + +class CacheControlAdapter(_SSLContextAdapterMixin, _BaseCacheControlAdapter): + pass + + +class InsecureHTTPAdapter(HTTPAdapter): + def cert_verify( + self, + conn: ConnectionPool, + url: str, + verify: Union[bool, str], + cert: Optional[Union[str, Tuple[str, str]]], + ) -> None: + super().cert_verify(conn=conn, url=url, verify=False, cert=cert) + + +class InsecureCacheControlAdapter(CacheControlAdapter): + def cert_verify( + self, + conn: ConnectionPool, + url: str, + verify: Union[bool, str], + cert: Optional[Union[str, Tuple[str, str]]], + ) -> None: + super().cert_verify(conn=conn, url=url, verify=False, cert=cert) + + +class PipSession(requests.Session): + timeout: Optional[int] = None + + def __init__( + self, + *args: Any, + retries: int = 0, + cache: Optional[str] = None, + trusted_hosts: Sequence[str] = (), + index_urls: Optional[List[str]] = None, + ssl_context: Optional["SSLContext"] = None, + **kwargs: Any, + ) -> None: + """ + :param trusted_hosts: Domains not to emit warnings for when not using + HTTPS. + """ + super().__init__(*args, **kwargs) + + # Namespace the attribute with "pip_" just in case to prevent + # possible conflicts with the base class. + self.pip_trusted_origins: List[Tuple[str, Optional[int]]] = [] + + # Attach our User Agent to the request + self.headers["User-Agent"] = user_agent() + + # Attach our Authentication handler to the session + self.auth = MultiDomainBasicAuth(index_urls=index_urls) + + # Create our urllib3.Retry instance which will allow us to customize + # how we handle retries. + retries = urllib3.Retry( + # Set the total number of retries that a particular request can + # have. + total=retries, + # A 503 error from PyPI typically means that the Fastly -> Origin + # connection got interrupted in some way. A 503 error in general + # is typically considered a transient error so we'll go ahead and + # retry it. + # A 500 may indicate transient error in Amazon S3 + # A 502 may be a transient error from a CDN like CloudFlare or CloudFront + # A 520 or 527 - may indicate transient error in CloudFlare + status_forcelist=[500, 502, 503, 520, 527], + # Add a small amount of back off between failed requests in + # order to prevent hammering the service. + backoff_factor=0.25, + ) # type: ignore + + # Our Insecure HTTPAdapter disables HTTPS validation. It does not + # support caching so we'll use it for all http:// URLs. + # If caching is disabled, we will also use it for + # https:// hosts that we've marked as ignoring + # TLS errors for (trusted-hosts). + insecure_adapter = InsecureHTTPAdapter(max_retries=retries) + + # We want to _only_ cache responses on securely fetched origins or when + # the host is specified as trusted. We do this because + # we can't validate the response of an insecurely/untrusted fetched + # origin, and we don't want someone to be able to poison the cache and + # require manual eviction from the cache to fix it. + if cache: + secure_adapter = CacheControlAdapter( + cache=SafeFileCache(cache), + max_retries=retries, + ssl_context=ssl_context, + ) + self._trusted_host_adapter = InsecureCacheControlAdapter( + cache=SafeFileCache(cache), + max_retries=retries, + ) + else: + secure_adapter = HTTPAdapter(max_retries=retries, ssl_context=ssl_context) + self._trusted_host_adapter = insecure_adapter + + self.mount("https://", secure_adapter) + self.mount("http://", insecure_adapter) + + # Enable file:// urls + self.mount("file://", LocalFSAdapter()) + + for host in trusted_hosts: + self.add_trusted_host(host, suppress_logging=True) + + def update_index_urls(self, new_index_urls: List[str]) -> None: + """ + :param new_index_urls: New index urls to update the authentication + handler with. + """ + self.auth.index_urls = new_index_urls + + def add_trusted_host( + self, host: str, source: Optional[str] = None, suppress_logging: bool = False + ) -> None: + """ + :param host: It is okay to provide a host that has previously been + added. + :param source: An optional source string, for logging where the host + string came from. + """ + if not suppress_logging: + msg = f"adding trusted host: {host!r}" + if source is not None: + msg += f" (from {source})" + logger.info(msg) + + parsed_host, parsed_port = parse_netloc(host) + if parsed_host is None: + raise ValueError(f"Trusted host URL must include a host part: {host!r}") + if (parsed_host, parsed_port) not in self.pip_trusted_origins: + self.pip_trusted_origins.append((parsed_host, parsed_port)) + + self.mount( + build_url_from_netloc(host, scheme="http") + "/", self._trusted_host_adapter + ) + self.mount(build_url_from_netloc(host) + "/", self._trusted_host_adapter) + if not parsed_port: + self.mount( + build_url_from_netloc(host, scheme="http") + ":", + self._trusted_host_adapter, + ) + # Mount wildcard ports for the same host. + self.mount(build_url_from_netloc(host) + ":", self._trusted_host_adapter) + + def iter_secure_origins(self) -> Generator[SecureOrigin, None, None]: + yield from SECURE_ORIGINS + for host, port in self.pip_trusted_origins: + yield ("*", host, "*" if port is None else port) + + def is_secure_origin(self, location: Link) -> bool: + # Determine if this url used a secure transport mechanism + parsed = urllib.parse.urlparse(str(location)) + origin_protocol, origin_host, origin_port = ( + parsed.scheme, + parsed.hostname, + parsed.port, + ) + + # The protocol to use to see if the protocol matches. + # Don't count the repository type as part of the protocol: in + # cases such as "git+ssh", only use "ssh". (I.e., Only verify against + # the last scheme.) + origin_protocol = origin_protocol.rsplit("+", 1)[-1] + + # Determine if our origin is a secure origin by looking through our + # hardcoded list of secure origins, as well as any additional ones + # configured on this PackageFinder instance. + for secure_origin in self.iter_secure_origins(): + secure_protocol, secure_host, secure_port = secure_origin + if origin_protocol != secure_protocol and secure_protocol != "*": + continue + + try: + addr = ipaddress.ip_address(origin_host or "") + network = ipaddress.ip_network(secure_host) + except ValueError: + # We don't have both a valid address or a valid network, so + # we'll check this origin against hostnames. + if ( + origin_host + and origin_host.lower() != secure_host.lower() + and secure_host != "*" + ): + continue + else: + # We have a valid address and network, so see if the address + # is contained within the network. + if addr not in network: + continue + + # Check to see if the port matches. + if ( + origin_port != secure_port + and secure_port != "*" + and secure_port is not None + ): + continue + + # If we've gotten here, then this origin matches the current + # secure origin and we should return True + return True + + # If we've gotten to this point, then the origin isn't secure and we + # will not accept it as a valid location to search. We will however + # log a warning that we are ignoring it. + logger.warning( + "The repository located at %s is not a trusted or secure host and " + "is being ignored. If this repository is available via HTTPS we " + "recommend you use HTTPS instead, otherwise you may silence " + "this warning and allow it anyway with '--trusted-host %s'.", + origin_host, + origin_host, + ) + + return False + + def request(self, method: str, url: str, *args: Any, **kwargs: Any) -> Response: + # Allow setting a default timeout on a session + kwargs.setdefault("timeout", self.timeout) + # Allow setting a default proxies on a session + kwargs.setdefault("proxies", self.proxies) + + # Dispatch the actual request + return super().request(method, url, *args, **kwargs) diff --git a/venv/Lib/site-packages/pip/_internal/network/utils.py b/venv/Lib/site-packages/pip/_internal/network/utils.py new file mode 100644 index 00000000000..bba4c265e89 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/utils.py @@ -0,0 +1,98 @@ +from typing import Dict, Generator + +from pip._vendor.requests.models import Response + +from pip._internal.exceptions import NetworkConnectionError + +# The following comments and HTTP headers were originally added by +# Donald Stufft in git commit 22c562429a61bb77172039e480873fb239dd8c03. +# +# We use Accept-Encoding: identity here because requests defaults to +# accepting compressed responses. This breaks in a variety of ways +# depending on how the server is configured. +# - Some servers will notice that the file isn't a compressible file +# and will leave the file alone and with an empty Content-Encoding +# - Some servers will notice that the file is already compressed and +# will leave the file alone, adding a Content-Encoding: gzip header +# - Some servers won't notice anything at all and will take a file +# that's already been compressed and compress it again, and set +# the Content-Encoding: gzip header +# By setting this to request only the identity encoding we're hoping +# to eliminate the third case. Hopefully there does not exist a server +# which when given a file will notice it is already compressed and that +# you're not asking for a compressed file and will then decompress it +# before sending because if that's the case I don't think it'll ever be +# possible to make this work. +HEADERS: Dict[str, str] = {"Accept-Encoding": "identity"} + +DOWNLOAD_CHUNK_SIZE = 256 * 1024 + + +def raise_for_status(resp: Response) -> None: + http_error_msg = "" + if isinstance(resp.reason, bytes): + # We attempt to decode utf-8 first because some servers + # choose to localize their reason strings. If the string + # isn't utf-8, we fall back to iso-8859-1 for all other + # encodings. + try: + reason = resp.reason.decode("utf-8") + except UnicodeDecodeError: + reason = resp.reason.decode("iso-8859-1") + else: + reason = resp.reason + + if 400 <= resp.status_code < 500: + http_error_msg = ( + f"{resp.status_code} Client Error: {reason} for url: {resp.url}" + ) + + elif 500 <= resp.status_code < 600: + http_error_msg = ( + f"{resp.status_code} Server Error: {reason} for url: {resp.url}" + ) + + if http_error_msg: + raise NetworkConnectionError(http_error_msg, response=resp) + + +def response_chunks( + response: Response, chunk_size: int = DOWNLOAD_CHUNK_SIZE +) -> Generator[bytes, None, None]: + """Given a requests Response, provide the data chunks.""" + try: + # Special case for urllib3. + for chunk in response.raw.stream( + chunk_size, + # We use decode_content=False here because we don't + # want urllib3 to mess with the raw bytes we get + # from the server. If we decompress inside of + # urllib3 then we cannot verify the checksum + # because the checksum will be of the compressed + # file. This breakage will only occur if the + # server adds a Content-Encoding header, which + # depends on how the server was configured: + # - Some servers will notice that the file isn't a + # compressible file and will leave the file alone + # and with an empty Content-Encoding + # - Some servers will notice that the file is + # already compressed and will leave the file + # alone and will add a Content-Encoding: gzip + # header + # - Some servers won't notice anything at all and + # will take a file that's already been compressed + # and compress it again and set the + # Content-Encoding: gzip header + # + # By setting this not to decode automatically we + # hope to eliminate problems with the second case. + decode_content=False, + ): + yield chunk + except AttributeError: + # Standard file-like object. + while True: + chunk = response.raw.read(chunk_size) + if not chunk: + break + yield chunk diff --git a/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py b/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py new file mode 100644 index 00000000000..22ec8d2f4a6 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py @@ -0,0 +1,62 @@ +"""xmlrpclib.Transport implementation +""" + +import logging +import urllib.parse +import xmlrpc.client +from typing import TYPE_CHECKING, Tuple + +from pip._internal.exceptions import NetworkConnectionError +from pip._internal.network.session import PipSession +from pip._internal.network.utils import raise_for_status + +if TYPE_CHECKING: + from xmlrpc.client import _HostType, _Marshallable + + from _typeshed import SizedBuffer + +logger = logging.getLogger(__name__) + + +class PipXmlrpcTransport(xmlrpc.client.Transport): + """Provide a `xmlrpclib.Transport` implementation via a `PipSession` + object. + """ + + def __init__( + self, index_url: str, session: PipSession, use_datetime: bool = False + ) -> None: + super().__init__(use_datetime) + index_parts = urllib.parse.urlparse(index_url) + self._scheme = index_parts.scheme + self._session = session + + def request( + self, + host: "_HostType", + handler: str, + request_body: "SizedBuffer", + verbose: bool = False, + ) -> Tuple["_Marshallable", ...]: + assert isinstance(host, str) + parts = (self._scheme, host, handler, None, None, None) + url = urllib.parse.urlunparse(parts) + try: + headers = {"Content-Type": "text/xml"} + response = self._session.post( + url, + data=request_body, + headers=headers, + stream=True, + ) + raise_for_status(response) + self.verbose = verbose + return self.parse_response(response.raw) + except NetworkConnectionError as exc: + assert exc.response + logger.critical( + "HTTP error %s while getting %s", + exc.response.status_code, + url, + ) + raise diff --git a/venv/Lib/site-packages/pip/_internal/operations/__init__.py b/venv/Lib/site-packages/pip/_internal/operations/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_internal/operations/build/__init__.py b/venv/Lib/site-packages/pip/_internal/operations/build/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_internal/operations/build/build_tracker.py b/venv/Lib/site-packages/pip/_internal/operations/build/build_tracker.py new file mode 100644 index 00000000000..0ed8dd23596 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/build/build_tracker.py @@ -0,0 +1,138 @@ +import contextlib +import hashlib +import logging +import os +from types import TracebackType +from typing import Dict, Generator, Optional, Type, Union + +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +@contextlib.contextmanager +def update_env_context_manager(**changes: str) -> Generator[None, None, None]: + target = os.environ + + # Save values from the target and change them. + non_existent_marker = object() + saved_values: Dict[str, Union[object, str]] = {} + for name, new_value in changes.items(): + try: + saved_values[name] = target[name] + except KeyError: + saved_values[name] = non_existent_marker + target[name] = new_value + + try: + yield + finally: + # Restore original values in the target. + for name, original_value in saved_values.items(): + if original_value is non_existent_marker: + del target[name] + else: + assert isinstance(original_value, str) # for mypy + target[name] = original_value + + +@contextlib.contextmanager +def get_build_tracker() -> Generator["BuildTracker", None, None]: + root = os.environ.get("PIP_BUILD_TRACKER") + with contextlib.ExitStack() as ctx: + if root is None: + root = ctx.enter_context(TempDirectory(kind="build-tracker")).path + ctx.enter_context(update_env_context_manager(PIP_BUILD_TRACKER=root)) + logger.debug("Initialized build tracking at %s", root) + + with BuildTracker(root) as tracker: + yield tracker + + +class TrackerId(str): + """Uniquely identifying string provided to the build tracker.""" + + +class BuildTracker: + """Ensure that an sdist cannot request itself as a setup requirement. + + When an sdist is prepared, it identifies its setup requirements in the + context of ``BuildTracker.track()``. If a requirement shows up recursively, this + raises an exception. + + This stops fork bombs embedded in malicious packages.""" + + def __init__(self, root: str) -> None: + self._root = root + self._entries: Dict[TrackerId, InstallRequirement] = {} + logger.debug("Created build tracker: %s", self._root) + + def __enter__(self) -> "BuildTracker": + logger.debug("Entered build tracker: %s", self._root) + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + self.cleanup() + + def _entry_path(self, key: TrackerId) -> str: + hashed = hashlib.sha224(key.encode()).hexdigest() + return os.path.join(self._root, hashed) + + def add(self, req: InstallRequirement, key: TrackerId) -> None: + """Add an InstallRequirement to build tracking.""" + + # Get the file to write information about this requirement. + entry_path = self._entry_path(key) + + # Try reading from the file. If it exists and can be read from, a build + # is already in progress, so a LookupError is raised. + try: + with open(entry_path) as fp: + contents = fp.read() + except FileNotFoundError: + pass + else: + message = f"{req.link} is already being built: {contents}" + raise LookupError(message) + + # If we're here, req should really not be building already. + assert key not in self._entries + + # Start tracking this requirement. + with open(entry_path, "w", encoding="utf-8") as fp: + fp.write(str(req)) + self._entries[key] = req + + logger.debug("Added %s to build tracker %r", req, self._root) + + def remove(self, req: InstallRequirement, key: TrackerId) -> None: + """Remove an InstallRequirement from build tracking.""" + + # Delete the created file and the corresponding entry. + os.unlink(self._entry_path(key)) + del self._entries[key] + + logger.debug("Removed %s from build tracker %r", req, self._root) + + def cleanup(self) -> None: + for key, req in list(self._entries.items()): + self.remove(req, key) + + logger.debug("Removed build tracker: %r", self._root) + + @contextlib.contextmanager + def track(self, req: InstallRequirement, key: str) -> Generator[None, None, None]: + """Ensure that `key` cannot install itself as a setup requirement. + + :raises LookupError: If `key` was already provided in a parent invocation of + the context introduced by this method.""" + tracker_id = TrackerId(key) + self.add(req, tracker_id) + yield + self.remove(req, tracker_id) diff --git a/venv/Lib/site-packages/pip/_internal/operations/build/metadata.py b/venv/Lib/site-packages/pip/_internal/operations/build/metadata.py new file mode 100644 index 00000000000..c66ac354deb --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/build/metadata.py @@ -0,0 +1,39 @@ +"""Metadata generation logic for source distributions. +""" + +import os + +from pip._vendor.pyproject_hooks import BuildBackendHookCaller + +from pip._internal.build_env import BuildEnvironment +from pip._internal.exceptions import ( + InstallationSubprocessError, + MetadataGenerationFailed, +) +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.temp_dir import TempDirectory + + +def generate_metadata( + build_env: BuildEnvironment, backend: BuildBackendHookCaller, details: str +) -> str: + """Generate metadata using mechanisms described in PEP 517. + + Returns the generated metadata directory. + """ + metadata_tmpdir = TempDirectory(kind="modern-metadata", globally_managed=True) + + metadata_dir = metadata_tmpdir.path + + with build_env: + # Note that BuildBackendHookCaller implements a fallback for + # prepare_metadata_for_build_wheel, so we don't have to + # consider the possibility that this hook doesn't exist. + runner = runner_with_spinner_message("Preparing metadata (pyproject.toml)") + with backend.subprocess_runner(runner): + try: + distinfo_dir = backend.prepare_metadata_for_build_wheel(metadata_dir) + except InstallationSubprocessError as error: + raise MetadataGenerationFailed(package_details=details) from error + + return os.path.join(metadata_dir, distinfo_dir) diff --git a/venv/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py b/venv/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py new file mode 100644 index 00000000000..27c69f0d1ea --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py @@ -0,0 +1,41 @@ +"""Metadata generation logic for source distributions. +""" + +import os + +from pip._vendor.pyproject_hooks import BuildBackendHookCaller + +from pip._internal.build_env import BuildEnvironment +from pip._internal.exceptions import ( + InstallationSubprocessError, + MetadataGenerationFailed, +) +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.temp_dir import TempDirectory + + +def generate_editable_metadata( + build_env: BuildEnvironment, backend: BuildBackendHookCaller, details: str +) -> str: + """Generate metadata using mechanisms described in PEP 660. + + Returns the generated metadata directory. + """ + metadata_tmpdir = TempDirectory(kind="modern-metadata", globally_managed=True) + + metadata_dir = metadata_tmpdir.path + + with build_env: + # Note that BuildBackendHookCaller implements a fallback for + # prepare_metadata_for_build_wheel/editable, so we don't have to + # consider the possibility that this hook doesn't exist. + runner = runner_with_spinner_message( + "Preparing editable metadata (pyproject.toml)" + ) + with backend.subprocess_runner(runner): + try: + distinfo_dir = backend.prepare_metadata_for_build_editable(metadata_dir) + except InstallationSubprocessError as error: + raise MetadataGenerationFailed(package_details=details) from error + + return os.path.join(metadata_dir, distinfo_dir) diff --git a/venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py b/venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py new file mode 100644 index 00000000000..c01dd1c678a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py @@ -0,0 +1,74 @@ +"""Metadata generation logic for legacy source distributions. +""" + +import logging +import os + +from pip._internal.build_env import BuildEnvironment +from pip._internal.cli.spinners import open_spinner +from pip._internal.exceptions import ( + InstallationError, + InstallationSubprocessError, + MetadataGenerationFailed, +) +from pip._internal.utils.setuptools_build import make_setuptools_egg_info_args +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +def _find_egg_info(directory: str) -> str: + """Find an .egg-info subdirectory in `directory`.""" + filenames = [f for f in os.listdir(directory) if f.endswith(".egg-info")] + + if not filenames: + raise InstallationError(f"No .egg-info directory found in {directory}") + + if len(filenames) > 1: + raise InstallationError( + f"More than one .egg-info directory found in {directory}" + ) + + return os.path.join(directory, filenames[0]) + + +def generate_metadata( + build_env: BuildEnvironment, + setup_py_path: str, + source_dir: str, + isolated: bool, + details: str, +) -> str: + """Generate metadata using setup.py-based defacto mechanisms. + + Returns the generated metadata directory. + """ + logger.debug( + "Running setup.py (path:%s) egg_info for package %s", + setup_py_path, + details, + ) + + egg_info_dir = TempDirectory(kind="pip-egg-info", globally_managed=True).path + + args = make_setuptools_egg_info_args( + setup_py_path, + egg_info_dir=egg_info_dir, + no_user_config=isolated, + ) + + with build_env: + with open_spinner("Preparing metadata (setup.py)") as spinner: + try: + call_subprocess( + args, + cwd=source_dir, + command_desc="python setup.py egg_info", + spinner=spinner, + ) + except InstallationSubprocessError as error: + raise MetadataGenerationFailed(package_details=details) from error + + # Return the .egg-info directory. + return _find_egg_info(egg_info_dir) diff --git a/venv/Lib/site-packages/pip/_internal/operations/build/wheel.py b/venv/Lib/site-packages/pip/_internal/operations/build/wheel.py new file mode 100644 index 00000000000..064811ad11b --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/build/wheel.py @@ -0,0 +1,37 @@ +import logging +import os +from typing import Optional + +from pip._vendor.pyproject_hooks import BuildBackendHookCaller + +from pip._internal.utils.subprocess import runner_with_spinner_message + +logger = logging.getLogger(__name__) + + +def build_wheel_pep517( + name: str, + backend: BuildBackendHookCaller, + metadata_directory: str, + tempd: str, +) -> Optional[str]: + """Build one InstallRequirement using the PEP 517 build process. + + Returns path to wheel if successfully built. Otherwise, returns None. + """ + assert metadata_directory is not None + try: + logger.debug("Destination directory: %s", tempd) + + runner = runner_with_spinner_message( + f"Building wheel for {name} (pyproject.toml)" + ) + with backend.subprocess_runner(runner): + wheel_name = backend.build_wheel( + tempd, + metadata_directory=metadata_directory, + ) + except Exception: + logger.error("Failed building wheel for %s", name) + return None + return os.path.join(tempd, wheel_name) diff --git a/venv/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py b/venv/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py new file mode 100644 index 00000000000..719d69dd801 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py @@ -0,0 +1,46 @@ +import logging +import os +from typing import Optional + +from pip._vendor.pyproject_hooks import BuildBackendHookCaller, HookMissing + +from pip._internal.utils.subprocess import runner_with_spinner_message + +logger = logging.getLogger(__name__) + + +def build_wheel_editable( + name: str, + backend: BuildBackendHookCaller, + metadata_directory: str, + tempd: str, +) -> Optional[str]: + """Build one InstallRequirement using the PEP 660 build process. + + Returns path to wheel if successfully built. Otherwise, returns None. + """ + assert metadata_directory is not None + try: + logger.debug("Destination directory: %s", tempd) + + runner = runner_with_spinner_message( + f"Building editable for {name} (pyproject.toml)" + ) + with backend.subprocess_runner(runner): + try: + wheel_name = backend.build_editable( + tempd, + metadata_directory=metadata_directory, + ) + except HookMissing as e: + logger.error( + "Cannot build editable %s because the build " + "backend does not have the %s hook", + name, + e, + ) + return None + except Exception: + logger.error("Failed building editable for %s", name) + return None + return os.path.join(tempd, wheel_name) diff --git a/venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py b/venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py new file mode 100644 index 00000000000..3ee2a7058d3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py @@ -0,0 +1,102 @@ +import logging +import os.path +from typing import List, Optional + +from pip._internal.cli.spinners import open_spinner +from pip._internal.utils.setuptools_build import make_setuptools_bdist_wheel_args +from pip._internal.utils.subprocess import call_subprocess, format_command_args + +logger = logging.getLogger(__name__) + + +def format_command_result( + command_args: List[str], + command_output: str, +) -> str: + """Format command information for logging.""" + command_desc = format_command_args(command_args) + text = f"Command arguments: {command_desc}\n" + + if not command_output: + text += "Command output: None" + elif logger.getEffectiveLevel() > logging.DEBUG: + text += "Command output: [use --verbose to show]" + else: + if not command_output.endswith("\n"): + command_output += "\n" + text += f"Command output:\n{command_output}" + + return text + + +def get_legacy_build_wheel_path( + names: List[str], + temp_dir: str, + name: str, + command_args: List[str], + command_output: str, +) -> Optional[str]: + """Return the path to the wheel in the temporary build directory.""" + # Sort for determinism. + names = sorted(names) + if not names: + msg = f"Legacy build of wheel for {name!r} created no files.\n" + msg += format_command_result(command_args, command_output) + logger.warning(msg) + return None + + if len(names) > 1: + msg = ( + f"Legacy build of wheel for {name!r} created more than one file.\n" + f"Filenames (choosing first): {names}\n" + ) + msg += format_command_result(command_args, command_output) + logger.warning(msg) + + return os.path.join(temp_dir, names[0]) + + +def build_wheel_legacy( + name: str, + setup_py_path: str, + source_dir: str, + global_options: List[str], + build_options: List[str], + tempd: str, +) -> Optional[str]: + """Build one unpacked package using the "legacy" build process. + + Returns path to wheel if successfully built. Otherwise, returns None. + """ + wheel_args = make_setuptools_bdist_wheel_args( + setup_py_path, + global_options=global_options, + build_options=build_options, + destination_dir=tempd, + ) + + spin_message = f"Building wheel for {name} (setup.py)" + with open_spinner(spin_message) as spinner: + logger.debug("Destination directory: %s", tempd) + + try: + output = call_subprocess( + wheel_args, + command_desc="python setup.py bdist_wheel", + cwd=source_dir, + spinner=spinner, + ) + except Exception: + spinner.finish("error") + logger.error("Failed building wheel for %s", name) + return None + + names = os.listdir(tempd) + wheel_path = get_legacy_build_wheel_path( + names=names, + temp_dir=tempd, + name=name, + command_args=wheel_args, + command_output=output, + ) + return wheel_path diff --git a/venv/Lib/site-packages/pip/_internal/operations/check.py b/venv/Lib/site-packages/pip/_internal/operations/check.py new file mode 100644 index 00000000000..4b6fbc4c375 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/check.py @@ -0,0 +1,181 @@ +"""Validation of dependencies of packages +""" + +import logging +from contextlib import suppress +from email.parser import Parser +from functools import reduce +from typing import ( + Callable, + Dict, + FrozenSet, + Generator, + Iterable, + List, + NamedTuple, + Optional, + Set, + Tuple, +) + +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.tags import Tag, parse_tag +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version + +from pip._internal.distributions import make_distribution_for_install_requirement +from pip._internal.metadata import get_default_environment +from pip._internal.metadata.base import BaseDistribution +from pip._internal.req.req_install import InstallRequirement + +logger = logging.getLogger(__name__) + + +class PackageDetails(NamedTuple): + version: Version + dependencies: List[Requirement] + + +# Shorthands +PackageSet = Dict[NormalizedName, PackageDetails] +Missing = Tuple[NormalizedName, Requirement] +Conflicting = Tuple[NormalizedName, Version, Requirement] + +MissingDict = Dict[NormalizedName, List[Missing]] +ConflictingDict = Dict[NormalizedName, List[Conflicting]] +CheckResult = Tuple[MissingDict, ConflictingDict] +ConflictDetails = Tuple[PackageSet, CheckResult] + + +def create_package_set_from_installed() -> Tuple[PackageSet, bool]: + """Converts a list of distributions into a PackageSet.""" + package_set = {} + problems = False + env = get_default_environment() + for dist in env.iter_installed_distributions(local_only=False, skip=()): + name = dist.canonical_name + try: + dependencies = list(dist.iter_dependencies()) + package_set[name] = PackageDetails(dist.version, dependencies) + except (OSError, ValueError) as e: + # Don't crash on unreadable or broken metadata. + logger.warning("Error parsing dependencies of %s: %s", name, e) + problems = True + return package_set, problems + + +def check_package_set( + package_set: PackageSet, should_ignore: Optional[Callable[[str], bool]] = None +) -> CheckResult: + """Check if a package set is consistent + + If should_ignore is passed, it should be a callable that takes a + package name and returns a boolean. + """ + + missing = {} + conflicting = {} + + for package_name, package_detail in package_set.items(): + # Info about dependencies of package_name + missing_deps: Set[Missing] = set() + conflicting_deps: Set[Conflicting] = set() + + if should_ignore and should_ignore(package_name): + continue + + for req in package_detail.dependencies: + name = canonicalize_name(req.name) + + # Check if it's missing + if name not in package_set: + missed = True + if req.marker is not None: + missed = req.marker.evaluate({"extra": ""}) + if missed: + missing_deps.add((name, req)) + continue + + # Check if there's a conflict + version = package_set[name].version + if not req.specifier.contains(version, prereleases=True): + conflicting_deps.add((name, version, req)) + + if missing_deps: + missing[package_name] = sorted(missing_deps, key=str) + if conflicting_deps: + conflicting[package_name] = sorted(conflicting_deps, key=str) + + return missing, conflicting + + +def check_install_conflicts(to_install: List[InstallRequirement]) -> ConflictDetails: + """For checking if the dependency graph would be consistent after \ + installing given requirements + """ + # Start from the current state + package_set, _ = create_package_set_from_installed() + # Install packages + would_be_installed = _simulate_installation_of(to_install, package_set) + + # Only warn about directly-dependent packages; create a whitelist of them + whitelist = _create_whitelist(would_be_installed, package_set) + + return ( + package_set, + check_package_set( + package_set, should_ignore=lambda name: name not in whitelist + ), + ) + + +def check_unsupported( + packages: Iterable[BaseDistribution], + supported_tags: Iterable[Tag], +) -> Generator[BaseDistribution, None, None]: + for p in packages: + with suppress(FileNotFoundError): + wheel_file = p.read_text("WHEEL") + wheel_tags: FrozenSet[Tag] = reduce( + frozenset.union, + map(parse_tag, Parser().parsestr(wheel_file).get_all("Tag", [])), + frozenset(), + ) + if wheel_tags.isdisjoint(supported_tags): + yield p + + +def _simulate_installation_of( + to_install: List[InstallRequirement], package_set: PackageSet +) -> Set[NormalizedName]: + """Computes the version of packages after installing to_install.""" + # Keep track of packages that were installed + installed = set() + + # Modify it as installing requirement_set would (assuming no errors) + for inst_req in to_install: + abstract_dist = make_distribution_for_install_requirement(inst_req) + dist = abstract_dist.get_metadata_distribution() + name = dist.canonical_name + package_set[name] = PackageDetails(dist.version, list(dist.iter_dependencies())) + + installed.add(name) + + return installed + + +def _create_whitelist( + would_be_installed: Set[NormalizedName], package_set: PackageSet +) -> Set[NormalizedName]: + packages_affected = set(would_be_installed) + + for package_name in package_set: + if package_name in packages_affected: + continue + + for req in package_set[package_name].dependencies: + if canonicalize_name(req.name) in packages_affected: + packages_affected.add(package_name) + break + + return packages_affected diff --git a/venv/Lib/site-packages/pip/_internal/operations/freeze.py b/venv/Lib/site-packages/pip/_internal/operations/freeze.py new file mode 100644 index 00000000000..bb1039fb776 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/freeze.py @@ -0,0 +1,258 @@ +import collections +import logging +import os +from typing import Container, Dict, Generator, Iterable, List, NamedTuple, Optional, Set + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import InvalidVersion + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.metadata import BaseDistribution, get_environment +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, +) +from pip._internal.req.req_file import COMMENT_RE +from pip._internal.utils.direct_url_helpers import direct_url_as_pep440_direct_reference + +logger = logging.getLogger(__name__) + + +class _EditableInfo(NamedTuple): + requirement: str + comments: List[str] + + +def freeze( + requirement: Optional[List[str]] = None, + local_only: bool = False, + user_only: bool = False, + paths: Optional[List[str]] = None, + isolated: bool = False, + exclude_editable: bool = False, + skip: Container[str] = (), +) -> Generator[str, None, None]: + installations: Dict[str, FrozenRequirement] = {} + + dists = get_environment(paths).iter_installed_distributions( + local_only=local_only, + skip=(), + user_only=user_only, + ) + for dist in dists: + req = FrozenRequirement.from_dist(dist) + if exclude_editable and req.editable: + continue + installations[req.canonical_name] = req + + if requirement: + # the options that don't get turned into an InstallRequirement + # should only be emitted once, even if the same option is in multiple + # requirements files, so we need to keep track of what has been emitted + # so that we don't emit it again if it's seen again + emitted_options: Set[str] = set() + # keep track of which files a requirement is in so that we can + # give an accurate warning if a requirement appears multiple times. + req_files: Dict[str, List[str]] = collections.defaultdict(list) + for req_file_path in requirement: + with open(req_file_path) as req_file: + for line in req_file: + if ( + not line.strip() + or line.strip().startswith("#") + or line.startswith( + ( + "-r", + "--requirement", + "-f", + "--find-links", + "-i", + "--index-url", + "--pre", + "--trusted-host", + "--process-dependency-links", + "--extra-index-url", + "--use-feature", + ) + ) + ): + line = line.rstrip() + if line not in emitted_options: + emitted_options.add(line) + yield line + continue + + if line.startswith("-e") or line.startswith("--editable"): + if line.startswith("-e"): + line = line[2:].strip() + else: + line = line[len("--editable") :].strip().lstrip("=") + line_req = install_req_from_editable( + line, + isolated=isolated, + ) + else: + line_req = install_req_from_line( + COMMENT_RE.sub("", line).strip(), + isolated=isolated, + ) + + if not line_req.name: + logger.info( + "Skipping line in requirement file [%s] because " + "it's not clear what it would install: %s", + req_file_path, + line.strip(), + ) + logger.info( + " (add #egg=PackageName to the URL to avoid" + " this warning)" + ) + else: + line_req_canonical_name = canonicalize_name(line_req.name) + if line_req_canonical_name not in installations: + # either it's not installed, or it is installed + # but has been processed already + if not req_files[line_req.name]: + logger.warning( + "Requirement file [%s] contains %s, but " + "package %r is not installed", + req_file_path, + COMMENT_RE.sub("", line).strip(), + line_req.name, + ) + else: + req_files[line_req.name].append(req_file_path) + else: + yield str(installations[line_req_canonical_name]).rstrip() + del installations[line_req_canonical_name] + req_files[line_req.name].append(req_file_path) + + # Warn about requirements that were included multiple times (in a + # single requirements file or in different requirements files). + for name, files in req_files.items(): + if len(files) > 1: + logger.warning( + "Requirement %s included multiple times [%s]", + name, + ", ".join(sorted(set(files))), + ) + + yield ("## The following requirements were added by pip freeze:") + for installation in sorted(installations.values(), key=lambda x: x.name.lower()): + if installation.canonical_name not in skip: + yield str(installation).rstrip() + + +def _format_as_name_version(dist: BaseDistribution) -> str: + try: + dist_version = dist.version + except InvalidVersion: + # legacy version + return f"{dist.raw_name}==={dist.raw_version}" + else: + return f"{dist.raw_name}=={dist_version}" + + +def _get_editable_info(dist: BaseDistribution) -> _EditableInfo: + """ + Compute and return values (req, comments) for use in + FrozenRequirement.from_dist(). + """ + editable_project_location = dist.editable_project_location + assert editable_project_location + location = os.path.normcase(os.path.abspath(editable_project_location)) + + from pip._internal.vcs import RemoteNotFoundError, RemoteNotValidError, vcs + + vcs_backend = vcs.get_backend_for_dir(location) + + if vcs_backend is None: + display = _format_as_name_version(dist) + logger.debug( + 'No VCS found for editable requirement "%s" in: %r', + display, + location, + ) + return _EditableInfo( + requirement=location, + comments=[f"# Editable install with no version control ({display})"], + ) + + vcs_name = type(vcs_backend).__name__ + + try: + req = vcs_backend.get_src_requirement(location, dist.raw_name) + except RemoteNotFoundError: + display = _format_as_name_version(dist) + return _EditableInfo( + requirement=location, + comments=[f"# Editable {vcs_name} install with no remote ({display})"], + ) + except RemoteNotValidError as ex: + display = _format_as_name_version(dist) + return _EditableInfo( + requirement=location, + comments=[ + f"# Editable {vcs_name} install ({display}) with either a deleted " + f"local remote or invalid URI:", + f"# '{ex.url}'", + ], + ) + except BadCommand: + logger.warning( + "cannot determine version of editable source in %s " + "(%s command not found in path)", + location, + vcs_backend.name, + ) + return _EditableInfo(requirement=location, comments=[]) + except InstallationError as exc: + logger.warning("Error when trying to get requirement for VCS system %s", exc) + else: + return _EditableInfo(requirement=req, comments=[]) + + logger.warning("Could not determine repository location of %s", location) + + return _EditableInfo( + requirement=location, + comments=["## !! Could not determine repository location"], + ) + + +class FrozenRequirement: + def __init__( + self, + name: str, + req: str, + editable: bool, + comments: Iterable[str] = (), + ) -> None: + self.name = name + self.canonical_name = canonicalize_name(name) + self.req = req + self.editable = editable + self.comments = comments + + @classmethod + def from_dist(cls, dist: BaseDistribution) -> "FrozenRequirement": + editable = dist.editable + if editable: + req, comments = _get_editable_info(dist) + else: + comments = [] + direct_url = dist.direct_url + if direct_url: + # if PEP 610 metadata is present, use it + req = direct_url_as_pep440_direct_reference(direct_url, dist.raw_name) + else: + # name==version requirement + req = _format_as_name_version(dist) + + return cls(dist.raw_name, req, editable, comments=comments) + + def __str__(self) -> str: + req = self.req + if self.editable: + req = f"-e {req}" + return "\n".join(list(self.comments) + [str(req)]) + "\n" diff --git a/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py b/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py new file mode 100644 index 00000000000..24d6a5dd31f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py @@ -0,0 +1,2 @@ +"""For modules related to installing packages. +""" diff --git a/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py b/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py new file mode 100644 index 00000000000..9aaa699a645 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py @@ -0,0 +1,47 @@ +"""Legacy editable installation process, i.e. `setup.py develop`. +""" + +import logging +from typing import Optional, Sequence + +from pip._internal.build_env import BuildEnvironment +from pip._internal.utils.logging import indent_log +from pip._internal.utils.setuptools_build import make_setuptools_develop_args +from pip._internal.utils.subprocess import call_subprocess + +logger = logging.getLogger(__name__) + + +def install_editable( + *, + global_options: Sequence[str], + prefix: Optional[str], + home: Optional[str], + use_user_site: bool, + name: str, + setup_py_path: str, + isolated: bool, + build_env: BuildEnvironment, + unpacked_source_directory: str, +) -> None: + """Install a package in editable mode. Most arguments are pass-through + to setuptools. + """ + logger.info("Running setup.py develop for %s", name) + + args = make_setuptools_develop_args( + setup_py_path, + global_options=global_options, + no_user_config=isolated, + prefix=prefix, + home=home, + use_user_site=use_user_site, + ) + + with indent_log(): + with build_env: + call_subprocess( + args, + command_desc="python setup.py develop", + cwd=unpacked_source_directory, + ) diff --git a/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py b/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py new file mode 100644 index 00000000000..aef42aa9eef --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py @@ -0,0 +1,741 @@ +"""Support for installing and building the "wheel" binary package format. +""" + +import collections +import compileall +import contextlib +import csv +import importlib +import logging +import os.path +import re +import shutil +import sys +import warnings +from base64 import urlsafe_b64encode +from email.message import Message +from itertools import chain, filterfalse, starmap +from typing import ( + IO, + TYPE_CHECKING, + Any, + BinaryIO, + Callable, + Dict, + Generator, + Iterable, + Iterator, + List, + NewType, + Optional, + Protocol, + Sequence, + Set, + Tuple, + Union, + cast, +) +from zipfile import ZipFile, ZipInfo + +from pip._vendor.distlib.scripts import ScriptMaker +from pip._vendor.distlib.util import get_export_entry +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import InstallationError +from pip._internal.locations import get_major_minor_version +from pip._internal.metadata import ( + BaseDistribution, + FilesystemWheel, + get_wheel_distribution, +) +from pip._internal.models.direct_url import DIRECT_URL_METADATA_NAME, DirectUrl +from pip._internal.models.scheme import SCHEME_KEYS, Scheme +from pip._internal.utils.filesystem import adjacent_tmp_file, replace +from pip._internal.utils.misc import StreamWrapper, ensure_dir, hash_file, partition +from pip._internal.utils.unpacking import ( + current_umask, + is_within_directory, + set_extracted_file_to_default_mode_plus_executable, + zip_item_is_executable, +) +from pip._internal.utils.wheel import parse_wheel + +if TYPE_CHECKING: + + class File(Protocol): + src_record_path: "RecordPath" + dest_path: str + changed: bool + + def save(self) -> None: + pass + + +logger = logging.getLogger(__name__) + +RecordPath = NewType("RecordPath", str) +InstalledCSVRow = Tuple[RecordPath, str, Union[int, str]] + + +def rehash(path: str, blocksize: int = 1 << 20) -> Tuple[str, str]: + """Return (encoded_digest, length) for path using hashlib.sha256()""" + h, length = hash_file(path, blocksize) + digest = "sha256=" + urlsafe_b64encode(h.digest()).decode("latin1").rstrip("=") + return (digest, str(length)) + + +def csv_io_kwargs(mode: str) -> Dict[str, Any]: + """Return keyword arguments to properly open a CSV file + in the given mode. + """ + return {"mode": mode, "newline": "", "encoding": "utf-8"} + + +def fix_script(path: str) -> bool: + """Replace #!python with #!/path/to/python + Return True if file was changed. + """ + # XXX RECORD hashes will need to be updated + assert os.path.isfile(path) + + with open(path, "rb") as script: + firstline = script.readline() + if not firstline.startswith(b"#!python"): + return False + exename = sys.executable.encode(sys.getfilesystemencoding()) + firstline = b"#!" + exename + os.linesep.encode("ascii") + rest = script.read() + with open(path, "wb") as script: + script.write(firstline) + script.write(rest) + return True + + +def wheel_root_is_purelib(metadata: Message) -> bool: + return metadata.get("Root-Is-Purelib", "").lower() == "true" + + +def get_entrypoints(dist: BaseDistribution) -> Tuple[Dict[str, str], Dict[str, str]]: + console_scripts = {} + gui_scripts = {} + for entry_point in dist.iter_entry_points(): + if entry_point.group == "console_scripts": + console_scripts[entry_point.name] = entry_point.value + elif entry_point.group == "gui_scripts": + gui_scripts[entry_point.name] = entry_point.value + return console_scripts, gui_scripts + + +def message_about_scripts_not_on_PATH(scripts: Sequence[str]) -> Optional[str]: + """Determine if any scripts are not on PATH and format a warning. + Returns a warning message if one or more scripts are not on PATH, + otherwise None. + """ + if not scripts: + return None + + # Group scripts by the path they were installed in + grouped_by_dir: Dict[str, Set[str]] = collections.defaultdict(set) + for destfile in scripts: + parent_dir = os.path.dirname(destfile) + script_name = os.path.basename(destfile) + grouped_by_dir[parent_dir].add(script_name) + + # We don't want to warn for directories that are on PATH. + not_warn_dirs = [ + os.path.normcase(os.path.normpath(i)).rstrip(os.sep) + for i in os.environ.get("PATH", "").split(os.pathsep) + ] + # If an executable sits with sys.executable, we don't warn for it. + # This covers the case of venv invocations without activating the venv. + not_warn_dirs.append( + os.path.normcase(os.path.normpath(os.path.dirname(sys.executable))) + ) + warn_for: Dict[str, Set[str]] = { + parent_dir: scripts + for parent_dir, scripts in grouped_by_dir.items() + if os.path.normcase(os.path.normpath(parent_dir)) not in not_warn_dirs + } + if not warn_for: + return None + + # Format a message + msg_lines = [] + for parent_dir, dir_scripts in warn_for.items(): + sorted_scripts: List[str] = sorted(dir_scripts) + if len(sorted_scripts) == 1: + start_text = f"script {sorted_scripts[0]} is" + else: + start_text = "scripts {} are".format( + ", ".join(sorted_scripts[:-1]) + " and " + sorted_scripts[-1] + ) + + msg_lines.append( + f"The {start_text} installed in '{parent_dir}' which is not on PATH." + ) + + last_line_fmt = ( + "Consider adding {} to PATH or, if you prefer " + "to suppress this warning, use --no-warn-script-location." + ) + if len(msg_lines) == 1: + msg_lines.append(last_line_fmt.format("this directory")) + else: + msg_lines.append(last_line_fmt.format("these directories")) + + # Add a note if any directory starts with ~ + warn_for_tilde = any( + i[0] == "~" for i in os.environ.get("PATH", "").split(os.pathsep) if i + ) + if warn_for_tilde: + tilde_warning_msg = ( + "NOTE: The current PATH contains path(s) starting with `~`, " + "which may not be expanded by all applications." + ) + msg_lines.append(tilde_warning_msg) + + # Returns the formatted multiline message + return "\n".join(msg_lines) + + +def _normalized_outrows( + outrows: Iterable[InstalledCSVRow], +) -> List[Tuple[str, str, str]]: + """Normalize the given rows of a RECORD file. + + Items in each row are converted into str. Rows are then sorted to make + the value more predictable for tests. + + Each row is a 3-tuple (path, hash, size) and corresponds to a record of + a RECORD file (see PEP 376 and PEP 427 for details). For the rows + passed to this function, the size can be an integer as an int or string, + or the empty string. + """ + # Normally, there should only be one row per path, in which case the + # second and third elements don't come into play when sorting. + # However, in cases in the wild where a path might happen to occur twice, + # we don't want the sort operation to trigger an error (but still want + # determinism). Since the third element can be an int or string, we + # coerce each element to a string to avoid a TypeError in this case. + # For additional background, see-- + # https://github.com/pypa/pip/issues/5868 + return sorted( + (record_path, hash_, str(size)) for record_path, hash_, size in outrows + ) + + +def _record_to_fs_path(record_path: RecordPath, lib_dir: str) -> str: + return os.path.join(lib_dir, record_path) + + +def _fs_to_record_path(path: str, lib_dir: str) -> RecordPath: + # On Windows, do not handle relative paths if they belong to different + # logical disks + if os.path.splitdrive(path)[0].lower() == os.path.splitdrive(lib_dir)[0].lower(): + path = os.path.relpath(path, lib_dir) + + path = path.replace(os.path.sep, "/") + return cast("RecordPath", path) + + +def get_csv_rows_for_installed( + old_csv_rows: List[List[str]], + installed: Dict[RecordPath, RecordPath], + changed: Set[RecordPath], + generated: List[str], + lib_dir: str, +) -> List[InstalledCSVRow]: + """ + :param installed: A map from archive RECORD path to installation RECORD + path. + """ + installed_rows: List[InstalledCSVRow] = [] + for row in old_csv_rows: + if len(row) > 3: + logger.warning("RECORD line has more than three elements: %s", row) + old_record_path = cast("RecordPath", row[0]) + new_record_path = installed.pop(old_record_path, old_record_path) + if new_record_path in changed: + digest, length = rehash(_record_to_fs_path(new_record_path, lib_dir)) + else: + digest = row[1] if len(row) > 1 else "" + length = row[2] if len(row) > 2 else "" + installed_rows.append((new_record_path, digest, length)) + for f in generated: + path = _fs_to_record_path(f, lib_dir) + digest, length = rehash(f) + installed_rows.append((path, digest, length)) + return installed_rows + [ + (installed_record_path, "", "") for installed_record_path in installed.values() + ] + + +def get_console_script_specs(console: Dict[str, str]) -> List[str]: + """ + Given the mapping from entrypoint name to callable, return the relevant + console script specs. + """ + # Don't mutate caller's version + console = console.copy() + + scripts_to_generate = [] + + # Special case pip and setuptools to generate versioned wrappers + # + # The issue is that some projects (specifically, pip and setuptools) use + # code in setup.py to create "versioned" entry points - pip2.7 on Python + # 2.7, pip3.3 on Python 3.3, etc. But these entry points are baked into + # the wheel metadata at build time, and so if the wheel is installed with + # a *different* version of Python the entry points will be wrong. The + # correct fix for this is to enhance the metadata to be able to describe + # such versioned entry points. + # Currently, projects using versioned entry points will either have + # incorrect versioned entry points, or they will not be able to distribute + # "universal" wheels (i.e., they will need a wheel per Python version). + # + # Because setuptools and pip are bundled with _ensurepip and virtualenv, + # we need to use universal wheels. As a workaround, we + # override the versioned entry points in the wheel and generate the + # correct ones. + # + # To add the level of hack in this section of code, in order to support + # ensurepip this code will look for an ``ENSUREPIP_OPTIONS`` environment + # variable which will control which version scripts get installed. + # + # ENSUREPIP_OPTIONS=altinstall + # - Only pipX.Y and easy_install-X.Y will be generated and installed + # ENSUREPIP_OPTIONS=install + # - pipX.Y, pipX, easy_install-X.Y will be generated and installed. Note + # that this option is technically if ENSUREPIP_OPTIONS is set and is + # not altinstall + # DEFAULT + # - The default behavior is to install pip, pipX, pipX.Y, easy_install + # and easy_install-X.Y. + pip_script = console.pop("pip", None) + if pip_script: + if "ENSUREPIP_OPTIONS" not in os.environ: + scripts_to_generate.append("pip = " + pip_script) + + if os.environ.get("ENSUREPIP_OPTIONS", "") != "altinstall": + scripts_to_generate.append(f"pip{sys.version_info[0]} = {pip_script}") + + scripts_to_generate.append(f"pip{get_major_minor_version()} = {pip_script}") + # Delete any other versioned pip entry points + pip_ep = [k for k in console if re.match(r"pip(\d+(\.\d+)?)?$", k)] + for k in pip_ep: + del console[k] + easy_install_script = console.pop("easy_install", None) + if easy_install_script: + if "ENSUREPIP_OPTIONS" not in os.environ: + scripts_to_generate.append("easy_install = " + easy_install_script) + + scripts_to_generate.append( + f"easy_install-{get_major_minor_version()} = {easy_install_script}" + ) + # Delete any other versioned easy_install entry points + easy_install_ep = [ + k for k in console if re.match(r"easy_install(-\d+\.\d+)?$", k) + ] + for k in easy_install_ep: + del console[k] + + # Generate the console entry points specified in the wheel + scripts_to_generate.extend(starmap("{} = {}".format, console.items())) + + return scripts_to_generate + + +class ZipBackedFile: + def __init__( + self, src_record_path: RecordPath, dest_path: str, zip_file: ZipFile + ) -> None: + self.src_record_path = src_record_path + self.dest_path = dest_path + self._zip_file = zip_file + self.changed = False + + def _getinfo(self) -> ZipInfo: + return self._zip_file.getinfo(self.src_record_path) + + def save(self) -> None: + # When we open the output file below, any existing file is truncated + # before we start writing the new contents. This is fine in most + # cases, but can cause a segfault if pip has loaded a shared + # object (e.g. from pyopenssl through its vendored urllib3) + # Since the shared object is mmap'd an attempt to call a + # symbol in it will then cause a segfault. Unlinking the file + # allows writing of new contents while allowing the process to + # continue to use the old copy. + if os.path.exists(self.dest_path): + os.unlink(self.dest_path) + + zipinfo = self._getinfo() + + # optimization: the file is created by open(), + # skip the decompression when there is 0 bytes to decompress. + with open(self.dest_path, "wb") as dest: + if zipinfo.file_size > 0: + with self._zip_file.open(zipinfo) as f: + blocksize = min(zipinfo.file_size, 1024 * 1024) + shutil.copyfileobj(f, dest, blocksize) + + if zip_item_is_executable(zipinfo): + set_extracted_file_to_default_mode_plus_executable(self.dest_path) + + +class ScriptFile: + def __init__(self, file: "File") -> None: + self._file = file + self.src_record_path = self._file.src_record_path + self.dest_path = self._file.dest_path + self.changed = False + + def save(self) -> None: + self._file.save() + self.changed = fix_script(self.dest_path) + + +class MissingCallableSuffix(InstallationError): + def __init__(self, entry_point: str) -> None: + super().__init__( + f"Invalid script entry point: {entry_point} - A callable " + "suffix is required. Cf https://packaging.python.org/" + "specifications/entry-points/#use-for-scripts for more " + "information." + ) + + +def _raise_for_invalid_entrypoint(specification: str) -> None: + entry = get_export_entry(specification) + if entry is not None and entry.suffix is None: + raise MissingCallableSuffix(str(entry)) + + +class PipScriptMaker(ScriptMaker): + def make( + self, specification: str, options: Optional[Dict[str, Any]] = None + ) -> List[str]: + _raise_for_invalid_entrypoint(specification) + return super().make(specification, options) + + +def _install_wheel( # noqa: C901, PLR0915 function is too long + name: str, + wheel_zip: ZipFile, + wheel_path: str, + scheme: Scheme, + pycompile: bool = True, + warn_script_location: bool = True, + direct_url: Optional[DirectUrl] = None, + requested: bool = False, +) -> None: + """Install a wheel. + + :param name: Name of the project to install + :param wheel_zip: open ZipFile for wheel being installed + :param scheme: Distutils scheme dictating the install directories + :param req_description: String used in place of the requirement, for + logging + :param pycompile: Whether to byte-compile installed Python files + :param warn_script_location: Whether to check that scripts are installed + into a directory on PATH + :raises UnsupportedWheel: + * when the directory holds an unpacked wheel with incompatible + Wheel-Version + * when the .dist-info dir does not match the wheel + """ + info_dir, metadata = parse_wheel(wheel_zip, name) + + if wheel_root_is_purelib(metadata): + lib_dir = scheme.purelib + else: + lib_dir = scheme.platlib + + # Record details of the files moved + # installed = files copied from the wheel to the destination + # changed = files changed while installing (scripts #! line typically) + # generated = files newly generated during the install (script wrappers) + installed: Dict[RecordPath, RecordPath] = {} + changed: Set[RecordPath] = set() + generated: List[str] = [] + + def record_installed( + srcfile: RecordPath, destfile: str, modified: bool = False + ) -> None: + """Map archive RECORD paths to installation RECORD paths.""" + newpath = _fs_to_record_path(destfile, lib_dir) + installed[srcfile] = newpath + if modified: + changed.add(newpath) + + def is_dir_path(path: RecordPath) -> bool: + return path.endswith("/") + + def assert_no_path_traversal(dest_dir_path: str, target_path: str) -> None: + if not is_within_directory(dest_dir_path, target_path): + message = ( + "The wheel {!r} has a file {!r} trying to install" + " outside the target directory {!r}" + ) + raise InstallationError( + message.format(wheel_path, target_path, dest_dir_path) + ) + + def root_scheme_file_maker( + zip_file: ZipFile, dest: str + ) -> Callable[[RecordPath], "File"]: + def make_root_scheme_file(record_path: RecordPath) -> "File": + normed_path = os.path.normpath(record_path) + dest_path = os.path.join(dest, normed_path) + assert_no_path_traversal(dest, dest_path) + return ZipBackedFile(record_path, dest_path, zip_file) + + return make_root_scheme_file + + def data_scheme_file_maker( + zip_file: ZipFile, scheme: Scheme + ) -> Callable[[RecordPath], "File"]: + scheme_paths = {key: getattr(scheme, key) for key in SCHEME_KEYS} + + def make_data_scheme_file(record_path: RecordPath) -> "File": + normed_path = os.path.normpath(record_path) + try: + _, scheme_key, dest_subpath = normed_path.split(os.path.sep, 2) + except ValueError: + message = ( + f"Unexpected file in {wheel_path}: {record_path!r}. .data directory" + " contents should be named like: '/'." + ) + raise InstallationError(message) + + try: + scheme_path = scheme_paths[scheme_key] + except KeyError: + valid_scheme_keys = ", ".join(sorted(scheme_paths)) + message = ( + f"Unknown scheme key used in {wheel_path}: {scheme_key} " + f"(for file {record_path!r}). .data directory contents " + f"should be in subdirectories named with a valid scheme " + f"key ({valid_scheme_keys})" + ) + raise InstallationError(message) + + dest_path = os.path.join(scheme_path, dest_subpath) + assert_no_path_traversal(scheme_path, dest_path) + return ZipBackedFile(record_path, dest_path, zip_file) + + return make_data_scheme_file + + def is_data_scheme_path(path: RecordPath) -> bool: + return path.split("/", 1)[0].endswith(".data") + + paths = cast(List[RecordPath], wheel_zip.namelist()) + file_paths = filterfalse(is_dir_path, paths) + root_scheme_paths, data_scheme_paths = partition(is_data_scheme_path, file_paths) + + make_root_scheme_file = root_scheme_file_maker(wheel_zip, lib_dir) + files: Iterator[File] = map(make_root_scheme_file, root_scheme_paths) + + def is_script_scheme_path(path: RecordPath) -> bool: + parts = path.split("/", 2) + return len(parts) > 2 and parts[0].endswith(".data") and parts[1] == "scripts" + + other_scheme_paths, script_scheme_paths = partition( + is_script_scheme_path, data_scheme_paths + ) + + make_data_scheme_file = data_scheme_file_maker(wheel_zip, scheme) + other_scheme_files = map(make_data_scheme_file, other_scheme_paths) + files = chain(files, other_scheme_files) + + # Get the defined entry points + distribution = get_wheel_distribution( + FilesystemWheel(wheel_path), + canonicalize_name(name), + ) + console, gui = get_entrypoints(distribution) + + def is_entrypoint_wrapper(file: "File") -> bool: + # EP, EP.exe and EP-script.py are scripts generated for + # entry point EP by setuptools + path = file.dest_path + name = os.path.basename(path) + if name.lower().endswith(".exe"): + matchname = name[:-4] + elif name.lower().endswith("-script.py"): + matchname = name[:-10] + elif name.lower().endswith(".pya"): + matchname = name[:-4] + else: + matchname = name + # Ignore setuptools-generated scripts + return matchname in console or matchname in gui + + script_scheme_files: Iterator[File] = map( + make_data_scheme_file, script_scheme_paths + ) + script_scheme_files = filterfalse(is_entrypoint_wrapper, script_scheme_files) + script_scheme_files = map(ScriptFile, script_scheme_files) + files = chain(files, script_scheme_files) + + existing_parents = set() + for file in files: + # directory creation is lazy and after file filtering + # to ensure we don't install empty dirs; empty dirs can't be + # uninstalled. + parent_dir = os.path.dirname(file.dest_path) + if parent_dir not in existing_parents: + ensure_dir(parent_dir) + existing_parents.add(parent_dir) + file.save() + record_installed(file.src_record_path, file.dest_path, file.changed) + + def pyc_source_file_paths() -> Generator[str, None, None]: + # We de-duplicate installation paths, since there can be overlap (e.g. + # file in .data maps to same location as file in wheel root). + # Sorting installation paths makes it easier to reproduce and debug + # issues related to permissions on existing files. + for installed_path in sorted(set(installed.values())): + full_installed_path = os.path.join(lib_dir, installed_path) + if not os.path.isfile(full_installed_path): + continue + if not full_installed_path.endswith(".py"): + continue + yield full_installed_path + + def pyc_output_path(path: str) -> str: + """Return the path the pyc file would have been written to.""" + return importlib.util.cache_from_source(path) + + # Compile all of the pyc files for the installed files + if pycompile: + with contextlib.redirect_stdout( + StreamWrapper.from_stream(sys.stdout) + ) as stdout: + with warnings.catch_warnings(): + warnings.filterwarnings("ignore") + for path in pyc_source_file_paths(): + success = compileall.compile_file(path, force=True, quiet=True) + if success: + pyc_path = pyc_output_path(path) + assert os.path.exists(pyc_path) + pyc_record_path = cast( + "RecordPath", pyc_path.replace(os.path.sep, "/") + ) + record_installed(pyc_record_path, pyc_path) + logger.debug(stdout.getvalue()) + + maker = PipScriptMaker(None, scheme.scripts) + + # Ensure old scripts are overwritten. + # See https://github.com/pypa/pip/issues/1800 + maker.clobber = True + + # Ensure we don't generate any variants for scripts because this is almost + # never what somebody wants. + # See https://bitbucket.org/pypa/distlib/issue/35/ + maker.variants = {""} + + # This is required because otherwise distlib creates scripts that are not + # executable. + # See https://bitbucket.org/pypa/distlib/issue/32/ + maker.set_mode = True + + # Generate the console and GUI entry points specified in the wheel + scripts_to_generate = get_console_script_specs(console) + + gui_scripts_to_generate = list(starmap("{} = {}".format, gui.items())) + + generated_console_scripts = maker.make_multiple(scripts_to_generate) + generated.extend(generated_console_scripts) + + generated.extend(maker.make_multiple(gui_scripts_to_generate, {"gui": True})) + + if warn_script_location: + msg = message_about_scripts_not_on_PATH(generated_console_scripts) + if msg is not None: + logger.warning(msg) + + generated_file_mode = 0o666 & ~current_umask() + + @contextlib.contextmanager + def _generate_file(path: str, **kwargs: Any) -> Generator[BinaryIO, None, None]: + with adjacent_tmp_file(path, **kwargs) as f: + yield f + os.chmod(f.name, generated_file_mode) + replace(f.name, path) + + dest_info_dir = os.path.join(lib_dir, info_dir) + + # Record pip as the installer + installer_path = os.path.join(dest_info_dir, "INSTALLER") + with _generate_file(installer_path) as installer_file: + installer_file.write(b"pip\n") + generated.append(installer_path) + + # Record the PEP 610 direct URL reference + if direct_url is not None: + direct_url_path = os.path.join(dest_info_dir, DIRECT_URL_METADATA_NAME) + with _generate_file(direct_url_path) as direct_url_file: + direct_url_file.write(direct_url.to_json().encode("utf-8")) + generated.append(direct_url_path) + + # Record the REQUESTED file + if requested: + requested_path = os.path.join(dest_info_dir, "REQUESTED") + with open(requested_path, "wb"): + pass + generated.append(requested_path) + + record_text = distribution.read_text("RECORD") + record_rows = list(csv.reader(record_text.splitlines())) + + rows = get_csv_rows_for_installed( + record_rows, + installed=installed, + changed=changed, + generated=generated, + lib_dir=lib_dir, + ) + + # Record details of all files installed + record_path = os.path.join(dest_info_dir, "RECORD") + + with _generate_file(record_path, **csv_io_kwargs("w")) as record_file: + # Explicitly cast to typing.IO[str] as a workaround for the mypy error: + # "writer" has incompatible type "BinaryIO"; expected "_Writer" + writer = csv.writer(cast("IO[str]", record_file)) + writer.writerows(_normalized_outrows(rows)) + + +@contextlib.contextmanager +def req_error_context(req_description: str) -> Generator[None, None, None]: + try: + yield + except InstallationError as e: + message = f"For req: {req_description}. {e.args[0]}" + raise InstallationError(message) from e + + +def install_wheel( + name: str, + wheel_path: str, + scheme: Scheme, + req_description: str, + pycompile: bool = True, + warn_script_location: bool = True, + direct_url: Optional[DirectUrl] = None, + requested: bool = False, +) -> None: + with ZipFile(wheel_path, allowZip64=True) as z: + with req_error_context(req_description): + _install_wheel( + name=name, + wheel_zip=z, + wheel_path=wheel_path, + scheme=scheme, + pycompile=pycompile, + warn_script_location=warn_script_location, + direct_url=direct_url, + requested=requested, + ) diff --git a/venv/Lib/site-packages/pip/_internal/operations/prepare.py b/venv/Lib/site-packages/pip/_internal/operations/prepare.py new file mode 100644 index 00000000000..e6aa3447200 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/operations/prepare.py @@ -0,0 +1,732 @@ +"""Prepares a distribution for installation +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import mimetypes +import os +import shutil +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, Iterable, List, Optional + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.distributions import make_distribution_for_install_requirement +from pip._internal.distributions.installed import InstalledDistribution +from pip._internal.exceptions import ( + DirectoryUrlHashUnsupported, + HashMismatch, + HashUnpinned, + InstallationError, + MetadataInconsistent, + NetworkConnectionError, + VcsHashUnsupported, +) +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution, get_metadata_distribution +from pip._internal.models.direct_url import ArchiveInfo +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.network.download import BatchDownloader, Downloader +from pip._internal.network.lazy_wheel import ( + HTTPRangeRequestUnsupported, + dist_from_wheel_url, +) +from pip._internal.network.session import PipSession +from pip._internal.operations.build.build_tracker import BuildTracker +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils._log import getLogger +from pip._internal.utils.direct_url_helpers import ( + direct_url_for_editable, + direct_url_from_link, +) +from pip._internal.utils.hashes import Hashes, MissingHashes +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import ( + display_path, + hash_file, + hide_url, + redact_auth_from_requirement, +) +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.unpacking import unpack_file +from pip._internal.vcs import vcs + +logger = getLogger(__name__) + + +def _get_prepared_distribution( + req: InstallRequirement, + build_tracker: BuildTracker, + finder: PackageFinder, + build_isolation: bool, + check_build_deps: bool, +) -> BaseDistribution: + """Prepare a distribution for installation.""" + abstract_dist = make_distribution_for_install_requirement(req) + tracker_id = abstract_dist.build_tracker_id + if tracker_id is not None: + with build_tracker.track(req, tracker_id): + abstract_dist.prepare_distribution_metadata( + finder, build_isolation, check_build_deps + ) + return abstract_dist.get_metadata_distribution() + + +def unpack_vcs_link(link: Link, location: str, verbosity: int) -> None: + vcs_backend = vcs.get_backend_for_scheme(link.scheme) + assert vcs_backend is not None + vcs_backend.unpack(location, url=hide_url(link.url), verbosity=verbosity) + + +@dataclass +class File: + path: str + content_type: Optional[str] = None + + def __post_init__(self) -> None: + if self.content_type is None: + self.content_type = mimetypes.guess_type(self.path)[0] + + +def get_http_url( + link: Link, + download: Downloader, + download_dir: Optional[str] = None, + hashes: Optional[Hashes] = None, +) -> File: + temp_dir = TempDirectory(kind="unpack", globally_managed=True) + # If a download dir is specified, is the file already downloaded there? + already_downloaded_path = None + if download_dir: + already_downloaded_path = _check_download_dir(link, download_dir, hashes) + + if already_downloaded_path: + from_path = already_downloaded_path + content_type = None + else: + # let's download to a tmp dir + from_path, content_type = download(link, temp_dir.path) + if hashes: + hashes.check_against_path(from_path) + + return File(from_path, content_type) + + +def get_file_url( + link: Link, download_dir: Optional[str] = None, hashes: Optional[Hashes] = None +) -> File: + """Get file and optionally check its hash.""" + # If a download dir is specified, is the file already there and valid? + already_downloaded_path = None + if download_dir: + already_downloaded_path = _check_download_dir(link, download_dir, hashes) + + if already_downloaded_path: + from_path = already_downloaded_path + else: + from_path = link.file_path + + # If --require-hashes is off, `hashes` is either empty, the + # link's embedded hash, or MissingHashes; it is required to + # match. If --require-hashes is on, we are satisfied by any + # hash in `hashes` matching: a URL-based or an option-based + # one; no internet-sourced hash will be in `hashes`. + if hashes: + hashes.check_against_path(from_path) + return File(from_path, None) + + +def unpack_url( + link: Link, + location: str, + download: Downloader, + verbosity: int, + download_dir: Optional[str] = None, + hashes: Optional[Hashes] = None, +) -> Optional[File]: + """Unpack link into location, downloading if required. + + :param hashes: A Hashes object, one of whose embedded hashes must match, + or HashMismatch will be raised. If the Hashes is empty, no matches are + required, and unhashable types of requirements (like VCS ones, which + would ordinarily raise HashUnsupported) are allowed. + """ + # non-editable vcs urls + if link.is_vcs: + unpack_vcs_link(link, location, verbosity=verbosity) + return None + + assert not link.is_existing_dir() + + # file urls + if link.is_file: + file = get_file_url(link, download_dir, hashes=hashes) + + # http urls + else: + file = get_http_url( + link, + download, + download_dir, + hashes=hashes, + ) + + # unpack the archive to the build dir location. even when only downloading + # archives, they have to be unpacked to parse dependencies, except wheels + if not link.is_wheel: + unpack_file(file.path, location, file.content_type) + + return file + + +def _check_download_dir( + link: Link, + download_dir: str, + hashes: Optional[Hashes], + warn_on_hash_mismatch: bool = True, +) -> Optional[str]: + """Check download_dir for previously downloaded file with correct hash + If a correct file is found return its path else None + """ + download_path = os.path.join(download_dir, link.filename) + + if not os.path.exists(download_path): + return None + + # If already downloaded, does its hash match? + logger.info("File was already downloaded %s", download_path) + if hashes: + try: + hashes.check_against_path(download_path) + except HashMismatch: + if warn_on_hash_mismatch: + logger.warning( + "Previously-downloaded file %s has bad hash. Re-downloading.", + download_path, + ) + os.unlink(download_path) + return None + return download_path + + +class RequirementPreparer: + """Prepares a Requirement""" + + def __init__( + self, + build_dir: str, + download_dir: Optional[str], + src_dir: str, + build_isolation: bool, + check_build_deps: bool, + build_tracker: BuildTracker, + session: PipSession, + progress_bar: str, + finder: PackageFinder, + require_hashes: bool, + use_user_site: bool, + lazy_wheel: bool, + verbosity: int, + legacy_resolver: bool, + ) -> None: + super().__init__() + + self.src_dir = src_dir + self.build_dir = build_dir + self.build_tracker = build_tracker + self._session = session + self._download = Downloader(session, progress_bar) + self._batch_download = BatchDownloader(session, progress_bar) + self.finder = finder + + # Where still-packed archives should be written to. If None, they are + # not saved, and are deleted immediately after unpacking. + self.download_dir = download_dir + + # Is build isolation allowed? + self.build_isolation = build_isolation + + # Should check build dependencies? + self.check_build_deps = check_build_deps + + # Should hash-checking be required? + self.require_hashes = require_hashes + + # Should install in user site-packages? + self.use_user_site = use_user_site + + # Should wheels be downloaded lazily? + self.use_lazy_wheel = lazy_wheel + + # How verbose should underlying tooling be? + self.verbosity = verbosity + + # Are we using the legacy resolver? + self.legacy_resolver = legacy_resolver + + # Memoized downloaded files, as mapping of url: path. + self._downloaded: Dict[str, str] = {} + + # Previous "header" printed for a link-based InstallRequirement + self._previous_requirement_header = ("", "") + + def _log_preparing_link(self, req: InstallRequirement) -> None: + """Provide context for the requirement being prepared.""" + if req.link.is_file and not req.is_wheel_from_cache: + message = "Processing %s" + information = str(display_path(req.link.file_path)) + else: + message = "Collecting %s" + information = redact_auth_from_requirement(req.req) if req.req else str(req) + + # If we used req.req, inject requirement source if available (this + # would already be included if we used req directly) + if req.req and req.comes_from: + if isinstance(req.comes_from, str): + comes_from: Optional[str] = req.comes_from + else: + comes_from = req.comes_from.from_path() + if comes_from: + information += f" (from {comes_from})" + + if (message, information) != self._previous_requirement_header: + self._previous_requirement_header = (message, information) + logger.info(message, information) + + if req.is_wheel_from_cache: + with indent_log(): + logger.info("Using cached %s", req.link.filename) + + def _ensure_link_req_src_dir( + self, req: InstallRequirement, parallel_builds: bool + ) -> None: + """Ensure source_dir of a linked InstallRequirement.""" + # Since source_dir is only set for editable requirements. + if req.link.is_wheel: + # We don't need to unpack wheels, so no need for a source + # directory. + return + assert req.source_dir is None + if req.link.is_existing_dir(): + # build local directories in-tree + req.source_dir = req.link.file_path + return + + # We always delete unpacked sdists after pip runs. + req.ensure_has_source_dir( + self.build_dir, + autodelete=True, + parallel_builds=parallel_builds, + ) + req.ensure_pristine_source_checkout() + + def _get_linked_req_hashes(self, req: InstallRequirement) -> Hashes: + # By the time this is called, the requirement's link should have + # been checked so we can tell what kind of requirements req is + # and raise some more informative errors than otherwise. + # (For example, we can raise VcsHashUnsupported for a VCS URL + # rather than HashMissing.) + if not self.require_hashes: + return req.hashes(trust_internet=True) + + # We could check these first 2 conditions inside unpack_url + # and save repetition of conditions, but then we would + # report less-useful error messages for unhashable + # requirements, complaining that there's no hash provided. + if req.link.is_vcs: + raise VcsHashUnsupported() + if req.link.is_existing_dir(): + raise DirectoryUrlHashUnsupported() + + # Unpinned packages are asking for trouble when a new version + # is uploaded. This isn't a security check, but it saves users + # a surprising hash mismatch in the future. + # file:/// URLs aren't pinnable, so don't complain about them + # not being pinned. + if not req.is_direct and not req.is_pinned: + raise HashUnpinned() + + # If known-good hashes are missing for this requirement, + # shim it with a facade object that will provoke hash + # computation and then raise a HashMissing exception + # showing the user what the hash should be. + return req.hashes(trust_internet=False) or MissingHashes() + + def _fetch_metadata_only( + self, + req: InstallRequirement, + ) -> Optional[BaseDistribution]: + if self.legacy_resolver: + logger.debug( + "Metadata-only fetching is not used in the legacy resolver", + ) + return None + if self.require_hashes: + logger.debug( + "Metadata-only fetching is not used as hash checking is required", + ) + return None + # Try PEP 658 metadata first, then fall back to lazy wheel if unavailable. + return self._fetch_metadata_using_link_data_attr( + req + ) or self._fetch_metadata_using_lazy_wheel(req.link) + + def _fetch_metadata_using_link_data_attr( + self, + req: InstallRequirement, + ) -> Optional[BaseDistribution]: + """Fetch metadata from the data-dist-info-metadata attribute, if possible.""" + # (1) Get the link to the metadata file, if provided by the backend. + metadata_link = req.link.metadata_link() + if metadata_link is None: + return None + assert req.req is not None + logger.verbose( + "Obtaining dependency information for %s from %s", + req.req, + metadata_link, + ) + # (2) Download the contents of the METADATA file, separate from the dist itself. + metadata_file = get_http_url( + metadata_link, + self._download, + hashes=metadata_link.as_hashes(), + ) + with open(metadata_file.path, "rb") as f: + metadata_contents = f.read() + # (3) Generate a dist just from those file contents. + metadata_dist = get_metadata_distribution( + metadata_contents, + req.link.filename, + req.req.name, + ) + # (4) Ensure the Name: field from the METADATA file matches the name from the + # install requirement. + # + # NB: raw_name will fall back to the name from the install requirement if + # the Name: field is not present, but it's noted in the raw_name docstring + # that that should NEVER happen anyway. + if canonicalize_name(metadata_dist.raw_name) != canonicalize_name(req.req.name): + raise MetadataInconsistent( + req, "Name", req.req.name, metadata_dist.raw_name + ) + return metadata_dist + + def _fetch_metadata_using_lazy_wheel( + self, + link: Link, + ) -> Optional[BaseDistribution]: + """Fetch metadata using lazy wheel, if possible.""" + # --use-feature=fast-deps must be provided. + if not self.use_lazy_wheel: + return None + if link.is_file or not link.is_wheel: + logger.debug( + "Lazy wheel is not used as %r does not point to a remote wheel", + link, + ) + return None + + wheel = Wheel(link.filename) + name = canonicalize_name(wheel.name) + logger.info( + "Obtaining dependency information from %s %s", + name, + wheel.version, + ) + url = link.url.split("#", 1)[0] + try: + return dist_from_wheel_url(name, url, self._session) + except HTTPRangeRequestUnsupported: + logger.debug("%s does not support range requests", url) + return None + + def _complete_partial_requirements( + self, + partially_downloaded_reqs: Iterable[InstallRequirement], + parallel_builds: bool = False, + ) -> None: + """Download any requirements which were only fetched by metadata.""" + # Download to a temporary directory. These will be copied over as + # needed for downstream 'download', 'wheel', and 'install' commands. + temp_dir = TempDirectory(kind="unpack", globally_managed=True).path + + # Map each link to the requirement that owns it. This allows us to set + # `req.local_file_path` on the appropriate requirement after passing + # all the links at once into BatchDownloader. + links_to_fully_download: Dict[Link, InstallRequirement] = {} + for req in partially_downloaded_reqs: + assert req.link + links_to_fully_download[req.link] = req + + batch_download = self._batch_download( + links_to_fully_download.keys(), + temp_dir, + ) + for link, (filepath, _) in batch_download: + logger.debug("Downloading link %s to %s", link, filepath) + req = links_to_fully_download[link] + # Record the downloaded file path so wheel reqs can extract a Distribution + # in .get_dist(). + req.local_file_path = filepath + # Record that the file is downloaded so we don't do it again in + # _prepare_linked_requirement(). + self._downloaded[req.link.url] = filepath + + # If this is an sdist, we need to unpack it after downloading, but the + # .source_dir won't be set up until we are in _prepare_linked_requirement(). + # Add the downloaded archive to the install requirement to unpack after + # preparing the source dir. + if not req.is_wheel: + req.needs_unpacked_archive(Path(filepath)) + + # This step is necessary to ensure all lazy wheels are processed + # successfully by the 'download', 'wheel', and 'install' commands. + for req in partially_downloaded_reqs: + self._prepare_linked_requirement(req, parallel_builds) + + def prepare_linked_requirement( + self, req: InstallRequirement, parallel_builds: bool = False + ) -> BaseDistribution: + """Prepare a requirement to be obtained from req.link.""" + assert req.link + self._log_preparing_link(req) + with indent_log(): + # Check if the relevant file is already available + # in the download directory + file_path = None + if self.download_dir is not None and req.link.is_wheel: + hashes = self._get_linked_req_hashes(req) + file_path = _check_download_dir( + req.link, + self.download_dir, + hashes, + # When a locally built wheel has been found in cache, we don't warn + # about re-downloading when the already downloaded wheel hash does + # not match. This is because the hash must be checked against the + # original link, not the cached link. It that case the already + # downloaded file will be removed and re-fetched from cache (which + # implies a hash check against the cache entry's origin.json). + warn_on_hash_mismatch=not req.is_wheel_from_cache, + ) + + if file_path is not None: + # The file is already available, so mark it as downloaded + self._downloaded[req.link.url] = file_path + else: + # The file is not available, attempt to fetch only metadata + metadata_dist = self._fetch_metadata_only(req) + if metadata_dist is not None: + req.needs_more_preparation = True + return metadata_dist + + # None of the optimizations worked, fully prepare the requirement + return self._prepare_linked_requirement(req, parallel_builds) + + def prepare_linked_requirements_more( + self, reqs: Iterable[InstallRequirement], parallel_builds: bool = False + ) -> None: + """Prepare linked requirements more, if needed.""" + reqs = [req for req in reqs if req.needs_more_preparation] + for req in reqs: + # Determine if any of these requirements were already downloaded. + if self.download_dir is not None and req.link.is_wheel: + hashes = self._get_linked_req_hashes(req) + file_path = _check_download_dir(req.link, self.download_dir, hashes) + if file_path is not None: + self._downloaded[req.link.url] = file_path + req.needs_more_preparation = False + + # Prepare requirements we found were already downloaded for some + # reason. The other downloads will be completed separately. + partially_downloaded_reqs: List[InstallRequirement] = [] + for req in reqs: + if req.needs_more_preparation: + partially_downloaded_reqs.append(req) + else: + self._prepare_linked_requirement(req, parallel_builds) + + # TODO: separate this part out from RequirementPreparer when the v1 + # resolver can be removed! + self._complete_partial_requirements( + partially_downloaded_reqs, + parallel_builds=parallel_builds, + ) + + def _prepare_linked_requirement( + self, req: InstallRequirement, parallel_builds: bool + ) -> BaseDistribution: + assert req.link + link = req.link + + hashes = self._get_linked_req_hashes(req) + + if hashes and req.is_wheel_from_cache: + assert req.download_info is not None + assert link.is_wheel + assert link.is_file + # We need to verify hashes, and we have found the requirement in the cache + # of locally built wheels. + if ( + isinstance(req.download_info.info, ArchiveInfo) + and req.download_info.info.hashes + and hashes.has_one_of(req.download_info.info.hashes) + ): + # At this point we know the requirement was built from a hashable source + # artifact, and we verified that the cache entry's hash of the original + # artifact matches one of the hashes we expect. We don't verify hashes + # against the cached wheel, because the wheel is not the original. + hashes = None + else: + logger.warning( + "The hashes of the source archive found in cache entry " + "don't match, ignoring cached built wheel " + "and re-downloading source." + ) + req.link = req.cached_wheel_source_link + link = req.link + + self._ensure_link_req_src_dir(req, parallel_builds) + + if link.is_existing_dir(): + local_file = None + elif link.url not in self._downloaded: + try: + local_file = unpack_url( + link, + req.source_dir, + self._download, + self.verbosity, + self.download_dir, + hashes, + ) + except NetworkConnectionError as exc: + raise InstallationError( + f"Could not install requirement {req} because of HTTP " + f"error {exc} for URL {link}" + ) + else: + file_path = self._downloaded[link.url] + if hashes: + hashes.check_against_path(file_path) + local_file = File(file_path, content_type=None) + + # If download_info is set, we got it from the wheel cache. + if req.download_info is None: + # Editables don't go through this function (see + # prepare_editable_requirement). + assert not req.editable + req.download_info = direct_url_from_link(link, req.source_dir) + # Make sure we have a hash in download_info. If we got it as part of the + # URL, it will have been verified and we can rely on it. Otherwise we + # compute it from the downloaded file. + # FIXME: https://github.com/pypa/pip/issues/11943 + if ( + isinstance(req.download_info.info, ArchiveInfo) + and not req.download_info.info.hashes + and local_file + ): + hash = hash_file(local_file.path)[0].hexdigest() + # We populate info.hash for backward compatibility. + # This will automatically populate info.hashes. + req.download_info.info.hash = f"sha256={hash}" + + # For use in later processing, + # preserve the file path on the requirement. + if local_file: + req.local_file_path = local_file.path + + dist = _get_prepared_distribution( + req, + self.build_tracker, + self.finder, + self.build_isolation, + self.check_build_deps, + ) + return dist + + def save_linked_requirement(self, req: InstallRequirement) -> None: + assert self.download_dir is not None + assert req.link is not None + link = req.link + if link.is_vcs or (link.is_existing_dir() and req.editable): + # Make a .zip of the source_dir we already created. + req.archive(self.download_dir) + return + + if link.is_existing_dir(): + logger.debug( + "Not copying link to destination directory " + "since it is a directory: %s", + link, + ) + return + if req.local_file_path is None: + # No distribution was downloaded for this requirement. + return + + download_location = os.path.join(self.download_dir, link.filename) + if not os.path.exists(download_location): + shutil.copy(req.local_file_path, download_location) + download_path = display_path(download_location) + logger.info("Saved %s", download_path) + + def prepare_editable_requirement( + self, + req: InstallRequirement, + ) -> BaseDistribution: + """Prepare an editable requirement.""" + assert req.editable, "cannot prepare a non-editable req as editable" + + logger.info("Obtaining %s", req) + + with indent_log(): + if self.require_hashes: + raise InstallationError( + f"The editable requirement {req} cannot be installed when " + "requiring hashes, because there is no single file to " + "hash." + ) + req.ensure_has_source_dir(self.src_dir) + req.update_editable() + assert req.source_dir + req.download_info = direct_url_for_editable(req.unpacked_source_directory) + + dist = _get_prepared_distribution( + req, + self.build_tracker, + self.finder, + self.build_isolation, + self.check_build_deps, + ) + + req.check_if_exists(self.use_user_site) + + return dist + + def prepare_installed_requirement( + self, + req: InstallRequirement, + skip_reason: str, + ) -> BaseDistribution: + """Prepare an already-installed requirement.""" + assert req.satisfied_by, "req should have been satisfied but isn't" + assert skip_reason is not None, ( + "did not get skip reason skipped but req.satisfied_by " + f"is set to {req.satisfied_by}" + ) + logger.info( + "Requirement %s: %s (%s)", skip_reason, req, req.satisfied_by.version + ) + with indent_log(): + if self.require_hashes: + logger.debug( + "Since it is already installed, we are trusting this " + "package without checking its hash. To ensure a " + "completely repeatable environment, install into an " + "empty virtualenv." + ) + return InstalledDistribution(req).get_metadata_distribution() diff --git a/venv/Lib/site-packages/pip/_internal/pyproject.py b/venv/Lib/site-packages/pip/_internal/pyproject.py new file mode 100644 index 00000000000..2a9cad4803e --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/pyproject.py @@ -0,0 +1,185 @@ +import importlib.util +import os +import sys +from collections import namedtuple +from typing import Any, List, Optional + +if sys.version_info >= (3, 11): + import tomllib +else: + from pip._vendor import tomli as tomllib + +from pip._vendor.packaging.requirements import InvalidRequirement + +from pip._internal.exceptions import ( + InstallationError, + InvalidPyProjectBuildRequires, + MissingPyProjectBuildRequires, +) +from pip._internal.utils.packaging import get_requirement + + +def _is_list_of_str(obj: Any) -> bool: + return isinstance(obj, list) and all(isinstance(item, str) for item in obj) + + +def make_pyproject_path(unpacked_source_directory: str) -> str: + return os.path.join(unpacked_source_directory, "pyproject.toml") + + +BuildSystemDetails = namedtuple( + "BuildSystemDetails", ["requires", "backend", "check", "backend_path"] +) + + +def load_pyproject_toml( + use_pep517: Optional[bool], pyproject_toml: str, setup_py: str, req_name: str +) -> Optional[BuildSystemDetails]: + """Load the pyproject.toml file. + + Parameters: + use_pep517 - Has the user requested PEP 517 processing? None + means the user hasn't explicitly specified. + pyproject_toml - Location of the project's pyproject.toml file + setup_py - Location of the project's setup.py file + req_name - The name of the requirement we're processing (for + error reporting) + + Returns: + None if we should use the legacy code path, otherwise a tuple + ( + requirements from pyproject.toml, + name of PEP 517 backend, + requirements we should check are installed after setting + up the build environment + directory paths to import the backend from (backend-path), + relative to the project root. + ) + """ + has_pyproject = os.path.isfile(pyproject_toml) + has_setup = os.path.isfile(setup_py) + + if not has_pyproject and not has_setup: + raise InstallationError( + f"{req_name} does not appear to be a Python project: " + f"neither 'setup.py' nor 'pyproject.toml' found." + ) + + if has_pyproject: + with open(pyproject_toml, encoding="utf-8") as f: + pp_toml = tomllib.loads(f.read()) + build_system = pp_toml.get("build-system") + else: + build_system = None + + # The following cases must use PEP 517 + # We check for use_pep517 being non-None and falsey because that means + # the user explicitly requested --no-use-pep517. The value 0 as + # opposed to False can occur when the value is provided via an + # environment variable or config file option (due to the quirk of + # strtobool() returning an integer in pip's configuration code). + if has_pyproject and not has_setup: + if use_pep517 is not None and not use_pep517: + raise InstallationError( + "Disabling PEP 517 processing is invalid: " + "project does not have a setup.py" + ) + use_pep517 = True + elif build_system and "build-backend" in build_system: + if use_pep517 is not None and not use_pep517: + raise InstallationError( + "Disabling PEP 517 processing is invalid: " + "project specifies a build backend of {} " + "in pyproject.toml".format(build_system["build-backend"]) + ) + use_pep517 = True + + # If we haven't worked out whether to use PEP 517 yet, + # and the user hasn't explicitly stated a preference, + # we do so if the project has a pyproject.toml file + # or if we cannot import setuptools or wheels. + + # We fallback to PEP 517 when without setuptools or without the wheel package, + # so setuptools can be installed as a default build backend. + # For more info see: + # https://discuss.python.org/t/pip-without-setuptools-could-the-experience-be-improved/11810/9 + # https://github.com/pypa/pip/issues/8559 + elif use_pep517 is None: + use_pep517 = ( + has_pyproject + or not importlib.util.find_spec("setuptools") + or not importlib.util.find_spec("wheel") + ) + + # At this point, we know whether we're going to use PEP 517. + assert use_pep517 is not None + + # If we're using the legacy code path, there is nothing further + # for us to do here. + if not use_pep517: + return None + + if build_system is None: + # Either the user has a pyproject.toml with no build-system + # section, or the user has no pyproject.toml, but has opted in + # explicitly via --use-pep517. + # In the absence of any explicit backend specification, we + # assume the setuptools backend that most closely emulates the + # traditional direct setup.py execution, and require wheel and + # a version of setuptools that supports that backend. + + build_system = { + "requires": ["setuptools>=40.8.0"], + "build-backend": "setuptools.build_meta:__legacy__", + } + + # If we're using PEP 517, we have build system information (either + # from pyproject.toml, or defaulted by the code above). + # Note that at this point, we do not know if the user has actually + # specified a backend, though. + assert build_system is not None + + # Ensure that the build-system section in pyproject.toml conforms + # to PEP 518. + + # Specifying the build-system table but not the requires key is invalid + if "requires" not in build_system: + raise MissingPyProjectBuildRequires(package=req_name) + + # Error out if requires is not a list of strings + requires = build_system["requires"] + if not _is_list_of_str(requires): + raise InvalidPyProjectBuildRequires( + package=req_name, + reason="It is not a list of strings.", + ) + + # Each requirement must be valid as per PEP 508 + for requirement in requires: + try: + get_requirement(requirement) + except InvalidRequirement as error: + raise InvalidPyProjectBuildRequires( + package=req_name, + reason=f"It contains an invalid requirement: {requirement!r}", + ) from error + + backend = build_system.get("build-backend") + backend_path = build_system.get("backend-path", []) + check: List[str] = [] + if backend is None: + # If the user didn't specify a backend, we assume they want to use + # the setuptools backend. But we can't be sure they have included + # a version of setuptools which supplies the backend. So we + # make a note to check that this requirement is present once + # we have set up the environment. + # This is quite a lot of work to check for a very specific case. But + # the problem is, that case is potentially quite common - projects that + # adopted PEP 518 early for the ability to specify requirements to + # execute setup.py, but never considered needing to mention the build + # tools themselves. The original PEP 518 code had a similar check (but + # implemented in a different way). + backend = "setuptools.build_meta:__legacy__" + check = ["setuptools>=40.8.0"] + + return BuildSystemDetails(requires, backend, check, backend_path) diff --git a/venv/Lib/site-packages/pip/_internal/req/__init__.py b/venv/Lib/site-packages/pip/_internal/req/__init__.py new file mode 100644 index 00000000000..422d851d729 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/__init__.py @@ -0,0 +1,90 @@ +import collections +import logging +from dataclasses import dataclass +from typing import Generator, List, Optional, Sequence, Tuple + +from pip._internal.utils.logging import indent_log + +from .req_file import parse_requirements +from .req_install import InstallRequirement +from .req_set import RequirementSet + +__all__ = [ + "RequirementSet", + "InstallRequirement", + "parse_requirements", + "install_given_reqs", +] + +logger = logging.getLogger(__name__) + + +@dataclass(frozen=True) +class InstallationResult: + name: str + + +def _validate_requirements( + requirements: List[InstallRequirement], +) -> Generator[Tuple[str, InstallRequirement], None, None]: + for req in requirements: + assert req.name, f"invalid to-be-installed requirement: {req}" + yield req.name, req + + +def install_given_reqs( + requirements: List[InstallRequirement], + global_options: Sequence[str], + root: Optional[str], + home: Optional[str], + prefix: Optional[str], + warn_script_location: bool, + use_user_site: bool, + pycompile: bool, +) -> List[InstallationResult]: + """ + Install everything in the given list. + + (to be called after having downloaded and unpacked the packages) + """ + to_install = collections.OrderedDict(_validate_requirements(requirements)) + + if to_install: + logger.info( + "Installing collected packages: %s", + ", ".join(to_install.keys()), + ) + + installed = [] + + with indent_log(): + for req_name, requirement in to_install.items(): + if requirement.should_reinstall: + logger.info("Attempting uninstall: %s", req_name) + with indent_log(): + uninstalled_pathset = requirement.uninstall(auto_confirm=True) + else: + uninstalled_pathset = None + + try: + requirement.install( + global_options, + root=root, + home=home, + prefix=prefix, + warn_script_location=warn_script_location, + use_user_site=use_user_site, + pycompile=pycompile, + ) + except Exception: + # if install did not succeed, rollback previous uninstall + if uninstalled_pathset and not requirement.install_succeeded: + uninstalled_pathset.rollback() + raise + else: + if uninstalled_pathset and requirement.install_succeeded: + uninstalled_pathset.commit() + + installed.append(InstallationResult(req_name)) + + return installed diff --git a/venv/Lib/site-packages/pip/_internal/req/constructors.py b/venv/Lib/site-packages/pip/_internal/req/constructors.py new file mode 100644 index 00000000000..d73236e05c6 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/constructors.py @@ -0,0 +1,560 @@ +"""Backing implementation for InstallRequirement's various constructors + +The idea here is that these formed a major chunk of InstallRequirement's size +so, moving them and support code dedicated to them outside of that class +helps creates for better understandability for the rest of the code. + +These are meant to be used elsewhere within pip to create instances of +InstallRequirement. +""" + +import copy +import logging +import os +import re +from dataclasses import dataclass +from typing import Collection, Dict, List, Optional, Set, Tuple, Union + +from pip._vendor.packaging.markers import Marker +from pip._vendor.packaging.requirements import InvalidRequirement, Requirement +from pip._vendor.packaging.specifiers import Specifier + +from pip._internal.exceptions import InstallationError +from pip._internal.models.index import PyPI, TestPyPI +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.req.req_file import ParsedRequirement +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.filetypes import is_archive_file +from pip._internal.utils.misc import is_installable_dir +from pip._internal.utils.packaging import get_requirement +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs import is_url, vcs + +__all__ = [ + "install_req_from_editable", + "install_req_from_line", + "parse_editable", +] + +logger = logging.getLogger(__name__) +operators = Specifier._operators.keys() + + +def _strip_extras(path: str) -> Tuple[str, Optional[str]]: + m = re.match(r"^(.+)(\[[^\]]+\])$", path) + extras = None + if m: + path_no_extras = m.group(1) + extras = m.group(2) + else: + path_no_extras = path + + return path_no_extras, extras + + +def convert_extras(extras: Optional[str]) -> Set[str]: + if not extras: + return set() + return get_requirement("placeholder" + extras.lower()).extras + + +def _set_requirement_extras(req: Requirement, new_extras: Set[str]) -> Requirement: + """ + Returns a new requirement based on the given one, with the supplied extras. If the + given requirement already has extras those are replaced (or dropped if no new extras + are given). + """ + match: Optional[re.Match[str]] = re.fullmatch( + # see https://peps.python.org/pep-0508/#complete-grammar + r"([\w\t .-]+)(\[[^\]]*\])?(.*)", + str(req), + flags=re.ASCII, + ) + # ireq.req is a valid requirement so the regex should always match + assert ( + match is not None + ), f"regex match on requirement {req} failed, this should never happen" + pre: Optional[str] = match.group(1) + post: Optional[str] = match.group(3) + assert ( + pre is not None and post is not None + ), f"regex group selection for requirement {req} failed, this should never happen" + extras: str = "[%s]" % ",".join(sorted(new_extras)) if new_extras else "" + return get_requirement(f"{pre}{extras}{post}") + + +def parse_editable(editable_req: str) -> Tuple[Optional[str], str, Set[str]]: + """Parses an editable requirement into: + - a requirement name + - an URL + - extras + - editable options + Accepted requirements: + svn+http://blahblah@rev#egg=Foobar[baz]&subdirectory=version_subdir + .[some_extra] + """ + + url = editable_req + + # If a file path is specified with extras, strip off the extras. + url_no_extras, extras = _strip_extras(url) + + if os.path.isdir(url_no_extras): + # Treating it as code that has already been checked out + url_no_extras = path_to_url(url_no_extras) + + if url_no_extras.lower().startswith("file:"): + package_name = Link(url_no_extras).egg_fragment + if extras: + return ( + package_name, + url_no_extras, + get_requirement("placeholder" + extras.lower()).extras, + ) + else: + return package_name, url_no_extras, set() + + for version_control in vcs: + if url.lower().startswith(f"{version_control}:"): + url = f"{version_control}+{url}" + break + + link = Link(url) + + if not link.is_vcs: + backends = ", ".join(vcs.all_schemes) + raise InstallationError( + f"{editable_req} is not a valid editable requirement. " + f"It should either be a path to a local project or a VCS URL " + f"(beginning with {backends})." + ) + + package_name = link.egg_fragment + if not package_name: + raise InstallationError( + f"Could not detect requirement name for '{editable_req}', " + "please specify one with #egg=your_package_name" + ) + return package_name, url, set() + + +def check_first_requirement_in_file(filename: str) -> None: + """Check if file is parsable as a requirements file. + + This is heavily based on ``pkg_resources.parse_requirements``, but + simplified to just check the first meaningful line. + + :raises InvalidRequirement: If the first meaningful line cannot be parsed + as an requirement. + """ + with open(filename, encoding="utf-8", errors="ignore") as f: + # Create a steppable iterator, so we can handle \-continuations. + lines = ( + line + for line in (line.strip() for line in f) + if line and not line.startswith("#") # Skip blank lines/comments. + ) + + for line in lines: + # Drop comments -- a hash without a space may be in a URL. + if " #" in line: + line = line[: line.find(" #")] + # If there is a line continuation, drop it, and append the next line. + if line.endswith("\\"): + line = line[:-2].strip() + next(lines, "") + get_requirement(line) + return + + +def deduce_helpful_msg(req: str) -> str: + """Returns helpful msg in case requirements file does not exist, + or cannot be parsed. + + :params req: Requirements file path + """ + if not os.path.exists(req): + return f" File '{req}' does not exist." + msg = " The path does exist. " + # Try to parse and check if it is a requirements file. + try: + check_first_requirement_in_file(req) + except InvalidRequirement: + logger.debug("Cannot parse '%s' as requirements file", req) + else: + msg += ( + f"The argument you provided " + f"({req}) appears to be a" + f" requirements file. If that is the" + f" case, use the '-r' flag to install" + f" the packages specified within it." + ) + return msg + + +@dataclass(frozen=True) +class RequirementParts: + requirement: Optional[Requirement] + link: Optional[Link] + markers: Optional[Marker] + extras: Set[str] + + +def parse_req_from_editable(editable_req: str) -> RequirementParts: + name, url, extras_override = parse_editable(editable_req) + + if name is not None: + try: + req: Optional[Requirement] = get_requirement(name) + except InvalidRequirement as exc: + raise InstallationError(f"Invalid requirement: {name!r}: {exc}") + else: + req = None + + link = Link(url) + + return RequirementParts(req, link, None, extras_override) + + +# ---- The actual constructors follow ---- + + +def install_req_from_editable( + editable_req: str, + comes_from: Optional[Union[InstallRequirement, str]] = None, + *, + use_pep517: Optional[bool] = None, + isolated: bool = False, + global_options: Optional[List[str]] = None, + hash_options: Optional[Dict[str, List[str]]] = None, + constraint: bool = False, + user_supplied: bool = False, + permit_editable_wheels: bool = False, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, +) -> InstallRequirement: + parts = parse_req_from_editable(editable_req) + + return InstallRequirement( + parts.requirement, + comes_from=comes_from, + user_supplied=user_supplied, + editable=True, + permit_editable_wheels=permit_editable_wheels, + link=parts.link, + constraint=constraint, + use_pep517=use_pep517, + isolated=isolated, + global_options=global_options, + hash_options=hash_options, + config_settings=config_settings, + extras=parts.extras, + ) + + +def _looks_like_path(name: str) -> bool: + """Checks whether the string "looks like" a path on the filesystem. + + This does not check whether the target actually exists, only judge from the + appearance. + + Returns true if any of the following conditions is true: + * a path separator is found (either os.path.sep or os.path.altsep); + * a dot is found (which represents the current directory). + """ + if os.path.sep in name: + return True + if os.path.altsep is not None and os.path.altsep in name: + return True + if name.startswith("."): + return True + return False + + +def _get_url_from_path(path: str, name: str) -> Optional[str]: + """ + First, it checks whether a provided path is an installable directory. If it + is, returns the path. + + If false, check if the path is an archive file (such as a .whl). + The function checks if the path is a file. If false, if the path has + an @, it will treat it as a PEP 440 URL requirement and return the path. + """ + if _looks_like_path(name) and os.path.isdir(path): + if is_installable_dir(path): + return path_to_url(path) + # TODO: The is_installable_dir test here might not be necessary + # now that it is done in load_pyproject_toml too. + raise InstallationError( + f"Directory {name!r} is not installable. Neither 'setup.py' " + "nor 'pyproject.toml' found." + ) + if not is_archive_file(path): + return None + if os.path.isfile(path): + return path_to_url(path) + urlreq_parts = name.split("@", 1) + if len(urlreq_parts) >= 2 and not _looks_like_path(urlreq_parts[0]): + # If the path contains '@' and the part before it does not look + # like a path, try to treat it as a PEP 440 URL req instead. + return None + logger.warning( + "Requirement %r looks like a filename, but the file does not exist", + name, + ) + return path_to_url(path) + + +def parse_req_from_line(name: str, line_source: Optional[str]) -> RequirementParts: + if is_url(name): + marker_sep = "; " + else: + marker_sep = ";" + if marker_sep in name: + name, markers_as_string = name.split(marker_sep, 1) + markers_as_string = markers_as_string.strip() + if not markers_as_string: + markers = None + else: + markers = Marker(markers_as_string) + else: + markers = None + name = name.strip() + req_as_string = None + path = os.path.normpath(os.path.abspath(name)) + link = None + extras_as_string = None + + if is_url(name): + link = Link(name) + else: + p, extras_as_string = _strip_extras(path) + url = _get_url_from_path(p, name) + if url is not None: + link = Link(url) + + # it's a local file, dir, or url + if link: + # Handle relative file URLs + if link.scheme == "file" and re.search(r"\.\./", link.url): + link = Link(path_to_url(os.path.normpath(os.path.abspath(link.path)))) + # wheel file + if link.is_wheel: + wheel = Wheel(link.filename) # can raise InvalidWheelFilename + req_as_string = f"{wheel.name}=={wheel.version}" + else: + # set the req to the egg fragment. when it's not there, this + # will become an 'unnamed' requirement + req_as_string = link.egg_fragment + + # a requirement specifier + else: + req_as_string = name + + extras = convert_extras(extras_as_string) + + def with_source(text: str) -> str: + if not line_source: + return text + return f"{text} (from {line_source})" + + def _parse_req_string(req_as_string: str) -> Requirement: + try: + return get_requirement(req_as_string) + except InvalidRequirement as exc: + if os.path.sep in req_as_string: + add_msg = "It looks like a path." + add_msg += deduce_helpful_msg(req_as_string) + elif "=" in req_as_string and not any( + op in req_as_string for op in operators + ): + add_msg = "= is not a valid operator. Did you mean == ?" + else: + add_msg = "" + msg = with_source(f"Invalid requirement: {req_as_string!r}: {exc}") + if add_msg: + msg += f"\nHint: {add_msg}" + raise InstallationError(msg) + + if req_as_string is not None: + req: Optional[Requirement] = _parse_req_string(req_as_string) + else: + req = None + + return RequirementParts(req, link, markers, extras) + + +def install_req_from_line( + name: str, + comes_from: Optional[Union[str, InstallRequirement]] = None, + *, + use_pep517: Optional[bool] = None, + isolated: bool = False, + global_options: Optional[List[str]] = None, + hash_options: Optional[Dict[str, List[str]]] = None, + constraint: bool = False, + line_source: Optional[str] = None, + user_supplied: bool = False, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, +) -> InstallRequirement: + """Creates an InstallRequirement from a name, which might be a + requirement, directory containing 'setup.py', filename, or URL. + + :param line_source: An optional string describing where the line is from, + for logging purposes in case of an error. + """ + parts = parse_req_from_line(name, line_source) + + return InstallRequirement( + parts.requirement, + comes_from, + link=parts.link, + markers=parts.markers, + use_pep517=use_pep517, + isolated=isolated, + global_options=global_options, + hash_options=hash_options, + config_settings=config_settings, + constraint=constraint, + extras=parts.extras, + user_supplied=user_supplied, + ) + + +def install_req_from_req_string( + req_string: str, + comes_from: Optional[InstallRequirement] = None, + isolated: bool = False, + use_pep517: Optional[bool] = None, + user_supplied: bool = False, +) -> InstallRequirement: + try: + req = get_requirement(req_string) + except InvalidRequirement as exc: + raise InstallationError(f"Invalid requirement: {req_string!r}: {exc}") + + domains_not_allowed = [ + PyPI.file_storage_domain, + TestPyPI.file_storage_domain, + ] + if ( + req.url + and comes_from + and comes_from.link + and comes_from.link.netloc in domains_not_allowed + ): + # Explicitly disallow pypi packages that depend on external urls + raise InstallationError( + "Packages installed from PyPI cannot depend on packages " + "which are not also hosted on PyPI.\n" + f"{comes_from.name} depends on {req} " + ) + + return InstallRequirement( + req, + comes_from, + isolated=isolated, + use_pep517=use_pep517, + user_supplied=user_supplied, + ) + + +def install_req_from_parsed_requirement( + parsed_req: ParsedRequirement, + isolated: bool = False, + use_pep517: Optional[bool] = None, + user_supplied: bool = False, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, +) -> InstallRequirement: + if parsed_req.is_editable: + req = install_req_from_editable( + parsed_req.requirement, + comes_from=parsed_req.comes_from, + use_pep517=use_pep517, + constraint=parsed_req.constraint, + isolated=isolated, + user_supplied=user_supplied, + config_settings=config_settings, + ) + + else: + req = install_req_from_line( + parsed_req.requirement, + comes_from=parsed_req.comes_from, + use_pep517=use_pep517, + isolated=isolated, + global_options=( + parsed_req.options.get("global_options", []) + if parsed_req.options + else [] + ), + hash_options=( + parsed_req.options.get("hashes", {}) if parsed_req.options else {} + ), + constraint=parsed_req.constraint, + line_source=parsed_req.line_source, + user_supplied=user_supplied, + config_settings=config_settings, + ) + return req + + +def install_req_from_link_and_ireq( + link: Link, ireq: InstallRequirement +) -> InstallRequirement: + return InstallRequirement( + req=ireq.req, + comes_from=ireq.comes_from, + editable=ireq.editable, + link=link, + markers=ireq.markers, + use_pep517=ireq.use_pep517, + isolated=ireq.isolated, + global_options=ireq.global_options, + hash_options=ireq.hash_options, + config_settings=ireq.config_settings, + user_supplied=ireq.user_supplied, + ) + + +def install_req_drop_extras(ireq: InstallRequirement) -> InstallRequirement: + """ + Creates a new InstallationRequirement using the given template but without + any extras. Sets the original requirement as the new one's parent + (comes_from). + """ + return InstallRequirement( + req=( + _set_requirement_extras(ireq.req, set()) if ireq.req is not None else None + ), + comes_from=ireq, + editable=ireq.editable, + link=ireq.link, + markers=ireq.markers, + use_pep517=ireq.use_pep517, + isolated=ireq.isolated, + global_options=ireq.global_options, + hash_options=ireq.hash_options, + constraint=ireq.constraint, + extras=[], + config_settings=ireq.config_settings, + user_supplied=ireq.user_supplied, + permit_editable_wheels=ireq.permit_editable_wheels, + ) + + +def install_req_extend_extras( + ireq: InstallRequirement, + extras: Collection[str], +) -> InstallRequirement: + """ + Returns a copy of an installation requirement with some additional extras. + Makes a shallow copy of the ireq object. + """ + result = copy.copy(ireq) + result.extras = {*ireq.extras, *extras} + result.req = ( + _set_requirement_extras(ireq.req, result.extras) + if ireq.req is not None + else None + ) + return result diff --git a/venv/Lib/site-packages/pip/_internal/req/req_file.py b/venv/Lib/site-packages/pip/_internal/req/req_file.py new file mode 100644 index 00000000000..53ad8674cd8 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/req_file.py @@ -0,0 +1,551 @@ +""" +Requirements file parsing +""" + +import logging +import optparse +import os +import re +import shlex +import urllib.parse +from optparse import Values +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Dict, + Generator, + Iterable, + List, + NoReturn, + Optional, + Tuple, +) + +from pip._internal.cli import cmdoptions +from pip._internal.exceptions import InstallationError, RequirementsFileParseError +from pip._internal.models.search_scope import SearchScope +from pip._internal.utils.encoding import auto_decode + +if TYPE_CHECKING: + from pip._internal.index.package_finder import PackageFinder + from pip._internal.network.session import PipSession + +__all__ = ["parse_requirements"] + +ReqFileLines = Iterable[Tuple[int, str]] + +LineParser = Callable[[str], Tuple[str, Values]] + +SCHEME_RE = re.compile(r"^(http|https|file):", re.I) +COMMENT_RE = re.compile(r"(^|\s+)#.*$") + +# Matches environment variable-style values in '${MY_VARIABLE_1}' with the +# variable name consisting of only uppercase letters, digits or the '_' +# (underscore). This follows the POSIX standard defined in IEEE Std 1003.1, +# 2013 Edition. +ENV_VAR_RE = re.compile(r"(?P\$\{(?P[A-Z0-9_]+)\})") + +SUPPORTED_OPTIONS: List[Callable[..., optparse.Option]] = [ + cmdoptions.index_url, + cmdoptions.extra_index_url, + cmdoptions.no_index, + cmdoptions.constraints, + cmdoptions.requirements, + cmdoptions.editable, + cmdoptions.find_links, + cmdoptions.no_binary, + cmdoptions.only_binary, + cmdoptions.prefer_binary, + cmdoptions.require_hashes, + cmdoptions.pre, + cmdoptions.trusted_host, + cmdoptions.use_new_feature, +] + +# options to be passed to requirements +SUPPORTED_OPTIONS_REQ: List[Callable[..., optparse.Option]] = [ + cmdoptions.global_options, + cmdoptions.hash, + cmdoptions.config_settings, +] + +SUPPORTED_OPTIONS_EDITABLE_REQ: List[Callable[..., optparse.Option]] = [ + cmdoptions.config_settings, +] + + +# the 'dest' string values +SUPPORTED_OPTIONS_REQ_DEST = [str(o().dest) for o in SUPPORTED_OPTIONS_REQ] +SUPPORTED_OPTIONS_EDITABLE_REQ_DEST = [ + str(o().dest) for o in SUPPORTED_OPTIONS_EDITABLE_REQ +] + +logger = logging.getLogger(__name__) + + +class ParsedRequirement: + def __init__( + self, + requirement: str, + is_editable: bool, + comes_from: str, + constraint: bool, + options: Optional[Dict[str, Any]] = None, + line_source: Optional[str] = None, + ) -> None: + self.requirement = requirement + self.is_editable = is_editable + self.comes_from = comes_from + self.options = options + self.constraint = constraint + self.line_source = line_source + + +class ParsedLine: + def __init__( + self, + filename: str, + lineno: int, + args: str, + opts: Values, + constraint: bool, + ) -> None: + self.filename = filename + self.lineno = lineno + self.opts = opts + self.constraint = constraint + + if args: + self.is_requirement = True + self.is_editable = False + self.requirement = args + elif opts.editables: + self.is_requirement = True + self.is_editable = True + # We don't support multiple -e on one line + self.requirement = opts.editables[0] + else: + self.is_requirement = False + + +def parse_requirements( + filename: str, + session: "PipSession", + finder: Optional["PackageFinder"] = None, + options: Optional[optparse.Values] = None, + constraint: bool = False, +) -> Generator[ParsedRequirement, None, None]: + """Parse a requirements file and yield ParsedRequirement instances. + + :param filename: Path or url of requirements file. + :param session: PipSession instance. + :param finder: Instance of pip.index.PackageFinder. + :param options: cli options. + :param constraint: If true, parsing a constraint file rather than + requirements file. + """ + line_parser = get_line_parser(finder) + parser = RequirementsFileParser(session, line_parser) + + for parsed_line in parser.parse(filename, constraint): + parsed_req = handle_line( + parsed_line, options=options, finder=finder, session=session + ) + if parsed_req is not None: + yield parsed_req + + +def preprocess(content: str) -> ReqFileLines: + """Split, filter, and join lines, and return a line iterator + + :param content: the content of the requirements file + """ + lines_enum: ReqFileLines = enumerate(content.splitlines(), start=1) + lines_enum = join_lines(lines_enum) + lines_enum = ignore_comments(lines_enum) + lines_enum = expand_env_variables(lines_enum) + return lines_enum + + +def handle_requirement_line( + line: ParsedLine, + options: Optional[optparse.Values] = None, +) -> ParsedRequirement: + # preserve for the nested code path + line_comes_from = "{} {} (line {})".format( + "-c" if line.constraint else "-r", + line.filename, + line.lineno, + ) + + assert line.is_requirement + + # get the options that apply to requirements + if line.is_editable: + supported_dest = SUPPORTED_OPTIONS_EDITABLE_REQ_DEST + else: + supported_dest = SUPPORTED_OPTIONS_REQ_DEST + req_options = {} + for dest in supported_dest: + if dest in line.opts.__dict__ and line.opts.__dict__[dest]: + req_options[dest] = line.opts.__dict__[dest] + + line_source = f"line {line.lineno} of {line.filename}" + return ParsedRequirement( + requirement=line.requirement, + is_editable=line.is_editable, + comes_from=line_comes_from, + constraint=line.constraint, + options=req_options, + line_source=line_source, + ) + + +def handle_option_line( + opts: Values, + filename: str, + lineno: int, + finder: Optional["PackageFinder"] = None, + options: Optional[optparse.Values] = None, + session: Optional["PipSession"] = None, +) -> None: + if opts.hashes: + logger.warning( + "%s line %s has --hash but no requirement, and will be ignored.", + filename, + lineno, + ) + + if options: + # percolate options upward + if opts.require_hashes: + options.require_hashes = opts.require_hashes + if opts.features_enabled: + options.features_enabled.extend( + f for f in opts.features_enabled if f not in options.features_enabled + ) + + # set finder options + if finder: + find_links = finder.find_links + index_urls = finder.index_urls + no_index = finder.search_scope.no_index + if opts.no_index is True: + no_index = True + index_urls = [] + if opts.index_url and not no_index: + index_urls = [opts.index_url] + if opts.extra_index_urls and not no_index: + index_urls.extend(opts.extra_index_urls) + if opts.find_links: + # FIXME: it would be nice to keep track of the source + # of the find_links: support a find-links local path + # relative to a requirements file. + value = opts.find_links[0] + req_dir = os.path.dirname(os.path.abspath(filename)) + relative_to_reqs_file = os.path.join(req_dir, value) + if os.path.exists(relative_to_reqs_file): + value = relative_to_reqs_file + find_links.append(value) + + if session: + # We need to update the auth urls in session + session.update_index_urls(index_urls) + + search_scope = SearchScope( + find_links=find_links, + index_urls=index_urls, + no_index=no_index, + ) + finder.search_scope = search_scope + + if opts.pre: + finder.set_allow_all_prereleases() + + if opts.prefer_binary: + finder.set_prefer_binary() + + if session: + for host in opts.trusted_hosts or []: + source = f"line {lineno} of {filename}" + session.add_trusted_host(host, source=source) + + +def handle_line( + line: ParsedLine, + options: Optional[optparse.Values] = None, + finder: Optional["PackageFinder"] = None, + session: Optional["PipSession"] = None, +) -> Optional[ParsedRequirement]: + """Handle a single parsed requirements line; This can result in + creating/yielding requirements, or updating the finder. + + :param line: The parsed line to be processed. + :param options: CLI options. + :param finder: The finder - updated by non-requirement lines. + :param session: The session - updated by non-requirement lines. + + Returns a ParsedRequirement object if the line is a requirement line, + otherwise returns None. + + For lines that contain requirements, the only options that have an effect + are from SUPPORTED_OPTIONS_REQ, and they are scoped to the + requirement. Other options from SUPPORTED_OPTIONS may be present, but are + ignored. + + For lines that do not contain requirements, the only options that have an + effect are from SUPPORTED_OPTIONS. Options from SUPPORTED_OPTIONS_REQ may + be present, but are ignored. These lines may contain multiple options + (although our docs imply only one is supported), and all our parsed and + affect the finder. + """ + + if line.is_requirement: + parsed_req = handle_requirement_line(line, options) + return parsed_req + else: + handle_option_line( + line.opts, + line.filename, + line.lineno, + finder, + options, + session, + ) + return None + + +class RequirementsFileParser: + def __init__( + self, + session: "PipSession", + line_parser: LineParser, + ) -> None: + self._session = session + self._line_parser = line_parser + + def parse( + self, filename: str, constraint: bool + ) -> Generator[ParsedLine, None, None]: + """Parse a given file, yielding parsed lines.""" + yield from self._parse_and_recurse(filename, constraint) + + def _parse_and_recurse( + self, filename: str, constraint: bool + ) -> Generator[ParsedLine, None, None]: + for line in self._parse_file(filename, constraint): + if not line.is_requirement and ( + line.opts.requirements or line.opts.constraints + ): + # parse a nested requirements file + if line.opts.requirements: + req_path = line.opts.requirements[0] + nested_constraint = False + else: + req_path = line.opts.constraints[0] + nested_constraint = True + + # original file is over http + if SCHEME_RE.search(filename): + # do a url join so relative paths work + req_path = urllib.parse.urljoin(filename, req_path) + # original file and nested file are paths + elif not SCHEME_RE.search(req_path): + # do a join so relative paths work + req_path = os.path.join( + os.path.dirname(filename), + req_path, + ) + + yield from self._parse_and_recurse(req_path, nested_constraint) + else: + yield line + + def _parse_file( + self, filename: str, constraint: bool + ) -> Generator[ParsedLine, None, None]: + _, content = get_file_content(filename, self._session) + + lines_enum = preprocess(content) + + for line_number, line in lines_enum: + try: + args_str, opts = self._line_parser(line) + except OptionParsingError as e: + # add offending line + msg = f"Invalid requirement: {line}\n{e.msg}" + raise RequirementsFileParseError(msg) + + yield ParsedLine( + filename, + line_number, + args_str, + opts, + constraint, + ) + + +def get_line_parser(finder: Optional["PackageFinder"]) -> LineParser: + def parse_line(line: str) -> Tuple[str, Values]: + # Build new parser for each line since it accumulates appendable + # options. + parser = build_parser() + defaults = parser.get_default_values() + defaults.index_url = None + if finder: + defaults.format_control = finder.format_control + + args_str, options_str = break_args_options(line) + + try: + options = shlex.split(options_str) + except ValueError as e: + raise OptionParsingError(f"Could not split options: {options_str}") from e + + opts, _ = parser.parse_args(options, defaults) + + return args_str, opts + + return parse_line + + +def break_args_options(line: str) -> Tuple[str, str]: + """Break up the line into an args and options string. We only want to shlex + (and then optparse) the options, not the args. args can contain markers + which are corrupted by shlex. + """ + tokens = line.split(" ") + args = [] + options = tokens[:] + for token in tokens: + if token.startswith("-") or token.startswith("--"): + break + else: + args.append(token) + options.pop(0) + return " ".join(args), " ".join(options) + + +class OptionParsingError(Exception): + def __init__(self, msg: str) -> None: + self.msg = msg + + +def build_parser() -> optparse.OptionParser: + """ + Return a parser for parsing requirement lines + """ + parser = optparse.OptionParser(add_help_option=False) + + option_factories = SUPPORTED_OPTIONS + SUPPORTED_OPTIONS_REQ + for option_factory in option_factories: + option = option_factory() + parser.add_option(option) + + # By default optparse sys.exits on parsing errors. We want to wrap + # that in our own exception. + def parser_exit(self: Any, msg: str) -> "NoReturn": + raise OptionParsingError(msg) + + # NOTE: mypy disallows assigning to a method + # https://github.com/python/mypy/issues/2427 + parser.exit = parser_exit # type: ignore + + return parser + + +def join_lines(lines_enum: ReqFileLines) -> ReqFileLines: + """Joins a line ending in '\' with the previous line (except when following + comments). The joined line takes on the index of the first line. + """ + primary_line_number = None + new_line: List[str] = [] + for line_number, line in lines_enum: + if not line.endswith("\\") or COMMENT_RE.match(line): + if COMMENT_RE.match(line): + # this ensures comments are always matched later + line = " " + line + if new_line: + new_line.append(line) + assert primary_line_number is not None + yield primary_line_number, "".join(new_line) + new_line = [] + else: + yield line_number, line + else: + if not new_line: + primary_line_number = line_number + new_line.append(line.strip("\\")) + + # last line contains \ + if new_line: + assert primary_line_number is not None + yield primary_line_number, "".join(new_line) + + # TODO: handle space after '\'. + + +def ignore_comments(lines_enum: ReqFileLines) -> ReqFileLines: + """ + Strips comments and filter empty lines. + """ + for line_number, line in lines_enum: + line = COMMENT_RE.sub("", line) + line = line.strip() + if line: + yield line_number, line + + +def expand_env_variables(lines_enum: ReqFileLines) -> ReqFileLines: + """Replace all environment variables that can be retrieved via `os.getenv`. + + The only allowed format for environment variables defined in the + requirement file is `${MY_VARIABLE_1}` to ensure two things: + + 1. Strings that contain a `$` aren't accidentally (partially) expanded. + 2. Ensure consistency across platforms for requirement files. + + These points are the result of a discussion on the `github pull + request #3514 `_. + + Valid characters in variable names follow the `POSIX standard + `_ and are limited + to uppercase letter, digits and the `_` (underscore). + """ + for line_number, line in lines_enum: + for env_var, var_name in ENV_VAR_RE.findall(line): + value = os.getenv(var_name) + if not value: + continue + + line = line.replace(env_var, value) + + yield line_number, line + + +def get_file_content(url: str, session: "PipSession") -> Tuple[str, str]: + """Gets the content of a file; it may be a filename, file: URL, or + http: URL. Returns (location, content). Content is unicode. + Respects # -*- coding: declarations on the retrieved files. + + :param url: File path or url. + :param session: PipSession instance. + """ + scheme = urllib.parse.urlsplit(url).scheme + # Pip has special support for file:// URLs (LocalFSAdapter). + if scheme in ["http", "https", "file"]: + # Delay importing heavy network modules until absolutely necessary. + from pip._internal.network.utils import raise_for_status + + resp = session.get(url) + raise_for_status(resp) + return resp.url, resp.text + + # Assume this is a bare path. + try: + with open(url, "rb") as f: + content = auto_decode(f.read()) + except OSError as exc: + raise InstallationError(f"Could not open requirements file: {exc}") + return url, content diff --git a/venv/Lib/site-packages/pip/_internal/req/req_install.py b/venv/Lib/site-packages/pip/_internal/req/req_install.py new file mode 100644 index 00000000000..834bc513356 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/req_install.py @@ -0,0 +1,934 @@ +import functools +import logging +import os +import shutil +import sys +import uuid +import zipfile +from optparse import Values +from pathlib import Path +from typing import Any, Collection, Dict, Iterable, List, Optional, Sequence, Union + +from pip._vendor.packaging.markers import Marker +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import Version +from pip._vendor.packaging.version import parse as parse_version +from pip._vendor.pyproject_hooks import BuildBackendHookCaller + +from pip._internal.build_env import BuildEnvironment, NoOpBuildEnvironment +from pip._internal.exceptions import InstallationError, PreviousBuildDirError +from pip._internal.locations import get_scheme +from pip._internal.metadata import ( + BaseDistribution, + get_default_environment, + get_directory_distribution, + get_wheel_distribution, +) +from pip._internal.metadata.base import FilesystemWheel +from pip._internal.models.direct_url import DirectUrl +from pip._internal.models.link import Link +from pip._internal.operations.build.metadata import generate_metadata +from pip._internal.operations.build.metadata_editable import generate_editable_metadata +from pip._internal.operations.build.metadata_legacy import ( + generate_metadata as generate_metadata_legacy, +) +from pip._internal.operations.install.editable_legacy import ( + install_editable as install_editable_legacy, +) +from pip._internal.operations.install.wheel import install_wheel +from pip._internal.pyproject import load_pyproject_toml, make_pyproject_path +from pip._internal.req.req_uninstall import UninstallPathSet +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.misc import ( + ConfiguredBuildBackendHookCaller, + ask_path_exists, + backup_dir, + display_path, + hide_url, + is_installable_dir, + redact_auth_from_requirement, + redact_auth_from_url, +) +from pip._internal.utils.packaging import get_requirement +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds +from pip._internal.utils.unpacking import unpack_file +from pip._internal.utils.virtualenv import running_under_virtualenv +from pip._internal.vcs import vcs + +logger = logging.getLogger(__name__) + + +class InstallRequirement: + """ + Represents something that may be installed later on, may have information + about where to fetch the relevant requirement and also contains logic for + installing the said requirement. + """ + + def __init__( + self, + req: Optional[Requirement], + comes_from: Optional[Union[str, "InstallRequirement"]], + editable: bool = False, + link: Optional[Link] = None, + markers: Optional[Marker] = None, + use_pep517: Optional[bool] = None, + isolated: bool = False, + *, + global_options: Optional[List[str]] = None, + hash_options: Optional[Dict[str, List[str]]] = None, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, + constraint: bool = False, + extras: Collection[str] = (), + user_supplied: bool = False, + permit_editable_wheels: bool = False, + ) -> None: + assert req is None or isinstance(req, Requirement), req + self.req = req + self.comes_from = comes_from + self.constraint = constraint + self.editable = editable + self.permit_editable_wheels = permit_editable_wheels + + # source_dir is the local directory where the linked requirement is + # located, or unpacked. In case unpacking is needed, creating and + # populating source_dir is done by the RequirementPreparer. Note this + # is not necessarily the directory where pyproject.toml or setup.py is + # located - that one is obtained via unpacked_source_directory. + self.source_dir: Optional[str] = None + if self.editable: + assert link + if link.is_file: + self.source_dir = os.path.normpath(os.path.abspath(link.file_path)) + + # original_link is the direct URL that was provided by the user for the + # requirement, either directly or via a constraints file. + if link is None and req and req.url: + # PEP 508 URL requirement + link = Link(req.url) + self.link = self.original_link = link + + # When this InstallRequirement is a wheel obtained from the cache of locally + # built wheels, this is the source link corresponding to the cache entry, which + # was used to download and build the cached wheel. + self.cached_wheel_source_link: Optional[Link] = None + + # Information about the location of the artifact that was downloaded . This + # property is guaranteed to be set in resolver results. + self.download_info: Optional[DirectUrl] = None + + # Path to any downloaded or already-existing package. + self.local_file_path: Optional[str] = None + if self.link and self.link.is_file: + self.local_file_path = self.link.file_path + + if extras: + self.extras = extras + elif req: + self.extras = req.extras + else: + self.extras = set() + if markers is None and req: + markers = req.marker + self.markers = markers + + # This holds the Distribution object if this requirement is already installed. + self.satisfied_by: Optional[BaseDistribution] = None + # Whether the installation process should try to uninstall an existing + # distribution before installing this requirement. + self.should_reinstall = False + # Temporary build location + self._temp_build_dir: Optional[TempDirectory] = None + # Set to True after successful installation + self.install_succeeded: Optional[bool] = None + # Supplied options + self.global_options = global_options if global_options else [] + self.hash_options = hash_options if hash_options else {} + self.config_settings = config_settings + # Set to True after successful preparation of this requirement + self.prepared = False + # User supplied requirement are explicitly requested for installation + # by the user via CLI arguments or requirements files, as opposed to, + # e.g. dependencies, extras or constraints. + self.user_supplied = user_supplied + + self.isolated = isolated + self.build_env: BuildEnvironment = NoOpBuildEnvironment() + + # For PEP 517, the directory where we request the project metadata + # gets stored. We need this to pass to build_wheel, so the backend + # can ensure that the wheel matches the metadata (see the PEP for + # details). + self.metadata_directory: Optional[str] = None + + # The static build requirements (from pyproject.toml) + self.pyproject_requires: Optional[List[str]] = None + + # Build requirements that we will check are available + self.requirements_to_check: List[str] = [] + + # The PEP 517 backend we should use to build the project + self.pep517_backend: Optional[BuildBackendHookCaller] = None + + # Are we using PEP 517 for this requirement? + # After pyproject.toml has been loaded, the only valid values are True + # and False. Before loading, None is valid (meaning "use the default"). + # Setting an explicit value before loading pyproject.toml is supported, + # but after loading this flag should be treated as read only. + self.use_pep517 = use_pep517 + + # If config settings are provided, enforce PEP 517. + if self.config_settings: + if self.use_pep517 is False: + logger.warning( + "--no-use-pep517 ignored for %s " + "because --config-settings are specified.", + self, + ) + self.use_pep517 = True + + # This requirement needs more preparation before it can be built + self.needs_more_preparation = False + + # This requirement needs to be unpacked before it can be installed. + self._archive_source: Optional[Path] = None + + def __str__(self) -> str: + if self.req: + s = redact_auth_from_requirement(self.req) + if self.link: + s += f" from {redact_auth_from_url(self.link.url)}" + elif self.link: + s = redact_auth_from_url(self.link.url) + else: + s = "" + if self.satisfied_by is not None: + if self.satisfied_by.location is not None: + location = display_path(self.satisfied_by.location) + else: + location = "" + s += f" in {location}" + if self.comes_from: + if isinstance(self.comes_from, str): + comes_from: Optional[str] = self.comes_from + else: + comes_from = self.comes_from.from_path() + if comes_from: + s += f" (from {comes_from})" + return s + + def __repr__(self) -> str: + return ( + f"<{self.__class__.__name__} object: " + f"{str(self)} editable={self.editable!r}>" + ) + + def format_debug(self) -> str: + """An un-tested helper for getting state, for debugging.""" + attributes = vars(self) + names = sorted(attributes) + + state = (f"{attr}={attributes[attr]!r}" for attr in sorted(names)) + return "<{name} object: {{{state}}}>".format( + name=self.__class__.__name__, + state=", ".join(state), + ) + + # Things that are valid for all kinds of requirements? + @property + def name(self) -> Optional[str]: + if self.req is None: + return None + return self.req.name + + @functools.cached_property + def supports_pyproject_editable(self) -> bool: + if not self.use_pep517: + return False + assert self.pep517_backend + with self.build_env: + runner = runner_with_spinner_message( + "Checking if build backend supports build_editable" + ) + with self.pep517_backend.subprocess_runner(runner): + return "build_editable" in self.pep517_backend._supported_features() + + @property + def specifier(self) -> SpecifierSet: + assert self.req is not None + return self.req.specifier + + @property + def is_direct(self) -> bool: + """Whether this requirement was specified as a direct URL.""" + return self.original_link is not None + + @property + def is_pinned(self) -> bool: + """Return whether I am pinned to an exact version. + + For example, some-package==1.2 is pinned; some-package>1.2 is not. + """ + assert self.req is not None + specifiers = self.req.specifier + return len(specifiers) == 1 and next(iter(specifiers)).operator in {"==", "==="} + + def match_markers(self, extras_requested: Optional[Iterable[str]] = None) -> bool: + if not extras_requested: + # Provide an extra to safely evaluate the markers + # without matching any extra + extras_requested = ("",) + if self.markers is not None: + return any( + self.markers.evaluate({"extra": extra}) for extra in extras_requested + ) + else: + return True + + @property + def has_hash_options(self) -> bool: + """Return whether any known-good hashes are specified as options. + + These activate --require-hashes mode; hashes specified as part of a + URL do not. + + """ + return bool(self.hash_options) + + def hashes(self, trust_internet: bool = True) -> Hashes: + """Return a hash-comparer that considers my option- and URL-based + hashes to be known-good. + + Hashes in URLs--ones embedded in the requirements file, not ones + downloaded from an index server--are almost peers with ones from + flags. They satisfy --require-hashes (whether it was implicitly or + explicitly activated) but do not activate it. md5 and sha224 are not + allowed in flags, which should nudge people toward good algos. We + always OR all hashes together, even ones from URLs. + + :param trust_internet: Whether to trust URL-based (#md5=...) hashes + downloaded from the internet, as by populate_link() + + """ + good_hashes = self.hash_options.copy() + if trust_internet: + link = self.link + elif self.is_direct and self.user_supplied: + link = self.original_link + else: + link = None + if link and link.hash: + assert link.hash_name is not None + good_hashes.setdefault(link.hash_name, []).append(link.hash) + return Hashes(good_hashes) + + def from_path(self) -> Optional[str]: + """Format a nice indicator to show where this "comes from" """ + if self.req is None: + return None + s = str(self.req) + if self.comes_from: + comes_from: Optional[str] + if isinstance(self.comes_from, str): + comes_from = self.comes_from + else: + comes_from = self.comes_from.from_path() + if comes_from: + s += "->" + comes_from + return s + + def ensure_build_location( + self, build_dir: str, autodelete: bool, parallel_builds: bool + ) -> str: + assert build_dir is not None + if self._temp_build_dir is not None: + assert self._temp_build_dir.path + return self._temp_build_dir.path + if self.req is None: + # Some systems have /tmp as a symlink which confuses custom + # builds (such as numpy). Thus, we ensure that the real path + # is returned. + self._temp_build_dir = TempDirectory( + kind=tempdir_kinds.REQ_BUILD, globally_managed=True + ) + + return self._temp_build_dir.path + + # This is the only remaining place where we manually determine the path + # for the temporary directory. It is only needed for editables where + # it is the value of the --src option. + + # When parallel builds are enabled, add a UUID to the build directory + # name so multiple builds do not interfere with each other. + dir_name: str = canonicalize_name(self.req.name) + if parallel_builds: + dir_name = f"{dir_name}_{uuid.uuid4().hex}" + + # FIXME: Is there a better place to create the build_dir? (hg and bzr + # need this) + if not os.path.exists(build_dir): + logger.debug("Creating directory %s", build_dir) + os.makedirs(build_dir) + actual_build_dir = os.path.join(build_dir, dir_name) + # `None` indicates that we respect the globally-configured deletion + # settings, which is what we actually want when auto-deleting. + delete_arg = None if autodelete else False + return TempDirectory( + path=actual_build_dir, + delete=delete_arg, + kind=tempdir_kinds.REQ_BUILD, + globally_managed=True, + ).path + + def _set_requirement(self) -> None: + """Set requirement after generating metadata.""" + assert self.req is None + assert self.metadata is not None + assert self.source_dir is not None + + # Construct a Requirement object from the generated metadata + if isinstance(parse_version(self.metadata["Version"]), Version): + op = "==" + else: + op = "===" + + self.req = get_requirement( + "".join( + [ + self.metadata["Name"], + op, + self.metadata["Version"], + ] + ) + ) + + def warn_on_mismatching_name(self) -> None: + assert self.req is not None + metadata_name = canonicalize_name(self.metadata["Name"]) + if canonicalize_name(self.req.name) == metadata_name: + # Everything is fine. + return + + # If we're here, there's a mismatch. Log a warning about it. + logger.warning( + "Generating metadata for package %s " + "produced metadata for project name %s. Fix your " + "#egg=%s fragments.", + self.name, + metadata_name, + self.name, + ) + self.req = get_requirement(metadata_name) + + def check_if_exists(self, use_user_site: bool) -> None: + """Find an installed distribution that satisfies or conflicts + with this requirement, and set self.satisfied_by or + self.should_reinstall appropriately. + """ + if self.req is None: + return + existing_dist = get_default_environment().get_distribution(self.req.name) + if not existing_dist: + return + + version_compatible = self.req.specifier.contains( + existing_dist.version, + prereleases=True, + ) + if not version_compatible: + self.satisfied_by = None + if use_user_site: + if existing_dist.in_usersite: + self.should_reinstall = True + elif running_under_virtualenv() and existing_dist.in_site_packages: + raise InstallationError( + f"Will not install to the user site because it will " + f"lack sys.path precedence to {existing_dist.raw_name} " + f"in {existing_dist.location}" + ) + else: + self.should_reinstall = True + else: + if self.editable: + self.should_reinstall = True + # when installing editables, nothing pre-existing should ever + # satisfy + self.satisfied_by = None + else: + self.satisfied_by = existing_dist + + # Things valid for wheels + @property + def is_wheel(self) -> bool: + if not self.link: + return False + return self.link.is_wheel + + @property + def is_wheel_from_cache(self) -> bool: + # When True, it means that this InstallRequirement is a local wheel file in the + # cache of locally built wheels. + return self.cached_wheel_source_link is not None + + # Things valid for sdists + @property + def unpacked_source_directory(self) -> str: + assert self.source_dir, f"No source dir for {self}" + return os.path.join( + self.source_dir, self.link and self.link.subdirectory_fragment or "" + ) + + @property + def setup_py_path(self) -> str: + assert self.source_dir, f"No source dir for {self}" + setup_py = os.path.join(self.unpacked_source_directory, "setup.py") + + return setup_py + + @property + def setup_cfg_path(self) -> str: + assert self.source_dir, f"No source dir for {self}" + setup_cfg = os.path.join(self.unpacked_source_directory, "setup.cfg") + + return setup_cfg + + @property + def pyproject_toml_path(self) -> str: + assert self.source_dir, f"No source dir for {self}" + return make_pyproject_path(self.unpacked_source_directory) + + def load_pyproject_toml(self) -> None: + """Load the pyproject.toml file. + + After calling this routine, all of the attributes related to PEP 517 + processing for this requirement have been set. In particular, the + use_pep517 attribute can be used to determine whether we should + follow the PEP 517 or legacy (setup.py) code path. + """ + pyproject_toml_data = load_pyproject_toml( + self.use_pep517, self.pyproject_toml_path, self.setup_py_path, str(self) + ) + + if pyproject_toml_data is None: + assert not self.config_settings + self.use_pep517 = False + return + + self.use_pep517 = True + requires, backend, check, backend_path = pyproject_toml_data + self.requirements_to_check = check + self.pyproject_requires = requires + self.pep517_backend = ConfiguredBuildBackendHookCaller( + self, + self.unpacked_source_directory, + backend, + backend_path=backend_path, + ) + + def isolated_editable_sanity_check(self) -> None: + """Check that an editable requirement if valid for use with PEP 517/518. + + This verifies that an editable that has a pyproject.toml either supports PEP 660 + or as a setup.py or a setup.cfg + """ + if ( + self.editable + and self.use_pep517 + and not self.supports_pyproject_editable + and not os.path.isfile(self.setup_py_path) + and not os.path.isfile(self.setup_cfg_path) + ): + raise InstallationError( + f"Project {self} has a 'pyproject.toml' and its build " + f"backend is missing the 'build_editable' hook. Since it does not " + f"have a 'setup.py' nor a 'setup.cfg', " + f"it cannot be installed in editable mode. " + f"Consider using a build backend that supports PEP 660." + ) + + def prepare_metadata(self) -> None: + """Ensure that project metadata is available. + + Under PEP 517 and PEP 660, call the backend hook to prepare the metadata. + Under legacy processing, call setup.py egg-info. + """ + assert self.source_dir, f"No source dir for {self}" + details = self.name or f"from {self.link}" + + if self.use_pep517: + assert self.pep517_backend is not None + if ( + self.editable + and self.permit_editable_wheels + and self.supports_pyproject_editable + ): + self.metadata_directory = generate_editable_metadata( + build_env=self.build_env, + backend=self.pep517_backend, + details=details, + ) + else: + self.metadata_directory = generate_metadata( + build_env=self.build_env, + backend=self.pep517_backend, + details=details, + ) + else: + self.metadata_directory = generate_metadata_legacy( + build_env=self.build_env, + setup_py_path=self.setup_py_path, + source_dir=self.unpacked_source_directory, + isolated=self.isolated, + details=details, + ) + + # Act on the newly generated metadata, based on the name and version. + if not self.name: + self._set_requirement() + else: + self.warn_on_mismatching_name() + + self.assert_source_matches_version() + + @property + def metadata(self) -> Any: + if not hasattr(self, "_metadata"): + self._metadata = self.get_dist().metadata + + return self._metadata + + def get_dist(self) -> BaseDistribution: + if self.metadata_directory: + return get_directory_distribution(self.metadata_directory) + elif self.local_file_path and self.is_wheel: + assert self.req is not None + return get_wheel_distribution( + FilesystemWheel(self.local_file_path), + canonicalize_name(self.req.name), + ) + raise AssertionError( + f"InstallRequirement {self} has no metadata directory and no wheel: " + f"can't make a distribution." + ) + + def assert_source_matches_version(self) -> None: + assert self.source_dir, f"No source dir for {self}" + version = self.metadata["version"] + if self.req and self.req.specifier and version not in self.req.specifier: + logger.warning( + "Requested %s, but installing version %s", + self, + version, + ) + else: + logger.debug( + "Source in %s has version %s, which satisfies requirement %s", + display_path(self.source_dir), + version, + self, + ) + + # For both source distributions and editables + def ensure_has_source_dir( + self, + parent_dir: str, + autodelete: bool = False, + parallel_builds: bool = False, + ) -> None: + """Ensure that a source_dir is set. + + This will create a temporary build dir if the name of the requirement + isn't known yet. + + :param parent_dir: The ideal pip parent_dir for the source_dir. + Generally src_dir for editables and build_dir for sdists. + :return: self.source_dir + """ + if self.source_dir is None: + self.source_dir = self.ensure_build_location( + parent_dir, + autodelete=autodelete, + parallel_builds=parallel_builds, + ) + + def needs_unpacked_archive(self, archive_source: Path) -> None: + assert self._archive_source is None + self._archive_source = archive_source + + def ensure_pristine_source_checkout(self) -> None: + """Ensure the source directory has not yet been built in.""" + assert self.source_dir is not None + if self._archive_source is not None: + unpack_file(str(self._archive_source), self.source_dir) + elif is_installable_dir(self.source_dir): + # If a checkout exists, it's unwise to keep going. + # version inconsistencies are logged later, but do not fail + # the installation. + raise PreviousBuildDirError( + f"pip can't proceed with requirements '{self}' due to a " + f"pre-existing build directory ({self.source_dir}). This is likely " + "due to a previous installation that failed . pip is " + "being responsible and not assuming it can delete this. " + "Please delete it and try again." + ) + + # For editable installations + def update_editable(self) -> None: + if not self.link: + logger.debug( + "Cannot update repository at %s; repository location is unknown", + self.source_dir, + ) + return + assert self.editable + assert self.source_dir + if self.link.scheme == "file": + # Static paths don't get updated + return + vcs_backend = vcs.get_backend_for_scheme(self.link.scheme) + # Editable requirements are validated in Requirement constructors. + # So here, if it's neither a path nor a valid VCS URL, it's a bug. + assert vcs_backend, f"Unsupported VCS URL {self.link.url}" + hidden_url = hide_url(self.link.url) + vcs_backend.obtain(self.source_dir, url=hidden_url, verbosity=0) + + # Top-level Actions + def uninstall( + self, auto_confirm: bool = False, verbose: bool = False + ) -> Optional[UninstallPathSet]: + """ + Uninstall the distribution currently satisfying this requirement. + + Prompts before removing or modifying files unless + ``auto_confirm`` is True. + + Refuses to delete or modify files outside of ``sys.prefix`` - + thus uninstallation within a virtual environment can only + modify that virtual environment, even if the virtualenv is + linked to global site-packages. + + """ + assert self.req + dist = get_default_environment().get_distribution(self.req.name) + if not dist: + logger.warning("Skipping %s as it is not installed.", self.name) + return None + logger.info("Found existing installation: %s", dist) + + uninstalled_pathset = UninstallPathSet.from_dist(dist) + uninstalled_pathset.remove(auto_confirm, verbose) + return uninstalled_pathset + + def _get_archive_name(self, path: str, parentdir: str, rootdir: str) -> str: + def _clean_zip_name(name: str, prefix: str) -> str: + assert name.startswith( + prefix + os.path.sep + ), f"name {name!r} doesn't start with prefix {prefix!r}" + name = name[len(prefix) + 1 :] + name = name.replace(os.path.sep, "/") + return name + + assert self.req is not None + path = os.path.join(parentdir, path) + name = _clean_zip_name(path, rootdir) + return self.req.name + "/" + name + + def archive(self, build_dir: Optional[str]) -> None: + """Saves archive to provided build_dir. + + Used for saving downloaded VCS requirements as part of `pip download`. + """ + assert self.source_dir + if build_dir is None: + return + + create_archive = True + archive_name = "{}-{}.zip".format(self.name, self.metadata["version"]) + archive_path = os.path.join(build_dir, archive_name) + + if os.path.exists(archive_path): + response = ask_path_exists( + f"The file {display_path(archive_path)} exists. (i)gnore, (w)ipe, " + "(b)ackup, (a)bort ", + ("i", "w", "b", "a"), + ) + if response == "i": + create_archive = False + elif response == "w": + logger.warning("Deleting %s", display_path(archive_path)) + os.remove(archive_path) + elif response == "b": + dest_file = backup_dir(archive_path) + logger.warning( + "Backing up %s to %s", + display_path(archive_path), + display_path(dest_file), + ) + shutil.move(archive_path, dest_file) + elif response == "a": + sys.exit(-1) + + if not create_archive: + return + + zip_output = zipfile.ZipFile( + archive_path, + "w", + zipfile.ZIP_DEFLATED, + allowZip64=True, + ) + with zip_output: + dir = os.path.normcase(os.path.abspath(self.unpacked_source_directory)) + for dirpath, dirnames, filenames in os.walk(dir): + for dirname in dirnames: + dir_arcname = self._get_archive_name( + dirname, + parentdir=dirpath, + rootdir=dir, + ) + zipdir = zipfile.ZipInfo(dir_arcname + "/") + zipdir.external_attr = 0x1ED << 16 # 0o755 + zip_output.writestr(zipdir, "") + for filename in filenames: + file_arcname = self._get_archive_name( + filename, + parentdir=dirpath, + rootdir=dir, + ) + filename = os.path.join(dirpath, filename) + zip_output.write(filename, file_arcname) + + logger.info("Saved %s", display_path(archive_path)) + + def install( + self, + global_options: Optional[Sequence[str]] = None, + root: Optional[str] = None, + home: Optional[str] = None, + prefix: Optional[str] = None, + warn_script_location: bool = True, + use_user_site: bool = False, + pycompile: bool = True, + ) -> None: + assert self.req is not None + scheme = get_scheme( + self.req.name, + user=use_user_site, + home=home, + root=root, + isolated=self.isolated, + prefix=prefix, + ) + + if self.editable and not self.is_wheel: + deprecated( + reason=( + f"Legacy editable install of {self} (setup.py develop) " + "is deprecated." + ), + replacement=( + "to add a pyproject.toml or enable --use-pep517, " + "and use setuptools >= 64. " + "If the resulting installation is not behaving as expected, " + "try using --config-settings editable_mode=compat. " + "Please consult the setuptools documentation for more information" + ), + gone_in="25.0", + issue=11457, + ) + if self.config_settings: + logger.warning( + "--config-settings ignored for legacy editable install of %s. " + "Consider upgrading to a version of setuptools " + "that supports PEP 660 (>= 64).", + self, + ) + install_editable_legacy( + global_options=global_options if global_options is not None else [], + prefix=prefix, + home=home, + use_user_site=use_user_site, + name=self.req.name, + setup_py_path=self.setup_py_path, + isolated=self.isolated, + build_env=self.build_env, + unpacked_source_directory=self.unpacked_source_directory, + ) + self.install_succeeded = True + return + + assert self.is_wheel + assert self.local_file_path + + install_wheel( + self.req.name, + self.local_file_path, + scheme=scheme, + req_description=str(self.req), + pycompile=pycompile, + warn_script_location=warn_script_location, + direct_url=self.download_info if self.is_direct else None, + requested=self.user_supplied, + ) + self.install_succeeded = True + + +def check_invalid_constraint_type(req: InstallRequirement) -> str: + # Check for unsupported forms + problem = "" + if not req.name: + problem = "Unnamed requirements are not allowed as constraints" + elif req.editable: + problem = "Editable requirements are not allowed as constraints" + elif req.extras: + problem = "Constraints cannot have extras" + + if problem: + deprecated( + reason=( + "Constraints are only allowed to take the form of a package " + "name and a version specifier. Other forms were originally " + "permitted as an accident of the implementation, but were " + "undocumented. The new implementation of the resolver no " + "longer supports these forms." + ), + replacement="replacing the constraint with a requirement", + # No plan yet for when the new resolver becomes default + gone_in=None, + issue=8210, + ) + + return problem + + +def _has_option(options: Values, reqs: List[InstallRequirement], option: str) -> bool: + if getattr(options, option, None): + return True + for req in reqs: + if getattr(req, option, None): + return True + return False + + +def check_legacy_setup_py_options( + options: Values, + reqs: List[InstallRequirement], +) -> None: + has_build_options = _has_option(options, reqs, "build_options") + has_global_options = _has_option(options, reqs, "global_options") + if has_build_options or has_global_options: + deprecated( + reason="--build-option and --global-option are deprecated.", + issue=11859, + replacement="to use --config-settings", + gone_in="25.0", + ) + logger.warning( + "Implying --no-binary=:all: due to the presence of " + "--build-option / --global-option. " + ) + options.format_control.disallow_binaries() diff --git a/venv/Lib/site-packages/pip/_internal/req/req_set.py b/venv/Lib/site-packages/pip/_internal/req/req_set.py new file mode 100644 index 00000000000..ec7a6e07a25 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/req_set.py @@ -0,0 +1,82 @@ +import logging +from collections import OrderedDict +from typing import Dict, List + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.req.req_install import InstallRequirement + +logger = logging.getLogger(__name__) + + +class RequirementSet: + def __init__(self, check_supported_wheels: bool = True) -> None: + """Create a RequirementSet.""" + + self.requirements: Dict[str, InstallRequirement] = OrderedDict() + self.check_supported_wheels = check_supported_wheels + + self.unnamed_requirements: List[InstallRequirement] = [] + + def __str__(self) -> str: + requirements = sorted( + (req for req in self.requirements.values() if not req.comes_from), + key=lambda req: canonicalize_name(req.name or ""), + ) + return " ".join(str(req.req) for req in requirements) + + def __repr__(self) -> str: + requirements = sorted( + self.requirements.values(), + key=lambda req: canonicalize_name(req.name or ""), + ) + + format_string = "<{classname} object; {count} requirement(s): {reqs}>" + return format_string.format( + classname=self.__class__.__name__, + count=len(requirements), + reqs=", ".join(str(req.req) for req in requirements), + ) + + def add_unnamed_requirement(self, install_req: InstallRequirement) -> None: + assert not install_req.name + self.unnamed_requirements.append(install_req) + + def add_named_requirement(self, install_req: InstallRequirement) -> None: + assert install_req.name + + project_name = canonicalize_name(install_req.name) + self.requirements[project_name] = install_req + + def has_requirement(self, name: str) -> bool: + project_name = canonicalize_name(name) + + return ( + project_name in self.requirements + and not self.requirements[project_name].constraint + ) + + def get_requirement(self, name: str) -> InstallRequirement: + project_name = canonicalize_name(name) + + if project_name in self.requirements: + return self.requirements[project_name] + + raise KeyError(f"No project with the name {name!r}") + + @property + def all_requirements(self) -> List[InstallRequirement]: + return self.unnamed_requirements + list(self.requirements.values()) + + @property + def requirements_to_install(self) -> List[InstallRequirement]: + """Return the list of requirements that need to be installed. + + TODO remove this property together with the legacy resolver, since the new + resolver only returns requirements that need to be installed. + """ + return [ + install_req + for install_req in self.all_requirements + if not install_req.constraint and not install_req.satisfied_by + ] diff --git a/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py b/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py new file mode 100644 index 00000000000..26df20844b3 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py @@ -0,0 +1,633 @@ +import functools +import os +import sys +import sysconfig +from importlib.util import cache_from_source +from typing import Any, Callable, Dict, Generator, Iterable, List, Optional, Set, Tuple + +from pip._internal.exceptions import LegacyDistutilsInstall, UninstallMissingRecord +from pip._internal.locations import get_bin_prefix, get_bin_user +from pip._internal.metadata import BaseDistribution +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.egg_link import egg_link_path_from_location +from pip._internal.utils.logging import getLogger, indent_log +from pip._internal.utils.misc import ask, normalize_path, renames, rmtree +from pip._internal.utils.temp_dir import AdjacentTempDirectory, TempDirectory +from pip._internal.utils.virtualenv import running_under_virtualenv + +logger = getLogger(__name__) + + +def _script_names( + bin_dir: str, script_name: str, is_gui: bool +) -> Generator[str, None, None]: + """Create the fully qualified name of the files created by + {console,gui}_scripts for the given ``dist``. + Returns the list of file names + """ + exe_name = os.path.join(bin_dir, script_name) + yield exe_name + if not WINDOWS: + return + yield f"{exe_name}.exe" + yield f"{exe_name}.exe.manifest" + if is_gui: + yield f"{exe_name}-script.pyw" + else: + yield f"{exe_name}-script.py" + + +def _unique( + fn: Callable[..., Generator[Any, None, None]] +) -> Callable[..., Generator[Any, None, None]]: + @functools.wraps(fn) + def unique(*args: Any, **kw: Any) -> Generator[Any, None, None]: + seen: Set[Any] = set() + for item in fn(*args, **kw): + if item not in seen: + seen.add(item) + yield item + + return unique + + +@_unique +def uninstallation_paths(dist: BaseDistribution) -> Generator[str, None, None]: + """ + Yield all the uninstallation paths for dist based on RECORD-without-.py[co] + + Yield paths to all the files in RECORD. For each .py file in RECORD, add + the .pyc and .pyo in the same directory. + + UninstallPathSet.add() takes care of the __pycache__ .py[co]. + + If RECORD is not found, raises an error, + with possible information from the INSTALLER file. + + https://packaging.python.org/specifications/recording-installed-packages/ + """ + location = dist.location + assert location is not None, "not installed" + + entries = dist.iter_declared_entries() + if entries is None: + raise UninstallMissingRecord(distribution=dist) + + for entry in entries: + path = os.path.join(location, entry) + yield path + if path.endswith(".py"): + dn, fn = os.path.split(path) + base = fn[:-3] + path = os.path.join(dn, base + ".pyc") + yield path + path = os.path.join(dn, base + ".pyo") + yield path + + +def compact(paths: Iterable[str]) -> Set[str]: + """Compact a path set to contain the minimal number of paths + necessary to contain all paths in the set. If /a/path/ and + /a/path/to/a/file.txt are both in the set, leave only the + shorter path.""" + + sep = os.path.sep + short_paths: Set[str] = set() + for path in sorted(paths, key=len): + should_skip = any( + path.startswith(shortpath.rstrip("*")) + and path[len(shortpath.rstrip("*").rstrip(sep))] == sep + for shortpath in short_paths + ) + if not should_skip: + short_paths.add(path) + return short_paths + + +def compress_for_rename(paths: Iterable[str]) -> Set[str]: + """Returns a set containing the paths that need to be renamed. + + This set may include directories when the original sequence of paths + included every file on disk. + """ + case_map = {os.path.normcase(p): p for p in paths} + remaining = set(case_map) + unchecked = sorted({os.path.split(p)[0] for p in case_map.values()}, key=len) + wildcards: Set[str] = set() + + def norm_join(*a: str) -> str: + return os.path.normcase(os.path.join(*a)) + + for root in unchecked: + if any(os.path.normcase(root).startswith(w) for w in wildcards): + # This directory has already been handled. + continue + + all_files: Set[str] = set() + all_subdirs: Set[str] = set() + for dirname, subdirs, files in os.walk(root): + all_subdirs.update(norm_join(root, dirname, d) for d in subdirs) + all_files.update(norm_join(root, dirname, f) for f in files) + # If all the files we found are in our remaining set of files to + # remove, then remove them from the latter set and add a wildcard + # for the directory. + if not (all_files - remaining): + remaining.difference_update(all_files) + wildcards.add(root + os.sep) + + return set(map(case_map.__getitem__, remaining)) | wildcards + + +def compress_for_output_listing(paths: Iterable[str]) -> Tuple[Set[str], Set[str]]: + """Returns a tuple of 2 sets of which paths to display to user + + The first set contains paths that would be deleted. Files of a package + are not added and the top-level directory of the package has a '*' added + at the end - to signify that all it's contents are removed. + + The second set contains files that would have been skipped in the above + folders. + """ + + will_remove = set(paths) + will_skip = set() + + # Determine folders and files + folders = set() + files = set() + for path in will_remove: + if path.endswith(".pyc"): + continue + if path.endswith("__init__.py") or ".dist-info" in path: + folders.add(os.path.dirname(path)) + files.add(path) + + _normcased_files = set(map(os.path.normcase, files)) + + folders = compact(folders) + + # This walks the tree using os.walk to not miss extra folders + # that might get added. + for folder in folders: + for dirpath, _, dirfiles in os.walk(folder): + for fname in dirfiles: + if fname.endswith(".pyc"): + continue + + file_ = os.path.join(dirpath, fname) + if ( + os.path.isfile(file_) + and os.path.normcase(file_) not in _normcased_files + ): + # We are skipping this file. Add it to the set. + will_skip.add(file_) + + will_remove = files | {os.path.join(folder, "*") for folder in folders} + + return will_remove, will_skip + + +class StashedUninstallPathSet: + """A set of file rename operations to stash files while + tentatively uninstalling them.""" + + def __init__(self) -> None: + # Mapping from source file root to [Adjacent]TempDirectory + # for files under that directory. + self._save_dirs: Dict[str, TempDirectory] = {} + # (old path, new path) tuples for each move that may need + # to be undone. + self._moves: List[Tuple[str, str]] = [] + + def _get_directory_stash(self, path: str) -> str: + """Stashes a directory. + + Directories are stashed adjacent to their original location if + possible, or else moved/copied into the user's temp dir.""" + + try: + save_dir: TempDirectory = AdjacentTempDirectory(path) + except OSError: + save_dir = TempDirectory(kind="uninstall") + self._save_dirs[os.path.normcase(path)] = save_dir + + return save_dir.path + + def _get_file_stash(self, path: str) -> str: + """Stashes a file. + + If no root has been provided, one will be created for the directory + in the user's temp directory.""" + path = os.path.normcase(path) + head, old_head = os.path.dirname(path), None + save_dir = None + + while head != old_head: + try: + save_dir = self._save_dirs[head] + break + except KeyError: + pass + head, old_head = os.path.dirname(head), head + else: + # Did not find any suitable root + head = os.path.dirname(path) + save_dir = TempDirectory(kind="uninstall") + self._save_dirs[head] = save_dir + + relpath = os.path.relpath(path, head) + if relpath and relpath != os.path.curdir: + return os.path.join(save_dir.path, relpath) + return save_dir.path + + def stash(self, path: str) -> str: + """Stashes the directory or file and returns its new location. + Handle symlinks as files to avoid modifying the symlink targets. + """ + path_is_dir = os.path.isdir(path) and not os.path.islink(path) + if path_is_dir: + new_path = self._get_directory_stash(path) + else: + new_path = self._get_file_stash(path) + + self._moves.append((path, new_path)) + if path_is_dir and os.path.isdir(new_path): + # If we're moving a directory, we need to + # remove the destination first or else it will be + # moved to inside the existing directory. + # We just created new_path ourselves, so it will + # be removable. + os.rmdir(new_path) + renames(path, new_path) + return new_path + + def commit(self) -> None: + """Commits the uninstall by removing stashed files.""" + for save_dir in self._save_dirs.values(): + save_dir.cleanup() + self._moves = [] + self._save_dirs = {} + + def rollback(self) -> None: + """Undoes the uninstall by moving stashed files back.""" + for p in self._moves: + logger.info("Moving to %s\n from %s", *p) + + for new_path, path in self._moves: + try: + logger.debug("Replacing %s from %s", new_path, path) + if os.path.isfile(new_path) or os.path.islink(new_path): + os.unlink(new_path) + elif os.path.isdir(new_path): + rmtree(new_path) + renames(path, new_path) + except OSError as ex: + logger.error("Failed to restore %s", new_path) + logger.debug("Exception: %s", ex) + + self.commit() + + @property + def can_rollback(self) -> bool: + return bool(self._moves) + + +class UninstallPathSet: + """A set of file paths to be removed in the uninstallation of a + requirement.""" + + def __init__(self, dist: BaseDistribution) -> None: + self._paths: Set[str] = set() + self._refuse: Set[str] = set() + self._pth: Dict[str, UninstallPthEntries] = {} + self._dist = dist + self._moved_paths = StashedUninstallPathSet() + # Create local cache of normalize_path results. Creating an UninstallPathSet + # can result in hundreds/thousands of redundant calls to normalize_path with + # the same args, which hurts performance. + self._normalize_path_cached = functools.lru_cache(normalize_path) + + def _permitted(self, path: str) -> bool: + """ + Return True if the given path is one we are permitted to + remove/modify, False otherwise. + + """ + # aka is_local, but caching normalized sys.prefix + if not running_under_virtualenv(): + return True + return path.startswith(self._normalize_path_cached(sys.prefix)) + + def add(self, path: str) -> None: + head, tail = os.path.split(path) + + # we normalize the head to resolve parent directory symlinks, but not + # the tail, since we only want to uninstall symlinks, not their targets + path = os.path.join(self._normalize_path_cached(head), os.path.normcase(tail)) + + if not os.path.exists(path): + return + if self._permitted(path): + self._paths.add(path) + else: + self._refuse.add(path) + + # __pycache__ files can show up after 'installed-files.txt' is created, + # due to imports + if os.path.splitext(path)[1] == ".py": + self.add(cache_from_source(path)) + + def add_pth(self, pth_file: str, entry: str) -> None: + pth_file = self._normalize_path_cached(pth_file) + if self._permitted(pth_file): + if pth_file not in self._pth: + self._pth[pth_file] = UninstallPthEntries(pth_file) + self._pth[pth_file].add(entry) + else: + self._refuse.add(pth_file) + + def remove(self, auto_confirm: bool = False, verbose: bool = False) -> None: + """Remove paths in ``self._paths`` with confirmation (unless + ``auto_confirm`` is True).""" + + if not self._paths: + logger.info( + "Can't uninstall '%s'. No files were found to uninstall.", + self._dist.raw_name, + ) + return + + dist_name_version = f"{self._dist.raw_name}-{self._dist.raw_version}" + logger.info("Uninstalling %s:", dist_name_version) + + with indent_log(): + if auto_confirm or self._allowed_to_proceed(verbose): + moved = self._moved_paths + + for_rename = compress_for_rename(self._paths) + + for path in sorted(compact(for_rename)): + moved.stash(path) + logger.verbose("Removing file or directory %s", path) + + for pth in self._pth.values(): + pth.remove() + + logger.info("Successfully uninstalled %s", dist_name_version) + + def _allowed_to_proceed(self, verbose: bool) -> bool: + """Display which files would be deleted and prompt for confirmation""" + + def _display(msg: str, paths: Iterable[str]) -> None: + if not paths: + return + + logger.info(msg) + with indent_log(): + for path in sorted(compact(paths)): + logger.info(path) + + if not verbose: + will_remove, will_skip = compress_for_output_listing(self._paths) + else: + # In verbose mode, display all the files that are going to be + # deleted. + will_remove = set(self._paths) + will_skip = set() + + _display("Would remove:", will_remove) + _display("Would not remove (might be manually added):", will_skip) + _display("Would not remove (outside of prefix):", self._refuse) + if verbose: + _display("Will actually move:", compress_for_rename(self._paths)) + + return ask("Proceed (Y/n)? ", ("y", "n", "")) != "n" + + def rollback(self) -> None: + """Rollback the changes previously made by remove().""" + if not self._moved_paths.can_rollback: + logger.error( + "Can't roll back %s; was not uninstalled", + self._dist.raw_name, + ) + return + logger.info("Rolling back uninstall of %s", self._dist.raw_name) + self._moved_paths.rollback() + for pth in self._pth.values(): + pth.rollback() + + def commit(self) -> None: + """Remove temporary save dir: rollback will no longer be possible.""" + self._moved_paths.commit() + + @classmethod + def from_dist(cls, dist: BaseDistribution) -> "UninstallPathSet": + dist_location = dist.location + info_location = dist.info_location + if dist_location is None: + logger.info( + "Not uninstalling %s since it is not installed", + dist.canonical_name, + ) + return cls(dist) + + normalized_dist_location = normalize_path(dist_location) + if not dist.local: + logger.info( + "Not uninstalling %s at %s, outside environment %s", + dist.canonical_name, + normalized_dist_location, + sys.prefix, + ) + return cls(dist) + + if normalized_dist_location in { + p + for p in {sysconfig.get_path("stdlib"), sysconfig.get_path("platstdlib")} + if p + }: + logger.info( + "Not uninstalling %s at %s, as it is in the standard library.", + dist.canonical_name, + normalized_dist_location, + ) + return cls(dist) + + paths_to_remove = cls(dist) + develop_egg_link = egg_link_path_from_location(dist.raw_name) + + # Distribution is installed with metadata in a "flat" .egg-info + # directory. This means it is not a modern .dist-info installation, an + # egg, or legacy editable. + setuptools_flat_installation = ( + dist.installed_with_setuptools_egg_info + and info_location is not None + and os.path.exists(info_location) + # If dist is editable and the location points to a ``.egg-info``, + # we are in fact in the legacy editable case. + and not info_location.endswith(f"{dist.setuptools_filename}.egg-info") + ) + + # Uninstall cases order do matter as in the case of 2 installs of the + # same package, pip needs to uninstall the currently detected version + if setuptools_flat_installation: + if info_location is not None: + paths_to_remove.add(info_location) + installed_files = dist.iter_declared_entries() + if installed_files is not None: + for installed_file in installed_files: + paths_to_remove.add(os.path.join(dist_location, installed_file)) + # FIXME: need a test for this elif block + # occurs with --single-version-externally-managed/--record outside + # of pip + elif dist.is_file("top_level.txt"): + try: + namespace_packages = dist.read_text("namespace_packages.txt") + except FileNotFoundError: + namespaces = [] + else: + namespaces = namespace_packages.splitlines(keepends=False) + for top_level_pkg in [ + p + for p in dist.read_text("top_level.txt").splitlines() + if p and p not in namespaces + ]: + path = os.path.join(dist_location, top_level_pkg) + paths_to_remove.add(path) + paths_to_remove.add(f"{path}.py") + paths_to_remove.add(f"{path}.pyc") + paths_to_remove.add(f"{path}.pyo") + + elif dist.installed_by_distutils: + raise LegacyDistutilsInstall(distribution=dist) + + elif dist.installed_as_egg: + # package installed by easy_install + # We cannot match on dist.egg_name because it can slightly vary + # i.e. setuptools-0.6c11-py2.6.egg vs setuptools-0.6rc11-py2.6.egg + paths_to_remove.add(dist_location) + easy_install_egg = os.path.split(dist_location)[1] + easy_install_pth = os.path.join( + os.path.dirname(dist_location), + "easy-install.pth", + ) + paths_to_remove.add_pth(easy_install_pth, "./" + easy_install_egg) + + elif dist.installed_with_dist_info: + for path in uninstallation_paths(dist): + paths_to_remove.add(path) + + elif develop_egg_link: + # PEP 660 modern editable is handled in the ``.dist-info`` case + # above, so this only covers the setuptools-style editable. + with open(develop_egg_link) as fh: + link_pointer = os.path.normcase(fh.readline().strip()) + normalized_link_pointer = paths_to_remove._normalize_path_cached( + link_pointer + ) + assert os.path.samefile( + normalized_link_pointer, normalized_dist_location + ), ( + f"Egg-link {develop_egg_link} (to {link_pointer}) does not match " + f"installed location of {dist.raw_name} (at {dist_location})" + ) + paths_to_remove.add(develop_egg_link) + easy_install_pth = os.path.join( + os.path.dirname(develop_egg_link), "easy-install.pth" + ) + paths_to_remove.add_pth(easy_install_pth, dist_location) + + else: + logger.debug( + "Not sure how to uninstall: %s - Check: %s", + dist, + dist_location, + ) + + if dist.in_usersite: + bin_dir = get_bin_user() + else: + bin_dir = get_bin_prefix() + + # find distutils scripts= scripts + try: + for script in dist.iter_distutils_script_names(): + paths_to_remove.add(os.path.join(bin_dir, script)) + if WINDOWS: + paths_to_remove.add(os.path.join(bin_dir, f"{script}.bat")) + except (FileNotFoundError, NotADirectoryError): + pass + + # find console_scripts and gui_scripts + def iter_scripts_to_remove( + dist: BaseDistribution, + bin_dir: str, + ) -> Generator[str, None, None]: + for entry_point in dist.iter_entry_points(): + if entry_point.group == "console_scripts": + yield from _script_names(bin_dir, entry_point.name, False) + elif entry_point.group == "gui_scripts": + yield from _script_names(bin_dir, entry_point.name, True) + + for s in iter_scripts_to_remove(dist, bin_dir): + paths_to_remove.add(s) + + return paths_to_remove + + +class UninstallPthEntries: + def __init__(self, pth_file: str) -> None: + self.file = pth_file + self.entries: Set[str] = set() + self._saved_lines: Optional[List[bytes]] = None + + def add(self, entry: str) -> None: + entry = os.path.normcase(entry) + # On Windows, os.path.normcase converts the entry to use + # backslashes. This is correct for entries that describe absolute + # paths outside of site-packages, but all the others use forward + # slashes. + # os.path.splitdrive is used instead of os.path.isabs because isabs + # treats non-absolute paths with drive letter markings like c:foo\bar + # as absolute paths. It also does not recognize UNC paths if they don't + # have more than "\\sever\share". Valid examples: "\\server\share\" or + # "\\server\share\folder". + if WINDOWS and not os.path.splitdrive(entry)[0]: + entry = entry.replace("\\", "/") + self.entries.add(entry) + + def remove(self) -> None: + logger.verbose("Removing pth entries from %s:", self.file) + + # If the file doesn't exist, log a warning and return + if not os.path.isfile(self.file): + logger.warning("Cannot remove entries from nonexistent file %s", self.file) + return + with open(self.file, "rb") as fh: + # windows uses '\r\n' with py3k, but uses '\n' with py2.x + lines = fh.readlines() + self._saved_lines = lines + if any(b"\r\n" in line for line in lines): + endline = "\r\n" + else: + endline = "\n" + # handle missing trailing newline + if lines and not lines[-1].endswith(endline.encode("utf-8")): + lines[-1] = lines[-1] + endline.encode("utf-8") + for entry in self.entries: + try: + logger.verbose("Removing entry: %s", entry) + lines.remove((entry + endline).encode("utf-8")) + except ValueError: + pass + with open(self.file, "wb") as fh: + fh.writelines(lines) + + def rollback(self) -> bool: + if self._saved_lines is None: + logger.error("Cannot roll back changes to %s, none were made", self.file) + return False + logger.debug("Rolling %s back to previous state", self.file) + with open(self.file, "wb") as fh: + fh.writelines(self._saved_lines) + return True diff --git a/venv/Lib/site-packages/pip/_internal/resolution/__init__.py b/venv/Lib/site-packages/pip/_internal/resolution/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_internal/resolution/base.py b/venv/Lib/site-packages/pip/_internal/resolution/base.py new file mode 100644 index 00000000000..42dade18c1e --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/base.py @@ -0,0 +1,20 @@ +from typing import Callable, List, Optional + +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_set import RequirementSet + +InstallRequirementProvider = Callable[ + [str, Optional[InstallRequirement]], InstallRequirement +] + + +class BaseResolver: + def resolve( + self, root_reqs: List[InstallRequirement], check_supported_wheels: bool + ) -> RequirementSet: + raise NotImplementedError() + + def get_installation_order( + self, req_set: RequirementSet + ) -> List[InstallRequirement]: + raise NotImplementedError() diff --git a/venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py b/venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py b/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py new file mode 100644 index 00000000000..1dd0d7041bb --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py @@ -0,0 +1,597 @@ +"""Dependency Resolution + +The dependency resolution in pip is performed as follows: + +for top-level requirements: + a. only one spec allowed per project, regardless of conflicts or not. + otherwise a "double requirement" exception is raised + b. they override sub-dependency requirements. +for sub-dependencies + a. "first found, wins" (where the order is breadth first) +""" + +import logging +import sys +from collections import defaultdict +from itertools import chain +from typing import DefaultDict, Iterable, List, Optional, Set, Tuple + +from pip._vendor.packaging import specifiers +from pip._vendor.packaging.requirements import Requirement + +from pip._internal.cache import WheelCache +from pip._internal.exceptions import ( + BestVersionAlreadyInstalled, + DistributionNotFound, + HashError, + HashErrors, + InstallationError, + NoneMetadataError, + UnsupportedPythonVersion, +) +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.req_install import ( + InstallRequirement, + check_invalid_constraint_type, +) +from pip._internal.req.req_set import RequirementSet +from pip._internal.resolution.base import BaseResolver, InstallRequirementProvider +from pip._internal.utils import compatibility_tags +from pip._internal.utils.compatibility_tags import get_supported +from pip._internal.utils.direct_url_helpers import direct_url_from_link +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import normalize_version_info +from pip._internal.utils.packaging import check_requires_python + +logger = logging.getLogger(__name__) + +DiscoveredDependencies = DefaultDict[Optional[str], List[InstallRequirement]] + + +def _check_dist_requires_python( + dist: BaseDistribution, + version_info: Tuple[int, int, int], + ignore_requires_python: bool = False, +) -> None: + """ + Check whether the given Python version is compatible with a distribution's + "Requires-Python" value. + + :param version_info: A 3-tuple of ints representing the Python + major-minor-micro version to check. + :param ignore_requires_python: Whether to ignore the "Requires-Python" + value if the given Python version isn't compatible. + + :raises UnsupportedPythonVersion: When the given Python version isn't + compatible. + """ + # This idiosyncratically converts the SpecifierSet to str and let + # check_requires_python then parse it again into SpecifierSet. But this + # is the legacy resolver so I'm just not going to bother refactoring. + try: + requires_python = str(dist.requires_python) + except FileNotFoundError as e: + raise NoneMetadataError(dist, str(e)) + try: + is_compatible = check_requires_python( + requires_python, + version_info=version_info, + ) + except specifiers.InvalidSpecifier as exc: + logger.warning( + "Package %r has an invalid Requires-Python: %s", dist.raw_name, exc + ) + return + + if is_compatible: + return + + version = ".".join(map(str, version_info)) + if ignore_requires_python: + logger.debug( + "Ignoring failed Requires-Python check for package %r: %s not in %r", + dist.raw_name, + version, + requires_python, + ) + return + + raise UnsupportedPythonVersion( + f"Package {dist.raw_name!r} requires a different Python: " + f"{version} not in {requires_python!r}" + ) + + +class Resolver(BaseResolver): + """Resolves which packages need to be installed/uninstalled to perform \ + the requested operation without breaking the requirements of any package. + """ + + _allowed_strategies = {"eager", "only-if-needed", "to-satisfy-only"} + + def __init__( + self, + preparer: RequirementPreparer, + finder: PackageFinder, + wheel_cache: Optional[WheelCache], + make_install_req: InstallRequirementProvider, + use_user_site: bool, + ignore_dependencies: bool, + ignore_installed: bool, + ignore_requires_python: bool, + force_reinstall: bool, + upgrade_strategy: str, + py_version_info: Optional[Tuple[int, ...]] = None, + ) -> None: + super().__init__() + assert upgrade_strategy in self._allowed_strategies + + if py_version_info is None: + py_version_info = sys.version_info[:3] + else: + py_version_info = normalize_version_info(py_version_info) + + self._py_version_info = py_version_info + + self.preparer = preparer + self.finder = finder + self.wheel_cache = wheel_cache + + self.upgrade_strategy = upgrade_strategy + self.force_reinstall = force_reinstall + self.ignore_dependencies = ignore_dependencies + self.ignore_installed = ignore_installed + self.ignore_requires_python = ignore_requires_python + self.use_user_site = use_user_site + self._make_install_req = make_install_req + + self._discovered_dependencies: DiscoveredDependencies = defaultdict(list) + + def resolve( + self, root_reqs: List[InstallRequirement], check_supported_wheels: bool + ) -> RequirementSet: + """Resolve what operations need to be done + + As a side-effect of this method, the packages (and their dependencies) + are downloaded, unpacked and prepared for installation. This + preparation is done by ``pip.operations.prepare``. + + Once PyPI has static dependency metadata available, it would be + possible to move the preparation to become a step separated from + dependency resolution. + """ + requirement_set = RequirementSet(check_supported_wheels=check_supported_wheels) + for req in root_reqs: + if req.constraint: + check_invalid_constraint_type(req) + self._add_requirement_to_set(requirement_set, req) + + # Actually prepare the files, and collect any exceptions. Most hash + # exceptions cannot be checked ahead of time, because + # _populate_link() needs to be called before we can make decisions + # based on link type. + discovered_reqs: List[InstallRequirement] = [] + hash_errors = HashErrors() + for req in chain(requirement_set.all_requirements, discovered_reqs): + try: + discovered_reqs.extend(self._resolve_one(requirement_set, req)) + except HashError as exc: + exc.req = req + hash_errors.append(exc) + + if hash_errors: + raise hash_errors + + return requirement_set + + def _add_requirement_to_set( + self, + requirement_set: RequirementSet, + install_req: InstallRequirement, + parent_req_name: Optional[str] = None, + extras_requested: Optional[Iterable[str]] = None, + ) -> Tuple[List[InstallRequirement], Optional[InstallRequirement]]: + """Add install_req as a requirement to install. + + :param parent_req_name: The name of the requirement that needed this + added. The name is used because when multiple unnamed requirements + resolve to the same name, we could otherwise end up with dependency + links that point outside the Requirements set. parent_req must + already be added. Note that None implies that this is a user + supplied requirement, vs an inferred one. + :param extras_requested: an iterable of extras used to evaluate the + environment markers. + :return: Additional requirements to scan. That is either [] if + the requirement is not applicable, or [install_req] if the + requirement is applicable and has just been added. + """ + # If the markers do not match, ignore this requirement. + if not install_req.match_markers(extras_requested): + logger.info( + "Ignoring %s: markers '%s' don't match your environment", + install_req.name, + install_req.markers, + ) + return [], None + + # If the wheel is not supported, raise an error. + # Should check this after filtering out based on environment markers to + # allow specifying different wheels based on the environment/OS, in a + # single requirements file. + if install_req.link and install_req.link.is_wheel: + wheel = Wheel(install_req.link.filename) + tags = compatibility_tags.get_supported() + if requirement_set.check_supported_wheels and not wheel.supported(tags): + raise InstallationError( + f"{wheel.filename} is not a supported wheel on this platform." + ) + + # This next bit is really a sanity check. + assert ( + not install_req.user_supplied or parent_req_name is None + ), "a user supplied req shouldn't have a parent" + + # Unnamed requirements are scanned again and the requirement won't be + # added as a dependency until after scanning. + if not install_req.name: + requirement_set.add_unnamed_requirement(install_req) + return [install_req], None + + try: + existing_req: Optional[InstallRequirement] = ( + requirement_set.get_requirement(install_req.name) + ) + except KeyError: + existing_req = None + + has_conflicting_requirement = ( + parent_req_name is None + and existing_req + and not existing_req.constraint + and existing_req.extras == install_req.extras + and existing_req.req + and install_req.req + and existing_req.req.specifier != install_req.req.specifier + ) + if has_conflicting_requirement: + raise InstallationError( + f"Double requirement given: {install_req} " + f"(already in {existing_req}, name={install_req.name!r})" + ) + + # When no existing requirement exists, add the requirement as a + # dependency and it will be scanned again after. + if not existing_req: + requirement_set.add_named_requirement(install_req) + # We'd want to rescan this requirement later + return [install_req], install_req + + # Assume there's no need to scan, and that we've already + # encountered this for scanning. + if install_req.constraint or not existing_req.constraint: + return [], existing_req + + does_not_satisfy_constraint = install_req.link and not ( + existing_req.link and install_req.link.path == existing_req.link.path + ) + if does_not_satisfy_constraint: + raise InstallationError( + f"Could not satisfy constraints for '{install_req.name}': " + "installation from path or url cannot be " + "constrained to a version" + ) + # If we're now installing a constraint, mark the existing + # object for real installation. + existing_req.constraint = False + # If we're now installing a user supplied requirement, + # mark the existing object as such. + if install_req.user_supplied: + existing_req.user_supplied = True + existing_req.extras = tuple( + sorted(set(existing_req.extras) | set(install_req.extras)) + ) + logger.debug( + "Setting %s extras to: %s", + existing_req, + existing_req.extras, + ) + # Return the existing requirement for addition to the parent and + # scanning again. + return [existing_req], existing_req + + def _is_upgrade_allowed(self, req: InstallRequirement) -> bool: + if self.upgrade_strategy == "to-satisfy-only": + return False + elif self.upgrade_strategy == "eager": + return True + else: + assert self.upgrade_strategy == "only-if-needed" + return req.user_supplied or req.constraint + + def _set_req_to_reinstall(self, req: InstallRequirement) -> None: + """ + Set a requirement to be installed. + """ + # Don't uninstall the conflict if doing a user install and the + # conflict is not a user install. + assert req.satisfied_by is not None + if not self.use_user_site or req.satisfied_by.in_usersite: + req.should_reinstall = True + req.satisfied_by = None + + def _check_skip_installed( + self, req_to_install: InstallRequirement + ) -> Optional[str]: + """Check if req_to_install should be skipped. + + This will check if the req is installed, and whether we should upgrade + or reinstall it, taking into account all the relevant user options. + + After calling this req_to_install will only have satisfied_by set to + None if the req_to_install is to be upgraded/reinstalled etc. Any + other value will be a dist recording the current thing installed that + satisfies the requirement. + + Note that for vcs urls and the like we can't assess skipping in this + routine - we simply identify that we need to pull the thing down, + then later on it is pulled down and introspected to assess upgrade/ + reinstalls etc. + + :return: A text reason for why it was skipped, or None. + """ + if self.ignore_installed: + return None + + req_to_install.check_if_exists(self.use_user_site) + if not req_to_install.satisfied_by: + return None + + if self.force_reinstall: + self._set_req_to_reinstall(req_to_install) + return None + + if not self._is_upgrade_allowed(req_to_install): + if self.upgrade_strategy == "only-if-needed": + return "already satisfied, skipping upgrade" + return "already satisfied" + + # Check for the possibility of an upgrade. For link-based + # requirements we have to pull the tree down and inspect to assess + # the version #, so it's handled way down. + if not req_to_install.link: + try: + self.finder.find_requirement(req_to_install, upgrade=True) + except BestVersionAlreadyInstalled: + # Then the best version is installed. + return "already up-to-date" + except DistributionNotFound: + # No distribution found, so we squash the error. It will + # be raised later when we re-try later to do the install. + # Why don't we just raise here? + pass + + self._set_req_to_reinstall(req_to_install) + return None + + def _find_requirement_link(self, req: InstallRequirement) -> Optional[Link]: + upgrade = self._is_upgrade_allowed(req) + best_candidate = self.finder.find_requirement(req, upgrade) + if not best_candidate: + return None + + # Log a warning per PEP 592 if necessary before returning. + link = best_candidate.link + if link.is_yanked: + reason = link.yanked_reason or "" + msg = ( + # Mark this as a unicode string to prevent + # "UnicodeEncodeError: 'ascii' codec can't encode character" + # in Python 2 when the reason contains non-ascii characters. + "The candidate selected for download or install is a " + f"yanked version: {best_candidate}\n" + f"Reason for being yanked: {reason}" + ) + logger.warning(msg) + + return link + + def _populate_link(self, req: InstallRequirement) -> None: + """Ensure that if a link can be found for this, that it is found. + + Note that req.link may still be None - if the requirement is already + installed and not needed to be upgraded based on the return value of + _is_upgrade_allowed(). + + If preparer.require_hashes is True, don't use the wheel cache, because + cached wheels, always built locally, have different hashes than the + files downloaded from the index server and thus throw false hash + mismatches. Furthermore, cached wheels at present have undeterministic + contents due to file modification times. + """ + if req.link is None: + req.link = self._find_requirement_link(req) + + if self.wheel_cache is None or self.preparer.require_hashes: + return + + assert req.link is not None, "_find_requirement_link unexpectedly returned None" + cache_entry = self.wheel_cache.get_cache_entry( + link=req.link, + package_name=req.name, + supported_tags=get_supported(), + ) + if cache_entry is not None: + logger.debug("Using cached wheel link: %s", cache_entry.link) + if req.link is req.original_link and cache_entry.persistent: + req.cached_wheel_source_link = req.link + if cache_entry.origin is not None: + req.download_info = cache_entry.origin + else: + # Legacy cache entry that does not have origin.json. + # download_info may miss the archive_info.hashes field. + req.download_info = direct_url_from_link( + req.link, link_is_in_wheel_cache=cache_entry.persistent + ) + req.link = cache_entry.link + + def _get_dist_for(self, req: InstallRequirement) -> BaseDistribution: + """Takes a InstallRequirement and returns a single AbstractDist \ + representing a prepared variant of the same. + """ + if req.editable: + return self.preparer.prepare_editable_requirement(req) + + # satisfied_by is only evaluated by calling _check_skip_installed, + # so it must be None here. + assert req.satisfied_by is None + skip_reason = self._check_skip_installed(req) + + if req.satisfied_by: + return self.preparer.prepare_installed_requirement(req, skip_reason) + + # We eagerly populate the link, since that's our "legacy" behavior. + self._populate_link(req) + dist = self.preparer.prepare_linked_requirement(req) + + # NOTE + # The following portion is for determining if a certain package is + # going to be re-installed/upgraded or not and reporting to the user. + # This should probably get cleaned up in a future refactor. + + # req.req is only avail after unpack for URL + # pkgs repeat check_if_exists to uninstall-on-upgrade + # (#14) + if not self.ignore_installed: + req.check_if_exists(self.use_user_site) + + if req.satisfied_by: + should_modify = ( + self.upgrade_strategy != "to-satisfy-only" + or self.force_reinstall + or self.ignore_installed + or req.link.scheme == "file" + ) + if should_modify: + self._set_req_to_reinstall(req) + else: + logger.info( + "Requirement already satisfied (use --upgrade to upgrade): %s", + req, + ) + return dist + + def _resolve_one( + self, + requirement_set: RequirementSet, + req_to_install: InstallRequirement, + ) -> List[InstallRequirement]: + """Prepare a single requirements file. + + :return: A list of additional InstallRequirements to also install. + """ + # Tell user what we are doing for this requirement: + # obtain (editable), skipping, processing (local url), collecting + # (remote url or package name) + if req_to_install.constraint or req_to_install.prepared: + return [] + + req_to_install.prepared = True + + # Parse and return dependencies + dist = self._get_dist_for(req_to_install) + # This will raise UnsupportedPythonVersion if the given Python + # version isn't compatible with the distribution's Requires-Python. + _check_dist_requires_python( + dist, + version_info=self._py_version_info, + ignore_requires_python=self.ignore_requires_python, + ) + + more_reqs: List[InstallRequirement] = [] + + def add_req(subreq: Requirement, extras_requested: Iterable[str]) -> None: + # This idiosyncratically converts the Requirement to str and let + # make_install_req then parse it again into Requirement. But this is + # the legacy resolver so I'm just not going to bother refactoring. + sub_install_req = self._make_install_req(str(subreq), req_to_install) + parent_req_name = req_to_install.name + to_scan_again, add_to_parent = self._add_requirement_to_set( + requirement_set, + sub_install_req, + parent_req_name=parent_req_name, + extras_requested=extras_requested, + ) + if parent_req_name and add_to_parent: + self._discovered_dependencies[parent_req_name].append(add_to_parent) + more_reqs.extend(to_scan_again) + + with indent_log(): + # We add req_to_install before its dependencies, so that we + # can refer to it when adding dependencies. + assert req_to_install.name is not None + if not requirement_set.has_requirement(req_to_install.name): + # 'unnamed' requirements will get added here + # 'unnamed' requirements can only come from being directly + # provided by the user. + assert req_to_install.user_supplied + self._add_requirement_to_set( + requirement_set, req_to_install, parent_req_name=None + ) + + if not self.ignore_dependencies: + if req_to_install.extras: + logger.debug( + "Installing extra requirements: %r", + ",".join(req_to_install.extras), + ) + missing_requested = sorted( + set(req_to_install.extras) - set(dist.iter_provided_extras()) + ) + for missing in missing_requested: + logger.warning( + "%s %s does not provide the extra '%s'", + dist.raw_name, + dist.version, + missing, + ) + + available_requested = sorted( + set(dist.iter_provided_extras()) & set(req_to_install.extras) + ) + for subreq in dist.iter_dependencies(available_requested): + add_req(subreq, extras_requested=available_requested) + + return more_reqs + + def get_installation_order( + self, req_set: RequirementSet + ) -> List[InstallRequirement]: + """Create the installation order. + + The installation order is topological - requirements are installed + before the requiring thing. We break cycles at an arbitrary point, + and make no other guarantees. + """ + # The current implementation, which we may change at any point + # installs the user specified things in the order given, except when + # dependencies must come earlier to achieve topological order. + order = [] + ordered_reqs: Set[InstallRequirement] = set() + + def schedule(req: InstallRequirement) -> None: + if req.satisfied_by or req in ordered_reqs: + return + if req.constraint: + return + ordered_reqs.add(req) + for dep in self._discovered_dependencies[req.name]: + schedule(dep) + order.append(req) + + for install_req in req_set.requirements.values(): + schedule(install_req) + return order diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py new file mode 100644 index 00000000000..0f31dc9b307 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py @@ -0,0 +1,139 @@ +from dataclasses import dataclass +from typing import FrozenSet, Iterable, Optional, Tuple + +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import NormalizedName +from pip._vendor.packaging.version import Version + +from pip._internal.models.link import Link, links_equivalent +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.hashes import Hashes + +CandidateLookup = Tuple[Optional["Candidate"], Optional[InstallRequirement]] + + +def format_name(project: NormalizedName, extras: FrozenSet[NormalizedName]) -> str: + if not extras: + return project + extras_expr = ",".join(sorted(extras)) + return f"{project}[{extras_expr}]" + + +@dataclass(frozen=True) +class Constraint: + specifier: SpecifierSet + hashes: Hashes + links: FrozenSet[Link] + + @classmethod + def empty(cls) -> "Constraint": + return Constraint(SpecifierSet(), Hashes(), frozenset()) + + @classmethod + def from_ireq(cls, ireq: InstallRequirement) -> "Constraint": + links = frozenset([ireq.link]) if ireq.link else frozenset() + return Constraint(ireq.specifier, ireq.hashes(trust_internet=False), links) + + def __bool__(self) -> bool: + return bool(self.specifier) or bool(self.hashes) or bool(self.links) + + def __and__(self, other: InstallRequirement) -> "Constraint": + if not isinstance(other, InstallRequirement): + return NotImplemented + specifier = self.specifier & other.specifier + hashes = self.hashes & other.hashes(trust_internet=False) + links = self.links + if other.link: + links = links.union([other.link]) + return Constraint(specifier, hashes, links) + + def is_satisfied_by(self, candidate: "Candidate") -> bool: + # Reject if there are any mismatched URL constraints on this package. + if self.links and not all(_match_link(link, candidate) for link in self.links): + return False + # We can safely always allow prereleases here since PackageFinder + # already implements the prerelease logic, and would have filtered out + # prerelease candidates if the user does not expect them. + return self.specifier.contains(candidate.version, prereleases=True) + + +class Requirement: + @property + def project_name(self) -> NormalizedName: + """The "project name" of a requirement. + + This is different from ``name`` if this requirement contains extras, + in which case ``name`` would contain the ``[...]`` part, while this + refers to the name of the project. + """ + raise NotImplementedError("Subclass should override") + + @property + def name(self) -> str: + """The name identifying this requirement in the resolver. + + This is different from ``project_name`` if this requirement contains + extras, where ``project_name`` would not contain the ``[...]`` part. + """ + raise NotImplementedError("Subclass should override") + + def is_satisfied_by(self, candidate: "Candidate") -> bool: + return False + + def get_candidate_lookup(self) -> CandidateLookup: + raise NotImplementedError("Subclass should override") + + def format_for_error(self) -> str: + raise NotImplementedError("Subclass should override") + + +def _match_link(link: Link, candidate: "Candidate") -> bool: + if candidate.source_link: + return links_equivalent(link, candidate.source_link) + return False + + +class Candidate: + @property + def project_name(self) -> NormalizedName: + """The "project name" of the candidate. + + This is different from ``name`` if this candidate contains extras, + in which case ``name`` would contain the ``[...]`` part, while this + refers to the name of the project. + """ + raise NotImplementedError("Override in subclass") + + @property + def name(self) -> str: + """The name identifying this candidate in the resolver. + + This is different from ``project_name`` if this candidate contains + extras, where ``project_name`` would not contain the ``[...]`` part. + """ + raise NotImplementedError("Override in subclass") + + @property + def version(self) -> Version: + raise NotImplementedError("Override in subclass") + + @property + def is_installed(self) -> bool: + raise NotImplementedError("Override in subclass") + + @property + def is_editable(self) -> bool: + raise NotImplementedError("Override in subclass") + + @property + def source_link(self) -> Optional[Link]: + raise NotImplementedError("Override in subclass") + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + raise NotImplementedError("Override in subclass") + + def get_install_requirement(self) -> Optional[InstallRequirement]: + raise NotImplementedError("Override in subclass") + + def format_for_error(self) -> str: + raise NotImplementedError("Subclass should override") diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py new file mode 100644 index 00000000000..d30d477be68 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py @@ -0,0 +1,569 @@ +import logging +import sys +from typing import TYPE_CHECKING, Any, FrozenSet, Iterable, Optional, Tuple, Union, cast + +from pip._vendor.packaging.requirements import InvalidRequirement +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version + +from pip._internal.exceptions import ( + HashError, + InstallationSubprocessError, + MetadataInconsistent, + MetadataInvalid, +) +from pip._internal.metadata import BaseDistribution +from pip._internal.models.link import Link, links_equivalent +from pip._internal.models.wheel import Wheel +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, +) +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.direct_url_helpers import direct_url_from_link +from pip._internal.utils.misc import normalize_version_info + +from .base import Candidate, Requirement, format_name + +if TYPE_CHECKING: + from .factory import Factory + +logger = logging.getLogger(__name__) + +BaseCandidate = Union[ + "AlreadyInstalledCandidate", + "EditableCandidate", + "LinkCandidate", +] + +# Avoid conflicting with the PyPI package "Python". +REQUIRES_PYTHON_IDENTIFIER = cast(NormalizedName, "") + + +def as_base_candidate(candidate: Candidate) -> Optional[BaseCandidate]: + """The runtime version of BaseCandidate.""" + base_candidate_classes = ( + AlreadyInstalledCandidate, + EditableCandidate, + LinkCandidate, + ) + if isinstance(candidate, base_candidate_classes): + return candidate + return None + + +def make_install_req_from_link( + link: Link, template: InstallRequirement +) -> InstallRequirement: + assert not template.editable, "template is editable" + if template.req: + line = str(template.req) + else: + line = link.url + ireq = install_req_from_line( + line, + user_supplied=template.user_supplied, + comes_from=template.comes_from, + use_pep517=template.use_pep517, + isolated=template.isolated, + constraint=template.constraint, + global_options=template.global_options, + hash_options=template.hash_options, + config_settings=template.config_settings, + ) + ireq.original_link = template.original_link + ireq.link = link + ireq.extras = template.extras + return ireq + + +def make_install_req_from_editable( + link: Link, template: InstallRequirement +) -> InstallRequirement: + assert template.editable, "template not editable" + ireq = install_req_from_editable( + link.url, + user_supplied=template.user_supplied, + comes_from=template.comes_from, + use_pep517=template.use_pep517, + isolated=template.isolated, + constraint=template.constraint, + permit_editable_wheels=template.permit_editable_wheels, + global_options=template.global_options, + hash_options=template.hash_options, + config_settings=template.config_settings, + ) + ireq.extras = template.extras + return ireq + + +def _make_install_req_from_dist( + dist: BaseDistribution, template: InstallRequirement +) -> InstallRequirement: + if template.req: + line = str(template.req) + elif template.link: + line = f"{dist.canonical_name} @ {template.link.url}" + else: + line = f"{dist.canonical_name}=={dist.version}" + ireq = install_req_from_line( + line, + user_supplied=template.user_supplied, + comes_from=template.comes_from, + use_pep517=template.use_pep517, + isolated=template.isolated, + constraint=template.constraint, + global_options=template.global_options, + hash_options=template.hash_options, + config_settings=template.config_settings, + ) + ireq.satisfied_by = dist + return ireq + + +class _InstallRequirementBackedCandidate(Candidate): + """A candidate backed by an ``InstallRequirement``. + + This represents a package request with the target not being already + in the environment, and needs to be fetched and installed. The backing + ``InstallRequirement`` is responsible for most of the leg work; this + class exposes appropriate information to the resolver. + + :param link: The link passed to the ``InstallRequirement``. The backing + ``InstallRequirement`` will use this link to fetch the distribution. + :param source_link: The link this candidate "originates" from. This is + different from ``link`` when the link is found in the wheel cache. + ``link`` would point to the wheel cache, while this points to the + found remote link (e.g. from pypi.org). + """ + + dist: BaseDistribution + is_installed = False + + def __init__( + self, + link: Link, + source_link: Link, + ireq: InstallRequirement, + factory: "Factory", + name: Optional[NormalizedName] = None, + version: Optional[Version] = None, + ) -> None: + self._link = link + self._source_link = source_link + self._factory = factory + self._ireq = ireq + self._name = name + self._version = version + self.dist = self._prepare() + self._hash: Optional[int] = None + + def __str__(self) -> str: + return f"{self.name} {self.version}" + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({str(self._link)!r})" + + def __hash__(self) -> int: + if self._hash is not None: + return self._hash + + self._hash = hash((self.__class__, self._link)) + return self._hash + + def __eq__(self, other: Any) -> bool: + if isinstance(other, self.__class__): + return links_equivalent(self._link, other._link) + return False + + @property + def source_link(self) -> Optional[Link]: + return self._source_link + + @property + def project_name(self) -> NormalizedName: + """The normalised name of the project the candidate refers to""" + if self._name is None: + self._name = self.dist.canonical_name + return self._name + + @property + def name(self) -> str: + return self.project_name + + @property + def version(self) -> Version: + if self._version is None: + self._version = self.dist.version + return self._version + + def format_for_error(self) -> str: + return ( + f"{self.name} {self.version} " + f"(from {self._link.file_path if self._link.is_file else self._link})" + ) + + def _prepare_distribution(self) -> BaseDistribution: + raise NotImplementedError("Override in subclass") + + def _check_metadata_consistency(self, dist: BaseDistribution) -> None: + """Check for consistency of project name and version of dist.""" + if self._name is not None and self._name != dist.canonical_name: + raise MetadataInconsistent( + self._ireq, + "name", + self._name, + dist.canonical_name, + ) + if self._version is not None and self._version != dist.version: + raise MetadataInconsistent( + self._ireq, + "version", + str(self._version), + str(dist.version), + ) + # check dependencies are valid + # TODO performance: this means we iterate the dependencies at least twice, + # we may want to cache parsed Requires-Dist + try: + list(dist.iter_dependencies(list(dist.iter_provided_extras()))) + except InvalidRequirement as e: + raise MetadataInvalid(self._ireq, str(e)) + + def _prepare(self) -> BaseDistribution: + try: + dist = self._prepare_distribution() + except HashError as e: + # Provide HashError the underlying ireq that caused it. This + # provides context for the resulting error message to show the + # offending line to the user. + e.req = self._ireq + raise + except InstallationSubprocessError as exc: + # The output has been presented already, so don't duplicate it. + exc.context = "See above for output." + raise + + self._check_metadata_consistency(dist) + return dist + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + requires = self.dist.iter_dependencies() if with_requires else () + for r in requires: + yield from self._factory.make_requirements_from_spec(str(r), self._ireq) + yield self._factory.make_requires_python_requirement(self.dist.requires_python) + + def get_install_requirement(self) -> Optional[InstallRequirement]: + return self._ireq + + +class LinkCandidate(_InstallRequirementBackedCandidate): + is_editable = False + + def __init__( + self, + link: Link, + template: InstallRequirement, + factory: "Factory", + name: Optional[NormalizedName] = None, + version: Optional[Version] = None, + ) -> None: + source_link = link + cache_entry = factory.get_wheel_cache_entry(source_link, name) + if cache_entry is not None: + logger.debug("Using cached wheel link: %s", cache_entry.link) + link = cache_entry.link + ireq = make_install_req_from_link(link, template) + assert ireq.link == link + if ireq.link.is_wheel and not ireq.link.is_file: + wheel = Wheel(ireq.link.filename) + wheel_name = canonicalize_name(wheel.name) + assert name == wheel_name, f"{name!r} != {wheel_name!r} for wheel" + # Version may not be present for PEP 508 direct URLs + if version is not None: + wheel_version = Version(wheel.version) + assert ( + version == wheel_version + ), f"{version!r} != {wheel_version!r} for wheel {name}" + + if cache_entry is not None: + assert ireq.link.is_wheel + assert ireq.link.is_file + if cache_entry.persistent and template.link is template.original_link: + ireq.cached_wheel_source_link = source_link + if cache_entry.origin is not None: + ireq.download_info = cache_entry.origin + else: + # Legacy cache entry that does not have origin.json. + # download_info may miss the archive_info.hashes field. + ireq.download_info = direct_url_from_link( + source_link, link_is_in_wheel_cache=cache_entry.persistent + ) + + super().__init__( + link=link, + source_link=source_link, + ireq=ireq, + factory=factory, + name=name, + version=version, + ) + + def _prepare_distribution(self) -> BaseDistribution: + preparer = self._factory.preparer + return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True) + + +class EditableCandidate(_InstallRequirementBackedCandidate): + is_editable = True + + def __init__( + self, + link: Link, + template: InstallRequirement, + factory: "Factory", + name: Optional[NormalizedName] = None, + version: Optional[Version] = None, + ) -> None: + super().__init__( + link=link, + source_link=link, + ireq=make_install_req_from_editable(link, template), + factory=factory, + name=name, + version=version, + ) + + def _prepare_distribution(self) -> BaseDistribution: + return self._factory.preparer.prepare_editable_requirement(self._ireq) + + +class AlreadyInstalledCandidate(Candidate): + is_installed = True + source_link = None + + def __init__( + self, + dist: BaseDistribution, + template: InstallRequirement, + factory: "Factory", + ) -> None: + self.dist = dist + self._ireq = _make_install_req_from_dist(dist, template) + self._factory = factory + self._version = None + + # This is just logging some messages, so we can do it eagerly. + # The returned dist would be exactly the same as self.dist because we + # set satisfied_by in _make_install_req_from_dist. + # TODO: Supply reason based on force_reinstall and upgrade_strategy. + skip_reason = "already satisfied" + factory.preparer.prepare_installed_requirement(self._ireq, skip_reason) + + def __str__(self) -> str: + return str(self.dist) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self.dist!r})" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, AlreadyInstalledCandidate): + return NotImplemented + return self.name == other.name and self.version == other.version + + def __hash__(self) -> int: + return hash((self.name, self.version)) + + @property + def project_name(self) -> NormalizedName: + return self.dist.canonical_name + + @property + def name(self) -> str: + return self.project_name + + @property + def version(self) -> Version: + if self._version is None: + self._version = self.dist.version + return self._version + + @property + def is_editable(self) -> bool: + return self.dist.editable + + def format_for_error(self) -> str: + return f"{self.name} {self.version} (Installed)" + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + if not with_requires: + return + for r in self.dist.iter_dependencies(): + yield from self._factory.make_requirements_from_spec(str(r), self._ireq) + + def get_install_requirement(self) -> Optional[InstallRequirement]: + return None + + +class ExtrasCandidate(Candidate): + """A candidate that has 'extras', indicating additional dependencies. + + Requirements can be for a project with dependencies, something like + foo[extra]. The extras don't affect the project/version being installed + directly, but indicate that we need additional dependencies. We model that + by having an artificial ExtrasCandidate that wraps the "base" candidate. + + The ExtrasCandidate differs from the base in the following ways: + + 1. It has a unique name, of the form foo[extra]. This causes the resolver + to treat it as a separate node in the dependency graph. + 2. When we're getting the candidate's dependencies, + a) We specify that we want the extra dependencies as well. + b) We add a dependency on the base candidate. + See below for why this is needed. + 3. We return None for the underlying InstallRequirement, as the base + candidate will provide it, and we don't want to end up with duplicates. + + The dependency on the base candidate is needed so that the resolver can't + decide that it should recommend foo[extra1] version 1.0 and foo[extra2] + version 2.0. Having those candidates depend on foo=1.0 and foo=2.0 + respectively forces the resolver to recognise that this is a conflict. + """ + + def __init__( + self, + base: BaseCandidate, + extras: FrozenSet[str], + *, + comes_from: Optional[InstallRequirement] = None, + ) -> None: + """ + :param comes_from: the InstallRequirement that led to this candidate if it + differs from the base's InstallRequirement. This will often be the + case in the sense that this candidate's requirement has the extras + while the base's does not. Unlike the InstallRequirement backed + candidates, this requirement is used solely for reporting purposes, + it does not do any leg work. + """ + self.base = base + self.extras = frozenset(canonicalize_name(e) for e in extras) + self._comes_from = comes_from if comes_from is not None else self.base._ireq + + def __str__(self) -> str: + name, rest = str(self.base).split(" ", 1) + return "{}[{}] {}".format(name, ",".join(self.extras), rest) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}(base={self.base!r}, extras={self.extras!r})" + + def __hash__(self) -> int: + return hash((self.base, self.extras)) + + def __eq__(self, other: Any) -> bool: + if isinstance(other, self.__class__): + return self.base == other.base and self.extras == other.extras + return False + + @property + def project_name(self) -> NormalizedName: + return self.base.project_name + + @property + def name(self) -> str: + """The normalised name of the project the candidate refers to""" + return format_name(self.base.project_name, self.extras) + + @property + def version(self) -> Version: + return self.base.version + + def format_for_error(self) -> str: + return "{} [{}]".format( + self.base.format_for_error(), ", ".join(sorted(self.extras)) + ) + + @property + def is_installed(self) -> bool: + return self.base.is_installed + + @property + def is_editable(self) -> bool: + return self.base.is_editable + + @property + def source_link(self) -> Optional[Link]: + return self.base.source_link + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + factory = self.base._factory + + # Add a dependency on the exact base + # (See note 2b in the class docstring) + yield factory.make_requirement_from_candidate(self.base) + if not with_requires: + return + + # The user may have specified extras that the candidate doesn't + # support. We ignore any unsupported extras here. + valid_extras = self.extras.intersection(self.base.dist.iter_provided_extras()) + invalid_extras = self.extras.difference(self.base.dist.iter_provided_extras()) + for extra in sorted(invalid_extras): + logger.warning( + "%s %s does not provide the extra '%s'", + self.base.name, + self.version, + extra, + ) + + for r in self.base.dist.iter_dependencies(valid_extras): + yield from factory.make_requirements_from_spec( + str(r), + self._comes_from, + valid_extras, + ) + + def get_install_requirement(self) -> Optional[InstallRequirement]: + # We don't return anything here, because we always + # depend on the base candidate, and we'll get the + # install requirement from that. + return None + + +class RequiresPythonCandidate(Candidate): + is_installed = False + source_link = None + + def __init__(self, py_version_info: Optional[Tuple[int, ...]]) -> None: + if py_version_info is not None: + version_info = normalize_version_info(py_version_info) + else: + version_info = sys.version_info[:3] + self._version = Version(".".join(str(c) for c in version_info)) + + # We don't need to implement __eq__() and __ne__() since there is always + # only one RequiresPythonCandidate in a resolution, i.e. the host Python. + # The built-in object.__eq__() and object.__ne__() do exactly what we want. + + def __str__(self) -> str: + return f"Python {self._version}" + + @property + def project_name(self) -> NormalizedName: + return REQUIRES_PYTHON_IDENTIFIER + + @property + def name(self) -> str: + return REQUIRES_PYTHON_IDENTIFIER + + @property + def version(self) -> Version: + return self._version + + def format_for_error(self) -> str: + return f"Python {self.version}" + + def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]: + return () + + def get_install_requirement(self) -> Optional[InstallRequirement]: + return None diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py new file mode 100644 index 00000000000..145bdbf71a1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py @@ -0,0 +1,817 @@ +import contextlib +import functools +import logging +from typing import ( + TYPE_CHECKING, + Callable, + Dict, + FrozenSet, + Iterable, + Iterator, + List, + Mapping, + NamedTuple, + Optional, + Protocol, + Sequence, + Set, + Tuple, + TypeVar, + cast, +) + +from pip._vendor.packaging.requirements import InvalidRequirement +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name +from pip._vendor.packaging.version import Version +from pip._vendor.resolvelib import ResolutionImpossible + +from pip._internal.cache import CacheEntry, WheelCache +from pip._internal.exceptions import ( + DistributionNotFound, + InstallationError, + MetadataInconsistent, + MetadataInvalid, + UnsupportedPythonVersion, + UnsupportedWheel, +) +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import BaseDistribution, get_default_environment +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.constructors import ( + install_req_drop_extras, + install_req_from_link_and_ireq, +) +from pip._internal.req.req_install import ( + InstallRequirement, + check_invalid_constraint_type, +) +from pip._internal.resolution.base import InstallRequirementProvider +from pip._internal.utils.compatibility_tags import get_supported +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.packaging import get_requirement +from pip._internal.utils.virtualenv import running_under_virtualenv + +from .base import Candidate, Constraint, Requirement +from .candidates import ( + AlreadyInstalledCandidate, + BaseCandidate, + EditableCandidate, + ExtrasCandidate, + LinkCandidate, + RequiresPythonCandidate, + as_base_candidate, +) +from .found_candidates import FoundCandidates, IndexCandidateInfo +from .requirements import ( + ExplicitRequirement, + RequiresPythonRequirement, + SpecifierRequirement, + SpecifierWithoutExtrasRequirement, + UnsatisfiableRequirement, +) + +if TYPE_CHECKING: + + class ConflictCause(Protocol): + requirement: RequiresPythonRequirement + parent: Candidate + + +logger = logging.getLogger(__name__) + +C = TypeVar("C") +Cache = Dict[Link, C] + + +class CollectedRootRequirements(NamedTuple): + requirements: List[Requirement] + constraints: Dict[str, Constraint] + user_requested: Dict[str, int] + + +class Factory: + def __init__( + self, + finder: PackageFinder, + preparer: RequirementPreparer, + make_install_req: InstallRequirementProvider, + wheel_cache: Optional[WheelCache], + use_user_site: bool, + force_reinstall: bool, + ignore_installed: bool, + ignore_requires_python: bool, + py_version_info: Optional[Tuple[int, ...]] = None, + ) -> None: + self._finder = finder + self.preparer = preparer + self._wheel_cache = wheel_cache + self._python_candidate = RequiresPythonCandidate(py_version_info) + self._make_install_req_from_spec = make_install_req + self._use_user_site = use_user_site + self._force_reinstall = force_reinstall + self._ignore_requires_python = ignore_requires_python + + self._build_failures: Cache[InstallationError] = {} + self._link_candidate_cache: Cache[LinkCandidate] = {} + self._editable_candidate_cache: Cache[EditableCandidate] = {} + self._installed_candidate_cache: Dict[str, AlreadyInstalledCandidate] = {} + self._extras_candidate_cache: Dict[ + Tuple[int, FrozenSet[NormalizedName]], ExtrasCandidate + ] = {} + self._supported_tags_cache = get_supported() + + if not ignore_installed: + env = get_default_environment() + self._installed_dists = { + dist.canonical_name: dist + for dist in env.iter_installed_distributions(local_only=False) + } + else: + self._installed_dists = {} + + @property + def force_reinstall(self) -> bool: + return self._force_reinstall + + def _fail_if_link_is_unsupported_wheel(self, link: Link) -> None: + if not link.is_wheel: + return + wheel = Wheel(link.filename) + if wheel.supported(self._finder.target_python.get_unsorted_tags()): + return + msg = f"{link.filename} is not a supported wheel on this platform." + raise UnsupportedWheel(msg) + + def _make_extras_candidate( + self, + base: BaseCandidate, + extras: FrozenSet[str], + *, + comes_from: Optional[InstallRequirement] = None, + ) -> ExtrasCandidate: + cache_key = (id(base), frozenset(canonicalize_name(e) for e in extras)) + try: + candidate = self._extras_candidate_cache[cache_key] + except KeyError: + candidate = ExtrasCandidate(base, extras, comes_from=comes_from) + self._extras_candidate_cache[cache_key] = candidate + return candidate + + def _make_candidate_from_dist( + self, + dist: BaseDistribution, + extras: FrozenSet[str], + template: InstallRequirement, + ) -> Candidate: + try: + base = self._installed_candidate_cache[dist.canonical_name] + except KeyError: + base = AlreadyInstalledCandidate(dist, template, factory=self) + self._installed_candidate_cache[dist.canonical_name] = base + if not extras: + return base + return self._make_extras_candidate(base, extras, comes_from=template) + + def _make_candidate_from_link( + self, + link: Link, + extras: FrozenSet[str], + template: InstallRequirement, + name: Optional[NormalizedName], + version: Optional[Version], + ) -> Optional[Candidate]: + base: Optional[BaseCandidate] = self._make_base_candidate_from_link( + link, template, name, version + ) + if not extras or base is None: + return base + return self._make_extras_candidate(base, extras, comes_from=template) + + def _make_base_candidate_from_link( + self, + link: Link, + template: InstallRequirement, + name: Optional[NormalizedName], + version: Optional[Version], + ) -> Optional[BaseCandidate]: + # TODO: Check already installed candidate, and use it if the link and + # editable flag match. + + if link in self._build_failures: + # We already tried this candidate before, and it does not build. + # Don't bother trying again. + return None + + if template.editable: + if link not in self._editable_candidate_cache: + try: + self._editable_candidate_cache[link] = EditableCandidate( + link, + template, + factory=self, + name=name, + version=version, + ) + except (MetadataInconsistent, MetadataInvalid) as e: + logger.info( + "Discarding [blue underline]%s[/]: [yellow]%s[reset]", + link, + e, + extra={"markup": True}, + ) + self._build_failures[link] = e + return None + + return self._editable_candidate_cache[link] + else: + if link not in self._link_candidate_cache: + try: + self._link_candidate_cache[link] = LinkCandidate( + link, + template, + factory=self, + name=name, + version=version, + ) + except MetadataInconsistent as e: + logger.info( + "Discarding [blue underline]%s[/]: [yellow]%s[reset]", + link, + e, + extra={"markup": True}, + ) + self._build_failures[link] = e + return None + return self._link_candidate_cache[link] + + def _iter_found_candidates( + self, + ireqs: Sequence[InstallRequirement], + specifier: SpecifierSet, + hashes: Hashes, + prefers_installed: bool, + incompatible_ids: Set[int], + ) -> Iterable[Candidate]: + if not ireqs: + return () + + # The InstallRequirement implementation requires us to give it a + # "template". Here we just choose the first requirement to represent + # all of them. + # Hopefully the Project model can correct this mismatch in the future. + template = ireqs[0] + assert template.req, "Candidates found on index must be PEP 508" + name = canonicalize_name(template.req.name) + + extras: FrozenSet[str] = frozenset() + for ireq in ireqs: + assert ireq.req, "Candidates found on index must be PEP 508" + specifier &= ireq.req.specifier + hashes &= ireq.hashes(trust_internet=False) + extras |= frozenset(ireq.extras) + + def _get_installed_candidate() -> Optional[Candidate]: + """Get the candidate for the currently-installed version.""" + # If --force-reinstall is set, we want the version from the index + # instead, so we "pretend" there is nothing installed. + if self._force_reinstall: + return None + try: + installed_dist = self._installed_dists[name] + except KeyError: + return None + # Don't use the installed distribution if its version does not fit + # the current dependency graph. + if not specifier.contains(installed_dist.version, prereleases=True): + return None + candidate = self._make_candidate_from_dist( + dist=installed_dist, + extras=extras, + template=template, + ) + # The candidate is a known incompatibility. Don't use it. + if id(candidate) in incompatible_ids: + return None + return candidate + + def iter_index_candidate_infos() -> Iterator[IndexCandidateInfo]: + result = self._finder.find_best_candidate( + project_name=name, + specifier=specifier, + hashes=hashes, + ) + icans = list(result.iter_applicable()) + + # PEP 592: Yanked releases are ignored unless the specifier + # explicitly pins a version (via '==' or '===') that can be + # solely satisfied by a yanked release. + all_yanked = all(ican.link.is_yanked for ican in icans) + + def is_pinned(specifier: SpecifierSet) -> bool: + for sp in specifier: + if sp.operator == "===": + return True + if sp.operator != "==": + continue + if sp.version.endswith(".*"): + continue + return True + return False + + pinned = is_pinned(specifier) + + # PackageFinder returns earlier versions first, so we reverse. + for ican in reversed(icans): + if not (all_yanked and pinned) and ican.link.is_yanked: + continue + func = functools.partial( + self._make_candidate_from_link, + link=ican.link, + extras=extras, + template=template, + name=name, + version=ican.version, + ) + yield ican.version, func + + return FoundCandidates( + iter_index_candidate_infos, + _get_installed_candidate(), + prefers_installed, + incompatible_ids, + ) + + def _iter_explicit_candidates_from_base( + self, + base_requirements: Iterable[Requirement], + extras: FrozenSet[str], + ) -> Iterator[Candidate]: + """Produce explicit candidates from the base given an extra-ed package. + + :param base_requirements: Requirements known to the resolver. The + requirements are guaranteed to not have extras. + :param extras: The extras to inject into the explicit requirements' + candidates. + """ + for req in base_requirements: + lookup_cand, _ = req.get_candidate_lookup() + if lookup_cand is None: # Not explicit. + continue + # We've stripped extras from the identifier, and should always + # get a BaseCandidate here, unless there's a bug elsewhere. + base_cand = as_base_candidate(lookup_cand) + assert base_cand is not None, "no extras here" + yield self._make_extras_candidate(base_cand, extras) + + def _iter_candidates_from_constraints( + self, + identifier: str, + constraint: Constraint, + template: InstallRequirement, + ) -> Iterator[Candidate]: + """Produce explicit candidates from constraints. + + This creates "fake" InstallRequirement objects that are basically clones + of what "should" be the template, but with original_link set to link. + """ + for link in constraint.links: + self._fail_if_link_is_unsupported_wheel(link) + candidate = self._make_base_candidate_from_link( + link, + template=install_req_from_link_and_ireq(link, template), + name=canonicalize_name(identifier), + version=None, + ) + if candidate: + yield candidate + + def find_candidates( + self, + identifier: str, + requirements: Mapping[str, Iterable[Requirement]], + incompatibilities: Mapping[str, Iterator[Candidate]], + constraint: Constraint, + prefers_installed: bool, + is_satisfied_by: Callable[[Requirement, Candidate], bool], + ) -> Iterable[Candidate]: + # Collect basic lookup information from the requirements. + explicit_candidates: Set[Candidate] = set() + ireqs: List[InstallRequirement] = [] + for req in requirements[identifier]: + cand, ireq = req.get_candidate_lookup() + if cand is not None: + explicit_candidates.add(cand) + if ireq is not None: + ireqs.append(ireq) + + # If the current identifier contains extras, add requires and explicit + # candidates from entries from extra-less identifier. + with contextlib.suppress(InvalidRequirement): + parsed_requirement = get_requirement(identifier) + if parsed_requirement.name != identifier: + explicit_candidates.update( + self._iter_explicit_candidates_from_base( + requirements.get(parsed_requirement.name, ()), + frozenset(parsed_requirement.extras), + ), + ) + for req in requirements.get(parsed_requirement.name, []): + _, ireq = req.get_candidate_lookup() + if ireq is not None: + ireqs.append(ireq) + + # Add explicit candidates from constraints. We only do this if there are + # known ireqs, which represent requirements not already explicit. If + # there are no ireqs, we're constraining already-explicit requirements, + # which is handled later when we return the explicit candidates. + if ireqs: + try: + explicit_candidates.update( + self._iter_candidates_from_constraints( + identifier, + constraint, + template=ireqs[0], + ), + ) + except UnsupportedWheel: + # If we're constrained to install a wheel incompatible with the + # target architecture, no candidates will ever be valid. + return () + + # Since we cache all the candidates, incompatibility identification + # can be made quicker by comparing only the id() values. + incompat_ids = {id(c) for c in incompatibilities.get(identifier, ())} + + # If none of the requirements want an explicit candidate, we can ask + # the finder for candidates. + if not explicit_candidates: + return self._iter_found_candidates( + ireqs, + constraint.specifier, + constraint.hashes, + prefers_installed, + incompat_ids, + ) + + return ( + c + for c in explicit_candidates + if id(c) not in incompat_ids + and constraint.is_satisfied_by(c) + and all(is_satisfied_by(req, c) for req in requirements[identifier]) + ) + + def _make_requirements_from_install_req( + self, ireq: InstallRequirement, requested_extras: Iterable[str] + ) -> Iterator[Requirement]: + """ + Returns requirement objects associated with the given InstallRequirement. In + most cases this will be a single object but the following special cases exist: + - the InstallRequirement has markers that do not apply -> result is empty + - the InstallRequirement has both a constraint (or link) and extras + -> result is split in two requirement objects: one with the constraint + (or link) and one with the extra. This allows centralized constraint + handling for the base, resulting in fewer candidate rejections. + """ + if not ireq.match_markers(requested_extras): + logger.info( + "Ignoring %s: markers '%s' don't match your environment", + ireq.name, + ireq.markers, + ) + elif not ireq.link: + if ireq.extras and ireq.req is not None and ireq.req.specifier: + yield SpecifierWithoutExtrasRequirement(ireq) + yield SpecifierRequirement(ireq) + else: + self._fail_if_link_is_unsupported_wheel(ireq.link) + # Always make the link candidate for the base requirement to make it + # available to `find_candidates` for explicit candidate lookup for any + # set of extras. + # The extras are required separately via a second requirement. + cand = self._make_base_candidate_from_link( + ireq.link, + template=install_req_drop_extras(ireq) if ireq.extras else ireq, + name=canonicalize_name(ireq.name) if ireq.name else None, + version=None, + ) + if cand is None: + # There's no way we can satisfy a URL requirement if the underlying + # candidate fails to build. An unnamed URL must be user-supplied, so + # we fail eagerly. If the URL is named, an unsatisfiable requirement + # can make the resolver do the right thing, either backtrack (and + # maybe find some other requirement that's buildable) or raise a + # ResolutionImpossible eventually. + if not ireq.name: + raise self._build_failures[ireq.link] + yield UnsatisfiableRequirement(canonicalize_name(ireq.name)) + else: + # require the base from the link + yield self.make_requirement_from_candidate(cand) + if ireq.extras: + # require the extras on top of the base candidate + yield self.make_requirement_from_candidate( + self._make_extras_candidate(cand, frozenset(ireq.extras)) + ) + + def collect_root_requirements( + self, root_ireqs: List[InstallRequirement] + ) -> CollectedRootRequirements: + collected = CollectedRootRequirements([], {}, {}) + for i, ireq in enumerate(root_ireqs): + if ireq.constraint: + # Ensure we only accept valid constraints + problem = check_invalid_constraint_type(ireq) + if problem: + raise InstallationError(problem) + if not ireq.match_markers(): + continue + assert ireq.name, "Constraint must be named" + name = canonicalize_name(ireq.name) + if name in collected.constraints: + collected.constraints[name] &= ireq + else: + collected.constraints[name] = Constraint.from_ireq(ireq) + else: + reqs = list( + self._make_requirements_from_install_req( + ireq, + requested_extras=(), + ) + ) + if not reqs: + continue + template = reqs[0] + if ireq.user_supplied and template.name not in collected.user_requested: + collected.user_requested[template.name] = i + collected.requirements.extend(reqs) + # Put requirements with extras at the end of the root requires. This does not + # affect resolvelib's picking preference but it does affect its initial criteria + # population: by putting extras at the end we enable the candidate finder to + # present resolvelib with a smaller set of candidates to resolvelib, already + # taking into account any non-transient constraints on the associated base. This + # means resolvelib will have fewer candidates to visit and reject. + # Python's list sort is stable, meaning relative order is kept for objects with + # the same key. + collected.requirements.sort(key=lambda r: r.name != r.project_name) + return collected + + def make_requirement_from_candidate( + self, candidate: Candidate + ) -> ExplicitRequirement: + return ExplicitRequirement(candidate) + + def make_requirements_from_spec( + self, + specifier: str, + comes_from: Optional[InstallRequirement], + requested_extras: Iterable[str] = (), + ) -> Iterator[Requirement]: + """ + Returns requirement objects associated with the given specifier. In most cases + this will be a single object but the following special cases exist: + - the specifier has markers that do not apply -> result is empty + - the specifier has both a constraint and extras -> result is split + in two requirement objects: one with the constraint and one with the + extra. This allows centralized constraint handling for the base, + resulting in fewer candidate rejections. + """ + ireq = self._make_install_req_from_spec(specifier, comes_from) + return self._make_requirements_from_install_req(ireq, requested_extras) + + def make_requires_python_requirement( + self, + specifier: SpecifierSet, + ) -> Optional[Requirement]: + if self._ignore_requires_python: + return None + # Don't bother creating a dependency for an empty Requires-Python. + if not str(specifier): + return None + return RequiresPythonRequirement(specifier, self._python_candidate) + + def get_wheel_cache_entry( + self, link: Link, name: Optional[str] + ) -> Optional[CacheEntry]: + """Look up the link in the wheel cache. + + If ``preparer.require_hashes`` is True, don't use the wheel cache, + because cached wheels, always built locally, have different hashes + than the files downloaded from the index server and thus throw false + hash mismatches. Furthermore, cached wheels at present have + nondeterministic contents due to file modification times. + """ + if self._wheel_cache is None: + return None + return self._wheel_cache.get_cache_entry( + link=link, + package_name=name, + supported_tags=self._supported_tags_cache, + ) + + def get_dist_to_uninstall(self, candidate: Candidate) -> Optional[BaseDistribution]: + # TODO: Are there more cases this needs to return True? Editable? + dist = self._installed_dists.get(candidate.project_name) + if dist is None: # Not installed, no uninstallation required. + return None + + # We're installing into global site. The current installation must + # be uninstalled, no matter it's in global or user site, because the + # user site installation has precedence over global. + if not self._use_user_site: + return dist + + # We're installing into user site. Remove the user site installation. + if dist.in_usersite: + return dist + + # We're installing into user site, but the installed incompatible + # package is in global site. We can't uninstall that, and would let + # the new user installation to "shadow" it. But shadowing won't work + # in virtual environments, so we error out. + if running_under_virtualenv() and dist.in_site_packages: + message = ( + f"Will not install to the user site because it will lack " + f"sys.path precedence to {dist.raw_name} in {dist.location}" + ) + raise InstallationError(message) + return None + + def _report_requires_python_error( + self, causes: Sequence["ConflictCause"] + ) -> UnsupportedPythonVersion: + assert causes, "Requires-Python error reported with no cause" + + version = self._python_candidate.version + + if len(causes) == 1: + specifier = str(causes[0].requirement.specifier) + message = ( + f"Package {causes[0].parent.name!r} requires a different " + f"Python: {version} not in {specifier!r}" + ) + return UnsupportedPythonVersion(message) + + message = f"Packages require a different Python. {version} not in:" + for cause in causes: + package = cause.parent.format_for_error() + specifier = str(cause.requirement.specifier) + message += f"\n{specifier!r} (required by {package})" + return UnsupportedPythonVersion(message) + + def _report_single_requirement_conflict( + self, req: Requirement, parent: Optional[Candidate] + ) -> DistributionNotFound: + if parent is None: + req_disp = str(req) + else: + req_disp = f"{req} (from {parent.name})" + + cands = self._finder.find_all_candidates(req.project_name) + skipped_by_requires_python = self._finder.requires_python_skipped_reasons() + + versions_set: Set[Version] = set() + yanked_versions_set: Set[Version] = set() + for c in cands: + is_yanked = c.link.is_yanked if c.link else False + if is_yanked: + yanked_versions_set.add(c.version) + else: + versions_set.add(c.version) + + versions = [str(v) for v in sorted(versions_set)] + yanked_versions = [str(v) for v in sorted(yanked_versions_set)] + + if yanked_versions: + # Saying "version X is yanked" isn't entirely accurate. + # https://github.com/pypa/pip/issues/11745#issuecomment-1402805842 + logger.critical( + "Ignored the following yanked versions: %s", + ", ".join(yanked_versions) or "none", + ) + if skipped_by_requires_python: + logger.critical( + "Ignored the following versions that require a different python " + "version: %s", + "; ".join(skipped_by_requires_python) or "none", + ) + logger.critical( + "Could not find a version that satisfies the requirement %s " + "(from versions: %s)", + req_disp, + ", ".join(versions) or "none", + ) + if str(req) == "requirements.txt": + logger.info( + "HINT: You are attempting to install a package literally " + 'named "requirements.txt" (which cannot exist). Consider ' + "using the '-r' flag to install the packages listed in " + "requirements.txt" + ) + + return DistributionNotFound(f"No matching distribution found for {req}") + + def get_installation_error( + self, + e: "ResolutionImpossible[Requirement, Candidate]", + constraints: Dict[str, Constraint], + ) -> InstallationError: + assert e.causes, "Installation error reported with no cause" + + # If one of the things we can't solve is "we need Python X.Y", + # that is what we report. + requires_python_causes = [ + cause + for cause in e.causes + if isinstance(cause.requirement, RequiresPythonRequirement) + and not cause.requirement.is_satisfied_by(self._python_candidate) + ] + if requires_python_causes: + # The comprehension above makes sure all Requirement instances are + # RequiresPythonRequirement, so let's cast for convenience. + return self._report_requires_python_error( + cast("Sequence[ConflictCause]", requires_python_causes), + ) + + # Otherwise, we have a set of causes which can't all be satisfied + # at once. + + # The simplest case is when we have *one* cause that can't be + # satisfied. We just report that case. + if len(e.causes) == 1: + req, parent = e.causes[0] + if req.name not in constraints: + return self._report_single_requirement_conflict(req, parent) + + # OK, we now have a list of requirements that can't all be + # satisfied at once. + + # A couple of formatting helpers + def text_join(parts: List[str]) -> str: + if len(parts) == 1: + return parts[0] + + return ", ".join(parts[:-1]) + " and " + parts[-1] + + def describe_trigger(parent: Candidate) -> str: + ireq = parent.get_install_requirement() + if not ireq or not ireq.comes_from: + return f"{parent.name}=={parent.version}" + if isinstance(ireq.comes_from, InstallRequirement): + return str(ireq.comes_from.name) + return str(ireq.comes_from) + + triggers = set() + for req, parent in e.causes: + if parent is None: + # This is a root requirement, so we can report it directly + trigger = req.format_for_error() + else: + trigger = describe_trigger(parent) + triggers.add(trigger) + + if triggers: + info = text_join(sorted(triggers)) + else: + info = "the requested packages" + + msg = ( + f"Cannot install {info} because these package versions " + "have conflicting dependencies." + ) + logger.critical(msg) + msg = "\nThe conflict is caused by:" + + relevant_constraints = set() + for req, parent in e.causes: + if req.name in constraints: + relevant_constraints.add(req.name) + msg = msg + "\n " + if parent: + msg = msg + f"{parent.name} {parent.version} depends on " + else: + msg = msg + "The user requested " + msg = msg + req.format_for_error() + for key in relevant_constraints: + spec = constraints[key].specifier + msg += f"\n The user requested (constraint) {key}{spec}" + + msg = ( + msg + + "\n\n" + + "To fix this you could try to:\n" + + "1. loosen the range of package versions you've specified\n" + + "2. remove package versions to allow pip to attempt to solve " + + "the dependency conflict\n" + ) + + logger.info(msg) + + return DistributionNotFound( + "ResolutionImpossible: for help visit " + "https://pip.pypa.io/en/latest/topics/dependency-resolution/" + "#dealing-with-dependency-conflicts" + ) diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py new file mode 100644 index 00000000000..a1d57e0f4b2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py @@ -0,0 +1,174 @@ +"""Utilities to lazily create and visit candidates found. + +Creating and visiting a candidate is a *very* costly operation. It involves +fetching, extracting, potentially building modules from source, and verifying +distribution metadata. It is therefore crucial for performance to keep +everything here lazy all the way down, so we only touch candidates that we +absolutely need, and not "download the world" when we only need one version of +something. +""" + +import functools +import logging +from collections.abc import Sequence +from typing import TYPE_CHECKING, Any, Callable, Iterator, Optional, Set, Tuple + +from pip._vendor.packaging.version import _BaseVersion + +from pip._internal.exceptions import MetadataInvalid + +from .base import Candidate + +logger = logging.getLogger(__name__) + +IndexCandidateInfo = Tuple[_BaseVersion, Callable[[], Optional[Candidate]]] + +if TYPE_CHECKING: + SequenceCandidate = Sequence[Candidate] +else: + # For compatibility: Python before 3.9 does not support using [] on the + # Sequence class. + # + # >>> from collections.abc import Sequence + # >>> Sequence[str] + # Traceback (most recent call last): + # File "", line 1, in + # TypeError: 'ABCMeta' object is not subscriptable + # + # TODO: Remove this block after dropping Python 3.8 support. + SequenceCandidate = Sequence + + +def _iter_built(infos: Iterator[IndexCandidateInfo]) -> Iterator[Candidate]: + """Iterator for ``FoundCandidates``. + + This iterator is used when the package is not already installed. Candidates + from index come later in their normal ordering. + """ + versions_found: Set[_BaseVersion] = set() + for version, func in infos: + if version in versions_found: + continue + try: + candidate = func() + except MetadataInvalid as e: + logger.warning( + "Ignoring version %s of %s since it has invalid metadata:\n" + "%s\n" + "Please use pip<24.1 if you need to use this version.", + version, + e.ireq.name, + e, + ) + # Mark version as found to avoid trying other candidates with the same + # version, since they most likely have invalid metadata as well. + versions_found.add(version) + else: + if candidate is None: + continue + yield candidate + versions_found.add(version) + + +def _iter_built_with_prepended( + installed: Candidate, infos: Iterator[IndexCandidateInfo] +) -> Iterator[Candidate]: + """Iterator for ``FoundCandidates``. + + This iterator is used when the resolver prefers the already-installed + candidate and NOT to upgrade. The installed candidate is therefore + always yielded first, and candidates from index come later in their + normal ordering, except skipped when the version is already installed. + """ + yield installed + versions_found: Set[_BaseVersion] = {installed.version} + for version, func in infos: + if version in versions_found: + continue + candidate = func() + if candidate is None: + continue + yield candidate + versions_found.add(version) + + +def _iter_built_with_inserted( + installed: Candidate, infos: Iterator[IndexCandidateInfo] +) -> Iterator[Candidate]: + """Iterator for ``FoundCandidates``. + + This iterator is used when the resolver prefers to upgrade an + already-installed package. Candidates from index are returned in their + normal ordering, except replaced when the version is already installed. + + The implementation iterates through and yields other candidates, inserting + the installed candidate exactly once before we start yielding older or + equivalent candidates, or after all other candidates if they are all newer. + """ + versions_found: Set[_BaseVersion] = set() + for version, func in infos: + if version in versions_found: + continue + # If the installed candidate is better, yield it first. + if installed.version >= version: + yield installed + versions_found.add(installed.version) + candidate = func() + if candidate is None: + continue + yield candidate + versions_found.add(version) + + # If the installed candidate is older than all other candidates. + if installed.version not in versions_found: + yield installed + + +class FoundCandidates(SequenceCandidate): + """A lazy sequence to provide candidates to the resolver. + + The intended usage is to return this from `find_matches()` so the resolver + can iterate through the sequence multiple times, but only access the index + page when remote packages are actually needed. This improve performances + when suitable candidates are already installed on disk. + """ + + def __init__( + self, + get_infos: Callable[[], Iterator[IndexCandidateInfo]], + installed: Optional[Candidate], + prefers_installed: bool, + incompatible_ids: Set[int], + ): + self._get_infos = get_infos + self._installed = installed + self._prefers_installed = prefers_installed + self._incompatible_ids = incompatible_ids + + def __getitem__(self, index: Any) -> Any: + # Implemented to satisfy the ABC check. This is not needed by the + # resolver, and should not be used by the provider either (for + # performance reasons). + raise NotImplementedError("don't do this") + + def __iter__(self) -> Iterator[Candidate]: + infos = self._get_infos() + if not self._installed: + iterator = _iter_built(infos) + elif self._prefers_installed: + iterator = _iter_built_with_prepended(self._installed, infos) + else: + iterator = _iter_built_with_inserted(self._installed, infos) + return (c for c in iterator if id(c) not in self._incompatible_ids) + + def __len__(self) -> int: + # Implemented to satisfy the ABC check. This is not needed by the + # resolver, and should not be used by the provider either (for + # performance reasons). + raise NotImplementedError("don't do this") + + @functools.lru_cache(maxsize=1) + def __bool__(self) -> bool: + if self._prefers_installed and self._installed: + return True + return any(self) diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py new file mode 100644 index 00000000000..fb0dd85f112 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py @@ -0,0 +1,258 @@ +import collections +import math +from functools import lru_cache +from typing import ( + TYPE_CHECKING, + Dict, + Iterable, + Iterator, + Mapping, + Sequence, + TypeVar, + Union, +) + +from pip._vendor.resolvelib.providers import AbstractProvider + +from .base import Candidate, Constraint, Requirement +from .candidates import REQUIRES_PYTHON_IDENTIFIER +from .factory import Factory + +if TYPE_CHECKING: + from pip._vendor.resolvelib.providers import Preference + from pip._vendor.resolvelib.resolvers import RequirementInformation + + PreferenceInformation = RequirementInformation[Requirement, Candidate] + + _ProviderBase = AbstractProvider[Requirement, Candidate, str] +else: + _ProviderBase = AbstractProvider + +# Notes on the relationship between the provider, the factory, and the +# candidate and requirement classes. +# +# The provider is a direct implementation of the resolvelib class. Its role +# is to deliver the API that resolvelib expects. +# +# Rather than work with completely abstract "requirement" and "candidate" +# concepts as resolvelib does, pip has concrete classes implementing these two +# ideas. The API of Requirement and Candidate objects are defined in the base +# classes, but essentially map fairly directly to the equivalent provider +# methods. In particular, `find_matches` and `is_satisfied_by` are +# requirement methods, and `get_dependencies` is a candidate method. +# +# The factory is the interface to pip's internal mechanisms. It is stateless, +# and is created by the resolver and held as a property of the provider. It is +# responsible for creating Requirement and Candidate objects, and provides +# services to those objects (access to pip's finder and preparer). + + +D = TypeVar("D") +V = TypeVar("V") + + +def _get_with_identifier( + mapping: Mapping[str, V], + identifier: str, + default: D, +) -> Union[D, V]: + """Get item from a package name lookup mapping with a resolver identifier. + + This extra logic is needed when the target mapping is keyed by package + name, which cannot be directly looked up with an identifier (which may + contain requested extras). Additional logic is added to also look up a value + by "cleaning up" the extras from the identifier. + """ + if identifier in mapping: + return mapping[identifier] + # HACK: Theoretically we should check whether this identifier is a valid + # "NAME[EXTRAS]" format, and parse out the name part with packaging or + # some regular expression. But since pip's resolver only spits out three + # kinds of identifiers: normalized PEP 503 names, normalized names plus + # extras, and Requires-Python, we can cheat a bit here. + name, open_bracket, _ = identifier.partition("[") + if open_bracket and name in mapping: + return mapping[name] + return default + + +class PipProvider(_ProviderBase): + """Pip's provider implementation for resolvelib. + + :params constraints: A mapping of constraints specified by the user. Keys + are canonicalized project names. + :params ignore_dependencies: Whether the user specified ``--no-deps``. + :params upgrade_strategy: The user-specified upgrade strategy. + :params user_requested: A set of canonicalized package names that the user + supplied for pip to install/upgrade. + """ + + def __init__( + self, + factory: Factory, + constraints: Dict[str, Constraint], + ignore_dependencies: bool, + upgrade_strategy: str, + user_requested: Dict[str, int], + ) -> None: + self._factory = factory + self._constraints = constraints + self._ignore_dependencies = ignore_dependencies + self._upgrade_strategy = upgrade_strategy + self._user_requested = user_requested + self._known_depths: Dict[str, float] = collections.defaultdict(lambda: math.inf) + + def identify(self, requirement_or_candidate: Union[Requirement, Candidate]) -> str: + return requirement_or_candidate.name + + def get_preference( + self, + identifier: str, + resolutions: Mapping[str, Candidate], + candidates: Mapping[str, Iterator[Candidate]], + information: Mapping[str, Iterable["PreferenceInformation"]], + backtrack_causes: Sequence["PreferenceInformation"], + ) -> "Preference": + """Produce a sort key for given requirement based on preference. + + The lower the return value is, the more preferred this group of + arguments is. + + Currently pip considers the following in order: + + * Prefer if any of the known requirements is "direct", e.g. points to an + explicit URL. + * If equal, prefer if any requirement is "pinned", i.e. contains + operator ``===`` or ``==``. + * If equal, calculate an approximate "depth" and resolve requirements + closer to the user-specified requirements first. If the depth cannot + by determined (eg: due to no matching parents), it is considered + infinite. + * Order user-specified requirements by the order they are specified. + * If equal, prefers "non-free" requirements, i.e. contains at least one + operator, such as ``>=`` or ``<``. + * If equal, order alphabetically for consistency (helps debuggability). + """ + try: + next(iter(information[identifier])) + except StopIteration: + # There is no information for this identifier, so there's no known + # candidates. + has_information = False + else: + has_information = True + + if has_information: + lookups = (r.get_candidate_lookup() for r, _ in information[identifier]) + candidate, ireqs = zip(*lookups) + else: + candidate, ireqs = None, () + + operators = [ + specifier.operator + for specifier_set in (ireq.specifier for ireq in ireqs if ireq) + for specifier in specifier_set + ] + + direct = candidate is not None + pinned = any(op[:2] == "==" for op in operators) + unfree = bool(operators) + + try: + requested_order: Union[int, float] = self._user_requested[identifier] + except KeyError: + requested_order = math.inf + if has_information: + parent_depths = ( + self._known_depths[parent.name] if parent is not None else 0.0 + for _, parent in information[identifier] + ) + inferred_depth = min(d for d in parent_depths) + 1.0 + else: + inferred_depth = math.inf + else: + inferred_depth = 1.0 + self._known_depths[identifier] = inferred_depth + + requested_order = self._user_requested.get(identifier, math.inf) + + # Requires-Python has only one candidate and the check is basically + # free, so we always do it first to avoid needless work if it fails. + requires_python = identifier == REQUIRES_PYTHON_IDENTIFIER + + # Prefer the causes of backtracking on the assumption that the problem + # resolving the dependency tree is related to the failures that caused + # the backtracking + backtrack_cause = self.is_backtrack_cause(identifier, backtrack_causes) + + return ( + not requires_python, + not direct, + not pinned, + not backtrack_cause, + inferred_depth, + requested_order, + not unfree, + identifier, + ) + + def find_matches( + self, + identifier: str, + requirements: Mapping[str, Iterator[Requirement]], + incompatibilities: Mapping[str, Iterator[Candidate]], + ) -> Iterable[Candidate]: + def _eligible_for_upgrade(identifier: str) -> bool: + """Are upgrades allowed for this project? + + This checks the upgrade strategy, and whether the project was one + that the user specified in the command line, in order to decide + whether we should upgrade if there's a newer version available. + + (Note that we don't need access to the `--upgrade` flag, because + an upgrade strategy of "to-satisfy-only" means that `--upgrade` + was not specified). + """ + if self._upgrade_strategy == "eager": + return True + elif self._upgrade_strategy == "only-if-needed": + user_order = _get_with_identifier( + self._user_requested, + identifier, + default=None, + ) + return user_order is not None + return False + + constraint = _get_with_identifier( + self._constraints, + identifier, + default=Constraint.empty(), + ) + return self._factory.find_candidates( + identifier=identifier, + requirements=requirements, + constraint=constraint, + prefers_installed=(not _eligible_for_upgrade(identifier)), + incompatibilities=incompatibilities, + is_satisfied_by=self.is_satisfied_by, + ) + + @lru_cache(maxsize=None) + def is_satisfied_by(self, requirement: Requirement, candidate: Candidate) -> bool: + return requirement.is_satisfied_by(candidate) + + def get_dependencies(self, candidate: Candidate) -> Sequence[Requirement]: + with_requires = not self._ignore_dependencies + return [r for r in candidate.iter_dependencies(with_requires) if r is not None] + + @staticmethod + def is_backtrack_cause( + identifier: str, backtrack_causes: Sequence["PreferenceInformation"] + ) -> bool: + for backtrack_cause in backtrack_causes: + if identifier == backtrack_cause.requirement.name: + return True + if backtrack_cause.parent and identifier == backtrack_cause.parent.name: + return True + return False diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py new file mode 100644 index 00000000000..0594569d850 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py @@ -0,0 +1,81 @@ +from collections import defaultdict +from logging import getLogger +from typing import Any, DefaultDict + +from pip._vendor.resolvelib.reporters import BaseReporter + +from .base import Candidate, Requirement + +logger = getLogger(__name__) + + +class PipReporter(BaseReporter): + def __init__(self) -> None: + self.reject_count_by_package: DefaultDict[str, int] = defaultdict(int) + + self._messages_at_reject_count = { + 1: ( + "pip is looking at multiple versions of {package_name} to " + "determine which version is compatible with other " + "requirements. This could take a while." + ), + 8: ( + "pip is still looking at multiple versions of {package_name} to " + "determine which version is compatible with other " + "requirements. This could take a while." + ), + 13: ( + "This is taking longer than usual. You might need to provide " + "the dependency resolver with stricter constraints to reduce " + "runtime. See https://pip.pypa.io/warnings/backtracking for " + "guidance. If you want to abort this run, press Ctrl + C." + ), + } + + def rejecting_candidate(self, criterion: Any, candidate: Candidate) -> None: + self.reject_count_by_package[candidate.name] += 1 + + count = self.reject_count_by_package[candidate.name] + if count not in self._messages_at_reject_count: + return + + message = self._messages_at_reject_count[count] + logger.info("INFO: %s", message.format(package_name=candidate.name)) + + msg = "Will try a different candidate, due to conflict:" + for req_info in criterion.information: + req, parent = req_info.requirement, req_info.parent + # Inspired by Factory.get_installation_error + msg += "\n " + if parent: + msg += f"{parent.name} {parent.version} depends on " + else: + msg += "The user requested " + msg += req.format_for_error() + logger.debug(msg) + + +class PipDebuggingReporter(BaseReporter): + """A reporter that does an info log for every event it sees.""" + + def starting(self) -> None: + logger.info("Reporter.starting()") + + def starting_round(self, index: int) -> None: + logger.info("Reporter.starting_round(%r)", index) + + def ending_round(self, index: int, state: Any) -> None: + logger.info("Reporter.ending_round(%r, state)", index) + logger.debug("Reporter.ending_round(%r, %r)", index, state) + + def ending(self, state: Any) -> None: + logger.info("Reporter.ending(%r)", state) + + def adding_requirement(self, requirement: Requirement, parent: Candidate) -> None: + logger.info("Reporter.adding_requirement(%r, %r)", requirement, parent) + + def rejecting_candidate(self, criterion: Any, candidate: Candidate) -> None: + logger.info("Reporter.rejecting_candidate(%r, %r)", criterion, candidate) + + def pinning(self, candidate: Candidate) -> None: + logger.info("Reporter.pinning(%r)", candidate) diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py new file mode 100644 index 00000000000..b04f41b2191 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py @@ -0,0 +1,245 @@ +from typing import Any, Optional + +from pip._vendor.packaging.specifiers import SpecifierSet +from pip._vendor.packaging.utils import NormalizedName, canonicalize_name + +from pip._internal.req.constructors import install_req_drop_extras +from pip._internal.req.req_install import InstallRequirement + +from .base import Candidate, CandidateLookup, Requirement, format_name + + +class ExplicitRequirement(Requirement): + def __init__(self, candidate: Candidate) -> None: + self.candidate = candidate + + def __str__(self) -> str: + return str(self.candidate) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self.candidate!r})" + + def __hash__(self) -> int: + return hash(self.candidate) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, ExplicitRequirement): + return False + return self.candidate == other.candidate + + @property + def project_name(self) -> NormalizedName: + # No need to canonicalize - the candidate did this + return self.candidate.project_name + + @property + def name(self) -> str: + # No need to canonicalize - the candidate did this + return self.candidate.name + + def format_for_error(self) -> str: + return self.candidate.format_for_error() + + def get_candidate_lookup(self) -> CandidateLookup: + return self.candidate, None + + def is_satisfied_by(self, candidate: Candidate) -> bool: + return candidate == self.candidate + + +class SpecifierRequirement(Requirement): + def __init__(self, ireq: InstallRequirement) -> None: + assert ireq.link is None, "This is a link, not a specifier" + self._ireq = ireq + self._equal_cache: Optional[str] = None + self._hash: Optional[int] = None + self._extras = frozenset(canonicalize_name(e) for e in self._ireq.extras) + + @property + def _equal(self) -> str: + if self._equal_cache is not None: + return self._equal_cache + + self._equal_cache = str(self._ireq) + return self._equal_cache + + def __str__(self) -> str: + return str(self._ireq.req) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({str(self._ireq.req)!r})" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SpecifierRequirement): + return NotImplemented + return self._equal == other._equal + + def __hash__(self) -> int: + if self._hash is not None: + return self._hash + + self._hash = hash(self._equal) + return self._hash + + @property + def project_name(self) -> NormalizedName: + assert self._ireq.req, "Specifier-backed ireq is always PEP 508" + return canonicalize_name(self._ireq.req.name) + + @property + def name(self) -> str: + return format_name(self.project_name, self._extras) + + def format_for_error(self) -> str: + # Convert comma-separated specifiers into "A, B, ..., F and G" + # This makes the specifier a bit more "human readable", without + # risking a change in meaning. (Hopefully! Not all edge cases have + # been checked) + parts = [s.strip() for s in str(self).split(",")] + if len(parts) == 0: + return "" + elif len(parts) == 1: + return parts[0] + + return ", ".join(parts[:-1]) + " and " + parts[-1] + + def get_candidate_lookup(self) -> CandidateLookup: + return None, self._ireq + + def is_satisfied_by(self, candidate: Candidate) -> bool: + assert candidate.name == self.name, ( + f"Internal issue: Candidate is not for this requirement " + f"{candidate.name} vs {self.name}" + ) + # We can safely always allow prereleases here since PackageFinder + # already implements the prerelease logic, and would have filtered out + # prerelease candidates if the user does not expect them. + assert self._ireq.req, "Specifier-backed ireq is always PEP 508" + spec = self._ireq.req.specifier + return spec.contains(candidate.version, prereleases=True) + + +class SpecifierWithoutExtrasRequirement(SpecifierRequirement): + """ + Requirement backed by an install requirement on a base package. + Trims extras from its install requirement if there are any. + """ + + def __init__(self, ireq: InstallRequirement) -> None: + assert ireq.link is None, "This is a link, not a specifier" + self._ireq = install_req_drop_extras(ireq) + self._equal_cache: Optional[str] = None + self._hash: Optional[int] = None + self._extras = frozenset(canonicalize_name(e) for e in self._ireq.extras) + + @property + def _equal(self) -> str: + if self._equal_cache is not None: + return self._equal_cache + + self._equal_cache = str(self._ireq) + return self._equal_cache + + def __eq__(self, other: object) -> bool: + if not isinstance(other, SpecifierWithoutExtrasRequirement): + return NotImplemented + return self._equal == other._equal + + def __hash__(self) -> int: + if self._hash is not None: + return self._hash + + self._hash = hash(self._equal) + return self._hash + + +class RequiresPythonRequirement(Requirement): + """A requirement representing Requires-Python metadata.""" + + def __init__(self, specifier: SpecifierSet, match: Candidate) -> None: + self.specifier = specifier + self._specifier_string = str(specifier) # for faster __eq__ + self._hash: Optional[int] = None + self._candidate = match + + def __str__(self) -> str: + return f"Python {self.specifier}" + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({str(self.specifier)!r})" + + def __hash__(self) -> int: + if self._hash is not None: + return self._hash + + self._hash = hash((self._specifier_string, self._candidate)) + return self._hash + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, RequiresPythonRequirement): + return False + return ( + self._specifier_string == other._specifier_string + and self._candidate == other._candidate + ) + + @property + def project_name(self) -> NormalizedName: + return self._candidate.project_name + + @property + def name(self) -> str: + return self._candidate.name + + def format_for_error(self) -> str: + return str(self) + + def get_candidate_lookup(self) -> CandidateLookup: + if self.specifier.contains(self._candidate.version, prereleases=True): + return self._candidate, None + return None, None + + def is_satisfied_by(self, candidate: Candidate) -> bool: + assert candidate.name == self._candidate.name, "Not Python candidate" + # We can safely always allow prereleases here since PackageFinder + # already implements the prerelease logic, and would have filtered out + # prerelease candidates if the user does not expect them. + return self.specifier.contains(candidate.version, prereleases=True) + + +class UnsatisfiableRequirement(Requirement): + """A requirement that cannot be satisfied.""" + + def __init__(self, name: NormalizedName) -> None: + self._name = name + + def __str__(self) -> str: + return f"{self._name} (unavailable)" + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({str(self._name)!r})" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, UnsatisfiableRequirement): + return NotImplemented + return self._name == other._name + + def __hash__(self) -> int: + return hash(self._name) + + @property + def project_name(self) -> NormalizedName: + return self._name + + @property + def name(self) -> str: + return self._name + + def format_for_error(self) -> str: + return str(self) + + def get_candidate_lookup(self) -> CandidateLookup: + return None, None + + def is_satisfied_by(self, candidate: Candidate) -> bool: + return False diff --git a/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py new file mode 100644 index 00000000000..c12beef0b2a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py @@ -0,0 +1,317 @@ +import contextlib +import functools +import logging +import os +from typing import TYPE_CHECKING, Dict, List, Optional, Set, Tuple, cast + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.resolvelib import BaseReporter, ResolutionImpossible +from pip._vendor.resolvelib import Resolver as RLResolver +from pip._vendor.resolvelib.structs import DirectedGraph + +from pip._internal.cache import WheelCache +from pip._internal.index.package_finder import PackageFinder +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.constructors import install_req_extend_extras +from pip._internal.req.req_install import InstallRequirement +from pip._internal.req.req_set import RequirementSet +from pip._internal.resolution.base import BaseResolver, InstallRequirementProvider +from pip._internal.resolution.resolvelib.provider import PipProvider +from pip._internal.resolution.resolvelib.reporter import ( + PipDebuggingReporter, + PipReporter, +) +from pip._internal.utils.packaging import get_requirement + +from .base import Candidate, Requirement +from .factory import Factory + +if TYPE_CHECKING: + from pip._vendor.resolvelib.resolvers import Result as RLResult + + Result = RLResult[Requirement, Candidate, str] + + +logger = logging.getLogger(__name__) + + +class Resolver(BaseResolver): + _allowed_strategies = {"eager", "only-if-needed", "to-satisfy-only"} + + def __init__( + self, + preparer: RequirementPreparer, + finder: PackageFinder, + wheel_cache: Optional[WheelCache], + make_install_req: InstallRequirementProvider, + use_user_site: bool, + ignore_dependencies: bool, + ignore_installed: bool, + ignore_requires_python: bool, + force_reinstall: bool, + upgrade_strategy: str, + py_version_info: Optional[Tuple[int, ...]] = None, + ): + super().__init__() + assert upgrade_strategy in self._allowed_strategies + + self.factory = Factory( + finder=finder, + preparer=preparer, + make_install_req=make_install_req, + wheel_cache=wheel_cache, + use_user_site=use_user_site, + force_reinstall=force_reinstall, + ignore_installed=ignore_installed, + ignore_requires_python=ignore_requires_python, + py_version_info=py_version_info, + ) + self.ignore_dependencies = ignore_dependencies + self.upgrade_strategy = upgrade_strategy + self._result: Optional[Result] = None + + def resolve( + self, root_reqs: List[InstallRequirement], check_supported_wheels: bool + ) -> RequirementSet: + collected = self.factory.collect_root_requirements(root_reqs) + provider = PipProvider( + factory=self.factory, + constraints=collected.constraints, + ignore_dependencies=self.ignore_dependencies, + upgrade_strategy=self.upgrade_strategy, + user_requested=collected.user_requested, + ) + if "PIP_RESOLVER_DEBUG" in os.environ: + reporter: BaseReporter = PipDebuggingReporter() + else: + reporter = PipReporter() + resolver: RLResolver[Requirement, Candidate, str] = RLResolver( + provider, + reporter, + ) + + try: + limit_how_complex_resolution_can_be = 200000 + result = self._result = resolver.resolve( + collected.requirements, max_rounds=limit_how_complex_resolution_can_be + ) + + except ResolutionImpossible as e: + error = self.factory.get_installation_error( + cast("ResolutionImpossible[Requirement, Candidate]", e), + collected.constraints, + ) + raise error from e + + req_set = RequirementSet(check_supported_wheels=check_supported_wheels) + # process candidates with extras last to ensure their base equivalent is + # already in the req_set if appropriate. + # Python's sort is stable so using a binary key function keeps relative order + # within both subsets. + for candidate in sorted( + result.mapping.values(), key=lambda c: c.name != c.project_name + ): + ireq = candidate.get_install_requirement() + if ireq is None: + if candidate.name != candidate.project_name: + # extend existing req's extras + with contextlib.suppress(KeyError): + req = req_set.get_requirement(candidate.project_name) + req_set.add_named_requirement( + install_req_extend_extras( + req, get_requirement(candidate.name).extras + ) + ) + continue + + # Check if there is already an installation under the same name, + # and set a flag for later stages to uninstall it, if needed. + installed_dist = self.factory.get_dist_to_uninstall(candidate) + if installed_dist is None: + # There is no existing installation -- nothing to uninstall. + ireq.should_reinstall = False + elif self.factory.force_reinstall: + # The --force-reinstall flag is set -- reinstall. + ireq.should_reinstall = True + elif installed_dist.version != candidate.version: + # The installation is different in version -- reinstall. + ireq.should_reinstall = True + elif candidate.is_editable or installed_dist.editable: + # The incoming distribution is editable, or different in + # editable-ness to installation -- reinstall. + ireq.should_reinstall = True + elif candidate.source_link and candidate.source_link.is_file: + # The incoming distribution is under file:// + if candidate.source_link.is_wheel: + # is a local wheel -- do nothing. + logger.info( + "%s is already installed with the same version as the " + "provided wheel. Use --force-reinstall to force an " + "installation of the wheel.", + ireq.name, + ) + continue + + # is a local sdist or path -- reinstall + ireq.should_reinstall = True + else: + continue + + link = candidate.source_link + if link and link.is_yanked: + # The reason can contain non-ASCII characters, Unicode + # is required for Python 2. + msg = ( + "The candidate selected for download or install is a " + "yanked version: {name!r} candidate (version {version} " + "at {link})\nReason for being yanked: {reason}" + ).format( + name=candidate.name, + version=candidate.version, + link=link, + reason=link.yanked_reason or "", + ) + logger.warning(msg) + + req_set.add_named_requirement(ireq) + + reqs = req_set.all_requirements + self.factory.preparer.prepare_linked_requirements_more(reqs) + for req in reqs: + req.prepared = True + req.needs_more_preparation = False + return req_set + + def get_installation_order( + self, req_set: RequirementSet + ) -> List[InstallRequirement]: + """Get order for installation of requirements in RequirementSet. + + The returned list contains a requirement before another that depends on + it. This helps ensure that the environment is kept consistent as they + get installed one-by-one. + + The current implementation creates a topological ordering of the + dependency graph, giving more weight to packages with less + or no dependencies, while breaking any cycles in the graph at + arbitrary points. We make no guarantees about where the cycle + would be broken, other than it *would* be broken. + """ + assert self._result is not None, "must call resolve() first" + + if not req_set.requirements: + # Nothing is left to install, so we do not need an order. + return [] + + graph = self._result.graph + weights = get_topological_weights(graph, set(req_set.requirements.keys())) + + sorted_items = sorted( + req_set.requirements.items(), + key=functools.partial(_req_set_item_sorter, weights=weights), + reverse=True, + ) + return [ireq for _, ireq in sorted_items] + + +def get_topological_weights( + graph: "DirectedGraph[Optional[str]]", requirement_keys: Set[str] +) -> Dict[Optional[str], int]: + """Assign weights to each node based on how "deep" they are. + + This implementation may change at any point in the future without prior + notice. + + We first simplify the dependency graph by pruning any leaves and giving them + the highest weight: a package without any dependencies should be installed + first. This is done again and again in the same way, giving ever less weight + to the newly found leaves. The loop stops when no leaves are left: all + remaining packages have at least one dependency left in the graph. + + Then we continue with the remaining graph, by taking the length for the + longest path to any node from root, ignoring any paths that contain a single + node twice (i.e. cycles). This is done through a depth-first search through + the graph, while keeping track of the path to the node. + + Cycles in the graph result would result in node being revisited while also + being on its own path. In this case, take no action. This helps ensure we + don't get stuck in a cycle. + + When assigning weight, the longer path (i.e. larger length) is preferred. + + We are only interested in the weights of packages that are in the + requirement_keys. + """ + path: Set[Optional[str]] = set() + weights: Dict[Optional[str], int] = {} + + def visit(node: Optional[str]) -> None: + if node in path: + # We hit a cycle, so we'll break it here. + return + + # Time to visit the children! + path.add(node) + for child in graph.iter_children(node): + visit(child) + path.remove(node) + + if node not in requirement_keys: + return + + last_known_parent_count = weights.get(node, 0) + weights[node] = max(last_known_parent_count, len(path)) + + # Simplify the graph, pruning leaves that have no dependencies. + # This is needed for large graphs (say over 200 packages) because the + # `visit` function is exponentially slower then, taking minutes. + # See https://github.com/pypa/pip/issues/10557 + # We will loop until we explicitly break the loop. + while True: + leaves = set() + for key in graph: + if key is None: + continue + for _child in graph.iter_children(key): + # This means we have at least one child + break + else: + # No child. + leaves.add(key) + if not leaves: + # We are done simplifying. + break + # Calculate the weight for the leaves. + weight = len(graph) - 1 + for leaf in leaves: + if leaf not in requirement_keys: + continue + weights[leaf] = weight + # Remove the leaves from the graph, making it simpler. + for leaf in leaves: + graph.remove(leaf) + + # Visit the remaining graph. + # `None` is guaranteed to be the root node by resolvelib. + visit(None) + + # Sanity check: all requirement keys should be in the weights, + # and no other keys should be in the weights. + difference = set(weights.keys()).difference(requirement_keys) + assert not difference, difference + + return weights + + +def _req_set_item_sorter( + item: Tuple[str, InstallRequirement], + weights: Dict[Optional[str], int], +) -> Tuple[int, str]: + """Key function used to sort install requirements for installation. + + Based on the "weight" mapping calculated in ``get_installation_order()``. + The canonical package name is returned as the second member as a tie- + breaker to ensure the result is predictable, which is useful in tests. + """ + name = canonicalize_name(item[0]) + return weights[name], name diff --git a/venv/Lib/site-packages/pip/_internal/self_outdated_check.py b/venv/Lib/site-packages/pip/_internal/self_outdated_check.py new file mode 100644 index 00000000000..f9a91af9d84 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/self_outdated_check.py @@ -0,0 +1,244 @@ +import datetime +import functools +import hashlib +import json +import logging +import optparse +import os.path +import sys +from dataclasses import dataclass +from typing import Any, Callable, Dict, Optional + +from pip._vendor.packaging.version import Version +from pip._vendor.packaging.version import parse as parse_version +from pip._vendor.rich.console import Group +from pip._vendor.rich.markup import escape +from pip._vendor.rich.text import Text + +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.metadata import get_default_environment +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.network.session import PipSession +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.entrypoints import ( + get_best_invocation_for_this_pip, + get_best_invocation_for_this_python, +) +from pip._internal.utils.filesystem import adjacent_tmp_file, check_path_owner, replace +from pip._internal.utils.misc import ensure_dir + +_WEEK = datetime.timedelta(days=7) + +logger = logging.getLogger(__name__) + + +def _get_statefile_name(key: str) -> str: + key_bytes = key.encode() + name = hashlib.sha224(key_bytes).hexdigest() + return name + + +def _convert_date(isodate: str) -> datetime.datetime: + """Convert an ISO format string to a date. + + Handles the format 2020-01-22T14:24:01Z (trailing Z) + which is not supported by older versions of fromisoformat. + """ + return datetime.datetime.fromisoformat(isodate.replace("Z", "+00:00")) + + +class SelfCheckState: + def __init__(self, cache_dir: str) -> None: + self._state: Dict[str, Any] = {} + self._statefile_path = None + + # Try to load the existing state + if cache_dir: + self._statefile_path = os.path.join( + cache_dir, "selfcheck", _get_statefile_name(self.key) + ) + try: + with open(self._statefile_path, encoding="utf-8") as statefile: + self._state = json.load(statefile) + except (OSError, ValueError, KeyError): + # Explicitly suppressing exceptions, since we don't want to + # error out if the cache file is invalid. + pass + + @property + def key(self) -> str: + return sys.prefix + + def get(self, current_time: datetime.datetime) -> Optional[str]: + """Check if we have a not-outdated version loaded already.""" + if not self._state: + return None + + if "last_check" not in self._state: + return None + + if "pypi_version" not in self._state: + return None + + # Determine if we need to refresh the state + last_check = _convert_date(self._state["last_check"]) + time_since_last_check = current_time - last_check + if time_since_last_check > _WEEK: + return None + + return self._state["pypi_version"] + + def set(self, pypi_version: str, current_time: datetime.datetime) -> None: + # If we do not have a path to cache in, don't bother saving. + if not self._statefile_path: + return + + # Check to make sure that we own the directory + if not check_path_owner(os.path.dirname(self._statefile_path)): + return + + # Now that we've ensured the directory is owned by this user, we'll go + # ahead and make sure that all our directories are created. + ensure_dir(os.path.dirname(self._statefile_path)) + + state = { + # Include the key so it's easy to tell which pip wrote the + # file. + "key": self.key, + "last_check": current_time.isoformat(), + "pypi_version": pypi_version, + } + + text = json.dumps(state, sort_keys=True, separators=(",", ":")) + + with adjacent_tmp_file(self._statefile_path) as f: + f.write(text.encode()) + + try: + # Since we have a prefix-specific state file, we can just + # overwrite whatever is there, no need to check. + replace(f.name, self._statefile_path) + except OSError: + # Best effort. + pass + + +@dataclass +class UpgradePrompt: + old: str + new: str + + def __rich__(self) -> Group: + if WINDOWS: + pip_cmd = f"{get_best_invocation_for_this_python()} -m pip" + else: + pip_cmd = get_best_invocation_for_this_pip() + + notice = "[bold][[reset][blue]notice[reset][bold]][reset]" + return Group( + Text(), + Text.from_markup( + f"{notice} A new release of pip is available: " + f"[red]{self.old}[reset] -> [green]{self.new}[reset]" + ), + Text.from_markup( + f"{notice} To update, run: " + f"[green]{escape(pip_cmd)} install --upgrade pip" + ), + ) + + +def was_installed_by_pip(pkg: str) -> bool: + """Checks whether pkg was installed by pip + + This is used not to display the upgrade message when pip is in fact + installed by system package manager, such as dnf on Fedora. + """ + dist = get_default_environment().get_distribution(pkg) + return dist is not None and "pip" == dist.installer + + +def _get_current_remote_pip_version( + session: PipSession, options: optparse.Values +) -> Optional[str]: + # Lets use PackageFinder to see what the latest pip version is + link_collector = LinkCollector.create( + session, + options=options, + suppress_no_index=True, + ) + + # Pass allow_yanked=False so we don't suggest upgrading to a + # yanked version. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=False, # Explicitly set to False + ) + + finder = PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + ) + best_candidate = finder.find_best_candidate("pip").best_candidate + if best_candidate is None: + return None + + return str(best_candidate.version) + + +def _self_version_check_logic( + *, + state: SelfCheckState, + current_time: datetime.datetime, + local_version: Version, + get_remote_version: Callable[[], Optional[str]], +) -> Optional[UpgradePrompt]: + remote_version_str = state.get(current_time) + if remote_version_str is None: + remote_version_str = get_remote_version() + if remote_version_str is None: + logger.debug("No remote pip version found") + return None + state.set(remote_version_str, current_time) + + remote_version = parse_version(remote_version_str) + logger.debug("Remote version of pip: %s", remote_version) + logger.debug("Local version of pip: %s", local_version) + + pip_installed_by_pip = was_installed_by_pip("pip") + logger.debug("Was pip installed by pip? %s", pip_installed_by_pip) + if not pip_installed_by_pip: + return None # Only suggest upgrade if pip is installed by pip. + + local_version_is_older = ( + local_version < remote_version + and local_version.base_version != remote_version.base_version + ) + if local_version_is_older: + return UpgradePrompt(old=str(local_version), new=remote_version_str) + + return None + + +def pip_self_version_check(session: PipSession, options: optparse.Values) -> None: + """Check for an update for pip. + + Limit the frequency of checks to once per week. State is stored either in + the active virtualenv or in the user's USER_CACHE_DIR keyed off the prefix + of the pip script path. + """ + installed_dist = get_default_environment().get_distribution("pip") + if not installed_dist: + return + + upgrade_prompt = _self_version_check_logic( + state=SelfCheckState(cache_dir=options.cache_dir), + current_time=datetime.datetime.now(datetime.timezone.utc), + local_version=installed_dist.version, + get_remote_version=functools.partial( + _get_current_remote_pip_version, session, options + ), + ) + if upgrade_prompt is not None: + logger.warning("%s", upgrade_prompt, extra={"rich": True}) diff --git a/venv/Lib/site-packages/pip/_internal/utils/__init__.py b/venv/Lib/site-packages/pip/_internal/utils/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_internal/utils/_jaraco_text.py b/venv/Lib/site-packages/pip/_internal/utils/_jaraco_text.py new file mode 100644 index 00000000000..6ccf53b7ac5 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/_jaraco_text.py @@ -0,0 +1,109 @@ +"""Functions brought over from jaraco.text. + +These functions are not supposed to be used within `pip._internal`. These are +helper functions brought over from `jaraco.text` to enable vendoring newer +copies of `pkg_resources` without having to vendor `jaraco.text` and its entire +dependency cone; something that our vendoring setup is not currently capable of +handling. + +License reproduced from original source below: + +Copyright Jason R. Coombs + +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 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. +""" + +import functools +import itertools + + +def _nonblank(str): + return str and not str.startswith("#") + + +@functools.singledispatch +def yield_lines(iterable): + r""" + Yield valid lines of a string or iterable. + + >>> list(yield_lines('')) + [] + >>> list(yield_lines(['foo', 'bar'])) + ['foo', 'bar'] + >>> list(yield_lines('foo\nbar')) + ['foo', 'bar'] + >>> list(yield_lines('\nfoo\n#bar\nbaz #comment')) + ['foo', 'baz #comment'] + >>> list(yield_lines(['foo\nbar', 'baz', 'bing\n\n\n'])) + ['foo', 'bar', 'baz', 'bing'] + """ + return itertools.chain.from_iterable(map(yield_lines, iterable)) + + +@yield_lines.register(str) +def _(text): + return filter(_nonblank, map(str.strip, text.splitlines())) + + +def drop_comment(line): + """ + Drop comments. + + >>> drop_comment('foo # bar') + 'foo' + + A hash without a space may be in a URL. + + >>> drop_comment('http://example.com/foo#bar') + 'http://example.com/foo#bar' + """ + return line.partition(" #")[0] + + +def join_continuation(lines): + r""" + Join lines continued by a trailing backslash. + + >>> list(join_continuation(['foo \\', 'bar', 'baz'])) + ['foobar', 'baz'] + >>> list(join_continuation(['foo \\', 'bar', 'baz'])) + ['foobar', 'baz'] + >>> list(join_continuation(['foo \\', 'bar \\', 'baz'])) + ['foobarbaz'] + + Not sure why, but... + The character preceding the backslash is also elided. + + >>> list(join_continuation(['goo\\', 'dly'])) + ['godly'] + + A terrible idea, but... + If no line is available to continue, suppress the lines. + + >>> list(join_continuation(['foo', 'bar\\', 'baz\\'])) + ['foo'] + """ + lines = iter(lines) + for item in lines: + while item.endswith("\\"): + try: + item = item[:-2].strip() + next(lines) + except StopIteration: + return + yield item diff --git a/venv/Lib/site-packages/pip/_internal/utils/_log.py b/venv/Lib/site-packages/pip/_internal/utils/_log.py new file mode 100644 index 00000000000..92c4c6a1938 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/_log.py @@ -0,0 +1,38 @@ +"""Customize logging + +Defines custom logger class for the `logger.verbose(...)` method. + +init_logging() must be called before any other modules that call logging.getLogger. +""" + +import logging +from typing import Any, cast + +# custom log level for `--verbose` output +# between DEBUG and INFO +VERBOSE = 15 + + +class VerboseLogger(logging.Logger): + """Custom Logger, defining a verbose log-level + + VERBOSE is between INFO and DEBUG. + """ + + def verbose(self, msg: str, *args: Any, **kwargs: Any) -> None: + return self.log(VERBOSE, msg, *args, **kwargs) + + +def getLogger(name: str) -> VerboseLogger: + """logging.getLogger, but ensures our VerboseLogger class is returned""" + return cast(VerboseLogger, logging.getLogger(name)) + + +def init_logging() -> None: + """Register our VerboseLogger and VERBOSE log level. + + Should be called before any calls to getLogger(), + i.e. in pip._internal.__init__ + """ + logging.setLoggerClass(VerboseLogger) + logging.addLevelName(VERBOSE, "VERBOSE") diff --git a/venv/Lib/site-packages/pip/_internal/utils/appdirs.py b/venv/Lib/site-packages/pip/_internal/utils/appdirs.py new file mode 100644 index 00000000000..16933bf8afe --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/appdirs.py @@ -0,0 +1,52 @@ +""" +This code wraps the vendored appdirs module to so the return values are +compatible for the current pip code base. + +The intention is to rewrite current usages gradually, keeping the tests pass, +and eventually drop this after all usages are changed. +""" + +import os +import sys +from typing import List + +from pip._vendor import platformdirs as _appdirs + + +def user_cache_dir(appname: str) -> str: + return _appdirs.user_cache_dir(appname, appauthor=False) + + +def _macos_user_config_dir(appname: str, roaming: bool = True) -> str: + # Use ~/Application Support/pip, if the directory exists. + path = _appdirs.user_data_dir(appname, appauthor=False, roaming=roaming) + if os.path.isdir(path): + return path + + # Use a Linux-like ~/.config/pip, by default. + linux_like_path = "~/.config/" + if appname: + linux_like_path = os.path.join(linux_like_path, appname) + + return os.path.expanduser(linux_like_path) + + +def user_config_dir(appname: str, roaming: bool = True) -> str: + if sys.platform == "darwin": + return _macos_user_config_dir(appname, roaming) + + return _appdirs.user_config_dir(appname, appauthor=False, roaming=roaming) + + +# for the discussion regarding site_config_dir locations +# see +def site_config_dirs(appname: str) -> List[str]: + if sys.platform == "darwin": + return [_appdirs.site_data_dir(appname, appauthor=False, multipath=True)] + + dirval = _appdirs.site_config_dir(appname, appauthor=False, multipath=True) + if sys.platform == "win32": + return [dirval] + + # Unix-y system. Look in /etc as well. + return dirval.split(os.pathsep) + ["/etc"] diff --git a/venv/Lib/site-packages/pip/_internal/utils/compat.py b/venv/Lib/site-packages/pip/_internal/utils/compat.py new file mode 100644 index 00000000000..d8b54e4ee51 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/compat.py @@ -0,0 +1,79 @@ +"""Stuff that differs in different Python versions and platform +distributions.""" + +import importlib.resources +import logging +import os +import sys +from typing import IO + +__all__ = ["get_path_uid", "stdlib_pkgs", "WINDOWS"] + + +logger = logging.getLogger(__name__) + + +def has_tls() -> bool: + try: + import _ssl # noqa: F401 # ignore unused + + return True + except ImportError: + pass + + from pip._vendor.urllib3.util import IS_PYOPENSSL + + return IS_PYOPENSSL + + +def get_path_uid(path: str) -> int: + """ + Return path's uid. + + Does not follow symlinks: + https://github.com/pypa/pip/pull/935#discussion_r5307003 + + Placed this function in compat due to differences on AIX and + Jython, that should eventually go away. + + :raises OSError: When path is a symlink or can't be read. + """ + if hasattr(os, "O_NOFOLLOW"): + fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW) + file_uid = os.fstat(fd).st_uid + os.close(fd) + else: # AIX and Jython + # WARNING: time of check vulnerability, but best we can do w/o NOFOLLOW + if not os.path.islink(path): + # older versions of Jython don't have `os.fstat` + file_uid = os.stat(path).st_uid + else: + # raise OSError for parity with os.O_NOFOLLOW above + raise OSError(f"{path} is a symlink; Will not return uid for symlinks") + return file_uid + + +# The importlib.resources.open_text function was deprecated in 3.11 with suggested +# replacement we use below. +if sys.version_info < (3, 11): + open_text_resource = importlib.resources.open_text +else: + + def open_text_resource( + package: str, resource: str, encoding: str = "utf-8", errors: str = "strict" + ) -> IO[str]: + return (importlib.resources.files(package) / resource).open( + "r", encoding=encoding, errors=errors + ) + + +# packages in the stdlib that may have installation metadata, but should not be +# considered 'installed'. this theoretically could be determined based on +# dist.location (py27:`sysconfig.get_paths()['stdlib']`, +# py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may +# make this ineffective, so hard-coding +stdlib_pkgs = {"python", "wsgiref", "argparse"} + + +# windows detection, covers cpython and ironpython +WINDOWS = sys.platform.startswith("win") or (sys.platform == "cli" and os.name == "nt") diff --git a/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py b/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py new file mode 100644 index 00000000000..b6ed9a78e55 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py @@ -0,0 +1,165 @@ +"""Generate and work with PEP 425 Compatibility Tags. +""" + +import re +from typing import List, Optional, Tuple + +from pip._vendor.packaging.tags import ( + PythonVersion, + Tag, + compatible_tags, + cpython_tags, + generic_tags, + interpreter_name, + interpreter_version, + mac_platforms, +) + +_osx_arch_pat = re.compile(r"(.+)_(\d+)_(\d+)_(.+)") + + +def version_info_to_nodot(version_info: Tuple[int, ...]) -> str: + # Only use up to the first two numbers. + return "".join(map(str, version_info[:2])) + + +def _mac_platforms(arch: str) -> List[str]: + match = _osx_arch_pat.match(arch) + if match: + name, major, minor, actual_arch = match.groups() + mac_version = (int(major), int(minor)) + arches = [ + # Since we have always only checked that the platform starts + # with "macosx", for backwards-compatibility we extract the + # actual prefix provided by the user in case they provided + # something like "macosxcustom_". It may be good to remove + # this as undocumented or deprecate it in the future. + "{}_{}".format(name, arch[len("macosx_") :]) + for arch in mac_platforms(mac_version, actual_arch) + ] + else: + # arch pattern didn't match (?!) + arches = [arch] + return arches + + +def _custom_manylinux_platforms(arch: str) -> List[str]: + arches = [arch] + arch_prefix, arch_sep, arch_suffix = arch.partition("_") + if arch_prefix == "manylinux2014": + # manylinux1/manylinux2010 wheels run on most manylinux2014 systems + # with the exception of wheels depending on ncurses. PEP 599 states + # manylinux1/manylinux2010 wheels should be considered + # manylinux2014 wheels: + # https://www.python.org/dev/peps/pep-0599/#backwards-compatibility-with-manylinux2010-wheels + if arch_suffix in {"i686", "x86_64"}: + arches.append("manylinux2010" + arch_sep + arch_suffix) + arches.append("manylinux1" + arch_sep + arch_suffix) + elif arch_prefix == "manylinux2010": + # manylinux1 wheels run on most manylinux2010 systems with the + # exception of wheels depending on ncurses. PEP 571 states + # manylinux1 wheels should be considered manylinux2010 wheels: + # https://www.python.org/dev/peps/pep-0571/#backwards-compatibility-with-manylinux1-wheels + arches.append("manylinux1" + arch_sep + arch_suffix) + return arches + + +def _get_custom_platforms(arch: str) -> List[str]: + arch_prefix, arch_sep, arch_suffix = arch.partition("_") + if arch.startswith("macosx"): + arches = _mac_platforms(arch) + elif arch_prefix in ["manylinux2014", "manylinux2010"]: + arches = _custom_manylinux_platforms(arch) + else: + arches = [arch] + return arches + + +def _expand_allowed_platforms(platforms: Optional[List[str]]) -> Optional[List[str]]: + if not platforms: + return None + + seen = set() + result = [] + + for p in platforms: + if p in seen: + continue + additions = [c for c in _get_custom_platforms(p) if c not in seen] + seen.update(additions) + result.extend(additions) + + return result + + +def _get_python_version(version: str) -> PythonVersion: + if len(version) > 1: + return int(version[0]), int(version[1:]) + else: + return (int(version[0]),) + + +def _get_custom_interpreter( + implementation: Optional[str] = None, version: Optional[str] = None +) -> str: + if implementation is None: + implementation = interpreter_name() + if version is None: + version = interpreter_version() + return f"{implementation}{version}" + + +def get_supported( + version: Optional[str] = None, + platforms: Optional[List[str]] = None, + impl: Optional[str] = None, + abis: Optional[List[str]] = None, +) -> List[Tag]: + """Return a list of supported tags for each version specified in + `versions`. + + :param version: a string version, of the form "33" or "32", + or None. The version will be assumed to support our ABI. + :param platform: specify a list of platforms you want valid + tags for, or None. If None, use the local system platform. + :param impl: specify the exact implementation you want valid + tags for, or None. If None, use the local interpreter impl. + :param abis: specify a list of abis you want valid + tags for, or None. If None, use the local interpreter abi. + """ + supported: List[Tag] = [] + + python_version: Optional[PythonVersion] = None + if version is not None: + python_version = _get_python_version(version) + + interpreter = _get_custom_interpreter(impl, version) + + platforms = _expand_allowed_platforms(platforms) + + is_cpython = (impl or interpreter_name()) == "cp" + if is_cpython: + supported.extend( + cpython_tags( + python_version=python_version, + abis=abis, + platforms=platforms, + ) + ) + else: + supported.extend( + generic_tags( + interpreter=interpreter, + abis=abis, + platforms=platforms, + ) + ) + supported.extend( + compatible_tags( + python_version=python_version, + interpreter=interpreter, + platforms=platforms, + ) + ) + + return supported diff --git a/venv/Lib/site-packages/pip/_internal/utils/datetime.py b/venv/Lib/site-packages/pip/_internal/utils/datetime.py new file mode 100644 index 00000000000..8668b3b0ec1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/datetime.py @@ -0,0 +1,11 @@ +"""For when pip wants to check the date or time. +""" + +import datetime + + +def today_is_later_than(year: int, month: int, day: int) -> bool: + today = datetime.date.today() + given = datetime.date(year, month, day) + + return today > given diff --git a/venv/Lib/site-packages/pip/_internal/utils/deprecation.py b/venv/Lib/site-packages/pip/_internal/utils/deprecation.py new file mode 100644 index 00000000000..0911147e784 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/deprecation.py @@ -0,0 +1,124 @@ +""" +A module that implements tooling to enable easy warnings about deprecations. +""" + +import logging +import warnings +from typing import Any, Optional, TextIO, Type, Union + +from pip._vendor.packaging.version import parse + +from pip import __version__ as current_version # NOTE: tests patch this name. + +DEPRECATION_MSG_PREFIX = "DEPRECATION: " + + +class PipDeprecationWarning(Warning): + pass + + +_original_showwarning: Any = None + + +# Warnings <-> Logging Integration +def _showwarning( + message: Union[Warning, str], + category: Type[Warning], + filename: str, + lineno: int, + file: Optional[TextIO] = None, + line: Optional[str] = None, +) -> None: + if file is not None: + if _original_showwarning is not None: + _original_showwarning(message, category, filename, lineno, file, line) + elif issubclass(category, PipDeprecationWarning): + # We use a specially named logger which will handle all of the + # deprecation messages for pip. + logger = logging.getLogger("pip._internal.deprecations") + logger.warning(message) + else: + _original_showwarning(message, category, filename, lineno, file, line) + + +def install_warning_logger() -> None: + # Enable our Deprecation Warnings + warnings.simplefilter("default", PipDeprecationWarning, append=True) + + global _original_showwarning + + if _original_showwarning is None: + _original_showwarning = warnings.showwarning + warnings.showwarning = _showwarning + + +def deprecated( + *, + reason: str, + replacement: Optional[str], + gone_in: Optional[str], + feature_flag: Optional[str] = None, + issue: Optional[int] = None, +) -> None: + """Helper to deprecate existing functionality. + + reason: + Textual reason shown to the user about why this functionality has + been deprecated. Should be a complete sentence. + replacement: + Textual suggestion shown to the user about what alternative + functionality they can use. + gone_in: + The version of pip does this functionality should get removed in. + Raises an error if pip's current version is greater than or equal to + this. + feature_flag: + Command-line flag of the form --use-feature={feature_flag} for testing + upcoming functionality. + issue: + Issue number on the tracker that would serve as a useful place for + users to find related discussion and provide feedback. + """ + + # Determine whether or not the feature is already gone in this version. + is_gone = gone_in is not None and parse(current_version) >= parse(gone_in) + + message_parts = [ + (reason, f"{DEPRECATION_MSG_PREFIX}{{}}"), + ( + gone_in, + ( + "pip {} will enforce this behaviour change." + if not is_gone + else "Since pip {}, this is no longer supported." + ), + ), + ( + replacement, + "A possible replacement is {}.", + ), + ( + feature_flag, + ( + "You can use the flag --use-feature={} to test the upcoming behaviour." + if not is_gone + else None + ), + ), + ( + issue, + "Discussion can be found at https://github.com/pypa/pip/issues/{}", + ), + ] + + message = " ".join( + format_str.format(value) + for value, format_str in message_parts + if format_str is not None and value is not None + ) + + # Raise as an error if this behaviour is deprecated. + if is_gone: + raise PipDeprecationWarning(message) + + warnings.warn(message, category=PipDeprecationWarning, stacklevel=2) diff --git a/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py b/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py new file mode 100644 index 00000000000..66020d3964a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py @@ -0,0 +1,87 @@ +from typing import Optional + +from pip._internal.models.direct_url import ArchiveInfo, DirectUrl, DirInfo, VcsInfo +from pip._internal.models.link import Link +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs import vcs + + +def direct_url_as_pep440_direct_reference(direct_url: DirectUrl, name: str) -> str: + """Convert a DirectUrl to a pip requirement string.""" + direct_url.validate() # if invalid, this is a pip bug + requirement = name + " @ " + fragments = [] + if isinstance(direct_url.info, VcsInfo): + requirement += ( + f"{direct_url.info.vcs}+{direct_url.url}@{direct_url.info.commit_id}" + ) + elif isinstance(direct_url.info, ArchiveInfo): + requirement += direct_url.url + if direct_url.info.hash: + fragments.append(direct_url.info.hash) + else: + assert isinstance(direct_url.info, DirInfo) + requirement += direct_url.url + if direct_url.subdirectory: + fragments.append("subdirectory=" + direct_url.subdirectory) + if fragments: + requirement += "#" + "&".join(fragments) + return requirement + + +def direct_url_for_editable(source_dir: str) -> DirectUrl: + return DirectUrl( + url=path_to_url(source_dir), + info=DirInfo(editable=True), + ) + + +def direct_url_from_link( + link: Link, source_dir: Optional[str] = None, link_is_in_wheel_cache: bool = False +) -> DirectUrl: + if link.is_vcs: + vcs_backend = vcs.get_backend_for_scheme(link.scheme) + assert vcs_backend + url, requested_revision, _ = vcs_backend.get_url_rev_and_auth( + link.url_without_fragment + ) + # For VCS links, we need to find out and add commit_id. + if link_is_in_wheel_cache: + # If the requested VCS link corresponds to a cached + # wheel, it means the requested revision was an + # immutable commit hash, otherwise it would not have + # been cached. In that case we don't have a source_dir + # with the VCS checkout. + assert requested_revision + commit_id = requested_revision + else: + # If the wheel was not in cache, it means we have + # had to checkout from VCS to build and we have a source_dir + # which we can inspect to find out the commit id. + assert source_dir + commit_id = vcs_backend.get_revision(source_dir) + return DirectUrl( + url=url, + info=VcsInfo( + vcs=vcs_backend.name, + commit_id=commit_id, + requested_revision=requested_revision, + ), + subdirectory=link.subdirectory_fragment, + ) + elif link.is_existing_dir(): + return DirectUrl( + url=link.url_without_fragment, + info=DirInfo(), + subdirectory=link.subdirectory_fragment, + ) + else: + hash = None + hash_name = link.hash_name + if hash_name: + hash = f"{hash_name}={link.hash}" + return DirectUrl( + url=link.url_without_fragment, + info=ArchiveInfo(hash=hash), + subdirectory=link.subdirectory_fragment, + ) diff --git a/venv/Lib/site-packages/pip/_internal/utils/egg_link.py b/venv/Lib/site-packages/pip/_internal/utils/egg_link.py new file mode 100644 index 00000000000..4a384a63682 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/egg_link.py @@ -0,0 +1,80 @@ +import os +import re +import sys +from typing import List, Optional + +from pip._internal.locations import site_packages, user_site +from pip._internal.utils.virtualenv import ( + running_under_virtualenv, + virtualenv_no_global, +) + +__all__ = [ + "egg_link_path_from_sys_path", + "egg_link_path_from_location", +] + + +def _egg_link_names(raw_name: str) -> List[str]: + """ + Convert a Name metadata value to a .egg-link name, by applying + the same substitution as pkg_resources's safe_name function. + Note: we cannot use canonicalize_name because it has a different logic. + + We also look for the raw name (without normalization) as setuptools 69 changed + the way it names .egg-link files (https://github.com/pypa/setuptools/issues/4167). + """ + return [ + re.sub("[^A-Za-z0-9.]+", "-", raw_name) + ".egg-link", + f"{raw_name}.egg-link", + ] + + +def egg_link_path_from_sys_path(raw_name: str) -> Optional[str]: + """ + Look for a .egg-link file for project name, by walking sys.path. + """ + egg_link_names = _egg_link_names(raw_name) + for path_item in sys.path: + for egg_link_name in egg_link_names: + egg_link = os.path.join(path_item, egg_link_name) + if os.path.isfile(egg_link): + return egg_link + return None + + +def egg_link_path_from_location(raw_name: str) -> Optional[str]: + """ + Return the path for the .egg-link file if it exists, otherwise, None. + + There's 3 scenarios: + 1) not in a virtualenv + try to find in site.USER_SITE, then site_packages + 2) in a no-global virtualenv + try to find in site_packages + 3) in a yes-global virtualenv + try to find in site_packages, then site.USER_SITE + (don't look in global location) + + For #1 and #3, there could be odd cases, where there's an egg-link in 2 + locations. + + This method will just return the first one found. + """ + sites: List[str] = [] + if running_under_virtualenv(): + sites.append(site_packages) + if not virtualenv_no_global() and user_site: + sites.append(user_site) + else: + if user_site: + sites.append(user_site) + sites.append(site_packages) + + egg_link_names = _egg_link_names(raw_name) + for site in sites: + for egg_link_name in egg_link_names: + egglink = os.path.join(site, egg_link_name) + if os.path.isfile(egglink): + return egglink + return None diff --git a/venv/Lib/site-packages/pip/_internal/utils/encoding.py b/venv/Lib/site-packages/pip/_internal/utils/encoding.py new file mode 100644 index 00000000000..008f06a79bf --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/encoding.py @@ -0,0 +1,36 @@ +import codecs +import locale +import re +import sys +from typing import List, Tuple + +BOMS: List[Tuple[bytes, str]] = [ + (codecs.BOM_UTF8, "utf-8"), + (codecs.BOM_UTF16, "utf-16"), + (codecs.BOM_UTF16_BE, "utf-16-be"), + (codecs.BOM_UTF16_LE, "utf-16-le"), + (codecs.BOM_UTF32, "utf-32"), + (codecs.BOM_UTF32_BE, "utf-32-be"), + (codecs.BOM_UTF32_LE, "utf-32-le"), +] + +ENCODING_RE = re.compile(rb"coding[:=]\s*([-\w.]+)") + + +def auto_decode(data: bytes) -> str: + """Check a bytes string for a BOM to correctly detect the encoding + + Fallback to locale.getpreferredencoding(False) like open() on Python3""" + for bom, encoding in BOMS: + if data.startswith(bom): + return data[len(bom) :].decode(encoding) + # Lets check the first two lines as in PEP263 + for line in data.split(b"\n")[:2]: + if line[0:1] == b"#" and ENCODING_RE.search(line): + result = ENCODING_RE.search(line) + assert result is not None + encoding = result.groups()[0].decode("ascii") + return data.decode(encoding) + return data.decode( + locale.getpreferredencoding(False) or sys.getdefaultencoding(), + ) diff --git a/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py b/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py new file mode 100644 index 00000000000..15013693854 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py @@ -0,0 +1,84 @@ +import itertools +import os +import shutil +import sys +from typing import List, Optional + +from pip._internal.cli.main import main +from pip._internal.utils.compat import WINDOWS + +_EXECUTABLE_NAMES = [ + "pip", + f"pip{sys.version_info.major}", + f"pip{sys.version_info.major}.{sys.version_info.minor}", +] +if WINDOWS: + _allowed_extensions = {"", ".exe"} + _EXECUTABLE_NAMES = [ + "".join(parts) + for parts in itertools.product(_EXECUTABLE_NAMES, _allowed_extensions) + ] + + +def _wrapper(args: Optional[List[str]] = None) -> int: + """Central wrapper for all old entrypoints. + + Historically pip has had several entrypoints defined. Because of issues + arising from PATH, sys.path, multiple Pythons, their interactions, and most + of them having a pip installed, users suffer every time an entrypoint gets + moved. + + To alleviate this pain, and provide a mechanism for warning users and + directing them to an appropriate place for help, we now define all of + our old entrypoints as wrappers for the current one. + """ + sys.stderr.write( + "WARNING: pip is being invoked by an old script wrapper. This will " + "fail in a future version of pip.\n" + "Please see https://github.com/pypa/pip/issues/5599 for advice on " + "fixing the underlying issue.\n" + "To avoid this problem you can invoke Python with '-m pip' instead of " + "running pip directly.\n" + ) + return main(args) + + +def get_best_invocation_for_this_pip() -> str: + """Try to figure out the best way to invoke pip in the current environment.""" + binary_directory = "Scripts" if WINDOWS else "bin" + binary_prefix = os.path.join(sys.prefix, binary_directory) + + # Try to use pip[X[.Y]] names, if those executables for this environment are + # the first on PATH with that name. + path_parts = os.path.normcase(os.environ.get("PATH", "")).split(os.pathsep) + exe_are_in_PATH = os.path.normcase(binary_prefix) in path_parts + if exe_are_in_PATH: + for exe_name in _EXECUTABLE_NAMES: + found_executable = shutil.which(exe_name) + binary_executable = os.path.join(binary_prefix, exe_name) + if ( + found_executable + and os.path.exists(binary_executable) + and os.path.samefile( + found_executable, + binary_executable, + ) + ): + return exe_name + + # Use the `-m` invocation, if there's no "nice" invocation. + return f"{get_best_invocation_for_this_python()} -m pip" + + +def get_best_invocation_for_this_python() -> str: + """Try to figure out the best way to invoke the current Python.""" + exe = sys.executable + exe_name = os.path.basename(exe) + + # Try to use the basename, if it's the first executable. + found_executable = shutil.which(exe_name) + if found_executable and os.path.samefile(found_executable, exe): + return exe_name + + # Use the full executable name, because we couldn't find something simpler. + return exe diff --git a/venv/Lib/site-packages/pip/_internal/utils/filesystem.py b/venv/Lib/site-packages/pip/_internal/utils/filesystem.py new file mode 100644 index 00000000000..22e356cdd75 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/filesystem.py @@ -0,0 +1,149 @@ +import fnmatch +import os +import os.path +import random +import sys +from contextlib import contextmanager +from tempfile import NamedTemporaryFile +from typing import Any, BinaryIO, Generator, List, Union, cast + +from pip._internal.utils.compat import get_path_uid +from pip._internal.utils.misc import format_size +from pip._internal.utils.retry import retry + + +def check_path_owner(path: str) -> bool: + # If we don't have a way to check the effective uid of this process, then + # we'll just assume that we own the directory. + if sys.platform == "win32" or not hasattr(os, "geteuid"): + return True + + assert os.path.isabs(path) + + previous = None + while path != previous: + if os.path.lexists(path): + # Check if path is writable by current user. + if os.geteuid() == 0: + # Special handling for root user in order to handle properly + # cases where users use sudo without -H flag. + try: + path_uid = get_path_uid(path) + except OSError: + return False + return path_uid == 0 + else: + return os.access(path, os.W_OK) + else: + previous, path = path, os.path.dirname(path) + return False # assume we don't own the path + + +@contextmanager +def adjacent_tmp_file(path: str, **kwargs: Any) -> Generator[BinaryIO, None, None]: + """Return a file-like object pointing to a tmp file next to path. + + The file is created securely and is ensured to be written to disk + after the context reaches its end. + + kwargs will be passed to tempfile.NamedTemporaryFile to control + the way the temporary file will be opened. + """ + with NamedTemporaryFile( + delete=False, + dir=os.path.dirname(path), + prefix=os.path.basename(path), + suffix=".tmp", + **kwargs, + ) as f: + result = cast(BinaryIO, f) + try: + yield result + finally: + result.flush() + os.fsync(result.fileno()) + + +replace = retry(stop_after_delay=1, wait=0.25)(os.replace) + + +# test_writable_dir and _test_writable_dir_win are copied from Flit, +# with the author's agreement to also place them under pip's license. +def test_writable_dir(path: str) -> bool: + """Check if a directory is writable. + + Uses os.access() on POSIX, tries creating files on Windows. + """ + # If the directory doesn't exist, find the closest parent that does. + while not os.path.isdir(path): + parent = os.path.dirname(path) + if parent == path: + break # Should never get here, but infinite loops are bad + path = parent + + if os.name == "posix": + return os.access(path, os.W_OK) + + return _test_writable_dir_win(path) + + +def _test_writable_dir_win(path: str) -> bool: + # os.access doesn't work on Windows: http://bugs.python.org/issue2528 + # and we can't use tempfile: http://bugs.python.org/issue22107 + basename = "accesstest_deleteme_fishfingers_custard_" + alphabet = "abcdefghijklmnopqrstuvwxyz0123456789" + for _ in range(10): + name = basename + "".join(random.choice(alphabet) for _ in range(6)) + file = os.path.join(path, name) + try: + fd = os.open(file, os.O_RDWR | os.O_CREAT | os.O_EXCL) + except FileExistsError: + pass + except PermissionError: + # This could be because there's a directory with the same name. + # But it's highly unlikely there's a directory called that, + # so we'll assume it's because the parent dir is not writable. + # This could as well be because the parent dir is not readable, + # due to non-privileged user access. + return False + else: + os.close(fd) + os.unlink(file) + return True + + # This should never be reached + raise OSError("Unexpected condition testing for writable directory") + + +def find_files(path: str, pattern: str) -> List[str]: + """Returns a list of absolute paths of files beneath path, recursively, + with filenames which match the UNIX-style shell glob pattern.""" + result: List[str] = [] + for root, _, files in os.walk(path): + matches = fnmatch.filter(files, pattern) + result.extend(os.path.join(root, f) for f in matches) + return result + + +def file_size(path: str) -> Union[int, float]: + # If it's a symlink, return 0. + if os.path.islink(path): + return 0 + return os.path.getsize(path) + + +def format_file_size(path: str) -> str: + return format_size(file_size(path)) + + +def directory_size(path: str) -> Union[int, float]: + size = 0.0 + for root, _dirs, files in os.walk(path): + for filename in files: + file_path = os.path.join(root, filename) + size += file_size(file_path) + return size + + +def format_directory_size(path: str) -> str: + return format_size(directory_size(path)) diff --git a/venv/Lib/site-packages/pip/_internal/utils/filetypes.py b/venv/Lib/site-packages/pip/_internal/utils/filetypes.py new file mode 100644 index 00000000000..5948570178f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/filetypes.py @@ -0,0 +1,27 @@ +"""Filetype information. +""" + +from typing import Tuple + +from pip._internal.utils.misc import splitext + +WHEEL_EXTENSION = ".whl" +BZ2_EXTENSIONS: Tuple[str, ...] = (".tar.bz2", ".tbz") +XZ_EXTENSIONS: Tuple[str, ...] = ( + ".tar.xz", + ".txz", + ".tlz", + ".tar.lz", + ".tar.lzma", +) +ZIP_EXTENSIONS: Tuple[str, ...] = (".zip", WHEEL_EXTENSION) +TAR_EXTENSIONS: Tuple[str, ...] = (".tar.gz", ".tgz", ".tar") +ARCHIVE_EXTENSIONS = ZIP_EXTENSIONS + BZ2_EXTENSIONS + TAR_EXTENSIONS + XZ_EXTENSIONS + + +def is_archive_file(name: str) -> bool: + """Return True if `name` is a considered as an archive file.""" + ext = splitext(name)[1].lower() + if ext in ARCHIVE_EXTENSIONS: + return True + return False diff --git a/venv/Lib/site-packages/pip/_internal/utils/glibc.py b/venv/Lib/site-packages/pip/_internal/utils/glibc.py new file mode 100644 index 00000000000..998868ff2a4 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/glibc.py @@ -0,0 +1,101 @@ +import os +import sys +from typing import Optional, Tuple + + +def glibc_version_string() -> Optional[str]: + "Returns glibc version string, or None if not using glibc." + return glibc_version_string_confstr() or glibc_version_string_ctypes() + + +def glibc_version_string_confstr() -> Optional[str]: + "Primary implementation of glibc_version_string using os.confstr." + # os.confstr is quite a bit faster than ctypes.DLL. It's also less likely + # to be broken or missing. This strategy is used in the standard library + # platform module: + # https://github.com/python/cpython/blob/fcf1d003bf4f0100c9d0921ff3d70e1127ca1b71/Lib/platform.py#L175-L183 + if sys.platform == "win32": + return None + try: + gnu_libc_version = os.confstr("CS_GNU_LIBC_VERSION") + if gnu_libc_version is None: + return None + # os.confstr("CS_GNU_LIBC_VERSION") returns a string like "glibc 2.17": + _, version = gnu_libc_version.split() + except (AttributeError, OSError, ValueError): + # os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)... + return None + return version + + +def glibc_version_string_ctypes() -> Optional[str]: + "Fallback implementation of glibc_version_string using ctypes." + + try: + import ctypes + except ImportError: + return None + + # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen + # manpage says, "If filename is NULL, then the returned handle is for the + # main program". This way we can let the linker do the work to figure out + # which libc our process is actually using. + # + # We must also handle the special case where the executable is not a + # dynamically linked executable. This can occur when using musl libc, + # for example. In this situation, dlopen() will error, leading to an + # OSError. Interestingly, at least in the case of musl, there is no + # errno set on the OSError. The single string argument used to construct + # OSError comes from libc itself and is therefore not portable to + # hard code here. In any case, failure to call dlopen() means we + # can't proceed, so we bail on our attempt. + try: + process_namespace = ctypes.CDLL(None) + except OSError: + return None + + try: + gnu_get_libc_version = process_namespace.gnu_get_libc_version + except AttributeError: + # Symbol doesn't exist -> therefore, we are not linked to + # glibc. + return None + + # Call gnu_get_libc_version, which returns a string like "2.5" + gnu_get_libc_version.restype = ctypes.c_char_p + version_str: str = gnu_get_libc_version() + # py2 / py3 compatibility: + if not isinstance(version_str, str): + version_str = version_str.decode("ascii") + + return version_str + + +# platform.libc_ver regularly returns completely nonsensical glibc +# versions. E.g. on my computer, platform says: +# +# ~$ python2.7 -c 'import platform; print(platform.libc_ver())' +# ('glibc', '2.7') +# ~$ python3.5 -c 'import platform; print(platform.libc_ver())' +# ('glibc', '2.9') +# +# But the truth is: +# +# ~$ ldd --version +# ldd (Debian GLIBC 2.22-11) 2.22 +# +# This is unfortunate, because it means that the linehaul data on libc +# versions that was generated by pip 8.1.2 and earlier is useless and +# misleading. Solution: instead of using platform, use our code that actually +# works. +def libc_ver() -> Tuple[str, str]: + """Try to determine the glibc version + + Returns a tuple of strings (lib, version) which default to empty strings + in case the lookup fails. + """ + glibc_version = glibc_version_string() + if glibc_version is None: + return ("", "") + else: + return ("glibc", glibc_version) diff --git a/venv/Lib/site-packages/pip/_internal/utils/hashes.py b/venv/Lib/site-packages/pip/_internal/utils/hashes.py new file mode 100644 index 00000000000..535e94fca0c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/hashes.py @@ -0,0 +1,147 @@ +import hashlib +from typing import TYPE_CHECKING, BinaryIO, Dict, Iterable, List, NoReturn, Optional + +from pip._internal.exceptions import HashMismatch, HashMissing, InstallationError +from pip._internal.utils.misc import read_chunks + +if TYPE_CHECKING: + from hashlib import _Hash + + +# The recommended hash algo of the moment. Change this whenever the state of +# the art changes; it won't hurt backward compatibility. +FAVORITE_HASH = "sha256" + + +# Names of hashlib algorithms allowed by the --hash option and ``pip hash`` +# Currently, those are the ones at least as collision-resistant as sha256. +STRONG_HASHES = ["sha256", "sha384", "sha512"] + + +class Hashes: + """A wrapper that builds multiple hashes at once and checks them against + known-good values + + """ + + def __init__(self, hashes: Optional[Dict[str, List[str]]] = None) -> None: + """ + :param hashes: A dict of algorithm names pointing to lists of allowed + hex digests + """ + allowed = {} + if hashes is not None: + for alg, keys in hashes.items(): + # Make sure values are always sorted (to ease equality checks) + allowed[alg] = [k.lower() for k in sorted(keys)] + self._allowed = allowed + + def __and__(self, other: "Hashes") -> "Hashes": + if not isinstance(other, Hashes): + return NotImplemented + + # If either of the Hashes object is entirely empty (i.e. no hash + # specified at all), all hashes from the other object are allowed. + if not other: + return self + if not self: + return other + + # Otherwise only hashes that present in both objects are allowed. + new = {} + for alg, values in other._allowed.items(): + if alg not in self._allowed: + continue + new[alg] = [v for v in values if v in self._allowed[alg]] + return Hashes(new) + + @property + def digest_count(self) -> int: + return sum(len(digests) for digests in self._allowed.values()) + + def is_hash_allowed(self, hash_name: str, hex_digest: str) -> bool: + """Return whether the given hex digest is allowed.""" + return hex_digest in self._allowed.get(hash_name, []) + + def check_against_chunks(self, chunks: Iterable[bytes]) -> None: + """Check good hashes against ones built from iterable of chunks of + data. + + Raise HashMismatch if none match. + + """ + gots = {} + for hash_name in self._allowed.keys(): + try: + gots[hash_name] = hashlib.new(hash_name) + except (ValueError, TypeError): + raise InstallationError(f"Unknown hash name: {hash_name}") + + for chunk in chunks: + for hash in gots.values(): + hash.update(chunk) + + for hash_name, got in gots.items(): + if got.hexdigest() in self._allowed[hash_name]: + return + self._raise(gots) + + def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn": + raise HashMismatch(self._allowed, gots) + + def check_against_file(self, file: BinaryIO) -> None: + """Check good hashes against a file-like object + + Raise HashMismatch if none match. + + """ + return self.check_against_chunks(read_chunks(file)) + + def check_against_path(self, path: str) -> None: + with open(path, "rb") as file: + return self.check_against_file(file) + + def has_one_of(self, hashes: Dict[str, str]) -> bool: + """Return whether any of the given hashes are allowed.""" + for hash_name, hex_digest in hashes.items(): + if self.is_hash_allowed(hash_name, hex_digest): + return True + return False + + def __bool__(self) -> bool: + """Return whether I know any known-good hashes.""" + return bool(self._allowed) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Hashes): + return NotImplemented + return self._allowed == other._allowed + + def __hash__(self) -> int: + return hash( + ",".join( + sorted( + ":".join((alg, digest)) + for alg, digest_list in self._allowed.items() + for digest in digest_list + ) + ) + ) + + +class MissingHashes(Hashes): + """A workalike for Hashes used when we're missing a hash for a requirement + + It computes the actual hash of the requirement and raises a HashMissing + exception showing it to the user. + + """ + + def __init__(self) -> None: + """Don't offer the ``hashes`` kwarg.""" + # Pass our favorite hash in to generate a "gotten hash". With the + # empty list, it will never match, so an error will always raise. + super().__init__(hashes={FAVORITE_HASH: []}) + + def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn": + raise HashMissing(gots[FAVORITE_HASH].hexdigest()) diff --git a/venv/Lib/site-packages/pip/_internal/utils/logging.py b/venv/Lib/site-packages/pip/_internal/utils/logging.py new file mode 100644 index 00000000000..41f6eb51a26 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/logging.py @@ -0,0 +1,347 @@ +import contextlib +import errno +import logging +import logging.handlers +import os +import sys +import threading +from dataclasses import dataclass +from io import TextIOWrapper +from logging import Filter +from typing import Any, ClassVar, Generator, List, Optional, TextIO, Type + +from pip._vendor.rich.console import ( + Console, + ConsoleOptions, + ConsoleRenderable, + RenderableType, + RenderResult, + RichCast, +) +from pip._vendor.rich.highlighter import NullHighlighter +from pip._vendor.rich.logging import RichHandler +from pip._vendor.rich.segment import Segment +from pip._vendor.rich.style import Style + +from pip._internal.utils._log import VERBOSE, getLogger +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.deprecation import DEPRECATION_MSG_PREFIX +from pip._internal.utils.misc import ensure_dir + +_log_state = threading.local() +subprocess_logger = getLogger("pip.subprocessor") + + +class BrokenStdoutLoggingError(Exception): + """ + Raised if BrokenPipeError occurs for the stdout stream while logging. + """ + + +def _is_broken_pipe_error(exc_class: Type[BaseException], exc: BaseException) -> bool: + if exc_class is BrokenPipeError: + return True + + # On Windows, a broken pipe can show up as EINVAL rather than EPIPE: + # https://bugs.python.org/issue19612 + # https://bugs.python.org/issue30418 + if not WINDOWS: + return False + + return isinstance(exc, OSError) and exc.errno in (errno.EINVAL, errno.EPIPE) + + +@contextlib.contextmanager +def indent_log(num: int = 2) -> Generator[None, None, None]: + """ + A context manager which will cause the log output to be indented for any + log messages emitted inside it. + """ + # For thread-safety + _log_state.indentation = get_indentation() + _log_state.indentation += num + try: + yield + finally: + _log_state.indentation -= num + + +def get_indentation() -> int: + return getattr(_log_state, "indentation", 0) + + +class IndentingFormatter(logging.Formatter): + default_time_format = "%Y-%m-%dT%H:%M:%S" + + def __init__( + self, + *args: Any, + add_timestamp: bool = False, + **kwargs: Any, + ) -> None: + """ + A logging.Formatter that obeys the indent_log() context manager. + + :param add_timestamp: A bool indicating output lines should be prefixed + with their record's timestamp. + """ + self.add_timestamp = add_timestamp + super().__init__(*args, **kwargs) + + def get_message_start(self, formatted: str, levelno: int) -> str: + """ + Return the start of the formatted log message (not counting the + prefix to add to each line). + """ + if levelno < logging.WARNING: + return "" + if formatted.startswith(DEPRECATION_MSG_PREFIX): + # Then the message already has a prefix. We don't want it to + # look like "WARNING: DEPRECATION: ...." + return "" + if levelno < logging.ERROR: + return "WARNING: " + + return "ERROR: " + + def format(self, record: logging.LogRecord) -> str: + """ + Calls the standard formatter, but will indent all of the log message + lines by our current indentation level. + """ + formatted = super().format(record) + message_start = self.get_message_start(formatted, record.levelno) + formatted = message_start + formatted + + prefix = "" + if self.add_timestamp: + prefix = f"{self.formatTime(record)} " + prefix += " " * get_indentation() + formatted = "".join([prefix + line for line in formatted.splitlines(True)]) + return formatted + + +@dataclass +class IndentedRenderable: + renderable: RenderableType + indent: int + + def __rich_console__( + self, console: Console, options: ConsoleOptions + ) -> RenderResult: + segments = console.render(self.renderable, options) + lines = Segment.split_lines(segments) + for line in lines: + yield Segment(" " * self.indent) + yield from line + yield Segment("\n") + + +class RichPipStreamHandler(RichHandler): + KEYWORDS: ClassVar[Optional[List[str]]] = [] + + def __init__(self, stream: Optional[TextIO], no_color: bool) -> None: + super().__init__( + console=Console(file=stream, no_color=no_color, soft_wrap=True), + show_time=False, + show_level=False, + show_path=False, + highlighter=NullHighlighter(), + ) + + # Our custom override on Rich's logger, to make things work as we need them to. + def emit(self, record: logging.LogRecord) -> None: + style: Optional[Style] = None + + # If we are given a diagnostic error to present, present it with indentation. + if getattr(record, "rich", False): + assert isinstance(record.args, tuple) + (rich_renderable,) = record.args + assert isinstance( + rich_renderable, (ConsoleRenderable, RichCast, str) + ), f"{rich_renderable} is not rich-console-renderable" + + renderable: RenderableType = IndentedRenderable( + rich_renderable, indent=get_indentation() + ) + else: + message = self.format(record) + renderable = self.render_message(record, message) + if record.levelno is not None: + if record.levelno >= logging.ERROR: + style = Style(color="red") + elif record.levelno >= logging.WARNING: + style = Style(color="yellow") + + try: + self.console.print(renderable, overflow="ignore", crop=False, style=style) + except Exception: + self.handleError(record) + + def handleError(self, record: logging.LogRecord) -> None: + """Called when logging is unable to log some output.""" + + exc_class, exc = sys.exc_info()[:2] + # If a broken pipe occurred while calling write() or flush() on the + # stdout stream in logging's Handler.emit(), then raise our special + # exception so we can handle it in main() instead of logging the + # broken pipe error and continuing. + if ( + exc_class + and exc + and self.console.file is sys.stdout + and _is_broken_pipe_error(exc_class, exc) + ): + raise BrokenStdoutLoggingError() + + return super().handleError(record) + + +class BetterRotatingFileHandler(logging.handlers.RotatingFileHandler): + def _open(self) -> TextIOWrapper: + ensure_dir(os.path.dirname(self.baseFilename)) + return super()._open() + + +class MaxLevelFilter(Filter): + def __init__(self, level: int) -> None: + self.level = level + + def filter(self, record: logging.LogRecord) -> bool: + return record.levelno < self.level + + +class ExcludeLoggerFilter(Filter): + """ + A logging Filter that excludes records from a logger (or its children). + """ + + def filter(self, record: logging.LogRecord) -> bool: + # The base Filter class allows only records from a logger (or its + # children). + return not super().filter(record) + + +def setup_logging(verbosity: int, no_color: bool, user_log_file: Optional[str]) -> int: + """Configures and sets up all of the logging + + Returns the requested logging level, as its integer value. + """ + + # Determine the level to be logging at. + if verbosity >= 2: + level_number = logging.DEBUG + elif verbosity == 1: + level_number = VERBOSE + elif verbosity == -1: + level_number = logging.WARNING + elif verbosity == -2: + level_number = logging.ERROR + elif verbosity <= -3: + level_number = logging.CRITICAL + else: + level_number = logging.INFO + + level = logging.getLevelName(level_number) + + # The "root" logger should match the "console" level *unless* we also need + # to log to a user log file. + include_user_log = user_log_file is not None + if include_user_log: + additional_log_file = user_log_file + root_level = "DEBUG" + else: + additional_log_file = "/dev/null" + root_level = level + + # Disable any logging besides WARNING unless we have DEBUG level logging + # enabled for vendored libraries. + vendored_log_level = "WARNING" if level in ["INFO", "ERROR"] else "DEBUG" + + # Shorthands for clarity + log_streams = { + "stdout": "ext://sys.stdout", + "stderr": "ext://sys.stderr", + } + handler_classes = { + "stream": "pip._internal.utils.logging.RichPipStreamHandler", + "file": "pip._internal.utils.logging.BetterRotatingFileHandler", + } + handlers = ["console", "console_errors", "console_subprocess"] + ( + ["user_log"] if include_user_log else [] + ) + + logging.config.dictConfig( + { + "version": 1, + "disable_existing_loggers": False, + "filters": { + "exclude_warnings": { + "()": "pip._internal.utils.logging.MaxLevelFilter", + "level": logging.WARNING, + }, + "restrict_to_subprocess": { + "()": "logging.Filter", + "name": subprocess_logger.name, + }, + "exclude_subprocess": { + "()": "pip._internal.utils.logging.ExcludeLoggerFilter", + "name": subprocess_logger.name, + }, + }, + "formatters": { + "indent": { + "()": IndentingFormatter, + "format": "%(message)s", + }, + "indent_with_timestamp": { + "()": IndentingFormatter, + "format": "%(message)s", + "add_timestamp": True, + }, + }, + "handlers": { + "console": { + "level": level, + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stdout"], + "filters": ["exclude_subprocess", "exclude_warnings"], + "formatter": "indent", + }, + "console_errors": { + "level": "WARNING", + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stderr"], + "filters": ["exclude_subprocess"], + "formatter": "indent", + }, + # A handler responsible for logging to the console messages + # from the "subprocessor" logger. + "console_subprocess": { + "level": level, + "class": handler_classes["stream"], + "stream": log_streams["stderr"], + "no_color": no_color, + "filters": ["restrict_to_subprocess"], + "formatter": "indent", + }, + "user_log": { + "level": "DEBUG", + "class": handler_classes["file"], + "filename": additional_log_file, + "encoding": "utf-8", + "delay": True, + "formatter": "indent_with_timestamp", + }, + }, + "root": { + "level": root_level, + "handlers": handlers, + }, + "loggers": {"pip._vendor": {"level": vendored_log_level}}, + } + ) + + return level_number diff --git a/venv/Lib/site-packages/pip/_internal/utils/misc.py b/venv/Lib/site-packages/pip/_internal/utils/misc.py new file mode 100644 index 00000000000..3707e872684 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/misc.py @@ -0,0 +1,777 @@ +import errno +import getpass +import hashlib +import logging +import os +import posixpath +import shutil +import stat +import sys +import sysconfig +import urllib.parse +from dataclasses import dataclass +from functools import partial +from io import StringIO +from itertools import filterfalse, tee, zip_longest +from pathlib import Path +from types import FunctionType, TracebackType +from typing import ( + Any, + BinaryIO, + Callable, + Dict, + Generator, + Iterable, + Iterator, + List, + Optional, + TextIO, + Tuple, + Type, + TypeVar, + Union, + cast, +) + +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.pyproject_hooks import BuildBackendHookCaller + +from pip import __version__ +from pip._internal.exceptions import CommandError, ExternallyManagedEnvironment +from pip._internal.locations import get_major_minor_version +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.retry import retry +from pip._internal.utils.virtualenv import running_under_virtualenv + +__all__ = [ + "rmtree", + "display_path", + "backup_dir", + "ask", + "splitext", + "format_size", + "is_installable_dir", + "normalize_path", + "renames", + "get_prog", + "ensure_dir", + "remove_auth_from_url", + "check_externally_managed", + "ConfiguredBuildBackendHookCaller", +] + +logger = logging.getLogger(__name__) + +T = TypeVar("T") +ExcInfo = Tuple[Type[BaseException], BaseException, TracebackType] +VersionInfo = Tuple[int, int, int] +NetlocTuple = Tuple[str, Tuple[Optional[str], Optional[str]]] +OnExc = Callable[[FunctionType, Path, BaseException], Any] +OnErr = Callable[[FunctionType, Path, ExcInfo], Any] + +FILE_CHUNK_SIZE = 1024 * 1024 + + +def get_pip_version() -> str: + pip_pkg_dir = os.path.join(os.path.dirname(__file__), "..", "..") + pip_pkg_dir = os.path.abspath(pip_pkg_dir) + + return f"pip {__version__} from {pip_pkg_dir} (python {get_major_minor_version()})" + + +def normalize_version_info(py_version_info: Tuple[int, ...]) -> Tuple[int, int, int]: + """ + Convert a tuple of ints representing a Python version to one of length + three. + + :param py_version_info: a tuple of ints representing a Python version, + or None to specify no version. The tuple can have any length. + + :return: a tuple of length three if `py_version_info` is non-None. + Otherwise, return `py_version_info` unchanged (i.e. None). + """ + if len(py_version_info) < 3: + py_version_info += (3 - len(py_version_info)) * (0,) + elif len(py_version_info) > 3: + py_version_info = py_version_info[:3] + + return cast("VersionInfo", py_version_info) + + +def ensure_dir(path: str) -> None: + """os.path.makedirs without EEXIST.""" + try: + os.makedirs(path) + except OSError as e: + # Windows can raise spurious ENOTEMPTY errors. See #6426. + if e.errno != errno.EEXIST and e.errno != errno.ENOTEMPTY: + raise + + +def get_prog() -> str: + try: + prog = os.path.basename(sys.argv[0]) + if prog in ("__main__.py", "-c"): + return f"{sys.executable} -m pip" + else: + return prog + except (AttributeError, TypeError, IndexError): + pass + return "pip" + + +# Retry every half second for up to 3 seconds +@retry(stop_after_delay=3, wait=0.5) +def rmtree( + dir: str, ignore_errors: bool = False, onexc: Optional[OnExc] = None +) -> None: + if ignore_errors: + onexc = _onerror_ignore + if onexc is None: + onexc = _onerror_reraise + handler: OnErr = partial( + # `[func, path, Union[ExcInfo, BaseException]] -> Any` is equivalent to + # `Union[([func, path, ExcInfo] -> Any), ([func, path, BaseException] -> Any)]`. + cast(Union[OnExc, OnErr], rmtree_errorhandler), + onexc=onexc, + ) + if sys.version_info >= (3, 12): + # See https://docs.python.org/3.12/whatsnew/3.12.html#shutil. + shutil.rmtree(dir, onexc=handler) # type: ignore + else: + shutil.rmtree(dir, onerror=handler) # type: ignore + + +def _onerror_ignore(*_args: Any) -> None: + pass + + +def _onerror_reraise(*_args: Any) -> None: + raise # noqa: PLE0704 - Bare exception used to reraise existing exception + + +def rmtree_errorhandler( + func: FunctionType, + path: Path, + exc_info: Union[ExcInfo, BaseException], + *, + onexc: OnExc = _onerror_reraise, +) -> None: + """ + `rmtree` error handler to 'force' a file remove (i.e. like `rm -f`). + + * If a file is readonly then it's write flag is set and operation is + retried. + + * `onerror` is the original callback from `rmtree(... onerror=onerror)` + that is chained at the end if the "rm -f" still fails. + """ + try: + st_mode = os.stat(path).st_mode + except OSError: + # it's equivalent to os.path.exists + return + + if not st_mode & stat.S_IWRITE: + # convert to read/write + try: + os.chmod(path, st_mode | stat.S_IWRITE) + except OSError: + pass + else: + # use the original function to repeat the operation + try: + func(path) + return + except OSError: + pass + + if not isinstance(exc_info, BaseException): + _, exc_info, _ = exc_info + onexc(func, path, exc_info) + + +def display_path(path: str) -> str: + """Gives the display value for a given path, making it relative to cwd + if possible.""" + path = os.path.normcase(os.path.abspath(path)) + if path.startswith(os.getcwd() + os.path.sep): + path = "." + path[len(os.getcwd()) :] + return path + + +def backup_dir(dir: str, ext: str = ".bak") -> str: + """Figure out the name of a directory to back up the given dir to + (adding .bak, .bak2, etc)""" + n = 1 + extension = ext + while os.path.exists(dir + extension): + n += 1 + extension = ext + str(n) + return dir + extension + + +def ask_path_exists(message: str, options: Iterable[str]) -> str: + for action in os.environ.get("PIP_EXISTS_ACTION", "").split(): + if action in options: + return action + return ask(message, options) + + +def _check_no_input(message: str) -> None: + """Raise an error if no input is allowed.""" + if os.environ.get("PIP_NO_INPUT"): + raise Exception( + f"No input was expected ($PIP_NO_INPUT set); question: {message}" + ) + + +def ask(message: str, options: Iterable[str]) -> str: + """Ask the message interactively, with the given possible responses""" + while 1: + _check_no_input(message) + response = input(message) + response = response.strip().lower() + if response not in options: + print( + "Your response ({!r}) was not one of the expected responses: " + "{}".format(response, ", ".join(options)) + ) + else: + return response + + +def ask_input(message: str) -> str: + """Ask for input interactively.""" + _check_no_input(message) + return input(message) + + +def ask_password(message: str) -> str: + """Ask for a password interactively.""" + _check_no_input(message) + return getpass.getpass(message) + + +def strtobool(val: str) -> int: + """Convert a string representation of truth to true (1) or false (0). + + True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values + are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if + 'val' is anything else. + """ + val = val.lower() + if val in ("y", "yes", "t", "true", "on", "1"): + return 1 + elif val in ("n", "no", "f", "false", "off", "0"): + return 0 + else: + raise ValueError(f"invalid truth value {val!r}") + + +def format_size(bytes: float) -> str: + if bytes > 1000 * 1000: + return f"{bytes / 1000.0 / 1000:.1f} MB" + elif bytes > 10 * 1000: + return f"{int(bytes / 1000)} kB" + elif bytes > 1000: + return f"{bytes / 1000.0:.1f} kB" + else: + return f"{int(bytes)} bytes" + + +def tabulate(rows: Iterable[Iterable[Any]]) -> Tuple[List[str], List[int]]: + """Return a list of formatted rows and a list of column sizes. + + For example:: + + >>> tabulate([['foobar', 2000], [0xdeadbeef]]) + (['foobar 2000', '3735928559'], [10, 4]) + """ + rows = [tuple(map(str, row)) for row in rows] + sizes = [max(map(len, col)) for col in zip_longest(*rows, fillvalue="")] + table = [" ".join(map(str.ljust, row, sizes)).rstrip() for row in rows] + return table, sizes + + +def is_installable_dir(path: str) -> bool: + """Is path is a directory containing pyproject.toml or setup.py? + + If pyproject.toml exists, this is a PEP 517 project. Otherwise we look for + a legacy setuptools layout by identifying setup.py. We don't check for the + setup.cfg because using it without setup.py is only available for PEP 517 + projects, which are already covered by the pyproject.toml check. + """ + if not os.path.isdir(path): + return False + if os.path.isfile(os.path.join(path, "pyproject.toml")): + return True + if os.path.isfile(os.path.join(path, "setup.py")): + return True + return False + + +def read_chunks( + file: BinaryIO, size: int = FILE_CHUNK_SIZE +) -> Generator[bytes, None, None]: + """Yield pieces of data from a file-like object until EOF.""" + while True: + chunk = file.read(size) + if not chunk: + break + yield chunk + + +def normalize_path(path: str, resolve_symlinks: bool = True) -> str: + """ + Convert a path to its canonical, case-normalized, absolute version. + + """ + path = os.path.expanduser(path) + if resolve_symlinks: + path = os.path.realpath(path) + else: + path = os.path.abspath(path) + return os.path.normcase(path) + + +def splitext(path: str) -> Tuple[str, str]: + """Like os.path.splitext, but take off .tar too""" + base, ext = posixpath.splitext(path) + if base.lower().endswith(".tar"): + ext = base[-4:] + ext + base = base[:-4] + return base, ext + + +def renames(old: str, new: str) -> None: + """Like os.renames(), but handles renaming across devices.""" + # Implementation borrowed from os.renames(). + head, tail = os.path.split(new) + if head and tail and not os.path.exists(head): + os.makedirs(head) + + shutil.move(old, new) + + head, tail = os.path.split(old) + if head and tail: + try: + os.removedirs(head) + except OSError: + pass + + +def is_local(path: str) -> bool: + """ + Return True if path is within sys.prefix, if we're running in a virtualenv. + + If we're not in a virtualenv, all paths are considered "local." + + Caution: this function assumes the head of path has been normalized + with normalize_path. + """ + if not running_under_virtualenv(): + return True + return path.startswith(normalize_path(sys.prefix)) + + +def write_output(msg: Any, *args: Any) -> None: + logger.info(msg, *args) + + +class StreamWrapper(StringIO): + orig_stream: TextIO + + @classmethod + def from_stream(cls, orig_stream: TextIO) -> "StreamWrapper": + ret = cls() + ret.orig_stream = orig_stream + return ret + + # compileall.compile_dir() needs stdout.encoding to print to stdout + # type ignore is because TextIOBase.encoding is writeable + @property + def encoding(self) -> str: # type: ignore + return self.orig_stream.encoding + + +# Simulates an enum +def enum(*sequential: Any, **named: Any) -> Type[Any]: + enums = dict(zip(sequential, range(len(sequential))), **named) + reverse = {value: key for key, value in enums.items()} + enums["reverse_mapping"] = reverse + return type("Enum", (), enums) + + +def build_netloc(host: str, port: Optional[int]) -> str: + """ + Build a netloc from a host-port pair + """ + if port is None: + return host + if ":" in host: + # Only wrap host with square brackets when it is IPv6 + host = f"[{host}]" + return f"{host}:{port}" + + +def build_url_from_netloc(netloc: str, scheme: str = "https") -> str: + """ + Build a full URL from a netloc. + """ + if netloc.count(":") >= 2 and "@" not in netloc and "[" not in netloc: + # It must be a bare IPv6 address, so wrap it with brackets. + netloc = f"[{netloc}]" + return f"{scheme}://{netloc}" + + +def parse_netloc(netloc: str) -> Tuple[Optional[str], Optional[int]]: + """ + Return the host-port pair from a netloc. + """ + url = build_url_from_netloc(netloc) + parsed = urllib.parse.urlparse(url) + return parsed.hostname, parsed.port + + +def split_auth_from_netloc(netloc: str) -> NetlocTuple: + """ + Parse out and remove the auth information from a netloc. + + Returns: (netloc, (username, password)). + """ + if "@" not in netloc: + return netloc, (None, None) + + # Split from the right because that's how urllib.parse.urlsplit() + # behaves if more than one @ is present (which can be checked using + # the password attribute of urlsplit()'s return value). + auth, netloc = netloc.rsplit("@", 1) + pw: Optional[str] = None + if ":" in auth: + # Split from the left because that's how urllib.parse.urlsplit() + # behaves if more than one : is present (which again can be checked + # using the password attribute of the return value) + user, pw = auth.split(":", 1) + else: + user, pw = auth, None + + user = urllib.parse.unquote(user) + if pw is not None: + pw = urllib.parse.unquote(pw) + + return netloc, (user, pw) + + +def redact_netloc(netloc: str) -> str: + """ + Replace the sensitive data in a netloc with "****", if it exists. + + For example: + - "user:pass@example.com" returns "user:****@example.com" + - "accesstoken@example.com" returns "****@example.com" + """ + netloc, (user, password) = split_auth_from_netloc(netloc) + if user is None: + return netloc + if password is None: + user = "****" + password = "" + else: + user = urllib.parse.quote(user) + password = ":****" + return f"{user}{password}@{netloc}" + + +def _transform_url( + url: str, transform_netloc: Callable[[str], Tuple[Any, ...]] +) -> Tuple[str, NetlocTuple]: + """Transform and replace netloc in a url. + + transform_netloc is a function taking the netloc and returning a + tuple. The first element of this tuple is the new netloc. The + entire tuple is returned. + + Returns a tuple containing the transformed url as item 0 and the + original tuple returned by transform_netloc as item 1. + """ + purl = urllib.parse.urlsplit(url) + netloc_tuple = transform_netloc(purl.netloc) + # stripped url + url_pieces = (purl.scheme, netloc_tuple[0], purl.path, purl.query, purl.fragment) + surl = urllib.parse.urlunsplit(url_pieces) + return surl, cast("NetlocTuple", netloc_tuple) + + +def _get_netloc(netloc: str) -> NetlocTuple: + return split_auth_from_netloc(netloc) + + +def _redact_netloc(netloc: str) -> Tuple[str]: + return (redact_netloc(netloc),) + + +def split_auth_netloc_from_url( + url: str, +) -> Tuple[str, str, Tuple[Optional[str], Optional[str]]]: + """ + Parse a url into separate netloc, auth, and url with no auth. + + Returns: (url_without_auth, netloc, (username, password)) + """ + url_without_auth, (netloc, auth) = _transform_url(url, _get_netloc) + return url_without_auth, netloc, auth + + +def remove_auth_from_url(url: str) -> str: + """Return a copy of url with 'username:password@' removed.""" + # username/pass params are passed to subversion through flags + # and are not recognized in the url. + return _transform_url(url, _get_netloc)[0] + + +def redact_auth_from_url(url: str) -> str: + """Replace the password in a given url with ****.""" + return _transform_url(url, _redact_netloc)[0] + + +def redact_auth_from_requirement(req: Requirement) -> str: + """Replace the password in a given requirement url with ****.""" + if not req.url: + return str(req) + return str(req).replace(req.url, redact_auth_from_url(req.url)) + + +@dataclass(frozen=True) +class HiddenText: + secret: str + redacted: str + + def __repr__(self) -> str: + return f"" + + def __str__(self) -> str: + return self.redacted + + # This is useful for testing. + def __eq__(self, other: Any) -> bool: + if type(self) != type(other): + return False + + # The string being used for redaction doesn't also have to match, + # just the raw, original string. + return self.secret == other.secret + + +def hide_value(value: str) -> HiddenText: + return HiddenText(value, redacted="****") + + +def hide_url(url: str) -> HiddenText: + redacted = redact_auth_from_url(url) + return HiddenText(url, redacted=redacted) + + +def protect_pip_from_modification_on_windows(modifying_pip: bool) -> None: + """Protection of pip.exe from modification on Windows + + On Windows, any operation modifying pip should be run as: + python -m pip ... + """ + pip_names = [ + "pip", + f"pip{sys.version_info.major}", + f"pip{sys.version_info.major}.{sys.version_info.minor}", + ] + + # See https://github.com/pypa/pip/issues/1299 for more discussion + should_show_use_python_msg = ( + modifying_pip and WINDOWS and os.path.basename(sys.argv[0]) in pip_names + ) + + if should_show_use_python_msg: + new_command = [sys.executable, "-m", "pip"] + sys.argv[1:] + raise CommandError( + "To modify pip, please run the following command:\n{}".format( + " ".join(new_command) + ) + ) + + +def check_externally_managed() -> None: + """Check whether the current environment is externally managed. + + If the ``EXTERNALLY-MANAGED`` config file is found, the current environment + is considered externally managed, and an ExternallyManagedEnvironment is + raised. + """ + if running_under_virtualenv(): + return + marker = os.path.join(sysconfig.get_path("stdlib"), "EXTERNALLY-MANAGED") + if not os.path.isfile(marker): + return + raise ExternallyManagedEnvironment.from_config(marker) + + +def is_console_interactive() -> bool: + """Is this console interactive?""" + return sys.stdin is not None and sys.stdin.isatty() + + +def hash_file(path: str, blocksize: int = 1 << 20) -> Tuple[Any, int]: + """Return (hash, length) for path using hashlib.sha256()""" + + h = hashlib.sha256() + length = 0 + with open(path, "rb") as f: + for block in read_chunks(f, size=blocksize): + length += len(block) + h.update(block) + return h, length + + +def pairwise(iterable: Iterable[Any]) -> Iterator[Tuple[Any, Any]]: + """ + Return paired elements. + + For example: + s -> (s0, s1), (s2, s3), (s4, s5), ... + """ + iterable = iter(iterable) + return zip_longest(iterable, iterable) + + +def partition( + pred: Callable[[T], bool], iterable: Iterable[T] +) -> Tuple[Iterable[T], Iterable[T]]: + """ + Use a predicate to partition entries into false entries and true entries, + like + + partition(is_odd, range(10)) --> 0 2 4 6 8 and 1 3 5 7 9 + """ + t1, t2 = tee(iterable) + return filterfalse(pred, t1), filter(pred, t2) + + +class ConfiguredBuildBackendHookCaller(BuildBackendHookCaller): + def __init__( + self, + config_holder: Any, + source_dir: str, + build_backend: str, + backend_path: Optional[str] = None, + runner: Optional[Callable[..., None]] = None, + python_executable: Optional[str] = None, + ): + super().__init__( + source_dir, build_backend, backend_path, runner, python_executable + ) + self.config_holder = config_holder + + def build_wheel( + self, + wheel_directory: str, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, + metadata_directory: Optional[str] = None, + ) -> str: + cs = self.config_holder.config_settings + return super().build_wheel( + wheel_directory, config_settings=cs, metadata_directory=metadata_directory + ) + + def build_sdist( + self, + sdist_directory: str, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, + ) -> str: + cs = self.config_holder.config_settings + return super().build_sdist(sdist_directory, config_settings=cs) + + def build_editable( + self, + wheel_directory: str, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, + metadata_directory: Optional[str] = None, + ) -> str: + cs = self.config_holder.config_settings + return super().build_editable( + wheel_directory, config_settings=cs, metadata_directory=metadata_directory + ) + + def get_requires_for_build_wheel( + self, config_settings: Optional[Dict[str, Union[str, List[str]]]] = None + ) -> List[str]: + cs = self.config_holder.config_settings + return super().get_requires_for_build_wheel(config_settings=cs) + + def get_requires_for_build_sdist( + self, config_settings: Optional[Dict[str, Union[str, List[str]]]] = None + ) -> List[str]: + cs = self.config_holder.config_settings + return super().get_requires_for_build_sdist(config_settings=cs) + + def get_requires_for_build_editable( + self, config_settings: Optional[Dict[str, Union[str, List[str]]]] = None + ) -> List[str]: + cs = self.config_holder.config_settings + return super().get_requires_for_build_editable(config_settings=cs) + + def prepare_metadata_for_build_wheel( + self, + metadata_directory: str, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, + _allow_fallback: bool = True, + ) -> str: + cs = self.config_holder.config_settings + return super().prepare_metadata_for_build_wheel( + metadata_directory=metadata_directory, + config_settings=cs, + _allow_fallback=_allow_fallback, + ) + + def prepare_metadata_for_build_editable( + self, + metadata_directory: str, + config_settings: Optional[Dict[str, Union[str, List[str]]]] = None, + _allow_fallback: bool = True, + ) -> str: + cs = self.config_holder.config_settings + return super().prepare_metadata_for_build_editable( + metadata_directory=metadata_directory, + config_settings=cs, + _allow_fallback=_allow_fallback, + ) + + +def warn_if_run_as_root() -> None: + """Output a warning for sudo users on Unix. + + In a virtual environment, sudo pip still writes to virtualenv. + On Windows, users may run pip as Administrator without issues. + This warning only applies to Unix root users outside of virtualenv. + """ + if running_under_virtualenv(): + return + if not hasattr(os, "getuid"): + return + # On Windows, there are no "system managed" Python packages. Installing as + # Administrator via pip is the correct way of updating system environments. + # + # We choose sys.platform over utils.compat.WINDOWS here to enable Mypy platform + # checks: https://mypy.readthedocs.io/en/stable/common_issues.html + if sys.platform == "win32" or sys.platform == "cygwin": + return + + if os.getuid() != 0: + return + + logger.warning( + "Running pip as the 'root' user can result in broken permissions and " + "conflicting behaviour with the system package manager, possibly " + "rendering your system unusable." + "It is recommended to use a virtual environment instead: " + "https://pip.pypa.io/warnings/venv. " + "Use the --root-user-action option if you know what you are doing and " + "want to suppress this warning." + ) diff --git a/venv/Lib/site-packages/pip/_internal/utils/packaging.py b/venv/Lib/site-packages/pip/_internal/utils/packaging.py new file mode 100644 index 00000000000..4b8fa0fe397 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/packaging.py @@ -0,0 +1,57 @@ +import functools +import logging +import re +from typing import NewType, Optional, Tuple, cast + +from pip._vendor.packaging import specifiers, version +from pip._vendor.packaging.requirements import Requirement + +NormalizedExtra = NewType("NormalizedExtra", str) + +logger = logging.getLogger(__name__) + + +def check_requires_python( + requires_python: Optional[str], version_info: Tuple[int, ...] +) -> bool: + """ + Check if the given Python version matches a "Requires-Python" specifier. + + :param version_info: A 3-tuple of ints representing a Python + major-minor-micro version to check (e.g. `sys.version_info[:3]`). + + :return: `True` if the given Python version satisfies the requirement. + Otherwise, return `False`. + + :raises InvalidSpecifier: If `requires_python` has an invalid format. + """ + if requires_python is None: + # The package provides no information + return True + requires_python_specifier = specifiers.SpecifierSet(requires_python) + + python_version = version.parse(".".join(map(str, version_info))) + return python_version in requires_python_specifier + + +@functools.lru_cache(maxsize=2048) +def get_requirement(req_string: str) -> Requirement: + """Construct a packaging.Requirement object with caching""" + # Parsing requirement strings is expensive, and is also expected to happen + # with a low diversity of different arguments (at least relative the number + # constructed). This method adds a cache to requirement object creation to + # minimize repeated parsing of the same string to construct equivalent + # Requirement objects. + return Requirement(req_string) + + +def safe_extra(extra: str) -> NormalizedExtra: + """Convert an arbitrary string to a standard 'extra' name + + Any runs of non-alphanumeric characters are replaced with a single '_', + and the result is always lowercased. + + This function is duplicated from ``pkg_resources``. Note that this is not + the same to either ``canonicalize_name`` or ``_egg_link_name``. + """ + return cast(NormalizedExtra, re.sub("[^A-Za-z0-9.-]+", "_", extra).lower()) diff --git a/venv/Lib/site-packages/pip/_internal/utils/retry.py b/venv/Lib/site-packages/pip/_internal/utils/retry.py new file mode 100644 index 00000000000..abfe07286ea --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/retry.py @@ -0,0 +1,42 @@ +import functools +from time import perf_counter, sleep +from typing import Callable, TypeVar + +from pip._vendor.typing_extensions import ParamSpec + +T = TypeVar("T") +P = ParamSpec("P") + + +def retry( + wait: float, stop_after_delay: float +) -> Callable[[Callable[P, T]], Callable[P, T]]: + """Decorator to automatically retry a function on error. + + If the function raises, the function is recalled with the same arguments + until it returns or the time limit is reached. When the time limit is + surpassed, the last exception raised is reraised. + + :param wait: The time to wait after an error before retrying, in seconds. + :param stop_after_delay: The time limit after which retries will cease, + in seconds. + """ + + def wrapper(func: Callable[P, T]) -> Callable[P, T]: + + @functools.wraps(func) + def retry_wrapped(*args: P.args, **kwargs: P.kwargs) -> T: + # The performance counter is monotonic on all platforms we care + # about and has much better resolution than time.monotonic(). + start_time = perf_counter() + while True: + try: + return func(*args, **kwargs) + except Exception: + if perf_counter() - start_time > stop_after_delay: + raise + sleep(wait) + + return retry_wrapped + + return wrapper diff --git a/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py b/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py new file mode 100644 index 00000000000..96d1b246067 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py @@ -0,0 +1,146 @@ +import sys +import textwrap +from typing import List, Optional, Sequence + +# Shim to wrap setup.py invocation with setuptools +# Note that __file__ is handled via two {!r} *and* %r, to ensure that paths on +# Windows are correctly handled (it should be "C:\\Users" not "C:\Users"). +_SETUPTOOLS_SHIM = textwrap.dedent( + """ + exec(compile(''' + # This is -- a caller that pip uses to run setup.py + # + # - It imports setuptools before invoking setup.py, to enable projects that directly + # import from `distutils.core` to work with newer packaging standards. + # - It provides a clear error message when setuptools is not installed. + # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so + # setuptools doesn't think the script is `-c`. This avoids the following warning: + # manifest_maker: standard file '-c' not found". + # - It generates a shim setup.py, for handling setup.cfg-only projects. + import os, sys, tokenize + + try: + import setuptools + except ImportError as error: + print( + "ERROR: Can not execute `setup.py` since setuptools is not available in " + "the build environment.", + file=sys.stderr, + ) + sys.exit(1) + + __file__ = %r + sys.argv[0] = __file__ + + if os.path.exists(__file__): + filename = __file__ + with tokenize.open(__file__) as f: + setup_py_code = f.read() + else: + filename = "" + setup_py_code = "from setuptools import setup; setup()" + + exec(compile(setup_py_code, filename, "exec")) + ''' % ({!r},), "", "exec")) + """ +).rstrip() + + +def make_setuptools_shim_args( + setup_py_path: str, + global_options: Optional[Sequence[str]] = None, + no_user_config: bool = False, + unbuffered_output: bool = False, +) -> List[str]: + """ + Get setuptools command arguments with shim wrapped setup file invocation. + + :param setup_py_path: The path to setup.py to be wrapped. + :param global_options: Additional global options. + :param no_user_config: If True, disables personal user configuration. + :param unbuffered_output: If True, adds the unbuffered switch to the + argument list. + """ + args = [sys.executable] + if unbuffered_output: + args += ["-u"] + args += ["-c", _SETUPTOOLS_SHIM.format(setup_py_path)] + if global_options: + args += global_options + if no_user_config: + args += ["--no-user-cfg"] + return args + + +def make_setuptools_bdist_wheel_args( + setup_py_path: str, + global_options: Sequence[str], + build_options: Sequence[str], + destination_dir: str, +) -> List[str]: + # NOTE: Eventually, we'd want to also -S to the flags here, when we're + # isolating. Currently, it breaks Python in virtualenvs, because it + # relies on site.py to find parts of the standard library outside the + # virtualenv. + args = make_setuptools_shim_args( + setup_py_path, global_options=global_options, unbuffered_output=True + ) + args += ["bdist_wheel", "-d", destination_dir] + args += build_options + return args + + +def make_setuptools_clean_args( + setup_py_path: str, + global_options: Sequence[str], +) -> List[str]: + args = make_setuptools_shim_args( + setup_py_path, global_options=global_options, unbuffered_output=True + ) + args += ["clean", "--all"] + return args + + +def make_setuptools_develop_args( + setup_py_path: str, + *, + global_options: Sequence[str], + no_user_config: bool, + prefix: Optional[str], + home: Optional[str], + use_user_site: bool, +) -> List[str]: + assert not (use_user_site and prefix) + + args = make_setuptools_shim_args( + setup_py_path, + global_options=global_options, + no_user_config=no_user_config, + ) + + args += ["develop", "--no-deps"] + + if prefix: + args += ["--prefix", prefix] + if home is not None: + args += ["--install-dir", home] + + if use_user_site: + args += ["--user", "--prefix="] + + return args + + +def make_setuptools_egg_info_args( + setup_py_path: str, + egg_info_dir: Optional[str], + no_user_config: bool, +) -> List[str]: + args = make_setuptools_shim_args(setup_py_path, no_user_config=no_user_config) + + args += ["egg_info"] + + if egg_info_dir: + args += ["--egg-base", egg_info_dir] + + return args diff --git a/venv/Lib/site-packages/pip/_internal/utils/subprocess.py b/venv/Lib/site-packages/pip/_internal/utils/subprocess.py new file mode 100644 index 00000000000..cb2e23f007a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/subprocess.py @@ -0,0 +1,245 @@ +import logging +import os +import shlex +import subprocess +from typing import Any, Callable, Iterable, List, Literal, Mapping, Optional, Union + +from pip._vendor.rich.markup import escape + +from pip._internal.cli.spinners import SpinnerInterface, open_spinner +from pip._internal.exceptions import InstallationSubprocessError +from pip._internal.utils.logging import VERBOSE, subprocess_logger +from pip._internal.utils.misc import HiddenText + +CommandArgs = List[Union[str, HiddenText]] + + +def make_command(*args: Union[str, HiddenText, CommandArgs]) -> CommandArgs: + """ + Create a CommandArgs object. + """ + command_args: CommandArgs = [] + for arg in args: + # Check for list instead of CommandArgs since CommandArgs is + # only known during type-checking. + if isinstance(arg, list): + command_args.extend(arg) + else: + # Otherwise, arg is str or HiddenText. + command_args.append(arg) + + return command_args + + +def format_command_args(args: Union[List[str], CommandArgs]) -> str: + """ + Format command arguments for display. + """ + # For HiddenText arguments, display the redacted form by calling str(). + # Also, we don't apply str() to arguments that aren't HiddenText since + # this can trigger a UnicodeDecodeError in Python 2 if the argument + # has type unicode and includes a non-ascii character. (The type + # checker doesn't ensure the annotations are correct in all cases.) + return " ".join( + shlex.quote(str(arg)) if isinstance(arg, HiddenText) else shlex.quote(arg) + for arg in args + ) + + +def reveal_command_args(args: Union[List[str], CommandArgs]) -> List[str]: + """ + Return the arguments in their raw, unredacted form. + """ + return [arg.secret if isinstance(arg, HiddenText) else arg for arg in args] + + +def call_subprocess( + cmd: Union[List[str], CommandArgs], + show_stdout: bool = False, + cwd: Optional[str] = None, + on_returncode: 'Literal["raise", "warn", "ignore"]' = "raise", + extra_ok_returncodes: Optional[Iterable[int]] = None, + extra_environ: Optional[Mapping[str, Any]] = None, + unset_environ: Optional[Iterable[str]] = None, + spinner: Optional[SpinnerInterface] = None, + log_failed_cmd: Optional[bool] = True, + stdout_only: Optional[bool] = False, + *, + command_desc: str, +) -> str: + """ + Args: + show_stdout: if true, use INFO to log the subprocess's stderr and + stdout streams. Otherwise, use DEBUG. Defaults to False. + extra_ok_returncodes: an iterable of integer return codes that are + acceptable, in addition to 0. Defaults to None, which means []. + unset_environ: an iterable of environment variable names to unset + prior to calling subprocess.Popen(). + log_failed_cmd: if false, failed commands are not logged, only raised. + stdout_only: if true, return only stdout, else return both. When true, + logging of both stdout and stderr occurs when the subprocess has + terminated, else logging occurs as subprocess output is produced. + """ + if extra_ok_returncodes is None: + extra_ok_returncodes = [] + if unset_environ is None: + unset_environ = [] + # Most places in pip use show_stdout=False. What this means is-- + # + # - We connect the child's output (combined stderr and stdout) to a + # single pipe, which we read. + # - We log this output to stderr at DEBUG level as it is received. + # - If DEBUG logging isn't enabled (e.g. if --verbose logging wasn't + # requested), then we show a spinner so the user can still see the + # subprocess is in progress. + # - If the subprocess exits with an error, we log the output to stderr + # at ERROR level if it hasn't already been displayed to the console + # (e.g. if --verbose logging wasn't enabled). This way we don't log + # the output to the console twice. + # + # If show_stdout=True, then the above is still done, but with DEBUG + # replaced by INFO. + if show_stdout: + # Then log the subprocess output at INFO level. + log_subprocess: Callable[..., None] = subprocess_logger.info + used_level = logging.INFO + else: + # Then log the subprocess output using VERBOSE. This also ensures + # it will be logged to the log file (aka user_log), if enabled. + log_subprocess = subprocess_logger.verbose + used_level = VERBOSE + + # Whether the subprocess will be visible in the console. + showing_subprocess = subprocess_logger.getEffectiveLevel() <= used_level + + # Only use the spinner if we're not showing the subprocess output + # and we have a spinner. + use_spinner = not showing_subprocess and spinner is not None + + log_subprocess("Running command %s", command_desc) + env = os.environ.copy() + if extra_environ: + env.update(extra_environ) + for name in unset_environ: + env.pop(name, None) + try: + proc = subprocess.Popen( + # Convert HiddenText objects to the underlying str. + reveal_command_args(cmd), + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT if not stdout_only else subprocess.PIPE, + cwd=cwd, + env=env, + errors="backslashreplace", + ) + except Exception as exc: + if log_failed_cmd: + subprocess_logger.critical( + "Error %s while executing command %s", + exc, + command_desc, + ) + raise + all_output = [] + if not stdout_only: + assert proc.stdout + assert proc.stdin + proc.stdin.close() + # In this mode, stdout and stderr are in the same pipe. + while True: + line: str = proc.stdout.readline() + if not line: + break + line = line.rstrip() + all_output.append(line + "\n") + + # Show the line immediately. + log_subprocess(line) + # Update the spinner. + if use_spinner: + assert spinner + spinner.spin() + try: + proc.wait() + finally: + if proc.stdout: + proc.stdout.close() + output = "".join(all_output) + else: + # In this mode, stdout and stderr are in different pipes. + # We must use communicate() which is the only safe way to read both. + out, err = proc.communicate() + # log line by line to preserve pip log indenting + for out_line in out.splitlines(): + log_subprocess(out_line) + all_output.append(out) + for err_line in err.splitlines(): + log_subprocess(err_line) + all_output.append(err) + output = out + + proc_had_error = proc.returncode and proc.returncode not in extra_ok_returncodes + if use_spinner: + assert spinner + if proc_had_error: + spinner.finish("error") + else: + spinner.finish("done") + if proc_had_error: + if on_returncode == "raise": + error = InstallationSubprocessError( + command_description=command_desc, + exit_code=proc.returncode, + output_lines=all_output if not showing_subprocess else None, + ) + if log_failed_cmd: + subprocess_logger.error("%s", error, extra={"rich": True}) + subprocess_logger.verbose( + "[bold magenta]full command[/]: [blue]%s[/]", + escape(format_command_args(cmd)), + extra={"markup": True}, + ) + subprocess_logger.verbose( + "[bold magenta]cwd[/]: %s", + escape(cwd or "[inherit]"), + extra={"markup": True}, + ) + + raise error + elif on_returncode == "warn": + subprocess_logger.warning( + 'Command "%s" had error code %s in %s', + command_desc, + proc.returncode, + cwd, + ) + elif on_returncode == "ignore": + pass + else: + raise ValueError(f"Invalid value: on_returncode={on_returncode!r}") + return output + + +def runner_with_spinner_message(message: str) -> Callable[..., None]: + """Provide a subprocess_runner that shows a spinner message. + + Intended for use with for BuildBackendHookCaller. Thus, the runner has + an API that matches what's expected by BuildBackendHookCaller.subprocess_runner. + """ + + def runner( + cmd: List[str], + cwd: Optional[str] = None, + extra_environ: Optional[Mapping[str, Any]] = None, + ) -> None: + with open_spinner(message) as spinner: + call_subprocess( + cmd, + command_desc=message, + cwd=cwd, + extra_environ=extra_environ, + spinner=spinner, + ) + + return runner diff --git a/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py b/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py new file mode 100644 index 00000000000..06668e8ab2d --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py @@ -0,0 +1,296 @@ +import errno +import itertools +import logging +import os.path +import tempfile +import traceback +from contextlib import ExitStack, contextmanager +from pathlib import Path +from typing import ( + Any, + Callable, + Dict, + Generator, + List, + Optional, + TypeVar, + Union, +) + +from pip._internal.utils.misc import enum, rmtree + +logger = logging.getLogger(__name__) + +_T = TypeVar("_T", bound="TempDirectory") + + +# Kinds of temporary directories. Only needed for ones that are +# globally-managed. +tempdir_kinds = enum( + BUILD_ENV="build-env", + EPHEM_WHEEL_CACHE="ephem-wheel-cache", + REQ_BUILD="req-build", +) + + +_tempdir_manager: Optional[ExitStack] = None + + +@contextmanager +def global_tempdir_manager() -> Generator[None, None, None]: + global _tempdir_manager + with ExitStack() as stack: + old_tempdir_manager, _tempdir_manager = _tempdir_manager, stack + try: + yield + finally: + _tempdir_manager = old_tempdir_manager + + +class TempDirectoryTypeRegistry: + """Manages temp directory behavior""" + + def __init__(self) -> None: + self._should_delete: Dict[str, bool] = {} + + def set_delete(self, kind: str, value: bool) -> None: + """Indicate whether a TempDirectory of the given kind should be + auto-deleted. + """ + self._should_delete[kind] = value + + def get_delete(self, kind: str) -> bool: + """Get configured auto-delete flag for a given TempDirectory type, + default True. + """ + return self._should_delete.get(kind, True) + + +_tempdir_registry: Optional[TempDirectoryTypeRegistry] = None + + +@contextmanager +def tempdir_registry() -> Generator[TempDirectoryTypeRegistry, None, None]: + """Provides a scoped global tempdir registry that can be used to dictate + whether directories should be deleted. + """ + global _tempdir_registry + old_tempdir_registry = _tempdir_registry + _tempdir_registry = TempDirectoryTypeRegistry() + try: + yield _tempdir_registry + finally: + _tempdir_registry = old_tempdir_registry + + +class _Default: + pass + + +_default = _Default() + + +class TempDirectory: + """Helper class that owns and cleans up a temporary directory. + + This class can be used as a context manager or as an OO representation of a + temporary directory. + + Attributes: + path + Location to the created temporary directory + delete + Whether the directory should be deleted when exiting + (when used as a contextmanager) + + Methods: + cleanup() + Deletes the temporary directory + + When used as a context manager, if the delete attribute is True, on + exiting the context the temporary directory is deleted. + """ + + def __init__( + self, + path: Optional[str] = None, + delete: Union[bool, None, _Default] = _default, + kind: str = "temp", + globally_managed: bool = False, + ignore_cleanup_errors: bool = True, + ): + super().__init__() + + if delete is _default: + if path is not None: + # If we were given an explicit directory, resolve delete option + # now. + delete = False + else: + # Otherwise, we wait until cleanup and see what + # tempdir_registry says. + delete = None + + # The only time we specify path is in for editables where it + # is the value of the --src option. + if path is None: + path = self._create(kind) + + self._path = path + self._deleted = False + self.delete = delete + self.kind = kind + self.ignore_cleanup_errors = ignore_cleanup_errors + + if globally_managed: + assert _tempdir_manager is not None + _tempdir_manager.enter_context(self) + + @property + def path(self) -> str: + assert not self._deleted, f"Attempted to access deleted path: {self._path}" + return self._path + + def __repr__(self) -> str: + return f"<{self.__class__.__name__} {self.path!r}>" + + def __enter__(self: _T) -> _T: + return self + + def __exit__(self, exc: Any, value: Any, tb: Any) -> None: + if self.delete is not None: + delete = self.delete + elif _tempdir_registry: + delete = _tempdir_registry.get_delete(self.kind) + else: + delete = True + + if delete: + self.cleanup() + + def _create(self, kind: str) -> str: + """Create a temporary directory and store its path in self.path""" + # We realpath here because some systems have their default tmpdir + # symlinked to another directory. This tends to confuse build + # scripts, so we canonicalize the path by traversing potential + # symlinks here. + path = os.path.realpath(tempfile.mkdtemp(prefix=f"pip-{kind}-")) + logger.debug("Created temporary directory: %s", path) + return path + + def cleanup(self) -> None: + """Remove the temporary directory created and reset state""" + self._deleted = True + if not os.path.exists(self._path): + return + + errors: List[BaseException] = [] + + def onerror( + func: Callable[..., Any], + path: Path, + exc_val: BaseException, + ) -> None: + """Log a warning for a `rmtree` error and continue""" + formatted_exc = "\n".join( + traceback.format_exception_only(type(exc_val), exc_val) + ) + formatted_exc = formatted_exc.rstrip() # remove trailing new line + if func in (os.unlink, os.remove, os.rmdir): + logger.debug( + "Failed to remove a temporary file '%s' due to %s.\n", + path, + formatted_exc, + ) + else: + logger.debug("%s failed with %s.", func.__qualname__, formatted_exc) + errors.append(exc_val) + + if self.ignore_cleanup_errors: + try: + # first try with @retry; retrying to handle ephemeral errors + rmtree(self._path, ignore_errors=False) + except OSError: + # last pass ignore/log all errors + rmtree(self._path, onexc=onerror) + if errors: + logger.warning( + "Failed to remove contents in a temporary directory '%s'.\n" + "You can safely remove it manually.", + self._path, + ) + else: + rmtree(self._path) + + +class AdjacentTempDirectory(TempDirectory): + """Helper class that creates a temporary directory adjacent to a real one. + + Attributes: + original + The original directory to create a temp directory for. + path + After calling create() or entering, contains the full + path to the temporary directory. + delete + Whether the directory should be deleted when exiting + (when used as a contextmanager) + + """ + + # The characters that may be used to name the temp directory + # We always prepend a ~ and then rotate through these until + # a usable name is found. + # pkg_resources raises a different error for .dist-info folder + # with leading '-' and invalid metadata + LEADING_CHARS = "-~.=%0123456789" + + def __init__(self, original: str, delete: Optional[bool] = None) -> None: + self.original = original.rstrip("/\\") + super().__init__(delete=delete) + + @classmethod + def _generate_names(cls, name: str) -> Generator[str, None, None]: + """Generates a series of temporary names. + + The algorithm replaces the leading characters in the name + with ones that are valid filesystem characters, but are not + valid package names (for both Python and pip definitions of + package). + """ + for i in range(1, len(name)): + for candidate in itertools.combinations_with_replacement( + cls.LEADING_CHARS, i - 1 + ): + new_name = "~" + "".join(candidate) + name[i:] + if new_name != name: + yield new_name + + # If we make it this far, we will have to make a longer name + for i in range(len(cls.LEADING_CHARS)): + for candidate in itertools.combinations_with_replacement( + cls.LEADING_CHARS, i + ): + new_name = "~" + "".join(candidate) + name + if new_name != name: + yield new_name + + def _create(self, kind: str) -> str: + root, name = os.path.split(self.original) + for candidate in self._generate_names(name): + path = os.path.join(root, candidate) + try: + os.mkdir(path) + except OSError as ex: + # Continue if the name exists already + if ex.errno != errno.EEXIST: + raise + else: + path = os.path.realpath(path) + break + else: + # Final fallback on the default behavior. + path = os.path.realpath(tempfile.mkdtemp(prefix=f"pip-{kind}-")) + + logger.debug("Created temporary directory: %s", path) + return path diff --git a/venv/Lib/site-packages/pip/_internal/utils/unpacking.py b/venv/Lib/site-packages/pip/_internal/utils/unpacking.py new file mode 100644 index 00000000000..875e30e13ab --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/unpacking.py @@ -0,0 +1,337 @@ +"""Utilities related archives. +""" + +import logging +import os +import shutil +import stat +import sys +import tarfile +import zipfile +from typing import Iterable, List, Optional +from zipfile import ZipInfo + +from pip._internal.exceptions import InstallationError +from pip._internal.utils.filetypes import ( + BZ2_EXTENSIONS, + TAR_EXTENSIONS, + XZ_EXTENSIONS, + ZIP_EXTENSIONS, +) +from pip._internal.utils.misc import ensure_dir + +logger = logging.getLogger(__name__) + + +SUPPORTED_EXTENSIONS = ZIP_EXTENSIONS + TAR_EXTENSIONS + +try: + import bz2 # noqa + + SUPPORTED_EXTENSIONS += BZ2_EXTENSIONS +except ImportError: + logger.debug("bz2 module is not available") + +try: + # Only for Python 3.3+ + import lzma # noqa + + SUPPORTED_EXTENSIONS += XZ_EXTENSIONS +except ImportError: + logger.debug("lzma module is not available") + + +def current_umask() -> int: + """Get the current umask which involves having to set it temporarily.""" + mask = os.umask(0) + os.umask(mask) + return mask + + +def split_leading_dir(path: str) -> List[str]: + path = path.lstrip("/").lstrip("\\") + if "/" in path and ( + ("\\" in path and path.find("/") < path.find("\\")) or "\\" not in path + ): + return path.split("/", 1) + elif "\\" in path: + return path.split("\\", 1) + else: + return [path, ""] + + +def has_leading_dir(paths: Iterable[str]) -> bool: + """Returns true if all the paths have the same leading path name + (i.e., everything is in one subdirectory in an archive)""" + common_prefix = None + for path in paths: + prefix, rest = split_leading_dir(path) + if not prefix: + return False + elif common_prefix is None: + common_prefix = prefix + elif prefix != common_prefix: + return False + return True + + +def is_within_directory(directory: str, target: str) -> bool: + """ + Return true if the absolute path of target is within the directory + """ + abs_directory = os.path.abspath(directory) + abs_target = os.path.abspath(target) + + prefix = os.path.commonprefix([abs_directory, abs_target]) + return prefix == abs_directory + + +def _get_default_mode_plus_executable() -> int: + return 0o777 & ~current_umask() | 0o111 + + +def set_extracted_file_to_default_mode_plus_executable(path: str) -> None: + """ + Make file present at path have execute for user/group/world + (chmod +x) is no-op on windows per python docs + """ + os.chmod(path, _get_default_mode_plus_executable()) + + +def zip_item_is_executable(info: ZipInfo) -> bool: + mode = info.external_attr >> 16 + # if mode and regular file and any execute permissions for + # user/group/world? + return bool(mode and stat.S_ISREG(mode) and mode & 0o111) + + +def unzip_file(filename: str, location: str, flatten: bool = True) -> None: + """ + Unzip the file (with path `filename`) to the destination `location`. All + files are written based on system defaults and umask (i.e. permissions are + not preserved), except that regular file members with any execute + permissions (user, group, or world) have "chmod +x" applied after being + written. Note that for windows, any execute changes using os.chmod are + no-ops per the python docs. + """ + ensure_dir(location) + zipfp = open(filename, "rb") + try: + zip = zipfile.ZipFile(zipfp, allowZip64=True) + leading = has_leading_dir(zip.namelist()) and flatten + for info in zip.infolist(): + name = info.filename + fn = name + if leading: + fn = split_leading_dir(name)[1] + fn = os.path.join(location, fn) + dir = os.path.dirname(fn) + if not is_within_directory(location, fn): + message = ( + "The zip file ({}) has a file ({}) trying to install " + "outside target directory ({})" + ) + raise InstallationError(message.format(filename, fn, location)) + if fn.endswith("/") or fn.endswith("\\"): + # A directory + ensure_dir(fn) + else: + ensure_dir(dir) + # Don't use read() to avoid allocating an arbitrarily large + # chunk of memory for the file's content + fp = zip.open(name) + try: + with open(fn, "wb") as destfp: + shutil.copyfileobj(fp, destfp) + finally: + fp.close() + if zip_item_is_executable(info): + set_extracted_file_to_default_mode_plus_executable(fn) + finally: + zipfp.close() + + +def untar_file(filename: str, location: str) -> None: + """ + Untar the file (with path `filename`) to the destination `location`. + All files are written based on system defaults and umask (i.e. permissions + are not preserved), except that regular file members with any execute + permissions (user, group, or world) have "chmod +x" applied on top of the + default. Note that for windows, any execute changes using os.chmod are + no-ops per the python docs. + """ + ensure_dir(location) + if filename.lower().endswith(".gz") or filename.lower().endswith(".tgz"): + mode = "r:gz" + elif filename.lower().endswith(BZ2_EXTENSIONS): + mode = "r:bz2" + elif filename.lower().endswith(XZ_EXTENSIONS): + mode = "r:xz" + elif filename.lower().endswith(".tar"): + mode = "r" + else: + logger.warning( + "Cannot determine compression type for file %s", + filename, + ) + mode = "r:*" + + tar = tarfile.open(filename, mode, encoding="utf-8") + try: + leading = has_leading_dir([member.name for member in tar.getmembers()]) + + # PEP 706 added `tarfile.data_filter`, and made some other changes to + # Python's tarfile module (see below). The features were backported to + # security releases. + try: + data_filter = tarfile.data_filter + except AttributeError: + _untar_without_filter(filename, location, tar, leading) + else: + default_mode_plus_executable = _get_default_mode_plus_executable() + + if leading: + # Strip the leading directory from all files in the archive, + # including hardlink targets (which are relative to the + # unpack location). + for member in tar.getmembers(): + name_lead, name_rest = split_leading_dir(member.name) + member.name = name_rest + if member.islnk(): + lnk_lead, lnk_rest = split_leading_dir(member.linkname) + if lnk_lead == name_lead: + member.linkname = lnk_rest + + def pip_filter(member: tarfile.TarInfo, path: str) -> tarfile.TarInfo: + orig_mode = member.mode + try: + try: + member = data_filter(member, location) + except tarfile.LinkOutsideDestinationError: + if sys.version_info[:3] in { + (3, 8, 17), + (3, 9, 17), + (3, 10, 12), + (3, 11, 4), + }: + # The tarfile filter in specific Python versions + # raises LinkOutsideDestinationError on valid input + # (https://github.com/python/cpython/issues/107845) + # Ignore the error there, but do use the + # more lax `tar_filter` + member = tarfile.tar_filter(member, location) + else: + raise + except tarfile.TarError as exc: + message = "Invalid member in the tar file {}: {}" + # Filter error messages mention the member name. + # No need to add it here. + raise InstallationError( + message.format( + filename, + exc, + ) + ) + if member.isfile() and orig_mode & 0o111: + member.mode = default_mode_plus_executable + else: + # See PEP 706 note above. + # The PEP changed this from `int` to `Optional[int]`, + # where None means "use the default". Mypy doesn't + # know this yet. + member.mode = None # type: ignore [assignment] + return member + + tar.extractall(location, filter=pip_filter) + + finally: + tar.close() + + +def _untar_without_filter( + filename: str, + location: str, + tar: tarfile.TarFile, + leading: bool, +) -> None: + """Fallback for Python without tarfile.data_filter""" + for member in tar.getmembers(): + fn = member.name + if leading: + fn = split_leading_dir(fn)[1] + path = os.path.join(location, fn) + if not is_within_directory(location, path): + message = ( + "The tar file ({}) has a file ({}) trying to install " + "outside target directory ({})" + ) + raise InstallationError(message.format(filename, path, location)) + if member.isdir(): + ensure_dir(path) + elif member.issym(): + try: + tar._extract_member(member, path) + except Exception as exc: + # Some corrupt tar files seem to produce this + # (specifically bad symlinks) + logger.warning( + "In the tar file %s the member %s is invalid: %s", + filename, + member.name, + exc, + ) + continue + else: + try: + fp = tar.extractfile(member) + except (KeyError, AttributeError) as exc: + # Some corrupt tar files seem to produce this + # (specifically bad symlinks) + logger.warning( + "In the tar file %s the member %s is invalid: %s", + filename, + member.name, + exc, + ) + continue + ensure_dir(os.path.dirname(path)) + assert fp is not None + with open(path, "wb") as destfp: + shutil.copyfileobj(fp, destfp) + fp.close() + # Update the timestamp (useful for cython compiled files) + tar.utime(member, path) + # member have any execute permissions for user/group/world? + if member.mode & 0o111: + set_extracted_file_to_default_mode_plus_executable(path) + + +def unpack_file( + filename: str, + location: str, + content_type: Optional[str] = None, +) -> None: + filename = os.path.realpath(filename) + if ( + content_type == "application/zip" + or filename.lower().endswith(ZIP_EXTENSIONS) + or zipfile.is_zipfile(filename) + ): + unzip_file(filename, location, flatten=not filename.endswith(".whl")) + elif ( + content_type == "application/x-gzip" + or tarfile.is_tarfile(filename) + or filename.lower().endswith(TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS) + ): + untar_file(filename, location) + else: + # FIXME: handle? + # FIXME: magic signatures? + logger.critical( + "Cannot unpack file %s (downloaded from %s, content-type: %s); " + "cannot detect archive format", + filename, + location, + content_type, + ) + raise InstallationError(f"Cannot determine archive format of {location}") diff --git a/venv/Lib/site-packages/pip/_internal/utils/urls.py b/venv/Lib/site-packages/pip/_internal/utils/urls.py new file mode 100644 index 00000000000..9f34f882a1a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/urls.py @@ -0,0 +1,55 @@ +import os +import string +import urllib.parse +import urllib.request + +from .compat import WINDOWS + + +def path_to_url(path: str) -> str: + """ + Convert a path to a file: URL. The path will be made absolute and have + quoted path parts. + """ + path = os.path.normpath(os.path.abspath(path)) + url = urllib.parse.urljoin("file:", urllib.request.pathname2url(path)) + return url + + +def url_to_path(url: str) -> str: + """ + Convert a file: URL to a path. + """ + assert url.startswith( + "file:" + ), f"You can only turn file: urls into filenames (not {url!r})" + + _, netloc, path, _, _ = urllib.parse.urlsplit(url) + + if not netloc or netloc == "localhost": + # According to RFC 8089, same as empty authority. + netloc = "" + elif WINDOWS: + # If we have a UNC path, prepend UNC share notation. + netloc = "\\\\" + netloc + else: + raise ValueError( + f"non-local file URIs are not supported on this platform: {url!r}" + ) + + path = urllib.request.url2pathname(netloc + path) + + # On Windows, urlsplit parses the path as something like "/C:/Users/foo". + # This creates issues for path-related functions like io.open(), so we try + # to detect and strip the leading slash. + if ( + WINDOWS + and not netloc # Not UNC. + and len(path) >= 3 + and path[0] == "/" # Leading slash to strip. + and path[1] in string.ascii_letters # Drive letter. + and path[2:4] in (":", ":/") # Colon + end of string, or colon + absolute path. + ): + path = path[1:] + + return path diff --git a/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py b/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py new file mode 100644 index 00000000000..882e36f5c1d --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py @@ -0,0 +1,104 @@ +import logging +import os +import re +import site +import sys +from typing import List, Optional + +logger = logging.getLogger(__name__) +_INCLUDE_SYSTEM_SITE_PACKAGES_REGEX = re.compile( + r"include-system-site-packages\s*=\s*(?Ptrue|false)" +) + + +def _running_under_venv() -> bool: + """Checks if sys.base_prefix and sys.prefix match. + + This handles PEP 405 compliant virtual environments. + """ + return sys.prefix != getattr(sys, "base_prefix", sys.prefix) + + +def _running_under_legacy_virtualenv() -> bool: + """Checks if sys.real_prefix is set. + + This handles virtual environments created with pypa's virtualenv. + """ + # pypa/virtualenv case + return hasattr(sys, "real_prefix") + + +def running_under_virtualenv() -> bool: + """True if we're running inside a virtual environment, False otherwise.""" + return _running_under_venv() or _running_under_legacy_virtualenv() + + +def _get_pyvenv_cfg_lines() -> Optional[List[str]]: + """Reads {sys.prefix}/pyvenv.cfg and returns its contents as list of lines + + Returns None, if it could not read/access the file. + """ + pyvenv_cfg_file = os.path.join(sys.prefix, "pyvenv.cfg") + try: + # Although PEP 405 does not specify, the built-in venv module always + # writes with UTF-8. (pypa/pip#8717) + with open(pyvenv_cfg_file, encoding="utf-8") as f: + return f.read().splitlines() # avoids trailing newlines + except OSError: + return None + + +def _no_global_under_venv() -> bool: + """Check `{sys.prefix}/pyvenv.cfg` for system site-packages inclusion + + PEP 405 specifies that when system site-packages are not supposed to be + visible from a virtual environment, `pyvenv.cfg` must contain the following + line: + + include-system-site-packages = false + + Additionally, log a warning if accessing the file fails. + """ + cfg_lines = _get_pyvenv_cfg_lines() + if cfg_lines is None: + # We're not in a "sane" venv, so assume there is no system + # site-packages access (since that's PEP 405's default state). + logger.warning( + "Could not access 'pyvenv.cfg' despite a virtual environment " + "being active. Assuming global site-packages is not accessible " + "in this environment." + ) + return True + + for line in cfg_lines: + match = _INCLUDE_SYSTEM_SITE_PACKAGES_REGEX.match(line) + if match is not None and match.group("value") == "false": + return True + return False + + +def _no_global_under_legacy_virtualenv() -> bool: + """Check if "no-global-site-packages.txt" exists beside site.py + + This mirrors logic in pypa/virtualenv for determining whether system + site-packages are visible in the virtual environment. + """ + site_mod_dir = os.path.dirname(os.path.abspath(site.__file__)) + no_global_site_packages_file = os.path.join( + site_mod_dir, + "no-global-site-packages.txt", + ) + return os.path.exists(no_global_site_packages_file) + + +def virtualenv_no_global() -> bool: + """Returns a boolean, whether running in venv with no system site-packages.""" + # PEP 405 compliance needs to be checked first since virtualenv >=20 would + # return True for both checks, but is only able to use the PEP 405 config. + if _running_under_venv(): + return _no_global_under_venv() + + if _running_under_legacy_virtualenv(): + return _no_global_under_legacy_virtualenv() + + return False diff --git a/venv/Lib/site-packages/pip/_internal/utils/wheel.py b/venv/Lib/site-packages/pip/_internal/utils/wheel.py new file mode 100644 index 00000000000..f85aee8a3f9 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/utils/wheel.py @@ -0,0 +1,134 @@ +"""Support functions for working with wheel files. +""" + +import logging +from email.message import Message +from email.parser import Parser +from typing import Tuple +from zipfile import BadZipFile, ZipFile + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import UnsupportedWheel + +VERSION_COMPATIBLE = (1, 0) + + +logger = logging.getLogger(__name__) + + +def parse_wheel(wheel_zip: ZipFile, name: str) -> Tuple[str, Message]: + """Extract information from the provided wheel, ensuring it meets basic + standards. + + Returns the name of the .dist-info directory and the parsed WHEEL metadata. + """ + try: + info_dir = wheel_dist_info_dir(wheel_zip, name) + metadata = wheel_metadata(wheel_zip, info_dir) + version = wheel_version(metadata) + except UnsupportedWheel as e: + raise UnsupportedWheel(f"{name} has an invalid wheel, {e}") + + check_compatibility(version, name) + + return info_dir, metadata + + +def wheel_dist_info_dir(source: ZipFile, name: str) -> str: + """Returns the name of the contained .dist-info directory. + + Raises AssertionError or UnsupportedWheel if not found, >1 found, or + it doesn't match the provided name. + """ + # Zip file path separators must be / + subdirs = {p.split("/", 1)[0] for p in source.namelist()} + + info_dirs = [s for s in subdirs if s.endswith(".dist-info")] + + if not info_dirs: + raise UnsupportedWheel(".dist-info directory not found") + + if len(info_dirs) > 1: + raise UnsupportedWheel( + "multiple .dist-info directories found: {}".format(", ".join(info_dirs)) + ) + + info_dir = info_dirs[0] + + info_dir_name = canonicalize_name(info_dir) + canonical_name = canonicalize_name(name) + if not info_dir_name.startswith(canonical_name): + raise UnsupportedWheel( + f".dist-info directory {info_dir!r} does not start with {canonical_name!r}" + ) + + return info_dir + + +def read_wheel_metadata_file(source: ZipFile, path: str) -> bytes: + try: + return source.read(path) + # BadZipFile for general corruption, KeyError for missing entry, + # and RuntimeError for password-protected files + except (BadZipFile, KeyError, RuntimeError) as e: + raise UnsupportedWheel(f"could not read {path!r} file: {e!r}") + + +def wheel_metadata(source: ZipFile, dist_info_dir: str) -> Message: + """Return the WHEEL metadata of an extracted wheel, if possible. + Otherwise, raise UnsupportedWheel. + """ + path = f"{dist_info_dir}/WHEEL" + # Zip file path separators must be / + wheel_contents = read_wheel_metadata_file(source, path) + + try: + wheel_text = wheel_contents.decode() + except UnicodeDecodeError as e: + raise UnsupportedWheel(f"error decoding {path!r}: {e!r}") + + # FeedParser (used by Parser) does not raise any exceptions. The returned + # message may have .defects populated, but for backwards-compatibility we + # currently ignore them. + return Parser().parsestr(wheel_text) + + +def wheel_version(wheel_data: Message) -> Tuple[int, ...]: + """Given WHEEL metadata, return the parsed Wheel-Version. + Otherwise, raise UnsupportedWheel. + """ + version_text = wheel_data["Wheel-Version"] + if version_text is None: + raise UnsupportedWheel("WHEEL is missing Wheel-Version") + + version = version_text.strip() + + try: + return tuple(map(int, version.split("."))) + except ValueError: + raise UnsupportedWheel(f"invalid Wheel-Version: {version!r}") + + +def check_compatibility(version: Tuple[int, ...], name: str) -> None: + """Raises errors or warns if called with an incompatible Wheel-Version. + + pip should refuse to install a Wheel-Version that's a major series + ahead of what it's compatible with (e.g 2.0 > 1.1); and warn when + installing a version only minor version ahead (e.g 1.2 > 1.1). + + version: a 2-tuple representing a Wheel-Version (Major, Minor) + name: name of wheel or package to raise exception about + + :raises UnsupportedWheel: when an incompatible Wheel-Version is given + """ + if version[0] > VERSION_COMPATIBLE[0]: + raise UnsupportedWheel( + "{}'s Wheel-Version ({}) is not compatible with this version " + "of pip".format(name, ".".join(map(str, version))) + ) + elif version > VERSION_COMPATIBLE: + logger.warning( + "Installing from a newer Wheel-Version (%s)", + ".".join(map(str, version)), + ) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/__init__.py b/venv/Lib/site-packages/pip/_internal/vcs/__init__.py new file mode 100644 index 00000000000..b6beddbe6d2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/__init__.py @@ -0,0 +1,15 @@ +# Expose a limited set of classes and functions so callers outside of +# the vcs package don't need to import deeper than `pip._internal.vcs`. +# (The test directory may still need to import from a vcs sub-package.) +# Import all vcs modules to register each VCS in the VcsSupport object. +import pip._internal.vcs.bazaar +import pip._internal.vcs.git +import pip._internal.vcs.mercurial +import pip._internal.vcs.subversion # noqa: F401 +from pip._internal.vcs.versioncontrol import ( # noqa: F401 + RemoteNotFoundError, + RemoteNotValidError, + is_url, + make_vcs_requirement_url, + vcs, +) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py b/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py new file mode 100644 index 00000000000..c754b7cc5c0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py @@ -0,0 +1,112 @@ +import logging +from typing import List, Optional, Tuple + +from pip._internal.utils.misc import HiddenText, display_path +from pip._internal.utils.subprocess import make_command +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs.versioncontrol import ( + AuthInfo, + RemoteNotFoundError, + RevOptions, + VersionControl, + vcs, +) + +logger = logging.getLogger(__name__) + + +class Bazaar(VersionControl): + name = "bzr" + dirname = ".bzr" + repo_name = "branch" + schemes = ( + "bzr+http", + "bzr+https", + "bzr+ssh", + "bzr+sftp", + "bzr+ftp", + "bzr+lp", + "bzr+file", + ) + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return ["-r", rev] + + def fetch_new( + self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int + ) -> None: + rev_display = rev_options.to_display() + logger.info( + "Checking out %s%s to %s", + url, + rev_display, + display_path(dest), + ) + if verbosity <= 0: + flags = ["--quiet"] + elif verbosity == 1: + flags = [] + else: + flags = [f"-{'v'*verbosity}"] + cmd_args = make_command( + "checkout", "--lightweight", *flags, rev_options.to_args(), url, dest + ) + self.run_command(cmd_args) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + self.run_command(make_command("switch", url), cwd=dest) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + output = self.run_command( + make_command("info"), show_stdout=False, stdout_only=True, cwd=dest + ) + if output.startswith("Standalone "): + # Older versions of pip used to create standalone branches. + # Convert the standalone branch to a checkout by calling "bzr bind". + cmd_args = make_command("bind", "-q", url) + self.run_command(cmd_args, cwd=dest) + + cmd_args = make_command("update", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + # hotfix the URL scheme after removing bzr+ from bzr+ssh:// re-add it + url, rev, user_pass = super().get_url_rev_and_auth(url) + if url.startswith("ssh://"): + url = "bzr+" + url + return url, rev, user_pass + + @classmethod + def get_remote_url(cls, location: str) -> str: + urls = cls.run_command( + ["info"], show_stdout=False, stdout_only=True, cwd=location + ) + for line in urls.splitlines(): + line = line.strip() + for x in ("checkout of branch: ", "parent branch: "): + if line.startswith(x): + repo = line.split(x)[1] + if cls._is_local_repository(repo): + return path_to_url(repo) + return repo + raise RemoteNotFoundError + + @classmethod + def get_revision(cls, location: str) -> str: + revision = cls.run_command( + ["revno"], + show_stdout=False, + stdout_only=True, + cwd=location, + ) + return revision.splitlines()[-1] + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """Always assume the versions don't match""" + return False + + +vcs.register(Bazaar) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/git.py b/venv/Lib/site-packages/pip/_internal/vcs/git.py new file mode 100644 index 00000000000..0425debb3ae --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/git.py @@ -0,0 +1,527 @@ +import logging +import os.path +import pathlib +import re +import urllib.parse +import urllib.request +from dataclasses import replace +from typing import List, Optional, Tuple + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.utils.misc import HiddenText, display_path, hide_url +from pip._internal.utils.subprocess import make_command +from pip._internal.vcs.versioncontrol import ( + AuthInfo, + RemoteNotFoundError, + RemoteNotValidError, + RevOptions, + VersionControl, + find_path_to_project_root_from_repo_root, + vcs, +) + +urlsplit = urllib.parse.urlsplit +urlunsplit = urllib.parse.urlunsplit + + +logger = logging.getLogger(__name__) + + +GIT_VERSION_REGEX = re.compile( + r"^git version " # Prefix. + r"(\d+)" # Major. + r"\.(\d+)" # Dot, minor. + r"(?:\.(\d+))?" # Optional dot, patch. + r".*$" # Suffix, including any pre- and post-release segments we don't care about. +) + +HASH_REGEX = re.compile("^[a-fA-F0-9]{40}$") + +# SCP (Secure copy protocol) shorthand. e.g. 'git@example.com:foo/bar.git' +SCP_REGEX = re.compile( + r"""^ + # Optional user, e.g. 'git@' + (\w+@)? + # Server, e.g. 'github.com'. + ([^/:]+): + # The server-side path. e.g. 'user/project.git'. Must start with an + # alphanumeric character so as not to be confusable with a Windows paths + # like 'C:/foo/bar' or 'C:\foo\bar'. + (\w[^:]*) + $""", + re.VERBOSE, +) + + +def looks_like_hash(sha: str) -> bool: + return bool(HASH_REGEX.match(sha)) + + +class Git(VersionControl): + name = "git" + dirname = ".git" + repo_name = "clone" + schemes = ( + "git+http", + "git+https", + "git+ssh", + "git+git", + "git+file", + ) + # Prevent the user's environment variables from interfering with pip: + # https://github.com/pypa/pip/issues/1130 + unset_environ = ("GIT_DIR", "GIT_WORK_TREE") + default_arg_rev = "HEAD" + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return [rev] + + def is_immutable_rev_checkout(self, url: str, dest: str) -> bool: + _, rev_options = self.get_url_rev_options(hide_url(url)) + if not rev_options.rev: + return False + if not self.is_commit_id_equal(dest, rev_options.rev): + # the current commit is different from rev, + # which means rev was something else than a commit hash + return False + # return False in the rare case rev is both a commit hash + # and a tag or a branch; we don't want to cache in that case + # because that branch/tag could point to something else in the future + is_tag_or_branch = bool(self.get_revision_sha(dest, rev_options.rev)[0]) + return not is_tag_or_branch + + def get_git_version(self) -> Tuple[int, ...]: + version = self.run_command( + ["version"], + command_desc="git version", + show_stdout=False, + stdout_only=True, + ) + match = GIT_VERSION_REGEX.match(version) + if not match: + logger.warning("Can't parse git version: %s", version) + return () + return (int(match.group(1)), int(match.group(2))) + + @classmethod + def get_current_branch(cls, location: str) -> Optional[str]: + """ + Return the current branch, or None if HEAD isn't at a branch + (e.g. detached HEAD). + """ + # git-symbolic-ref exits with empty stdout if "HEAD" is a detached + # HEAD rather than a symbolic ref. In addition, the -q causes the + # command to exit with status code 1 instead of 128 in this case + # and to suppress the message to stderr. + args = ["symbolic-ref", "-q", "HEAD"] + output = cls.run_command( + args, + extra_ok_returncodes=(1,), + show_stdout=False, + stdout_only=True, + cwd=location, + ) + ref = output.strip() + + if ref.startswith("refs/heads/"): + return ref[len("refs/heads/") :] + + return None + + @classmethod + def get_revision_sha(cls, dest: str, rev: str) -> Tuple[Optional[str], bool]: + """ + Return (sha_or_none, is_branch), where sha_or_none is a commit hash + if the revision names a remote branch or tag, otherwise None. + + Args: + dest: the repository directory. + rev: the revision name. + """ + # Pass rev to pre-filter the list. + output = cls.run_command( + ["show-ref", rev], + cwd=dest, + show_stdout=False, + stdout_only=True, + on_returncode="ignore", + ) + refs = {} + # NOTE: We do not use splitlines here since that would split on other + # unicode separators, which can be maliciously used to install a + # different revision. + for line in output.strip().split("\n"): + line = line.rstrip("\r") + if not line: + continue + try: + ref_sha, ref_name = line.split(" ", maxsplit=2) + except ValueError: + # Include the offending line to simplify troubleshooting if + # this error ever occurs. + raise ValueError(f"unexpected show-ref line: {line!r}") + + refs[ref_name] = ref_sha + + branch_ref = f"refs/remotes/origin/{rev}" + tag_ref = f"refs/tags/{rev}" + + sha = refs.get(branch_ref) + if sha is not None: + return (sha, True) + + sha = refs.get(tag_ref) + + return (sha, False) + + @classmethod + def _should_fetch(cls, dest: str, rev: str) -> bool: + """ + Return true if rev is a ref or is a commit that we don't have locally. + + Branches and tags are not considered in this method because they are + assumed to be always available locally (which is a normal outcome of + ``git clone`` and ``git fetch --tags``). + """ + if rev.startswith("refs/"): + # Always fetch remote refs. + return True + + if not looks_like_hash(rev): + # Git fetch would fail with abbreviated commits. + return False + + if cls.has_commit(dest, rev): + # Don't fetch if we have the commit locally. + return False + + return True + + @classmethod + def resolve_revision( + cls, dest: str, url: HiddenText, rev_options: RevOptions + ) -> RevOptions: + """ + Resolve a revision to a new RevOptions object with the SHA1 of the + branch, tag, or ref if found. + + Args: + rev_options: a RevOptions object. + """ + rev = rev_options.arg_rev + # The arg_rev property's implementation for Git ensures that the + # rev return value is always non-None. + assert rev is not None + + sha, is_branch = cls.get_revision_sha(dest, rev) + + if sha is not None: + rev_options = rev_options.make_new(sha) + rev_options = replace(rev_options, branch_name=(rev if is_branch else None)) + + return rev_options + + # Do not show a warning for the common case of something that has + # the form of a Git commit hash. + if not looks_like_hash(rev): + logger.warning( + "Did not find branch or tag '%s', assuming revision or ref.", + rev, + ) + + if not cls._should_fetch(dest, rev): + return rev_options + + # fetch the requested revision + cls.run_command( + make_command("fetch", "-q", url, rev_options.to_args()), + cwd=dest, + ) + # Change the revision to the SHA of the ref we fetched + sha = cls.get_revision(dest, rev="FETCH_HEAD") + rev_options = rev_options.make_new(sha) + + return rev_options + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """ + Return whether the current commit hash equals the given name. + + Args: + dest: the repository directory. + name: a string name. + """ + if not name: + # Then avoid an unnecessary subprocess call. + return False + + return cls.get_revision(dest) == name + + def fetch_new( + self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int + ) -> None: + rev_display = rev_options.to_display() + logger.info("Cloning %s%s to %s", url, rev_display, display_path(dest)) + if verbosity <= 0: + flags: Tuple[str, ...] = ("--quiet",) + elif verbosity == 1: + flags = () + else: + flags = ("--verbose", "--progress") + if self.get_git_version() >= (2, 17): + # Git added support for partial clone in 2.17 + # https://git-scm.com/docs/partial-clone + # Speeds up cloning by functioning without a complete copy of repository + self.run_command( + make_command( + "clone", + "--filter=blob:none", + *flags, + url, + dest, + ) + ) + else: + self.run_command(make_command("clone", *flags, url, dest)) + + if rev_options.rev: + # Then a specific revision was requested. + rev_options = self.resolve_revision(dest, url, rev_options) + branch_name = getattr(rev_options, "branch_name", None) + logger.debug("Rev options %s, branch_name %s", rev_options, branch_name) + if branch_name is None: + # Only do a checkout if the current commit id doesn't match + # the requested revision. + if not self.is_commit_id_equal(dest, rev_options.rev): + cmd_args = make_command( + "checkout", + "-q", + rev_options.to_args(), + ) + self.run_command(cmd_args, cwd=dest) + elif self.get_current_branch(dest) != branch_name: + # Then a specific branch was requested, and that branch + # is not yet checked out. + track_branch = f"origin/{branch_name}" + cmd_args = [ + "checkout", + "-b", + branch_name, + "--track", + track_branch, + ] + self.run_command(cmd_args, cwd=dest) + else: + sha = self.get_revision(dest) + rev_options = rev_options.make_new(sha) + + logger.info("Resolved %s to commit %s", url, rev_options.rev) + + #: repo may contain submodules + self.update_submodules(dest) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + self.run_command( + make_command("config", "remote.origin.url", url), + cwd=dest, + ) + cmd_args = make_command("checkout", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + self.update_submodules(dest) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + # First fetch changes from the default remote + if self.get_git_version() >= (1, 9): + # fetch tags in addition to everything else + self.run_command(["fetch", "-q", "--tags"], cwd=dest) + else: + self.run_command(["fetch", "-q"], cwd=dest) + # Then reset to wanted revision (maybe even origin/master) + rev_options = self.resolve_revision(dest, url, rev_options) + cmd_args = make_command("reset", "--hard", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + #: update submodules + self.update_submodules(dest) + + @classmethod + def get_remote_url(cls, location: str) -> str: + """ + Return URL of the first remote encountered. + + Raises RemoteNotFoundError if the repository does not have a remote + url configured. + """ + # We need to pass 1 for extra_ok_returncodes since the command + # exits with return code 1 if there are no matching lines. + stdout = cls.run_command( + ["config", "--get-regexp", r"remote\..*\.url"], + extra_ok_returncodes=(1,), + show_stdout=False, + stdout_only=True, + cwd=location, + ) + remotes = stdout.splitlines() + try: + found_remote = remotes[0] + except IndexError: + raise RemoteNotFoundError + + for remote in remotes: + if remote.startswith("remote.origin.url "): + found_remote = remote + break + url = found_remote.split(" ")[1] + return cls._git_remote_to_pip_url(url.strip()) + + @staticmethod + def _git_remote_to_pip_url(url: str) -> str: + """ + Convert a remote url from what git uses to what pip accepts. + + There are 3 legal forms **url** may take: + + 1. A fully qualified url: ssh://git@example.com/foo/bar.git + 2. A local project.git folder: /path/to/bare/repository.git + 3. SCP shorthand for form 1: git@example.com:foo/bar.git + + Form 1 is output as-is. Form 2 must be converted to URI and form 3 must + be converted to form 1. + + See the corresponding test test_git_remote_url_to_pip() for examples of + sample inputs/outputs. + """ + if re.match(r"\w+://", url): + # This is already valid. Pass it though as-is. + return url + if os.path.exists(url): + # A local bare remote (git clone --mirror). + # Needs a file:// prefix. + return pathlib.PurePath(url).as_uri() + scp_match = SCP_REGEX.match(url) + if scp_match: + # Add an ssh:// prefix and replace the ':' with a '/'. + return scp_match.expand(r"ssh://\1\2/\3") + # Otherwise, bail out. + raise RemoteNotValidError(url) + + @classmethod + def has_commit(cls, location: str, rev: str) -> bool: + """ + Check if rev is a commit that is available in the local repository. + """ + try: + cls.run_command( + ["rev-parse", "-q", "--verify", "sha^" + rev], + cwd=location, + log_failed_cmd=False, + ) + except InstallationError: + return False + else: + return True + + @classmethod + def get_revision(cls, location: str, rev: Optional[str] = None) -> str: + if rev is None: + rev = "HEAD" + current_rev = cls.run_command( + ["rev-parse", rev], + show_stdout=False, + stdout_only=True, + cwd=location, + ) + return current_rev.strip() + + @classmethod + def get_subdirectory(cls, location: str) -> Optional[str]: + """ + Return the path to Python project root, relative to the repo root. + Return None if the project root is in the repo root. + """ + # find the repo root + git_dir = cls.run_command( + ["rev-parse", "--git-dir"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + if not os.path.isabs(git_dir): + git_dir = os.path.join(location, git_dir) + repo_root = os.path.abspath(os.path.join(git_dir, "..")) + return find_path_to_project_root_from_repo_root(location, repo_root) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + """ + Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'. + That's required because although they use SSH they sometimes don't + work with a ssh:// scheme (e.g. GitHub). But we need a scheme for + parsing. Hence we remove it again afterwards and return it as a stub. + """ + # Works around an apparent Git bug + # (see https://article.gmane.org/gmane.comp.version-control.git/146500) + scheme, netloc, path, query, fragment = urlsplit(url) + if scheme.endswith("file"): + initial_slashes = path[: -len(path.lstrip("/"))] + newpath = initial_slashes + urllib.request.url2pathname(path).replace( + "\\", "/" + ).lstrip("/") + after_plus = scheme.find("+") + 1 + url = scheme[:after_plus] + urlunsplit( + (scheme[after_plus:], netloc, newpath, query, fragment), + ) + + if "://" not in url: + assert "file:" not in url + url = url.replace("git+", "git+ssh://") + url, rev, user_pass = super().get_url_rev_and_auth(url) + url = url.replace("ssh://", "") + else: + url, rev, user_pass = super().get_url_rev_and_auth(url) + + return url, rev, user_pass + + @classmethod + def update_submodules(cls, location: str) -> None: + if not os.path.exists(os.path.join(location, ".gitmodules")): + return + cls.run_command( + ["submodule", "update", "--init", "--recursive", "-q"], + cwd=location, + ) + + @classmethod + def get_repository_root(cls, location: str) -> Optional[str]: + loc = super().get_repository_root(location) + if loc: + return loc + try: + r = cls.run_command( + ["rev-parse", "--show-toplevel"], + cwd=location, + show_stdout=False, + stdout_only=True, + on_returncode="raise", + log_failed_cmd=False, + ) + except BadCommand: + logger.debug( + "could not determine if %s is under git control " + "because git is not available", + location, + ) + return None + except InstallationError: + return None + return os.path.normpath(r.rstrip("\r\n")) + + @staticmethod + def should_add_vcs_url_prefix(repo_url: str) -> bool: + """In either https or ssh form, requirements must be prefixed with git+.""" + return True + + +vcs.register(Git) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py b/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py new file mode 100644 index 00000000000..c183d41d09c --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py @@ -0,0 +1,163 @@ +import configparser +import logging +import os +from typing import List, Optional, Tuple + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.utils.misc import HiddenText, display_path +from pip._internal.utils.subprocess import make_command +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs.versioncontrol import ( + RevOptions, + VersionControl, + find_path_to_project_root_from_repo_root, + vcs, +) + +logger = logging.getLogger(__name__) + + +class Mercurial(VersionControl): + name = "hg" + dirname = ".hg" + repo_name = "clone" + schemes = ( + "hg+file", + "hg+http", + "hg+https", + "hg+ssh", + "hg+static-http", + ) + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return [f"--rev={rev}"] + + def fetch_new( + self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int + ) -> None: + rev_display = rev_options.to_display() + logger.info( + "Cloning hg %s%s to %s", + url, + rev_display, + display_path(dest), + ) + if verbosity <= 0: + flags: Tuple[str, ...] = ("--quiet",) + elif verbosity == 1: + flags = () + elif verbosity == 2: + flags = ("--verbose",) + else: + flags = ("--verbose", "--debug") + self.run_command(make_command("clone", "--noupdate", *flags, url, dest)) + self.run_command( + make_command("update", *flags, rev_options.to_args()), + cwd=dest, + ) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + repo_config = os.path.join(dest, self.dirname, "hgrc") + config = configparser.RawConfigParser() + try: + config.read(repo_config) + config.set("paths", "default", url.secret) + with open(repo_config, "w") as config_file: + config.write(config_file) + except (OSError, configparser.NoSectionError) as exc: + logger.warning("Could not switch Mercurial repository to %s: %s", url, exc) + else: + cmd_args = make_command("update", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + self.run_command(["pull", "-q"], cwd=dest) + cmd_args = make_command("update", "-q", rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + @classmethod + def get_remote_url(cls, location: str) -> str: + url = cls.run_command( + ["showconfig", "paths.default"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + if cls._is_local_repository(url): + url = path_to_url(url) + return url.strip() + + @classmethod + def get_revision(cls, location: str) -> str: + """ + Return the repository-local changeset revision number, as an integer. + """ + current_revision = cls.run_command( + ["parents", "--template={rev}"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + return current_revision + + @classmethod + def get_requirement_revision(cls, location: str) -> str: + """ + Return the changeset identification hash, as a 40-character + hexadecimal string + """ + current_rev_hash = cls.run_command( + ["parents", "--template={node}"], + show_stdout=False, + stdout_only=True, + cwd=location, + ).strip() + return current_rev_hash + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """Always assume the versions don't match""" + return False + + @classmethod + def get_subdirectory(cls, location: str) -> Optional[str]: + """ + Return the path to Python project root, relative to the repo root. + Return None if the project root is in the repo root. + """ + # find the repo root + repo_root = cls.run_command( + ["root"], show_stdout=False, stdout_only=True, cwd=location + ).strip() + if not os.path.isabs(repo_root): + repo_root = os.path.abspath(os.path.join(location, repo_root)) + return find_path_to_project_root_from_repo_root(location, repo_root) + + @classmethod + def get_repository_root(cls, location: str) -> Optional[str]: + loc = super().get_repository_root(location) + if loc: + return loc + try: + r = cls.run_command( + ["root"], + cwd=location, + show_stdout=False, + stdout_only=True, + on_returncode="raise", + log_failed_cmd=False, + ) + except BadCommand: + logger.debug( + "could not determine if %s is under hg control " + "because hg is not available", + location, + ) + return None + except InstallationError: + return None + return os.path.normpath(r.rstrip("\r\n")) + + +vcs.register(Mercurial) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/subversion.py b/venv/Lib/site-packages/pip/_internal/vcs/subversion.py new file mode 100644 index 00000000000..f359266d9c0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/subversion.py @@ -0,0 +1,324 @@ +import logging +import os +import re +from typing import List, Optional, Tuple + +from pip._internal.utils.misc import ( + HiddenText, + display_path, + is_console_interactive, + is_installable_dir, + split_auth_from_netloc, +) +from pip._internal.utils.subprocess import CommandArgs, make_command +from pip._internal.vcs.versioncontrol import ( + AuthInfo, + RemoteNotFoundError, + RevOptions, + VersionControl, + vcs, +) + +logger = logging.getLogger(__name__) + +_svn_xml_url_re = re.compile('url="([^"]+)"') +_svn_rev_re = re.compile(r'committed-rev="(\d+)"') +_svn_info_xml_rev_re = re.compile(r'\s*revision="(\d+)"') +_svn_info_xml_url_re = re.compile(r"(.*)") + + +class Subversion(VersionControl): + name = "svn" + dirname = ".svn" + repo_name = "checkout" + schemes = ("svn+ssh", "svn+http", "svn+https", "svn+svn", "svn+file") + + @classmethod + def should_add_vcs_url_prefix(cls, remote_url: str) -> bool: + return True + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + return ["-r", rev] + + @classmethod + def get_revision(cls, location: str) -> str: + """ + Return the maximum revision for all files under a given location + """ + # Note: taken from setuptools.command.egg_info + revision = 0 + + for base, dirs, _ in os.walk(location): + if cls.dirname not in dirs: + dirs[:] = [] + continue # no sense walking uncontrolled subdirs + dirs.remove(cls.dirname) + entries_fn = os.path.join(base, cls.dirname, "entries") + if not os.path.exists(entries_fn): + # FIXME: should we warn? + continue + + dirurl, localrev = cls._get_svn_url_rev(base) + + if base == location: + assert dirurl is not None + base = dirurl + "/" # save the root url + elif not dirurl or not dirurl.startswith(base): + dirs[:] = [] + continue # not part of the same svn tree, skip it + revision = max(revision, localrev) + return str(revision) + + @classmethod + def get_netloc_and_auth( + cls, netloc: str, scheme: str + ) -> Tuple[str, Tuple[Optional[str], Optional[str]]]: + """ + This override allows the auth information to be passed to svn via the + --username and --password options instead of via the URL. + """ + if scheme == "ssh": + # The --username and --password options can't be used for + # svn+ssh URLs, so keep the auth information in the URL. + return super().get_netloc_and_auth(netloc, scheme) + + return split_auth_from_netloc(netloc) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + # hotfix the URL scheme after removing svn+ from svn+ssh:// re-add it + url, rev, user_pass = super().get_url_rev_and_auth(url) + if url.startswith("ssh://"): + url = "svn+" + url + return url, rev, user_pass + + @staticmethod + def make_rev_args( + username: Optional[str], password: Optional[HiddenText] + ) -> CommandArgs: + extra_args: CommandArgs = [] + if username: + extra_args += ["--username", username] + if password: + extra_args += ["--password", password] + + return extra_args + + @classmethod + def get_remote_url(cls, location: str) -> str: + # In cases where the source is in a subdirectory, we have to look up in + # the location until we find a valid project root. + orig_location = location + while not is_installable_dir(location): + last_location = location + location = os.path.dirname(location) + if location == last_location: + # We've traversed up to the root of the filesystem without + # finding a Python project. + logger.warning( + "Could not find Python project for directory %s (tried all " + "parent directories)", + orig_location, + ) + raise RemoteNotFoundError + + url, _rev = cls._get_svn_url_rev(location) + if url is None: + raise RemoteNotFoundError + + return url + + @classmethod + def _get_svn_url_rev(cls, location: str) -> Tuple[Optional[str], int]: + from pip._internal.exceptions import InstallationError + + entries_path = os.path.join(location, cls.dirname, "entries") + if os.path.exists(entries_path): + with open(entries_path) as f: + data = f.read() + else: # subversion >= 1.7 does not have the 'entries' file + data = "" + + url = None + if data.startswith("8") or data.startswith("9") or data.startswith("10"): + entries = list(map(str.splitlines, data.split("\n\x0c\n"))) + del entries[0][0] # get rid of the '8' + url = entries[0][3] + revs = [int(d[9]) for d in entries if len(d) > 9 and d[9]] + [0] + elif data.startswith("= 1.7 + # Note that using get_remote_call_options is not necessary here + # because `svn info` is being run against a local directory. + # We don't need to worry about making sure interactive mode + # is being used to prompt for passwords, because passwords + # are only potentially needed for remote server requests. + xml = cls.run_command( + ["info", "--xml", location], + show_stdout=False, + stdout_only=True, + ) + match = _svn_info_xml_url_re.search(xml) + assert match is not None + url = match.group(1) + revs = [int(m.group(1)) for m in _svn_info_xml_rev_re.finditer(xml)] + except InstallationError: + url, revs = None, [] + + if revs: + rev = max(revs) + else: + rev = 0 + + return url, rev + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """Always assume the versions don't match""" + return False + + def __init__(self, use_interactive: Optional[bool] = None) -> None: + if use_interactive is None: + use_interactive = is_console_interactive() + self.use_interactive = use_interactive + + # This member is used to cache the fetched version of the current + # ``svn`` client. + # Special value definitions: + # None: Not evaluated yet. + # Empty tuple: Could not parse version. + self._vcs_version: Optional[Tuple[int, ...]] = None + + super().__init__() + + def call_vcs_version(self) -> Tuple[int, ...]: + """Query the version of the currently installed Subversion client. + + :return: A tuple containing the parts of the version information or + ``()`` if the version returned from ``svn`` could not be parsed. + :raises: BadCommand: If ``svn`` is not installed. + """ + # Example versions: + # svn, version 1.10.3 (r1842928) + # compiled Feb 25 2019, 14:20:39 on x86_64-apple-darwin17.0.0 + # svn, version 1.7.14 (r1542130) + # compiled Mar 28 2018, 08:49:13 on x86_64-pc-linux-gnu + # svn, version 1.12.0-SlikSvn (SlikSvn/1.12.0) + # compiled May 28 2019, 13:44:56 on x86_64-microsoft-windows6.2 + version_prefix = "svn, version " + version = self.run_command(["--version"], show_stdout=False, stdout_only=True) + if not version.startswith(version_prefix): + return () + + version = version[len(version_prefix) :].split()[0] + version_list = version.partition("-")[0].split(".") + try: + parsed_version = tuple(map(int, version_list)) + except ValueError: + return () + + return parsed_version + + def get_vcs_version(self) -> Tuple[int, ...]: + """Return the version of the currently installed Subversion client. + + If the version of the Subversion client has already been queried, + a cached value will be used. + + :return: A tuple containing the parts of the version information or + ``()`` if the version returned from ``svn`` could not be parsed. + :raises: BadCommand: If ``svn`` is not installed. + """ + if self._vcs_version is not None: + # Use cached version, if available. + # If parsing the version failed previously (empty tuple), + # do not attempt to parse it again. + return self._vcs_version + + vcs_version = self.call_vcs_version() + self._vcs_version = vcs_version + return vcs_version + + def get_remote_call_options(self) -> CommandArgs: + """Return options to be used on calls to Subversion that contact the server. + + These options are applicable for the following ``svn`` subcommands used + in this class. + + - checkout + - switch + - update + + :return: A list of command line arguments to pass to ``svn``. + """ + if not self.use_interactive: + # --non-interactive switch is available since Subversion 0.14.4. + # Subversion < 1.8 runs in interactive mode by default. + return ["--non-interactive"] + + svn_version = self.get_vcs_version() + # By default, Subversion >= 1.8 runs in non-interactive mode if + # stdin is not a TTY. Since that is how pip invokes SVN, in + # call_subprocess(), pip must pass --force-interactive to ensure + # the user can be prompted for a password, if required. + # SVN added the --force-interactive option in SVN 1.8. Since + # e.g. RHEL/CentOS 7, which is supported until 2024, ships with + # SVN 1.7, pip should continue to support SVN 1.7. Therefore, pip + # can't safely add the option if the SVN version is < 1.8 (or unknown). + if svn_version >= (1, 8): + return ["--force-interactive"] + + return [] + + def fetch_new( + self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int + ) -> None: + rev_display = rev_options.to_display() + logger.info( + "Checking out %s%s to %s", + url, + rev_display, + display_path(dest), + ) + if verbosity <= 0: + flags = ["--quiet"] + else: + flags = [] + cmd_args = make_command( + "checkout", + *flags, + self.get_remote_call_options(), + rev_options.to_args(), + url, + dest, + ) + self.run_command(cmd_args) + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + cmd_args = make_command( + "switch", + self.get_remote_call_options(), + rev_options.to_args(), + url, + dest, + ) + self.run_command(cmd_args) + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + cmd_args = make_command( + "update", + self.get_remote_call_options(), + rev_options.to_args(), + dest, + ) + self.run_command(cmd_args) + + +vcs.register(Subversion) diff --git a/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py b/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py new file mode 100644 index 00000000000..a4133165e9a --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py @@ -0,0 +1,688 @@ +"""Handles all VCS (version control) support""" + +import logging +import os +import shutil +import sys +import urllib.parse +from dataclasses import dataclass, field +from typing import ( + Any, + Dict, + Iterable, + Iterator, + List, + Literal, + Mapping, + Optional, + Tuple, + Type, + Union, +) + +from pip._internal.cli.spinners import SpinnerInterface +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.utils.misc import ( + HiddenText, + ask_path_exists, + backup_dir, + display_path, + hide_url, + hide_value, + is_installable_dir, + rmtree, +) +from pip._internal.utils.subprocess import ( + CommandArgs, + call_subprocess, + format_command_args, + make_command, +) + +__all__ = ["vcs"] + + +logger = logging.getLogger(__name__) + +AuthInfo = Tuple[Optional[str], Optional[str]] + + +def is_url(name: str) -> bool: + """ + Return true if the name looks like a URL. + """ + scheme = urllib.parse.urlsplit(name).scheme + if not scheme: + return False + return scheme in ["http", "https", "file", "ftp"] + vcs.all_schemes + + +def make_vcs_requirement_url( + repo_url: str, rev: str, project_name: str, subdir: Optional[str] = None +) -> str: + """ + Return the URL for a VCS requirement. + + Args: + repo_url: the remote VCS url, with any needed VCS prefix (e.g. "git+"). + project_name: the (unescaped) project name. + """ + egg_project_name = project_name.replace("-", "_") + req = f"{repo_url}@{rev}#egg={egg_project_name}" + if subdir: + req += f"&subdirectory={subdir}" + + return req + + +def find_path_to_project_root_from_repo_root( + location: str, repo_root: str +) -> Optional[str]: + """ + Find the the Python project's root by searching up the filesystem from + `location`. Return the path to project root relative to `repo_root`. + Return None if the project root is `repo_root`, or cannot be found. + """ + # find project root. + orig_location = location + while not is_installable_dir(location): + last_location = location + location = os.path.dirname(location) + if location == last_location: + # We've traversed up to the root of the filesystem without + # finding a Python project. + logger.warning( + "Could not find a Python project for directory %s (tried all " + "parent directories)", + orig_location, + ) + return None + + if os.path.samefile(repo_root, location): + return None + + return os.path.relpath(location, repo_root) + + +class RemoteNotFoundError(Exception): + pass + + +class RemoteNotValidError(Exception): + def __init__(self, url: str): + super().__init__(url) + self.url = url + + +@dataclass(frozen=True) +class RevOptions: + """ + Encapsulates a VCS-specific revision to install, along with any VCS + install options. + + Args: + vc_class: a VersionControl subclass. + rev: the name of the revision to install. + extra_args: a list of extra options. + """ + + vc_class: Type["VersionControl"] + rev: Optional[str] = None + extra_args: CommandArgs = field(default_factory=list) + branch_name: Optional[str] = None + + def __repr__(self) -> str: + return f"" + + @property + def arg_rev(self) -> Optional[str]: + if self.rev is None: + return self.vc_class.default_arg_rev + + return self.rev + + def to_args(self) -> CommandArgs: + """ + Return the VCS-specific command arguments. + """ + args: CommandArgs = [] + rev = self.arg_rev + if rev is not None: + args += self.vc_class.get_base_rev_args(rev) + args += self.extra_args + + return args + + def to_display(self) -> str: + if not self.rev: + return "" + + return f" (to revision {self.rev})" + + def make_new(self, rev: str) -> "RevOptions": + """ + Make a copy of the current instance, but with a new rev. + + Args: + rev: the name of the revision for the new object. + """ + return self.vc_class.make_rev_options(rev, extra_args=self.extra_args) + + +class VcsSupport: + _registry: Dict[str, "VersionControl"] = {} + schemes = ["ssh", "git", "hg", "bzr", "sftp", "svn"] + + def __init__(self) -> None: + # Register more schemes with urlparse for various version control + # systems + urllib.parse.uses_netloc.extend(self.schemes) + super().__init__() + + def __iter__(self) -> Iterator[str]: + return self._registry.__iter__() + + @property + def backends(self) -> List["VersionControl"]: + return list(self._registry.values()) + + @property + def dirnames(self) -> List[str]: + return [backend.dirname for backend in self.backends] + + @property + def all_schemes(self) -> List[str]: + schemes: List[str] = [] + for backend in self.backends: + schemes.extend(backend.schemes) + return schemes + + def register(self, cls: Type["VersionControl"]) -> None: + if not hasattr(cls, "name"): + logger.warning("Cannot register VCS %s", cls.__name__) + return + if cls.name not in self._registry: + self._registry[cls.name] = cls() + logger.debug("Registered VCS backend: %s", cls.name) + + def unregister(self, name: str) -> None: + if name in self._registry: + del self._registry[name] + + def get_backend_for_dir(self, location: str) -> Optional["VersionControl"]: + """ + Return a VersionControl object if a repository of that type is found + at the given directory. + """ + vcs_backends = {} + for vcs_backend in self._registry.values(): + repo_path = vcs_backend.get_repository_root(location) + if not repo_path: + continue + logger.debug("Determine that %s uses VCS: %s", location, vcs_backend.name) + vcs_backends[repo_path] = vcs_backend + + if not vcs_backends: + return None + + # Choose the VCS in the inner-most directory. Since all repository + # roots found here would be either `location` or one of its + # parents, the longest path should have the most path components, + # i.e. the backend representing the inner-most repository. + inner_most_repo_path = max(vcs_backends, key=len) + return vcs_backends[inner_most_repo_path] + + def get_backend_for_scheme(self, scheme: str) -> Optional["VersionControl"]: + """ + Return a VersionControl object or None. + """ + for vcs_backend in self._registry.values(): + if scheme in vcs_backend.schemes: + return vcs_backend + return None + + def get_backend(self, name: str) -> Optional["VersionControl"]: + """ + Return a VersionControl object or None. + """ + name = name.lower() + return self._registry.get(name) + + +vcs = VcsSupport() + + +class VersionControl: + name = "" + dirname = "" + repo_name = "" + # List of supported schemes for this Version Control + schemes: Tuple[str, ...] = () + # Iterable of environment variable names to pass to call_subprocess(). + unset_environ: Tuple[str, ...] = () + default_arg_rev: Optional[str] = None + + @classmethod + def should_add_vcs_url_prefix(cls, remote_url: str) -> bool: + """ + Return whether the vcs prefix (e.g. "git+") should be added to a + repository's remote url when used in a requirement. + """ + return not remote_url.lower().startswith(f"{cls.name}:") + + @classmethod + def get_subdirectory(cls, location: str) -> Optional[str]: + """ + Return the path to Python project root, relative to the repo root. + Return None if the project root is in the repo root. + """ + return None + + @classmethod + def get_requirement_revision(cls, repo_dir: str) -> str: + """ + Return the revision string that should be used in a requirement. + """ + return cls.get_revision(repo_dir) + + @classmethod + def get_src_requirement(cls, repo_dir: str, project_name: str) -> str: + """ + Return the requirement string to use to redownload the files + currently at the given repository directory. + + Args: + project_name: the (unescaped) project name. + + The return value has a form similar to the following: + + {repository_url}@{revision}#egg={project_name} + """ + repo_url = cls.get_remote_url(repo_dir) + + if cls.should_add_vcs_url_prefix(repo_url): + repo_url = f"{cls.name}+{repo_url}" + + revision = cls.get_requirement_revision(repo_dir) + subdir = cls.get_subdirectory(repo_dir) + req = make_vcs_requirement_url(repo_url, revision, project_name, subdir=subdir) + + return req + + @staticmethod + def get_base_rev_args(rev: str) -> List[str]: + """ + Return the base revision arguments for a vcs command. + + Args: + rev: the name of a revision to install. Cannot be None. + """ + raise NotImplementedError + + def is_immutable_rev_checkout(self, url: str, dest: str) -> bool: + """ + Return true if the commit hash checked out at dest matches + the revision in url. + + Always return False, if the VCS does not support immutable commit + hashes. + + This method does not check if there are local uncommitted changes + in dest after checkout, as pip currently has no use case for that. + """ + return False + + @classmethod + def make_rev_options( + cls, rev: Optional[str] = None, extra_args: Optional[CommandArgs] = None + ) -> RevOptions: + """ + Return a RevOptions object. + + Args: + rev: the name of a revision to install. + extra_args: a list of extra options. + """ + return RevOptions(cls, rev, extra_args=extra_args or []) + + @classmethod + def _is_local_repository(cls, repo: str) -> bool: + """ + posix absolute paths start with os.path.sep, + win32 ones start with drive (like c:\\folder) + """ + drive, tail = os.path.splitdrive(repo) + return repo.startswith(os.path.sep) or bool(drive) + + @classmethod + def get_netloc_and_auth( + cls, netloc: str, scheme: str + ) -> Tuple[str, Tuple[Optional[str], Optional[str]]]: + """ + Parse the repository URL's netloc, and return the new netloc to use + along with auth information. + + Args: + netloc: the original repository URL netloc. + scheme: the repository URL's scheme without the vcs prefix. + + This is mainly for the Subversion class to override, so that auth + information can be provided via the --username and --password options + instead of through the URL. For other subclasses like Git without + such an option, auth information must stay in the URL. + + Returns: (netloc, (username, password)). + """ + return netloc, (None, None) + + @classmethod + def get_url_rev_and_auth(cls, url: str) -> Tuple[str, Optional[str], AuthInfo]: + """ + Parse the repository URL to use, and return the URL, revision, + and auth info to use. + + Returns: (url, rev, (username, password)). + """ + scheme, netloc, path, query, frag = urllib.parse.urlsplit(url) + if "+" not in scheme: + raise ValueError( + f"Sorry, {url!r} is a malformed VCS url. " + "The format is +://, " + "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp" + ) + # Remove the vcs prefix. + scheme = scheme.split("+", 1)[1] + netloc, user_pass = cls.get_netloc_and_auth(netloc, scheme) + rev = None + if "@" in path: + path, rev = path.rsplit("@", 1) + if not rev: + raise InstallationError( + f"The URL {url!r} has an empty revision (after @) " + "which is not supported. Include a revision after @ " + "or remove @ from the URL." + ) + url = urllib.parse.urlunsplit((scheme, netloc, path, query, "")) + return url, rev, user_pass + + @staticmethod + def make_rev_args( + username: Optional[str], password: Optional[HiddenText] + ) -> CommandArgs: + """ + Return the RevOptions "extra arguments" to use in obtain(). + """ + return [] + + def get_url_rev_options(self, url: HiddenText) -> Tuple[HiddenText, RevOptions]: + """ + Return the URL and RevOptions object to use in obtain(), + as a tuple (url, rev_options). + """ + secret_url, rev, user_pass = self.get_url_rev_and_auth(url.secret) + username, secret_password = user_pass + password: Optional[HiddenText] = None + if secret_password is not None: + password = hide_value(secret_password) + extra_args = self.make_rev_args(username, password) + rev_options = self.make_rev_options(rev, extra_args=extra_args) + + return hide_url(secret_url), rev_options + + @staticmethod + def normalize_url(url: str) -> str: + """ + Normalize a URL for comparison by unquoting it and removing any + trailing slash. + """ + return urllib.parse.unquote(url).rstrip("/") + + @classmethod + def compare_urls(cls, url1: str, url2: str) -> bool: + """ + Compare two repo URLs for identity, ignoring incidental differences. + """ + return cls.normalize_url(url1) == cls.normalize_url(url2) + + def fetch_new( + self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int + ) -> None: + """ + Fetch a revision from a repository, in the case that this is the + first fetch from the repository. + + Args: + dest: the directory to fetch the repository to. + rev_options: a RevOptions object. + verbosity: verbosity level. + """ + raise NotImplementedError + + def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + """ + Switch the repo at ``dest`` to point to ``URL``. + + Args: + rev_options: a RevOptions object. + """ + raise NotImplementedError + + def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None: + """ + Update an already-existing repo to the given ``rev_options``. + + Args: + rev_options: a RevOptions object. + """ + raise NotImplementedError + + @classmethod + def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool: + """ + Return whether the id of the current commit equals the given name. + + Args: + dest: the repository directory. + name: a string name. + """ + raise NotImplementedError + + def obtain(self, dest: str, url: HiddenText, verbosity: int) -> None: + """ + Install or update in editable mode the package represented by this + VersionControl object. + + :param dest: the repository directory in which to install or update. + :param url: the repository URL starting with a vcs prefix. + :param verbosity: verbosity level. + """ + url, rev_options = self.get_url_rev_options(url) + + if not os.path.exists(dest): + self.fetch_new(dest, url, rev_options, verbosity=verbosity) + return + + rev_display = rev_options.to_display() + if self.is_repository_directory(dest): + existing_url = self.get_remote_url(dest) + if self.compare_urls(existing_url, url.secret): + logger.debug( + "%s in %s exists, and has correct URL (%s)", + self.repo_name.title(), + display_path(dest), + url, + ) + if not self.is_commit_id_equal(dest, rev_options.rev): + logger.info( + "Updating %s %s%s", + display_path(dest), + self.repo_name, + rev_display, + ) + self.update(dest, url, rev_options) + else: + logger.info("Skipping because already up-to-date.") + return + + logger.warning( + "%s %s in %s exists with URL %s", + self.name, + self.repo_name, + display_path(dest), + existing_url, + ) + prompt = ("(s)witch, (i)gnore, (w)ipe, (b)ackup ", ("s", "i", "w", "b")) + else: + logger.warning( + "Directory %s already exists, and is not a %s %s.", + dest, + self.name, + self.repo_name, + ) + # https://github.com/python/mypy/issues/1174 + prompt = ("(i)gnore, (w)ipe, (b)ackup ", ("i", "w", "b")) # type: ignore + + logger.warning( + "The plan is to install the %s repository %s", + self.name, + url, + ) + response = ask_path_exists(f"What to do? {prompt[0]}", prompt[1]) + + if response == "a": + sys.exit(-1) + + if response == "w": + logger.warning("Deleting %s", display_path(dest)) + rmtree(dest) + self.fetch_new(dest, url, rev_options, verbosity=verbosity) + return + + if response == "b": + dest_dir = backup_dir(dest) + logger.warning("Backing up %s to %s", display_path(dest), dest_dir) + shutil.move(dest, dest_dir) + self.fetch_new(dest, url, rev_options, verbosity=verbosity) + return + + # Do nothing if the response is "i". + if response == "s": + logger.info( + "Switching %s %s to %s%s", + self.repo_name, + display_path(dest), + url, + rev_display, + ) + self.switch(dest, url, rev_options) + + def unpack(self, location: str, url: HiddenText, verbosity: int) -> None: + """ + Clean up current location and download the url repository + (and vcs infos) into location + + :param url: the repository URL starting with a vcs prefix. + :param verbosity: verbosity level. + """ + if os.path.exists(location): + rmtree(location) + self.obtain(location, url=url, verbosity=verbosity) + + @classmethod + def get_remote_url(cls, location: str) -> str: + """ + Return the url used at location + + Raises RemoteNotFoundError if the repository does not have a remote + url configured. + """ + raise NotImplementedError + + @classmethod + def get_revision(cls, location: str) -> str: + """ + Return the current commit id of the files at the given location. + """ + raise NotImplementedError + + @classmethod + def run_command( + cls, + cmd: Union[List[str], CommandArgs], + show_stdout: bool = True, + cwd: Optional[str] = None, + on_returncode: 'Literal["raise", "warn", "ignore"]' = "raise", + extra_ok_returncodes: Optional[Iterable[int]] = None, + command_desc: Optional[str] = None, + extra_environ: Optional[Mapping[str, Any]] = None, + spinner: Optional[SpinnerInterface] = None, + log_failed_cmd: bool = True, + stdout_only: bool = False, + ) -> str: + """ + Run a VCS subcommand + This is simply a wrapper around call_subprocess that adds the VCS + command name, and checks that the VCS is available + """ + cmd = make_command(cls.name, *cmd) + if command_desc is None: + command_desc = format_command_args(cmd) + try: + return call_subprocess( + cmd, + show_stdout, + cwd, + on_returncode=on_returncode, + extra_ok_returncodes=extra_ok_returncodes, + command_desc=command_desc, + extra_environ=extra_environ, + unset_environ=cls.unset_environ, + spinner=spinner, + log_failed_cmd=log_failed_cmd, + stdout_only=stdout_only, + ) + except NotADirectoryError: + raise BadCommand(f"Cannot find command {cls.name!r} - invalid PATH") + except FileNotFoundError: + # errno.ENOENT = no such file or directory + # In other words, the VCS executable isn't available + raise BadCommand( + f"Cannot find command {cls.name!r} - do you have " + f"{cls.name!r} installed and in your PATH?" + ) + except PermissionError: + # errno.EACCES = Permission denied + # This error occurs, for instance, when the command is installed + # only for another user. So, the current user don't have + # permission to call the other user command. + raise BadCommand( + f"No permission to execute {cls.name!r} - install it " + f"locally, globally (ask admin), or check your PATH. " + f"See possible solutions at " + f"https://pip.pypa.io/en/latest/reference/pip_freeze/" + f"#fixing-permission-denied." + ) + + @classmethod + def is_repository_directory(cls, path: str) -> bool: + """ + Return whether a directory path is a repository directory. + """ + logger.debug("Checking in %s for %s (%s)...", path, cls.dirname, cls.name) + return os.path.exists(os.path.join(path, cls.dirname)) + + @classmethod + def get_repository_root(cls, location: str) -> Optional[str]: + """ + Return the "root" (top-level) directory controlled by the vcs, + or `None` if the directory is not in any. + + It is meant to be overridden to implement smarter detection + mechanisms for specific vcs. + + This can do more than is_repository_directory() alone. For + example, the Git override checks that Git is actually available. + """ + if cls.is_repository_directory(location): + return location + return None diff --git a/venv/Lib/site-packages/pip/_internal/wheel_builder.py b/venv/Lib/site-packages/pip/_internal/wheel_builder.py new file mode 100644 index 00000000000..93f8e1f5b2f --- /dev/null +++ b/venv/Lib/site-packages/pip/_internal/wheel_builder.py @@ -0,0 +1,354 @@ +"""Orchestrator for building wheels from InstallRequirements. +""" + +import logging +import os.path +import re +import shutil +from typing import Iterable, List, Optional, Tuple + +from pip._vendor.packaging.utils import canonicalize_name, canonicalize_version +from pip._vendor.packaging.version import InvalidVersion, Version + +from pip._internal.cache import WheelCache +from pip._internal.exceptions import InvalidWheelFilename, UnsupportedWheel +from pip._internal.metadata import FilesystemWheel, get_wheel_distribution +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.operations.build.wheel import build_wheel_pep517 +from pip._internal.operations.build.wheel_editable import build_wheel_editable +from pip._internal.operations.build.wheel_legacy import build_wheel_legacy +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import ensure_dir, hash_file +from pip._internal.utils.setuptools_build import make_setuptools_clean_args +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs import vcs + +logger = logging.getLogger(__name__) + +_egg_info_re = re.compile(r"([a-z0-9_.]+)-([a-z0-9_.!+-]+)", re.IGNORECASE) + +BuildResult = Tuple[List[InstallRequirement], List[InstallRequirement]] + + +def _contains_egg_info(s: str) -> bool: + """Determine whether the string looks like an egg_info. + + :param s: The string to parse. E.g. foo-2.1 + """ + return bool(_egg_info_re.search(s)) + + +def _should_build( + req: InstallRequirement, + need_wheel: bool, +) -> bool: + """Return whether an InstallRequirement should be built into a wheel.""" + if req.constraint: + # never build requirements that are merely constraints + return False + if req.is_wheel: + if need_wheel: + logger.info( + "Skipping %s, due to already being wheel.", + req.name, + ) + return False + + if need_wheel: + # i.e. pip wheel, not pip install + return True + + # From this point, this concerns the pip install command only + # (need_wheel=False). + + if not req.source_dir: + return False + + if req.editable: + # we only build PEP 660 editable requirements + return req.supports_pyproject_editable + + return True + + +def should_build_for_wheel_command( + req: InstallRequirement, +) -> bool: + return _should_build(req, need_wheel=True) + + +def should_build_for_install_command( + req: InstallRequirement, +) -> bool: + return _should_build(req, need_wheel=False) + + +def _should_cache( + req: InstallRequirement, +) -> Optional[bool]: + """ + Return whether a built InstallRequirement can be stored in the persistent + wheel cache, assuming the wheel cache is available, and _should_build() + has determined a wheel needs to be built. + """ + if req.editable or not req.source_dir: + # never cache editable requirements + return False + + if req.link and req.link.is_vcs: + # VCS checkout. Do not cache + # unless it points to an immutable commit hash. + assert not req.editable + assert req.source_dir + vcs_backend = vcs.get_backend_for_scheme(req.link.scheme) + assert vcs_backend + if vcs_backend.is_immutable_rev_checkout(req.link.url, req.source_dir): + return True + return False + + assert req.link + base, ext = req.link.splitext() + if _contains_egg_info(base): + return True + + # Otherwise, do not cache. + return False + + +def _get_cache_dir( + req: InstallRequirement, + wheel_cache: WheelCache, +) -> str: + """Return the persistent or temporary cache directory where the built + wheel need to be stored. + """ + cache_available = bool(wheel_cache.cache_dir) + assert req.link + if cache_available and _should_cache(req): + cache_dir = wheel_cache.get_path_for_link(req.link) + else: + cache_dir = wheel_cache.get_ephem_path_for_link(req.link) + return cache_dir + + +def _verify_one(req: InstallRequirement, wheel_path: str) -> None: + canonical_name = canonicalize_name(req.name or "") + w = Wheel(os.path.basename(wheel_path)) + if canonicalize_name(w.name) != canonical_name: + raise InvalidWheelFilename( + f"Wheel has unexpected file name: expected {canonical_name!r}, " + f"got {w.name!r}", + ) + dist = get_wheel_distribution(FilesystemWheel(wheel_path), canonical_name) + dist_verstr = str(dist.version) + if canonicalize_version(dist_verstr) != canonicalize_version(w.version): + raise InvalidWheelFilename( + f"Wheel has unexpected file name: expected {dist_verstr!r}, " + f"got {w.version!r}", + ) + metadata_version_value = dist.metadata_version + if metadata_version_value is None: + raise UnsupportedWheel("Missing Metadata-Version") + try: + metadata_version = Version(metadata_version_value) + except InvalidVersion: + msg = f"Invalid Metadata-Version: {metadata_version_value}" + raise UnsupportedWheel(msg) + if metadata_version >= Version("1.2") and not isinstance(dist.version, Version): + raise UnsupportedWheel( + f"Metadata 1.2 mandates PEP 440 version, but {dist_verstr!r} is not" + ) + + +def _build_one( + req: InstallRequirement, + output_dir: str, + verify: bool, + build_options: List[str], + global_options: List[str], + editable: bool, +) -> Optional[str]: + """Build one wheel. + + :return: The filename of the built wheel, or None if the build failed. + """ + artifact = "editable" if editable else "wheel" + try: + ensure_dir(output_dir) + except OSError as e: + logger.warning( + "Building %s for %s failed: %s", + artifact, + req.name, + e, + ) + return None + + # Install build deps into temporary directory (PEP 518) + with req.build_env: + wheel_path = _build_one_inside_env( + req, output_dir, build_options, global_options, editable + ) + if wheel_path and verify: + try: + _verify_one(req, wheel_path) + except (InvalidWheelFilename, UnsupportedWheel) as e: + logger.warning("Built %s for %s is invalid: %s", artifact, req.name, e) + return None + return wheel_path + + +def _build_one_inside_env( + req: InstallRequirement, + output_dir: str, + build_options: List[str], + global_options: List[str], + editable: bool, +) -> Optional[str]: + with TempDirectory(kind="wheel") as temp_dir: + assert req.name + if req.use_pep517: + assert req.metadata_directory + assert req.pep517_backend + if global_options: + logger.warning( + "Ignoring --global-option when building %s using PEP 517", req.name + ) + if build_options: + logger.warning( + "Ignoring --build-option when building %s using PEP 517", req.name + ) + if editable: + wheel_path = build_wheel_editable( + name=req.name, + backend=req.pep517_backend, + metadata_directory=req.metadata_directory, + tempd=temp_dir.path, + ) + else: + wheel_path = build_wheel_pep517( + name=req.name, + backend=req.pep517_backend, + metadata_directory=req.metadata_directory, + tempd=temp_dir.path, + ) + else: + wheel_path = build_wheel_legacy( + name=req.name, + setup_py_path=req.setup_py_path, + source_dir=req.unpacked_source_directory, + global_options=global_options, + build_options=build_options, + tempd=temp_dir.path, + ) + + if wheel_path is not None: + wheel_name = os.path.basename(wheel_path) + dest_path = os.path.join(output_dir, wheel_name) + try: + wheel_hash, length = hash_file(wheel_path) + shutil.move(wheel_path, dest_path) + logger.info( + "Created wheel for %s: filename=%s size=%d sha256=%s", + req.name, + wheel_name, + length, + wheel_hash.hexdigest(), + ) + logger.info("Stored in directory: %s", output_dir) + return dest_path + except Exception as e: + logger.warning( + "Building wheel for %s failed: %s", + req.name, + e, + ) + # Ignore return, we can't do anything else useful. + if not req.use_pep517: + _clean_one_legacy(req, global_options) + return None + + +def _clean_one_legacy(req: InstallRequirement, global_options: List[str]) -> bool: + clean_args = make_setuptools_clean_args( + req.setup_py_path, + global_options=global_options, + ) + + logger.info("Running setup.py clean for %s", req.name) + try: + call_subprocess( + clean_args, command_desc="python setup.py clean", cwd=req.source_dir + ) + return True + except Exception: + logger.error("Failed cleaning build dir for %s", req.name) + return False + + +def build( + requirements: Iterable[InstallRequirement], + wheel_cache: WheelCache, + verify: bool, + build_options: List[str], + global_options: List[str], +) -> BuildResult: + """Build wheels. + + :return: The list of InstallRequirement that succeeded to build and + the list of InstallRequirement that failed to build. + """ + if not requirements: + return [], [] + + # Build the wheels. + logger.info( + "Building wheels for collected packages: %s", + ", ".join(req.name for req in requirements), # type: ignore + ) + + with indent_log(): + build_successes, build_failures = [], [] + for req in requirements: + assert req.name + cache_dir = _get_cache_dir(req, wheel_cache) + wheel_file = _build_one( + req, + cache_dir, + verify, + build_options, + global_options, + req.editable and req.permit_editable_wheels, + ) + if wheel_file: + # Record the download origin in the cache + if req.download_info is not None: + # download_info is guaranteed to be set because when we build an + # InstallRequirement it has been through the preparer before, but + # let's be cautious. + wheel_cache.record_download_origin(cache_dir, req.download_info) + # Update the link for this. + req.link = Link(path_to_url(wheel_file)) + req.local_file_path = req.link.file_path + assert req.link.is_wheel + build_successes.append(req) + else: + build_failures.append(req) + + # notify success/failure + if build_successes: + logger.info( + "Successfully built %s", + " ".join([req.name for req in build_successes]), # type: ignore + ) + if build_failures: + logger.info( + "Failed to build %s", + " ".join([req.name for req in build_failures]), # type: ignore + ) + # Return a list of requirements that failed to build + return build_successes, build_failures diff --git a/venv/Lib/site-packages/pip/_vendor/__init__.py b/venv/Lib/site-packages/pip/_vendor/__init__.py new file mode 100644 index 00000000000..561089ccc0c --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/__init__.py @@ -0,0 +1,116 @@ +""" +pip._vendor is for vendoring dependencies of pip to prevent needing pip to +depend on something external. + +Files inside of pip._vendor should be considered immutable and should only be +updated to versions from upstream. +""" +from __future__ import absolute_import + +import glob +import os.path +import sys + +# Downstream redistributors which have debundled our dependencies should also +# patch this value to be true. This will trigger the additional patching +# to cause things like "six" to be available as pip. +DEBUNDLED = False + +# By default, look in this directory for a bunch of .whl files which we will +# add to the beginning of sys.path before attempting to import anything. This +# is done to support downstream re-distributors like Debian and Fedora who +# wish to create their own Wheels for our dependencies to aid in debundling. +WHEEL_DIR = os.path.abspath(os.path.dirname(__file__)) + + +# Define a small helper function to alias our vendored modules to the real ones +# if the vendored ones do not exist. This idea of this was taken from +# https://github.com/kennethreitz/requests/pull/2567. +def vendored(modulename): + vendored_name = "{0}.{1}".format(__name__, modulename) + + try: + __import__(modulename, globals(), locals(), level=0) + except ImportError: + # We can just silently allow import failures to pass here. If we + # got to this point it means that ``import pip._vendor.whatever`` + # failed and so did ``import whatever``. Since we're importing this + # upfront in an attempt to alias imports, not erroring here will + # just mean we get a regular import error whenever pip *actually* + # tries to import one of these modules to use it, which actually + # gives us a better error message than we would have otherwise + # gotten. + pass + else: + sys.modules[vendored_name] = sys.modules[modulename] + base, head = vendored_name.rsplit(".", 1) + setattr(sys.modules[base], head, sys.modules[modulename]) + + +# If we're operating in a debundled setup, then we want to go ahead and trigger +# the aliasing of our vendored libraries as well as looking for wheels to add +# to our sys.path. This will cause all of this code to be a no-op typically +# however downstream redistributors can enable it in a consistent way across +# all platforms. +if DEBUNDLED: + # Actually look inside of WHEEL_DIR to find .whl files and add them to the + # front of our sys.path. + sys.path[:] = glob.glob(os.path.join(WHEEL_DIR, "*.whl")) + sys.path + + # Actually alias all of our vendored dependencies. + vendored("cachecontrol") + vendored("certifi") + vendored("distlib") + vendored("distro") + vendored("packaging") + vendored("packaging.version") + vendored("packaging.specifiers") + vendored("pkg_resources") + vendored("platformdirs") + vendored("progress") + vendored("pyproject_hooks") + vendored("requests") + vendored("requests.exceptions") + vendored("requests.packages") + vendored("requests.packages.urllib3") + vendored("requests.packages.urllib3._collections") + vendored("requests.packages.urllib3.connection") + vendored("requests.packages.urllib3.connectionpool") + vendored("requests.packages.urllib3.contrib") + vendored("requests.packages.urllib3.contrib.ntlmpool") + vendored("requests.packages.urllib3.contrib.pyopenssl") + vendored("requests.packages.urllib3.exceptions") + vendored("requests.packages.urllib3.fields") + vendored("requests.packages.urllib3.filepost") + vendored("requests.packages.urllib3.packages") + vendored("requests.packages.urllib3.packages.ordered_dict") + vendored("requests.packages.urllib3.packages.six") + vendored("requests.packages.urllib3.packages.ssl_match_hostname") + vendored("requests.packages.urllib3.packages.ssl_match_hostname." + "_implementation") + vendored("requests.packages.urllib3.poolmanager") + vendored("requests.packages.urllib3.request") + vendored("requests.packages.urllib3.response") + vendored("requests.packages.urllib3.util") + vendored("requests.packages.urllib3.util.connection") + vendored("requests.packages.urllib3.util.request") + vendored("requests.packages.urllib3.util.response") + vendored("requests.packages.urllib3.util.retry") + vendored("requests.packages.urllib3.util.ssl_") + vendored("requests.packages.urllib3.util.timeout") + vendored("requests.packages.urllib3.util.url") + vendored("resolvelib") + vendored("rich") + vendored("rich.console") + vendored("rich.highlighter") + vendored("rich.logging") + vendored("rich.markup") + vendored("rich.progress") + vendored("rich.segment") + vendored("rich.style") + vendored("rich.text") + vendored("rich.traceback") + if sys.version_info < (3, 11): + vendored("tomli") + vendored("truststore") + vendored("urllib3") diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py new file mode 100644 index 00000000000..b34b0fcbd40 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 + +"""CacheControl import Interface. + +Make it easy to import from cachecontrol without long namespaces. +""" +__author__ = "Eric Larson" +__email__ = "eric@ionrock.org" +__version__ = "0.14.0" + +from pip._vendor.cachecontrol.adapter import CacheControlAdapter +from pip._vendor.cachecontrol.controller import CacheController +from pip._vendor.cachecontrol.wrapper import CacheControl + +__all__ = [ + "__author__", + "__email__", + "__version__", + "CacheControlAdapter", + "CacheController", + "CacheControl", +] + +import logging + +logging.getLogger(__name__).addHandler(logging.NullHandler()) diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py new file mode 100644 index 00000000000..2c84208a5d8 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py @@ -0,0 +1,70 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations + +import logging +from argparse import ArgumentParser +from typing import TYPE_CHECKING + +from pip._vendor import requests + +from pip._vendor.cachecontrol.adapter import CacheControlAdapter +from pip._vendor.cachecontrol.cache import DictCache +from pip._vendor.cachecontrol.controller import logger + +if TYPE_CHECKING: + from argparse import Namespace + + from pip._vendor.cachecontrol.controller import CacheController + + +def setup_logging() -> None: + logger.setLevel(logging.DEBUG) + handler = logging.StreamHandler() + logger.addHandler(handler) + + +def get_session() -> requests.Session: + adapter = CacheControlAdapter( + DictCache(), cache_etags=True, serializer=None, heuristic=None + ) + sess = requests.Session() + sess.mount("http://", adapter) + sess.mount("https://", adapter) + + sess.cache_controller = adapter.controller # type: ignore[attr-defined] + return sess + + +def get_args() -> Namespace: + parser = ArgumentParser() + parser.add_argument("url", help="The URL to try and cache") + return parser.parse_args() + + +def main() -> None: + args = get_args() + sess = get_session() + + # Make a request to get a response + resp = sess.get(args.url) + + # Turn on logging + setup_logging() + + # try setting the cache + cache_controller: CacheController = ( + sess.cache_controller # type: ignore[attr-defined] + ) + cache_controller.cache_response(resp.request, resp.raw) + + # Now try to get it + if cache_controller.cached_request(resp.request): + print("Cached!") + else: + print("Not cached :(") + + +if __name__ == "__main__": + main() diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py new file mode 100644 index 00000000000..fbb4ecc8876 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py @@ -0,0 +1,161 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations + +import functools +import types +import zlib +from typing import TYPE_CHECKING, Any, Collection, Mapping + +from pip._vendor.requests.adapters import HTTPAdapter + +from pip._vendor.cachecontrol.cache import DictCache +from pip._vendor.cachecontrol.controller import PERMANENT_REDIRECT_STATUSES, CacheController +from pip._vendor.cachecontrol.filewrapper import CallbackFileWrapper + +if TYPE_CHECKING: + from pip._vendor.requests import PreparedRequest, Response + from pip._vendor.urllib3 import HTTPResponse + + from pip._vendor.cachecontrol.cache import BaseCache + from pip._vendor.cachecontrol.heuristics import BaseHeuristic + from pip._vendor.cachecontrol.serialize import Serializer + + +class CacheControlAdapter(HTTPAdapter): + invalidating_methods = {"PUT", "PATCH", "DELETE"} + + def __init__( + self, + cache: BaseCache | None = None, + cache_etags: bool = True, + controller_class: type[CacheController] | None = None, + serializer: Serializer | None = None, + heuristic: BaseHeuristic | None = None, + cacheable_methods: Collection[str] | None = None, + *args: Any, + **kw: Any, + ) -> None: + super().__init__(*args, **kw) + self.cache = DictCache() if cache is None else cache + self.heuristic = heuristic + self.cacheable_methods = cacheable_methods or ("GET",) + + controller_factory = controller_class or CacheController + self.controller = controller_factory( + self.cache, cache_etags=cache_etags, serializer=serializer + ) + + def send( + self, + request: PreparedRequest, + stream: bool = False, + timeout: None | float | tuple[float, float] | tuple[float, None] = None, + verify: bool | str = True, + cert: (None | bytes | str | tuple[bytes | str, bytes | str]) = None, + proxies: Mapping[str, str] | None = None, + cacheable_methods: Collection[str] | None = None, + ) -> Response: + """ + Send a request. Use the request information to see if it + exists in the cache and cache the response if we need to and can. + """ + cacheable = cacheable_methods or self.cacheable_methods + if request.method in cacheable: + try: + cached_response = self.controller.cached_request(request) + except zlib.error: + cached_response = None + if cached_response: + return self.build_response(request, cached_response, from_cache=True) + + # check for etags and add headers if appropriate + request.headers.update(self.controller.conditional_headers(request)) + + resp = super().send(request, stream, timeout, verify, cert, proxies) + + return resp + + def build_response( + self, + request: PreparedRequest, + response: HTTPResponse, + from_cache: bool = False, + cacheable_methods: Collection[str] | None = None, + ) -> Response: + """ + Build a response by making a request or using the cache. + + This will end up calling send and returning a potentially + cached response + """ + cacheable = cacheable_methods or self.cacheable_methods + if not from_cache and request.method in cacheable: + # Check for any heuristics that might update headers + # before trying to cache. + if self.heuristic: + response = self.heuristic.apply(response) + + # apply any expiration heuristics + if response.status == 304: + # We must have sent an ETag request. This could mean + # that we've been expired already or that we simply + # have an etag. In either case, we want to try and + # update the cache if that is the case. + cached_response = self.controller.update_cached_response( + request, response + ) + + if cached_response is not response: + from_cache = True + + # We are done with the server response, read a + # possible response body (compliant servers will + # not return one, but we cannot be 100% sure) and + # release the connection back to the pool. + response.read(decode_content=False) + response.release_conn() + + response = cached_response + + # We always cache the 301 responses + elif int(response.status) in PERMANENT_REDIRECT_STATUSES: + self.controller.cache_response(request, response) + else: + # Wrap the response file with a wrapper that will cache the + # response when the stream has been consumed. + response._fp = CallbackFileWrapper( # type: ignore[assignment] + response._fp, # type: ignore[arg-type] + functools.partial( + self.controller.cache_response, request, response + ), + ) + if response.chunked: + super_update_chunk_length = response._update_chunk_length + + def _update_chunk_length(self: HTTPResponse) -> None: + super_update_chunk_length() + if self.chunk_left == 0: + self._fp._close() # type: ignore[union-attr] + + response._update_chunk_length = types.MethodType( # type: ignore[method-assign] + _update_chunk_length, response + ) + + resp: Response = super().build_response(request, response) # type: ignore[no-untyped-call] + + # See if we should invalidate the cache. + if request.method in self.invalidating_methods and resp.ok: + assert request.url is not None + cache_url = self.controller.cache_url(request.url) + self.cache.delete(cache_url) + + # Give the request a from_cache attr to let people use it + resp.from_cache = from_cache # type: ignore[attr-defined] + + return resp + + def close(self) -> None: + self.cache.close() + super().close() # type: ignore[no-untyped-call] diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py new file mode 100644 index 00000000000..3293b0057c7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py @@ -0,0 +1,74 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 + +""" +The cache object API for implementing caches. The default is a thread +safe in-memory dictionary. +""" +from __future__ import annotations + +from threading import Lock +from typing import IO, TYPE_CHECKING, MutableMapping + +if TYPE_CHECKING: + from datetime import datetime + + +class BaseCache: + def get(self, key: str) -> bytes | None: + raise NotImplementedError() + + def set( + self, key: str, value: bytes, expires: int | datetime | None = None + ) -> None: + raise NotImplementedError() + + def delete(self, key: str) -> None: + raise NotImplementedError() + + def close(self) -> None: + pass + + +class DictCache(BaseCache): + def __init__(self, init_dict: MutableMapping[str, bytes] | None = None) -> None: + self.lock = Lock() + self.data = init_dict or {} + + def get(self, key: str) -> bytes | None: + return self.data.get(key, None) + + def set( + self, key: str, value: bytes, expires: int | datetime | None = None + ) -> None: + with self.lock: + self.data.update({key: value}) + + def delete(self, key: str) -> None: + with self.lock: + if key in self.data: + self.data.pop(key) + + +class SeparateBodyBaseCache(BaseCache): + """ + In this variant, the body is not stored mixed in with the metadata, but is + passed in (as a bytes-like object) in a separate call to ``set_body()``. + + That is, the expected interaction pattern is:: + + cache.set(key, serialized_metadata) + cache.set_body(key) + + Similarly, the body should be loaded separately via ``get_body()``. + """ + + def set_body(self, key: str, body: bytes) -> None: + raise NotImplementedError() + + def get_body(self, key: str) -> IO[bytes] | None: + """ + Return the body as file-like object. + """ + raise NotImplementedError() diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py new file mode 100644 index 00000000000..24ff469ff98 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py @@ -0,0 +1,8 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 + +from pip._vendor.cachecontrol.caches.file_cache import FileCache, SeparateBodyFileCache +from pip._vendor.cachecontrol.caches.redis_cache import RedisCache + +__all__ = ["FileCache", "SeparateBodyFileCache", "RedisCache"] diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py new file mode 100644 index 00000000000..e6e3a57947f --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py @@ -0,0 +1,182 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations + +import hashlib +import os +from textwrap import dedent +from typing import IO, TYPE_CHECKING, Union +from pathlib import Path + +from pip._vendor.cachecontrol.cache import BaseCache, SeparateBodyBaseCache +from pip._vendor.cachecontrol.controller import CacheController + +if TYPE_CHECKING: + from datetime import datetime + + from filelock import BaseFileLock + + +def _secure_open_write(filename: str, fmode: int) -> IO[bytes]: + # We only want to write to this file, so open it in write only mode + flags = os.O_WRONLY + + # os.O_CREAT | os.O_EXCL will fail if the file already exists, so we only + # will open *new* files. + # We specify this because we want to ensure that the mode we pass is the + # mode of the file. + flags |= os.O_CREAT | os.O_EXCL + + # Do not follow symlinks to prevent someone from making a symlink that + # we follow and insecurely open a cache file. + if hasattr(os, "O_NOFOLLOW"): + flags |= os.O_NOFOLLOW + + # On Windows we'll mark this file as binary + if hasattr(os, "O_BINARY"): + flags |= os.O_BINARY + + # Before we open our file, we want to delete any existing file that is + # there + try: + os.remove(filename) + except OSError: + # The file must not exist already, so we can just skip ahead to opening + pass + + # Open our file, the use of os.O_CREAT | os.O_EXCL will ensure that if a + # race condition happens between the os.remove and this line, that an + # error will be raised. Because we utilize a lockfile this should only + # happen if someone is attempting to attack us. + fd = os.open(filename, flags, fmode) + try: + return os.fdopen(fd, "wb") + + except: + # An error occurred wrapping our FD in a file object + os.close(fd) + raise + + +class _FileCacheMixin: + """Shared implementation for both FileCache variants.""" + + def __init__( + self, + directory: str | Path, + forever: bool = False, + filemode: int = 0o0600, + dirmode: int = 0o0700, + lock_class: type[BaseFileLock] | None = None, + ) -> None: + try: + if lock_class is None: + from filelock import FileLock + + lock_class = FileLock + except ImportError: + notice = dedent( + """ + NOTE: In order to use the FileCache you must have + filelock installed. You can install it via pip: + pip install cachecontrol[filecache] + """ + ) + raise ImportError(notice) + + self.directory = directory + self.forever = forever + self.filemode = filemode + self.dirmode = dirmode + self.lock_class = lock_class + + @staticmethod + def encode(x: str) -> str: + return hashlib.sha224(x.encode()).hexdigest() + + def _fn(self, name: str) -> str: + # NOTE: This method should not change as some may depend on it. + # See: https://github.com/ionrock/cachecontrol/issues/63 + hashed = self.encode(name) + parts = list(hashed[:5]) + [hashed] + return os.path.join(self.directory, *parts) + + def get(self, key: str) -> bytes | None: + name = self._fn(key) + try: + with open(name, "rb") as fh: + return fh.read() + + except FileNotFoundError: + return None + + def set( + self, key: str, value: bytes, expires: int | datetime | None = None + ) -> None: + name = self._fn(key) + self._write(name, value) + + def _write(self, path: str, data: bytes) -> None: + """ + Safely write the data to the given path. + """ + # Make sure the directory exists + try: + os.makedirs(os.path.dirname(path), self.dirmode) + except OSError: + pass + + with self.lock_class(path + ".lock"): + # Write our actual file + with _secure_open_write(path, self.filemode) as fh: + fh.write(data) + + def _delete(self, key: str, suffix: str) -> None: + name = self._fn(key) + suffix + if not self.forever: + try: + os.remove(name) + except FileNotFoundError: + pass + + +class FileCache(_FileCacheMixin, BaseCache): + """ + Traditional FileCache: body is stored in memory, so not suitable for large + downloads. + """ + + def delete(self, key: str) -> None: + self._delete(key, "") + + +class SeparateBodyFileCache(_FileCacheMixin, SeparateBodyBaseCache): + """ + Memory-efficient FileCache: body is stored in a separate file, reducing + peak memory usage. + """ + + def get_body(self, key: str) -> IO[bytes] | None: + name = self._fn(key) + ".body" + try: + return open(name, "rb") + except FileNotFoundError: + return None + + def set_body(self, key: str, body: bytes) -> None: + name = self._fn(key) + ".body" + self._write(name, body) + + def delete(self, key: str) -> None: + self._delete(key, "") + self._delete(key, ".body") + + +def url_to_file_path(url: str, filecache: FileCache) -> str: + """Return the file cache path based on the URL. + + This does not ensure the file exists! + """ + key = CacheController.cache_url(url) + return filecache._fn(key) diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py new file mode 100644 index 00000000000..f4f68c47bf6 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations + + +from datetime import datetime, timezone +from typing import TYPE_CHECKING + +from pip._vendor.cachecontrol.cache import BaseCache + +if TYPE_CHECKING: + from redis import Redis + + +class RedisCache(BaseCache): + def __init__(self, conn: Redis[bytes]) -> None: + self.conn = conn + + def get(self, key: str) -> bytes | None: + return self.conn.get(key) + + def set( + self, key: str, value: bytes, expires: int | datetime | None = None + ) -> None: + if not expires: + self.conn.set(key, value) + elif isinstance(expires, datetime): + now_utc = datetime.now(timezone.utc) + if expires.tzinfo is None: + now_utc = now_utc.replace(tzinfo=None) + delta = expires - now_utc + self.conn.setex(key, int(delta.total_seconds()), value) + else: + self.conn.setex(key, expires, value) + + def delete(self, key: str) -> None: + self.conn.delete(key) + + def clear(self) -> None: + """Helper for clearing all the keys in a database. Use with + caution!""" + for key in self.conn.keys(): + self.conn.delete(key) + + def close(self) -> None: + """Redis uses connection pooling, no need to close the connection.""" + pass diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py new file mode 100644 index 00000000000..d7dd86e5f70 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py @@ -0,0 +1,499 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 + +""" +The httplib2 algorithms ported for use with requests. +""" +from __future__ import annotations + +import calendar +import logging +import re +import time +from email.utils import parsedate_tz +from typing import TYPE_CHECKING, Collection, Mapping + +from pip._vendor.requests.structures import CaseInsensitiveDict + +from pip._vendor.cachecontrol.cache import DictCache, SeparateBodyBaseCache +from pip._vendor.cachecontrol.serialize import Serializer + +if TYPE_CHECKING: + from typing import Literal + + from pip._vendor.requests import PreparedRequest + from pip._vendor.urllib3 import HTTPResponse + + from pip._vendor.cachecontrol.cache import BaseCache + +logger = logging.getLogger(__name__) + +URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") + +PERMANENT_REDIRECT_STATUSES = (301, 308) + + +def parse_uri(uri: str) -> tuple[str, str, str, str, str]: + """Parses a URI using the regex given in Appendix B of RFC 3986. + + (scheme, authority, path, query, fragment) = parse_uri(uri) + """ + match = URI.match(uri) + assert match is not None + groups = match.groups() + return (groups[1], groups[3], groups[4], groups[6], groups[8]) + + +class CacheController: + """An interface to see if request should cached or not.""" + + def __init__( + self, + cache: BaseCache | None = None, + cache_etags: bool = True, + serializer: Serializer | None = None, + status_codes: Collection[int] | None = None, + ): + self.cache = DictCache() if cache is None else cache + self.cache_etags = cache_etags + self.serializer = serializer or Serializer() + self.cacheable_status_codes = status_codes or (200, 203, 300, 301, 308) + + @classmethod + def _urlnorm(cls, uri: str) -> str: + """Normalize the URL to create a safe key for the cache""" + (scheme, authority, path, query, fragment) = parse_uri(uri) + if not scheme or not authority: + raise Exception("Only absolute URIs are allowed. uri = %s" % uri) + + scheme = scheme.lower() + authority = authority.lower() + + if not path: + path = "/" + + # Could do syntax based normalization of the URI before + # computing the digest. See Section 6.2.2 of Std 66. + request_uri = query and "?".join([path, query]) or path + defrag_uri = scheme + "://" + authority + request_uri + + return defrag_uri + + @classmethod + def cache_url(cls, uri: str) -> str: + return cls._urlnorm(uri) + + def parse_cache_control(self, headers: Mapping[str, str]) -> dict[str, int | None]: + known_directives = { + # https://tools.ietf.org/html/rfc7234#section-5.2 + "max-age": (int, True), + "max-stale": (int, False), + "min-fresh": (int, True), + "no-cache": (None, False), + "no-store": (None, False), + "no-transform": (None, False), + "only-if-cached": (None, False), + "must-revalidate": (None, False), + "public": (None, False), + "private": (None, False), + "proxy-revalidate": (None, False), + "s-maxage": (int, True), + } + + cc_headers = headers.get("cache-control", headers.get("Cache-Control", "")) + + retval: dict[str, int | None] = {} + + for cc_directive in cc_headers.split(","): + if not cc_directive.strip(): + continue + + parts = cc_directive.split("=", 1) + directive = parts[0].strip() + + try: + typ, required = known_directives[directive] + except KeyError: + logger.debug("Ignoring unknown cache-control directive: %s", directive) + continue + + if not typ or not required: + retval[directive] = None + if typ: + try: + retval[directive] = typ(parts[1].strip()) + except IndexError: + if required: + logger.debug( + "Missing value for cache-control " "directive: %s", + directive, + ) + except ValueError: + logger.debug( + "Invalid value for cache-control directive " "%s, must be %s", + directive, + typ.__name__, + ) + + return retval + + def _load_from_cache(self, request: PreparedRequest) -> HTTPResponse | None: + """ + Load a cached response, or return None if it's not available. + """ + # We do not support caching of partial content: so if the request contains a + # Range header then we don't want to load anything from the cache. + if "Range" in request.headers: + return None + + cache_url = request.url + assert cache_url is not None + cache_data = self.cache.get(cache_url) + if cache_data is None: + logger.debug("No cache entry available") + return None + + if isinstance(self.cache, SeparateBodyBaseCache): + body_file = self.cache.get_body(cache_url) + else: + body_file = None + + result = self.serializer.loads(request, cache_data, body_file) + if result is None: + logger.warning("Cache entry deserialization failed, entry ignored") + return result + + def cached_request(self, request: PreparedRequest) -> HTTPResponse | Literal[False]: + """ + Return a cached response if it exists in the cache, otherwise + return False. + """ + assert request.url is not None + cache_url = self.cache_url(request.url) + logger.debug('Looking up "%s" in the cache', cache_url) + cc = self.parse_cache_control(request.headers) + + # Bail out if the request insists on fresh data + if "no-cache" in cc: + logger.debug('Request header has "no-cache", cache bypassed') + return False + + if "max-age" in cc and cc["max-age"] == 0: + logger.debug('Request header has "max_age" as 0, cache bypassed') + return False + + # Check whether we can load the response from the cache: + resp = self._load_from_cache(request) + if not resp: + return False + + # If we have a cached permanent redirect, return it immediately. We + # don't need to test our response for other headers b/c it is + # intrinsically "cacheable" as it is Permanent. + # + # See: + # https://tools.ietf.org/html/rfc7231#section-6.4.2 + # + # Client can try to refresh the value by repeating the request + # with cache busting headers as usual (ie no-cache). + if int(resp.status) in PERMANENT_REDIRECT_STATUSES: + msg = ( + "Returning cached permanent redirect response " + "(ignoring date and etag information)" + ) + logger.debug(msg) + return resp + + headers: CaseInsensitiveDict[str] = CaseInsensitiveDict(resp.headers) + if not headers or "date" not in headers: + if "etag" not in headers: + # Without date or etag, the cached response can never be used + # and should be deleted. + logger.debug("Purging cached response: no date or etag") + self.cache.delete(cache_url) + logger.debug("Ignoring cached response: no date") + return False + + now = time.time() + time_tuple = parsedate_tz(headers["date"]) + assert time_tuple is not None + date = calendar.timegm(time_tuple[:6]) + current_age = max(0, now - date) + logger.debug("Current age based on date: %i", current_age) + + # TODO: There is an assumption that the result will be a + # urllib3 response object. This may not be best since we + # could probably avoid instantiating or constructing the + # response until we know we need it. + resp_cc = self.parse_cache_control(headers) + + # determine freshness + freshness_lifetime = 0 + + # Check the max-age pragma in the cache control header + max_age = resp_cc.get("max-age") + if max_age is not None: + freshness_lifetime = max_age + logger.debug("Freshness lifetime from max-age: %i", freshness_lifetime) + + # If there isn't a max-age, check for an expires header + elif "expires" in headers: + expires = parsedate_tz(headers["expires"]) + if expires is not None: + expire_time = calendar.timegm(expires[:6]) - date + freshness_lifetime = max(0, expire_time) + logger.debug("Freshness lifetime from expires: %i", freshness_lifetime) + + # Determine if we are setting freshness limit in the + # request. Note, this overrides what was in the response. + max_age = cc.get("max-age") + if max_age is not None: + freshness_lifetime = max_age + logger.debug( + "Freshness lifetime from request max-age: %i", freshness_lifetime + ) + + min_fresh = cc.get("min-fresh") + if min_fresh is not None: + # adjust our current age by our min fresh + current_age += min_fresh + logger.debug("Adjusted current age from min-fresh: %i", current_age) + + # Return entry if it is fresh enough + if freshness_lifetime > current_age: + logger.debug('The response is "fresh", returning cached response') + logger.debug("%i > %i", freshness_lifetime, current_age) + return resp + + # we're not fresh. If we don't have an Etag, clear it out + if "etag" not in headers: + logger.debug('The cached response is "stale" with no etag, purging') + self.cache.delete(cache_url) + + # return the original handler + return False + + def conditional_headers(self, request: PreparedRequest) -> dict[str, str]: + resp = self._load_from_cache(request) + new_headers = {} + + if resp: + headers: CaseInsensitiveDict[str] = CaseInsensitiveDict(resp.headers) + + if "etag" in headers: + new_headers["If-None-Match"] = headers["ETag"] + + if "last-modified" in headers: + new_headers["If-Modified-Since"] = headers["Last-Modified"] + + return new_headers + + def _cache_set( + self, + cache_url: str, + request: PreparedRequest, + response: HTTPResponse, + body: bytes | None = None, + expires_time: int | None = None, + ) -> None: + """ + Store the data in the cache. + """ + if isinstance(self.cache, SeparateBodyBaseCache): + # We pass in the body separately; just put a placeholder empty + # string in the metadata. + self.cache.set( + cache_url, + self.serializer.dumps(request, response, b""), + expires=expires_time, + ) + # body is None can happen when, for example, we're only updating + # headers, as is the case in update_cached_response(). + if body is not None: + self.cache.set_body(cache_url, body) + else: + self.cache.set( + cache_url, + self.serializer.dumps(request, response, body), + expires=expires_time, + ) + + def cache_response( + self, + request: PreparedRequest, + response: HTTPResponse, + body: bytes | None = None, + status_codes: Collection[int] | None = None, + ) -> None: + """ + Algorithm for caching requests. + + This assumes a requests Response object. + """ + # From httplib2: Don't cache 206's since we aren't going to + # handle byte range requests + cacheable_status_codes = status_codes or self.cacheable_status_codes + if response.status not in cacheable_status_codes: + logger.debug( + "Status code %s not in %s", response.status, cacheable_status_codes + ) + return + + response_headers: CaseInsensitiveDict[str] = CaseInsensitiveDict( + response.headers + ) + + if "date" in response_headers: + time_tuple = parsedate_tz(response_headers["date"]) + assert time_tuple is not None + date = calendar.timegm(time_tuple[:6]) + else: + date = 0 + + # If we've been given a body, our response has a Content-Length, that + # Content-Length is valid then we can check to see if the body we've + # been given matches the expected size, and if it doesn't we'll just + # skip trying to cache it. + if ( + body is not None + and "content-length" in response_headers + and response_headers["content-length"].isdigit() + and int(response_headers["content-length"]) != len(body) + ): + return + + cc_req = self.parse_cache_control(request.headers) + cc = self.parse_cache_control(response_headers) + + assert request.url is not None + cache_url = self.cache_url(request.url) + logger.debug('Updating cache with response from "%s"', cache_url) + + # Delete it from the cache if we happen to have it stored there + no_store = False + if "no-store" in cc: + no_store = True + logger.debug('Response header has "no-store"') + if "no-store" in cc_req: + no_store = True + logger.debug('Request header has "no-store"') + if no_store and self.cache.get(cache_url): + logger.debug('Purging existing cache entry to honor "no-store"') + self.cache.delete(cache_url) + if no_store: + return + + # https://tools.ietf.org/html/rfc7234#section-4.1: + # A Vary header field-value of "*" always fails to match. + # Storing such a response leads to a deserialization warning + # during cache lookup and is not allowed to ever be served, + # so storing it can be avoided. + if "*" in response_headers.get("vary", ""): + logger.debug('Response header has "Vary: *"') + return + + # If we've been given an etag, then keep the response + if self.cache_etags and "etag" in response_headers: + expires_time = 0 + if response_headers.get("expires"): + expires = parsedate_tz(response_headers["expires"]) + if expires is not None: + expires_time = calendar.timegm(expires[:6]) - date + + expires_time = max(expires_time, 14 * 86400) + + logger.debug(f"etag object cached for {expires_time} seconds") + logger.debug("Caching due to etag") + self._cache_set(cache_url, request, response, body, expires_time) + + # Add to the cache any permanent redirects. We do this before looking + # that the Date headers. + elif int(response.status) in PERMANENT_REDIRECT_STATUSES: + logger.debug("Caching permanent redirect") + self._cache_set(cache_url, request, response, b"") + + # Add to the cache if the response headers demand it. If there + # is no date header then we can't do anything about expiring + # the cache. + elif "date" in response_headers: + time_tuple = parsedate_tz(response_headers["date"]) + assert time_tuple is not None + date = calendar.timegm(time_tuple[:6]) + # cache when there is a max-age > 0 + max_age = cc.get("max-age") + if max_age is not None and max_age > 0: + logger.debug("Caching b/c date exists and max-age > 0") + expires_time = max_age + self._cache_set( + cache_url, + request, + response, + body, + expires_time, + ) + + # If the request can expire, it means we should cache it + # in the meantime. + elif "expires" in response_headers: + if response_headers["expires"]: + expires = parsedate_tz(response_headers["expires"]) + if expires is not None: + expires_time = calendar.timegm(expires[:6]) - date + else: + expires_time = None + + logger.debug( + "Caching b/c of expires header. expires in {} seconds".format( + expires_time + ) + ) + self._cache_set( + cache_url, + request, + response, + body, + expires_time, + ) + + def update_cached_response( + self, request: PreparedRequest, response: HTTPResponse + ) -> HTTPResponse: + """On a 304 we will get a new set of headers that we want to + update our cached value with, assuming we have one. + + This should only ever be called when we've sent an ETag and + gotten a 304 as the response. + """ + assert request.url is not None + cache_url = self.cache_url(request.url) + cached_response = self._load_from_cache(request) + + if not cached_response: + # we didn't have a cached response + return response + + # Lets update our headers with the headers from the new request: + # http://tools.ietf.org/html/draft-ietf-httpbis-p4-conditional-26#section-4.1 + # + # The server isn't supposed to send headers that would make + # the cached body invalid. But... just in case, we'll be sure + # to strip out ones we know that might be problmatic due to + # typical assumptions. + excluded_headers = ["content-length"] + + cached_response.headers.update( + { + k: v + for k, v in response.headers.items() + if k.lower() not in excluded_headers + } + ) + + # we want a 200 b/c we have content via the cache + cached_response.status = 200 + + # update our cache + self._cache_set(cache_url, request, cached_response) + + return cached_response diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py new file mode 100644 index 00000000000..25143902a26 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py @@ -0,0 +1,119 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations + +import mmap +from tempfile import NamedTemporaryFile +from typing import TYPE_CHECKING, Any, Callable + +if TYPE_CHECKING: + from http.client import HTTPResponse + + +class CallbackFileWrapper: + """ + Small wrapper around a fp object which will tee everything read into a + buffer, and when that file is closed it will execute a callback with the + contents of that buffer. + + All attributes are proxied to the underlying file object. + + This class uses members with a double underscore (__) leading prefix so as + not to accidentally shadow an attribute. + + The data is stored in a temporary file until it is all available. As long + as the temporary files directory is disk-based (sometimes it's a + memory-backed-``tmpfs`` on Linux), data will be unloaded to disk if memory + pressure is high. For small files the disk usually won't be used at all, + it'll all be in the filesystem memory cache, so there should be no + performance impact. + """ + + def __init__( + self, fp: HTTPResponse, callback: Callable[[bytes], None] | None + ) -> None: + self.__buf = NamedTemporaryFile("rb+", delete=True) + self.__fp = fp + self.__callback = callback + + def __getattr__(self, name: str) -> Any: + # The vaguaries of garbage collection means that self.__fp is + # not always set. By using __getattribute__ and the private + # name[0] allows looking up the attribute value and raising an + # AttributeError when it doesn't exist. This stop thigns from + # infinitely recursing calls to getattr in the case where + # self.__fp hasn't been set. + # + # [0] https://docs.python.org/2/reference/expressions.html#atom-identifiers + fp = self.__getattribute__("_CallbackFileWrapper__fp") + return getattr(fp, name) + + def __is_fp_closed(self) -> bool: + try: + return self.__fp.fp is None + + except AttributeError: + pass + + try: + closed: bool = self.__fp.closed + return closed + + except AttributeError: + pass + + # We just don't cache it then. + # TODO: Add some logging here... + return False + + def _close(self) -> None: + if self.__callback: + if self.__buf.tell() == 0: + # Empty file: + result = b"" + else: + # Return the data without actually loading it into memory, + # relying on Python's buffer API and mmap(). mmap() just gives + # a view directly into the filesystem's memory cache, so it + # doesn't result in duplicate memory use. + self.__buf.seek(0, 0) + result = memoryview( + mmap.mmap(self.__buf.fileno(), 0, access=mmap.ACCESS_READ) + ) + self.__callback(result) + + # We assign this to None here, because otherwise we can get into + # really tricky problems where the CPython interpreter dead locks + # because the callback is holding a reference to something which + # has a __del__ method. Setting this to None breaks the cycle + # and allows the garbage collector to do it's thing normally. + self.__callback = None + + # Closing the temporary file releases memory and frees disk space. + # Important when caching big files. + self.__buf.close() + + def read(self, amt: int | None = None) -> bytes: + data: bytes = self.__fp.read(amt) + if data: + # We may be dealing with b'', a sign that things are over: + # it's passed e.g. after we've already closed self.__buf. + self.__buf.write(data) + if self.__is_fp_closed(): + self._close() + + return data + + def _safe_read(self, amt: int) -> bytes: + data: bytes = self.__fp._safe_read(amt) # type: ignore[attr-defined] + if amt == 2 and data == b"\r\n": + # urllib executes this read to toss the CRLF at the end + # of the chunk. + return data + + self.__buf.write(data) + if self.__is_fp_closed(): + self._close() + + return data diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py new file mode 100644 index 00000000000..f6e5634e385 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py @@ -0,0 +1,154 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations + +import calendar +import time +from datetime import datetime, timedelta, timezone +from email.utils import formatdate, parsedate, parsedate_tz +from typing import TYPE_CHECKING, Any, Mapping + +if TYPE_CHECKING: + from pip._vendor.urllib3 import HTTPResponse + +TIME_FMT = "%a, %d %b %Y %H:%M:%S GMT" + + +def expire_after(delta: timedelta, date: datetime | None = None) -> datetime: + date = date or datetime.now(timezone.utc) + return date + delta + + +def datetime_to_header(dt: datetime) -> str: + return formatdate(calendar.timegm(dt.timetuple())) + + +class BaseHeuristic: + def warning(self, response: HTTPResponse) -> str | None: + """ + Return a valid 1xx warning header value describing the cache + adjustments. + + The response is provided too allow warnings like 113 + http://tools.ietf.org/html/rfc7234#section-5.5.4 where we need + to explicitly say response is over 24 hours old. + """ + return '110 - "Response is Stale"' + + def update_headers(self, response: HTTPResponse) -> dict[str, str]: + """Update the response headers with any new headers. + + NOTE: This SHOULD always include some Warning header to + signify that the response was cached by the client, not + by way of the provided headers. + """ + return {} + + def apply(self, response: HTTPResponse) -> HTTPResponse: + updated_headers = self.update_headers(response) + + if updated_headers: + response.headers.update(updated_headers) + warning_header_value = self.warning(response) + if warning_header_value is not None: + response.headers.update({"Warning": warning_header_value}) + + return response + + +class OneDayCache(BaseHeuristic): + """ + Cache the response by providing an expires 1 day in the + future. + """ + + def update_headers(self, response: HTTPResponse) -> dict[str, str]: + headers = {} + + if "expires" not in response.headers: + date = parsedate(response.headers["date"]) + expires = expire_after(timedelta(days=1), date=datetime(*date[:6], tzinfo=timezone.utc)) # type: ignore[index,misc] + headers["expires"] = datetime_to_header(expires) + headers["cache-control"] = "public" + return headers + + +class ExpiresAfter(BaseHeuristic): + """ + Cache **all** requests for a defined time period. + """ + + def __init__(self, **kw: Any) -> None: + self.delta = timedelta(**kw) + + def update_headers(self, response: HTTPResponse) -> dict[str, str]: + expires = expire_after(self.delta) + return {"expires": datetime_to_header(expires), "cache-control": "public"} + + def warning(self, response: HTTPResponse) -> str | None: + tmpl = "110 - Automatically cached for %s. Response might be stale" + return tmpl % self.delta + + +class LastModified(BaseHeuristic): + """ + If there is no Expires header already, fall back on Last-Modified + using the heuristic from + http://tools.ietf.org/html/rfc7234#section-4.2.2 + to calculate a reasonable value. + + Firefox also does something like this per + https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ + http://lxr.mozilla.org/mozilla-release/source/netwerk/protocol/http/nsHttpResponseHead.cpp#397 + Unlike mozilla we limit this to 24-hr. + """ + + cacheable_by_default_statuses = { + 200, + 203, + 204, + 206, + 300, + 301, + 404, + 405, + 410, + 414, + 501, + } + + def update_headers(self, resp: HTTPResponse) -> dict[str, str]: + headers: Mapping[str, str] = resp.headers + + if "expires" in headers: + return {} + + if "cache-control" in headers and headers["cache-control"] != "public": + return {} + + if resp.status not in self.cacheable_by_default_statuses: + return {} + + if "date" not in headers or "last-modified" not in headers: + return {} + + time_tuple = parsedate_tz(headers["date"]) + assert time_tuple is not None + date = calendar.timegm(time_tuple[:6]) + last_modified = parsedate(headers["last-modified"]) + if last_modified is None: + return {} + + now = time.time() + current_age = max(0, now - date) + delta = date - calendar.timegm(last_modified) + freshness_lifetime = max(0, min(delta / 10, 24 * 3600)) + if freshness_lifetime <= current_age: + return {} + + expires = date + freshness_lifetime + return {"expires": time.strftime(TIME_FMT, time.gmtime(expires))} + + def warning(self, resp: HTTPResponse) -> str | None: + return None diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/py.typed b/venv/Lib/site-packages/pip/_vendor/cachecontrol/py.typed new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py new file mode 100644 index 00000000000..a49487a1493 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py @@ -0,0 +1,146 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations + +import io +from typing import IO, TYPE_CHECKING, Any, Mapping, cast + +from pip._vendor import msgpack +from pip._vendor.requests.structures import CaseInsensitiveDict +from pip._vendor.urllib3 import HTTPResponse + +if TYPE_CHECKING: + from pip._vendor.requests import PreparedRequest + + +class Serializer: + serde_version = "4" + + def dumps( + self, + request: PreparedRequest, + response: HTTPResponse, + body: bytes | None = None, + ) -> bytes: + response_headers: CaseInsensitiveDict[str] = CaseInsensitiveDict( + response.headers + ) + + if body is None: + # When a body isn't passed in, we'll read the response. We + # also update the response with a new file handler to be + # sure it acts as though it was never read. + body = response.read(decode_content=False) + response._fp = io.BytesIO(body) # type: ignore[assignment] + response.length_remaining = len(body) + + data = { + "response": { + "body": body, # Empty bytestring if body is stored separately + "headers": {str(k): str(v) for k, v in response.headers.items()}, + "status": response.status, + "version": response.version, + "reason": str(response.reason), + "decode_content": response.decode_content, + } + } + + # Construct our vary headers + data["vary"] = {} + if "vary" in response_headers: + varied_headers = response_headers["vary"].split(",") + for header in varied_headers: + header = str(header).strip() + header_value = request.headers.get(header, None) + if header_value is not None: + header_value = str(header_value) + data["vary"][header] = header_value + + return b",".join([f"cc={self.serde_version}".encode(), self.serialize(data)]) + + def serialize(self, data: dict[str, Any]) -> bytes: + return cast(bytes, msgpack.dumps(data, use_bin_type=True)) + + def loads( + self, + request: PreparedRequest, + data: bytes, + body_file: IO[bytes] | None = None, + ) -> HTTPResponse | None: + # Short circuit if we've been given an empty set of data + if not data: + return None + + # Previous versions of this library supported other serialization + # formats, but these have all been removed. + if not data.startswith(f"cc={self.serde_version},".encode()): + return None + + data = data[5:] + return self._loads_v4(request, data, body_file) + + def prepare_response( + self, + request: PreparedRequest, + cached: Mapping[str, Any], + body_file: IO[bytes] | None = None, + ) -> HTTPResponse | None: + """Verify our vary headers match and construct a real urllib3 + HTTPResponse object. + """ + # Special case the '*' Vary value as it means we cannot actually + # determine if the cached response is suitable for this request. + # This case is also handled in the controller code when creating + # a cache entry, but is left here for backwards compatibility. + if "*" in cached.get("vary", {}): + return None + + # Ensure that the Vary headers for the cached response match our + # request + for header, value in cached.get("vary", {}).items(): + if request.headers.get(header, None) != value: + return None + + body_raw = cached["response"].pop("body") + + headers: CaseInsensitiveDict[str] = CaseInsensitiveDict( + data=cached["response"]["headers"] + ) + if headers.get("transfer-encoding", "") == "chunked": + headers.pop("transfer-encoding") + + cached["response"]["headers"] = headers + + try: + body: IO[bytes] + if body_file is None: + body = io.BytesIO(body_raw) + else: + body = body_file + except TypeError: + # This can happen if cachecontrol serialized to v1 format (pickle) + # using Python 2. A Python 2 str(byte string) will be unpickled as + # a Python 3 str (unicode string), which will cause the above to + # fail with: + # + # TypeError: 'str' does not support the buffer interface + body = io.BytesIO(body_raw.encode("utf8")) + + # Discard any `strict` parameter serialized by older version of cachecontrol. + cached["response"].pop("strict", None) + + return HTTPResponse(body=body, preload_content=False, **cached["response"]) + + def _loads_v4( + self, + request: PreparedRequest, + data: bytes, + body_file: IO[bytes] | None = None, + ) -> HTTPResponse | None: + try: + cached = msgpack.loads(data, raw=False) + except ValueError: + return None + + return self.prepare_response(request, cached, body_file) diff --git a/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py b/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py new file mode 100644 index 00000000000..f618bc363f1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: 2015 Eric Larson +# +# SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations + +from typing import TYPE_CHECKING, Collection + +from pip._vendor.cachecontrol.adapter import CacheControlAdapter +from pip._vendor.cachecontrol.cache import DictCache + +if TYPE_CHECKING: + from pip._vendor import requests + + from pip._vendor.cachecontrol.cache import BaseCache + from pip._vendor.cachecontrol.controller import CacheController + from pip._vendor.cachecontrol.heuristics import BaseHeuristic + from pip._vendor.cachecontrol.serialize import Serializer + + +def CacheControl( + sess: requests.Session, + cache: BaseCache | None = None, + cache_etags: bool = True, + serializer: Serializer | None = None, + heuristic: BaseHeuristic | None = None, + controller_class: type[CacheController] | None = None, + adapter_class: type[CacheControlAdapter] | None = None, + cacheable_methods: Collection[str] | None = None, +) -> requests.Session: + cache = DictCache() if cache is None else cache + adapter_class = adapter_class or CacheControlAdapter + adapter = adapter_class( + cache, + cache_etags=cache_etags, + serializer=serializer, + heuristic=heuristic, + controller_class=controller_class, + cacheable_methods=cacheable_methods, + ) + sess.mount("http://", adapter) + sess.mount("https://", adapter) + + return sess diff --git a/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py b/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py new file mode 100644 index 00000000000..d321f1bc3ab --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py @@ -0,0 +1,4 @@ +from .core import contents, where + +__all__ = ["contents", "where"] +__version__ = "2024.07.04" diff --git a/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py b/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py new file mode 100644 index 00000000000..00376349e69 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py @@ -0,0 +1,12 @@ +import argparse + +from pip._vendor.certifi import contents, where + +parser = argparse.ArgumentParser() +parser.add_argument("-c", "--contents", action="store_true") +args = parser.parse_args() + +if args.contents: + print(contents()) +else: + print(where()) diff --git a/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem b/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem new file mode 100644 index 00000000000..a6581589ba1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem @@ -0,0 +1,4798 @@ + +# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Label: "GlobalSign Root CA" +# Serial: 4835703278459707669005204 +# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a +# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c +# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Premium 2048 Secure Server CA" +# Serial: 946069240 +# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90 +# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31 +# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77 +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 +MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp +YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG +A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq +K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe +sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX +MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT +XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ +HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH +4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub +j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo +U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b +u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ +bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er +fF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Label: "Baltimore CyberTrust Root" +# Serial: 33554617 +# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 +# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 +# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX +DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y +ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy +VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr +mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr +IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK +mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu +XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy +dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye +jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 +BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 +DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 +9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx +jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 +Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz +ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS +R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Label: "Entrust Root Certification Authority" +# Serial: 1164660820 +# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 +# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 +# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +# Issuer: CN=AAA Certificate Services O=Comodo CA Limited +# Subject: CN=AAA Certificate Services O=Comodo CA Limited +# Label: "Comodo AAA Services root" +# Serial: 1 +# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 +# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 +# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2" +# Serial: 1289 +# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b +# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 +# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa +GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg +Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J +WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB +rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp ++ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 +ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i +Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz +PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og +/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH +oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI +yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud +EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 +A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL +MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f +BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn +g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl +fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K +WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha +B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc +hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR +TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD +mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z +ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y +4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza +8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3" +# Serial: 1478 +# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf +# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 +# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM +V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB +4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr +H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd +8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv +vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT +mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe +btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc +T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt +WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ +c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A +4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD +VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG +CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 +aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu +dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw +czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G +A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC +TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg +Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 +7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem +d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd ++LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B +4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN +t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x +DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 +k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s +zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j +Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT +mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK +4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Label: "XRamp Global CA Root" +# Serial: 107108908803651509692980124233745014957 +# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 +# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 +# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB +gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk +MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY +UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx +NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 +dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy +dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 +38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP +KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q +DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 +qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa +JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi +PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P +BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs +jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 +eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR +vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa +IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy +i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ +O+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Label: "Go Daddy Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 +# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 +# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- + +# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Label: "Starfield Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 +# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a +# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl +MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp +U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw +NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp +ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 +DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf +8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN ++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 +X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa +K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA +1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G +A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR +zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 +YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD +bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w +DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 +L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D +eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp +VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY +WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root CA" +# Serial: 17154717934120587862167794914071425081 +# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 +# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 +# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert High Assurance EV Root CA" +# Serial: 3553400076410547919724730734378100087 +# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a +# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 +# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Label: "SwissSign Gold CA - G2" +# Serial: 13492815561806991280 +# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 +# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 +# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV +BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln +biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF +MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT +d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 +76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ +bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c +6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE +emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd +MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt +MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y +MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y +FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi +aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM +gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB +qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 +lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn +8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 +45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO +UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 +O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC +bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv +GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a +77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC +hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 +92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp +Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w +ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt +Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign Silver CA - G2 O=SwissSign AG +# Subject: CN=SwissSign Silver CA - G2 O=SwissSign AG +# Label: "SwissSign Silver CA - G2" +# Serial: 5700383053117599563 +# MD5 Fingerprint: e0:06:a1:c9:7d:cf:c9:fc:0d:c0:56:75:96:d8:62:13 +# SHA1 Fingerprint: 9b:aa:e5:9f:56:ee:21:cb:43:5a:be:25:93:df:a7:f0:40:d1:1d:cb +# SHA256 Fingerprint: be:6c:4d:a2:bb:b9:ba:59:b6:f3:93:97:68:37:42:46:c3:c0:05:99:3f:a9:8f:02:0d:1d:ed:be:d4:8a:81:d5 +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UE +BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWdu +IFNpbHZlciBDQSAtIEcyMB4XDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0Nlow +RzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMY +U3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644N0Mv +Fz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7br +YT7QbNHm+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieF +nbAVlDLaYQ1HTWBCrpJH6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH +6ATK72oxh9TAtvmUcXtnZLi2kUpCe2UuMGoM9ZDulebyzYLs2aFK7PayS+VFheZt +eJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5hqAaEuSh6XzjZG6k4sIN/ +c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5FZGkECwJ +MoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRH +HTBsROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTf +jNFusB3hB48IHpmccelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb6 +5i/4z3GcRm25xBWNOHkDRUjvxF3XCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOB +rDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU +F6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRBtjpbO8tFnb0c +wpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIB +AHPGgeAn0i0P4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShp +WJHckRE1qTodvBqlYJ7YH39FkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9 +xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L3XWgwF15kIwb4FDm3jH+mHtwX6WQ +2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx/uNncqCxv1yL5PqZ +IseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFaDGi8 +aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2X +em1ZqSqPe97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQR +dAtq/gsD/KNVV4n+SsuuWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/ +OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+ +hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ubDgEj8Z+7fNzcbBGXJbLy +tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +# Issuer: CN=SecureTrust CA O=SecureTrust Corporation +# Subject: CN=SecureTrust CA O=SecureTrust Corporation +# Label: "SecureTrust CA" +# Serial: 17199774589125277788362757014266862032 +# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 +# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 +# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz +MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv +cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz +Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO +0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao +wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj +7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS +8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT +BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg +JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 +6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ +3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm +D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS +CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +# Issuer: CN=Secure Global CA O=SecureTrust Corporation +# Subject: CN=Secure Global CA O=SecureTrust Corporation +# Label: "Secure Global CA" +# Serial: 9751836167731051554232119481456978597 +# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de +# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b +# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx +MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg +Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ +iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa +/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ +jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI +HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 +sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w +gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw +KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG +AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L +URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO +H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm +I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY +iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO Certification Authority O=COMODO CA Limited +# Label: "COMODO Certification Authority" +# Serial: 104350513648249232941998508985834464573 +# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 +# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b +# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB +gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV +BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw +MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl +YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P +RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 +UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI +2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 +Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp ++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ +DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O +nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW +/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g +PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u +QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY +SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv +IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 +zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd +BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB +ZQ== +-----END CERTIFICATE----- + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=Certigna O=Dhimyotis +# Subject: CN=Certigna O=Dhimyotis +# Label: "Certigna" +# Serial: 18364802974209362175 +# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff +# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 +# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV +BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X +DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ +BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 +QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny +gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw +zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q +130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 +JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw +ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT +AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj +AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG +9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h +bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc +fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu +HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w +t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Label: "ePKI Root Certification Authority" +# Serial: 28956088682735189655030529057352760477 +# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 +# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 +# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw +IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL +SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH +SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh +ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X +DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 +TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ +fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA +sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU +WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS +nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH +dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip +NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC +AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF +MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB +uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl +PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP +JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ +gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 +j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 +5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB +o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS +/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z +Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE +W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D +hNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +# Issuer: O=certSIGN OU=certSIGN ROOT CA +# Subject: O=certSIGN OU=certSIGN ROOT CA +# Label: "certSIGN ROOT CA" +# Serial: 35210227249154 +# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 +# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b +# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT +AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD +QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP +MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do +0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ +UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d +RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ +OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv +JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C +AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O +BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ +LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY +MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ +44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I +Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw +i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN +9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" +# Serial: 80544274841616 +# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 +# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 +# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG +EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 +MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl +cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR +dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB +pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM +b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm +aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz +IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT +lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz +AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 +VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG +ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 +BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M +U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh +bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C ++C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F +uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 +XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. +# Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. +# Label: "SecureSign RootCA11" +# Serial: 1 +# MD5 Fingerprint: b7:52:74:e2:92:b4:80:93:f2:75:e4:cc:d7:f2:ea:26 +# SHA1 Fingerprint: 3b:c4:9f:48:f8:f3:73:a0:9c:1e:bd:f8:5b:b1:c3:65:c7:d8:11:b3 +# SHA256 Fingerprint: bf:0f:ee:fb:9e:3a:58:1a:d5:f9:e9:db:75:89:98:57:43:d2:61:08:5c:4d:31:4f:6f:5d:72:59:aa:42:16:12 +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr +MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG +A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0 +MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp +Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD +QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz +i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8 +h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV +MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9 +UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni +8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC +h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD +VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB +AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm +KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ +X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr +QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5 +pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN +QSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Label: "Microsec e-Szigno Root CA 2009" +# Serial: 14014712776195784473 +# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 +# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e +# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD +VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 +ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G +CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y +OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx +FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp +Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP +kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc +cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U +fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 +N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC +xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 ++rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM +Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG +SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h +mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk +ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c +2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t +HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=Izenpe.com O=IZENPE S.A. +# Subject: CN=Izenpe.com O=IZENPE S.A. +# Label: "Izenpe.com" +# Serial: 917563065490389241595536686991402621 +# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 +# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 +# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4 +MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6 +ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD +VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j +b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq +scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO +xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H +LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX +uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD +yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+ +JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q +rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN +BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L +hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB +QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+ +HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu +Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg +QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB +BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA +A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb +laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56 +awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo +JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw +LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT +VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk +LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb +UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/ +QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+ +naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls +QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Commercial O=AffirmTrust +# Subject: CN=AffirmTrust Commercial O=AffirmTrust +# Label: "AffirmTrust Commercial" +# Serial: 8608355977964138876 +# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 +# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 +# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Networking O=AffirmTrust +# Subject: CN=AffirmTrust Networking O=AffirmTrust +# Label: "AffirmTrust Networking" +# Serial: 8957382827206547757 +# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f +# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f +# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium O=AffirmTrust +# Subject: CN=AffirmTrust Premium O=AffirmTrust +# Label: "AffirmTrust Premium" +# Serial: 7893706540734352110 +# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 +# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 +# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust +# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust +# Label: "AffirmTrust Premium ECC" +# Serial: 8401224907861490260 +# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d +# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb +# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA" +# Serial: 279744 +# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 +# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e +# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM +MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D +ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU +cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 +WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg +Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw +IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH +UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM +TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU +BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM +kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x +AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV +HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y +sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL +I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 +J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY +VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Label: "TWCA Root Certification Authority" +# Serial: 1 +# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 +# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 +# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES +MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU +V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz +WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO +LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE +AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH +K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX +RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z +rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx +3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq +hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC +MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls +XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D +lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn +aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ +YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Label: "Security Communication RootCA2" +# Serial: 0 +# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 +# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 +# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl +MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe +U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX +DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy +dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj +YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV +OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr +zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM +VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ +hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO +ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw +awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs +OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF +coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc +okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 +t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy +1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ +SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Label: "Actalis Authentication Root CA" +# Serial: 6271844772424770508 +# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 +# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac +# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 2 Root CA" +# Serial: 2 +# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 +# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 +# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr +6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV +L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 +1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx +MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ +QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB +arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr +Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi +FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS +P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN +9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz +uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h +9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t +OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo ++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 +KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 +DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us +H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ +I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 +5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h +3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz +Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 3 Root CA" +# Serial: 2 +# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec +# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 +# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y +ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E +N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 +tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX +0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c +/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X +KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY +zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS +O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D +34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP +K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv +Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj +QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS +IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 +HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa +O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv +033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u +dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE +kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 +3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD +u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq +4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 3" +# Serial: 1 +# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef +# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 +# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN +8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ +RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 +hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 +ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM +EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 +A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy +WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ +1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 +6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT +91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p +TpPDpFQUWw== +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 2009" +# Serial: 623603 +# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f +# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 +# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha +ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM +HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 +UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 +tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R +ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM +lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp +/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G +A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy +MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl +cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js +L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL +BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni +acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K +zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 +PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y +Johw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 EV 2009" +# Serial: 623604 +# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 +# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 +# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw +NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV +BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn +ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 +3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z +qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR +p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 +HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw +ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea +HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw +Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh +c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E +RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt +dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku +Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp +3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF +CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na +xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX +KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +# Issuer: CN=CA Disig Root R2 O=Disig a.s. +# Subject: CN=CA Disig Root R2 O=Disig a.s. +# Label: "CA Disig Root R2" +# Serial: 10572350602393338211 +# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 +# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 +# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV +BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu +MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy +MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx +EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe +NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH +PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I +x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe +QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR +yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO +QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 +H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ +QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD +i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs +nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 +rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI +hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf +GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb +lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka ++elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal +TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i +nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 +gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr +G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os +zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x +L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Label: "ACCVRAIZ1" +# Serial: 6828503384748696800 +# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 +# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 +# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE +AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw +CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ +BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND +VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY +HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo +G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA +lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr +IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ +0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH +k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 +4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO +m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa +cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl +uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI +KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls +ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG +AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT +VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG +CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA +cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA +QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA +7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA +cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA +QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA +czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu +aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt +aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud +DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF +BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp +D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU +JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m +AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD +vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms +tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH +7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA +h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF +d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H +pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA Global Root CA" +# Serial: 3262 +# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 +# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 +# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx +EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT +VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 +NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT +B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF +10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz +0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh +MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH +zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc +46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 +yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi +laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP +oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA +BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE +qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm +4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL +1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF +H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo +RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ +nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh +15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW +6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW +nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j +wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz +aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy +KwbQBM0= +-----END CERTIFICATE----- + +# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Label: "TeliaSonera Root CA v1" +# Serial: 199041966741090107964904287217786801558 +# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c +# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 +# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw +NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv +b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD +VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F +VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 +7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X +Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ +/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs +81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm +dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe +Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu +sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 +pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs +slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ +arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD +VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG +9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl +dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj +TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed +Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 +Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI +OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 +vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW +t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn +HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx +SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 2" +# Serial: 1 +# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a +# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 +# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd +AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC +FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi +1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq +jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ +wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ +WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy +NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC +uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw +IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 +g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP +BSeOE6Fuwg== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot 2011 O=Atos +# Subject: CN=Atos TrustedRoot 2011 O=Atos +# Label: "Atos TrustedRoot 2011" +# Serial: 6643877497813316402 +# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 +# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 +# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE +AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG +EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM +FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC +REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp +Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM +VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ +SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ +4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L +cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi +eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG +A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 +DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j +vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP +DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc +maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D +lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv +KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 1 G3" +# Serial: 687049649626669250736271037606554624078720034195 +# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab +# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 +# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 +MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV +wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe +rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 +68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh +4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp +UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o +abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc +3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G +KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt +hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO +Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt +zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD +ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 +cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN +qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 +YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv +b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 +8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k +NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj +ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp +q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt +nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2 G3" +# Serial: 390156079458959257446133169266079962026824725800 +# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 +# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 +# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 +MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf +qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW +n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym +c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ +O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 +o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j +IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq +IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz +8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh +vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l +7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG +cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD +ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC +roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga +W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n +lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE ++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV +csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd +dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg +KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM +HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 +WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3 G3" +# Serial: 268090761170461462463995952157327242137089239581 +# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 +# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d +# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 +MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR +/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu +FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR +U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c +ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR +FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k +A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw +eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl +sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp +VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q +A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ +ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD +ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI +FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv +oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg +u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP +0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf +3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl +8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ +DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN +PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ +ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G2" +# Serial: 15385348160840213938643033620894905419 +# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d +# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f +# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA +n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc +biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp +EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA +bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu +YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW +BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI +QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I +0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni +lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 +B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv +ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G3" +# Serial: 15459312981008553731928384953135426796 +# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb +# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 +# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg +RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf +Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q +RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD +AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY +JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv +6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G2" +# Serial: 4293743540046975378534879503202253541 +# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 +# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 +# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G3" +# Serial: 7089244469030293291760083333884364146 +# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca +# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e +# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe +Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw +EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x +IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG +fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO +Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd +BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx +AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ +oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 +sycX +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Trusted Root G4" +# Serial: 7451500558977370777930084869016614236 +# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 +# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 +# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg +RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y +ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If +xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV +ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO +DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ +jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ +CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi +EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM +fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY +uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK +chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t +9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 +SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd ++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc +fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa +sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N +cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N +0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie +4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI +r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 +/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm +gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ +-----END CERTIFICATE----- + +# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Label: "COMODO RSA Certification Authority" +# Serial: 101909084537582093308941363524873193117 +# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 +# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 +# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X +pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC +9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV +/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf +Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z ++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w +qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah +SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC +u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf +Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq +crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl +wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM +4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV +2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna +FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ +CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK +boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke +jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL +S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb +QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl +0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB +NVOFBkpdn627G190 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Label: "USERTrust RSA Certification Authority" +# Serial: 2645093764781058787591871645665788717 +# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 +# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e +# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw +MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV +BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B +3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY +tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ +Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 +VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT +79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 +c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT +Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l +c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee +UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE +Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF +Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO +VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 +ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs +8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR +iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze +Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ +XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ +qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB +VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB +L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG +jjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Label: "USERTrust ECC Certification Authority" +# Serial: 123013823720199481456569720443997572134 +# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 +# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 +# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl +eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT +JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg +VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo +I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng +o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G +A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB +zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW +RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Label: "GlobalSign ECC Root CA - R5" +# Serial: 32785792099990507226680698011560947931244 +# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 +# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa +# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc +8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke +hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI +KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg +515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO +xwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Label: "IdenTrust Commercial Root CA 1" +# Serial: 13298821034946342390520003877796839426 +# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 +# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 +# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu +VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw +MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw +JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT +3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU ++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp +S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 +bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi +T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL +vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK +Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK +dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT +c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv +l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N +iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD +ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt +LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 +nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 ++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK +W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT +AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq +l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG +4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ +mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A +7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Label: "IdenTrust Public Sector Root CA 1" +# Serial: 13298821034946342390521976156843933698 +# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba +# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd +# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu +VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN +MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 +MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 +ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy +RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS +bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF +/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R +3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw +EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy +9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V +GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ +2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV +WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD +W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN +AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV +DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 +TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G +lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW +mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df +WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 ++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ +tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA +GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv +8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - G2" +# Serial: 1246989352 +# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 +# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 +# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy +NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T +RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN +cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW +wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 +U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 +jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN +BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ +jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v +1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R +nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH +VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - EC1" +# Serial: 51543124481930649114116133369 +# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc +# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 +# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 +d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu +dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq +RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy +MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD +VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g +Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi +A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt +ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH +Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC +R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX +hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority +# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority +# Label: "CFCA EV ROOT" +# Serial: 407555286 +# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 +# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 +# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD +TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx +MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP +T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 +sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL +TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 +/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp +7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz +EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt +hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP +a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot +aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg +TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV +PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv +cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL +tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT +ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL +jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS +ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy +P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 +xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d +Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN +5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe +/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z +AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ +5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GB CA" +# Serial: 157768595616588414422159278966750757568 +# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d +# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed +# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt +MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg +Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i +YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x +CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG +b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 +HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx +WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX +1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk +u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P +99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r +M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB +BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh +cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 +gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO +ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf +aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Label: "SZAFIR ROOT CA2" +# Serial: 357043034767186914217277344587386743377558296292 +# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 +# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de +# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 +ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw +NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L +cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg +Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN +QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT +3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw +3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 +3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 +BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN +XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF +AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw +8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG +nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP +oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy +d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg +LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA 2" +# Serial: 44979900017204383099463764357512596969 +# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 +# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 +# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB +gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu +QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG +A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz +OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ +VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 +b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA +DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn +0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB +OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE +fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E +Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m +o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i +sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW +OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez +Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS +adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n +3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ +F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf +CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 +XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm +djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ +WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb +AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq +P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko +b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj +XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P +5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi +DrW5viSP +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce +# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 +# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix +DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k +IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT +N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v +dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG +A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh +ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx +QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA +4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 +AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 +4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C +ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV +9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD +gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 +Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq +NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko +LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd +ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I +XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI +M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot +9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V +Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea +j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh +X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ +l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf +bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 +pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK +e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 +vm9qp/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef +# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 +# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN +BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl +bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv +b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ +BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj +YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 +MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 +dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg +QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa +jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi +C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep +lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof +TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X1 O=Internet Security Research Group +# Subject: CN=ISRG Root X1 O=Internet Security Research Group +# Label: "ISRG Root X1" +# Serial: 172886928669790476064670243504169061120 +# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e +# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 +# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Label: "AC RAIZ FNMT-RCM" +# Serial: 485876308206448804701554682760554759 +# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d +# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 +# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx +CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ +WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ +BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG +Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ +yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf +BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz +WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF +tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z +374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC +IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL +mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 +wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS +MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 +ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet +UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H +YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 +LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 +RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM +LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf +77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N +JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm +fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp +6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp +1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B +9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok +RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv +uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 1 O=Amazon +# Subject: CN=Amazon Root CA 1 O=Amazon +# Label: "Amazon Root CA 1" +# Serial: 143266978916655856878034712317230054538369994 +# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 +# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 +# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj +ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM +9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw +IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 +VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L +93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm +jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA +A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI +U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs +N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv +o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU +5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy +rqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 2 O=Amazon +# Subject: CN=Amazon Root CA 2 O=Amazon +# Label: "Amazon Root CA 2" +# Serial: 143266982885963551818349160658925006970653239 +# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 +# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a +# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK +gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ +W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg +1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K +8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r +2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me +z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR +8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj +mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz +7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 ++XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI +0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm +UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 +LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS +k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl +7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm +btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl +urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ +fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 +n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE +76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H +9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT +4PsJYGw= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 3 O=Amazon +# Subject: CN=Amazon Root CA 3 O=Amazon +# Label: "Amazon Root CA 3" +# Serial: 143266986699090766294700635381230934788665930 +# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 +# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e +# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl +ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr +ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr +BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM +YyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 4 O=Amazon +# Subject: CN=Amazon Root CA 4 O=Amazon +# Label: "Amazon Root CA 4" +# Serial: 143266989758080763974105200630763877849284878 +# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd +# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be +# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi +9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk +M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB +MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw +CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW +1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +# Serial: 1 +# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 +# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca +# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx +GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp +bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w +KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 +BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy +dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG +EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll +IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU +QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT +TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg +LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 +a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr +LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr +N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X +YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ +iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f +AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH +V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf +IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 +lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c +8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf +lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +# Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Label: "GDCA TrustAUTH R5 ROOT" +# Serial: 9009899650740120186 +# MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4 +# SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4 +# SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93 +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE +BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0 +MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w +HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj +Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj +TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u +KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj +qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm +MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12 +ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP +zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk +L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC +jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA +HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC +AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm +DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5 +COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry +L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf +JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg +IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io +2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV +09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ +XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq +T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe +MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Label: "SSL.com Root Certification Authority RSA" +# Serial: 8875640296558310041 +# MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29 +# SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb +# SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69 +-----BEGIN CERTIFICATE----- +MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE +BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK +DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz +OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R +xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX +qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC +C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3 +6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh +/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF +YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E +JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc +US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8 +ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm ++Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi +M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G +A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV +cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc +Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs +PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/ +q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0 +cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr +a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I +H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y +K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu +nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf +oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY +Ic2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com Root Certification Authority ECC" +# Serial: 8495723813297216424 +# MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e +# SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a +# SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65 +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz +WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0 +b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS +b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI +7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg +CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud +EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD +VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T +kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+ +gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority RSA R2" +# Serial: 6248227494352943350 +# MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95 +# SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a +# SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV +BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE +CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy +MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G +A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD +DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq +M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf +OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa +4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9 +HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR +aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA +b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ +Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV +PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO +pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu +UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY +MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4 +9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW +s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5 +Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg +cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM +79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz +/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt +ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm +Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK +QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ +w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi +S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07 +mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority ECC" +# Serial: 3182246526754555285 +# MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90 +# SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d +# SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8 +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx +NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv +bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA +VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku +WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX +5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ +ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg +h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Label: "GlobalSign Root CA - R6" +# Serial: 1417766617973444989252670301619537 +# MD5 Fingerprint: 4f:dd:07:e4:d4:22:64:39:1e:0c:37:42:ea:d1:c6:ae +# SHA1 Fingerprint: 80:94:64:0e:b5:a7:a1:ca:11:9c:1f:dd:d5:9f:81:02:63:a7:fb:d1 +# SHA256 Fingerprint: 2c:ab:ea:fe:37:d0:6c:a2:2a:ba:73:91:c0:03:3d:25:98:29:52:c4:53:64:73:49:76:3a:3a:b5:ad:6c:cf:69 +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg +MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx +MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET +MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI +xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k +ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD +aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw +LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw +1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX +k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2 +SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h +bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n +WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY +rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce +MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu +bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt +Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61 +55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj +vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf +cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz +oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp +nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs +pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v +JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R +8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4 +5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GC CA" +# Serial: 44084345621038548146064804565436152554 +# MD5 Fingerprint: a9:d6:b9:2d:2f:93:64:f8:a5:69:ca:91:e9:68:07:23 +# SHA1 Fingerprint: e0:11:84:5e:34:de:be:88:81:b9:9c:f6:16:26:d1:96:1f:c3:b9:31 +# SHA256 Fingerprint: 85:60:f9:1c:36:24:da:ba:95:70:b5:fe:a0:db:e3:6f:f1:1a:83:23:be:94:86:85:4f:b3:f3:4a:55:71:19:8d +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw +CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91 +bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg +Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ +BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu +ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS +b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni +eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W +p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T +rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV +57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg +Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +# Issuer: CN=UCA Global G2 Root O=UniTrust +# Subject: CN=UCA Global G2 Root O=UniTrust +# Label: "UCA Global G2 Root" +# Serial: 124779693093741543919145257850076631279 +# MD5 Fingerprint: 80:fe:f0:c4:4a:f0:5c:62:32:9f:1c:ba:78:a9:50:f8 +# SHA1 Fingerprint: 28:f9:78:16:19:7a:ff:18:25:18:aa:44:fe:c1:a0:ce:5c:b6:4c:8a +# SHA256 Fingerprint: 9b:ea:11:c9:76:fe:01:47:64:c1:be:56:a6:f9:14:b5:a5:60:31:7a:bd:99:88:39:33:82:e5:16:1a:a0:49:3c +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9 +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH +bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x +CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds +b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr +b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9 +kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm +VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R +VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc +C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj +tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY +D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv +j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl +NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6 +iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP +O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV +ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj +L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl +1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU +b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV +PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj +y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb +EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg +DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI ++Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy +YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX +UB+K+wb1whnw0A== +-----END CERTIFICATE----- + +# Issuer: CN=UCA Extended Validation Root O=UniTrust +# Subject: CN=UCA Extended Validation Root O=UniTrust +# Label: "UCA Extended Validation Root" +# Serial: 106100277556486529736699587978573607008 +# MD5 Fingerprint: a1:f3:5f:43:c6:34:9b:da:bf:8c:7e:05:53:ad:96:e2 +# SHA1 Fingerprint: a3:a1:b0:6f:24:61:23:4a:e3:36:a5:c2:37:fc:a6:ff:dd:f0:d7:3a +# SHA256 Fingerprint: d4:3a:f9:b3:54:73:75:5c:96:84:fc:06:d7:d8:cb:70:ee:5c:28:e7:73:fb:29:4e:b4:1e:e7:17:22:92:4d:24 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF +eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx +MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV +BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog +D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS +sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop +O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk +sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi +c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj +VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz +KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/ +TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G +sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs +1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD +fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN +l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ +VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5 +c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp +4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s +t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj +2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO +vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C +xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx +cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM +fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax +-----END CERTIFICATE----- + +# Issuer: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Subject: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Label: "Certigna Root CA" +# Serial: 269714418870597844693661054334862075617 +# MD5 Fingerprint: 0e:5c:30:62:27:eb:5b:bc:d7:ae:62:ba:e9:d5:df:77 +# SHA1 Fingerprint: 2d:0d:52:14:ff:9e:ad:99:24:01:74:20:47:6e:6c:85:27:27:f5:43 +# SHA256 Fingerprint: d4:8d:3d:23:ee:db:50:a4:59:e5:51:97:60:1c:27:77:4b:9d:7b:18:c9:4d:5a:05:95:11:a1:02:50:b9:31:68 +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw +WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw +MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x +MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD +VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX +BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO +ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M +CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu +I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm +TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh +C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf +ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz +IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT +Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k +JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5 +hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB +GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov +L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo +dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr +aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq +hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L +6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG +HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6 +0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB +lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi +o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1 +gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v +faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63 +Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh +jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw +3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign Root CA - G1" +# Serial: 235931866688319308814040 +# MD5 Fingerprint: 9c:42:84:57:dd:cb:0b:a7:2e:95:ad:b6:f3:da:bc:ac +# SHA1 Fingerprint: 8a:c7:ad:8f:73:ac:4e:c1:b5:75:4d:a5:40:f4:fc:cf:7c:b5:8e:8c +# SHA256 Fingerprint: 40:f6:af:03:46:a9:9a:a1:cd:1d:55:5a:4e:9c:ce:62:c7:f9:63:46:03:ee:40:66:15:83:3d:c8:c8:d0:03:67 +-----BEGIN CERTIFICATE----- +MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD +VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU +ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH +MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO +MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv +Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz +f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO +8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq +d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM +tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt +Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB +o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x +PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM +wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d +GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH +6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby +RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx +iN66zB+Afko= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign ECC Root CA - G3" +# Serial: 287880440101571086945156 +# MD5 Fingerprint: ce:0b:72:d1:9f:88:8e:d0:50:03:e8:e3:b8:8b:67:40 +# SHA1 Fingerprint: 30:43:fa:4f:f2:57:dc:a0:c3:80:ee:2e:58:ea:78:b2:3f:e6:bb:c1 +# SHA256 Fingerprint: 86:a1:ec:ba:08:9c:4a:8d:3b:be:27:34:c6:12:ba:34:1d:81:3e:04:3c:f9:e8:a8:62:cd:5c:57:a3:6b:be:6b +-----BEGIN CERTIFICATE----- +MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG +EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo +bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g +RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ +TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s +b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0 +WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS +fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB +zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq +hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB +CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD ++JbNR6iC8hZVdyR+EhCVBCyj +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Label: "emSign Root CA - C1" +# Serial: 825510296613316004955058 +# MD5 Fingerprint: d8:e3:5d:01:21:fa:78:5a:b0:df:ba:d2:ee:2a:5f:68 +# SHA1 Fingerprint: e7:2e:f1:df:fc:b2:09:28:cf:5d:d4:d5:67:37:b1:51:cb:86:4f:01 +# SHA256 Fingerprint: 12:56:09:aa:30:1d:a0:a2:49:b9:7a:82:39:cb:6a:34:21:6f:44:dc:ac:9f:39:54:b1:42:92:f2:e8:c8:60:8f +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG +A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg +SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v +dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ +BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ +HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH +3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH +GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c +xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1 +aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq +TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87 +/kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4 +kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG +YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT ++xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo +WXzhriKi4gp6D/piq1JM4fHfyr6DDUI= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Label: "emSign ECC Root CA - C3" +# Serial: 582948710642506000014504 +# MD5 Fingerprint: 3e:53:b3:a3:81:ee:d7:10:f8:d3:b0:1d:17:92:f5:d5 +# SHA1 Fingerprint: b6:af:43:c2:9b:81:53:7d:f6:ef:6b:c3:1f:1f:60:15:0c:ee:48:66 +# SHA256 Fingerprint: bc:4d:80:9b:15:18:9d:78:db:3e:1d:8c:f4:f9:72:6a:79:5d:a1:64:3c:a5:f1:35:8e:1d:db:0e:dc:0d:7e:b3 +-----BEGIN CERTIFICATE----- +MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG +EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx +IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND +IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci +MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti +sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O +BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB +Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c +3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J +0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== +-----END CERTIFICATE----- + +# Issuer: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Subject: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Label: "Hongkong Post Root CA 3" +# Serial: 46170865288971385588281144162979347873371282084 +# MD5 Fingerprint: 11:fc:9f:bd:73:30:02:8a:fd:3f:f3:58:b9:cb:20:f0 +# SHA1 Fingerprint: 58:a2:d0:ec:20:52:81:5b:c1:f3:f8:64:02:24:4e:c2:8e:02:4b:02 +# SHA256 Fingerprint: 5a:2f:c0:3f:0c:83:b0:90:bb:fa:40:60:4b:09:88:44:6c:76:36:18:3d:f9:84:6e:17:10:1a:44:7f:b8:ef:d6 +-----BEGIN CERTIFICATE----- +MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQEL +BQAwbzELMAkGA1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJ +SG9uZyBLb25nMRYwFAYDVQQKEw1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25n +a29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2MDMwMjI5NDZaFw00MjA2MDMwMjI5 +NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcT +CUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMXSG9u +Z2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCziNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFO +dem1p+/l6TWZ5Mwc50tfjTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mI +VoBc+L0sPOFMV4i707mV78vH9toxdCim5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV +9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOesL4jpNrcyCse2m5FHomY +2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj0mRiikKY +vLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+Tt +bNe/JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZb +x39ri1UbSsUgYT2uy1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+ +l2oBlKN8W4UdKjk60FSh0Tlxnf0h+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YK +TE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsGxVd7GYYKecsAyVKvQv83j+Gj +Hno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwIDAQABo2MwYTAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e +i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEw +DQYJKoZIhvcNAQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG +7BJ8dNVI0lkUmcDrudHr9EgwW62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCk +MpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWldy8joRTnU+kLBEUx3XZL7av9YROXr +gZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov+BS5gLNdTaqX4fnk +GMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDceqFS +3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJm +Ozj/2ZQw9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+ +l6mc1X5VTMbeRRAc6uk7nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6c +JfTzPV4e0hz5sy229zdcxsshTrD3mUcYhcErulWuBurQB7Lcq9CClnXO0lD+mefP +L5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB60PZ2Pierc+xYw5F9KBa +LJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fqdBb9HxEG +mpv0 +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - G4 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2015 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - G4 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2015 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - G4" +# Serial: 289383649854506086828220374796556676440 +# MD5 Fingerprint: 89:53:f1:83:23:b7:7c:8e:05:f1:8c:71:38:4e:1f:88 +# SHA1 Fingerprint: 14:88:4e:86:26:37:b0:26:af:59:62:5c:40:77:ec:35:29:ba:96:01 +# SHA256 Fingerprint: db:35:17:d1:f6:73:2a:2d:5a:b9:7c:53:3e:c7:07:79:ee:32:70:a6:2f:b4:ac:42:38:37:24:60:e6:f0:1e:88 +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAw +gb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL +Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg +MjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAw +BgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0 +MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1 +c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJ +bmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3Qg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3DumSXbcr3DbVZwbPLqGgZ +2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV3imz/f3E +T+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j +5pds8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAM +C1rlLAHGVK/XqsEQe9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73T +DtTUXm6Hnmo9RR3RXRv06QqsYJn7ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNX +wbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5XxNMhIWNlUpEbsZmOeX7m640A +2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV7rtNOzK+mndm +nqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 +dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwl +N4y6mACXi0mWHv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNj +c0kCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9nMA0GCSqGSIb3DQEBCwUAA4ICAQAS +5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4QjbRaZIxowLByQzTS +Gwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht7LGr +hFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/ +B7NTeLUKYvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uI +AeV8KEsD+UmDfLJ/fOPtjqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbw +H5Lk6rWS02FREAutp9lfx1/cH6NcjKF+m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+ +b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKWRGhXxNUzzxkvFMSUHHuk +2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjAJOgc47Ol +IQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk +5F6G+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuY +n/PIjhs4ViFqUZPTkcpG2om3PVODLAgfi49T3f+sHw== +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft ECC Root Certificate Authority 2017" +# Serial: 136839042543790627607696632466672567020 +# MD5 Fingerprint: dd:a1:03:e6:4a:93:10:d1:bf:f0:19:42:cb:fe:ed:67 +# SHA1 Fingerprint: 99:9a:64:c3:7f:f4:7d:9f:ab:95:f1:47:69:89:14:60:ee:c4:c3:c5 +# SHA256 Fingerprint: 35:8d:f3:9d:76:4a:f9:e1:b7:66:e9:c9:72:df:35:2e:e1:5c:fa:c2:27:af:6a:d1:d7:0e:8e:4a:6e:dc:ba:02 +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD +VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw +MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy +b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR +ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb +hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3 +FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV +L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB +iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft RSA Root Certificate Authority 2017" +# Serial: 40975477897264996090493496164228220339 +# MD5 Fingerprint: 10:ff:00:ff:cf:c9:f8:c7:7a:c0:ee:35:8e:c9:0f:47 +# SHA1 Fingerprint: 73:a5:e6:4a:3b:ff:83:16:ff:0e:dc:cc:61:8a:90:6e:4e:ae:4d:74 +# SHA256 Fingerprint: c7:41:f7:0f:4b:2a:8d:88:bf:2e:71:c1:41:22:ef:53:ef:10:eb:a0:cf:a5:e6:4c:fa:20:f4:18:85:30:73:e0 +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl +MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N +aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ +Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0 +ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1 +HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm +gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ +jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc +aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG +YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6 +W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K +UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH ++FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q +W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC +LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC +gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6 +tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh +SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2 +TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3 +pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR +xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp +GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9 +dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN +AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB +RA+GsCyRxj3qrg+E +-----END CERTIFICATE----- + +# Issuer: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Subject: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Label: "e-Szigno Root CA 2017" +# Serial: 411379200276854331539784714 +# MD5 Fingerprint: de:1f:f6:9e:84:ae:a7:b4:21:ce:1e:58:7d:d1:84:98 +# SHA1 Fingerprint: 89:d4:83:03:4f:9e:9a:48:80:5f:72:37:d4:a9:a6:ef:cb:7c:1f:d1 +# SHA256 Fingerprint: be:b0:0b:30:83:9b:9b:c3:2c:32:e4:44:79:05:95:06:41:f2:64:21:b1:5e:d0:89:19:8b:51:8a:e2:ea:1b:99 +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV +BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk +LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv +b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ +BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg +THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v +IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv +xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H +Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB +eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo +jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ ++efcMQ== +-----END CERTIFICATE----- + +# Issuer: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Subject: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Label: "certSIGN Root CA G2" +# Serial: 313609486401300475190 +# MD5 Fingerprint: 8c:f1:75:8a:c6:19:cf:94:b7:f7:65:20:87:c3:97:c7 +# SHA1 Fingerprint: 26:f9:93:b4:ed:3d:28:27:b0:b9:4b:a7:e9:15:1d:a3:8d:92:e5:32 +# SHA256 Fingerprint: 65:7c:fe:2f:a7:3f:aa:38:46:25:71:f3:32:a2:36:3a:46:fc:e7:02:09:51:71:07:02:cd:fb:b6:ee:da:33:05 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV +BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g +Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ +BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ +R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF +dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw +vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ +uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp +n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs +cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW +xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P +rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF +DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx +DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy +LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C +eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ +d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq +kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl +qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0 +OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c +NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk +ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO +pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj +03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk +PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE +1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX +QRBdJ3NghVdJIgc= +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global Certification Authority" +# Serial: 1846098327275375458322922162 +# MD5 Fingerprint: f8:1c:18:2d:2f:ba:5f:6d:a1:6c:bc:c7:ab:91:c7:0e +# SHA1 Fingerprint: 2f:8f:36:4f:e1:58:97:44:21:59:87:a5:2a:9a:d0:69:95:26:7f:b5 +# SHA256 Fingerprint: 97:55:20:15:f5:dd:fc:3c:87:88:c0:06:94:45:55:40:88:94:45:00:84:f1:00:86:70:86:bc:1a:2b:b5:8d:c8 +-----BEGIN CERTIFICATE----- +MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw +CQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x +ITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1 +c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx +OTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI +SWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn +swuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu +7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8 +1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW +80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP +JqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l +RtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw +hI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10 +coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc +BW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n +twiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud +DwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W +0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe +uyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q +lG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB +aCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE +sLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT +MaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe +qu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh +VicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8 +h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9 +EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK +yeC2nOnOcXHebD8WpHk= +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global ECC P256 Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global ECC P256 Certification Authority" +# Serial: 4151900041497450638097112925 +# MD5 Fingerprint: 5b:44:e3:8d:5d:36:86:26:e8:0d:05:d2:59:a7:83:54 +# SHA1 Fingerprint: b4:90:82:dd:45:0c:be:8b:5b:b1:66:d3:e2:a4:08:26:cd:ed:42:cf +# SHA256 Fingerprint: 94:5b:bc:82:5e:a5:54:f4:89:d1:fd:51:a7:3d:df:2e:a6:24:ac:70:19:a0:52:05:22:5c:22:a7:8c:cf:a8:b4 +-----BEGIN CERTIFICATE----- +MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf +BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 +YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G +A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 +d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF +Q0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG +SM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN +FWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w +DwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw +CgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh +DDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 +-----END CERTIFICATE----- + +# Issuer: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. +# Subject: CN=Trustwave Global ECC P384 Certification Authority O=Trustwave Holdings, Inc. +# Label: "Trustwave Global ECC P384 Certification Authority" +# Serial: 2704997926503831671788816187 +# MD5 Fingerprint: ea:cf:60:c4:3b:b9:15:29:40:a1:97:ed:78:27:93:d6 +# SHA1 Fingerprint: e7:f3:a3:c8:cf:6f:c3:04:2e:6d:0e:67:32:c5:9e:68:95:0d:5e:d2 +# SHA256 Fingerprint: 55:90:38:59:c8:c0:c3:eb:b8:75:9e:ce:4e:25:57:22:5f:f5:75:8b:bd:38:eb:d4:82:76:60:1e:1b:d5:80:97 +-----BEGIN CERTIFICATE----- +MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf +BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3 +YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x +NzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G +A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0 +d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF +Q0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB +BAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ +j9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF +1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G +A1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3 +AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC +MGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu +Sw== +-----END CERTIFICATE----- + +# Issuer: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Subject: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Label: "NAVER Global Root Certification Authority" +# Serial: 9013692873798656336226253319739695165984492813 +# MD5 Fingerprint: c8:7e:41:f6:25:3b:f5:09:b3:17:e8:46:3d:bf:d0:9b +# SHA1 Fingerprint: 8f:6b:f2:a9:27:4a:da:14:a0:c4:f4:8e:61:27:f9:c0:1e:78:5d:d1 +# SHA256 Fingerprint: 88:f4:38:dc:f8:ff:d1:fa:8f:42:91:15:ff:e5:f8:2a:e1:e0:6e:0c:70:c3:75:fa:ad:71:7b:34:a4:9e:72:65 +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM +BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG +T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx +CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD +b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA +iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH +38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE +HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz +kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP +szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq +vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf +nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG +YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo +0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a +CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K +AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I +36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN +qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj +cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm ++LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL +hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe +lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7 +p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8 +piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR +LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX +5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO +dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul +9XXeifdy +-----END CERTIFICATE----- + +# Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Label: "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" +# Serial: 131542671362353147877283741781055151509 +# MD5 Fingerprint: 19:36:9c:52:03:2f:d2:d1:bb:23:cc:dd:1e:12:55:bb +# SHA1 Fingerprint: 62:ff:d9:9e:c0:65:0d:03:ce:75:93:d2:ed:3f:2d:32:c9:e3:e5:4a +# SHA256 Fingerprint: 55:41:53:b1:3d:2c:f9:dd:b7:53:bf:be:1a:4e:0a:e0:8d:0a:a4:18:70:58:fe:60:a2:b8:62:b2:e4:b8:7b:cb +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw +CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw +FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S +Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5 +MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL +DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS +QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH +sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK +Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu +SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC +MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy +v+c= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Label: "GlobalSign Root R46" +# Serial: 1552617688466950547958867513931858518042577 +# MD5 Fingerprint: c4:14:30:e4:fa:66:43:94:2a:6a:1b:24:5f:19:d0:ef +# SHA1 Fingerprint: 53:a2:b0:4b:ca:6b:d6:45:e6:39:8a:8e:c4:0d:d2:bf:77:c3:a2:90 +# SHA256 Fingerprint: 4f:a3:12:6d:8d:3a:11:d1:c4:85:5a:4f:80:7c:ba:d6:cf:91:9d:3a:5a:88:b0:3b:ea:2c:63:72:d9:3c:40:c9 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA +MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD +VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy +MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt +c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ +OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG +vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud +316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo +0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE +y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF +zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE ++cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN +I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs +x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa +ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC +4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4 +7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti +2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk +pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF +FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt +rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk +ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5 +u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP +4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6 +N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3 +vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Label: "GlobalSign Root E46" +# Serial: 1552617690338932563915843282459653771421763 +# MD5 Fingerprint: b5:b8:66:ed:de:08:83:e3:c9:e2:01:34:06:ac:51:6f +# SHA1 Fingerprint: 39:b4:6c:d5:fe:80:06:eb:e2:2f:4a:bb:08:33:a0:af:db:b9:dd:84 +# SHA256 Fingerprint: cb:b9:c4:4d:84:b8:04:3e:10:50:ea:31:a6:9f:51:49:55:d7:bf:d2:e2:c6:b4:93:01:01:9a:d6:1d:9f:50:58 +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx +CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD +ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw +MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex +HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq +R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd +yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ +7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8 ++RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- + +# Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Label: "ANF Secure Server Root CA" +# Serial: 996390341000653745 +# MD5 Fingerprint: 26:a6:44:5a:d9:af:4e:2f:b2:1d:b6:65:b0:4e:e8:96 +# SHA1 Fingerprint: 5b:6e:68:d0:cc:15:b6:a0:5f:1e:c1:5f:ae:02:fc:6b:2f:5d:6f:74 +# SHA256 Fingerprint: fb:8f:ec:75:91:69:b9:10:6b:1e:51:16:44:c6:18:c5:13:04:37:3f:6c:06:43:08:8d:8b:ef:fd:1b:99:75:99 +-----BEGIN CERTIFICATE----- +MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNV +BAUTCUc2MzI4NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlk +YWQgZGUgQ2VydGlmaWNhY2lvbjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNV +BAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3QgQ0EwHhcNMTkwOTA0MTAwMDM4WhcN +MzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEwMQswCQYDVQQGEwJF +UzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQwEgYD +VQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9v +dCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCj +cqQZAZ2cC4Ffc0m6p6zzBE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9q +yGFOtibBTI3/TO80sh9l2Ll49a2pcbnvT1gdpd50IJeh7WhM3pIXS7yr/2WanvtH +2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcvB2VSAKduyK9o7PQUlrZX +H1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXsezx76W0OL +zc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyR +p1RMVwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQz +W7i1o0TJrH93PB0j7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/ +SiOL9V8BY9KHcyi1Swr1+KuCLH5zJTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJn +LNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe8TZBAQIvfXOn3kLMTOmJDVb3 +n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVOHj1tyRRM4y5B +u8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj +o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC +AgEATh65isagmD9uw2nAalxJUqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L +9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzxj6ptBZNscsdW699QIyjlRRA96Gej +rw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDtdD+4E5UGUcjohybK +pFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM5gf0 +vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjq +OknkJjCb5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ +/zo1PqVUSlJZS2Db7v54EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ9 +2zg/LFis6ELhDtjTO0wugumDLmsx2d1Hhk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI ++PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGyg77FGr8H6lnco4g175x2 +MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3r5+qPeoo +tt7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw= +-----END CERTIFICATE----- + +# Issuer: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum EC-384 CA" +# Serial: 160250656287871593594747141429395092468 +# MD5 Fingerprint: b6:65:b3:96:60:97:12:a1:ec:4e:e1:3d:a3:c6:c9:f1 +# SHA1 Fingerprint: f3:3e:78:3c:ac:df:f4:a2:cc:ac:67:55:69:56:d7:e5:16:3c:e1:ed +# SHA256 Fingerprint: 6b:32:80:85:62:53:18:aa:50:d1:73:c9:8d:8b:da:09:d5:7e:27:41:3d:11:4c:f7:87:a0:f5:d0:6c:03:0c:f6 +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw +CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw +JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT +EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0 +WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT +LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX +BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE +KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm +Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8 +EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J +UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn +nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Root CA" +# Serial: 40870380103424195783807378461123655149 +# MD5 Fingerprint: 51:e1:c2:e7:fe:4c:84:af:59:0e:2f:f4:54:6f:ea:29 +# SHA1 Fingerprint: c8:83:44:c0:18:ae:9f:cc:f1:87:b7:8f:22:d1:c5:d7:45:84:ba:e5 +# SHA256 Fingerprint: fe:76:96:57:38:55:77:3e:37:a9:5e:7a:d4:d9:cc:96:c3:01:57:c1:5d:31:76:5b:a9:b1:57:04:e1:ae:78:fd +-----BEGIN CERTIFICATE----- +MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6 +MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEu +MScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNV +BAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwHhcNMTgwMzE2MTIxMDEzWhcNNDMw +MzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEg +U3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZ +n0EGze2jusDbCSzBfN8pfktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/q +p1x4EaTByIVcJdPTsuclzxFUl6s1wB52HO8AU5853BSlLCIls3Jy/I2z5T4IHhQq +NwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2fJmItdUDmj0VDT06qKhF +8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGtg/BKEiJ3 +HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGa +mqi4NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi +7VdNIuJGmj8PkTQkfVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSF +ytKAQd8FqKPVhJBPC/PgP5sZ0jeJP/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0P +qafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSYnjYJdmZm/Bo/6khUHL4wvYBQ +v3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHKHRzQ+8S1h9E6 +Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1 +vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQAD +ggIBAEii1QALLtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4 +WxmB82M+w85bj/UvXgF2Ez8sALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvo +zMrnadyHncI013nR03e4qllY/p0m+jiGPp2Kh2RX5Rc64vmNueMzeMGQ2Ljdt4NR +5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8CYyqOhNf6DR5UMEQ +GfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA4kZf +5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq +0Uc9NneoWWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7D +P78v3DSk+yshzWePS/Tj6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTM +qJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmTOPQD8rv7gmsHINFSH5pkAnuYZttcTVoP +0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZckbxJF0WddCajJFdr60qZf +E2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb +-----END CERTIFICATE----- + +# Issuer: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique +# Subject: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique +# Label: "TunTrust Root CA" +# Serial: 108534058042236574382096126452369648152337120275 +# MD5 Fingerprint: 85:13:b9:90:5b:36:5c:b6:5e:b8:5a:f8:e0:31:57:b4 +# SHA1 Fingerprint: cf:e9:70:84:0f:e0:73:0f:9d:f6:0c:7f:2c:4b:ee:20:46:34:9c:bb +# SHA256 Fingerprint: 2e:44:10:2a:b5:8c:b8:54:19:45:1c:8e:19:d9:ac:f3:66:2c:af:bc:61:4b:6a:53:96:0a:30:f7:d0:e2:eb:41 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQEL +BQAwYTELMAkGA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUg +Q2VydGlmaWNhdGlvbiBFbGVjdHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJv +b3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQwNDI2MDg1NzU2WjBhMQswCQYDVQQG +EwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBDZXJ0aWZpY2F0aW9u +IEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZ +n56eY+hz2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd +2JQDoOw05TDENX37Jk0bbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgF +VwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZ +GoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAdgjH8KcwAWJeRTIAAHDOF +li/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViWVSHbhlnU +r8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2 +eY8fTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIb +MlEsPvLfe/ZdeikZjuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISg +jwBUFfyRbVinljvrS5YnzWuioYasDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB +7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwSVXAkPcvCFDVDXSdOvsC9qnyW +5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI04Y+oXNZtPdE +ITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 +90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+z +xiD2BkewhpMl0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYu +QEkHDVneixCwSQXi/5E/S7fdAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4 +FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRYYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH +22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJpadbGNjHh/PqAulxP +xOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65xxBzn +dFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5 +Xc0yGYuPjCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7b +nV2UqL1g52KAdoGDDIzMMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQ +CvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9zZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZH +u/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3rAZ3r2OvEhJn7wAzMMujj +d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= +-----END CERTIFICATE----- + +# Issuer: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Subject: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Label: "HARICA TLS RSA Root CA 2021" +# Serial: 76817823531813593706434026085292783742 +# MD5 Fingerprint: 65:47:9b:58:86:dd:2c:f0:fc:a2:84:1f:1e:96:c4:91 +# SHA1 Fingerprint: 02:2d:05:82:fa:88:ce:14:0c:06:79:de:7f:14:10:e9:45:d7:a5:6d +# SHA256 Fingerprint: d9:5d:0e:8e:da:79:52:5b:f9:be:b1:1b:14:d2:10:0d:32:94:98:5f:0c:62:d9:fa:bd:9c:d9:99:ec:cb:7b:1d +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg +Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL +MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv +b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l +mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE +4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv +a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M +pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw +Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b +LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY +AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB +AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq +E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr +W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ +CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU +X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3 +f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja +H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP +JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P +zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt +jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0 +/L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT +BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79 +aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW +xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU +63ZTGI0RmLo= +-----END CERTIFICATE----- + +# Issuer: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Subject: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Label: "HARICA TLS ECC Root CA 2021" +# Serial: 137515985548005187474074462014555733966 +# MD5 Fingerprint: ae:f7:4c:e5:66:35:d1:b7:9b:8c:22:93:74:d3:4b:b0 +# SHA1 Fingerprint: bc:b0:c1:9d:e9:98:92:70:19:38:57:e9:8d:a7:b4:5d:6e:ee:01:48 +# SHA256 Fingerprint: 3f:99:cc:47:4a:cf:ce:4d:fe:d5:87:94:66:5e:47:8d:15:47:73:9f:2e:78:0f:1b:b4:ca:9b:13:30:97:d4:01 +-----BEGIN CERTIFICATE----- +MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQsw +CQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2Vh +cmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9v +dCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoXDTQ1MDIxMzExMDEwOVowbDELMAkG +A1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJvb3Qg +Q0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7 +KKrxcm1lAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9Y +STHMmE5gEYd103KUkE+bECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQD +AgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAircJRQO9gcS3ujwLEXQNw +SaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/QwCZ61IygN +nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps +-----END CERTIFICATE----- + +# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" +# Serial: 1977337328857672817 +# MD5 Fingerprint: 4e:6e:9b:54:4c:ca:b7:fa:48:e4:90:b1:15:4b:1c:a3 +# SHA1 Fingerprint: 0b:be:c2:27:22:49:cb:39:aa:db:35:5c:53:e3:8c:ae:78:ff:b6:fe +# SHA256 Fingerprint: 57:de:05:83:ef:d2:b2:6e:03:61:da:99:da:9d:f4:64:8d:ef:7e:e8:44:1c:3b:72:8a:fa:9b:cd:e0:f9:b2:6a +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UE +BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h +cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1 +MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg +Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 +thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM +cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG +L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i +NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h +X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b +m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy +Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja +EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T +KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF +6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh +OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1UdDgQWBBRlzeurNR4APn7VdMAc +tHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4wgZswgZgGBFUd +IAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j +b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABC +AG8AbgBhAG4AbwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAw +ADEANzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9m +iWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL4QjbEwj4KKE1soCzC1HA01aajTNF +Sa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDbLIpgD7dvlAceHabJ +hfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1ilI45P +Vf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZE +EAEeiGaPcjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV +1aUsIC+nmCjuRfzxuIgALI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2t +CsvMo2ebKHTEm9caPARYpoKdrcd7b/+Alun4jWq9GJAd/0kakFI3ky88Al2CdgtR +5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH9IBk9W6VULgRfhVwOEqw +f9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpfNIbnYrX9 +ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNK +GbqEZycPvEJdvSRUDewdcAZfpLz6IHxV +-----END CERTIFICATE----- + +# Issuer: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. +# Subject: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. +# Label: "vTrus ECC Root CA" +# Serial: 630369271402956006249506845124680065938238527194 +# MD5 Fingerprint: de:4b:c1:f5:52:8c:9b:43:e1:3e:8f:55:54:17:8d:85 +# SHA1 Fingerprint: f6:9c:db:b0:fc:f6:02:13:b6:52:32:a6:a3:91:3f:16:70:da:c3:e1 +# SHA256 Fingerprint: 30:fb:ba:2c:32:23:8e:2a:98:54:7a:f9:79:31:e5:50:42:8b:9b:3f:1c:8e:eb:66:33:dc:fa:86:c5:b2:7d:d3 +-----BEGIN CERTIFICATE----- +MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMw +RzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAY +BgNVBAMTEXZUcnVzIEVDQyBSb290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDcz +MTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28u +LEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+cToL0 +v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUd +e4BdS49nTPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIw +V53dVvHH4+m4SVBrm2nDb+zDfSXkV5UTQJtS0zvzQBm8JsctBp61ezaf9SXUY2sA +AjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQLYgmRWAD5Tfs0aNoJrSEG +GJTO +-----END CERTIFICATE----- + +# Issuer: CN=vTrus Root CA O=iTrusChina Co.,Ltd. +# Subject: CN=vTrus Root CA O=iTrusChina Co.,Ltd. +# Label: "vTrus Root CA" +# Serial: 387574501246983434957692974888460947164905180485 +# MD5 Fingerprint: b8:c9:37:df:fa:6b:31:84:64:c5:ea:11:6a:1b:75:fc +# SHA1 Fingerprint: 84:1a:69:fb:f5:cd:1a:25:34:13:3d:e3:f8:fc:b8:99:d0:c9:14:b7 +# SHA256 Fingerprint: 8a:71:de:65:59:33:6f:42:6c:26:e5:38:80:d0:0d:88:a1:8d:a4:c6:a9:1f:0d:cb:61:94:e2:06:c5:c9:63:87 +-----BEGIN CERTIFICATE----- +MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQEL +BQAwQzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4x +FjAUBgNVBAMTDXZUcnVzIFJvb3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMx +MDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoGA1UEChMTaVRydXNDaGluYSBDby4s +THRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZotsSKYc +IrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykU +AyyNJJrIZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+ +GrPSbcKvdmaVayqwlHeFXgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z9 +8Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KAYPxMvDVTAWqXcoKv8R1w6Jz1717CbMdH +flqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70kLJrxLT5ZOrpGgrIDajt +J8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2AXPKBlim +0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZN +pGvu/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQ +UqqzApVg+QxMaPnu1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHW +OXSuTEGC2/KmSNGzm/MzqvOmwMVO9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMB +AAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYgscasGrz2iTAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAKbqSSaet +8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd +nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1j +bhd47F18iMjrjld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvM +Kar5CKXiNxTKsbhm7xqC5PD48acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIiv +TDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJnxDHO2zTlJQNgJXtxmOTAGytfdELS +S8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554WgicEFOwE30z9J4nfr +I8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4sEb9 +b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNB +UvupLnKWnyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1P +Ti07NEPhmg4NpGaXutIcSkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929ven +sBxXVsFy6K2ir40zSbofitzmdHxghm+Hl3s= +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X2 O=Internet Security Research Group +# Subject: CN=ISRG Root X2 O=Internet Security Research Group +# Label: "ISRG Root X2" +# Serial: 87493402998870891108772069816698636114 +# MD5 Fingerprint: d3:9e:c4:1e:23:3c:a6:df:cf:a3:7e:6d:e0:14:e6:e5 +# SHA1 Fingerprint: bd:b1:b9:3c:d5:97:8d:45:c6:26:14:55:f8:db:95:c7:5a:d1:53:af +# SHA256 Fingerprint: 69:72:9b:8e:15:a8:6e:fc:17:7a:57:af:b7:17:1d:fc:64:ad:d2:8c:2f:ca:8c:f1:50:7e:34:45:3c:cb:14:70 +-----BEGIN CERTIFICATE----- +MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw +CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg +R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00 +MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT +ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw +EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW ++1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9 +ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI +zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW +tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1 +/q4AaOeMSQ+2b1tbFfLn +-----END CERTIFICATE----- + +# Issuer: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. +# Subject: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. +# Label: "HiPKI Root CA - G1" +# Serial: 60966262342023497858655262305426234976 +# MD5 Fingerprint: 69:45:df:16:65:4b:e8:68:9a:8f:76:5f:ff:80:9e:d3 +# SHA1 Fingerprint: 6a:92:e4:a8:ee:1b:ec:96:45:37:e3:29:57:49:cd:96:e3:e5:d2:60 +# SHA256 Fingerprint: f0:15:ce:3c:c2:39:bf:ef:06:4b:e9:f1:d2:c4:17:e1:a0:26:4a:0a:94:be:1f:0c:8d:12:18:64:eb:69:49:cc +-----BEGIN CERTIFICATE----- +MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBP +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xGzAZBgNVBAMMEkhpUEtJIFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRa +Fw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3 +YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kgUm9vdCBDQSAtIEcx +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0o9Qw +qNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twv +Vcg3Px+kwJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6 +lZgRZq2XNdZ1AYDgr/SEYYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnz +Qs7ZngyzsHeXZJzA9KMuH5UHsBffMNsAGJZMoYFL3QRtU6M9/Aes1MU3guvklQgZ +KILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfdhSi8MEyr48KxRURHH+CK +FgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj1jOXTyFj +HluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDr +y+K49a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ +/W3c1pzAtH2lsN0/Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgM +a/aOEmem8rJY5AIJEzypuxC00jBF8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6 +fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQDAgGGMA0GCSqG +SIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi +7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqc +SE5XCV0vrPSltJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6Fza +ZsT0pPBWGTMpWmWSBUdGSquEwx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9Tc +XzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07QJNBAsNB1CI69aO4I1258EHBGG3zg +iLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv5wiZqAxeJoBF1Pho +L5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+GpzjLrF +Ne85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wr +kkVbbiVghUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+ +vhV4nYWBSipX3tUZQ9rbyltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQU +YDksswBVLuT1sw5XxJFBAJw/6KXf6vb/yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Label: "GlobalSign ECC Root CA - R4" +# Serial: 159662223612894884239637590694 +# MD5 Fingerprint: 26:29:f8:6d:e1:88:bf:a2:65:7f:aa:c4:cd:0f:7f:fc +# SHA1 Fingerprint: 6b:a0:b0:98:e1:71:ef:5a:ad:fe:48:15:80:77:10:f4:bd:6f:0b:28 +# SHA256 Fingerprint: b0:85:d7:0b:96:4f:19:1a:73:e4:af:0d:54:ae:7a:0e:07:aa:fd:af:9b:71:dd:08:62:13:8a:b7:32:5a:24:a2 +-----BEGIN CERTIFICATE----- +MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYD +VQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgw +MTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0g +UjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wWTAT +BgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkWymOx +uYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNV +HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/ ++wpu+74zyTyjhNUwCgYIKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147 +bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R1 O=Google Trust Services LLC +# Subject: CN=GTS Root R1 O=Google Trust Services LLC +# Label: "GTS Root R1" +# Serial: 159662320309726417404178440727 +# MD5 Fingerprint: 05:fe:d0:bf:71:a8:a3:76:63:da:01:e0:d8:52:dc:40 +# SHA1 Fingerprint: e5:8c:1c:c4:91:3b:38:63:4b:e9:10:6e:e3:ad:8e:6b:9d:d9:81:4a +# SHA256 Fingerprint: d9:47:43:2a:bd:e7:b7:fa:90:fc:2e:6b:59:10:1b:12:80:e0:e1:c7:e4:e4:0f:a3:c6:88:7f:ff:57:a7:f4:cf +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaMf/vo +27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7w +Cl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjw +TcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0Pfybl +qAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaH +szVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4Zor8 +Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUspzBmk +MiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 +wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70p +aDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrN +VjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQID +AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBAJ+qQibb +C5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe +QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuy +h6f88/qBVRRiClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM4 +7HLwEXWdyzRSjeZ2axfG34arJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8J +ZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYciNuaCp+0KueIHoI17eko8cdLiA6Ef +MgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5meLMFrUKTX5hgUvYU/ +Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJFfbdT +6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ +0E6yove+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm +2tIMPNuzjsmhDYAPexZ3FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bb +bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R2 O=Google Trust Services LLC +# Subject: CN=GTS Root R2 O=Google Trust Services LLC +# Label: "GTS Root R2" +# Serial: 159662449406622349769042896298 +# MD5 Fingerprint: 1e:39:c0:53:e6:1e:29:82:0b:ca:52:55:36:5d:57:dc +# SHA1 Fingerprint: 9a:44:49:76:32:db:de:fa:d0:bc:fb:5a:7b:17:bd:9e:56:09:24:94 +# SHA256 Fingerprint: 8d:25:cd:97:22:9d:bf:70:35:6b:da:4e:b3:cc:73:40:31:e2:4c:f0:0f:af:cf:d3:2d:c7:6e:b5:84:1c:7e:a8 +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3LvCvpt +nfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY +6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAu +MC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7k +RXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWg +f9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1mKPV ++3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K8Yzo +dDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW +Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKa +G73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCq +gc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwID +AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBAB/Kzt3H +vqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8 +0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyC +B19m3H0Q/gxhswWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2u +NmSRXbBoGOqKYcl3qJfEycel/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMg +yALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVnjWQye+mew4K6Ki3pHrTgSAai/Gev +HyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y59PYjJbigapordwj6 +xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M7YNR +TOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924Sg +JPFI/2R80L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV +7LXTWtiBmelDGDfrs7vRWGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl +6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjWHYbL +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R3 O=Google Trust Services LLC +# Subject: CN=GTS Root R3 O=Google Trust Services LLC +# Label: "GTS Root R3" +# Serial: 159662495401136852707857743206 +# MD5 Fingerprint: 3e:e7:9d:58:02:94:46:51:94:e5:e0:22:4a:8b:e7:73 +# SHA1 Fingerprint: ed:e5:71:80:2b:c8:92:b9:5b:83:3c:d2:32:68:3f:09:cd:a0:1e:46 +# SHA256 Fingerprint: 34:d8:a7:3e:e2:08:d9:bc:db:0d:95:65:20:93:4b:4e:40:e6:94:82:59:6e:8b:6f:73:c8:42:6b:01:0a:6f:48 +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout736G +jOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL2 +4CejQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7 +VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azTL818+FsuVbu/3ZL3pAzcMeGiAjEA/Jdm +ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R4 O=Google Trust Services LLC +# Subject: CN=GTS Root R4 O=Google Trust Services LLC +# Label: "GTS Root R4" +# Serial: 159662532700760215368942768210 +# MD5 Fingerprint: 43:96:83:77:19:4d:76:b3:9d:65:52:e4:1d:22:a5:e8 +# SHA1 Fingerprint: 77:d3:03:67:b5:e0:0c:15:f6:0c:38:61:df:7c:e1:3b:92:46:4d:47 +# SHA256 Fingerprint: 34:9d:fa:40:58:c5:e2:63:12:3b:39:8a:e7:95:57:3c:4e:13:13:c8:3f:e6:8f:93:55:6c:d5:e8:03:1b:3c:7d +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi +QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR +HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D +9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8 +p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD +-----END CERTIFICATE----- + +# Issuer: CN=Telia Root CA v2 O=Telia Finland Oyj +# Subject: CN=Telia Root CA v2 O=Telia Finland Oyj +# Label: "Telia Root CA v2" +# Serial: 7288924052977061235122729490515358 +# MD5 Fingerprint: 0e:8f:ac:aa:82:df:85:b1:f4:dc:10:1c:fc:99:d9:48 +# SHA1 Fingerprint: b9:99:cd:d1:73:50:8a:c4:47:05:08:9c:8c:88:fb:be:a0:2b:40:cd +# SHA256 Fingerprint: 24:2b:69:74:2f:cb:1e:5b:2a:bf:98:89:8b:94:57:21:87:54:4e:5b:4d:99:11:78:65:73:62:1f:6a:74:b8:2c +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQx +CzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UE +AwwQVGVsaWEgUm9vdCBDQSB2MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1 +NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZ +MBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ76zBq +AMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9 +vVYiQJ3q9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9 +lRdU2HhE8Qx3FZLgmEKnpNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTOD +n3WhUidhOPFZPY5Q4L15POdslv5e2QJltI5c0BE0312/UqeBAMN/mUWZFdUXyApT +7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW5olWK8jjfN7j/4nlNW4o +6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNrRBH0pUPC +TEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6 +WT0EBXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63R +DolUK5X6wK0dmBR4M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZI +pEYslOqodmJHixBTB0hXbOKSTbauBcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGj +YzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7Wxy+G2CQ5MB0GA1UdDgQWBBRy +rOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ +8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi +0f6X+J8wfBj5tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMM +A8iZGok1GTzTyVR8qPAs5m4HeW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBS +SRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+Cy748fdHif64W1lZYudogsYMVoe+K +TTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygCQMez2P2ccGrGKMOF +6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15h2Er +3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMt +Ty3EHD70sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pT +VmBds9hCG1xLEooc6+t9xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAW +ysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQraVplI/owd8k+BsHMYeB2F326CjYSlKA +rBPuUBQemMc= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH +# Subject: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH +# Label: "D-TRUST BR Root CA 1 2020" +# Serial: 165870826978392376648679885835942448534 +# MD5 Fingerprint: b5:aa:4b:d5:ed:f7:e3:55:2e:8f:72:0a:f3:75:b8:ed +# SHA1 Fingerprint: 1f:5b:98:f0:e3:b5:f7:74:3c:ed:e6:b0:36:7d:32:cd:f4:09:41:67 +# SHA256 Fingerprint: e5:9a:aa:81:60:09:c2:2b:ff:5b:25:ba:d3:7d:f3:06:f0:49:79:7c:1f:81:d8:5a:b0:89:e6:57:bd:8f:00:44 +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQsw +CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS +VVNUIEJSIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5 +NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG +A1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB +BAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7dPYS +zuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0 +QVK5buXuQqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/ +VbNafAkl1bK6CKBrqx9tMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g +PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2JyX3Jvb3Rf +Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l +dC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 +c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO +PQQDAwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFW +wKrY7RjEsK70PvomAjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHV +dWNbFJWcHwHP2NVypw87 +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH +# Subject: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH +# Label: "D-TRUST EV Root CA 1 2020" +# Serial: 126288379621884218666039612629459926992 +# MD5 Fingerprint: 8c:2d:9d:70:9f:48:99:11:06:11:fb:e9:cb:30:c0:6e +# SHA1 Fingerprint: 61:db:8c:21:59:69:03:90:d8:7c:9c:12:86:54:cf:9d:3d:f4:dd:07 +# SHA256 Fingerprint: 08:17:0d:1a:a3:64:53:90:1a:2f:95:92:45:e3:47:db:0c:8d:37:ab:aa:bc:56:b8:1a:a1:00:dc:95:89:70:db +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQsw +CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS +VVNUIEVWIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5 +NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG +A1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8ZRCC +/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rD +wpdhQntJraOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3 +OqQo5FD4pPfsazK2/umLMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g +PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2V2X3Jvb3Rf +Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l +dC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 +c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO +PQQDAwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CA +y/m0sRtW9XLS/BnRAjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJb +gfM0agPnIjhQW+0ZT0MW +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. +# Subject: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. +# Label: "DigiCert TLS ECC P384 Root G5" +# Serial: 13129116028163249804115411775095713523 +# MD5 Fingerprint: d3:71:04:6a:43:1c:db:a6:59:e1:a8:a3:aa:c5:71:ed +# SHA1 Fingerprint: 17:f3:de:5e:9f:0f:19:e9:8e:f6:1f:32:26:6e:20:c4:07:ae:30:ee +# SHA256 Fingerprint: 01:8e:13:f0:77:25:32:cf:80:9b:d1:b1:72:81:86:72:83:fc:48:c6:e1:3b:e9:c6:98:12:85:4a:49:0c:1b:05 +-----BEGIN CERTIFICATE----- +MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURp +Z2lDZXJ0IFRMUyBFQ0MgUDM4NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2 +MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJ +bmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQgUm9vdCBHNTB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1TzvdlHJS +7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp +0zVozptjn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICIS +B4CIfBFqMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49 +BAMDA2gAMGUCMQCJao1H5+z8blUD2WdsJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQ +LgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIxAJSdYsiJvRmEFOml+wG4 +DXZDjC5Ty3zfDBeWUA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. +# Subject: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. +# Label: "DigiCert TLS RSA4096 Root G5" +# Serial: 11930366277458970227240571539258396554 +# MD5 Fingerprint: ac:fe:f7:34:96:a9:f2:b3:b4:12:4b:e4:27:41:6f:e1 +# SHA1 Fingerprint: a7:88:49:dc:5d:7c:75:8c:8c:de:39:98:56:b3:aa:d0:b2:a5:71:35 +# SHA256 Fingerprint: 37:1a:00:dc:05:33:b3:72:1a:7e:eb:40:e8:41:9e:70:79:9d:2b:0a:0f:2c:1d:80:69:31:65:f7:ce:c4:ad:75 +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBN +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMT +HERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcN +NDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs +IEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS87IE+ +ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG0 +2C+JFvuUAT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgp +wgscONyfMXdcvyej/Cestyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZM +pG2T6T867jp8nVid9E6P/DsjyG244gXazOvswzH016cpVIDPRFtMbzCe88zdH5RD +nU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnVDdXifBBiqmvwPXbzP6Po +sMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9qTXeXAaDx +Zre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cd +Lvvyz6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvX +KyY//SovcfXWJL5/MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNe +XoVPzthwiHvOAbWWl9fNff2C+MIkwcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPL +tgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4EFgQUUTMc7TZArxfTJc1paPKv +TiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw +GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7H +PNtQOa27PShNlnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLF +O4uJ+DQtpBflF+aZfTCIITfNMBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQ +REtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/u4cnYiWB39yhL/btp/96j1EuMPik +AdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9GOUrYU9DzLjtxpdRv +/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh47a+ +p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilw +MUc/dNAUFvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WF +qUITVuwhd4GTWgzqltlJyqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCK +ovfepEWFJqgejF0pW8hL2JpqA15w8oVPbEtoL8pU9ozaMv7Da4M/OMZ+ +-----END CERTIFICATE----- + +# Issuer: CN=Certainly Root R1 O=Certainly +# Subject: CN=Certainly Root R1 O=Certainly +# Label: "Certainly Root R1" +# Serial: 188833316161142517227353805653483829216 +# MD5 Fingerprint: 07:70:d4:3e:82:87:a0:fa:33:36:13:f4:fa:33:e7:12 +# SHA1 Fingerprint: a0:50:ee:0f:28:71:f4:27:b2:12:6d:6f:50:96:25:ba:cc:86:42:af +# SHA256 Fingerprint: 77:b8:2c:d8:64:4c:43:05:f7:ac:c5:cb:15:6b:45:67:50:04:03:3d:51:c6:0c:62:02:a8:e0:c3:34:67:d3:a0 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAw +PTELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2Vy +dGFpbmx5IFJvb3QgUjEwHhcNMjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9 +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0 +YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANA2 +1B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O5MQT +vqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbed +aFySpvXl8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b0 +1C7jcvk2xusVtyWMOvwlDbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5 +r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGIXsXwClTNSaa/ApzSRKft43jvRl5tcdF5 +cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkNKPl6I7ENPT2a/Z2B7yyQ +wHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQAjeZjOVJ +6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA +2CnbrlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyH +Wyf5QBGenDPBt+U1VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMR +eiFPCyEQtkA6qyI6BJyLm4SGcprSp6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB +/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTgqj8ljZ9EXME66C6u +d0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAszHQNTVfSVcOQr +PbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d +8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi +1wrykXprOQ4vMMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrd +rRT90+7iIgXr0PK3aBLXWopBGsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9di +taY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+gjwN/KUD+nsa2UUeYNrEjvn8K8l7 +lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgHJBu6haEaBQmAupVj +yTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7fpYn +Kx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLy +yCwzk5Iwx06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5n +wXARPbv0+Em34yaXOp/SX3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6 +OV+KmalBWQewLK8= +-----END CERTIFICATE----- + +# Issuer: CN=Certainly Root E1 O=Certainly +# Subject: CN=Certainly Root E1 O=Certainly +# Label: "Certainly Root E1" +# Serial: 8168531406727139161245376702891150584 +# MD5 Fingerprint: 0a:9e:ca:cd:3e:52:50:c6:36:f3:4b:a3:ed:a7:53:e9 +# SHA1 Fingerprint: f9:e1:6d:dc:01:89:cf:d5:82:45:63:3e:c5:37:7d:c2:eb:93:6f:2b +# SHA256 Fingerprint: b4:58:5f:22:e4:ac:75:6a:4e:86:12:a1:36:1c:5d:9d:03:1a:93:fd:84:fe:bb:77:8f:a3:06:8b:0f:c4:2d:c2 +-----BEGIN CERTIFICATE----- +MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQsw +CQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlu +bHkgUm9vdCBFMTAeFw0yMTA0MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJ +BgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlubHkxGjAYBgNVBAMTEUNlcnRhaW5s +eSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4fxzf7flHh4axpMCK ++IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9YBk2 +QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4 +hevIIgcwCgYIKoZIzj0EAwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozm +ut6Dacpps6kFtZaSF4fC0urQe87YQVt8rgIwRt7qy12a7DLCZRawTDBcMPPaTnOG +BtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR +-----END CERTIFICATE----- + +# Issuer: CN=Security Communication RootCA3 O=SECOM Trust Systems CO.,LTD. +# Subject: CN=Security Communication RootCA3 O=SECOM Trust Systems CO.,LTD. +# Label: "Security Communication RootCA3" +# Serial: 16247922307909811815 +# MD5 Fingerprint: 1c:9a:16:ff:9e:5c:e0:4d:8a:14:01:f4:35:5d:29:26 +# SHA1 Fingerprint: c3:03:c8:22:74:92:e5:61:a2:9c:5f:79:91:2b:1e:44:13:91:30:3a +# SHA256 Fingerprint: 24:a5:5c:2a:b0:51:44:2d:06:17:76:65:41:23:9a:4a:d0:32:d7:c5:51:75:aa:34:ff:de:2f:bc:4f:5c:52:94 +-----BEGIN CERTIFICATE----- +MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNV +BAYTAkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScw +JQYDVQQDEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2 +MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UEAxMeU2VjdXJpdHkg +Q29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC +CgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4r +CmDvu20rhvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzA +lrenfna84xtSGc4RHwsENPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MG +TfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF7 +9+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGmnpjKIG58u4iFW/vAEGK7 +8vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtYXLVqAvO4 +g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3we +GVPKp7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst ++3A7caoreyYn8xrC3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M +0V9hvqG8OmpI6iZVIhZdXw3/JzOfGAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQ +T9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0VcwCBEF/VfR2ccCAwEAAaNCMEAw +HQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS +YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PA +FNr0Y/Dq9HHuTofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd +9XbXv8S2gVj/yP9kaWJ5rW4OH3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQI +UYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASxYfQAW0q3nHE3GYV5v4GwxxMOdnE+ +OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZXSEIx2C/pHF7uNke +gr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml+LLf +iAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUV +nuiZIesnKwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD +2NCcnWXL0CsnMQMeNuE9dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI// +1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm6Vwdp6POXiUyK+OVrCoHzrQoeIY8Laad +TdJ0MN1kURXbg4NR16/9M51NZg== +-----END CERTIFICATE----- + +# Issuer: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. +# Subject: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. +# Label: "Security Communication ECC RootCA1" +# Serial: 15446673492073852651 +# MD5 Fingerprint: 7e:43:b0:92:68:ec:05:43:4c:98:ab:5d:35:2e:7e:86 +# SHA1 Fingerprint: b8:0e:26:a9:bf:d2:b2:3b:c0:ef:46:c9:ba:c7:bb:f6:1d:0d:41:41 +# SHA256 Fingerprint: e7:4f:bd:a5:5b:d5:64:c4:73:a3:6b:44:1a:a7:99:c8:a6:8e:07:74:40:e8:28:8b:9f:a1:e5:0e:4b:ba:ca:11 +-----BEGIN CERTIFICATE----- +MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYT +AkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYD +VQQDEyJTZWN1cml0eSBDb21tdW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYx +NjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTELMAkGA1UEBhMCSlAxJTAjBgNVBAoT +HFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNVBAMTIlNlY3VyaXR5 +IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+Cnnfdl +dB9sELLo5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpK +ULGjQjBAMB0GA1UdDgQWBBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu +9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3LsnNdo4gIxwwCMQDAqy0O +be0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70eN9k= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA1" +# Serial: 113562791157148395269083148143378328608 +# MD5 Fingerprint: 42:32:99:76:43:33:36:24:35:07:82:9b:28:f9:d0:90 +# SHA1 Fingerprint: d5:ec:8d:7b:4c:ba:79:f4:e7:e8:cb:9d:6b:ae:77:83:10:03:21:6a +# SHA256 Fingerprint: f3:89:6f:88:fe:7c:0a:88:27:66:a7:fa:6a:d2:74:9f:b5:7a:7f:3e:98:fb:76:9c:1f:a7:b0:9c:2c:44:d5:ae +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBU +MQswCQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRI +T1JJVFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAz +MTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJF +SUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2Jh +bCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFmCL3Z +xRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZ +spDyRhySsTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O5 +58dnJCNPYwpj9mZ9S1WnP3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgR +at7GGPZHOiJBhyL8xIkoVNiMpTAK+BcWyqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll +5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRjeulumijWML3mG90Vr4Tq +nMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNnMoH1V6XK +V0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/ +pj+bOT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZO +z2nxbkRs1CTqjSShGL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXn +jSXWgXSHRtQpdaJCbPdzied9v3pKH9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+ +WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMBAAGjQjBAMB0GA1UdDgQWBBTF +7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 +YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3Kli +awLwQ8hOnThJdMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u ++2D2/VnGKhs/I0qUJDAnyIm860Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88 +X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuhTaRjAv04l5U/BXCga99igUOLtFkN +SoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW4AB+dAb/OMRyHdOo +P2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmpGQrI ++pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRz +znfSxqxx4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9 +eVzYH6Eze9mCUAyTF6ps3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2 +YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4SSPfSKcOYKMryMguTjClPPGAyzQWWYezy +r/6zcCwupvI= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA2" +# Serial: 58605626836079930195615843123109055211 +# MD5 Fingerprint: 5e:0a:f6:47:5f:a6:14:e8:11:01:95:3f:4d:01:eb:3c +# SHA1 Fingerprint: f4:27:86:eb:6e:b8:6d:88:31:67:02:fb:ba:66:a4:53:00:aa:7a:a6 +# SHA256 Fingerprint: 57:4d:f6:93:1e:27:80:39:66:7b:72:0a:fd:c1:60:0f:c2:7e:b6:6d:d3:09:29:79:fb:73:85:64:87:21:28:82 +-----BEGIN CERTIFICATE----- +MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQsw +CQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJ +VFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgy +MVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJ +TkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2JhbCBS +b290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jlSR9B +IgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK+ ++kpRuDCK/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJK +sVF/BvDRgh9Obl+rg/xI1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA +94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8gUXOQwKhbYdDFUDn9hf7B +43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root E46" +# Serial: 88989738453351742415770396670917916916 +# MD5 Fingerprint: 28:23:f8:b2:98:5c:37:16:3b:3e:46:13:4e:b0:b3:01 +# SHA1 Fingerprint: ec:8a:39:6c:40:f0:2e:bc:42:75:d4:9f:ab:1c:1a:5b:67:be:d2:9a +# SHA256 Fingerprint: c9:0f:26:f0:fb:1b:40:18:b2:22:27:51:9b:5c:a2:b5:3e:2c:a5:b3:be:5c:f1:8e:fe:1b:ef:47:38:0c:53:83 +-----BEGIN CERTIFICATE----- +MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQsw +CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T +ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcN +MjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYG +A1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT +ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccC +WvkEN/U0NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+ +6xnOQ6OjQjBAMB0GA1UdDgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8B +Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNnADBkAjAn7qRa +qCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RHlAFWovgzJQxC36oCMB3q +4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21USAGKcw== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root R46" +# Serial: 156256931880233212765902055439220583700 +# MD5 Fingerprint: 32:10:09:52:00:d5:7e:6c:43:df:15:c0:b1:16:93:e5 +# SHA1 Fingerprint: ad:98:f9:f3:e4:7d:75:3b:65:d4:82:b3:a4:52:17:bb:6e:f5:e4:38 +# SHA256 Fingerprint: 7b:b6:47:a6:2a:ee:ac:88:bf:25:7a:a5:22:d0:1f:fe:a3:95:e0:ab:45:c7:3f:93:f6:56:54:ec:38:f2:5a:06 +-----BEGIN CERTIFICATE----- +MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBf +MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD +Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw +HhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEY +MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1Ymxp +YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDa +ef0rty2k1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnz +SDBh+oF8HqcIStw+KxwfGExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xf +iOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMPFF1bFOdLvt30yNoDN9HWOaEhUTCDsG3X +ME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vuZDCQOc2TZYEhMbUjUDM3 +IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5QazYw6A3OAS +VYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgE +SJ/AwSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu ++Zd4KKTIRJLpfSYFplhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt +8uaZFURww3y8nDnAtOFr94MlI1fZEoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+L +HaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW6aWWrL3DkJiy4Pmi1KZHQ3xt +zwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWIIUkwDgYDVR0P +AQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c +mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQ +YKlJfp/imTYpE0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52 +gDY9hAaLMyZlbcp+nv4fjFg4exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZA +Fv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M0ejf5lG5Nkc/kLnHvALcWxxPDkjB +JYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI84HxZmduTILA7rpX +DhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9mpFui +TdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5 +dHn5HrwdVw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65 +LvKRRFHQV80MNNVIIb/bE/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp +0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmmJ1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAY +QqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS RSA Root CA 2022" +# Serial: 148535279242832292258835760425842727825 +# MD5 Fingerprint: d8:4e:c6:59:30:d8:fe:a0:d6:7a:5a:2c:2c:69:78:da +# SHA1 Fingerprint: ec:2c:83:40:72:af:26:95:10:ff:0e:f2:03:ee:31:70:f6:78:9d:ca +# SHA256 Fingerprint: 8f:af:7d:2e:2c:b4:70:9b:b8:e0:b3:36:66:bf:75:a5:dd:45:b5:de:48:0f:8e:a8:d4:bf:e6:be:bc:17:f2:ed +-----BEGIN CERTIFICATE----- +MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBO +MQswCQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQD +DBxTU0wuY29tIFRMUyBSU0EgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloX +DTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jw +b3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJvb3QgQ0EgMjAyMjCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u9nTP +L3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OY +t6/wNr/y7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0ins +S657Lb85/bRi3pZ7QcacoOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3 +PnxEX4MN8/HdIGkWCVDi1FW24IBydm5MR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBO +L9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDGD6C1vBdOSHtRwvzpXGk3 +R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEWTO6Af77w +dr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS ++YCk8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYS +d66UNHsef8JmAOSqg+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoG +AtUjHBPW6dvbxrB6y3snm/vg1UYk7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2f +gTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsuN+7jhHonLs0Z +NbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt +hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsM +QtfhWsSWTVTNj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvf +R4iyrT7gJ4eLSYwfqUdYe5byiB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJ +DPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjUo3KUQyxi4U5cMj29TH0ZR6LDSeeW +P4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqoENjwuSfr98t67wVy +lrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7EgkaibMOlq +bLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2w +AgDHbICivRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3q +r5nsLFR+jM4uElZI7xc7P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sji +Mho6/4UIyYOf8kpIEFR3N+2ivEC+5BB09+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU +98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS ECC Root CA 2022" +# Serial: 26605119622390491762507526719404364228 +# MD5 Fingerprint: 99:d7:5c:f1:51:36:cc:e9:ce:d9:19:2e:77:71:56:c5 +# SHA1 Fingerprint: 9f:5f:d9:1a:54:6d:f5:0c:71:f0:ee:7a:bd:17:49:98:84:73:e2:39 +# SHA256 Fingerprint: c3:2f:fd:9f:46:f9:36:d1:6c:36:73:99:09:59:43:4b:9a:d6:0a:af:bb:9e:7c:f3:36:54:f1:44:cc:1b:a1:43 +-----BEGIN CERTIFICATE----- +MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxT +U0wuY29tIFRMUyBFQ0MgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2 +MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3Jh +dGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3QgQ0EgMjAyMjB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWyJGYm +acCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFN +SeR7T5v15wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME +GDAWgBSJjy+j6CugFFR781a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NW +uCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp +15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w7deedWo1dlJF4AIxAMeN +b0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5Zn6g6g== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA ECC TLS 2021" +# Serial: 81873346711060652204712539181482831616 +# MD5 Fingerprint: 16:9f:ad:f1:70:ad:79:d6:ed:29:b4:d1:c5:79:70:a8 +# SHA1 Fingerprint: 9e:bc:75:10:42:b3:02:f3:81:f4:f7:30:62:d4:8f:c3:a7:51:b2:dd +# SHA256 Fingerprint: b2:fa:e5:3e:14:cc:d7:ab:92:12:06:47:01:ae:27:9c:1d:89:88:fa:cb:77:5f:a8:a0:08:91:4e:66:39:88:a8 +-----BEGIN CERTIFICATE----- +MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4w +LAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0w +CwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0 +MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBF +Q0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMHYwEAYHKoZI +zj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6KDP/X +tXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4 +AjJn8ZQSb+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2 +KCXWfeBmmnoJsmo7jjPXNtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMD +aAAwZQIwW5kp85wxtolrbNa9d+F851F+uDrNozZffPc8dz7kUK2o59JZDCaOMDtu +CCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGYa3cpetskz2VAv9LcjBHo +9H1/IISpQuQo +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA RSA TLS 2021" +# Serial: 111436099570196163832749341232207667876 +# MD5 Fingerprint: d4:d3:46:b8:9a:c0:9c:76:5d:9e:3a:c3:b9:99:31:d2 +# SHA1 Fingerprint: 18:52:3b:0d:06:37:e4:d6:3a:df:23:e4:98:fb:5b:16:fb:86:74:48 +# SHA256 Fingerprint: 81:a9:08:8e:a5:9f:b3:64:c5:48:a6:f8:55:59:09:9b:6f:04:05:ef:bf:18:e5:32:4e:c9:f4:57:ba:00:11:2f +-----BEGIN CERTIFICATE----- +MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBM +MS4wLAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIx +MQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00 +MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBD +QSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BBl01Z +4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYv +Ye+W/CBGvevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZ +kmGbzSoXfduP9LVq6hdKZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDs +GY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt0xU6kGpn8bRrZtkh68rZYnxGEFzedUln +nkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVKPNe0OwANwI8f4UDErmwh +3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMYsluMWuPD +0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzy +geBYBr3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8 +ANSbhqRAvNncTFd+rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezB +c6eUWsuSZIKmAMFwoW4sKeFYV+xafJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lI +pw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU +dEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +DAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS +4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPs +o0UvFJ/1TCplQ3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJ +qM7F78PRreBrAwA0JrRUITWXAdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuyw +xfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9GslA9hGCZcbUztVdF5kJHdWoOsAgM +rr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2VktafcxBPTy+av5EzH4 +AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9qTFsR +0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuY +o7Ey7Nmj1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5 +dDTedk+SKlOxJTnbPP/lPqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcE +oji2jbDwN/zIIX8/syQbPYtuzE2wFg2WHYMfRsCbvUOZ58SWLs5fyQ== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G3" +# Serial: 576386314500428537169965010905813481816650257167 +# MD5 Fingerprint: 30:42:1b:b7:bb:81:75:35:e4:16:4f:53:d2:94:de:04 +# SHA1 Fingerprint: 63:cf:b6:c1:27:2b:56:e4:88:8e:1c:23:9a:b6:2e:81:47:24:c3:c7 +# SHA256 Fingerprint: e0:d3:22:6a:eb:11:63:c2:e4:8f:f9:be:3b:50:b4:c6:43:1b:e7:bb:1e:ac:c5:c3:6b:5d:5e:c5:09:03:9a:08 +-----BEGIN CERTIFICATE----- +MIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEM +BQAwWjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dp +ZXMsIEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAe +Fw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEwMTlaMFoxCzAJBgNVBAYTAkNOMSUw +IwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtU +cnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNS +T1QY4SxzlZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqK +AtCWHwDNBSHvBm3dIZwZQ0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1 +nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/VP68czH5GX6zfZBCK70bwkPAPLfSIC7Ep +qq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1AgdB4SQXMeJNnKziyhWTXA +yB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm9WAPzJMs +hH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gX +zhqcD0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAv +kV34PmVACxmZySYgWmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msT +f9FkPz2ccEblooV7WIQn3MSAPmeamseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jA +uPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCFTIcQcf+eQxuulXUtgQIDAQAB +o2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj7zjKsK5Xf/Ih +MBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E +BAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4 +wM8zAQLpw6o1D/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2 +XFNFV1pF1AWZLy4jVe5jaN/TG3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1 +JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNjduMNhXJEIlU/HHzp/LgV6FL6qj6j +ITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstlcHboCoWASzY9M/eV +VHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys+TIx +xHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1on +AX1daBli2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d +7XB4tmBZrOFdRWOPyN9yaFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2Ntjj +gKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsASZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV ++Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFRJQJ6+N1rZdVtTTDIZbpo +FGWsJwt0ivKH +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G4" +# Serial: 451799571007117016466790293371524403291602933463 +# MD5 Fingerprint: 54:dd:b2:d7:5f:d8:3e:ed:7c:e0:0b:2e:cc:ed:eb:eb +# SHA1 Fingerprint: 57:73:a5:61:5d:80:b2:e6:ac:38:82:fc:68:07:31:ac:9f:b5:92:5a +# SHA256 Fingerprint: be:4b:56:cb:50:56:c0:13:6a:52:6d:f4:44:50:8d:aa:36:a0:b5:4f:42:e4:ac:38:f7:2a:f4:70:e4:79:65:4c +-----BEGIN CERTIFICATE----- +MIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMw +WjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs +IEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0y +MTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJaMFoxCzAJBgNVBAYTAkNOMSUwIwYD +VQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtUcnVz +dEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATx +s8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbw +LxYI+hW8m7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJij +YzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mD +pm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/pDHel4NZg6ZvccveMA4GA1UdDwEB/wQE +AwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AAbbd+NvBNEU/zy4k6LHiR +UKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xkdUfFVZDj +/bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA== +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust ECC Root-01 O=CommScope +# Subject: CN=CommScope Public Trust ECC Root-01 O=CommScope +# Label: "CommScope Public Trust ECC Root-01" +# Serial: 385011430473757362783587124273108818652468453534 +# MD5 Fingerprint: 3a:40:a7:fc:03:8c:9c:38:79:2f:3a:a2:6c:b6:0a:16 +# SHA1 Fingerprint: 07:86:c0:d8:dd:8e:c0:80:98:06:98:d0:58:7a:ef:de:a6:cc:a2:5d +# SHA256 Fingerprint: 11:43:7c:da:7b:b4:5e:41:36:5f:45:b3:9a:38:98:6b:0d:e0:0d:ef:34:8e:0c:7b:b0:87:36:33:80:0b:c3:8b +-----BEGIN CERTIFICATE----- +MIICHTCCAaOgAwIBAgIUQ3CCd89NXTTxyq4yLzf39H91oJ4wCgYIKoZIzj0EAwMw +TjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29t +bVNjb3BlIFB1YmxpYyBUcnVzdCBFQ0MgUm9vdC0wMTAeFw0yMTA0MjgxNzM1NDNa +Fw00NjA0MjgxNzM1NDJaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21tU2Nv +cGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgRUNDIFJvb3QtMDEw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAARLNumuV16ocNfQj3Rid8NeeqrltqLxeP0C +flfdkXmcbLlSiFS8LwS+uM32ENEp7LXQoMPwiXAZu1FlxUOcw5tjnSCDPgYLpkJE +hRGnSjot6dZoL0hOUysHP029uax3OVejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSOB2LAUN3GGQYARnQE9/OufXVNMDAKBggq +hkjOPQQDAwNoADBlAjEAnDPfQeMjqEI2Jpc1XHvr20v4qotzVRVcrHgpD7oh2MSg +2NED3W3ROT3Ek2DS43KyAjB8xX6I01D1HiXo+k515liWpDVfG2XqYZpwI7UNo5uS +Um9poIyNStDuiw7LR47QjRE= +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust ECC Root-02 O=CommScope +# Subject: CN=CommScope Public Trust ECC Root-02 O=CommScope +# Label: "CommScope Public Trust ECC Root-02" +# Serial: 234015080301808452132356021271193974922492992893 +# MD5 Fingerprint: 59:b0:44:d5:65:4d:b8:5c:55:19:92:02:b6:d1:94:b2 +# SHA1 Fingerprint: 3c:3f:ef:57:0f:fe:65:93:86:9e:a0:fe:b0:f6:ed:8e:d1:13:c7:e5 +# SHA256 Fingerprint: 2f:fb:7f:81:3b:bb:b3:c8:9a:b4:e8:16:2d:0f:16:d7:15:09:a8:30:cc:9d:73:c2:62:e5:14:08:75:d1:ad:4a +-----BEGIN CERTIFICATE----- +MIICHDCCAaOgAwIBAgIUKP2ZYEFHpgE6yhR7H+/5aAiDXX0wCgYIKoZIzj0EAwMw +TjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29t +bVNjb3BlIFB1YmxpYyBUcnVzdCBFQ0MgUm9vdC0wMjAeFw0yMTA0MjgxNzQ0NTRa +Fw00NjA0MjgxNzQ0NTNaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21tU2Nv +cGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgRUNDIFJvb3QtMDIw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAR4MIHoYx7l63FRD/cHB8o5mXxO1Q/MMDAL +j2aTPs+9xYa9+bG3tD60B8jzljHz7aRP+KNOjSkVWLjVb3/ubCK1sK9IRQq9qEmU +v4RDsNuESgMjGWdqb8FuvAY5N9GIIvejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTmGHX/72DehKT1RsfeSlXjMjZ59TAKBggq +hkjOPQQDAwNnADBkAjAmc0l6tqvmSfR9Uj/UQQSugEODZXW5hYA4O9Zv5JOGq4/n +ich/m35rChJVYaoR4HkCMHfoMXGsPHED1oQmHhS48zs73u1Z/GtMMH9ZzkXpc2AV +mkzw5l4lIhVtwodZ0LKOag== +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust RSA Root-01 O=CommScope +# Subject: CN=CommScope Public Trust RSA Root-01 O=CommScope +# Label: "CommScope Public Trust RSA Root-01" +# Serial: 354030733275608256394402989253558293562031411421 +# MD5 Fingerprint: 0e:b4:15:bc:87:63:5d:5d:02:73:d4:26:38:68:73:d8 +# SHA1 Fingerprint: 6d:0a:5f:f7:b4:23:06:b4:85:b3:b7:97:64:fc:ac:75:f5:33:f2:93 +# SHA256 Fingerprint: 02:bd:f9:6e:2a:45:dd:9b:f1:8f:c7:e1:db:df:21:a0:37:9b:a3:c9:c2:61:03:44:cf:d8:d6:06:fe:c1:ed:81 +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIUPgNJgXUWdDGOTKvVxZAplsU5EN0wDQYJKoZIhvcNAQEL +BQAwTjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwi +Q29tbVNjb3BlIFB1YmxpYyBUcnVzdCBSU0EgUm9vdC0wMTAeFw0yMTA0MjgxNjQ1 +NTRaFw00NjA0MjgxNjQ1NTNaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21t +U2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgUlNBIFJvb3Qt +MDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwSGWjDR1C45FtnYSk +YZYSwu3D2iM0GXb26v1VWvZVAVMP8syMl0+5UMuzAURWlv2bKOx7dAvnQmtVzslh +suitQDy6uUEKBU8bJoWPQ7VAtYXR1HHcg0Hz9kXHgKKEUJdGzqAMxGBWBB0HW0al +DrJLpA6lfO741GIDuZNqihS4cPgugkY4Iw50x2tBt9Apo52AsH53k2NC+zSDO3Oj +WiE260f6GBfZumbCk6SP/F2krfxQapWsvCQz0b2If4b19bJzKo98rwjyGpg/qYFl +P8GMicWWMJoKz/TUyDTtnS+8jTiGU+6Xn6myY5QXjQ/cZip8UlF1y5mO6D1cv547 +KI2DAg+pn3LiLCuz3GaXAEDQpFSOm117RTYm1nJD68/A6g3czhLmfTifBSeolz7p +UcZsBSjBAg/pGG3svZwG1KdJ9FQFa2ww8esD1eo9anbCyxooSU1/ZOD6K9pzg4H/ +kQO9lLvkuI6cMmPNn7togbGEW682v3fuHX/3SZtS7NJ3Wn2RnU3COS3kuoL4b/JO +Hg9O5j9ZpSPcPYeoKFgo0fEbNttPxP/hjFtyjMcmAyejOQoBqsCyMWCDIqFPEgkB +Ea801M/XrmLTBQe0MXXgDW1XT2mH+VepuhX2yFJtocucH+X8eKg1mp9BFM6ltM6U +CBwJrVbl2rZJmkrqYxhTnCwuwwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUN12mmnQywsL5x6YVEFm45P3luG0wDQYJ +KoZIhvcNAQELBQADggIBAK+nz97/4L1CjU3lIpbfaOp9TSp90K09FlxD533Ahuh6 +NWPxzIHIxgvoLlI1pKZJkGNRrDSsBTtXAOnTYtPZKdVUvhwQkZyybf5Z/Xn36lbQ +nmhUQo8mUuJM3y+Xpi/SB5io82BdS5pYV4jvguX6r2yBS5KPQJqTRlnLX3gWsWc+ +QgvfKNmwrZggvkN80V4aCRckjXtdlemrwWCrWxhkgPut4AZ9HcpZuPN4KWfGVh2v +trV0KnahP/t1MJ+UXjulYPPLXAziDslg+MkfFoom3ecnf+slpoq9uC02EJqxWE2a +aE9gVOX2RhOOiKy8IUISrcZKiX2bwdgt6ZYD9KJ0DLwAHb/WNyVntHKLr4W96ioD +j8z7PEQkguIBpQtZtjSNMgsSDesnwv1B10A8ckYpwIzqug/xBpMu95yo9GA+o/E4 +Xo4TwbM6l4c/ksp4qRyv0LAbJh6+cOx69TOY6lz/KwsETkPdY34Op054A5U+1C0w +lREQKC6/oAI+/15Z0wUOlV9TRe9rh9VIzRamloPh37MG88EU26fsHItdkJANclHn +YfkUyq+Dj7+vsQpZXdxc1+SWrVtgHdqul7I52Qb1dgAT+GhMIbA1xNxVssnBQVoc +icCMb3SgazNNtQEo/a2tiRc7ppqEvOuM6sRxJKi6KfkIsidWNTJf6jn7MZrVGczw +-----END CERTIFICATE----- + +# Issuer: CN=CommScope Public Trust RSA Root-02 O=CommScope +# Subject: CN=CommScope Public Trust RSA Root-02 O=CommScope +# Label: "CommScope Public Trust RSA Root-02" +# Serial: 480062499834624527752716769107743131258796508494 +# MD5 Fingerprint: e1:29:f9:62:7b:76:e2:96:6d:f3:d4:d7:0f:ae:1f:aa +# SHA1 Fingerprint: ea:b0:e2:52:1b:89:93:4c:11:68:f2:d8:9a:ac:22:4c:a3:8a:57:ae +# SHA256 Fingerprint: ff:e9:43:d7:93:42:4b:4f:7c:44:0c:1c:3d:64:8d:53:63:f3:4b:82:dc:87:aa:7a:9f:11:8f:c5:de:e1:01:f1 +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIUVBa/O345lXGN0aoApYYNK496BU4wDQYJKoZIhvcNAQEL +BQAwTjELMAkGA1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwi +Q29tbVNjb3BlIFB1YmxpYyBUcnVzdCBSU0EgUm9vdC0wMjAeFw0yMTA0MjgxNzE2 +NDNaFw00NjA0MjgxNzE2NDJaME4xCzAJBgNVBAYTAlVTMRIwEAYDVQQKDAlDb21t +U2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3QgUlNBIFJvb3Qt +MDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDh+g77aAASyE3VrCLE +NQE7xVTlWXZjpX/rwcRqmL0yjReA61260WI9JSMZNRTpf4mnG2I81lDnNJUDMrG0 +kyI9p+Kx7eZ7Ti6Hmw0zdQreqjXnfuU2mKKuJZ6VszKWpCtYHu8//mI0SFHRtI1C +rWDaSWqVcN3SAOLMV2MCe5bdSZdbkk6V0/nLKR8YSvgBKtJjCW4k6YnS5cciTNxz +hkcAqg2Ijq6FfUrpuzNPDlJwnZXjfG2WWy09X6GDRl224yW4fKcZgBzqZUPckXk2 +LHR88mcGyYnJ27/aaL8j7dxrrSiDeS/sOKUNNwFnJ5rpM9kzXzehxfCrPfp4sOcs +n/Y+n2Dg70jpkEUeBVF4GiwSLFworA2iI540jwXmojPOEXcT1A6kHkIfhs1w/tku +FT0du7jyU1fbzMZ0KZwYszZ1OC4PVKH4kh+Jlk+71O6d6Ts2QrUKOyrUZHk2EOH5 +kQMreyBUzQ0ZGshBMjTRsJnhkB4BQDa1t/qp5Xd1pCKBXbCL5CcSD1SIxtuFdOa3 +wNemKfrb3vOTlycEVS8KbzfFPROvCgCpLIscgSjX74Yxqa7ybrjKaixUR9gqiC6v +wQcQeKwRoi9C8DfF8rhW3Q5iLc4tVn5V8qdE9isy9COoR+jUKgF4z2rDN6ieZdIs +5fq6M8EGRPbmz6UNp2YINIos8wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUR9DnsSL/nSz12Vdgs7GxcJXvYXowDQYJ +KoZIhvcNAQELBQADggIBAIZpsU0v6Z9PIpNojuQhmaPORVMbc0RTAIFhzTHjCLqB +KCh6krm2qMhDnscTJk3C2OVVnJJdUNjCK9v+5qiXz1I6JMNlZFxHMaNlNRPDk7n3 ++VGXu6TwYofF1gbTl4MgqX67tiHCpQ2EAOHyJxCDut0DgdXdaMNmEMjRdrSzbyme +APnCKfWxkxlSaRosTKCL4BWaMS/TiJVZbuXEs1DIFAhKm4sTg7GkcrI7djNB3Nyq +pgdvHSQSn8h2vS/ZjvQs7rfSOBAkNlEv41xdgSGn2rtO/+YHqP65DSdsu3BaVXoT +6fEqSWnHX4dXTEN5bTpl6TBcQe7rd6VzEojov32u5cSoHw2OHG1QAk8mGEPej1WF +sQs3BWDJVTkSBKEqz3EWnzZRSb9wO55nnPt7eck5HHisd5FUmrh1CoFSl+NmYWvt +PjgelmFV4ZFUjO2MJB+ByRCac5krFk5yAD9UG/iNuovnFNa2RU9g7Jauwy8CTl2d +lklyALKrdVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670 +v64fG9PiO/yzcnMcmyiQiRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17O +rg3bhzjlP1v9mxnhMUF6cKojawHhRUzNlM47ni3niAIi9G7oyOzWPPO5std3eqx7 +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS ECC Root 2020" +# Serial: 72082518505882327255703894282316633856 +# MD5 Fingerprint: c1:ab:fe:6a:10:2c:03:8d:bc:1c:22:32:c0:85:a7:fd +# SHA1 Fingerprint: c0:f8:96:c5:a9:3b:01:06:21:07:da:18:42:48:bc:e9:9d:88:d5:ec +# SHA256 Fingerprint: 57:8a:f4:de:d0:85:3f:4e:59:98:db:4a:ea:f9:cb:ea:8d:94:5f:60:b6:20:a3:8d:1a:3c:13:b2:bc:7b:a8:e1 +-----BEGIN CERTIFICATE----- +MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQsw +CQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBH +bWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIw +MB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIzNTk1OVowYzELMAkGA1UEBhMCREUx +JzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkGA1UE +AwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/O +tdKPD/M12kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDP +f8iAC8GXs7s1J8nCG6NCMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6f +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA +MGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZMo7k+5Dck2TOrbRBR2Di +z6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdUga/sf+Rn +27iQ7t0l +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS RSA Root 2023" +# Serial: 44676229530606711399881795178081572759 +# MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2 +# SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93 +# SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBj +MQswCQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0 +eSBHbWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAy +MDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMyNzIzNTk1OVowYzELMAkGA1UEBhMC +REUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkG +A1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9 +cUD/h3VCKSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHV +cp6R+SPWcHu79ZvB7JPPGeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMA +U6DksquDOFczJZSfvkgdmOGjup5czQRxUX11eKvzWarE4GC+j4NSuHUaQTXtvPM6 +Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWol8hHD/BeEIvnHRz+sTug +BTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9FIS3R/qy +8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73J +co4vzLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg +8qKrBC7m8kwOFjQgrIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8 +rFEz0ciD0cmfHdRHNCk+y7AO+oMLKFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12 +mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7SWWO/gLCMk3PLNaaZlSJhZQNg ++y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtqeX +gj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2 +p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQ +pGv7qHBFfLp+sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm +9S3ul0A8Yute1hTWjOKWi0FpkzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErw +M807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy/SKE8YXJN3nptT+/XOR0so8RYgDd +GGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4mZqTuXNnQkYRIer+ +CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtzaL1t +xKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+ +w6jv/naaoqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aK +L4x35bcF7DvB7L6Gs4a8wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+lj +X273CXE2whJdV/LItM3z7gLfEdxquVeEHVlNjM7IDiPCtyaaEBRx/pOyiriA8A4Q +ntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0o82bNSQ3+pCTE4FCxpgm +dTdmQRCsu/WU48IxK63nI1bMNSWSs1A= +-----END CERTIFICATE----- + +# Issuer: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA +# Subject: CN=FIRMAPROFESIONAL CA ROOT-A WEB O=Firmaprofesional SA +# Label: "FIRMAPROFESIONAL CA ROOT-A WEB" +# Serial: 65916896770016886708751106294915943533 +# MD5 Fingerprint: 82:b2:ad:45:00:82:b0:66:63:f8:5f:c3:67:4e:ce:a3 +# SHA1 Fingerprint: a8:31:11:74:a6:14:15:0d:ca:77:dd:0e:e4:0c:5d:58:fc:a0:72:a5 +# SHA256 Fingerprint: be:f2:56:da:f2:6e:9c:69:bd:ec:16:02:35:97:98:f3:ca:f7:18:21:a0:3e:01:82:57:c5:3c:65:61:7f:3d:4a +-----BEGIN CERTIFICATE----- +MIICejCCAgCgAwIBAgIQMZch7a+JQn81QYehZ1ZMbTAKBggqhkjOPQQDAzBuMQsw +CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE +YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB +IFJPT1QtQSBXRUIwHhcNMjIwNDA2MDkwMTM2WhcNNDcwMzMxMDkwMTM2WjBuMQsw +CQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UE +YQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENB +IFJPT1QtQSBXRUIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARHU+osEaR3xyrq89Zf +e9MEkVz6iMYiuYMQYneEMy3pA4jU4DP37XcsSmDq5G+tbbT4TIqk5B/K6k84Si6C +cyvHZpsKjECcfIr28jlgst7L7Ljkb+qbXbdTkBgyVcUgt5SjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAUk+FDY1w8ndYn81LsF7Kpryz3dvgwHQYDVR0O +BBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO +PQQDAwNoADBlAjAdfKR7w4l1M+E7qUW/Runpod3JIha3RxEL2Jq68cgLcFBTApFw +hVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dG +XSaQpYXFuXqUPoeovQA= +-----END CERTIFICATE----- diff --git a/venv/Lib/site-packages/pip/_vendor/certifi/core.py b/venv/Lib/site-packages/pip/_vendor/certifi/core.py new file mode 100644 index 00000000000..70e0c3bdbd2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/certifi/core.py @@ -0,0 +1,114 @@ +""" +certifi.py +~~~~~~~~~~ + +This module returns the installation location of cacert.pem or its contents. +""" +import sys +import atexit + +def exit_cacert_ctx() -> None: + _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] + + +if sys.version_info >= (3, 11): + + from importlib.resources import as_file, files + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the file + # in cases where we're inside of a zipimport situation until someone + # actually calls where(), but we don't want to re-extract the file + # on every call of where(), so we'll do it once then store it in a + # global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you to + # manage the cleanup of this file, so it doesn't actually return a + # path, it returns a context manager that will give you the path + # when you enter it and will do any cleanup when you leave it. In + # the common case of not needing a temporary file, it will just + # return the file system location and the __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = as_file(files("pip._vendor.certifi").joinpath("cacert.pem")) + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return files("pip._vendor.certifi").joinpath("cacert.pem").read_text(encoding="ascii") + +elif sys.version_info >= (3, 7): + + from importlib.resources import path as get_path, read_text + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the + # file in cases where we're inside of a zipimport situation until + # someone actually calls where(), but we don't want to re-extract + # the file on every call of where(), so we'll do it once then store + # it in a global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you + # to manage the cleanup of this file, so it doesn't actually + # return a path, it returns a context manager that will give + # you the path when you enter it and will do any cleanup when + # you leave it. In the common case of not needing a temporary + # file, it will just return the file system location and the + # __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = get_path("pip._vendor.certifi", "cacert.pem") + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return read_text("pip._vendor.certifi", "cacert.pem", encoding="ascii") + +else: + import os + import types + from typing import Union + + Package = Union[types.ModuleType, str] + Resource = Union[str, "os.PathLike"] + + # This fallback will work for Python versions prior to 3.7 that lack the + # importlib.resources module but relies on the existing `where` function + # so won't address issues with environments like PyOxidizer that don't set + # __file__ on modules. + def read_text( + package: Package, + resource: Resource, + encoding: str = 'utf-8', + errors: str = 'strict' + ) -> str: + with open(where(), encoding=encoding) as data: + return data.read() + + # If we don't have importlib.resources, then we will just do the old logic + # of assuming we're on the filesystem and munge the path directly. + def where() -> str: + f = os.path.dirname(__file__) + + return os.path.join(f, "cacert.pem") + + def contents() -> str: + return read_text("pip._vendor.certifi", "cacert.pem", encoding="ascii") diff --git a/venv/Lib/site-packages/pip/_vendor/certifi/py.typed b/venv/Lib/site-packages/pip/_vendor/certifi/py.typed new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py b/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py new file mode 100644 index 00000000000..e999438fe94 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2023 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import logging + +__version__ = '0.3.8' + + +class DistlibException(Exception): + pass + + +try: + from logging import NullHandler +except ImportError: # pragma: no cover + + class NullHandler(logging.Handler): + + def handle(self, record): + pass + + def emit(self, record): + pass + + def createLock(self): + self.lock = None + + +logger = logging.getLogger(__name__) +logger.addHandler(NullHandler()) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/compat.py b/venv/Lib/site-packages/pip/_vendor/distlib/compat.py new file mode 100644 index 00000000000..e93dc27a3eb --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/compat.py @@ -0,0 +1,1138 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2017 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import absolute_import + +import os +import re +import shutil +import sys + +try: + import ssl +except ImportError: # pragma: no cover + ssl = None + +if sys.version_info[0] < 3: # pragma: no cover + from StringIO import StringIO + string_types = basestring, + text_type = unicode + from types import FileType as file_type + import __builtin__ as builtins + import ConfigParser as configparser + from urlparse import urlparse, urlunparse, urljoin, urlsplit, urlunsplit + from urllib import (urlretrieve, quote as _quote, unquote, url2pathname, + pathname2url, ContentTooShortError, splittype) + + def quote(s): + if isinstance(s, unicode): + s = s.encode('utf-8') + return _quote(s) + + import urllib2 + from urllib2 import (Request, urlopen, URLError, HTTPError, + HTTPBasicAuthHandler, HTTPPasswordMgr, HTTPHandler, + HTTPRedirectHandler, build_opener) + if ssl: + from urllib2 import HTTPSHandler + import httplib + import xmlrpclib + import Queue as queue + from HTMLParser import HTMLParser + import htmlentitydefs + raw_input = raw_input + from itertools import ifilter as filter + from itertools import ifilterfalse as filterfalse + + # Leaving this around for now, in case it needs resurrecting in some way + # _userprog = None + # def splituser(host): + # """splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.""" + # global _userprog + # if _userprog is None: + # import re + # _userprog = re.compile('^(.*)@(.*)$') + + # match = _userprog.match(host) + # if match: return match.group(1, 2) + # return None, host + +else: # pragma: no cover + from io import StringIO + string_types = str, + text_type = str + from io import TextIOWrapper as file_type + import builtins + import configparser + from urllib.parse import (urlparse, urlunparse, urljoin, quote, unquote, + urlsplit, urlunsplit, splittype) + from urllib.request import (urlopen, urlretrieve, Request, url2pathname, + pathname2url, HTTPBasicAuthHandler, + HTTPPasswordMgr, HTTPHandler, + HTTPRedirectHandler, build_opener) + if ssl: + from urllib.request import HTTPSHandler + from urllib.error import HTTPError, URLError, ContentTooShortError + import http.client as httplib + import urllib.request as urllib2 + import xmlrpc.client as xmlrpclib + import queue + from html.parser import HTMLParser + import html.entities as htmlentitydefs + raw_input = input + from itertools import filterfalse + filter = filter + +try: + from ssl import match_hostname, CertificateError +except ImportError: # pragma: no cover + + class CertificateError(ValueError): + pass + + def _dnsname_match(dn, hostname, max_wildcards=1): + """Matching according to RFC 6125, section 6.4.3 + + http://tools.ietf.org/html/rfc6125#section-6.4.3 + """ + pats = [] + if not dn: + return False + + parts = dn.split('.') + leftmost, remainder = parts[0], parts[1:] + + wildcards = leftmost.count('*') + if wildcards > max_wildcards: + # Issue #17980: avoid denials of service by refusing more + # than one wildcard per fragment. A survey of established + # policy among SSL implementations showed it to be a + # reasonable choice. + raise CertificateError( + "too many wildcards in certificate DNS name: " + repr(dn)) + + # speed up common case w/o wildcards + if not wildcards: + return dn.lower() == hostname.lower() + + # RFC 6125, section 6.4.3, subitem 1. + # The client SHOULD NOT attempt to match a presented identifier in which + # the wildcard character comprises a label other than the left-most label. + if leftmost == '*': + # When '*' is a fragment by itself, it matches a non-empty dotless + # fragment. + pats.append('[^.]+') + elif leftmost.startswith('xn--') or hostname.startswith('xn--'): + # RFC 6125, section 6.4.3, subitem 3. + # The client SHOULD NOT attempt to match a presented identifier + # where the wildcard character is embedded within an A-label or + # U-label of an internationalized domain name. + pats.append(re.escape(leftmost)) + else: + # Otherwise, '*' matches any dotless string, e.g. www* + pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) + + # add the remaining fragments, ignore any wildcards + for frag in remainder: + pats.append(re.escape(frag)) + + pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) + return pat.match(hostname) + + def match_hostname(cert, hostname): + """Verify that *cert* (in decoded format as returned by + SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 + rules are followed, but IP addresses are not accepted for *hostname*. + + CertificateError is raised on failure. On success, the function + returns nothing. + """ + if not cert: + raise ValueError("empty or no certificate, match_hostname needs a " + "SSL socket or SSL context with either " + "CERT_OPTIONAL or CERT_REQUIRED") + dnsnames = [] + san = cert.get('subjectAltName', ()) + for key, value in san: + if key == 'DNS': + if _dnsname_match(value, hostname): + return + dnsnames.append(value) + if not dnsnames: + # The subject is only checked when there is no dNSName entry + # in subjectAltName + for sub in cert.get('subject', ()): + for key, value in sub: + # XXX according to RFC 2818, the most specific Common Name + # must be used. + if key == 'commonName': + if _dnsname_match(value, hostname): + return + dnsnames.append(value) + if len(dnsnames) > 1: + raise CertificateError("hostname %r " + "doesn't match either of %s" % + (hostname, ', '.join(map(repr, dnsnames)))) + elif len(dnsnames) == 1: + raise CertificateError("hostname %r " + "doesn't match %r" % + (hostname, dnsnames[0])) + else: + raise CertificateError("no appropriate commonName or " + "subjectAltName fields were found") + + +try: + from types import SimpleNamespace as Container +except ImportError: # pragma: no cover + + class Container(object): + """ + A generic container for when multiple values need to be returned + """ + + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + +try: + from shutil import which +except ImportError: # pragma: no cover + # Implementation from Python 3.3 + def which(cmd, mode=os.F_OK | os.X_OK, path=None): + """Given a command, mode, and a PATH string, return the path which + conforms to the given mode on the PATH, or None if there is no such + file. + + `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result + of os.environ.get("PATH"), or can be overridden with a custom search + path. + + """ + + # Check that a given file can be accessed with the correct mode. + # Additionally check that `file` is not a directory, as on Windows + # directories pass the os.access check. + def _access_check(fn, mode): + return (os.path.exists(fn) and os.access(fn, mode) + and not os.path.isdir(fn)) + + # If we're given a path with a directory part, look it up directly rather + # than referring to PATH directories. This includes checking relative to the + # current directory, e.g. ./script + if os.path.dirname(cmd): + if _access_check(cmd, mode): + return cmd + return None + + if path is None: + path = os.environ.get("PATH", os.defpath) + if not path: + return None + path = path.split(os.pathsep) + + if sys.platform == "win32": + # The current directory takes precedence on Windows. + if os.curdir not in path: + path.insert(0, os.curdir) + + # PATHEXT is necessary to check on Windows. + pathext = os.environ.get("PATHEXT", "").split(os.pathsep) + # See if the given file matches any of the expected path extensions. + # This will allow us to short circuit when given "python.exe". + # If it does match, only test that one, otherwise we have to try + # others. + if any(cmd.lower().endswith(ext.lower()) for ext in pathext): + files = [cmd] + else: + files = [cmd + ext for ext in pathext] + else: + # On other platforms you don't have things like PATHEXT to tell you + # what file suffixes are executable, so just pass on cmd as-is. + files = [cmd] + + seen = set() + for dir in path: + normdir = os.path.normcase(dir) + if normdir not in seen: + seen.add(normdir) + for thefile in files: + name = os.path.join(dir, thefile) + if _access_check(name, mode): + return name + return None + + +# ZipFile is a context manager in 2.7, but not in 2.6 + +from zipfile import ZipFile as BaseZipFile + +if hasattr(BaseZipFile, '__enter__'): # pragma: no cover + ZipFile = BaseZipFile +else: # pragma: no cover + from zipfile import ZipExtFile as BaseZipExtFile + + class ZipExtFile(BaseZipExtFile): + + def __init__(self, base): + self.__dict__.update(base.__dict__) + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.close() + # return None, so if an exception occurred, it will propagate + + class ZipFile(BaseZipFile): + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.close() + # return None, so if an exception occurred, it will propagate + + def open(self, *args, **kwargs): + base = BaseZipFile.open(self, *args, **kwargs) + return ZipExtFile(base) + + +try: + from platform import python_implementation +except ImportError: # pragma: no cover + + def python_implementation(): + """Return a string identifying the Python implementation.""" + if 'PyPy' in sys.version: + return 'PyPy' + if os.name == 'java': + return 'Jython' + if sys.version.startswith('IronPython'): + return 'IronPython' + return 'CPython' + + +import sysconfig + +try: + callable = callable +except NameError: # pragma: no cover + from collections.abc import Callable + + def callable(obj): + return isinstance(obj, Callable) + + +try: + fsencode = os.fsencode + fsdecode = os.fsdecode +except AttributeError: # pragma: no cover + # Issue #99: on some systems (e.g. containerised), + # sys.getfilesystemencoding() returns None, and we need a real value, + # so fall back to utf-8. From the CPython 2.7 docs relating to Unix and + # sys.getfilesystemencoding(): the return value is "the user’s preference + # according to the result of nl_langinfo(CODESET), or None if the + # nl_langinfo(CODESET) failed." + _fsencoding = sys.getfilesystemencoding() or 'utf-8' + if _fsencoding == 'mbcs': + _fserrors = 'strict' + else: + _fserrors = 'surrogateescape' + + def fsencode(filename): + if isinstance(filename, bytes): + return filename + elif isinstance(filename, text_type): + return filename.encode(_fsencoding, _fserrors) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) + + def fsdecode(filename): + if isinstance(filename, text_type): + return filename + elif isinstance(filename, bytes): + return filename.decode(_fsencoding, _fserrors) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) + + +try: + from tokenize import detect_encoding +except ImportError: # pragma: no cover + from codecs import BOM_UTF8, lookup + + cookie_re = re.compile(r"coding[:=]\s*([-\w.]+)") + + def _get_normal_name(orig_enc): + """Imitates get_normal_name in tokenizer.c.""" + # Only care about the first 12 characters. + enc = orig_enc[:12].lower().replace("_", "-") + if enc == "utf-8" or enc.startswith("utf-8-"): + return "utf-8" + if enc in ("latin-1", "iso-8859-1", "iso-latin-1") or \ + enc.startswith(("latin-1-", "iso-8859-1-", "iso-latin-1-")): + return "iso-8859-1" + return orig_enc + + def detect_encoding(readline): + """ + The detect_encoding() function is used to detect the encoding that should + be used to decode a Python source file. It requires one argument, readline, + in the same way as the tokenize() generator. + + It will call readline a maximum of twice, and return the encoding used + (as a string) and a list of any lines (left as bytes) it has read in. + + It detects the encoding from the presence of a utf-8 bom or an encoding + cookie as specified in pep-0263. If both a bom and a cookie are present, + but disagree, a SyntaxError will be raised. If the encoding cookie is an + invalid charset, raise a SyntaxError. Note that if a utf-8 bom is found, + 'utf-8-sig' is returned. + + If no encoding is specified, then the default of 'utf-8' will be returned. + """ + try: + filename = readline.__self__.name + except AttributeError: + filename = None + bom_found = False + encoding = None + default = 'utf-8' + + def read_or_stop(): + try: + return readline() + except StopIteration: + return b'' + + def find_cookie(line): + try: + # Decode as UTF-8. Either the line is an encoding declaration, + # in which case it should be pure ASCII, or it must be UTF-8 + # per default encoding. + line_string = line.decode('utf-8') + except UnicodeDecodeError: + msg = "invalid or missing encoding declaration" + if filename is not None: + msg = '{} for {!r}'.format(msg, filename) + raise SyntaxError(msg) + + matches = cookie_re.findall(line_string) + if not matches: + return None + encoding = _get_normal_name(matches[0]) + try: + codec = lookup(encoding) + except LookupError: + # This behaviour mimics the Python interpreter + if filename is None: + msg = "unknown encoding: " + encoding + else: + msg = "unknown encoding for {!r}: {}".format( + filename, encoding) + raise SyntaxError(msg) + + if bom_found: + if codec.name != 'utf-8': + # This behaviour mimics the Python interpreter + if filename is None: + msg = 'encoding problem: utf-8' + else: + msg = 'encoding problem for {!r}: utf-8'.format( + filename) + raise SyntaxError(msg) + encoding += '-sig' + return encoding + + first = read_or_stop() + if first.startswith(BOM_UTF8): + bom_found = True + first = first[3:] + default = 'utf-8-sig' + if not first: + return default, [] + + encoding = find_cookie(first) + if encoding: + return encoding, [first] + + second = read_or_stop() + if not second: + return default, [first] + + encoding = find_cookie(second) + if encoding: + return encoding, [first, second] + + return default, [first, second] + + +# For converting & <-> & etc. +try: + from html import escape +except ImportError: + from cgi import escape +if sys.version_info[:2] < (3, 4): + unescape = HTMLParser().unescape +else: + from html import unescape + +try: + from collections import ChainMap +except ImportError: # pragma: no cover + from collections import MutableMapping + + try: + from reprlib import recursive_repr as _recursive_repr + except ImportError: + + def _recursive_repr(fillvalue='...'): + ''' + Decorator to make a repr function return fillvalue for a recursive + call + ''' + + def decorating_function(user_function): + repr_running = set() + + def wrapper(self): + key = id(self), get_ident() + if key in repr_running: + return fillvalue + repr_running.add(key) + try: + result = user_function(self) + finally: + repr_running.discard(key) + return result + + # Can't use functools.wraps() here because of bootstrap issues + wrapper.__module__ = getattr(user_function, '__module__') + wrapper.__doc__ = getattr(user_function, '__doc__') + wrapper.__name__ = getattr(user_function, '__name__') + wrapper.__annotations__ = getattr(user_function, + '__annotations__', {}) + return wrapper + + return decorating_function + + class ChainMap(MutableMapping): + ''' + A ChainMap groups multiple dicts (or other mappings) together + to create a single, updateable view. + + The underlying mappings are stored in a list. That list is public and can + accessed or updated using the *maps* attribute. There is no other state. + + Lookups search the underlying mappings successively until a key is found. + In contrast, writes, updates, and deletions only operate on the first + mapping. + ''' + + def __init__(self, *maps): + '''Initialize a ChainMap by setting *maps* to the given mappings. + If no mappings are provided, a single empty dictionary is used. + + ''' + self.maps = list(maps) or [{}] # always at least one map + + def __missing__(self, key): + raise KeyError(key) + + def __getitem__(self, key): + for mapping in self.maps: + try: + return mapping[ + key] # can't use 'key in mapping' with defaultdict + except KeyError: + pass + return self.__missing__( + key) # support subclasses that define __missing__ + + def get(self, key, default=None): + return self[key] if key in self else default + + def __len__(self): + return len(set().union( + *self.maps)) # reuses stored hash values if possible + + def __iter__(self): + return iter(set().union(*self.maps)) + + def __contains__(self, key): + return any(key in m for m in self.maps) + + def __bool__(self): + return any(self.maps) + + @_recursive_repr() + def __repr__(self): + return '{0.__class__.__name__}({1})'.format( + self, ', '.join(map(repr, self.maps))) + + @classmethod + def fromkeys(cls, iterable, *args): + 'Create a ChainMap with a single dict created from the iterable.' + return cls(dict.fromkeys(iterable, *args)) + + def copy(self): + 'New ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]' + return self.__class__(self.maps[0].copy(), *self.maps[1:]) + + __copy__ = copy + + def new_child(self): # like Django's Context.push() + 'New ChainMap with a new dict followed by all previous maps.' + return self.__class__({}, *self.maps) + + @property + def parents(self): # like Django's Context.pop() + 'New ChainMap from maps[1:].' + return self.__class__(*self.maps[1:]) + + def __setitem__(self, key, value): + self.maps[0][key] = value + + def __delitem__(self, key): + try: + del self.maps[0][key] + except KeyError: + raise KeyError( + 'Key not found in the first mapping: {!r}'.format(key)) + + def popitem(self): + 'Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.' + try: + return self.maps[0].popitem() + except KeyError: + raise KeyError('No keys found in the first mapping.') + + def pop(self, key, *args): + 'Remove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].' + try: + return self.maps[0].pop(key, *args) + except KeyError: + raise KeyError( + 'Key not found in the first mapping: {!r}'.format(key)) + + def clear(self): + 'Clear maps[0], leaving maps[1:] intact.' + self.maps[0].clear() + + +try: + from importlib.util import cache_from_source # Python >= 3.4 +except ImportError: # pragma: no cover + + def cache_from_source(path, debug_override=None): + assert path.endswith('.py') + if debug_override is None: + debug_override = __debug__ + if debug_override: + suffix = 'c' + else: + suffix = 'o' + return path + suffix + + +try: + from collections import OrderedDict +except ImportError: # pragma: no cover + # {{{ http://code.activestate.com/recipes/576693/ (r9) + # Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy. + # Passes Python2.7's test suite and incorporates all the latest updates. + try: + from thread import get_ident as _get_ident + except ImportError: + from dummy_thread import get_ident as _get_ident + + try: + from _abcoll import KeysView, ValuesView, ItemsView + except ImportError: + pass + + class OrderedDict(dict): + 'Dictionary that remembers insertion order' + + # An inherited dict maps keys to values. + # The inherited dict provides __getitem__, __len__, __contains__, and get. + # The remaining methods are order-aware. + # Big-O running times for all methods are the same as for regular dictionaries. + + # The internal self.__map dictionary maps keys to links in a doubly linked list. + # The circular doubly linked list starts and ends with a sentinel element. + # The sentinel element never gets deleted (this simplifies the algorithm). + # Each link is stored as a list of length three: [PREV, NEXT, KEY]. + + def __init__(self, *args, **kwds): + '''Initialize an ordered dictionary. Signature is the same as for + regular dictionaries, but keyword arguments are not recommended + because their insertion order is arbitrary. + + ''' + if len(args) > 1: + raise TypeError('expected at most 1 arguments, got %d' % + len(args)) + try: + self.__root + except AttributeError: + self.__root = root = [] # sentinel node + root[:] = [root, root, None] + self.__map = {} + self.__update(*args, **kwds) + + def __setitem__(self, key, value, dict_setitem=dict.__setitem__): + 'od.__setitem__(i, y) <==> od[i]=y' + # Setting a new item creates a new link which goes at the end of the linked + # list, and the inherited dictionary is updated with the new key/value pair. + if key not in self: + root = self.__root + last = root[0] + last[1] = root[0] = self.__map[key] = [last, root, key] + dict_setitem(self, key, value) + + def __delitem__(self, key, dict_delitem=dict.__delitem__): + 'od.__delitem__(y) <==> del od[y]' + # Deleting an existing item uses self.__map to find the link which is + # then removed by updating the links in the predecessor and successor nodes. + dict_delitem(self, key) + link_prev, link_next, key = self.__map.pop(key) + link_prev[1] = link_next + link_next[0] = link_prev + + def __iter__(self): + 'od.__iter__() <==> iter(od)' + root = self.__root + curr = root[1] + while curr is not root: + yield curr[2] + curr = curr[1] + + def __reversed__(self): + 'od.__reversed__() <==> reversed(od)' + root = self.__root + curr = root[0] + while curr is not root: + yield curr[2] + curr = curr[0] + + def clear(self): + 'od.clear() -> None. Remove all items from od.' + try: + for node in self.__map.itervalues(): + del node[:] + root = self.__root + root[:] = [root, root, None] + self.__map.clear() + except AttributeError: + pass + dict.clear(self) + + def popitem(self, last=True): + '''od.popitem() -> (k, v), return and remove a (key, value) pair. + Pairs are returned in LIFO order if last is true or FIFO order if false. + + ''' + if not self: + raise KeyError('dictionary is empty') + root = self.__root + if last: + link = root[0] + link_prev = link[0] + link_prev[1] = root + root[0] = link_prev + else: + link = root[1] + link_next = link[1] + root[1] = link_next + link_next[0] = root + key = link[2] + del self.__map[key] + value = dict.pop(self, key) + return key, value + + # -- the following methods do not depend on the internal structure -- + + def keys(self): + 'od.keys() -> list of keys in od' + return list(self) + + def values(self): + 'od.values() -> list of values in od' + return [self[key] for key in self] + + def items(self): + 'od.items() -> list of (key, value) pairs in od' + return [(key, self[key]) for key in self] + + def iterkeys(self): + 'od.iterkeys() -> an iterator over the keys in od' + return iter(self) + + def itervalues(self): + 'od.itervalues -> an iterator over the values in od' + for k in self: + yield self[k] + + def iteritems(self): + 'od.iteritems -> an iterator over the (key, value) items in od' + for k in self: + yield (k, self[k]) + + def update(*args, **kwds): + '''od.update(E, **F) -> None. Update od from dict/iterable E and F. + + If E is a dict instance, does: for k in E: od[k] = E[k] + If E has a .keys() method, does: for k in E.keys(): od[k] = E[k] + Or if E is an iterable of items, does: for k, v in E: od[k] = v + In either case, this is followed by: for k, v in F.items(): od[k] = v + + ''' + if len(args) > 2: + raise TypeError('update() takes at most 2 positional ' + 'arguments (%d given)' % (len(args), )) + elif not args: + raise TypeError('update() takes at least 1 argument (0 given)') + self = args[0] + # Make progressively weaker assumptions about "other" + other = () + if len(args) == 2: + other = args[1] + if isinstance(other, dict): + for key in other: + self[key] = other[key] + elif hasattr(other, 'keys'): + for key in other.keys(): + self[key] = other[key] + else: + for key, value in other: + self[key] = value + for key, value in kwds.items(): + self[key] = value + + __update = update # let subclasses override update without breaking __init__ + + __marker = object() + + def pop(self, key, default=__marker): + '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value. + If key is not found, d is returned if given, otherwise KeyError is raised. + + ''' + if key in self: + result = self[key] + del self[key] + return result + if default is self.__marker: + raise KeyError(key) + return default + + def setdefault(self, key, default=None): + 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od' + if key in self: + return self[key] + self[key] = default + return default + + def __repr__(self, _repr_running=None): + 'od.__repr__() <==> repr(od)' + if not _repr_running: + _repr_running = {} + call_key = id(self), _get_ident() + if call_key in _repr_running: + return '...' + _repr_running[call_key] = 1 + try: + if not self: + return '%s()' % (self.__class__.__name__, ) + return '%s(%r)' % (self.__class__.__name__, self.items()) + finally: + del _repr_running[call_key] + + def __reduce__(self): + 'Return state information for pickling' + items = [[k, self[k]] for k in self] + inst_dict = vars(self).copy() + for k in vars(OrderedDict()): + inst_dict.pop(k, None) + if inst_dict: + return (self.__class__, (items, ), inst_dict) + return self.__class__, (items, ) + + def copy(self): + 'od.copy() -> a shallow copy of od' + return self.__class__(self) + + @classmethod + def fromkeys(cls, iterable, value=None): + '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S + and values equal to v (which defaults to None). + + ''' + d = cls() + for key in iterable: + d[key] = value + return d + + def __eq__(self, other): + '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive + while comparison to a regular mapping is order-insensitive. + + ''' + if isinstance(other, OrderedDict): + return len(self) == len( + other) and self.items() == other.items() + return dict.__eq__(self, other) + + def __ne__(self, other): + return not self == other + + # -- the following methods are only used in Python 2.7 -- + + def viewkeys(self): + "od.viewkeys() -> a set-like object providing a view on od's keys" + return KeysView(self) + + def viewvalues(self): + "od.viewvalues() -> an object providing a view on od's values" + return ValuesView(self) + + def viewitems(self): + "od.viewitems() -> a set-like object providing a view on od's items" + return ItemsView(self) + + +try: + from logging.config import BaseConfigurator, valid_ident +except ImportError: # pragma: no cover + IDENTIFIER = re.compile('^[a-z_][a-z0-9_]*$', re.I) + + def valid_ident(s): + m = IDENTIFIER.match(s) + if not m: + raise ValueError('Not a valid Python identifier: %r' % s) + return True + + # The ConvertingXXX classes are wrappers around standard Python containers, + # and they serve to convert any suitable values in the container. The + # conversion converts base dicts, lists and tuples to their wrapped + # equivalents, whereas strings which match a conversion format are converted + # appropriately. + # + # Each wrapper should have a configurator attribute holding the actual + # configurator to use for conversion. + + class ConvertingDict(dict): + """A converting dictionary wrapper.""" + + def __getitem__(self, key): + value = dict.__getitem__(self, key) + result = self.configurator.convert(value) + # If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def get(self, key, default=None): + value = dict.get(self, key, default) + result = self.configurator.convert(value) + # If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def pop(self, key, default=None): + value = dict.pop(self, key, default) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + class ConvertingList(list): + """A converting list wrapper.""" + + def __getitem__(self, key): + value = list.__getitem__(self, key) + result = self.configurator.convert(value) + # If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def pop(self, idx=-1): + value = list.pop(self, idx) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + return result + + class ConvertingTuple(tuple): + """A converting tuple wrapper.""" + + def __getitem__(self, key): + value = tuple.__getitem__(self, key) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + class BaseConfigurator(object): + """ + The configurator base class which defines some useful defaults. + """ + + CONVERT_PATTERN = re.compile(r'^(?P[a-z]+)://(?P.*)$') + + WORD_PATTERN = re.compile(r'^\s*(\w+)\s*') + DOT_PATTERN = re.compile(r'^\.\s*(\w+)\s*') + INDEX_PATTERN = re.compile(r'^\[\s*(\w+)\s*\]\s*') + DIGIT_PATTERN = re.compile(r'^\d+$') + + value_converters = { + 'ext': 'ext_convert', + 'cfg': 'cfg_convert', + } + + # We might want to use a different one, e.g. importlib + importer = staticmethod(__import__) + + def __init__(self, config): + self.config = ConvertingDict(config) + self.config.configurator = self + + def resolve(self, s): + """ + Resolve strings to objects using standard import and attribute + syntax. + """ + name = s.split('.') + used = name.pop(0) + try: + found = self.importer(used) + for frag in name: + used += '.' + frag + try: + found = getattr(found, frag) + except AttributeError: + self.importer(used) + found = getattr(found, frag) + return found + except ImportError: + e, tb = sys.exc_info()[1:] + v = ValueError('Cannot resolve %r: %s' % (s, e)) + v.__cause__, v.__traceback__ = e, tb + raise v + + def ext_convert(self, value): + """Default converter for the ext:// protocol.""" + return self.resolve(value) + + def cfg_convert(self, value): + """Default converter for the cfg:// protocol.""" + rest = value + m = self.WORD_PATTERN.match(rest) + if m is None: + raise ValueError("Unable to convert %r" % value) + else: + rest = rest[m.end():] + d = self.config[m.groups()[0]] + while rest: + m = self.DOT_PATTERN.match(rest) + if m: + d = d[m.groups()[0]] + else: + m = self.INDEX_PATTERN.match(rest) + if m: + idx = m.groups()[0] + if not self.DIGIT_PATTERN.match(idx): + d = d[idx] + else: + try: + n = int( + idx + ) # try as number first (most likely) + d = d[n] + except TypeError: + d = d[idx] + if m: + rest = rest[m.end():] + else: + raise ValueError('Unable to convert ' + '%r at %r' % (value, rest)) + # rest should be empty + return d + + def convert(self, value): + """ + Convert values to an appropriate type. dicts, lists and tuples are + replaced by their converting alternatives. Strings are checked to + see if they have a conversion format and are converted if they do. + """ + if not isinstance(value, ConvertingDict) and isinstance( + value, dict): + value = ConvertingDict(value) + value.configurator = self + elif not isinstance(value, ConvertingList) and isinstance( + value, list): + value = ConvertingList(value) + value.configurator = self + elif not isinstance(value, ConvertingTuple) and isinstance(value, tuple): + value = ConvertingTuple(value) + value.configurator = self + elif isinstance(value, string_types): + m = self.CONVERT_PATTERN.match(value) + if m: + d = m.groupdict() + prefix = d['prefix'] + converter = self.value_converters.get(prefix, None) + if converter: + suffix = d['suffix'] + converter = getattr(self, converter) + value = converter(suffix) + return value + + def configure_custom(self, config): + """Configure an object with a user-supplied factory.""" + c = config.pop('()') + if not callable(c): + c = self.resolve(c) + props = config.pop('.', None) + # Check for valid identifiers + kwargs = dict([(k, config[k]) for k in config if valid_ident(k)]) + result = c(**kwargs) + if props: + for name, value in props.items(): + setattr(result, name, value) + return result + + def as_tuple(self, value): + """Utility function which converts lists to tuples.""" + if isinstance(value, list): + value = tuple(value) + return value diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/database.py b/venv/Lib/site-packages/pip/_vendor/distlib/database.py new file mode 100644 index 00000000000..eb3765f193b --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/database.py @@ -0,0 +1,1359 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2023 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""PEP 376 implementation.""" + +from __future__ import unicode_literals + +import base64 +import codecs +import contextlib +import hashlib +import logging +import os +import posixpath +import sys +import zipimport + +from . import DistlibException, resources +from .compat import StringIO +from .version import get_scheme, UnsupportedVersionError +from .metadata import (Metadata, METADATA_FILENAME, WHEEL_METADATA_FILENAME, + LEGACY_METADATA_FILENAME) +from .util import (parse_requirement, cached_property, parse_name_and_version, + read_exports, write_exports, CSVReader, CSVWriter) + +__all__ = [ + 'Distribution', 'BaseInstalledDistribution', 'InstalledDistribution', + 'EggInfoDistribution', 'DistributionPath' +] + +logger = logging.getLogger(__name__) + +EXPORTS_FILENAME = 'pydist-exports.json' +COMMANDS_FILENAME = 'pydist-commands.json' + +DIST_FILES = ('INSTALLER', METADATA_FILENAME, 'RECORD', 'REQUESTED', + 'RESOURCES', EXPORTS_FILENAME, 'SHARED') + +DISTINFO_EXT = '.dist-info' + + +class _Cache(object): + """ + A simple cache mapping names and .dist-info paths to distributions + """ + + def __init__(self): + """ + Initialise an instance. There is normally one for each DistributionPath. + """ + self.name = {} + self.path = {} + self.generated = False + + def clear(self): + """ + Clear the cache, setting it to its initial state. + """ + self.name.clear() + self.path.clear() + self.generated = False + + def add(self, dist): + """ + Add a distribution to the cache. + :param dist: The distribution to add. + """ + if dist.path not in self.path: + self.path[dist.path] = dist + self.name.setdefault(dist.key, []).append(dist) + + +class DistributionPath(object): + """ + Represents a set of distributions installed on a path (typically sys.path). + """ + + def __init__(self, path=None, include_egg=False): + """ + Create an instance from a path, optionally including legacy (distutils/ + setuptools/distribute) distributions. + :param path: The path to use, as a list of directories. If not specified, + sys.path is used. + :param include_egg: If True, this instance will look for and return legacy + distributions as well as those based on PEP 376. + """ + if path is None: + path = sys.path + self.path = path + self._include_dist = True + self._include_egg = include_egg + + self._cache = _Cache() + self._cache_egg = _Cache() + self._cache_enabled = True + self._scheme = get_scheme('default') + + def _get_cache_enabled(self): + return self._cache_enabled + + def _set_cache_enabled(self, value): + self._cache_enabled = value + + cache_enabled = property(_get_cache_enabled, _set_cache_enabled) + + def clear_cache(self): + """ + Clears the internal cache. + """ + self._cache.clear() + self._cache_egg.clear() + + def _yield_distributions(self): + """ + Yield .dist-info and/or .egg(-info) distributions. + """ + # We need to check if we've seen some resources already, because on + # some Linux systems (e.g. some Debian/Ubuntu variants) there are + # symlinks which alias other files in the environment. + seen = set() + for path in self.path: + finder = resources.finder_for_path(path) + if finder is None: + continue + r = finder.find('') + if not r or not r.is_container: + continue + rset = sorted(r.resources) + for entry in rset: + r = finder.find(entry) + if not r or r.path in seen: + continue + try: + if self._include_dist and entry.endswith(DISTINFO_EXT): + possible_filenames = [ + METADATA_FILENAME, WHEEL_METADATA_FILENAME, + LEGACY_METADATA_FILENAME + ] + for metadata_filename in possible_filenames: + metadata_path = posixpath.join( + entry, metadata_filename) + pydist = finder.find(metadata_path) + if pydist: + break + else: + continue + + with contextlib.closing(pydist.as_stream()) as stream: + metadata = Metadata(fileobj=stream, + scheme='legacy') + logger.debug('Found %s', r.path) + seen.add(r.path) + yield new_dist_class(r.path, + metadata=metadata, + env=self) + elif self._include_egg and entry.endswith( + ('.egg-info', '.egg')): + logger.debug('Found %s', r.path) + seen.add(r.path) + yield old_dist_class(r.path, self) + except Exception as e: + msg = 'Unable to read distribution at %s, perhaps due to bad metadata: %s' + logger.warning(msg, r.path, e) + import warnings + warnings.warn(msg % (r.path, e), stacklevel=2) + + def _generate_cache(self): + """ + Scan the path for distributions and populate the cache with + those that are found. + """ + gen_dist = not self._cache.generated + gen_egg = self._include_egg and not self._cache_egg.generated + if gen_dist or gen_egg: + for dist in self._yield_distributions(): + if isinstance(dist, InstalledDistribution): + self._cache.add(dist) + else: + self._cache_egg.add(dist) + + if gen_dist: + self._cache.generated = True + if gen_egg: + self._cache_egg.generated = True + + @classmethod + def distinfo_dirname(cls, name, version): + """ + The *name* and *version* parameters are converted into their + filename-escaped form, i.e. any ``'-'`` characters are replaced + with ``'_'`` other than the one in ``'dist-info'`` and the one + separating the name from the version number. + + :parameter name: is converted to a standard distribution name by replacing + any runs of non- alphanumeric characters with a single + ``'-'``. + :type name: string + :parameter version: is converted to a standard version string. Spaces + become dots, and all other non-alphanumeric characters + (except dots) become dashes, with runs of multiple + dashes condensed to a single dash. + :type version: string + :returns: directory name + :rtype: string""" + name = name.replace('-', '_') + return '-'.join([name, version]) + DISTINFO_EXT + + def get_distributions(self): + """ + Provides an iterator that looks for distributions and returns + :class:`InstalledDistribution` or + :class:`EggInfoDistribution` instances for each one of them. + + :rtype: iterator of :class:`InstalledDistribution` and + :class:`EggInfoDistribution` instances + """ + if not self._cache_enabled: + for dist in self._yield_distributions(): + yield dist + else: + self._generate_cache() + + for dist in self._cache.path.values(): + yield dist + + if self._include_egg: + for dist in self._cache_egg.path.values(): + yield dist + + def get_distribution(self, name): + """ + Looks for a named distribution on the path. + + This function only returns the first result found, as no more than one + value is expected. If nothing is found, ``None`` is returned. + + :rtype: :class:`InstalledDistribution`, :class:`EggInfoDistribution` + or ``None`` + """ + result = None + name = name.lower() + if not self._cache_enabled: + for dist in self._yield_distributions(): + if dist.key == name: + result = dist + break + else: + self._generate_cache() + + if name in self._cache.name: + result = self._cache.name[name][0] + elif self._include_egg and name in self._cache_egg.name: + result = self._cache_egg.name[name][0] + return result + + def provides_distribution(self, name, version=None): + """ + Iterates over all distributions to find which distributions provide *name*. + If a *version* is provided, it will be used to filter the results. + + This function only returns the first result found, since no more than + one values are expected. If the directory is not found, returns ``None``. + + :parameter version: a version specifier that indicates the version + required, conforming to the format in ``PEP-345`` + + :type name: string + :type version: string + """ + matcher = None + if version is not None: + try: + matcher = self._scheme.matcher('%s (%s)' % (name, version)) + except ValueError: + raise DistlibException('invalid name or version: %r, %r' % + (name, version)) + + for dist in self.get_distributions(): + # We hit a problem on Travis where enum34 was installed and doesn't + # have a provides attribute ... + if not hasattr(dist, 'provides'): + logger.debug('No "provides": %s', dist) + else: + provided = dist.provides + + for p in provided: + p_name, p_ver = parse_name_and_version(p) + if matcher is None: + if p_name == name: + yield dist + break + else: + if p_name == name and matcher.match(p_ver): + yield dist + break + + def get_file_path(self, name, relative_path): + """ + Return the path to a resource file. + """ + dist = self.get_distribution(name) + if dist is None: + raise LookupError('no distribution named %r found' % name) + return dist.get_resource_path(relative_path) + + def get_exported_entries(self, category, name=None): + """ + Return all of the exported entries in a particular category. + + :param category: The category to search for entries. + :param name: If specified, only entries with that name are returned. + """ + for dist in self.get_distributions(): + r = dist.exports + if category in r: + d = r[category] + if name is not None: + if name in d: + yield d[name] + else: + for v in d.values(): + yield v + + +class Distribution(object): + """ + A base class for distributions, whether installed or from indexes. + Either way, it must have some metadata, so that's all that's needed + for construction. + """ + + build_time_dependency = False + """ + Set to True if it's known to be only a build-time dependency (i.e. + not needed after installation). + """ + + requested = False + """A boolean that indicates whether the ``REQUESTED`` metadata file is + present (in other words, whether the package was installed by user + request or it was installed as a dependency).""" + + def __init__(self, metadata): + """ + Initialise an instance. + :param metadata: The instance of :class:`Metadata` describing this + distribution. + """ + self.metadata = metadata + self.name = metadata.name + self.key = self.name.lower() # for case-insensitive comparisons + self.version = metadata.version + self.locator = None + self.digest = None + self.extras = None # additional features requested + self.context = None # environment marker overrides + self.download_urls = set() + self.digests = {} + + @property + def source_url(self): + """ + The source archive download URL for this distribution. + """ + return self.metadata.source_url + + download_url = source_url # Backward compatibility + + @property + def name_and_version(self): + """ + A utility property which displays the name and version in parentheses. + """ + return '%s (%s)' % (self.name, self.version) + + @property + def provides(self): + """ + A set of distribution names and versions provided by this distribution. + :return: A set of "name (version)" strings. + """ + plist = self.metadata.provides + s = '%s (%s)' % (self.name, self.version) + if s not in plist: + plist.append(s) + return plist + + def _get_requirements(self, req_attr): + md = self.metadata + reqts = getattr(md, req_attr) + logger.debug('%s: got requirements %r from metadata: %r', self.name, + req_attr, reqts) + return set( + md.get_requirements(reqts, extras=self.extras, env=self.context)) + + @property + def run_requires(self): + return self._get_requirements('run_requires') + + @property + def meta_requires(self): + return self._get_requirements('meta_requires') + + @property + def build_requires(self): + return self._get_requirements('build_requires') + + @property + def test_requires(self): + return self._get_requirements('test_requires') + + @property + def dev_requires(self): + return self._get_requirements('dev_requires') + + def matches_requirement(self, req): + """ + Say if this instance matches (fulfills) a requirement. + :param req: The requirement to match. + :rtype req: str + :return: True if it matches, else False. + """ + # Requirement may contain extras - parse to lose those + # from what's passed to the matcher + r = parse_requirement(req) + scheme = get_scheme(self.metadata.scheme) + try: + matcher = scheme.matcher(r.requirement) + except UnsupportedVersionError: + # XXX compat-mode if cannot read the version + logger.warning('could not read version %r - using name only', req) + name = req.split()[0] + matcher = scheme.matcher(name) + + name = matcher.key # case-insensitive + + result = False + for p in self.provides: + p_name, p_ver = parse_name_and_version(p) + if p_name != name: + continue + try: + result = matcher.match(p_ver) + break + except UnsupportedVersionError: + pass + return result + + def __repr__(self): + """ + Return a textual representation of this instance, + """ + if self.source_url: + suffix = ' [%s]' % self.source_url + else: + suffix = '' + return '' % (self.name, self.version, suffix) + + def __eq__(self, other): + """ + See if this distribution is the same as another. + :param other: The distribution to compare with. To be equal to one + another. distributions must have the same type, name, + version and source_url. + :return: True if it is the same, else False. + """ + if type(other) is not type(self): + result = False + else: + result = (self.name == other.name and self.version == other.version + and self.source_url == other.source_url) + return result + + def __hash__(self): + """ + Compute hash in a way which matches the equality test. + """ + return hash(self.name) + hash(self.version) + hash(self.source_url) + + +class BaseInstalledDistribution(Distribution): + """ + This is the base class for installed distributions (whether PEP 376 or + legacy). + """ + + hasher = None + + def __init__(self, metadata, path, env=None): + """ + Initialise an instance. + :param metadata: An instance of :class:`Metadata` which describes the + distribution. This will normally have been initialised + from a metadata file in the ``path``. + :param path: The path of the ``.dist-info`` or ``.egg-info`` + directory for the distribution. + :param env: This is normally the :class:`DistributionPath` + instance where this distribution was found. + """ + super(BaseInstalledDistribution, self).__init__(metadata) + self.path = path + self.dist_path = env + + def get_hash(self, data, hasher=None): + """ + Get the hash of some data, using a particular hash algorithm, if + specified. + + :param data: The data to be hashed. + :type data: bytes + :param hasher: The name of a hash implementation, supported by hashlib, + or ``None``. Examples of valid values are ``'sha1'``, + ``'sha224'``, ``'sha384'``, '``sha256'``, ``'md5'`` and + ``'sha512'``. If no hasher is specified, the ``hasher`` + attribute of the :class:`InstalledDistribution` instance + is used. If the hasher is determined to be ``None``, MD5 + is used as the hashing algorithm. + :returns: The hash of the data. If a hasher was explicitly specified, + the returned hash will be prefixed with the specified hasher + followed by '='. + :rtype: str + """ + if hasher is None: + hasher = self.hasher + if hasher is None: + hasher = hashlib.md5 + prefix = '' + else: + hasher = getattr(hashlib, hasher) + prefix = '%s=' % self.hasher + digest = hasher(data).digest() + digest = base64.urlsafe_b64encode(digest).rstrip(b'=').decode('ascii') + return '%s%s' % (prefix, digest) + + +class InstalledDistribution(BaseInstalledDistribution): + """ + Created with the *path* of the ``.dist-info`` directory provided to the + constructor. It reads the metadata contained in ``pydist.json`` when it is + instantiated., or uses a passed in Metadata instance (useful for when + dry-run mode is being used). + """ + + hasher = 'sha256' + + def __init__(self, path, metadata=None, env=None): + self.modules = [] + self.finder = finder = resources.finder_for_path(path) + if finder is None: + raise ValueError('finder unavailable for %s' % path) + if env and env._cache_enabled and path in env._cache.path: + metadata = env._cache.path[path].metadata + elif metadata is None: + r = finder.find(METADATA_FILENAME) + # Temporary - for Wheel 0.23 support + if r is None: + r = finder.find(WHEEL_METADATA_FILENAME) + # Temporary - for legacy support + if r is None: + r = finder.find(LEGACY_METADATA_FILENAME) + if r is None: + raise ValueError('no %s found in %s' % + (METADATA_FILENAME, path)) + with contextlib.closing(r.as_stream()) as stream: + metadata = Metadata(fileobj=stream, scheme='legacy') + + super(InstalledDistribution, self).__init__(metadata, path, env) + + if env and env._cache_enabled: + env._cache.add(self) + + r = finder.find('REQUESTED') + self.requested = r is not None + p = os.path.join(path, 'top_level.txt') + if os.path.exists(p): + with open(p, 'rb') as f: + data = f.read().decode('utf-8') + self.modules = data.splitlines() + + def __repr__(self): + return '' % ( + self.name, self.version, self.path) + + def __str__(self): + return "%s %s" % (self.name, self.version) + + def _get_records(self): + """ + Get the list of installed files for the distribution + :return: A list of tuples of path, hash and size. Note that hash and + size might be ``None`` for some entries. The path is exactly + as stored in the file (which is as in PEP 376). + """ + results = [] + r = self.get_distinfo_resource('RECORD') + with contextlib.closing(r.as_stream()) as stream: + with CSVReader(stream=stream) as record_reader: + # Base location is parent dir of .dist-info dir + # base_location = os.path.dirname(self.path) + # base_location = os.path.abspath(base_location) + for row in record_reader: + missing = [None for i in range(len(row), 3)] + path, checksum, size = row + missing + # if not os.path.isabs(path): + # path = path.replace('/', os.sep) + # path = os.path.join(base_location, path) + results.append((path, checksum, size)) + return results + + @cached_property + def exports(self): + """ + Return the information exported by this distribution. + :return: A dictionary of exports, mapping an export category to a dict + of :class:`ExportEntry` instances describing the individual + export entries, and keyed by name. + """ + result = {} + r = self.get_distinfo_resource(EXPORTS_FILENAME) + if r: + result = self.read_exports() + return result + + def read_exports(self): + """ + Read exports data from a file in .ini format. + + :return: A dictionary of exports, mapping an export category to a list + of :class:`ExportEntry` instances describing the individual + export entries. + """ + result = {} + r = self.get_distinfo_resource(EXPORTS_FILENAME) + if r: + with contextlib.closing(r.as_stream()) as stream: + result = read_exports(stream) + return result + + def write_exports(self, exports): + """ + Write a dictionary of exports to a file in .ini format. + :param exports: A dictionary of exports, mapping an export category to + a list of :class:`ExportEntry` instances describing the + individual export entries. + """ + rf = self.get_distinfo_file(EXPORTS_FILENAME) + with open(rf, 'w') as f: + write_exports(exports, f) + + def get_resource_path(self, relative_path): + """ + NOTE: This API may change in the future. + + Return the absolute path to a resource file with the given relative + path. + + :param relative_path: The path, relative to .dist-info, of the resource + of interest. + :return: The absolute path where the resource is to be found. + """ + r = self.get_distinfo_resource('RESOURCES') + with contextlib.closing(r.as_stream()) as stream: + with CSVReader(stream=stream) as resources_reader: + for relative, destination in resources_reader: + if relative == relative_path: + return destination + raise KeyError('no resource file with relative path %r ' + 'is installed' % relative_path) + + def list_installed_files(self): + """ + Iterates over the ``RECORD`` entries and returns a tuple + ``(path, hash, size)`` for each line. + + :returns: iterator of (path, hash, size) + """ + for result in self._get_records(): + yield result + + def write_installed_files(self, paths, prefix, dry_run=False): + """ + Writes the ``RECORD`` file, using the ``paths`` iterable passed in. Any + existing ``RECORD`` file is silently overwritten. + + prefix is used to determine when to write absolute paths. + """ + prefix = os.path.join(prefix, '') + base = os.path.dirname(self.path) + base_under_prefix = base.startswith(prefix) + base = os.path.join(base, '') + record_path = self.get_distinfo_file('RECORD') + logger.info('creating %s', record_path) + if dry_run: + return None + with CSVWriter(record_path) as writer: + for path in paths: + if os.path.isdir(path) or path.endswith(('.pyc', '.pyo')): + # do not put size and hash, as in PEP-376 + hash_value = size = '' + else: + size = '%d' % os.path.getsize(path) + with open(path, 'rb') as fp: + hash_value = self.get_hash(fp.read()) + if path.startswith(base) or (base_under_prefix + and path.startswith(prefix)): + path = os.path.relpath(path, base) + writer.writerow((path, hash_value, size)) + + # add the RECORD file itself + if record_path.startswith(base): + record_path = os.path.relpath(record_path, base) + writer.writerow((record_path, '', '')) + return record_path + + def check_installed_files(self): + """ + Checks that the hashes and sizes of the files in ``RECORD`` are + matched by the files themselves. Returns a (possibly empty) list of + mismatches. Each entry in the mismatch list will be a tuple consisting + of the path, 'exists', 'size' or 'hash' according to what didn't match + (existence is checked first, then size, then hash), the expected + value and the actual value. + """ + mismatches = [] + base = os.path.dirname(self.path) + record_path = self.get_distinfo_file('RECORD') + for path, hash_value, size in self.list_installed_files(): + if not os.path.isabs(path): + path = os.path.join(base, path) + if path == record_path: + continue + if not os.path.exists(path): + mismatches.append((path, 'exists', True, False)) + elif os.path.isfile(path): + actual_size = str(os.path.getsize(path)) + if size and actual_size != size: + mismatches.append((path, 'size', size, actual_size)) + elif hash_value: + if '=' in hash_value: + hasher = hash_value.split('=', 1)[0] + else: + hasher = None + + with open(path, 'rb') as f: + actual_hash = self.get_hash(f.read(), hasher) + if actual_hash != hash_value: + mismatches.append( + (path, 'hash', hash_value, actual_hash)) + return mismatches + + @cached_property + def shared_locations(self): + """ + A dictionary of shared locations whose keys are in the set 'prefix', + 'purelib', 'platlib', 'scripts', 'headers', 'data' and 'namespace'. + The corresponding value is the absolute path of that category for + this distribution, and takes into account any paths selected by the + user at installation time (e.g. via command-line arguments). In the + case of the 'namespace' key, this would be a list of absolute paths + for the roots of namespace packages in this distribution. + + The first time this property is accessed, the relevant information is + read from the SHARED file in the .dist-info directory. + """ + result = {} + shared_path = os.path.join(self.path, 'SHARED') + if os.path.isfile(shared_path): + with codecs.open(shared_path, 'r', encoding='utf-8') as f: + lines = f.read().splitlines() + for line in lines: + key, value = line.split('=', 1) + if key == 'namespace': + result.setdefault(key, []).append(value) + else: + result[key] = value + return result + + def write_shared_locations(self, paths, dry_run=False): + """ + Write shared location information to the SHARED file in .dist-info. + :param paths: A dictionary as described in the documentation for + :meth:`shared_locations`. + :param dry_run: If True, the action is logged but no file is actually + written. + :return: The path of the file written to. + """ + shared_path = os.path.join(self.path, 'SHARED') + logger.info('creating %s', shared_path) + if dry_run: + return None + lines = [] + for key in ('prefix', 'lib', 'headers', 'scripts', 'data'): + path = paths[key] + if os.path.isdir(paths[key]): + lines.append('%s=%s' % (key, path)) + for ns in paths.get('namespace', ()): + lines.append('namespace=%s' % ns) + + with codecs.open(shared_path, 'w', encoding='utf-8') as f: + f.write('\n'.join(lines)) + return shared_path + + def get_distinfo_resource(self, path): + if path not in DIST_FILES: + raise DistlibException('invalid path for a dist-info file: ' + '%r at %r' % (path, self.path)) + finder = resources.finder_for_path(self.path) + if finder is None: + raise DistlibException('Unable to get a finder for %s' % self.path) + return finder.find(path) + + def get_distinfo_file(self, path): + """ + Returns a path located under the ``.dist-info`` directory. Returns a + string representing the path. + + :parameter path: a ``'/'``-separated path relative to the + ``.dist-info`` directory or an absolute path; + If *path* is an absolute path and doesn't start + with the ``.dist-info`` directory path, + a :class:`DistlibException` is raised + :type path: str + :rtype: str + """ + # Check if it is an absolute path # XXX use relpath, add tests + if path.find(os.sep) >= 0: + # it's an absolute path? + distinfo_dirname, path = path.split(os.sep)[-2:] + if distinfo_dirname != self.path.split(os.sep)[-1]: + raise DistlibException( + 'dist-info file %r does not belong to the %r %s ' + 'distribution' % (path, self.name, self.version)) + + # The file must be relative + if path not in DIST_FILES: + raise DistlibException('invalid path for a dist-info file: ' + '%r at %r' % (path, self.path)) + + return os.path.join(self.path, path) + + def list_distinfo_files(self): + """ + Iterates over the ``RECORD`` entries and returns paths for each line if + the path is pointing to a file located in the ``.dist-info`` directory + or one of its subdirectories. + + :returns: iterator of paths + """ + base = os.path.dirname(self.path) + for path, checksum, size in self._get_records(): + # XXX add separator or use real relpath algo + if not os.path.isabs(path): + path = os.path.join(base, path) + if path.startswith(self.path): + yield path + + def __eq__(self, other): + return (isinstance(other, InstalledDistribution) + and self.path == other.path) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + __hash__ = object.__hash__ + + +class EggInfoDistribution(BaseInstalledDistribution): + """Created with the *path* of the ``.egg-info`` directory or file provided + to the constructor. It reads the metadata contained in the file itself, or + if the given path happens to be a directory, the metadata is read from the + file ``PKG-INFO`` under that directory.""" + + requested = True # as we have no way of knowing, assume it was + shared_locations = {} + + def __init__(self, path, env=None): + + def set_name_and_version(s, n, v): + s.name = n + s.key = n.lower() # for case-insensitive comparisons + s.version = v + + self.path = path + self.dist_path = env + if env and env._cache_enabled and path in env._cache_egg.path: + metadata = env._cache_egg.path[path].metadata + set_name_and_version(self, metadata.name, metadata.version) + else: + metadata = self._get_metadata(path) + + # Need to be set before caching + set_name_and_version(self, metadata.name, metadata.version) + + if env and env._cache_enabled: + env._cache_egg.add(self) + super(EggInfoDistribution, self).__init__(metadata, path, env) + + def _get_metadata(self, path): + requires = None + + def parse_requires_data(data): + """Create a list of dependencies from a requires.txt file. + + *data*: the contents of a setuptools-produced requires.txt file. + """ + reqs = [] + lines = data.splitlines() + for line in lines: + line = line.strip() + # sectioned files have bare newlines (separating sections) + if not line: # pragma: no cover + continue + if line.startswith('['): # pragma: no cover + logger.warning( + 'Unexpected line: quitting requirement scan: %r', line) + break + r = parse_requirement(line) + if not r: # pragma: no cover + logger.warning('Not recognised as a requirement: %r', line) + continue + if r.extras: # pragma: no cover + logger.warning('extra requirements in requires.txt are ' + 'not supported') + if not r.constraints: + reqs.append(r.name) + else: + cons = ', '.join('%s%s' % c for c in r.constraints) + reqs.append('%s (%s)' % (r.name, cons)) + return reqs + + def parse_requires_path(req_path): + """Create a list of dependencies from a requires.txt file. + + *req_path*: the path to a setuptools-produced requires.txt file. + """ + + reqs = [] + try: + with codecs.open(req_path, 'r', 'utf-8') as fp: + reqs = parse_requires_data(fp.read()) + except IOError: + pass + return reqs + + tl_path = tl_data = None + if path.endswith('.egg'): + if os.path.isdir(path): + p = os.path.join(path, 'EGG-INFO') + meta_path = os.path.join(p, 'PKG-INFO') + metadata = Metadata(path=meta_path, scheme='legacy') + req_path = os.path.join(p, 'requires.txt') + tl_path = os.path.join(p, 'top_level.txt') + requires = parse_requires_path(req_path) + else: + # FIXME handle the case where zipfile is not available + zipf = zipimport.zipimporter(path) + fileobj = StringIO( + zipf.get_data('EGG-INFO/PKG-INFO').decode('utf8')) + metadata = Metadata(fileobj=fileobj, scheme='legacy') + try: + data = zipf.get_data('EGG-INFO/requires.txt') + tl_data = zipf.get_data('EGG-INFO/top_level.txt').decode( + 'utf-8') + requires = parse_requires_data(data.decode('utf-8')) + except IOError: + requires = None + elif path.endswith('.egg-info'): + if os.path.isdir(path): + req_path = os.path.join(path, 'requires.txt') + requires = parse_requires_path(req_path) + path = os.path.join(path, 'PKG-INFO') + tl_path = os.path.join(path, 'top_level.txt') + metadata = Metadata(path=path, scheme='legacy') + else: + raise DistlibException('path must end with .egg-info or .egg, ' + 'got %r' % path) + + if requires: + metadata.add_requirements(requires) + # look for top-level modules in top_level.txt, if present + if tl_data is None: + if tl_path is not None and os.path.exists(tl_path): + with open(tl_path, 'rb') as f: + tl_data = f.read().decode('utf-8') + if not tl_data: + tl_data = [] + else: + tl_data = tl_data.splitlines() + self.modules = tl_data + return metadata + + def __repr__(self): + return '' % (self.name, self.version, + self.path) + + def __str__(self): + return "%s %s" % (self.name, self.version) + + def check_installed_files(self): + """ + Checks that the hashes and sizes of the files in ``RECORD`` are + matched by the files themselves. Returns a (possibly empty) list of + mismatches. Each entry in the mismatch list will be a tuple consisting + of the path, 'exists', 'size' or 'hash' according to what didn't match + (existence is checked first, then size, then hash), the expected + value and the actual value. + """ + mismatches = [] + record_path = os.path.join(self.path, 'installed-files.txt') + if os.path.exists(record_path): + for path, _, _ in self.list_installed_files(): + if path == record_path: + continue + if not os.path.exists(path): + mismatches.append((path, 'exists', True, False)) + return mismatches + + def list_installed_files(self): + """ + Iterates over the ``installed-files.txt`` entries and returns a tuple + ``(path, hash, size)`` for each line. + + :returns: a list of (path, hash, size) + """ + + def _md5(path): + f = open(path, 'rb') + try: + content = f.read() + finally: + f.close() + return hashlib.md5(content).hexdigest() + + def _size(path): + return os.stat(path).st_size + + record_path = os.path.join(self.path, 'installed-files.txt') + result = [] + if os.path.exists(record_path): + with codecs.open(record_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + p = os.path.normpath(os.path.join(self.path, line)) + # "./" is present as a marker between installed files + # and installation metadata files + if not os.path.exists(p): + logger.warning('Non-existent file: %s', p) + if p.endswith(('.pyc', '.pyo')): + continue + # otherwise fall through and fail + if not os.path.isdir(p): + result.append((p, _md5(p), _size(p))) + result.append((record_path, None, None)) + return result + + def list_distinfo_files(self, absolute=False): + """ + Iterates over the ``installed-files.txt`` entries and returns paths for + each line if the path is pointing to a file located in the + ``.egg-info`` directory or one of its subdirectories. + + :parameter absolute: If *absolute* is ``True``, each returned path is + transformed into a local absolute path. Otherwise the + raw value from ``installed-files.txt`` is returned. + :type absolute: boolean + :returns: iterator of paths + """ + record_path = os.path.join(self.path, 'installed-files.txt') + if os.path.exists(record_path): + skip = True + with codecs.open(record_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + if line == './': + skip = False + continue + if not skip: + p = os.path.normpath(os.path.join(self.path, line)) + if p.startswith(self.path): + if absolute: + yield p + else: + yield line + + def __eq__(self, other): + return (isinstance(other, EggInfoDistribution) + and self.path == other.path) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + __hash__ = object.__hash__ + + +new_dist_class = InstalledDistribution +old_dist_class = EggInfoDistribution + + +class DependencyGraph(object): + """ + Represents a dependency graph between distributions. + + The dependency relationships are stored in an ``adjacency_list`` that maps + distributions to a list of ``(other, label)`` tuples where ``other`` + is a distribution and the edge is labeled with ``label`` (i.e. the version + specifier, if such was provided). Also, for more efficient traversal, for + every distribution ``x``, a list of predecessors is kept in + ``reverse_list[x]``. An edge from distribution ``a`` to + distribution ``b`` means that ``a`` depends on ``b``. If any missing + dependencies are found, they are stored in ``missing``, which is a + dictionary that maps distributions to a list of requirements that were not + provided by any other distributions. + """ + + def __init__(self): + self.adjacency_list = {} + self.reverse_list = {} + self.missing = {} + + def add_distribution(self, distribution): + """Add the *distribution* to the graph. + + :type distribution: :class:`distutils2.database.InstalledDistribution` + or :class:`distutils2.database.EggInfoDistribution` + """ + self.adjacency_list[distribution] = [] + self.reverse_list[distribution] = [] + # self.missing[distribution] = [] + + def add_edge(self, x, y, label=None): + """Add an edge from distribution *x* to distribution *y* with the given + *label*. + + :type x: :class:`distutils2.database.InstalledDistribution` or + :class:`distutils2.database.EggInfoDistribution` + :type y: :class:`distutils2.database.InstalledDistribution` or + :class:`distutils2.database.EggInfoDistribution` + :type label: ``str`` or ``None`` + """ + self.adjacency_list[x].append((y, label)) + # multiple edges are allowed, so be careful + if x not in self.reverse_list[y]: + self.reverse_list[y].append(x) + + def add_missing(self, distribution, requirement): + """ + Add a missing *requirement* for the given *distribution*. + + :type distribution: :class:`distutils2.database.InstalledDistribution` + or :class:`distutils2.database.EggInfoDistribution` + :type requirement: ``str`` + """ + logger.debug('%s missing %r', distribution, requirement) + self.missing.setdefault(distribution, []).append(requirement) + + def _repr_dist(self, dist): + return '%s %s' % (dist.name, dist.version) + + def repr_node(self, dist, level=1): + """Prints only a subgraph""" + output = [self._repr_dist(dist)] + for other, label in self.adjacency_list[dist]: + dist = self._repr_dist(other) + if label is not None: + dist = '%s [%s]' % (dist, label) + output.append(' ' * level + str(dist)) + suboutput = self.repr_node(other, level + 1) + subs = suboutput.split('\n') + output.extend(subs[1:]) + return '\n'.join(output) + + def to_dot(self, f, skip_disconnected=True): + """Writes a DOT output for the graph to the provided file *f*. + + If *skip_disconnected* is set to ``True``, then all distributions + that are not dependent on any other distribution are skipped. + + :type f: has to support ``file``-like operations + :type skip_disconnected: ``bool`` + """ + disconnected = [] + + f.write("digraph dependencies {\n") + for dist, adjs in self.adjacency_list.items(): + if len(adjs) == 0 and not skip_disconnected: + disconnected.append(dist) + for other, label in adjs: + if label is not None: + f.write('"%s" -> "%s" [label="%s"]\n' % + (dist.name, other.name, label)) + else: + f.write('"%s" -> "%s"\n' % (dist.name, other.name)) + if not skip_disconnected and len(disconnected) > 0: + f.write('subgraph disconnected {\n') + f.write('label = "Disconnected"\n') + f.write('bgcolor = red\n') + + for dist in disconnected: + f.write('"%s"' % dist.name) + f.write('\n') + f.write('}\n') + f.write('}\n') + + def topological_sort(self): + """ + Perform a topological sort of the graph. + :return: A tuple, the first element of which is a topologically sorted + list of distributions, and the second element of which is a + list of distributions that cannot be sorted because they have + circular dependencies and so form a cycle. + """ + result = [] + # Make a shallow copy of the adjacency list + alist = {} + for k, v in self.adjacency_list.items(): + alist[k] = v[:] + while True: + # See what we can remove in this run + to_remove = [] + for k, v in list(alist.items())[:]: + if not v: + to_remove.append(k) + del alist[k] + if not to_remove: + # What's left in alist (if anything) is a cycle. + break + # Remove from the adjacency list of others + for k, v in alist.items(): + alist[k] = [(d, r) for d, r in v if d not in to_remove] + logger.debug('Moving to result: %s', + ['%s (%s)' % (d.name, d.version) for d in to_remove]) + result.extend(to_remove) + return result, list(alist.keys()) + + def __repr__(self): + """Representation of the graph""" + output = [] + for dist, adjs in self.adjacency_list.items(): + output.append(self.repr_node(dist)) + return '\n'.join(output) + + +def make_graph(dists, scheme='default'): + """Makes a dependency graph from the given distributions. + + :parameter dists: a list of distributions + :type dists: list of :class:`distutils2.database.InstalledDistribution` and + :class:`distutils2.database.EggInfoDistribution` instances + :rtype: a :class:`DependencyGraph` instance + """ + scheme = get_scheme(scheme) + graph = DependencyGraph() + provided = {} # maps names to lists of (version, dist) tuples + + # first, build the graph and find out what's provided + for dist in dists: + graph.add_distribution(dist) + + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Add to provided: %s, %s, %s', name, version, dist) + provided.setdefault(name, []).append((version, dist)) + + # now make the edges + for dist in dists: + requires = (dist.run_requires | dist.meta_requires + | dist.build_requires | dist.dev_requires) + for req in requires: + try: + matcher = scheme.matcher(req) + except UnsupportedVersionError: + # XXX compat-mode if cannot read the version + logger.warning('could not read version %r - using name only', + req) + name = req.split()[0] + matcher = scheme.matcher(name) + + name = matcher.key # case-insensitive + + matched = False + if name in provided: + for version, provider in provided[name]: + try: + match = matcher.match(version) + except UnsupportedVersionError: + match = False + + if match: + graph.add_edge(dist, provider, req) + matched = True + break + if not matched: + graph.add_missing(dist, req) + return graph + + +def get_dependent_dists(dists, dist): + """Recursively generate a list of distributions from *dists* that are + dependent on *dist*. + + :param dists: a list of distributions + :param dist: a distribution, member of *dists* for which we are interested + """ + if dist not in dists: + raise DistlibException('given distribution %r is not a member ' + 'of the list' % dist.name) + graph = make_graph(dists) + + dep = [dist] # dependent distributions + todo = graph.reverse_list[dist] # list of nodes we should inspect + + while todo: + d = todo.pop() + dep.append(d) + for succ in graph.reverse_list[d]: + if succ not in dep: + todo.append(succ) + + dep.pop(0) # remove dist from dep, was there to prevent infinite loops + return dep + + +def get_required_dists(dists, dist): + """Recursively generate a list of distributions from *dists* that are + required by *dist*. + + :param dists: a list of distributions + :param dist: a distribution, member of *dists* for which we are interested + in finding the dependencies. + """ + if dist not in dists: + raise DistlibException('given distribution %r is not a member ' + 'of the list' % dist.name) + graph = make_graph(dists) + + req = set() # required distributions + todo = graph.adjacency_list[dist] # list of nodes we should inspect + seen = set(t[0] for t in todo) # already added to todo + + while todo: + d = todo.pop()[0] + req.add(d) + pred_list = graph.adjacency_list[d] + for pred in pred_list: + d = pred[0] + if d not in req and d not in seen: + seen.add(d) + todo.append(pred) + return req + + +def make_dist(name, version, **kwargs): + """ + A convenience method for making a dist given just a name and version. + """ + summary = kwargs.pop('summary', 'Placeholder for summary') + md = Metadata(**kwargs) + md.name = name + md.version = version + md.summary = summary or 'Placeholder for summary' + return Distribution(md) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/index.py b/venv/Lib/site-packages/pip/_vendor/distlib/index.py new file mode 100644 index 00000000000..56cd2867145 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/index.py @@ -0,0 +1,508 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2023 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import hashlib +import logging +import os +import shutil +import subprocess +import tempfile +try: + from threading import Thread +except ImportError: # pragma: no cover + from dummy_threading import Thread + +from . import DistlibException +from .compat import (HTTPBasicAuthHandler, Request, HTTPPasswordMgr, + urlparse, build_opener, string_types) +from .util import zip_dir, ServerProxy + +logger = logging.getLogger(__name__) + +DEFAULT_INDEX = 'https://pypi.org/pypi' +DEFAULT_REALM = 'pypi' + + +class PackageIndex(object): + """ + This class represents a package index compatible with PyPI, the Python + Package Index. + """ + + boundary = b'----------ThIs_Is_tHe_distlib_index_bouNdaRY_$' + + def __init__(self, url=None): + """ + Initialise an instance. + + :param url: The URL of the index. If not specified, the URL for PyPI is + used. + """ + self.url = url or DEFAULT_INDEX + self.read_configuration() + scheme, netloc, path, params, query, frag = urlparse(self.url) + if params or query or frag or scheme not in ('http', 'https'): + raise DistlibException('invalid repository: %s' % self.url) + self.password_handler = None + self.ssl_verifier = None + self.gpg = None + self.gpg_home = None + with open(os.devnull, 'w') as sink: + # Use gpg by default rather than gpg2, as gpg2 insists on + # prompting for passwords + for s in ('gpg', 'gpg2'): + try: + rc = subprocess.check_call([s, '--version'], stdout=sink, + stderr=sink) + if rc == 0: + self.gpg = s + break + except OSError: + pass + + def _get_pypirc_command(self): + """ + Get the distutils command for interacting with PyPI configurations. + :return: the command. + """ + from .util import _get_pypirc_command as cmd + return cmd() + + def read_configuration(self): + """ + Read the PyPI access configuration as supported by distutils. This populates + ``username``, ``password``, ``realm`` and ``url`` attributes from the + configuration. + """ + from .util import _load_pypirc + cfg = _load_pypirc(self) + self.username = cfg.get('username') + self.password = cfg.get('password') + self.realm = cfg.get('realm', 'pypi') + self.url = cfg.get('repository', self.url) + + def save_configuration(self): + """ + Save the PyPI access configuration. You must have set ``username`` and + ``password`` attributes before calling this method. + """ + self.check_credentials() + from .util import _store_pypirc + _store_pypirc(self) + + def check_credentials(self): + """ + Check that ``username`` and ``password`` have been set, and raise an + exception if not. + """ + if self.username is None or self.password is None: + raise DistlibException('username and password must be set') + pm = HTTPPasswordMgr() + _, netloc, _, _, _, _ = urlparse(self.url) + pm.add_password(self.realm, netloc, self.username, self.password) + self.password_handler = HTTPBasicAuthHandler(pm) + + def register(self, metadata): # pragma: no cover + """ + Register a distribution on PyPI, using the provided metadata. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the distribution to be + registered. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + metadata.validate() + d = metadata.todict() + d[':action'] = 'verify' + request = self.encode_request(d.items(), []) + self.send_request(request) + d[':action'] = 'submit' + request = self.encode_request(d.items(), []) + return self.send_request(request) + + def _reader(self, name, stream, outbuf): + """ + Thread runner for reading lines of from a subprocess into a buffer. + + :param name: The logical name of the stream (used for logging only). + :param stream: The stream to read from. This will typically a pipe + connected to the output stream of a subprocess. + :param outbuf: The list to append the read lines to. + """ + while True: + s = stream.readline() + if not s: + break + s = s.decode('utf-8').rstrip() + outbuf.append(s) + logger.debug('%s: %s' % (name, s)) + stream.close() + + def get_sign_command(self, filename, signer, sign_password, keystore=None): # pragma: no cover + """ + Return a suitable command for signing a file. + + :param filename: The pathname to the file to be signed. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: The signing command as a list suitable to be + passed to :class:`subprocess.Popen`. + """ + cmd = [self.gpg, '--status-fd', '2', '--no-tty'] + if keystore is None: + keystore = self.gpg_home + if keystore: + cmd.extend(['--homedir', keystore]) + if sign_password is not None: + cmd.extend(['--batch', '--passphrase-fd', '0']) + td = tempfile.mkdtemp() + sf = os.path.join(td, os.path.basename(filename) + '.asc') + cmd.extend(['--detach-sign', '--armor', '--local-user', + signer, '--output', sf, filename]) + logger.debug('invoking: %s', ' '.join(cmd)) + return cmd, sf + + def run_command(self, cmd, input_data=None): + """ + Run a command in a child process , passing it any input data specified. + + :param cmd: The command to run. + :param input_data: If specified, this must be a byte string containing + data to be sent to the child process. + :return: A tuple consisting of the subprocess' exit code, a list of + lines read from the subprocess' ``stdout``, and a list of + lines read from the subprocess' ``stderr``. + """ + kwargs = { + 'stdout': subprocess.PIPE, + 'stderr': subprocess.PIPE, + } + if input_data is not None: + kwargs['stdin'] = subprocess.PIPE + stdout = [] + stderr = [] + p = subprocess.Popen(cmd, **kwargs) + # We don't use communicate() here because we may need to + # get clever with interacting with the command + t1 = Thread(target=self._reader, args=('stdout', p.stdout, stdout)) + t1.start() + t2 = Thread(target=self._reader, args=('stderr', p.stderr, stderr)) + t2.start() + if input_data is not None: + p.stdin.write(input_data) + p.stdin.close() + + p.wait() + t1.join() + t2.join() + return p.returncode, stdout, stderr + + def sign_file(self, filename, signer, sign_password, keystore=None): # pragma: no cover + """ + Sign a file. + + :param filename: The pathname to the file to be signed. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param keystore: The path to a directory which contains the keys + used in signing. If not specified, the instance's + ``gpg_home`` attribute is used instead. + :return: The absolute pathname of the file where the signature is + stored. + """ + cmd, sig_file = self.get_sign_command(filename, signer, sign_password, + keystore) + rc, stdout, stderr = self.run_command(cmd, + sign_password.encode('utf-8')) + if rc != 0: + raise DistlibException('sign command failed with error ' + 'code %s' % rc) + return sig_file + + def upload_file(self, metadata, filename, signer=None, sign_password=None, + filetype='sdist', pyversion='source', keystore=None): + """ + Upload a release file to the index. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the file to be uploaded. + :param filename: The pathname of the file to be uploaded. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param filetype: The type of the file being uploaded. This is the + distutils command which produced that file, e.g. + ``sdist`` or ``bdist_wheel``. + :param pyversion: The version of Python which the release relates + to. For code compatible with any Python, this would + be ``source``, otherwise it would be e.g. ``3.2``. + :param keystore: The path to a directory which contains the keys + used in signing. If not specified, the instance's + ``gpg_home`` attribute is used instead. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + if not os.path.exists(filename): + raise DistlibException('not found: %s' % filename) + metadata.validate() + d = metadata.todict() + sig_file = None + if signer: + if not self.gpg: + logger.warning('no signing program available - not signed') + else: + sig_file = self.sign_file(filename, signer, sign_password, + keystore) + with open(filename, 'rb') as f: + file_data = f.read() + md5_digest = hashlib.md5(file_data).hexdigest() + sha256_digest = hashlib.sha256(file_data).hexdigest() + d.update({ + ':action': 'file_upload', + 'protocol_version': '1', + 'filetype': filetype, + 'pyversion': pyversion, + 'md5_digest': md5_digest, + 'sha256_digest': sha256_digest, + }) + files = [('content', os.path.basename(filename), file_data)] + if sig_file: + with open(sig_file, 'rb') as f: + sig_data = f.read() + files.append(('gpg_signature', os.path.basename(sig_file), + sig_data)) + shutil.rmtree(os.path.dirname(sig_file)) + request = self.encode_request(d.items(), files) + return self.send_request(request) + + def upload_documentation(self, metadata, doc_dir): # pragma: no cover + """ + Upload documentation to the index. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the documentation to be + uploaded. + :param doc_dir: The pathname of the directory which contains the + documentation. This should be the directory that + contains the ``index.html`` for the documentation. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + if not os.path.isdir(doc_dir): + raise DistlibException('not a directory: %r' % doc_dir) + fn = os.path.join(doc_dir, 'index.html') + if not os.path.exists(fn): + raise DistlibException('not found: %r' % fn) + metadata.validate() + name, version = metadata.name, metadata.version + zip_data = zip_dir(doc_dir).getvalue() + fields = [(':action', 'doc_upload'), + ('name', name), ('version', version)] + files = [('content', name, zip_data)] + request = self.encode_request(fields, files) + return self.send_request(request) + + def get_verify_command(self, signature_filename, data_filename, + keystore=None): + """ + Return a suitable command for verifying a file. + + :param signature_filename: The pathname to the file containing the + signature. + :param data_filename: The pathname to the file containing the + signed data. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: The verifying command as a list suitable to be + passed to :class:`subprocess.Popen`. + """ + cmd = [self.gpg, '--status-fd', '2', '--no-tty'] + if keystore is None: + keystore = self.gpg_home + if keystore: + cmd.extend(['--homedir', keystore]) + cmd.extend(['--verify', signature_filename, data_filename]) + logger.debug('invoking: %s', ' '.join(cmd)) + return cmd + + def verify_signature(self, signature_filename, data_filename, + keystore=None): + """ + Verify a signature for a file. + + :param signature_filename: The pathname to the file containing the + signature. + :param data_filename: The pathname to the file containing the + signed data. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: True if the signature was verified, else False. + """ + if not self.gpg: + raise DistlibException('verification unavailable because gpg ' + 'unavailable') + cmd = self.get_verify_command(signature_filename, data_filename, + keystore) + rc, stdout, stderr = self.run_command(cmd) + if rc not in (0, 1): + raise DistlibException('verify command failed with error code %s' % rc) + return rc == 0 + + def download_file(self, url, destfile, digest=None, reporthook=None): + """ + This is a convenience method for downloading a file from an URL. + Normally, this will be a file from the index, though currently + no check is made for this (i.e. a file can be downloaded from + anywhere). + + The method is just like the :func:`urlretrieve` function in the + standard library, except that it allows digest computation to be + done during download and checking that the downloaded data + matched any expected value. + + :param url: The URL of the file to be downloaded (assumed to be + available via an HTTP GET request). + :param destfile: The pathname where the downloaded file is to be + saved. + :param digest: If specified, this must be a (hasher, value) + tuple, where hasher is the algorithm used (e.g. + ``'md5'``) and ``value`` is the expected value. + :param reporthook: The same as for :func:`urlretrieve` in the + standard library. + """ + if digest is None: + digester = None + logger.debug('No digest specified') + else: + if isinstance(digest, (list, tuple)): + hasher, digest = digest + else: + hasher = 'md5' + digester = getattr(hashlib, hasher)() + logger.debug('Digest specified: %s' % digest) + # The following code is equivalent to urlretrieve. + # We need to do it this way so that we can compute the + # digest of the file as we go. + with open(destfile, 'wb') as dfp: + # addinfourl is not a context manager on 2.x + # so we have to use try/finally + sfp = self.send_request(Request(url)) + try: + headers = sfp.info() + blocksize = 8192 + size = -1 + read = 0 + blocknum = 0 + if "content-length" in headers: + size = int(headers["Content-Length"]) + if reporthook: + reporthook(blocknum, blocksize, size) + while True: + block = sfp.read(blocksize) + if not block: + break + read += len(block) + dfp.write(block) + if digester: + digester.update(block) + blocknum += 1 + if reporthook: + reporthook(blocknum, blocksize, size) + finally: + sfp.close() + + # check that we got the whole file, if we can + if size >= 0 and read < size: + raise DistlibException( + 'retrieval incomplete: got only %d out of %d bytes' + % (read, size)) + # if we have a digest, it must match. + if digester: + actual = digester.hexdigest() + if digest != actual: + raise DistlibException('%s digest mismatch for %s: expected ' + '%s, got %s' % (hasher, destfile, + digest, actual)) + logger.debug('Digest verified: %s', digest) + + def send_request(self, req): + """ + Send a standard library :class:`Request` to PyPI and return its + response. + + :param req: The request to send. + :return: The HTTP response from PyPI (a standard library HTTPResponse). + """ + handlers = [] + if self.password_handler: + handlers.append(self.password_handler) + if self.ssl_verifier: + handlers.append(self.ssl_verifier) + opener = build_opener(*handlers) + return opener.open(req) + + def encode_request(self, fields, files): + """ + Encode fields and files for posting to an HTTP server. + + :param fields: The fields to send as a list of (fieldname, value) + tuples. + :param files: The files to send as a list of (fieldname, filename, + file_bytes) tuple. + """ + # Adapted from packaging, which in turn was adapted from + # http://code.activestate.com/recipes/146306 + + parts = [] + boundary = self.boundary + for k, values in fields: + if not isinstance(values, (list, tuple)): + values = [values] + + for v in values: + parts.extend(( + b'--' + boundary, + ('Content-Disposition: form-data; name="%s"' % + k).encode('utf-8'), + b'', + v.encode('utf-8'))) + for key, filename, value in files: + parts.extend(( + b'--' + boundary, + ('Content-Disposition: form-data; name="%s"; filename="%s"' % + (key, filename)).encode('utf-8'), + b'', + value)) + + parts.extend((b'--' + boundary + b'--', b'')) + + body = b'\r\n'.join(parts) + ct = b'multipart/form-data; boundary=' + boundary + headers = { + 'Content-type': ct, + 'Content-length': str(len(body)) + } + return Request(self.url, body, headers) + + def search(self, terms, operator=None): # pragma: no cover + if isinstance(terms, string_types): + terms = {'name': terms} + rpc_proxy = ServerProxy(self.url, timeout=3.0) + try: + return rpc_proxy.search(terms, operator or 'and') + finally: + rpc_proxy('close')() diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/locators.py b/venv/Lib/site-packages/pip/_vendor/distlib/locators.py new file mode 100644 index 00000000000..f9f0788fc2a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/locators.py @@ -0,0 +1,1303 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2023 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# + +import gzip +from io import BytesIO +import json +import logging +import os +import posixpath +import re +try: + import threading +except ImportError: # pragma: no cover + import dummy_threading as threading +import zlib + +from . import DistlibException +from .compat import (urljoin, urlparse, urlunparse, url2pathname, pathname2url, + queue, quote, unescape, build_opener, + HTTPRedirectHandler as BaseRedirectHandler, text_type, + Request, HTTPError, URLError) +from .database import Distribution, DistributionPath, make_dist +from .metadata import Metadata, MetadataInvalidError +from .util import (cached_property, ensure_slash, split_filename, get_project_data, + parse_requirement, parse_name_and_version, ServerProxy, + normalize_name) +from .version import get_scheme, UnsupportedVersionError +from .wheel import Wheel, is_compatible + +logger = logging.getLogger(__name__) + +HASHER_HASH = re.compile(r'^(\w+)=([a-f0-9]+)') +CHARSET = re.compile(r';\s*charset\s*=\s*(.*)\s*$', re.I) +HTML_CONTENT_TYPE = re.compile('text/html|application/x(ht)?ml') +DEFAULT_INDEX = 'https://pypi.org/pypi' + + +def get_all_distribution_names(url=None): + """ + Return all distribution names known by an index. + :param url: The URL of the index. + :return: A list of all known distribution names. + """ + if url is None: + url = DEFAULT_INDEX + client = ServerProxy(url, timeout=3.0) + try: + return client.list_packages() + finally: + client('close')() + + +class RedirectHandler(BaseRedirectHandler): + """ + A class to work around a bug in some Python 3.2.x releases. + """ + # There's a bug in the base version for some 3.2.x + # (e.g. 3.2.2 on Ubuntu Oneiric). If a Location header + # returns e.g. /abc, it bails because it says the scheme '' + # is bogus, when actually it should use the request's + # URL for the scheme. See Python issue #13696. + def http_error_302(self, req, fp, code, msg, headers): + # Some servers (incorrectly) return multiple Location headers + # (so probably same goes for URI). Use first header. + newurl = None + for key in ('location', 'uri'): + if key in headers: + newurl = headers[key] + break + if newurl is None: # pragma: no cover + return + urlparts = urlparse(newurl) + if urlparts.scheme == '': + newurl = urljoin(req.get_full_url(), newurl) + if hasattr(headers, 'replace_header'): + headers.replace_header(key, newurl) + else: + headers[key] = newurl + return BaseRedirectHandler.http_error_302(self, req, fp, code, msg, + headers) + + http_error_301 = http_error_303 = http_error_307 = http_error_302 + + +class Locator(object): + """ + A base class for locators - things that locate distributions. + """ + source_extensions = ('.tar.gz', '.tar.bz2', '.tar', '.zip', '.tgz', '.tbz') + binary_extensions = ('.egg', '.exe', '.whl') + excluded_extensions = ('.pdf',) + + # A list of tags indicating which wheels you want to match. The default + # value of None matches against the tags compatible with the running + # Python. If you want to match other values, set wheel_tags on a locator + # instance to a list of tuples (pyver, abi, arch) which you want to match. + wheel_tags = None + + downloadable_extensions = source_extensions + ('.whl',) + + def __init__(self, scheme='default'): + """ + Initialise an instance. + :param scheme: Because locators look for most recent versions, they + need to know the version scheme to use. This specifies + the current PEP-recommended scheme - use ``'legacy'`` + if you need to support existing distributions on PyPI. + """ + self._cache = {} + self.scheme = scheme + # Because of bugs in some of the handlers on some of the platforms, + # we use our own opener rather than just using urlopen. + self.opener = build_opener(RedirectHandler()) + # If get_project() is called from locate(), the matcher instance + # is set from the requirement passed to locate(). See issue #18 for + # why this can be useful to know. + self.matcher = None + self.errors = queue.Queue() + + def get_errors(self): + """ + Return any errors which have occurred. + """ + result = [] + while not self.errors.empty(): # pragma: no cover + try: + e = self.errors.get(False) + result.append(e) + except self.errors.Empty: + continue + self.errors.task_done() + return result + + def clear_errors(self): + """ + Clear any errors which may have been logged. + """ + # Just get the errors and throw them away + self.get_errors() + + def clear_cache(self): + self._cache.clear() + + def _get_scheme(self): + return self._scheme + + def _set_scheme(self, value): + self._scheme = value + + scheme = property(_get_scheme, _set_scheme) + + def _get_project(self, name): + """ + For a given project, get a dictionary mapping available versions to Distribution + instances. + + This should be implemented in subclasses. + + If called from a locate() request, self.matcher will be set to a + matcher for the requirement to satisfy, otherwise it will be None. + """ + raise NotImplementedError('Please implement in the subclass') + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Please implement in the subclass') + + def get_project(self, name): + """ + For a given project, get a dictionary mapping available versions to Distribution + instances. + + This calls _get_project to do all the work, and just implements a caching layer on top. + """ + if self._cache is None: # pragma: no cover + result = self._get_project(name) + elif name in self._cache: + result = self._cache[name] + else: + self.clear_errors() + result = self._get_project(name) + self._cache[name] = result + return result + + def score_url(self, url): + """ + Give an url a score which can be used to choose preferred URLs + for a given project release. + """ + t = urlparse(url) + basename = posixpath.basename(t.path) + compatible = True + is_wheel = basename.endswith('.whl') + is_downloadable = basename.endswith(self.downloadable_extensions) + if is_wheel: + compatible = is_compatible(Wheel(basename), self.wheel_tags) + return (t.scheme == 'https', 'pypi.org' in t.netloc, + is_downloadable, is_wheel, compatible, basename) + + def prefer_url(self, url1, url2): + """ + Choose one of two URLs where both are candidates for distribution + archives for the same version of a distribution (for example, + .tar.gz vs. zip). + + The current implementation favours https:// URLs over http://, archives + from PyPI over those from other locations, wheel compatibility (if a + wheel) and then the archive name. + """ + result = url2 + if url1: + s1 = self.score_url(url1) + s2 = self.score_url(url2) + if s1 > s2: + result = url1 + if result != url2: + logger.debug('Not replacing %r with %r', url1, url2) + else: + logger.debug('Replacing %r with %r', url1, url2) + return result + + def split_filename(self, filename, project_name): + """ + Attempt to split a filename in project name, version and Python version. + """ + return split_filename(filename, project_name) + + def convert_url_to_download_info(self, url, project_name): + """ + See if a URL is a candidate for a download URL for a project (the URL + has typically been scraped from an HTML page). + + If it is, a dictionary is returned with keys "name", "version", + "filename" and "url"; otherwise, None is returned. + """ + def same_project(name1, name2): + return normalize_name(name1) == normalize_name(name2) + + result = None + scheme, netloc, path, params, query, frag = urlparse(url) + if frag.lower().startswith('egg='): # pragma: no cover + logger.debug('%s: version hint in fragment: %r', + project_name, frag) + m = HASHER_HASH.match(frag) + if m: + algo, digest = m.groups() + else: + algo, digest = None, None + origpath = path + if path and path[-1] == '/': # pragma: no cover + path = path[:-1] + if path.endswith('.whl'): + try: + wheel = Wheel(path) + if not is_compatible(wheel, self.wheel_tags): + logger.debug('Wheel not compatible: %s', path) + else: + if project_name is None: + include = True + else: + include = same_project(wheel.name, project_name) + if include: + result = { + 'name': wheel.name, + 'version': wheel.version, + 'filename': wheel.filename, + 'url': urlunparse((scheme, netloc, origpath, + params, query, '')), + 'python-version': ', '.join( + ['.'.join(list(v[2:])) for v in wheel.pyver]), + } + except Exception: # pragma: no cover + logger.warning('invalid path for wheel: %s', path) + elif not path.endswith(self.downloadable_extensions): # pragma: no cover + logger.debug('Not downloadable: %s', path) + else: # downloadable extension + path = filename = posixpath.basename(path) + for ext in self.downloadable_extensions: + if path.endswith(ext): + path = path[:-len(ext)] + t = self.split_filename(path, project_name) + if not t: # pragma: no cover + logger.debug('No match for project/version: %s', path) + else: + name, version, pyver = t + if not project_name or same_project(project_name, name): + result = { + 'name': name, + 'version': version, + 'filename': filename, + 'url': urlunparse((scheme, netloc, origpath, + params, query, '')), + } + if pyver: # pragma: no cover + result['python-version'] = pyver + break + if result and algo: + result['%s_digest' % algo] = digest + return result + + def _get_digest(self, info): + """ + Get a digest from a dictionary by looking at a "digests" dictionary + or keys of the form 'algo_digest'. + + Returns a 2-tuple (algo, digest) if found, else None. Currently + looks only for SHA256, then MD5. + """ + result = None + if 'digests' in info: + digests = info['digests'] + for algo in ('sha256', 'md5'): + if algo in digests: + result = (algo, digests[algo]) + break + if not result: + for algo in ('sha256', 'md5'): + key = '%s_digest' % algo + if key in info: + result = (algo, info[key]) + break + return result + + def _update_version_data(self, result, info): + """ + Update a result dictionary (the final result from _get_project) with a + dictionary for a specific version, which typically holds information + gleaned from a filename or URL for an archive for the distribution. + """ + name = info.pop('name') + version = info.pop('version') + if version in result: + dist = result[version] + md = dist.metadata + else: + dist = make_dist(name, version, scheme=self.scheme) + md = dist.metadata + dist.digest = digest = self._get_digest(info) + url = info['url'] + result['digests'][url] = digest + if md.source_url != info['url']: + md.source_url = self.prefer_url(md.source_url, url) + result['urls'].setdefault(version, set()).add(url) + dist.locator = self + result[version] = dist + + def locate(self, requirement, prereleases=False): + """ + Find the most recent distribution which matches the given + requirement. + + :param requirement: A requirement of the form 'foo (1.0)' or perhaps + 'foo (>= 1.0, < 2.0, != 1.3)' + :param prereleases: If ``True``, allow pre-release versions + to be located. Otherwise, pre-release versions + are not returned. + :return: A :class:`Distribution` instance, or ``None`` if no such + distribution could be located. + """ + result = None + r = parse_requirement(requirement) + if r is None: # pragma: no cover + raise DistlibException('Not a valid requirement: %r' % requirement) + scheme = get_scheme(self.scheme) + self.matcher = matcher = scheme.matcher(r.requirement) + logger.debug('matcher: %s (%s)', matcher, type(matcher).__name__) + versions = self.get_project(r.name) + if len(versions) > 2: # urls and digests keys are present + # sometimes, versions are invalid + slist = [] + vcls = matcher.version_class + for k in versions: + if k in ('urls', 'digests'): + continue + try: + if not matcher.match(k): + pass # logger.debug('%s did not match %r', matcher, k) + else: + if prereleases or not vcls(k).is_prerelease: + slist.append(k) + except Exception: # pragma: no cover + logger.warning('error matching %s with %r', matcher, k) + pass # slist.append(k) + if len(slist) > 1: + slist = sorted(slist, key=scheme.key) + if slist: + logger.debug('sorted list: %s', slist) + version = slist[-1] + result = versions[version] + if result: + if r.extras: + result.extras = r.extras + result.download_urls = versions.get('urls', {}).get(version, set()) + d = {} + sd = versions.get('digests', {}) + for url in result.download_urls: + if url in sd: # pragma: no cover + d[url] = sd[url] + result.digests = d + self.matcher = None + return result + + +class PyPIRPCLocator(Locator): + """ + This locator uses XML-RPC to locate distributions. It therefore + cannot be used with simple mirrors (that only mirror file content). + """ + def __init__(self, url, **kwargs): + """ + Initialise an instance. + + :param url: The URL to use for XML-RPC. + :param kwargs: Passed to the superclass constructor. + """ + super(PyPIRPCLocator, self).__init__(**kwargs) + self.base_url = url + self.client = ServerProxy(url, timeout=3.0) + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + return set(self.client.list_packages()) + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + versions = self.client.package_releases(name, True) + for v in versions: + urls = self.client.release_urls(name, v) + data = self.client.release_data(name, v) + metadata = Metadata(scheme=self.scheme) + metadata.name = data['name'] + metadata.version = data['version'] + metadata.license = data.get('license') + metadata.keywords = data.get('keywords', []) + metadata.summary = data.get('summary') + dist = Distribution(metadata) + if urls: + info = urls[0] + metadata.source_url = info['url'] + dist.digest = self._get_digest(info) + dist.locator = self + result[v] = dist + for info in urls: + url = info['url'] + digest = self._get_digest(info) + result['urls'].setdefault(v, set()).add(url) + result['digests'][url] = digest + return result + + +class PyPIJSONLocator(Locator): + """ + This locator uses PyPI's JSON interface. It's very limited in functionality + and probably not worth using. + """ + def __init__(self, url, **kwargs): + super(PyPIJSONLocator, self).__init__(**kwargs) + self.base_url = ensure_slash(url) + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Not available from this locator') + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + url = urljoin(self.base_url, '%s/json' % quote(name)) + try: + resp = self.opener.open(url) + data = resp.read().decode() # for now + d = json.loads(data) + md = Metadata(scheme=self.scheme) + data = d['info'] + md.name = data['name'] + md.version = data['version'] + md.license = data.get('license') + md.keywords = data.get('keywords', []) + md.summary = data.get('summary') + dist = Distribution(md) + dist.locator = self + # urls = d['urls'] + result[md.version] = dist + for info in d['urls']: + url = info['url'] + dist.download_urls.add(url) + dist.digests[url] = self._get_digest(info) + result['urls'].setdefault(md.version, set()).add(url) + result['digests'][url] = self._get_digest(info) + # Now get other releases + for version, infos in d['releases'].items(): + if version == md.version: + continue # already done + omd = Metadata(scheme=self.scheme) + omd.name = md.name + omd.version = version + odist = Distribution(omd) + odist.locator = self + result[version] = odist + for info in infos: + url = info['url'] + odist.download_urls.add(url) + odist.digests[url] = self._get_digest(info) + result['urls'].setdefault(version, set()).add(url) + result['digests'][url] = self._get_digest(info) +# for info in urls: +# md.source_url = info['url'] +# dist.digest = self._get_digest(info) +# dist.locator = self +# for info in urls: +# url = info['url'] +# result['urls'].setdefault(md.version, set()).add(url) +# result['digests'][url] = self._get_digest(info) + except Exception as e: + self.errors.put(text_type(e)) + logger.exception('JSON fetch failed: %s', e) + return result + + +class Page(object): + """ + This class represents a scraped HTML page. + """ + # The following slightly hairy-looking regex just looks for the contents of + # an anchor link, which has an attribute "href" either immediately preceded + # or immediately followed by a "rel" attribute. The attribute values can be + # declared with double quotes, single quotes or no quotes - which leads to + # the length of the expression. + _href = re.compile(""" +(rel\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*))\\s+)? +href\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)) +(\\s+rel\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)))? +""", re.I | re.S | re.X) + _base = re.compile(r"""]+)""", re.I | re.S) + + def __init__(self, data, url): + """ + Initialise an instance with the Unicode page contents and the URL they + came from. + """ + self.data = data + self.base_url = self.url = url + m = self._base.search(self.data) + if m: + self.base_url = m.group(1) + + _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I) + + @cached_property + def links(self): + """ + Return the URLs of all the links on a page together with information + about their "rel" attribute, for determining which ones to treat as + downloads and which ones to queue for further scraping. + """ + def clean(url): + "Tidy up an URL." + scheme, netloc, path, params, query, frag = urlparse(url) + return urlunparse((scheme, netloc, quote(path), + params, query, frag)) + + result = set() + for match in self._href.finditer(self.data): + d = match.groupdict('') + rel = (d['rel1'] or d['rel2'] or d['rel3'] or + d['rel4'] or d['rel5'] or d['rel6']) + url = d['url1'] or d['url2'] or d['url3'] + url = urljoin(self.base_url, url) + url = unescape(url) + url = self._clean_re.sub(lambda m: '%%%2x' % ord(m.group(0)), url) + result.add((url, rel)) + # We sort the result, hoping to bring the most recent versions + # to the front + result = sorted(result, key=lambda t: t[0], reverse=True) + return result + + +class SimpleScrapingLocator(Locator): + """ + A locator which scrapes HTML pages to locate downloads for a distribution. + This runs multiple threads to do the I/O; performance is at least as good + as pip's PackageFinder, which works in an analogous fashion. + """ + + # These are used to deal with various Content-Encoding schemes. + decoders = { + 'deflate': zlib.decompress, + 'gzip': lambda b: gzip.GzipFile(fileobj=BytesIO(b)).read(), + 'none': lambda b: b, + } + + def __init__(self, url, timeout=None, num_workers=10, **kwargs): + """ + Initialise an instance. + :param url: The root URL to use for scraping. + :param timeout: The timeout, in seconds, to be applied to requests. + This defaults to ``None`` (no timeout specified). + :param num_workers: The number of worker threads you want to do I/O, + This defaults to 10. + :param kwargs: Passed to the superclass. + """ + super(SimpleScrapingLocator, self).__init__(**kwargs) + self.base_url = ensure_slash(url) + self.timeout = timeout + self._page_cache = {} + self._seen = set() + self._to_fetch = queue.Queue() + self._bad_hosts = set() + self.skip_externals = False + self.num_workers = num_workers + self._lock = threading.RLock() + # See issue #45: we need to be resilient when the locator is used + # in a thread, e.g. with concurrent.futures. We can't use self._lock + # as it is for coordinating our internal threads - the ones created + # in _prepare_threads. + self._gplock = threading.RLock() + self.platform_check = False # See issue #112 + + def _prepare_threads(self): + """ + Threads are created only when get_project is called, and terminate + before it returns. They are there primarily to parallelise I/O (i.e. + fetching web pages). + """ + self._threads = [] + for i in range(self.num_workers): + t = threading.Thread(target=self._fetch) + t.daemon = True + t.start() + self._threads.append(t) + + def _wait_threads(self): + """ + Tell all the threads to terminate (by sending a sentinel value) and + wait for them to do so. + """ + # Note that you need two loops, since you can't say which + # thread will get each sentinel + for t in self._threads: + self._to_fetch.put(None) # sentinel + for t in self._threads: + t.join() + self._threads = [] + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + with self._gplock: + self.result = result + self.project_name = name + url = urljoin(self.base_url, '%s/' % quote(name)) + self._seen.clear() + self._page_cache.clear() + self._prepare_threads() + try: + logger.debug('Queueing %s', url) + self._to_fetch.put(url) + self._to_fetch.join() + finally: + self._wait_threads() + del self.result + return result + + platform_dependent = re.compile(r'\b(linux_(i\d86|x86_64|arm\w+)|' + r'win(32|_amd64)|macosx_?\d+)\b', re.I) + + def _is_platform_dependent(self, url): + """ + Does an URL refer to a platform-specific download? + """ + return self.platform_dependent.search(url) + + def _process_download(self, url): + """ + See if an URL is a suitable download for a project. + + If it is, register information in the result dictionary (for + _get_project) about the specific version it's for. + + Note that the return value isn't actually used other than as a boolean + value. + """ + if self.platform_check and self._is_platform_dependent(url): + info = None + else: + info = self.convert_url_to_download_info(url, self.project_name) + logger.debug('process_download: %s -> %s', url, info) + if info: + with self._lock: # needed because self.result is shared + self._update_version_data(self.result, info) + return info + + def _should_queue(self, link, referrer, rel): + """ + Determine whether a link URL from a referring page and with a + particular "rel" attribute should be queued for scraping. + """ + scheme, netloc, path, _, _, _ = urlparse(link) + if path.endswith(self.source_extensions + self.binary_extensions + + self.excluded_extensions): + result = False + elif self.skip_externals and not link.startswith(self.base_url): + result = False + elif not referrer.startswith(self.base_url): + result = False + elif rel not in ('homepage', 'download'): + result = False + elif scheme not in ('http', 'https', 'ftp'): + result = False + elif self._is_platform_dependent(link): + result = False + else: + host = netloc.split(':', 1)[0] + if host.lower() == 'localhost': + result = False + else: + result = True + logger.debug('should_queue: %s (%s) from %s -> %s', link, rel, + referrer, result) + return result + + def _fetch(self): + """ + Get a URL to fetch from the work queue, get the HTML page, examine its + links for download candidates and candidates for further scraping. + + This is a handy method to run in a thread. + """ + while True: + url = self._to_fetch.get() + try: + if url: + page = self.get_page(url) + if page is None: # e.g. after an error + continue + for link, rel in page.links: + if link not in self._seen: + try: + self._seen.add(link) + if (not self._process_download(link) and + self._should_queue(link, url, rel)): + logger.debug('Queueing %s from %s', link, url) + self._to_fetch.put(link) + except MetadataInvalidError: # e.g. invalid versions + pass + except Exception as e: # pragma: no cover + self.errors.put(text_type(e)) + finally: + # always do this, to avoid hangs :-) + self._to_fetch.task_done() + if not url: + # logger.debug('Sentinel seen, quitting.') + break + + def get_page(self, url): + """ + Get the HTML for an URL, possibly from an in-memory cache. + + XXX TODO Note: this cache is never actually cleared. It's assumed that + the data won't get stale over the lifetime of a locator instance (not + necessarily true for the default_locator). + """ + # http://peak.telecommunity.com/DevCenter/EasyInstall#package-index-api + scheme, netloc, path, _, _, _ = urlparse(url) + if scheme == 'file' and os.path.isdir(url2pathname(path)): + url = urljoin(ensure_slash(url), 'index.html') + + if url in self._page_cache: + result = self._page_cache[url] + logger.debug('Returning %s from cache: %s', url, result) + else: + host = netloc.split(':', 1)[0] + result = None + if host in self._bad_hosts: + logger.debug('Skipping %s due to bad host %s', url, host) + else: + req = Request(url, headers={'Accept-encoding': 'identity'}) + try: + logger.debug('Fetching %s', url) + resp = self.opener.open(req, timeout=self.timeout) + logger.debug('Fetched %s', url) + headers = resp.info() + content_type = headers.get('Content-Type', '') + if HTML_CONTENT_TYPE.match(content_type): + final_url = resp.geturl() + data = resp.read() + encoding = headers.get('Content-Encoding') + if encoding: + decoder = self.decoders[encoding] # fail if not found + data = decoder(data) + encoding = 'utf-8' + m = CHARSET.search(content_type) + if m: + encoding = m.group(1) + try: + data = data.decode(encoding) + except UnicodeError: # pragma: no cover + data = data.decode('latin-1') # fallback + result = Page(data, final_url) + self._page_cache[final_url] = result + except HTTPError as e: + if e.code != 404: + logger.exception('Fetch failed: %s: %s', url, e) + except URLError as e: # pragma: no cover + logger.exception('Fetch failed: %s: %s', url, e) + with self._lock: + self._bad_hosts.add(host) + except Exception as e: # pragma: no cover + logger.exception('Fetch failed: %s: %s', url, e) + finally: + self._page_cache[url] = result # even if None (failure) + return result + + _distname_re = re.compile(']*>([^<]+)<') + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + page = self.get_page(self.base_url) + if not page: + raise DistlibException('Unable to get %s' % self.base_url) + for match in self._distname_re.finditer(page.data): + result.add(match.group(1)) + return result + + +class DirectoryLocator(Locator): + """ + This class locates distributions in a directory tree. + """ + + def __init__(self, path, **kwargs): + """ + Initialise an instance. + :param path: The root of the directory tree to search. + :param kwargs: Passed to the superclass constructor, + except for: + * recursive - if True (the default), subdirectories are + recursed into. If False, only the top-level directory + is searched, + """ + self.recursive = kwargs.pop('recursive', True) + super(DirectoryLocator, self).__init__(**kwargs) + path = os.path.abspath(path) + if not os.path.isdir(path): # pragma: no cover + raise DistlibException('Not a directory: %r' % path) + self.base_dir = path + + def should_include(self, filename, parent): + """ + Should a filename be considered as a candidate for a distribution + archive? As well as the filename, the directory which contains it + is provided, though not used by the current implementation. + """ + return filename.endswith(self.downloadable_extensions) + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + for root, dirs, files in os.walk(self.base_dir): + for fn in files: + if self.should_include(fn, root): + fn = os.path.join(root, fn) + url = urlunparse(('file', '', + pathname2url(os.path.abspath(fn)), + '', '', '')) + info = self.convert_url_to_download_info(url, name) + if info: + self._update_version_data(result, info) + if not self.recursive: + break + return result + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + for root, dirs, files in os.walk(self.base_dir): + for fn in files: + if self.should_include(fn, root): + fn = os.path.join(root, fn) + url = urlunparse(('file', '', + pathname2url(os.path.abspath(fn)), + '', '', '')) + info = self.convert_url_to_download_info(url, None) + if info: + result.add(info['name']) + if not self.recursive: + break + return result + + +class JSONLocator(Locator): + """ + This locator uses special extended metadata (not available on PyPI) and is + the basis of performant dependency resolution in distlib. Other locators + require archive downloads before dependencies can be determined! As you + might imagine, that can be slow. + """ + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Not available from this locator') + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + data = get_project_data(name) + if data: + for info in data.get('files', []): + if info['ptype'] != 'sdist' or info['pyversion'] != 'source': + continue + # We don't store summary in project metadata as it makes + # the data bigger for no benefit during dependency + # resolution + dist = make_dist(data['name'], info['version'], + summary=data.get('summary', + 'Placeholder for summary'), + scheme=self.scheme) + md = dist.metadata + md.source_url = info['url'] + # TODO SHA256 digest + if 'digest' in info and info['digest']: + dist.digest = ('md5', info['digest']) + md.dependencies = info.get('requirements', {}) + dist.exports = info.get('exports', {}) + result[dist.version] = dist + result['urls'].setdefault(dist.version, set()).add(info['url']) + return result + + +class DistPathLocator(Locator): + """ + This locator finds installed distributions in a path. It can be useful for + adding to an :class:`AggregatingLocator`. + """ + def __init__(self, distpath, **kwargs): + """ + Initialise an instance. + + :param distpath: A :class:`DistributionPath` instance to search. + """ + super(DistPathLocator, self).__init__(**kwargs) + assert isinstance(distpath, DistributionPath) + self.distpath = distpath + + def _get_project(self, name): + dist = self.distpath.get_distribution(name) + if dist is None: + result = {'urls': {}, 'digests': {}} + else: + result = { + dist.version: dist, + 'urls': {dist.version: set([dist.source_url])}, + 'digests': {dist.version: set([None])} + } + return result + + +class AggregatingLocator(Locator): + """ + This class allows you to chain and/or merge a list of locators. + """ + def __init__(self, *locators, **kwargs): + """ + Initialise an instance. + + :param locators: The list of locators to search. + :param kwargs: Passed to the superclass constructor, + except for: + * merge - if False (the default), the first successful + search from any of the locators is returned. If True, + the results from all locators are merged (this can be + slow). + """ + self.merge = kwargs.pop('merge', False) + self.locators = locators + super(AggregatingLocator, self).__init__(**kwargs) + + def clear_cache(self): + super(AggregatingLocator, self).clear_cache() + for locator in self.locators: + locator.clear_cache() + + def _set_scheme(self, value): + self._scheme = value + for locator in self.locators: + locator.scheme = value + + scheme = property(Locator.scheme.fget, _set_scheme) + + def _get_project(self, name): + result = {} + for locator in self.locators: + d = locator.get_project(name) + if d: + if self.merge: + files = result.get('urls', {}) + digests = result.get('digests', {}) + # next line could overwrite result['urls'], result['digests'] + result.update(d) + df = result.get('urls') + if files and df: + for k, v in files.items(): + if k in df: + df[k] |= v + else: + df[k] = v + dd = result.get('digests') + if digests and dd: + dd.update(digests) + else: + # See issue #18. If any dists are found and we're looking + # for specific constraints, we only return something if + # a match is found. For example, if a DirectoryLocator + # returns just foo (1.0) while we're looking for + # foo (>= 2.0), we'll pretend there was nothing there so + # that subsequent locators can be queried. Otherwise we + # would just return foo (1.0) which would then lead to a + # failure to find foo (>= 2.0), because other locators + # weren't searched. Note that this only matters when + # merge=False. + if self.matcher is None: + found = True + else: + found = False + for k in d: + if self.matcher.match(k): + found = True + break + if found: + result = d + break + return result + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + for locator in self.locators: + try: + result |= locator.get_distribution_names() + except NotImplementedError: + pass + return result + + +# We use a legacy scheme simply because most of the dists on PyPI use legacy +# versions which don't conform to PEP 440. +default_locator = AggregatingLocator( + # JSONLocator(), # don't use as PEP 426 is withdrawn + SimpleScrapingLocator('https://pypi.org/simple/', + timeout=3.0), + scheme='legacy') + +locate = default_locator.locate + + +class DependencyFinder(object): + """ + Locate dependencies for distributions. + """ + + def __init__(self, locator=None): + """ + Initialise an instance, using the specified locator + to locate distributions. + """ + self.locator = locator or default_locator + self.scheme = get_scheme(self.locator.scheme) + + def add_distribution(self, dist): + """ + Add a distribution to the finder. This will update internal information + about who provides what. + :param dist: The distribution to add. + """ + logger.debug('adding distribution %s', dist) + name = dist.key + self.dists_by_name[name] = dist + self.dists[(name, dist.version)] = dist + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Add to provided: %s, %s, %s', name, version, dist) + self.provided.setdefault(name, set()).add((version, dist)) + + def remove_distribution(self, dist): + """ + Remove a distribution from the finder. This will update internal + information about who provides what. + :param dist: The distribution to remove. + """ + logger.debug('removing distribution %s', dist) + name = dist.key + del self.dists_by_name[name] + del self.dists[(name, dist.version)] + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Remove from provided: %s, %s, %s', name, version, dist) + s = self.provided[name] + s.remove((version, dist)) + if not s: + del self.provided[name] + + def get_matcher(self, reqt): + """ + Get a version matcher for a requirement. + :param reqt: The requirement + :type reqt: str + :return: A version matcher (an instance of + :class:`distlib.version.Matcher`). + """ + try: + matcher = self.scheme.matcher(reqt) + except UnsupportedVersionError: # pragma: no cover + # XXX compat-mode if cannot read the version + name = reqt.split()[0] + matcher = self.scheme.matcher(name) + return matcher + + def find_providers(self, reqt): + """ + Find the distributions which can fulfill a requirement. + + :param reqt: The requirement. + :type reqt: str + :return: A set of distribution which can fulfill the requirement. + """ + matcher = self.get_matcher(reqt) + name = matcher.key # case-insensitive + result = set() + provided = self.provided + if name in provided: + for version, provider in provided[name]: + try: + match = matcher.match(version) + except UnsupportedVersionError: + match = False + + if match: + result.add(provider) + break + return result + + def try_to_replace(self, provider, other, problems): + """ + Attempt to replace one provider with another. This is typically used + when resolving dependencies from multiple sources, e.g. A requires + (B >= 1.0) while C requires (B >= 1.1). + + For successful replacement, ``provider`` must meet all the requirements + which ``other`` fulfills. + + :param provider: The provider we are trying to replace with. + :param other: The provider we're trying to replace. + :param problems: If False is returned, this will contain what + problems prevented replacement. This is currently + a tuple of the literal string 'cantreplace', + ``provider``, ``other`` and the set of requirements + that ``provider`` couldn't fulfill. + :return: True if we can replace ``other`` with ``provider``, else + False. + """ + rlist = self.reqts[other] + unmatched = set() + for s in rlist: + matcher = self.get_matcher(s) + if not matcher.match(provider.version): + unmatched.add(s) + if unmatched: + # can't replace other with provider + problems.add(('cantreplace', provider, other, + frozenset(unmatched))) + result = False + else: + # can replace other with provider + self.remove_distribution(other) + del self.reqts[other] + for s in rlist: + self.reqts.setdefault(provider, set()).add(s) + self.add_distribution(provider) + result = True + return result + + def find(self, requirement, meta_extras=None, prereleases=False): + """ + Find a distribution and all distributions it depends on. + + :param requirement: The requirement specifying the distribution to + find, or a Distribution instance. + :param meta_extras: A list of meta extras such as :test:, :build: and + so on. + :param prereleases: If ``True``, allow pre-release versions to be + returned - otherwise, don't return prereleases + unless they're all that's available. + + Return a set of :class:`Distribution` instances and a set of + problems. + + The distributions returned should be such that they have the + :attr:`required` attribute set to ``True`` if they were + from the ``requirement`` passed to ``find()``, and they have the + :attr:`build_time_dependency` attribute set to ``True`` unless they + are post-installation dependencies of the ``requirement``. + + The problems should be a tuple consisting of the string + ``'unsatisfied'`` and the requirement which couldn't be satisfied + by any distribution known to the locator. + """ + + self.provided = {} + self.dists = {} + self.dists_by_name = {} + self.reqts = {} + + meta_extras = set(meta_extras or []) + if ':*:' in meta_extras: + meta_extras.remove(':*:') + # :meta: and :run: are implicitly included + meta_extras |= set([':test:', ':build:', ':dev:']) + + if isinstance(requirement, Distribution): + dist = odist = requirement + logger.debug('passed %s as requirement', odist) + else: + dist = odist = self.locator.locate(requirement, + prereleases=prereleases) + if dist is None: + raise DistlibException('Unable to locate %r' % requirement) + logger.debug('located %s', odist) + dist.requested = True + problems = set() + todo = set([dist]) + install_dists = set([odist]) + while todo: + dist = todo.pop() + name = dist.key # case-insensitive + if name not in self.dists_by_name: + self.add_distribution(dist) + else: + # import pdb; pdb.set_trace() + other = self.dists_by_name[name] + if other != dist: + self.try_to_replace(dist, other, problems) + + ireqts = dist.run_requires | dist.meta_requires + sreqts = dist.build_requires + ereqts = set() + if meta_extras and dist in install_dists: + for key in ('test', 'build', 'dev'): + e = ':%s:' % key + if e in meta_extras: + ereqts |= getattr(dist, '%s_requires' % key) + all_reqts = ireqts | sreqts | ereqts + for r in all_reqts: + providers = self.find_providers(r) + if not providers: + logger.debug('No providers found for %r', r) + provider = self.locator.locate(r, prereleases=prereleases) + # If no provider is found and we didn't consider + # prereleases, consider them now. + if provider is None and not prereleases: + provider = self.locator.locate(r, prereleases=True) + if provider is None: + logger.debug('Cannot satisfy %r', r) + problems.add(('unsatisfied', r)) + else: + n, v = provider.key, provider.version + if (n, v) not in self.dists: + todo.add(provider) + providers.add(provider) + if r in ireqts and dist in install_dists: + install_dists.add(provider) + logger.debug('Adding %s to install_dists', + provider.name_and_version) + for p in providers: + name = p.key + if name not in self.dists_by_name: + self.reqts.setdefault(p, set()).add(r) + else: + other = self.dists_by_name[name] + if other != p: + # see if other can be replaced by p + self.try_to_replace(p, other, problems) + + dists = set(self.dists.values()) + for dist in dists: + dist.build_time_dependency = dist not in install_dists + if dist.build_time_dependency: + logger.debug('%s is a build-time dependency only.', + dist.name_and_version) + logger.debug('find done for %s', odist) + return dists, problems diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py b/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py new file mode 100644 index 00000000000..420dcf12ed2 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py @@ -0,0 +1,384 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2023 Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +""" +Class representing the list of files in a distribution. + +Equivalent to distutils.filelist, but fixes some problems. +""" +import fnmatch +import logging +import os +import re +import sys + +from . import DistlibException +from .compat import fsdecode +from .util import convert_path + + +__all__ = ['Manifest'] + +logger = logging.getLogger(__name__) + +# a \ followed by some spaces + EOL +_COLLAPSE_PATTERN = re.compile('\\\\w*\n', re.M) +_COMMENTED_LINE = re.compile('#.*?(?=\n)|\n(?=$)', re.M | re.S) + +# +# Due to the different results returned by fnmatch.translate, we need +# to do slightly different processing for Python 2.7 and 3.2 ... this needed +# to be brought in for Python 3.6 onwards. +# +_PYTHON_VERSION = sys.version_info[:2] + + +class Manifest(object): + """ + A list of files built by exploring the filesystem and filtered by applying various + patterns to what we find there. + """ + + def __init__(self, base=None): + """ + Initialise an instance. + + :param base: The base directory to explore under. + """ + self.base = os.path.abspath(os.path.normpath(base or os.getcwd())) + self.prefix = self.base + os.sep + self.allfiles = None + self.files = set() + + # + # Public API + # + + def findall(self): + """Find all files under the base and set ``allfiles`` to the absolute + pathnames of files found. + """ + from stat import S_ISREG, S_ISDIR, S_ISLNK + + self.allfiles = allfiles = [] + root = self.base + stack = [root] + pop = stack.pop + push = stack.append + + while stack: + root = pop() + names = os.listdir(root) + + for name in names: + fullname = os.path.join(root, name) + + # Avoid excess stat calls -- just one will do, thank you! + stat = os.stat(fullname) + mode = stat.st_mode + if S_ISREG(mode): + allfiles.append(fsdecode(fullname)) + elif S_ISDIR(mode) and not S_ISLNK(mode): + push(fullname) + + def add(self, item): + """ + Add a file to the manifest. + + :param item: The pathname to add. This can be relative to the base. + """ + if not item.startswith(self.prefix): + item = os.path.join(self.base, item) + self.files.add(os.path.normpath(item)) + + def add_many(self, items): + """ + Add a list of files to the manifest. + + :param items: The pathnames to add. These can be relative to the base. + """ + for item in items: + self.add(item) + + def sorted(self, wantdirs=False): + """ + Return sorted files in directory order + """ + + def add_dir(dirs, d): + dirs.add(d) + logger.debug('add_dir added %s', d) + if d != self.base: + parent, _ = os.path.split(d) + assert parent not in ('', '/') + add_dir(dirs, parent) + + result = set(self.files) # make a copy! + if wantdirs: + dirs = set() + for f in result: + add_dir(dirs, os.path.dirname(f)) + result |= dirs + return [os.path.join(*path_tuple) for path_tuple in + sorted(os.path.split(path) for path in result)] + + def clear(self): + """Clear all collected files.""" + self.files = set() + self.allfiles = [] + + def process_directive(self, directive): + """ + Process a directive which either adds some files from ``allfiles`` to + ``files``, or removes some files from ``files``. + + :param directive: The directive to process. This should be in a format + compatible with distutils ``MANIFEST.in`` files: + + http://docs.python.org/distutils/sourcedist.html#commands + """ + # Parse the line: split it up, make sure the right number of words + # is there, and return the relevant words. 'action' is always + # defined: it's the first word of the line. Which of the other + # three are defined depends on the action; it'll be either + # patterns, (dir and patterns), or (dirpattern). + action, patterns, thedir, dirpattern = self._parse_directive(directive) + + # OK, now we know that the action is valid and we have the + # right number of words on the line for that action -- so we + # can proceed with minimal error-checking. + if action == 'include': + for pattern in patterns: + if not self._include_pattern(pattern, anchor=True): + logger.warning('no files found matching %r', pattern) + + elif action == 'exclude': + for pattern in patterns: + self._exclude_pattern(pattern, anchor=True) + + elif action == 'global-include': + for pattern in patterns: + if not self._include_pattern(pattern, anchor=False): + logger.warning('no files found matching %r ' + 'anywhere in distribution', pattern) + + elif action == 'global-exclude': + for pattern in patterns: + self._exclude_pattern(pattern, anchor=False) + + elif action == 'recursive-include': + for pattern in patterns: + if not self._include_pattern(pattern, prefix=thedir): + logger.warning('no files found matching %r ' + 'under directory %r', pattern, thedir) + + elif action == 'recursive-exclude': + for pattern in patterns: + self._exclude_pattern(pattern, prefix=thedir) + + elif action == 'graft': + if not self._include_pattern(None, prefix=dirpattern): + logger.warning('no directories found matching %r', + dirpattern) + + elif action == 'prune': + if not self._exclude_pattern(None, prefix=dirpattern): + logger.warning('no previously-included directories found ' + 'matching %r', dirpattern) + else: # pragma: no cover + # This should never happen, as it should be caught in + # _parse_template_line + raise DistlibException( + 'invalid action %r' % action) + + # + # Private API + # + + def _parse_directive(self, directive): + """ + Validate a directive. + :param directive: The directive to validate. + :return: A tuple of action, patterns, thedir, dir_patterns + """ + words = directive.split() + if len(words) == 1 and words[0] not in ('include', 'exclude', + 'global-include', + 'global-exclude', + 'recursive-include', + 'recursive-exclude', + 'graft', 'prune'): + # no action given, let's use the default 'include' + words.insert(0, 'include') + + action = words[0] + patterns = thedir = dir_pattern = None + + if action in ('include', 'exclude', + 'global-include', 'global-exclude'): + if len(words) < 2: + raise DistlibException( + '%r expects ...' % action) + + patterns = [convert_path(word) for word in words[1:]] + + elif action in ('recursive-include', 'recursive-exclude'): + if len(words) < 3: + raise DistlibException( + '%r expects ...' % action) + + thedir = convert_path(words[1]) + patterns = [convert_path(word) for word in words[2:]] + + elif action in ('graft', 'prune'): + if len(words) != 2: + raise DistlibException( + '%r expects a single ' % action) + + dir_pattern = convert_path(words[1]) + + else: + raise DistlibException('unknown action %r' % action) + + return action, patterns, thedir, dir_pattern + + def _include_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Select strings (presumably filenames) from 'self.files' that + match 'pattern', a Unix-style wildcard (glob) pattern. + + Patterns are not quite the same as implemented by the 'fnmatch' + module: '*' and '?' match non-special characters, where "special" + is platform-dependent: slash on Unix; colon, slash, and backslash on + DOS/Windows; and colon on Mac OS. + + If 'anchor' is true (the default), then the pattern match is more + stringent: "*.py" will match "foo.py" but not "foo/bar.py". If + 'anchor' is false, both of these will match. + + If 'prefix' is supplied, then only filenames starting with 'prefix' + (itself a pattern) and ending with 'pattern', with anything in between + them, will match. 'anchor' is ignored in this case. + + If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and + 'pattern' is assumed to be either a string containing a regex or a + regex object -- no translation is done, the regex is just compiled + and used as-is. + + Selected strings will be added to self.files. + + Return True if files are found. + """ + # XXX docstring lying about what the special chars are? + found = False + pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) + + # delayed loading of allfiles list + if self.allfiles is None: + self.findall() + + for name in self.allfiles: + if pattern_re.search(name): + self.files.add(name) + found = True + return found + + def _exclude_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Remove strings (presumably filenames) from 'files' that match + 'pattern'. + + Other parameters are the same as for 'include_pattern()', above. + The list 'self.files' is modified in place. Return True if files are + found. + + This API is public to allow e.g. exclusion of SCM subdirs, e.g. when + packaging source distributions + """ + found = False + pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) + for f in list(self.files): + if pattern_re.search(f): + self.files.remove(f) + found = True + return found + + def _translate_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Translate a shell-like wildcard pattern to a compiled regular + expression. + + Return the compiled regex. If 'is_regex' true, + then 'pattern' is directly compiled to a regex (if it's a string) + or just returned as-is (assumes it's a regex object). + """ + if is_regex: + if isinstance(pattern, str): + return re.compile(pattern) + else: + return pattern + + if _PYTHON_VERSION > (3, 2): + # ditch start and end characters + start, _, end = self._glob_to_re('_').partition('_') + + if pattern: + pattern_re = self._glob_to_re(pattern) + if _PYTHON_VERSION > (3, 2): + assert pattern_re.startswith(start) and pattern_re.endswith(end) + else: + pattern_re = '' + + base = re.escape(os.path.join(self.base, '')) + if prefix is not None: + # ditch end of pattern character + if _PYTHON_VERSION <= (3, 2): + empty_pattern = self._glob_to_re('') + prefix_re = self._glob_to_re(prefix)[:-len(empty_pattern)] + else: + prefix_re = self._glob_to_re(prefix) + assert prefix_re.startswith(start) and prefix_re.endswith(end) + prefix_re = prefix_re[len(start): len(prefix_re) - len(end)] + sep = os.sep + if os.sep == '\\': + sep = r'\\' + if _PYTHON_VERSION <= (3, 2): + pattern_re = '^' + base + sep.join((prefix_re, + '.*' + pattern_re)) + else: + pattern_re = pattern_re[len(start): len(pattern_re) - len(end)] + pattern_re = r'%s%s%s%s.*%s%s' % (start, base, prefix_re, sep, + pattern_re, end) + else: # no prefix -- respect anchor flag + if anchor: + if _PYTHON_VERSION <= (3, 2): + pattern_re = '^' + base + pattern_re + else: + pattern_re = r'%s%s%s' % (start, base, pattern_re[len(start):]) + + return re.compile(pattern_re) + + def _glob_to_re(self, pattern): + """Translate a shell-like glob pattern to a regular expression. + + Return a string containing the regex. Differs from + 'fnmatch.translate()' in that '*' does not match "special characters" + (which are platform-specific). + """ + pattern_re = fnmatch.translate(pattern) + + # '?' and '*' in the glob pattern become '.' and '.*' in the RE, which + # IMHO is wrong -- '?' and '*' aren't supposed to match slash in Unix, + # and by extension they shouldn't match such "special characters" under + # any OS. So change all non-escaped dots in the RE to match any + # character except the special characters (currently: just os.sep). + sep = os.sep + if os.sep == '\\': + # we're using a regex to manipulate a regex, so we need + # to escape the backslash twice + sep = r'\\\\' + escaped = r'\1[^%s]' % sep + pattern_re = re.sub(r'((? y, + '!=': lambda x, y: x != y, + '<': lambda x, y: x < y, + '<=': lambda x, y: x == y or x < y, + '>': lambda x, y: x > y, + '>=': lambda x, y: x == y or x > y, + 'and': lambda x, y: x and y, + 'or': lambda x, y: x or y, + 'in': lambda x, y: x in y, + 'not in': lambda x, y: x not in y, + } + + def evaluate(self, expr, context): + """ + Evaluate a marker expression returned by the :func:`parse_requirement` + function in the specified context. + """ + if isinstance(expr, string_types): + if expr[0] in '\'"': + result = expr[1:-1] + else: + if expr not in context: + raise SyntaxError('unknown variable: %s' % expr) + result = context[expr] + else: + assert isinstance(expr, dict) + op = expr['op'] + if op not in self.operations: + raise NotImplementedError('op not implemented: %s' % op) + elhs = expr['lhs'] + erhs = expr['rhs'] + if _is_literal(expr['lhs']) and _is_literal(expr['rhs']): + raise SyntaxError('invalid comparison: %s %s %s' % + (elhs, op, erhs)) + + lhs = self.evaluate(elhs, context) + rhs = self.evaluate(erhs, context) + if ((_is_version_marker(elhs) or _is_version_marker(erhs)) + and op in ('<', '<=', '>', '>=', '===', '==', '!=', '~=')): + lhs = LV(lhs) + rhs = LV(rhs) + elif _is_version_marker(elhs) and op in ('in', 'not in'): + lhs = LV(lhs) + rhs = _get_versions(rhs) + result = self.operations[op](lhs, rhs) + return result + + +_DIGITS = re.compile(r'\d+\.\d+') + + +def default_context(): + + def format_full_version(info): + version = '%s.%s.%s' % (info.major, info.minor, info.micro) + kind = info.releaselevel + if kind != 'final': + version += kind[0] + str(info.serial) + return version + + if hasattr(sys, 'implementation'): + implementation_version = format_full_version( + sys.implementation.version) + implementation_name = sys.implementation.name + else: + implementation_version = '0' + implementation_name = '' + + ppv = platform.python_version() + m = _DIGITS.match(ppv) + pv = m.group(0) + result = { + 'implementation_name': implementation_name, + 'implementation_version': implementation_version, + 'os_name': os.name, + 'platform_machine': platform.machine(), + 'platform_python_implementation': platform.python_implementation(), + 'platform_release': platform.release(), + 'platform_system': platform.system(), + 'platform_version': platform.version(), + 'platform_in_venv': str(in_venv()), + 'python_full_version': ppv, + 'python_version': pv, + 'sys_platform': sys.platform, + } + return result + + +DEFAULT_CONTEXT = default_context() +del default_context + +evaluator = Evaluator() + + +def interpret(marker, execution_context=None): + """ + Interpret a marker and return a result depending on environment. + + :param marker: The marker to interpret. + :type marker: str + :param execution_context: The context used for name lookup. + :type execution_context: mapping + """ + try: + expr, rest = parse_marker(marker) + except Exception as e: + raise SyntaxError('Unable to interpret marker syntax: %s: %s' % + (marker, e)) + if rest and rest[0] != '#': + raise SyntaxError('unexpected trailing data in marker: %s: %s' % + (marker, rest)) + context = dict(DEFAULT_CONTEXT) + if execution_context: + context.update(execution_context) + return evaluator.evaluate(expr, context) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py b/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py new file mode 100644 index 00000000000..7189aeef229 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py @@ -0,0 +1,1068 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Implementation of the Metadata for Python packages PEPs. + +Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and 2.2). +""" +from __future__ import unicode_literals + +import codecs +from email import message_from_file +import json +import logging +import re + + +from . import DistlibException, __version__ +from .compat import StringIO, string_types, text_type +from .markers import interpret +from .util import extract_by_key, get_extras +from .version import get_scheme, PEP440_VERSION_RE + +logger = logging.getLogger(__name__) + + +class MetadataMissingError(DistlibException): + """A required metadata is missing""" + + +class MetadataConflictError(DistlibException): + """Attempt to read or write metadata fields that are conflictual.""" + + +class MetadataUnrecognizedVersionError(DistlibException): + """Unknown metadata version number.""" + + +class MetadataInvalidError(DistlibException): + """A metadata value is invalid""" + +# public API of this module +__all__ = ['Metadata', 'PKG_INFO_ENCODING', 'PKG_INFO_PREFERRED_VERSION'] + +# Encoding used for the PKG-INFO files +PKG_INFO_ENCODING = 'utf-8' + +# preferred version. Hopefully will be changed +# to 1.2 once PEP 345 is supported everywhere +PKG_INFO_PREFERRED_VERSION = '1.1' + +_LINE_PREFIX_1_2 = re.compile('\n \\|') +_LINE_PREFIX_PRE_1_2 = re.compile('\n ') +_241_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'License') + +_314_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'License', 'Classifier', 'Download-URL', 'Obsoletes', + 'Provides', 'Requires') + +_314_MARKERS = ('Obsoletes', 'Provides', 'Requires', 'Classifier', + 'Download-URL') + +_345_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'Maintainer', 'Maintainer-email', 'License', + 'Classifier', 'Download-URL', 'Obsoletes-Dist', + 'Project-URL', 'Provides-Dist', 'Requires-Dist', + 'Requires-Python', 'Requires-External') + +_345_MARKERS = ('Provides-Dist', 'Requires-Dist', 'Requires-Python', + 'Obsoletes-Dist', 'Requires-External', 'Maintainer', + 'Maintainer-email', 'Project-URL') + +_426_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'Maintainer', 'Maintainer-email', 'License', + 'Classifier', 'Download-URL', 'Obsoletes-Dist', + 'Project-URL', 'Provides-Dist', 'Requires-Dist', + 'Requires-Python', 'Requires-External', 'Private-Version', + 'Obsoleted-By', 'Setup-Requires-Dist', 'Extension', + 'Provides-Extra') + +_426_MARKERS = ('Private-Version', 'Provides-Extra', 'Obsoleted-By', + 'Setup-Requires-Dist', 'Extension') + +# See issue #106: Sometimes 'Requires' and 'Provides' occur wrongly in +# the metadata. Include them in the tuple literal below to allow them +# (for now). +# Ditto for Obsoletes - see issue #140. +_566_FIELDS = _426_FIELDS + ('Description-Content-Type', + 'Requires', 'Provides', 'Obsoletes') + +_566_MARKERS = ('Description-Content-Type',) + +_643_MARKERS = ('Dynamic', 'License-File') + +_643_FIELDS = _566_FIELDS + _643_MARKERS + +_ALL_FIELDS = set() +_ALL_FIELDS.update(_241_FIELDS) +_ALL_FIELDS.update(_314_FIELDS) +_ALL_FIELDS.update(_345_FIELDS) +_ALL_FIELDS.update(_426_FIELDS) +_ALL_FIELDS.update(_566_FIELDS) +_ALL_FIELDS.update(_643_FIELDS) + +EXTRA_RE = re.compile(r'''extra\s*==\s*("([^"]+)"|'([^']+)')''') + + +def _version2fieldlist(version): + if version == '1.0': + return _241_FIELDS + elif version == '1.1': + return _314_FIELDS + elif version == '1.2': + return _345_FIELDS + elif version in ('1.3', '2.1'): + # avoid adding field names if already there + return _345_FIELDS + tuple(f for f in _566_FIELDS if f not in _345_FIELDS) + elif version == '2.0': + raise ValueError('Metadata 2.0 is withdrawn and not supported') + # return _426_FIELDS + elif version == '2.2': + return _643_FIELDS + raise MetadataUnrecognizedVersionError(version) + + +def _best_version(fields): + """Detect the best version depending on the fields used.""" + def _has_marker(keys, markers): + return any(marker in keys for marker in markers) + + keys = [key for key, value in fields.items() if value not in ([], 'UNKNOWN', None)] + possible_versions = ['1.0', '1.1', '1.2', '1.3', '2.1', '2.2'] # 2.0 removed + + # first let's try to see if a field is not part of one of the version + for key in keys: + if key not in _241_FIELDS and '1.0' in possible_versions: + possible_versions.remove('1.0') + logger.debug('Removed 1.0 due to %s', key) + if key not in _314_FIELDS and '1.1' in possible_versions: + possible_versions.remove('1.1') + logger.debug('Removed 1.1 due to %s', key) + if key not in _345_FIELDS and '1.2' in possible_versions: + possible_versions.remove('1.2') + logger.debug('Removed 1.2 due to %s', key) + if key not in _566_FIELDS and '1.3' in possible_versions: + possible_versions.remove('1.3') + logger.debug('Removed 1.3 due to %s', key) + if key not in _566_FIELDS and '2.1' in possible_versions: + if key != 'Description': # In 2.1, description allowed after headers + possible_versions.remove('2.1') + logger.debug('Removed 2.1 due to %s', key) + if key not in _643_FIELDS and '2.2' in possible_versions: + possible_versions.remove('2.2') + logger.debug('Removed 2.2 due to %s', key) + # if key not in _426_FIELDS and '2.0' in possible_versions: + # possible_versions.remove('2.0') + # logger.debug('Removed 2.0 due to %s', key) + + # possible_version contains qualified versions + if len(possible_versions) == 1: + return possible_versions[0] # found ! + elif len(possible_versions) == 0: + logger.debug('Out of options - unknown metadata set: %s', fields) + raise MetadataConflictError('Unknown metadata set') + + # let's see if one unique marker is found + is_1_1 = '1.1' in possible_versions and _has_marker(keys, _314_MARKERS) + is_1_2 = '1.2' in possible_versions and _has_marker(keys, _345_MARKERS) + is_2_1 = '2.1' in possible_versions and _has_marker(keys, _566_MARKERS) + # is_2_0 = '2.0' in possible_versions and _has_marker(keys, _426_MARKERS) + is_2_2 = '2.2' in possible_versions and _has_marker(keys, _643_MARKERS) + if int(is_1_1) + int(is_1_2) + int(is_2_1) + int(is_2_2) > 1: + raise MetadataConflictError('You used incompatible 1.1/1.2/2.1/2.2 fields') + + # we have the choice, 1.0, or 1.2, 2.1 or 2.2 + # - 1.0 has a broken Summary field but works with all tools + # - 1.1 is to avoid + # - 1.2 fixes Summary but has little adoption + # - 2.1 adds more features + # - 2.2 is the latest + if not is_1_1 and not is_1_2 and not is_2_1 and not is_2_2: + # we couldn't find any specific marker + if PKG_INFO_PREFERRED_VERSION in possible_versions: + return PKG_INFO_PREFERRED_VERSION + if is_1_1: + return '1.1' + if is_1_2: + return '1.2' + if is_2_1: + return '2.1' + # if is_2_2: + # return '2.2' + + return '2.2' + +# This follows the rules about transforming keys as described in +# https://www.python.org/dev/peps/pep-0566/#id17 +_ATTR2FIELD = { + name.lower().replace("-", "_"): name for name in _ALL_FIELDS +} +_FIELD2ATTR = {field: attr for attr, field in _ATTR2FIELD.items()} + +_PREDICATE_FIELDS = ('Requires-Dist', 'Obsoletes-Dist', 'Provides-Dist') +_VERSIONS_FIELDS = ('Requires-Python',) +_VERSION_FIELDS = ('Version',) +_LISTFIELDS = ('Platform', 'Classifier', 'Obsoletes', + 'Requires', 'Provides', 'Obsoletes-Dist', + 'Provides-Dist', 'Requires-Dist', 'Requires-External', + 'Project-URL', 'Supported-Platform', 'Setup-Requires-Dist', + 'Provides-Extra', 'Extension', 'License-File') +_LISTTUPLEFIELDS = ('Project-URL',) + +_ELEMENTSFIELD = ('Keywords',) + +_UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description') + +_MISSING = object() + +_FILESAFE = re.compile('[^A-Za-z0-9.]+') + + +def _get_name_and_version(name, version, for_filename=False): + """Return the distribution name with version. + + If for_filename is true, return a filename-escaped form.""" + if for_filename: + # For both name and version any runs of non-alphanumeric or '.' + # characters are replaced with a single '-'. Additionally any + # spaces in the version string become '.' + name = _FILESAFE.sub('-', name) + version = _FILESAFE.sub('-', version.replace(' ', '.')) + return '%s-%s' % (name, version) + + +class LegacyMetadata(object): + """The legacy metadata of a release. + + Supports versions 1.0, 1.1, 1.2, 2.0 and 1.3/2.1 (auto-detected). You can + instantiate the class with one of these arguments (or none): + - *path*, the path to a metadata file + - *fileobj* give a file-like object with metadata as content + - *mapping* is a dict-like object + - *scheme* is a version scheme name + """ + # TODO document the mapping API and UNKNOWN default key + + def __init__(self, path=None, fileobj=None, mapping=None, + scheme='default'): + if [path, fileobj, mapping].count(None) < 2: + raise TypeError('path, fileobj and mapping are exclusive') + self._fields = {} + self.requires_files = [] + self._dependencies = None + self.scheme = scheme + if path is not None: + self.read(path) + elif fileobj is not None: + self.read_file(fileobj) + elif mapping is not None: + self.update(mapping) + self.set_metadata_version() + + def set_metadata_version(self): + self._fields['Metadata-Version'] = _best_version(self._fields) + + def _write_field(self, fileobj, name, value): + fileobj.write('%s: %s\n' % (name, value)) + + def __getitem__(self, name): + return self.get(name) + + def __setitem__(self, name, value): + return self.set(name, value) + + def __delitem__(self, name): + field_name = self._convert_name(name) + try: + del self._fields[field_name] + except KeyError: + raise KeyError(name) + + def __contains__(self, name): + return (name in self._fields or + self._convert_name(name) in self._fields) + + def _convert_name(self, name): + if name in _ALL_FIELDS: + return name + name = name.replace('-', '_').lower() + return _ATTR2FIELD.get(name, name) + + def _default_value(self, name): + if name in _LISTFIELDS or name in _ELEMENTSFIELD: + return [] + return 'UNKNOWN' + + def _remove_line_prefix(self, value): + if self.metadata_version in ('1.0', '1.1'): + return _LINE_PREFIX_PRE_1_2.sub('\n', value) + else: + return _LINE_PREFIX_1_2.sub('\n', value) + + def __getattr__(self, name): + if name in _ATTR2FIELD: + return self[name] + raise AttributeError(name) + + # + # Public API + # + +# dependencies = property(_get_dependencies, _set_dependencies) + + def get_fullname(self, filesafe=False): + """Return the distribution name with version. + + If filesafe is true, return a filename-escaped form.""" + return _get_name_and_version(self['Name'], self['Version'], filesafe) + + def is_field(self, name): + """return True if name is a valid metadata key""" + name = self._convert_name(name) + return name in _ALL_FIELDS + + def is_multi_field(self, name): + name = self._convert_name(name) + return name in _LISTFIELDS + + def read(self, filepath): + """Read the metadata values from a file path.""" + fp = codecs.open(filepath, 'r', encoding='utf-8') + try: + self.read_file(fp) + finally: + fp.close() + + def read_file(self, fileob): + """Read the metadata values from a file object.""" + msg = message_from_file(fileob) + self._fields['Metadata-Version'] = msg['metadata-version'] + + # When reading, get all the fields we can + for field in _ALL_FIELDS: + if field not in msg: + continue + if field in _LISTFIELDS: + # we can have multiple lines + values = msg.get_all(field) + if field in _LISTTUPLEFIELDS and values is not None: + values = [tuple(value.split(',')) for value in values] + self.set(field, values) + else: + # single line + value = msg[field] + if value is not None and value != 'UNKNOWN': + self.set(field, value) + + # PEP 566 specifies that the body be used for the description, if + # available + body = msg.get_payload() + self["Description"] = body if body else self["Description"] + # logger.debug('Attempting to set metadata for %s', self) + # self.set_metadata_version() + + def write(self, filepath, skip_unknown=False): + """Write the metadata fields to filepath.""" + fp = codecs.open(filepath, 'w', encoding='utf-8') + try: + self.write_file(fp, skip_unknown) + finally: + fp.close() + + def write_file(self, fileobject, skip_unknown=False): + """Write the PKG-INFO format data to a file object.""" + self.set_metadata_version() + + for field in _version2fieldlist(self['Metadata-Version']): + values = self.get(field) + if skip_unknown and values in ('UNKNOWN', [], ['UNKNOWN']): + continue + if field in _ELEMENTSFIELD: + self._write_field(fileobject, field, ','.join(values)) + continue + if field not in _LISTFIELDS: + if field == 'Description': + if self.metadata_version in ('1.0', '1.1'): + values = values.replace('\n', '\n ') + else: + values = values.replace('\n', '\n |') + values = [values] + + if field in _LISTTUPLEFIELDS: + values = [','.join(value) for value in values] + + for value in values: + self._write_field(fileobject, field, value) + + def update(self, other=None, **kwargs): + """Set metadata values from the given iterable `other` and kwargs. + + Behavior is like `dict.update`: If `other` has a ``keys`` method, + they are looped over and ``self[key]`` is assigned ``other[key]``. + Else, ``other`` is an iterable of ``(key, value)`` iterables. + + Keys that don't match a metadata field or that have an empty value are + dropped. + """ + def _set(key, value): + if key in _ATTR2FIELD and value: + self.set(self._convert_name(key), value) + + if not other: + # other is None or empty container + pass + elif hasattr(other, 'keys'): + for k in other.keys(): + _set(k, other[k]) + else: + for k, v in other: + _set(k, v) + + if kwargs: + for k, v in kwargs.items(): + _set(k, v) + + def set(self, name, value): + """Control then set a metadata field.""" + name = self._convert_name(name) + + if ((name in _ELEMENTSFIELD or name == 'Platform') and + not isinstance(value, (list, tuple))): + if isinstance(value, string_types): + value = [v.strip() for v in value.split(',')] + else: + value = [] + elif (name in _LISTFIELDS and + not isinstance(value, (list, tuple))): + if isinstance(value, string_types): + value = [value] + else: + value = [] + + if logger.isEnabledFor(logging.WARNING): + project_name = self['Name'] + + scheme = get_scheme(self.scheme) + if name in _PREDICATE_FIELDS and value is not None: + for v in value: + # check that the values are valid + if not scheme.is_valid_matcher(v.split(';')[0]): + logger.warning( + "'%s': '%s' is not valid (field '%s')", + project_name, v, name) + # FIXME this rejects UNKNOWN, is that right? + elif name in _VERSIONS_FIELDS and value is not None: + if not scheme.is_valid_constraint_list(value): + logger.warning("'%s': '%s' is not a valid version (field '%s')", + project_name, value, name) + elif name in _VERSION_FIELDS and value is not None: + if not scheme.is_valid_version(value): + logger.warning("'%s': '%s' is not a valid version (field '%s')", + project_name, value, name) + + if name in _UNICODEFIELDS: + if name == 'Description': + value = self._remove_line_prefix(value) + + self._fields[name] = value + + def get(self, name, default=_MISSING): + """Get a metadata field.""" + name = self._convert_name(name) + if name not in self._fields: + if default is _MISSING: + default = self._default_value(name) + return default + if name in _UNICODEFIELDS: + value = self._fields[name] + return value + elif name in _LISTFIELDS: + value = self._fields[name] + if value is None: + return [] + res = [] + for val in value: + if name not in _LISTTUPLEFIELDS: + res.append(val) + else: + # That's for Project-URL + res.append((val[0], val[1])) + return res + + elif name in _ELEMENTSFIELD: + value = self._fields[name] + if isinstance(value, string_types): + return value.split(',') + return self._fields[name] + + def check(self, strict=False): + """Check if the metadata is compliant. If strict is True then raise if + no Name or Version are provided""" + self.set_metadata_version() + + # XXX should check the versions (if the file was loaded) + missing, warnings = [], [] + + for attr in ('Name', 'Version'): # required by PEP 345 + if attr not in self: + missing.append(attr) + + if strict and missing != []: + msg = 'missing required metadata: %s' % ', '.join(missing) + raise MetadataMissingError(msg) + + for attr in ('Home-page', 'Author'): + if attr not in self: + missing.append(attr) + + # checking metadata 1.2 (XXX needs to check 1.1, 1.0) + if self['Metadata-Version'] != '1.2': + return missing, warnings + + scheme = get_scheme(self.scheme) + + def are_valid_constraints(value): + for v in value: + if not scheme.is_valid_matcher(v.split(';')[0]): + return False + return True + + for fields, controller in ((_PREDICATE_FIELDS, are_valid_constraints), + (_VERSIONS_FIELDS, + scheme.is_valid_constraint_list), + (_VERSION_FIELDS, + scheme.is_valid_version)): + for field in fields: + value = self.get(field, None) + if value is not None and not controller(value): + warnings.append("Wrong value for '%s': %s" % (field, value)) + + return missing, warnings + + def todict(self, skip_missing=False): + """Return fields as a dict. + + Field names will be converted to use the underscore-lowercase style + instead of hyphen-mixed case (i.e. home_page instead of Home-page). + This is as per https://www.python.org/dev/peps/pep-0566/#id17. + """ + self.set_metadata_version() + + fields = _version2fieldlist(self['Metadata-Version']) + + data = {} + + for field_name in fields: + if not skip_missing or field_name in self._fields: + key = _FIELD2ATTR[field_name] + if key != 'project_url': + data[key] = self[field_name] + else: + data[key] = [','.join(u) for u in self[field_name]] + + return data + + def add_requirements(self, requirements): + if self['Metadata-Version'] == '1.1': + # we can't have 1.1 metadata *and* Setuptools requires + for field in ('Obsoletes', 'Requires', 'Provides'): + if field in self: + del self[field] + self['Requires-Dist'] += requirements + + # Mapping API + # TODO could add iter* variants + + def keys(self): + return list(_version2fieldlist(self['Metadata-Version'])) + + def __iter__(self): + for key in self.keys(): + yield key + + def values(self): + return [self[key] for key in self.keys()] + + def items(self): + return [(key, self[key]) for key in self.keys()] + + def __repr__(self): + return '<%s %s %s>' % (self.__class__.__name__, self.name, + self.version) + + +METADATA_FILENAME = 'pydist.json' +WHEEL_METADATA_FILENAME = 'metadata.json' +LEGACY_METADATA_FILENAME = 'METADATA' + + +class Metadata(object): + """ + The metadata of a release. This implementation uses 2.1 + metadata where possible. If not possible, it wraps a LegacyMetadata + instance which handles the key-value metadata format. + """ + + METADATA_VERSION_MATCHER = re.compile(r'^\d+(\.\d+)*$') + + NAME_MATCHER = re.compile('^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$', re.I) + + FIELDNAME_MATCHER = re.compile('^[A-Z]([0-9A-Z-]*[0-9A-Z])?$', re.I) + + VERSION_MATCHER = PEP440_VERSION_RE + + SUMMARY_MATCHER = re.compile('.{1,2047}') + + METADATA_VERSION = '2.0' + + GENERATOR = 'distlib (%s)' % __version__ + + MANDATORY_KEYS = { + 'name': (), + 'version': (), + 'summary': ('legacy',), + } + + INDEX_KEYS = ('name version license summary description author ' + 'author_email keywords platform home_page classifiers ' + 'download_url') + + DEPENDENCY_KEYS = ('extras run_requires test_requires build_requires ' + 'dev_requires provides meta_requires obsoleted_by ' + 'supports_environments') + + SYNTAX_VALIDATORS = { + 'metadata_version': (METADATA_VERSION_MATCHER, ()), + 'name': (NAME_MATCHER, ('legacy',)), + 'version': (VERSION_MATCHER, ('legacy',)), + 'summary': (SUMMARY_MATCHER, ('legacy',)), + 'dynamic': (FIELDNAME_MATCHER, ('legacy',)), + } + + __slots__ = ('_legacy', '_data', 'scheme') + + def __init__(self, path=None, fileobj=None, mapping=None, + scheme='default'): + if [path, fileobj, mapping].count(None) < 2: + raise TypeError('path, fileobj and mapping are exclusive') + self._legacy = None + self._data = None + self.scheme = scheme + #import pdb; pdb.set_trace() + if mapping is not None: + try: + self._validate_mapping(mapping, scheme) + self._data = mapping + except MetadataUnrecognizedVersionError: + self._legacy = LegacyMetadata(mapping=mapping, scheme=scheme) + self.validate() + else: + data = None + if path: + with open(path, 'rb') as f: + data = f.read() + elif fileobj: + data = fileobj.read() + if data is None: + # Initialised with no args - to be added + self._data = { + 'metadata_version': self.METADATA_VERSION, + 'generator': self.GENERATOR, + } + else: + if not isinstance(data, text_type): + data = data.decode('utf-8') + try: + self._data = json.loads(data) + self._validate_mapping(self._data, scheme) + except ValueError: + # Note: MetadataUnrecognizedVersionError does not + # inherit from ValueError (it's a DistlibException, + # which should not inherit from ValueError). + # The ValueError comes from the json.load - if that + # succeeds and we get a validation error, we want + # that to propagate + self._legacy = LegacyMetadata(fileobj=StringIO(data), + scheme=scheme) + self.validate() + + common_keys = set(('name', 'version', 'license', 'keywords', 'summary')) + + none_list = (None, list) + none_dict = (None, dict) + + mapped_keys = { + 'run_requires': ('Requires-Dist', list), + 'build_requires': ('Setup-Requires-Dist', list), + 'dev_requires': none_list, + 'test_requires': none_list, + 'meta_requires': none_list, + 'extras': ('Provides-Extra', list), + 'modules': none_list, + 'namespaces': none_list, + 'exports': none_dict, + 'commands': none_dict, + 'classifiers': ('Classifier', list), + 'source_url': ('Download-URL', None), + 'metadata_version': ('Metadata-Version', None), + } + + del none_list, none_dict + + def __getattribute__(self, key): + common = object.__getattribute__(self, 'common_keys') + mapped = object.__getattribute__(self, 'mapped_keys') + if key in mapped: + lk, maker = mapped[key] + if self._legacy: + if lk is None: + result = None if maker is None else maker() + else: + result = self._legacy.get(lk) + else: + value = None if maker is None else maker() + if key not in ('commands', 'exports', 'modules', 'namespaces', + 'classifiers'): + result = self._data.get(key, value) + else: + # special cases for PEP 459 + sentinel = object() + result = sentinel + d = self._data.get('extensions') + if d: + if key == 'commands': + result = d.get('python.commands', value) + elif key == 'classifiers': + d = d.get('python.details') + if d: + result = d.get(key, value) + else: + d = d.get('python.exports') + if not d: + d = self._data.get('python.exports') + if d: + result = d.get(key, value) + if result is sentinel: + result = value + elif key not in common: + result = object.__getattribute__(self, key) + elif self._legacy: + result = self._legacy.get(key) + else: + result = self._data.get(key) + return result + + def _validate_value(self, key, value, scheme=None): + if key in self.SYNTAX_VALIDATORS: + pattern, exclusions = self.SYNTAX_VALIDATORS[key] + if (scheme or self.scheme) not in exclusions: + m = pattern.match(value) + if not m: + raise MetadataInvalidError("'%s' is an invalid value for " + "the '%s' property" % (value, + key)) + + def __setattr__(self, key, value): + self._validate_value(key, value) + common = object.__getattribute__(self, 'common_keys') + mapped = object.__getattribute__(self, 'mapped_keys') + if key in mapped: + lk, _ = mapped[key] + if self._legacy: + if lk is None: + raise NotImplementedError + self._legacy[lk] = value + elif key not in ('commands', 'exports', 'modules', 'namespaces', + 'classifiers'): + self._data[key] = value + else: + # special cases for PEP 459 + d = self._data.setdefault('extensions', {}) + if key == 'commands': + d['python.commands'] = value + elif key == 'classifiers': + d = d.setdefault('python.details', {}) + d[key] = value + else: + d = d.setdefault('python.exports', {}) + d[key] = value + elif key not in common: + object.__setattr__(self, key, value) + else: + if key == 'keywords': + if isinstance(value, string_types): + value = value.strip() + if value: + value = value.split() + else: + value = [] + if self._legacy: + self._legacy[key] = value + else: + self._data[key] = value + + @property + def name_and_version(self): + return _get_name_and_version(self.name, self.version, True) + + @property + def provides(self): + if self._legacy: + result = self._legacy['Provides-Dist'] + else: + result = self._data.setdefault('provides', []) + s = '%s (%s)' % (self.name, self.version) + if s not in result: + result.append(s) + return result + + @provides.setter + def provides(self, value): + if self._legacy: + self._legacy['Provides-Dist'] = value + else: + self._data['provides'] = value + + def get_requirements(self, reqts, extras=None, env=None): + """ + Base method to get dependencies, given a set of extras + to satisfy and an optional environment context. + :param reqts: A list of sometimes-wanted dependencies, + perhaps dependent on extras and environment. + :param extras: A list of optional components being requested. + :param env: An optional environment for marker evaluation. + """ + if self._legacy: + result = reqts + else: + result = [] + extras = get_extras(extras or [], self.extras) + for d in reqts: + if 'extra' not in d and 'environment' not in d: + # unconditional + include = True + else: + if 'extra' not in d: + # Not extra-dependent - only environment-dependent + include = True + else: + include = d.get('extra') in extras + if include: + # Not excluded because of extras, check environment + marker = d.get('environment') + if marker: + include = interpret(marker, env) + if include: + result.extend(d['requires']) + for key in ('build', 'dev', 'test'): + e = ':%s:' % key + if e in extras: + extras.remove(e) + # A recursive call, but it should terminate since 'test' + # has been removed from the extras + reqts = self._data.get('%s_requires' % key, []) + result.extend(self.get_requirements(reqts, extras=extras, + env=env)) + return result + + @property + def dictionary(self): + if self._legacy: + return self._from_legacy() + return self._data + + @property + def dependencies(self): + if self._legacy: + raise NotImplementedError + else: + return extract_by_key(self._data, self.DEPENDENCY_KEYS) + + @dependencies.setter + def dependencies(self, value): + if self._legacy: + raise NotImplementedError + else: + self._data.update(value) + + def _validate_mapping(self, mapping, scheme): + if mapping.get('metadata_version') != self.METADATA_VERSION: + raise MetadataUnrecognizedVersionError() + missing = [] + for key, exclusions in self.MANDATORY_KEYS.items(): + if key not in mapping: + if scheme not in exclusions: + missing.append(key) + if missing: + msg = 'Missing metadata items: %s' % ', '.join(missing) + raise MetadataMissingError(msg) + for k, v in mapping.items(): + self._validate_value(k, v, scheme) + + def validate(self): + if self._legacy: + missing, warnings = self._legacy.check(True) + if missing or warnings: + logger.warning('Metadata: missing: %s, warnings: %s', + missing, warnings) + else: + self._validate_mapping(self._data, self.scheme) + + def todict(self): + if self._legacy: + return self._legacy.todict(True) + else: + result = extract_by_key(self._data, self.INDEX_KEYS) + return result + + def _from_legacy(self): + assert self._legacy and not self._data + result = { + 'metadata_version': self.METADATA_VERSION, + 'generator': self.GENERATOR, + } + lmd = self._legacy.todict(True) # skip missing ones + for k in ('name', 'version', 'license', 'summary', 'description', + 'classifier'): + if k in lmd: + if k == 'classifier': + nk = 'classifiers' + else: + nk = k + result[nk] = lmd[k] + kw = lmd.get('Keywords', []) + if kw == ['']: + kw = [] + result['keywords'] = kw + keys = (('requires_dist', 'run_requires'), + ('setup_requires_dist', 'build_requires')) + for ok, nk in keys: + if ok in lmd and lmd[ok]: + result[nk] = [{'requires': lmd[ok]}] + result['provides'] = self.provides + author = {} + maintainer = {} + return result + + LEGACY_MAPPING = { + 'name': 'Name', + 'version': 'Version', + ('extensions', 'python.details', 'license'): 'License', + 'summary': 'Summary', + 'description': 'Description', + ('extensions', 'python.project', 'project_urls', 'Home'): 'Home-page', + ('extensions', 'python.project', 'contacts', 0, 'name'): 'Author', + ('extensions', 'python.project', 'contacts', 0, 'email'): 'Author-email', + 'source_url': 'Download-URL', + ('extensions', 'python.details', 'classifiers'): 'Classifier', + } + + def _to_legacy(self): + def process_entries(entries): + reqts = set() + for e in entries: + extra = e.get('extra') + env = e.get('environment') + rlist = e['requires'] + for r in rlist: + if not env and not extra: + reqts.add(r) + else: + marker = '' + if extra: + marker = 'extra == "%s"' % extra + if env: + if marker: + marker = '(%s) and %s' % (env, marker) + else: + marker = env + reqts.add(';'.join((r, marker))) + return reqts + + assert self._data and not self._legacy + result = LegacyMetadata() + nmd = self._data + # import pdb; pdb.set_trace() + for nk, ok in self.LEGACY_MAPPING.items(): + if not isinstance(nk, tuple): + if nk in nmd: + result[ok] = nmd[nk] + else: + d = nmd + found = True + for k in nk: + try: + d = d[k] + except (KeyError, IndexError): + found = False + break + if found: + result[ok] = d + r1 = process_entries(self.run_requires + self.meta_requires) + r2 = process_entries(self.build_requires + self.dev_requires) + if self.extras: + result['Provides-Extra'] = sorted(self.extras) + result['Requires-Dist'] = sorted(r1) + result['Setup-Requires-Dist'] = sorted(r2) + # TODO: any other fields wanted + return result + + def write(self, path=None, fileobj=None, legacy=False, skip_unknown=True): + if [path, fileobj].count(None) != 1: + raise ValueError('Exactly one of path and fileobj is needed') + self.validate() + if legacy: + if self._legacy: + legacy_md = self._legacy + else: + legacy_md = self._to_legacy() + if path: + legacy_md.write(path, skip_unknown=skip_unknown) + else: + legacy_md.write_file(fileobj, skip_unknown=skip_unknown) + else: + if self._legacy: + d = self._from_legacy() + else: + d = self._data + if fileobj: + json.dump(d, fileobj, ensure_ascii=True, indent=2, + sort_keys=True) + else: + with codecs.open(path, 'w', 'utf-8') as f: + json.dump(d, f, ensure_ascii=True, indent=2, + sort_keys=True) + + def add_requirements(self, requirements): + if self._legacy: + self._legacy.add_requirements(requirements) + else: + run_requires = self._data.setdefault('run_requires', []) + always = None + for entry in run_requires: + if 'environment' not in entry and 'extra' not in entry: + always = entry + break + if always is None: + always = { 'requires': requirements } + run_requires.insert(0, always) + else: + rset = set(always['requires']) | set(requirements) + always['requires'] = sorted(rset) + + def __repr__(self): + name = self.name or '(no name)' + version = self.version or 'no version' + return '<%s %s %s (%s)>' % (self.__class__.__name__, + self.metadata_version, name, version) diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/resources.py b/venv/Lib/site-packages/pip/_vendor/distlib/resources.py new file mode 100644 index 00000000000..fef52aa103e --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/resources.py @@ -0,0 +1,358 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2017 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import unicode_literals + +import bisect +import io +import logging +import os +import pkgutil +import sys +import types +import zipimport + +from . import DistlibException +from .util import cached_property, get_cache_base, Cache + +logger = logging.getLogger(__name__) + + +cache = None # created when needed + + +class ResourceCache(Cache): + def __init__(self, base=None): + if base is None: + # Use native string to avoid issues on 2.x: see Python #20140. + base = os.path.join(get_cache_base(), str('resource-cache')) + super(ResourceCache, self).__init__(base) + + def is_stale(self, resource, path): + """ + Is the cache stale for the given resource? + + :param resource: The :class:`Resource` being cached. + :param path: The path of the resource in the cache. + :return: True if the cache is stale. + """ + # Cache invalidation is a hard problem :-) + return True + + def get(self, resource): + """ + Get a resource into the cache, + + :param resource: A :class:`Resource` instance. + :return: The pathname of the resource in the cache. + """ + prefix, path = resource.finder.get_cache_info(resource) + if prefix is None: + result = path + else: + result = os.path.join(self.base, self.prefix_to_dir(prefix), path) + dirname = os.path.dirname(result) + if not os.path.isdir(dirname): + os.makedirs(dirname) + if not os.path.exists(result): + stale = True + else: + stale = self.is_stale(resource, path) + if stale: + # write the bytes of the resource to the cache location + with open(result, 'wb') as f: + f.write(resource.bytes) + return result + + +class ResourceBase(object): + def __init__(self, finder, name): + self.finder = finder + self.name = name + + +class Resource(ResourceBase): + """ + A class representing an in-package resource, such as a data file. This is + not normally instantiated by user code, but rather by a + :class:`ResourceFinder` which manages the resource. + """ + is_container = False # Backwards compatibility + + def as_stream(self): + """ + Get the resource as a stream. + + This is not a property to make it obvious that it returns a new stream + each time. + """ + return self.finder.get_stream(self) + + @cached_property + def file_path(self): + global cache + if cache is None: + cache = ResourceCache() + return cache.get(self) + + @cached_property + def bytes(self): + return self.finder.get_bytes(self) + + @cached_property + def size(self): + return self.finder.get_size(self) + + +class ResourceContainer(ResourceBase): + is_container = True # Backwards compatibility + + @cached_property + def resources(self): + return self.finder.get_resources(self) + + +class ResourceFinder(object): + """ + Resource finder for file system resources. + """ + + if sys.platform.startswith('java'): + skipped_extensions = ('.pyc', '.pyo', '.class') + else: + skipped_extensions = ('.pyc', '.pyo') + + def __init__(self, module): + self.module = module + self.loader = getattr(module, '__loader__', None) + self.base = os.path.dirname(getattr(module, '__file__', '')) + + def _adjust_path(self, path): + return os.path.realpath(path) + + def _make_path(self, resource_name): + # Issue #50: need to preserve type of path on Python 2.x + # like os.path._get_sep + if isinstance(resource_name, bytes): # should only happen on 2.x + sep = b'/' + else: + sep = '/' + parts = resource_name.split(sep) + parts.insert(0, self.base) + result = os.path.join(*parts) + return self._adjust_path(result) + + def _find(self, path): + return os.path.exists(path) + + def get_cache_info(self, resource): + return None, resource.path + + def find(self, resource_name): + path = self._make_path(resource_name) + if not self._find(path): + result = None + else: + if self._is_directory(path): + result = ResourceContainer(self, resource_name) + else: + result = Resource(self, resource_name) + result.path = path + return result + + def get_stream(self, resource): + return open(resource.path, 'rb') + + def get_bytes(self, resource): + with open(resource.path, 'rb') as f: + return f.read() + + def get_size(self, resource): + return os.path.getsize(resource.path) + + def get_resources(self, resource): + def allowed(f): + return (f != '__pycache__' and not + f.endswith(self.skipped_extensions)) + return set([f for f in os.listdir(resource.path) if allowed(f)]) + + def is_container(self, resource): + return self._is_directory(resource.path) + + _is_directory = staticmethod(os.path.isdir) + + def iterator(self, resource_name): + resource = self.find(resource_name) + if resource is not None: + todo = [resource] + while todo: + resource = todo.pop(0) + yield resource + if resource.is_container: + rname = resource.name + for name in resource.resources: + if not rname: + new_name = name + else: + new_name = '/'.join([rname, name]) + child = self.find(new_name) + if child.is_container: + todo.append(child) + else: + yield child + + +class ZipResourceFinder(ResourceFinder): + """ + Resource finder for resources in .zip files. + """ + def __init__(self, module): + super(ZipResourceFinder, self).__init__(module) + archive = self.loader.archive + self.prefix_len = 1 + len(archive) + # PyPy doesn't have a _files attr on zipimporter, and you can't set one + if hasattr(self.loader, '_files'): + self._files = self.loader._files + else: + self._files = zipimport._zip_directory_cache[archive] + self.index = sorted(self._files) + + def _adjust_path(self, path): + return path + + def _find(self, path): + path = path[self.prefix_len:] + if path in self._files: + result = True + else: + if path and path[-1] != os.sep: + path = path + os.sep + i = bisect.bisect(self.index, path) + try: + result = self.index[i].startswith(path) + except IndexError: + result = False + if not result: + logger.debug('_find failed: %r %r', path, self.loader.prefix) + else: + logger.debug('_find worked: %r %r', path, self.loader.prefix) + return result + + def get_cache_info(self, resource): + prefix = self.loader.archive + path = resource.path[1 + len(prefix):] + return prefix, path + + def get_bytes(self, resource): + return self.loader.get_data(resource.path) + + def get_stream(self, resource): + return io.BytesIO(self.get_bytes(resource)) + + def get_size(self, resource): + path = resource.path[self.prefix_len:] + return self._files[path][3] + + def get_resources(self, resource): + path = resource.path[self.prefix_len:] + if path and path[-1] != os.sep: + path += os.sep + plen = len(path) + result = set() + i = bisect.bisect(self.index, path) + while i < len(self.index): + if not self.index[i].startswith(path): + break + s = self.index[i][plen:] + result.add(s.split(os.sep, 1)[0]) # only immediate children + i += 1 + return result + + def _is_directory(self, path): + path = path[self.prefix_len:] + if path and path[-1] != os.sep: + path += os.sep + i = bisect.bisect(self.index, path) + try: + result = self.index[i].startswith(path) + except IndexError: + result = False + return result + + +_finder_registry = { + type(None): ResourceFinder, + zipimport.zipimporter: ZipResourceFinder +} + +try: + # In Python 3.6, _frozen_importlib -> _frozen_importlib_external + try: + import _frozen_importlib_external as _fi + except ImportError: + import _frozen_importlib as _fi + _finder_registry[_fi.SourceFileLoader] = ResourceFinder + _finder_registry[_fi.FileFinder] = ResourceFinder + # See issue #146 + _finder_registry[_fi.SourcelessFileLoader] = ResourceFinder + del _fi +except (ImportError, AttributeError): + pass + + +def register_finder(loader, finder_maker): + _finder_registry[type(loader)] = finder_maker + + +_finder_cache = {} + + +def finder(package): + """ + Return a resource finder for a package. + :param package: The name of the package. + :return: A :class:`ResourceFinder` instance for the package. + """ + if package in _finder_cache: + result = _finder_cache[package] + else: + if package not in sys.modules: + __import__(package) + module = sys.modules[package] + path = getattr(module, '__path__', None) + if path is None: + raise DistlibException('You cannot get a finder for a module, ' + 'only for a package') + loader = getattr(module, '__loader__', None) + finder_maker = _finder_registry.get(type(loader)) + if finder_maker is None: + raise DistlibException('Unable to locate finder for %r' % package) + result = finder_maker(module) + _finder_cache[package] = result + return result + + +_dummy_module = types.ModuleType(str('__dummy__')) + + +def finder_for_path(path): + """ + Return a resource finder for a path, which should represent a container. + + :param path: The path. + :return: A :class:`ResourceFinder` instance for the path. + """ + result = None + # calls any path hooks, gets importer into cache + pkgutil.get_importer(path) + loader = sys.path_importer_cache.get(path) + finder = _finder_registry.get(type(loader)) + if finder: + module = _dummy_module + module.__file__ = os.path.join(path, '') + module.__loader__ = loader + result = finder(module) + return result diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py b/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py new file mode 100644 index 00000000000..e16292b8330 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py @@ -0,0 +1,466 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2023 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from io import BytesIO +import logging +import os +import re +import struct +import sys +import time +from zipfile import ZipInfo + +from .compat import sysconfig, detect_encoding, ZipFile +from .resources import finder +from .util import (FileOperator, get_export_entry, convert_path, + get_executable, get_platform, in_venv) + +logger = logging.getLogger(__name__) + +_DEFAULT_MANIFEST = ''' + + + + + + + + + + + + +'''.strip() + +# check if Python is called on the first line with this expression +FIRST_LINE_RE = re.compile(b'^#!.*pythonw?[0-9.]*([ \t].*)?$') +SCRIPT_TEMPLATE = r'''# -*- coding: utf-8 -*- +import re +import sys +from %(module)s import %(import_name)s +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(%(func)s()) +''' + +# Pre-fetch the contents of all executable wrapper stubs. +# This is to address https://github.com/pypa/pip/issues/12666. +# When updating pip, we rename the old pip in place before installing the +# new version. If we try to fetch a wrapper *after* that rename, the finder +# machinery will be confused as the package is no longer available at the +# location where it was imported from. So we load everything into memory in +# advance. + +# Issue 31: don't hardcode an absolute package name, but +# determine it relative to the current package +distlib_package = __name__.rsplit('.', 1)[0] + +WRAPPERS = { + r.name: r.bytes + for r in finder(distlib_package).iterator("") + if r.name.endswith(".exe") +} + + +def enquote_executable(executable): + if ' ' in executable: + # make sure we quote only the executable in case of env + # for example /usr/bin/env "/dir with spaces/bin/jython" + # instead of "/usr/bin/env /dir with spaces/bin/jython" + # otherwise whole + if executable.startswith('/usr/bin/env '): + env, _executable = executable.split(' ', 1) + if ' ' in _executable and not _executable.startswith('"'): + executable = '%s "%s"' % (env, _executable) + else: + if not executable.startswith('"'): + executable = '"%s"' % executable + return executable + + +# Keep the old name around (for now), as there is at least one project using it! +_enquote_executable = enquote_executable + + +class ScriptMaker(object): + """ + A class to copy or create scripts from source scripts or callable + specifications. + """ + script_template = SCRIPT_TEMPLATE + + executable = None # for shebangs + + def __init__(self, + source_dir, + target_dir, + add_launchers=True, + dry_run=False, + fileop=None): + self.source_dir = source_dir + self.target_dir = target_dir + self.add_launchers = add_launchers + self.force = False + self.clobber = False + # It only makes sense to set mode bits on POSIX. + self.set_mode = (os.name == 'posix') or (os.name == 'java' + and os._name == 'posix') + self.variants = set(('', 'X.Y')) + self._fileop = fileop or FileOperator(dry_run) + + self._is_nt = os.name == 'nt' or (os.name == 'java' + and os._name == 'nt') + self.version_info = sys.version_info + + def _get_alternate_executable(self, executable, options): + if options.get('gui', False) and self._is_nt: # pragma: no cover + dn, fn = os.path.split(executable) + fn = fn.replace('python', 'pythonw') + executable = os.path.join(dn, fn) + return executable + + if sys.platform.startswith('java'): # pragma: no cover + + def _is_shell(self, executable): + """ + Determine if the specified executable is a script + (contains a #! line) + """ + try: + with open(executable) as fp: + return fp.read(2) == '#!' + except (OSError, IOError): + logger.warning('Failed to open %s', executable) + return False + + def _fix_jython_executable(self, executable): + if self._is_shell(executable): + # Workaround for Jython is not needed on Linux systems. + import java + + if java.lang.System.getProperty('os.name') == 'Linux': + return executable + elif executable.lower().endswith('jython.exe'): + # Use wrapper exe for Jython on Windows + return executable + return '/usr/bin/env %s' % executable + + def _build_shebang(self, executable, post_interp): + """ + Build a shebang line. In the simple case (on Windows, or a shebang line + which is not too long or contains spaces) use a simple formulation for + the shebang. Otherwise, use /bin/sh as the executable, with a contrived + shebang which allows the script to run either under Python or sh, using + suitable quoting. Thanks to Harald Nordgren for his input. + + See also: http://www.in-ulm.de/~mascheck/various/shebang/#length + https://hg.mozilla.org/mozilla-central/file/tip/mach + """ + if os.name != 'posix': + simple_shebang = True + else: + # Add 3 for '#!' prefix and newline suffix. + shebang_length = len(executable) + len(post_interp) + 3 + if sys.platform == 'darwin': + max_shebang_length = 512 + else: + max_shebang_length = 127 + simple_shebang = ((b' ' not in executable) + and (shebang_length <= max_shebang_length)) + + if simple_shebang: + result = b'#!' + executable + post_interp + b'\n' + else: + result = b'#!/bin/sh\n' + result += b"'''exec' " + executable + post_interp + b' "$0" "$@"\n' + result += b"' '''" + return result + + def _get_shebang(self, encoding, post_interp=b'', options=None): + enquote = True + if self.executable: + executable = self.executable + enquote = False # assume this will be taken care of + elif not sysconfig.is_python_build(): + executable = get_executable() + elif in_venv(): # pragma: no cover + executable = os.path.join( + sysconfig.get_path('scripts'), + 'python%s' % sysconfig.get_config_var('EXE')) + else: # pragma: no cover + if os.name == 'nt': + # for Python builds from source on Windows, no Python executables with + # a version suffix are created, so we use python.exe + executable = os.path.join( + sysconfig.get_config_var('BINDIR'), + 'python%s' % (sysconfig.get_config_var('EXE'))) + else: + executable = os.path.join( + sysconfig.get_config_var('BINDIR'), + 'python%s%s' % (sysconfig.get_config_var('VERSION'), + sysconfig.get_config_var('EXE'))) + if options: + executable = self._get_alternate_executable(executable, options) + + if sys.platform.startswith('java'): # pragma: no cover + executable = self._fix_jython_executable(executable) + + # Normalise case for Windows - COMMENTED OUT + # executable = os.path.normcase(executable) + # N.B. The normalising operation above has been commented out: See + # issue #124. Although paths in Windows are generally case-insensitive, + # they aren't always. For example, a path containing a ẞ (which is a + # LATIN CAPITAL LETTER SHARP S - U+1E9E) is normcased to ß (which is a + # LATIN SMALL LETTER SHARP S' - U+00DF). The two are not considered by + # Windows as equivalent in path names. + + # If the user didn't specify an executable, it may be necessary to + # cater for executable paths with spaces (not uncommon on Windows) + if enquote: + executable = enquote_executable(executable) + # Issue #51: don't use fsencode, since we later try to + # check that the shebang is decodable using utf-8. + executable = executable.encode('utf-8') + # in case of IronPython, play safe and enable frames support + if (sys.platform == 'cli' and '-X:Frames' not in post_interp + and '-X:FullFrames' not in post_interp): # pragma: no cover + post_interp += b' -X:Frames' + shebang = self._build_shebang(executable, post_interp) + # Python parser starts to read a script using UTF-8 until + # it gets a #coding:xxx cookie. The shebang has to be the + # first line of a file, the #coding:xxx cookie cannot be + # written before. So the shebang has to be decodable from + # UTF-8. + try: + shebang.decode('utf-8') + except UnicodeDecodeError: # pragma: no cover + raise ValueError('The shebang (%r) is not decodable from utf-8' % + shebang) + # If the script is encoded to a custom encoding (use a + # #coding:xxx cookie), the shebang has to be decodable from + # the script encoding too. + if encoding != 'utf-8': + try: + shebang.decode(encoding) + except UnicodeDecodeError: # pragma: no cover + raise ValueError('The shebang (%r) is not decodable ' + 'from the script encoding (%r)' % + (shebang, encoding)) + return shebang + + def _get_script_text(self, entry): + return self.script_template % dict( + module=entry.prefix, + import_name=entry.suffix.split('.')[0], + func=entry.suffix) + + manifest = _DEFAULT_MANIFEST + + def get_manifest(self, exename): + base = os.path.basename(exename) + return self.manifest % base + + def _write_script(self, names, shebang, script_bytes, filenames, ext): + use_launcher = self.add_launchers and self._is_nt + linesep = os.linesep.encode('utf-8') + if not shebang.endswith(linesep): + shebang += linesep + if not use_launcher: + script_bytes = shebang + script_bytes + else: # pragma: no cover + if ext == 'py': + launcher = self._get_launcher('t') + else: + launcher = self._get_launcher('w') + stream = BytesIO() + with ZipFile(stream, 'w') as zf: + source_date_epoch = os.environ.get('SOURCE_DATE_EPOCH') + if source_date_epoch: + date_time = time.gmtime(int(source_date_epoch))[:6] + zinfo = ZipInfo(filename='__main__.py', + date_time=date_time) + zf.writestr(zinfo, script_bytes) + else: + zf.writestr('__main__.py', script_bytes) + zip_data = stream.getvalue() + script_bytes = launcher + shebang + zip_data + for name in names: + outname = os.path.join(self.target_dir, name) + if use_launcher: # pragma: no cover + n, e = os.path.splitext(outname) + if e.startswith('.py'): + outname = n + outname = '%s.exe' % outname + try: + self._fileop.write_binary_file(outname, script_bytes) + except Exception: + # Failed writing an executable - it might be in use. + logger.warning('Failed to write executable - trying to ' + 'use .deleteme logic') + dfname = '%s.deleteme' % outname + if os.path.exists(dfname): + os.remove(dfname) # Not allowed to fail here + os.rename(outname, dfname) # nor here + self._fileop.write_binary_file(outname, script_bytes) + logger.debug('Able to replace executable using ' + '.deleteme logic') + try: + os.remove(dfname) + except Exception: + pass # still in use - ignore error + else: + if self._is_nt and not outname.endswith( + '.' + ext): # pragma: no cover + outname = '%s.%s' % (outname, ext) + if os.path.exists(outname) and not self.clobber: + logger.warning('Skipping existing file %s', outname) + continue + self._fileop.write_binary_file(outname, script_bytes) + if self.set_mode: + self._fileop.set_executable_mode([outname]) + filenames.append(outname) + + variant_separator = '-' + + def get_script_filenames(self, name): + result = set() + if '' in self.variants: + result.add(name) + if 'X' in self.variants: + result.add('%s%s' % (name, self.version_info[0])) + if 'X.Y' in self.variants: + result.add('%s%s%s.%s' % + (name, self.variant_separator, self.version_info[0], + self.version_info[1])) + return result + + def _make_script(self, entry, filenames, options=None): + post_interp = b'' + if options: + args = options.get('interpreter_args', []) + if args: + args = ' %s' % ' '.join(args) + post_interp = args.encode('utf-8') + shebang = self._get_shebang('utf-8', post_interp, options=options) + script = self._get_script_text(entry).encode('utf-8') + scriptnames = self.get_script_filenames(entry.name) + if options and options.get('gui', False): + ext = 'pyw' + else: + ext = 'py' + self._write_script(scriptnames, shebang, script, filenames, ext) + + def _copy_script(self, script, filenames): + adjust = False + script = os.path.join(self.source_dir, convert_path(script)) + outname = os.path.join(self.target_dir, os.path.basename(script)) + if not self.force and not self._fileop.newer(script, outname): + logger.debug('not copying %s (up-to-date)', script) + return + + # Always open the file, but ignore failures in dry-run mode -- + # that way, we'll get accurate feedback if we can read the + # script. + try: + f = open(script, 'rb') + except IOError: # pragma: no cover + if not self.dry_run: + raise + f = None + else: + first_line = f.readline() + if not first_line: # pragma: no cover + logger.warning('%s is an empty file (skipping)', script) + return + + match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n')) + if match: + adjust = True + post_interp = match.group(1) or b'' + + if not adjust: + if f: + f.close() + self._fileop.copy_file(script, outname) + if self.set_mode: + self._fileop.set_executable_mode([outname]) + filenames.append(outname) + else: + logger.info('copying and adjusting %s -> %s', script, + self.target_dir) + if not self._fileop.dry_run: + encoding, lines = detect_encoding(f.readline) + f.seek(0) + shebang = self._get_shebang(encoding, post_interp) + if b'pythonw' in first_line: # pragma: no cover + ext = 'pyw' + else: + ext = 'py' + n = os.path.basename(outname) + self._write_script([n], shebang, f.read(), filenames, ext) + if f: + f.close() + + @property + def dry_run(self): + return self._fileop.dry_run + + @dry_run.setter + def dry_run(self, value): + self._fileop.dry_run = value + + if os.name == 'nt' or (os.name == 'java' + and os._name == 'nt'): # pragma: no cover + # Executable launcher support. + # Launchers are from https://bitbucket.org/vinay.sajip/simple_launcher/ + + def _get_launcher(self, kind): + if struct.calcsize('P') == 8: # 64-bit + bits = '64' + else: + bits = '32' + platform_suffix = '-arm' if get_platform() == 'win-arm64' else '' + name = '%s%s%s.exe' % (kind, bits, platform_suffix) + if name not in WRAPPERS: + msg = ('Unable to find resource %s in package %s' % + (name, distlib_package)) + raise ValueError(msg) + return WRAPPERS[name] + + # Public API follows + + def make(self, specification, options=None): + """ + Make a script. + + :param specification: The specification, which is either a valid export + entry specification (to make a script from a + callable) or a filename (to make a script by + copying from a source location). + :param options: A dictionary of options controlling script generation. + :return: A list of all absolute pathnames written to. + """ + filenames = [] + entry = get_export_entry(specification) + if entry is None: + self._copy_script(specification, filenames) + else: + self._make_script(entry, filenames, options=options) + return filenames + + def make_multiple(self, specifications, options=None): + """ + Take a list of specifications and make scripts from them, + :param specifications: A list of specifications. + :return: A list of all absolute pathnames written to, + """ + filenames = [] + for specification in specifications: + filenames.extend(self.make(specification, options)) + return filenames diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/t32.exe b/venv/Lib/site-packages/pip/_vendor/distlib/t32.exe new file mode 100644 index 00000000000..52154f0be32 Binary files /dev/null and b/venv/Lib/site-packages/pip/_vendor/distlib/t32.exe differ diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe b/venv/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe new file mode 100644 index 00000000000..e1ab8f8f589 Binary files /dev/null and b/venv/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe differ diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/t64.exe b/venv/Lib/site-packages/pip/_vendor/distlib/t64.exe new file mode 100644 index 00000000000..e8bebdba6d8 Binary files /dev/null and b/venv/Lib/site-packages/pip/_vendor/distlib/t64.exe differ diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/util.py b/venv/Lib/site-packages/pip/_vendor/distlib/util.py new file mode 100644 index 00000000000..ba58858d0fb --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/util.py @@ -0,0 +1,2025 @@ +# +# Copyright (C) 2012-2023 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import codecs +from collections import deque +import contextlib +import csv +from glob import iglob as std_iglob +import io +import json +import logging +import os +import py_compile +import re +import socket +try: + import ssl +except ImportError: # pragma: no cover + ssl = None +import subprocess +import sys +import tarfile +import tempfile +import textwrap + +try: + import threading +except ImportError: # pragma: no cover + import dummy_threading as threading +import time + +from . import DistlibException +from .compat import (string_types, text_type, shutil, raw_input, StringIO, + cache_from_source, urlopen, urljoin, httplib, xmlrpclib, + HTTPHandler, BaseConfigurator, valid_ident, + Container, configparser, URLError, ZipFile, fsdecode, + unquote, urlparse) + +logger = logging.getLogger(__name__) + +# +# Requirement parsing code as per PEP 508 +# + +IDENTIFIER = re.compile(r'^([\w\.-]+)\s*') +VERSION_IDENTIFIER = re.compile(r'^([\w\.*+-]+)\s*') +COMPARE_OP = re.compile(r'^(<=?|>=?|={2,3}|[~!]=)\s*') +MARKER_OP = re.compile(r'^((<=?)|(>=?)|={2,3}|[~!]=|in|not\s+in)\s*') +OR = re.compile(r'^or\b\s*') +AND = re.compile(r'^and\b\s*') +NON_SPACE = re.compile(r'(\S+)\s*') +STRING_CHUNK = re.compile(r'([\s\w\.{}()*+#:;,/?!~`@$%^&=|<>\[\]-]+)') + + +def parse_marker(marker_string): + """ + Parse a marker string and return a dictionary containing a marker expression. + + The dictionary will contain keys "op", "lhs" and "rhs" for non-terminals in + the expression grammar, or strings. A string contained in quotes is to be + interpreted as a literal string, and a string not contained in quotes is a + variable (such as os_name). + """ + + def marker_var(remaining): + # either identifier, or literal string + m = IDENTIFIER.match(remaining) + if m: + result = m.groups()[0] + remaining = remaining[m.end():] + elif not remaining: + raise SyntaxError('unexpected end of input') + else: + q = remaining[0] + if q not in '\'"': + raise SyntaxError('invalid expression: %s' % remaining) + oq = '\'"'.replace(q, '') + remaining = remaining[1:] + parts = [q] + while remaining: + # either a string chunk, or oq, or q to terminate + if remaining[0] == q: + break + elif remaining[0] == oq: + parts.append(oq) + remaining = remaining[1:] + else: + m = STRING_CHUNK.match(remaining) + if not m: + raise SyntaxError('error in string literal: %s' % + remaining) + parts.append(m.groups()[0]) + remaining = remaining[m.end():] + else: + s = ''.join(parts) + raise SyntaxError('unterminated string: %s' % s) + parts.append(q) + result = ''.join(parts) + remaining = remaining[1:].lstrip() # skip past closing quote + return result, remaining + + def marker_expr(remaining): + if remaining and remaining[0] == '(': + result, remaining = marker(remaining[1:].lstrip()) + if remaining[0] != ')': + raise SyntaxError('unterminated parenthesis: %s' % remaining) + remaining = remaining[1:].lstrip() + else: + lhs, remaining = marker_var(remaining) + while remaining: + m = MARKER_OP.match(remaining) + if not m: + break + op = m.groups()[0] + remaining = remaining[m.end():] + rhs, remaining = marker_var(remaining) + lhs = {'op': op, 'lhs': lhs, 'rhs': rhs} + result = lhs + return result, remaining + + def marker_and(remaining): + lhs, remaining = marker_expr(remaining) + while remaining: + m = AND.match(remaining) + if not m: + break + remaining = remaining[m.end():] + rhs, remaining = marker_expr(remaining) + lhs = {'op': 'and', 'lhs': lhs, 'rhs': rhs} + return lhs, remaining + + def marker(remaining): + lhs, remaining = marker_and(remaining) + while remaining: + m = OR.match(remaining) + if not m: + break + remaining = remaining[m.end():] + rhs, remaining = marker_and(remaining) + lhs = {'op': 'or', 'lhs': lhs, 'rhs': rhs} + return lhs, remaining + + return marker(marker_string) + + +def parse_requirement(req): + """ + Parse a requirement passed in as a string. Return a Container + whose attributes contain the various parts of the requirement. + """ + remaining = req.strip() + if not remaining or remaining.startswith('#'): + return None + m = IDENTIFIER.match(remaining) + if not m: + raise SyntaxError('name expected: %s' % remaining) + distname = m.groups()[0] + remaining = remaining[m.end():] + extras = mark_expr = versions = uri = None + if remaining and remaining[0] == '[': + i = remaining.find(']', 1) + if i < 0: + raise SyntaxError('unterminated extra: %s' % remaining) + s = remaining[1:i] + remaining = remaining[i + 1:].lstrip() + extras = [] + while s: + m = IDENTIFIER.match(s) + if not m: + raise SyntaxError('malformed extra: %s' % s) + extras.append(m.groups()[0]) + s = s[m.end():] + if not s: + break + if s[0] != ',': + raise SyntaxError('comma expected in extras: %s' % s) + s = s[1:].lstrip() + if not extras: + extras = None + if remaining: + if remaining[0] == '@': + # it's a URI + remaining = remaining[1:].lstrip() + m = NON_SPACE.match(remaining) + if not m: + raise SyntaxError('invalid URI: %s' % remaining) + uri = m.groups()[0] + t = urlparse(uri) + # there are issues with Python and URL parsing, so this test + # is a bit crude. See bpo-20271, bpo-23505. Python doesn't + # always parse invalid URLs correctly - it should raise + # exceptions for malformed URLs + if not (t.scheme and t.netloc): + raise SyntaxError('Invalid URL: %s' % uri) + remaining = remaining[m.end():].lstrip() + else: + + def get_versions(ver_remaining): + """ + Return a list of operator, version tuples if any are + specified, else None. + """ + m = COMPARE_OP.match(ver_remaining) + versions = None + if m: + versions = [] + while True: + op = m.groups()[0] + ver_remaining = ver_remaining[m.end():] + m = VERSION_IDENTIFIER.match(ver_remaining) + if not m: + raise SyntaxError('invalid version: %s' % + ver_remaining) + v = m.groups()[0] + versions.append((op, v)) + ver_remaining = ver_remaining[m.end():] + if not ver_remaining or ver_remaining[0] != ',': + break + ver_remaining = ver_remaining[1:].lstrip() + # Some packages have a trailing comma which would break things + # See issue #148 + if not ver_remaining: + break + m = COMPARE_OP.match(ver_remaining) + if not m: + raise SyntaxError('invalid constraint: %s' % + ver_remaining) + if not versions: + versions = None + return versions, ver_remaining + + if remaining[0] != '(': + versions, remaining = get_versions(remaining) + else: + i = remaining.find(')', 1) + if i < 0: + raise SyntaxError('unterminated parenthesis: %s' % + remaining) + s = remaining[1:i] + remaining = remaining[i + 1:].lstrip() + # As a special diversion from PEP 508, allow a version number + # a.b.c in parentheses as a synonym for ~= a.b.c (because this + # is allowed in earlier PEPs) + if COMPARE_OP.match(s): + versions, _ = get_versions(s) + else: + m = VERSION_IDENTIFIER.match(s) + if not m: + raise SyntaxError('invalid constraint: %s' % s) + v = m.groups()[0] + s = s[m.end():].lstrip() + if s: + raise SyntaxError('invalid constraint: %s' % s) + versions = [('~=', v)] + + if remaining: + if remaining[0] != ';': + raise SyntaxError('invalid requirement: %s' % remaining) + remaining = remaining[1:].lstrip() + + mark_expr, remaining = parse_marker(remaining) + + if remaining and remaining[0] != '#': + raise SyntaxError('unexpected trailing data: %s' % remaining) + + if not versions: + rs = distname + else: + rs = '%s %s' % (distname, ', '.join( + ['%s %s' % con for con in versions])) + return Container(name=distname, + extras=extras, + constraints=versions, + marker=mark_expr, + url=uri, + requirement=rs) + + +def get_resources_dests(resources_root, rules): + """Find destinations for resources files""" + + def get_rel_path(root, path): + # normalizes and returns a lstripped-/-separated path + root = root.replace(os.path.sep, '/') + path = path.replace(os.path.sep, '/') + assert path.startswith(root) + return path[len(root):].lstrip('/') + + destinations = {} + for base, suffix, dest in rules: + prefix = os.path.join(resources_root, base) + for abs_base in iglob(prefix): + abs_glob = os.path.join(abs_base, suffix) + for abs_path in iglob(abs_glob): + resource_file = get_rel_path(resources_root, abs_path) + if dest is None: # remove the entry if it was here + destinations.pop(resource_file, None) + else: + rel_path = get_rel_path(abs_base, abs_path) + rel_dest = dest.replace(os.path.sep, '/').rstrip('/') + destinations[resource_file] = rel_dest + '/' + rel_path + return destinations + + +def in_venv(): + if hasattr(sys, 'real_prefix'): + # virtualenv venvs + result = True + else: + # PEP 405 venvs + result = sys.prefix != getattr(sys, 'base_prefix', sys.prefix) + return result + + +def get_executable(): + # The __PYVENV_LAUNCHER__ dance is apparently no longer needed, as + # changes to the stub launcher mean that sys.executable always points + # to the stub on OS X + # if sys.platform == 'darwin' and ('__PYVENV_LAUNCHER__' + # in os.environ): + # result = os.environ['__PYVENV_LAUNCHER__'] + # else: + # result = sys.executable + # return result + # Avoid normcasing: see issue #143 + # result = os.path.normcase(sys.executable) + result = sys.executable + if not isinstance(result, text_type): + result = fsdecode(result) + return result + + +def proceed(prompt, allowed_chars, error_prompt=None, default=None): + p = prompt + while True: + s = raw_input(p) + p = prompt + if not s and default: + s = default + if s: + c = s[0].lower() + if c in allowed_chars: + break + if error_prompt: + p = '%c: %s\n%s' % (c, error_prompt, prompt) + return c + + +def extract_by_key(d, keys): + if isinstance(keys, string_types): + keys = keys.split() + result = {} + for key in keys: + if key in d: + result[key] = d[key] + return result + + +def read_exports(stream): + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getreader('utf-8')(stream) + # Try to load as JSON, falling back on legacy format + data = stream.read() + stream = StringIO(data) + try: + jdata = json.load(stream) + result = jdata['extensions']['python.exports']['exports'] + for group, entries in result.items(): + for k, v in entries.items(): + s = '%s = %s' % (k, v) + entry = get_export_entry(s) + assert entry is not None + entries[k] = entry + return result + except Exception: + stream.seek(0, 0) + + def read_stream(cp, stream): + if hasattr(cp, 'read_file'): + cp.read_file(stream) + else: + cp.readfp(stream) + + cp = configparser.ConfigParser() + try: + read_stream(cp, stream) + except configparser.MissingSectionHeaderError: + stream.close() + data = textwrap.dedent(data) + stream = StringIO(data) + read_stream(cp, stream) + + result = {} + for key in cp.sections(): + result[key] = entries = {} + for name, value in cp.items(key): + s = '%s = %s' % (name, value) + entry = get_export_entry(s) + assert entry is not None + # entry.dist = self + entries[name] = entry + return result + + +def write_exports(exports, stream): + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getwriter('utf-8')(stream) + cp = configparser.ConfigParser() + for k, v in exports.items(): + # TODO check k, v for valid values + cp.add_section(k) + for entry in v.values(): + if entry.suffix is None: + s = entry.prefix + else: + s = '%s:%s' % (entry.prefix, entry.suffix) + if entry.flags: + s = '%s [%s]' % (s, ', '.join(entry.flags)) + cp.set(k, entry.name, s) + cp.write(stream) + + +@contextlib.contextmanager +def tempdir(): + td = tempfile.mkdtemp() + try: + yield td + finally: + shutil.rmtree(td) + + +@contextlib.contextmanager +def chdir(d): + cwd = os.getcwd() + try: + os.chdir(d) + yield + finally: + os.chdir(cwd) + + +@contextlib.contextmanager +def socket_timeout(seconds=15): + cto = socket.getdefaulttimeout() + try: + socket.setdefaulttimeout(seconds) + yield + finally: + socket.setdefaulttimeout(cto) + + +class cached_property(object): + + def __init__(self, func): + self.func = func + # for attr in ('__name__', '__module__', '__doc__'): + # setattr(self, attr, getattr(func, attr, None)) + + def __get__(self, obj, cls=None): + if obj is None: + return self + value = self.func(obj) + object.__setattr__(obj, self.func.__name__, value) + # obj.__dict__[self.func.__name__] = value = self.func(obj) + return value + + +def convert_path(pathname): + """Return 'pathname' as a name that will work on the native filesystem. + + The path is split on '/' and put back together again using the current + directory separator. Needed because filenames in the setup script are + always supplied in Unix style, and have to be converted to the local + convention before we can actually use them in the filesystem. Raises + ValueError on non-Unix-ish systems if 'pathname' either starts or + ends with a slash. + """ + if os.sep == '/': + return pathname + if not pathname: + return pathname + if pathname[0] == '/': + raise ValueError("path '%s' cannot be absolute" % pathname) + if pathname[-1] == '/': + raise ValueError("path '%s' cannot end with '/'" % pathname) + + paths = pathname.split('/') + while os.curdir in paths: + paths.remove(os.curdir) + if not paths: + return os.curdir + return os.path.join(*paths) + + +class FileOperator(object): + + def __init__(self, dry_run=False): + self.dry_run = dry_run + self.ensured = set() + self._init_record() + + def _init_record(self): + self.record = False + self.files_written = set() + self.dirs_created = set() + + def record_as_written(self, path): + if self.record: + self.files_written.add(path) + + def newer(self, source, target): + """Tell if the target is newer than the source. + + Returns true if 'source' exists and is more recently modified than + 'target', or if 'source' exists and 'target' doesn't. + + Returns false if both exist and 'target' is the same age or younger + than 'source'. Raise PackagingFileError if 'source' does not exist. + + Note that this test is not very accurate: files created in the same + second will have the same "age". + """ + if not os.path.exists(source): + raise DistlibException("file '%r' does not exist" % + os.path.abspath(source)) + if not os.path.exists(target): + return True + + return os.stat(source).st_mtime > os.stat(target).st_mtime + + def copy_file(self, infile, outfile, check=True): + """Copy a file respecting dry-run and force flags. + """ + self.ensure_dir(os.path.dirname(outfile)) + logger.info('Copying %s to %s', infile, outfile) + if not self.dry_run: + msg = None + if check: + if os.path.islink(outfile): + msg = '%s is a symlink' % outfile + elif os.path.exists(outfile) and not os.path.isfile(outfile): + msg = '%s is a non-regular file' % outfile + if msg: + raise ValueError(msg + ' which would be overwritten') + shutil.copyfile(infile, outfile) + self.record_as_written(outfile) + + def copy_stream(self, instream, outfile, encoding=None): + assert not os.path.isdir(outfile) + self.ensure_dir(os.path.dirname(outfile)) + logger.info('Copying stream %s to %s', instream, outfile) + if not self.dry_run: + if encoding is None: + outstream = open(outfile, 'wb') + else: + outstream = codecs.open(outfile, 'w', encoding=encoding) + try: + shutil.copyfileobj(instream, outstream) + finally: + outstream.close() + self.record_as_written(outfile) + + def write_binary_file(self, path, data): + self.ensure_dir(os.path.dirname(path)) + if not self.dry_run: + if os.path.exists(path): + os.remove(path) + with open(path, 'wb') as f: + f.write(data) + self.record_as_written(path) + + def write_text_file(self, path, data, encoding): + self.write_binary_file(path, data.encode(encoding)) + + def set_mode(self, bits, mask, files): + if os.name == 'posix' or (os.name == 'java' and os._name == 'posix'): + # Set the executable bits (owner, group, and world) on + # all the files specified. + for f in files: + if self.dry_run: + logger.info("changing mode of %s", f) + else: + mode = (os.stat(f).st_mode | bits) & mask + logger.info("changing mode of %s to %o", f, mode) + os.chmod(f, mode) + + set_executable_mode = lambda s, f: s.set_mode(0o555, 0o7777, f) + + def ensure_dir(self, path): + path = os.path.abspath(path) + if path not in self.ensured and not os.path.exists(path): + self.ensured.add(path) + d, f = os.path.split(path) + self.ensure_dir(d) + logger.info('Creating %s' % path) + if not self.dry_run: + os.mkdir(path) + if self.record: + self.dirs_created.add(path) + + def byte_compile(self, + path, + optimize=False, + force=False, + prefix=None, + hashed_invalidation=False): + dpath = cache_from_source(path, not optimize) + logger.info('Byte-compiling %s to %s', path, dpath) + if not self.dry_run: + if force or self.newer(path, dpath): + if not prefix: + diagpath = None + else: + assert path.startswith(prefix) + diagpath = path[len(prefix):] + compile_kwargs = {} + if hashed_invalidation and hasattr(py_compile, + 'PycInvalidationMode'): + compile_kwargs[ + 'invalidation_mode'] = py_compile.PycInvalidationMode.CHECKED_HASH + py_compile.compile(path, dpath, diagpath, True, + **compile_kwargs) # raise error + self.record_as_written(dpath) + return dpath + + def ensure_removed(self, path): + if os.path.exists(path): + if os.path.isdir(path) and not os.path.islink(path): + logger.debug('Removing directory tree at %s', path) + if not self.dry_run: + shutil.rmtree(path) + if self.record: + if path in self.dirs_created: + self.dirs_created.remove(path) + else: + if os.path.islink(path): + s = 'link' + else: + s = 'file' + logger.debug('Removing %s %s', s, path) + if not self.dry_run: + os.remove(path) + if self.record: + if path in self.files_written: + self.files_written.remove(path) + + def is_writable(self, path): + result = False + while not result: + if os.path.exists(path): + result = os.access(path, os.W_OK) + break + parent = os.path.dirname(path) + if parent == path: + break + path = parent + return result + + def commit(self): + """ + Commit recorded changes, turn off recording, return + changes. + """ + assert self.record + result = self.files_written, self.dirs_created + self._init_record() + return result + + def rollback(self): + if not self.dry_run: + for f in list(self.files_written): + if os.path.exists(f): + os.remove(f) + # dirs should all be empty now, except perhaps for + # __pycache__ subdirs + # reverse so that subdirs appear before their parents + dirs = sorted(self.dirs_created, reverse=True) + for d in dirs: + flist = os.listdir(d) + if flist: + assert flist == ['__pycache__'] + sd = os.path.join(d, flist[0]) + os.rmdir(sd) + os.rmdir(d) # should fail if non-empty + self._init_record() + + +def resolve(module_name, dotted_path): + if module_name in sys.modules: + mod = sys.modules[module_name] + else: + mod = __import__(module_name) + if dotted_path is None: + result = mod + else: + parts = dotted_path.split('.') + result = getattr(mod, parts.pop(0)) + for p in parts: + result = getattr(result, p) + return result + + +class ExportEntry(object): + + def __init__(self, name, prefix, suffix, flags): + self.name = name + self.prefix = prefix + self.suffix = suffix + self.flags = flags + + @cached_property + def value(self): + return resolve(self.prefix, self.suffix) + + def __repr__(self): # pragma: no cover + return '' % (self.name, self.prefix, + self.suffix, self.flags) + + def __eq__(self, other): + if not isinstance(other, ExportEntry): + result = False + else: + result = (self.name == other.name and self.prefix == other.prefix + and self.suffix == other.suffix + and self.flags == other.flags) + return result + + __hash__ = object.__hash__ + + +ENTRY_RE = re.compile( + r'''(?P([^\[]\S*)) + \s*=\s*(?P(\w+)([:\.]\w+)*) + \s*(\[\s*(?P[\w-]+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])? + ''', re.VERBOSE) + + +def get_export_entry(specification): + m = ENTRY_RE.search(specification) + if not m: + result = None + if '[' in specification or ']' in specification: + raise DistlibException("Invalid specification " + "'%s'" % specification) + else: + d = m.groupdict() + name = d['name'] + path = d['callable'] + colons = path.count(':') + if colons == 0: + prefix, suffix = path, None + else: + if colons != 1: + raise DistlibException("Invalid specification " + "'%s'" % specification) + prefix, suffix = path.split(':') + flags = d['flags'] + if flags is None: + if '[' in specification or ']' in specification: + raise DistlibException("Invalid specification " + "'%s'" % specification) + flags = [] + else: + flags = [f.strip() for f in flags.split(',')] + result = ExportEntry(name, prefix, suffix, flags) + return result + + +def get_cache_base(suffix=None): + """ + Return the default base location for distlib caches. If the directory does + not exist, it is created. Use the suffix provided for the base directory, + and default to '.distlib' if it isn't provided. + + On Windows, if LOCALAPPDATA is defined in the environment, then it is + assumed to be a directory, and will be the parent directory of the result. + On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home + directory - using os.expanduser('~') - will be the parent directory of + the result. + + The result is just the directory '.distlib' in the parent directory as + determined above, or with the name specified with ``suffix``. + """ + if suffix is None: + suffix = '.distlib' + if os.name == 'nt' and 'LOCALAPPDATA' in os.environ: + result = os.path.expandvars('$localappdata') + else: + # Assume posix, or old Windows + result = os.path.expanduser('~') + # we use 'isdir' instead of 'exists', because we want to + # fail if there's a file with that name + if os.path.isdir(result): + usable = os.access(result, os.W_OK) + if not usable: + logger.warning('Directory exists but is not writable: %s', result) + else: + try: + os.makedirs(result) + usable = True + except OSError: + logger.warning('Unable to create %s', result, exc_info=True) + usable = False + if not usable: + result = tempfile.mkdtemp() + logger.warning('Default location unusable, using %s', result) + return os.path.join(result, suffix) + + +def path_to_cache_dir(path): + """ + Convert an absolute path to a directory name for use in a cache. + + The algorithm used is: + + #. On Windows, any ``':'`` in the drive is replaced with ``'---'``. + #. Any occurrence of ``os.sep`` is replaced with ``'--'``. + #. ``'.cache'`` is appended. + """ + d, p = os.path.splitdrive(os.path.abspath(path)) + if d: + d = d.replace(':', '---') + p = p.replace(os.sep, '--') + return d + p + '.cache' + + +def ensure_slash(s): + if not s.endswith('/'): + return s + '/' + return s + + +def parse_credentials(netloc): + username = password = None + if '@' in netloc: + prefix, netloc = netloc.rsplit('@', 1) + if ':' not in prefix: + username = prefix + else: + username, password = prefix.split(':', 1) + if username: + username = unquote(username) + if password: + password = unquote(password) + return username, password, netloc + + +def get_process_umask(): + result = os.umask(0o22) + os.umask(result) + return result + + +def is_string_sequence(seq): + result = True + i = None + for i, s in enumerate(seq): + if not isinstance(s, string_types): + result = False + break + assert i is not None + return result + + +PROJECT_NAME_AND_VERSION = re.compile( + '([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-' + '([a-z0-9_.+-]+)', re.I) +PYTHON_VERSION = re.compile(r'-py(\d\.?\d?)') + + +def split_filename(filename, project_name=None): + """ + Extract name, version, python version from a filename (no extension) + + Return name, version, pyver or None + """ + result = None + pyver = None + filename = unquote(filename).replace(' ', '-') + m = PYTHON_VERSION.search(filename) + if m: + pyver = m.group(1) + filename = filename[:m.start()] + if project_name and len(filename) > len(project_name) + 1: + m = re.match(re.escape(project_name) + r'\b', filename) + if m: + n = m.end() + result = filename[:n], filename[n + 1:], pyver + if result is None: + m = PROJECT_NAME_AND_VERSION.match(filename) + if m: + result = m.group(1), m.group(3), pyver + return result + + +# Allow spaces in name because of legacy dists like "Twisted Core" +NAME_VERSION_RE = re.compile(r'(?P[\w .-]+)\s*' + r'\(\s*(?P[^\s)]+)\)$') + + +def parse_name_and_version(p): + """ + A utility method used to get name and version from a string. + + From e.g. a Provides-Dist value. + + :param p: A value in a form 'foo (1.0)' + :return: The name and version as a tuple. + """ + m = NAME_VERSION_RE.match(p) + if not m: + raise DistlibException('Ill-formed name/version string: \'%s\'' % p) + d = m.groupdict() + return d['name'].strip().lower(), d['ver'] + + +def get_extras(requested, available): + result = set() + requested = set(requested or []) + available = set(available or []) + if '*' in requested: + requested.remove('*') + result |= available + for r in requested: + if r == '-': + result.add(r) + elif r.startswith('-'): + unwanted = r[1:] + if unwanted not in available: + logger.warning('undeclared extra: %s' % unwanted) + if unwanted in result: + result.remove(unwanted) + else: + if r not in available: + logger.warning('undeclared extra: %s' % r) + result.add(r) + return result + + +# +# Extended metadata functionality +# + + +def _get_external_data(url): + result = {} + try: + # urlopen might fail if it runs into redirections, + # because of Python issue #13696. Fixed in locators + # using a custom redirect handler. + resp = urlopen(url) + headers = resp.info() + ct = headers.get('Content-Type') + if not ct.startswith('application/json'): + logger.debug('Unexpected response for JSON request: %s', ct) + else: + reader = codecs.getreader('utf-8')(resp) + # data = reader.read().decode('utf-8') + # result = json.loads(data) + result = json.load(reader) + except Exception as e: + logger.exception('Failed to get external data for %s: %s', url, e) + return result + + +_external_data_base_url = 'https://www.red-dove.com/pypi/projects/' + + +def get_project_data(name): + url = '%s/%s/project.json' % (name[0].upper(), name) + url = urljoin(_external_data_base_url, url) + result = _get_external_data(url) + return result + + +def get_package_data(name, version): + url = '%s/%s/package-%s.json' % (name[0].upper(), name, version) + url = urljoin(_external_data_base_url, url) + return _get_external_data(url) + + +class Cache(object): + """ + A class implementing a cache for resources that need to live in the file system + e.g. shared libraries. This class was moved from resources to here because it + could be used by other modules, e.g. the wheel module. + """ + + def __init__(self, base): + """ + Initialise an instance. + + :param base: The base directory where the cache should be located. + """ + # we use 'isdir' instead of 'exists', because we want to + # fail if there's a file with that name + if not os.path.isdir(base): # pragma: no cover + os.makedirs(base) + if (os.stat(base).st_mode & 0o77) != 0: + logger.warning('Directory \'%s\' is not private', base) + self.base = os.path.abspath(os.path.normpath(base)) + + def prefix_to_dir(self, prefix): + """ + Converts a resource prefix to a directory name in the cache. + """ + return path_to_cache_dir(prefix) + + def clear(self): + """ + Clear the cache. + """ + not_removed = [] + for fn in os.listdir(self.base): + fn = os.path.join(self.base, fn) + try: + if os.path.islink(fn) or os.path.isfile(fn): + os.remove(fn) + elif os.path.isdir(fn): + shutil.rmtree(fn) + except Exception: + not_removed.append(fn) + return not_removed + + +class EventMixin(object): + """ + A very simple publish/subscribe system. + """ + + def __init__(self): + self._subscribers = {} + + def add(self, event, subscriber, append=True): + """ + Add a subscriber for an event. + + :param event: The name of an event. + :param subscriber: The subscriber to be added (and called when the + event is published). + :param append: Whether to append or prepend the subscriber to an + existing subscriber list for the event. + """ + subs = self._subscribers + if event not in subs: + subs[event] = deque([subscriber]) + else: + sq = subs[event] + if append: + sq.append(subscriber) + else: + sq.appendleft(subscriber) + + def remove(self, event, subscriber): + """ + Remove a subscriber for an event. + + :param event: The name of an event. + :param subscriber: The subscriber to be removed. + """ + subs = self._subscribers + if event not in subs: + raise ValueError('No subscribers: %r' % event) + subs[event].remove(subscriber) + + def get_subscribers(self, event): + """ + Return an iterator for the subscribers for an event. + :param event: The event to return subscribers for. + """ + return iter(self._subscribers.get(event, ())) + + def publish(self, event, *args, **kwargs): + """ + Publish a event and return a list of values returned by its + subscribers. + + :param event: The event to publish. + :param args: The positional arguments to pass to the event's + subscribers. + :param kwargs: The keyword arguments to pass to the event's + subscribers. + """ + result = [] + for subscriber in self.get_subscribers(event): + try: + value = subscriber(event, *args, **kwargs) + except Exception: + logger.exception('Exception during event publication') + value = None + result.append(value) + logger.debug('publish %s: args = %s, kwargs = %s, result = %s', event, + args, kwargs, result) + return result + + +# +# Simple sequencing +# +class Sequencer(object): + + def __init__(self): + self._preds = {} + self._succs = {} + self._nodes = set() # nodes with no preds/succs + + def add_node(self, node): + self._nodes.add(node) + + def remove_node(self, node, edges=False): + if node in self._nodes: + self._nodes.remove(node) + if edges: + for p in set(self._preds.get(node, ())): + self.remove(p, node) + for s in set(self._succs.get(node, ())): + self.remove(node, s) + # Remove empties + for k, v in list(self._preds.items()): + if not v: + del self._preds[k] + for k, v in list(self._succs.items()): + if not v: + del self._succs[k] + + def add(self, pred, succ): + assert pred != succ + self._preds.setdefault(succ, set()).add(pred) + self._succs.setdefault(pred, set()).add(succ) + + def remove(self, pred, succ): + assert pred != succ + try: + preds = self._preds[succ] + succs = self._succs[pred] + except KeyError: # pragma: no cover + raise ValueError('%r not a successor of anything' % succ) + try: + preds.remove(pred) + succs.remove(succ) + except KeyError: # pragma: no cover + raise ValueError('%r not a successor of %r' % (succ, pred)) + + def is_step(self, step): + return (step in self._preds or step in self._succs + or step in self._nodes) + + def get_steps(self, final): + if not self.is_step(final): + raise ValueError('Unknown: %r' % final) + result = [] + todo = [] + seen = set() + todo.append(final) + while todo: + step = todo.pop(0) + if step in seen: + # if a step was already seen, + # move it to the end (so it will appear earlier + # when reversed on return) ... but not for the + # final step, as that would be confusing for + # users + if step != final: + result.remove(step) + result.append(step) + else: + seen.add(step) + result.append(step) + preds = self._preds.get(step, ()) + todo.extend(preds) + return reversed(result) + + @property + def strong_connections(self): + # http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm + index_counter = [0] + stack = [] + lowlinks = {} + index = {} + result = [] + + graph = self._succs + + def strongconnect(node): + # set the depth index for this node to the smallest unused index + index[node] = index_counter[0] + lowlinks[node] = index_counter[0] + index_counter[0] += 1 + stack.append(node) + + # Consider successors + try: + successors = graph[node] + except Exception: + successors = [] + for successor in successors: + if successor not in lowlinks: + # Successor has not yet been visited + strongconnect(successor) + lowlinks[node] = min(lowlinks[node], lowlinks[successor]) + elif successor in stack: + # the successor is in the stack and hence in the current + # strongly connected component (SCC) + lowlinks[node] = min(lowlinks[node], index[successor]) + + # If `node` is a root node, pop the stack and generate an SCC + if lowlinks[node] == index[node]: + connected_component = [] + + while True: + successor = stack.pop() + connected_component.append(successor) + if successor == node: + break + component = tuple(connected_component) + # storing the result + result.append(component) + + for node in graph: + if node not in lowlinks: + strongconnect(node) + + return result + + @property + def dot(self): + result = ['digraph G {'] + for succ in self._preds: + preds = self._preds[succ] + for pred in preds: + result.append(' %s -> %s;' % (pred, succ)) + for node in self._nodes: + result.append(' %s;' % node) + result.append('}') + return '\n'.join(result) + + +# +# Unarchiving functionality for zip, tar, tgz, tbz, whl +# + +ARCHIVE_EXTENSIONS = ('.tar.gz', '.tar.bz2', '.tar', '.zip', '.tgz', '.tbz', + '.whl') + + +def unarchive(archive_filename, dest_dir, format=None, check=True): + + def check_path(path): + if not isinstance(path, text_type): + path = path.decode('utf-8') + p = os.path.abspath(os.path.join(dest_dir, path)) + if not p.startswith(dest_dir) or p[plen] != os.sep: + raise ValueError('path outside destination: %r' % p) + + dest_dir = os.path.abspath(dest_dir) + plen = len(dest_dir) + archive = None + if format is None: + if archive_filename.endswith(('.zip', '.whl')): + format = 'zip' + elif archive_filename.endswith(('.tar.gz', '.tgz')): + format = 'tgz' + mode = 'r:gz' + elif archive_filename.endswith(('.tar.bz2', '.tbz')): + format = 'tbz' + mode = 'r:bz2' + elif archive_filename.endswith('.tar'): + format = 'tar' + mode = 'r' + else: # pragma: no cover + raise ValueError('Unknown format for %r' % archive_filename) + try: + if format == 'zip': + archive = ZipFile(archive_filename, 'r') + if check: + names = archive.namelist() + for name in names: + check_path(name) + else: + archive = tarfile.open(archive_filename, mode) + if check: + names = archive.getnames() + for name in names: + check_path(name) + if format != 'zip' and sys.version_info[0] < 3: + # See Python issue 17153. If the dest path contains Unicode, + # tarfile extraction fails on Python 2.x if a member path name + # contains non-ASCII characters - it leads to an implicit + # bytes -> unicode conversion using ASCII to decode. + for tarinfo in archive.getmembers(): + if not isinstance(tarinfo.name, text_type): + tarinfo.name = tarinfo.name.decode('utf-8') + + # Limit extraction of dangerous items, if this Python + # allows it easily. If not, just trust the input. + # See: https://docs.python.org/3/library/tarfile.html#extraction-filters + def extraction_filter(member, path): + """Run tarfile.tar_filter, but raise the expected ValueError""" + # This is only called if the current Python has tarfile filters + try: + return tarfile.tar_filter(member, path) + except tarfile.FilterError as exc: + raise ValueError(str(exc)) + + archive.extraction_filter = extraction_filter + + archive.extractall(dest_dir) + + finally: + if archive: + archive.close() + + +def zip_dir(directory): + """zip a directory tree into a BytesIO object""" + result = io.BytesIO() + dlen = len(directory) + with ZipFile(result, "w") as zf: + for root, dirs, files in os.walk(directory): + for name in files: + full = os.path.join(root, name) + rel = root[dlen:] + dest = os.path.join(rel, name) + zf.write(full, dest) + return result + + +# +# Simple progress bar +# + +UNITS = ('', 'K', 'M', 'G', 'T', 'P') + + +class Progress(object): + unknown = 'UNKNOWN' + + def __init__(self, minval=0, maxval=100): + assert maxval is None or maxval >= minval + self.min = self.cur = minval + self.max = maxval + self.started = None + self.elapsed = 0 + self.done = False + + def update(self, curval): + assert self.min <= curval + assert self.max is None or curval <= self.max + self.cur = curval + now = time.time() + if self.started is None: + self.started = now + else: + self.elapsed = now - self.started + + def increment(self, incr): + assert incr >= 0 + self.update(self.cur + incr) + + def start(self): + self.update(self.min) + return self + + def stop(self): + if self.max is not None: + self.update(self.max) + self.done = True + + @property + def maximum(self): + return self.unknown if self.max is None else self.max + + @property + def percentage(self): + if self.done: + result = '100 %' + elif self.max is None: + result = ' ?? %' + else: + v = 100.0 * (self.cur - self.min) / (self.max - self.min) + result = '%3d %%' % v + return result + + def format_duration(self, duration): + if (duration <= 0) and self.max is None or self.cur == self.min: + result = '??:??:??' + # elif duration < 1: + # result = '--:--:--' + else: + result = time.strftime('%H:%M:%S', time.gmtime(duration)) + return result + + @property + def ETA(self): + if self.done: + prefix = 'Done' + t = self.elapsed + # import pdb; pdb.set_trace() + else: + prefix = 'ETA ' + if self.max is None: + t = -1 + elif self.elapsed == 0 or (self.cur == self.min): + t = 0 + else: + # import pdb; pdb.set_trace() + t = float(self.max - self.min) + t /= self.cur - self.min + t = (t - 1) * self.elapsed + return '%s: %s' % (prefix, self.format_duration(t)) + + @property + def speed(self): + if self.elapsed == 0: + result = 0.0 + else: + result = (self.cur - self.min) / self.elapsed + for unit in UNITS: + if result < 1000: + break + result /= 1000.0 + return '%d %sB/s' % (result, unit) + + +# +# Glob functionality +# + +RICH_GLOB = re.compile(r'\{([^}]*)\}') +_CHECK_RECURSIVE_GLOB = re.compile(r'[^/\\,{]\*\*|\*\*[^/\\,}]') +_CHECK_MISMATCH_SET = re.compile(r'^[^{]*\}|\{[^}]*$') + + +def iglob(path_glob): + """Extended globbing function that supports ** and {opt1,opt2,opt3}.""" + if _CHECK_RECURSIVE_GLOB.search(path_glob): + msg = """invalid glob %r: recursive glob "**" must be used alone""" + raise ValueError(msg % path_glob) + if _CHECK_MISMATCH_SET.search(path_glob): + msg = """invalid glob %r: mismatching set marker '{' or '}'""" + raise ValueError(msg % path_glob) + return _iglob(path_glob) + + +def _iglob(path_glob): + rich_path_glob = RICH_GLOB.split(path_glob, 1) + if len(rich_path_glob) > 1: + assert len(rich_path_glob) == 3, rich_path_glob + prefix, set, suffix = rich_path_glob + for item in set.split(','): + for path in _iglob(''.join((prefix, item, suffix))): + yield path + else: + if '**' not in path_glob: + for item in std_iglob(path_glob): + yield item + else: + prefix, radical = path_glob.split('**', 1) + if prefix == '': + prefix = '.' + if radical == '': + radical = '*' + else: + # we support both + radical = radical.lstrip('/') + radical = radical.lstrip('\\') + for path, dir, files in os.walk(prefix): + path = os.path.normpath(path) + for fn in _iglob(os.path.join(path, radical)): + yield fn + + +if ssl: + from .compat import (HTTPSHandler as BaseHTTPSHandler, match_hostname, + CertificateError) + + # + # HTTPSConnection which verifies certificates/matches domains + # + + class HTTPSConnection(httplib.HTTPSConnection): + ca_certs = None # set this to the path to the certs file (.pem) + check_domain = True # only used if ca_certs is not None + + # noinspection PyPropertyAccess + def connect(self): + sock = socket.create_connection((self.host, self.port), + self.timeout) + if getattr(self, '_tunnel_host', False): + self.sock = sock + self._tunnel() + + context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) + if hasattr(ssl, 'OP_NO_SSLv2'): + context.options |= ssl.OP_NO_SSLv2 + if getattr(self, 'cert_file', None): + context.load_cert_chain(self.cert_file, self.key_file) + kwargs = {} + if self.ca_certs: + context.verify_mode = ssl.CERT_REQUIRED + context.load_verify_locations(cafile=self.ca_certs) + if getattr(ssl, 'HAS_SNI', False): + kwargs['server_hostname'] = self.host + + self.sock = context.wrap_socket(sock, **kwargs) + if self.ca_certs and self.check_domain: + try: + match_hostname(self.sock.getpeercert(), self.host) + logger.debug('Host verified: %s', self.host) + except CertificateError: # pragma: no cover + self.sock.shutdown(socket.SHUT_RDWR) + self.sock.close() + raise + + class HTTPSHandler(BaseHTTPSHandler): + + def __init__(self, ca_certs, check_domain=True): + BaseHTTPSHandler.__init__(self) + self.ca_certs = ca_certs + self.check_domain = check_domain + + def _conn_maker(self, *args, **kwargs): + """ + This is called to create a connection instance. Normally you'd + pass a connection class to do_open, but it doesn't actually check for + a class, and just expects a callable. As long as we behave just as a + constructor would have, we should be OK. If it ever changes so that + we *must* pass a class, we'll create an UnsafeHTTPSConnection class + which just sets check_domain to False in the class definition, and + choose which one to pass to do_open. + """ + result = HTTPSConnection(*args, **kwargs) + if self.ca_certs: + result.ca_certs = self.ca_certs + result.check_domain = self.check_domain + return result + + def https_open(self, req): + try: + return self.do_open(self._conn_maker, req) + except URLError as e: + if 'certificate verify failed' in str(e.reason): + raise CertificateError( + 'Unable to verify server certificate ' + 'for %s' % req.host) + else: + raise + + # + # To prevent against mixing HTTP traffic with HTTPS (examples: A Man-In-The- + # Middle proxy using HTTP listens on port 443, or an index mistakenly serves + # HTML containing a http://xyz link when it should be https://xyz), + # you can use the following handler class, which does not allow HTTP traffic. + # + # It works by inheriting from HTTPHandler - so build_opener won't add a + # handler for HTTP itself. + # + class HTTPSOnlyHandler(HTTPSHandler, HTTPHandler): + + def http_open(self, req): + raise URLError( + 'Unexpected HTTP request on what should be a secure ' + 'connection: %s' % req) + + +# +# XML-RPC with timeouts +# +class Transport(xmlrpclib.Transport): + + def __init__(self, timeout, use_datetime=0): + self.timeout = timeout + xmlrpclib.Transport.__init__(self, use_datetime) + + def make_connection(self, host): + h, eh, x509 = self.get_host_info(host) + if not self._connection or host != self._connection[0]: + self._extra_headers = eh + self._connection = host, httplib.HTTPConnection(h) + return self._connection[1] + + +if ssl: + + class SafeTransport(xmlrpclib.SafeTransport): + + def __init__(self, timeout, use_datetime=0): + self.timeout = timeout + xmlrpclib.SafeTransport.__init__(self, use_datetime) + + def make_connection(self, host): + h, eh, kwargs = self.get_host_info(host) + if not kwargs: + kwargs = {} + kwargs['timeout'] = self.timeout + if not self._connection or host != self._connection[0]: + self._extra_headers = eh + self._connection = host, httplib.HTTPSConnection( + h, None, **kwargs) + return self._connection[1] + + +class ServerProxy(xmlrpclib.ServerProxy): + + def __init__(self, uri, **kwargs): + self.timeout = timeout = kwargs.pop('timeout', None) + # The above classes only come into play if a timeout + # is specified + if timeout is not None: + # scheme = splittype(uri) # deprecated as of Python 3.8 + scheme = urlparse(uri)[0] + use_datetime = kwargs.get('use_datetime', 0) + if scheme == 'https': + tcls = SafeTransport + else: + tcls = Transport + kwargs['transport'] = t = tcls(timeout, use_datetime=use_datetime) + self.transport = t + xmlrpclib.ServerProxy.__init__(self, uri, **kwargs) + + +# +# CSV functionality. This is provided because on 2.x, the csv module can't +# handle Unicode. However, we need to deal with Unicode in e.g. RECORD files. +# + + +def _csv_open(fn, mode, **kwargs): + if sys.version_info[0] < 3: + mode += 'b' + else: + kwargs['newline'] = '' + # Python 3 determines encoding from locale. Force 'utf-8' + # file encoding to match other forced utf-8 encoding + kwargs['encoding'] = 'utf-8' + return open(fn, mode, **kwargs) + + +class CSVBase(object): + defaults = { + 'delimiter': str(','), # The strs are used because we need native + 'quotechar': str('"'), # str in the csv API (2.x won't take + 'lineterminator': str('\n') # Unicode) + } + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.stream.close() + + +class CSVReader(CSVBase): + + def __init__(self, **kwargs): + if 'stream' in kwargs: + stream = kwargs['stream'] + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getreader('utf-8')(stream) + self.stream = stream + else: + self.stream = _csv_open(kwargs['path'], 'r') + self.reader = csv.reader(self.stream, **self.defaults) + + def __iter__(self): + return self + + def next(self): + result = next(self.reader) + if sys.version_info[0] < 3: + for i, item in enumerate(result): + if not isinstance(item, text_type): + result[i] = item.decode('utf-8') + return result + + __next__ = next + + +class CSVWriter(CSVBase): + + def __init__(self, fn, **kwargs): + self.stream = _csv_open(fn, 'w') + self.writer = csv.writer(self.stream, **self.defaults) + + def writerow(self, row): + if sys.version_info[0] < 3: + r = [] + for item in row: + if isinstance(item, text_type): + item = item.encode('utf-8') + r.append(item) + row = r + self.writer.writerow(row) + + +# +# Configurator functionality +# + + +class Configurator(BaseConfigurator): + + value_converters = dict(BaseConfigurator.value_converters) + value_converters['inc'] = 'inc_convert' + + def __init__(self, config, base=None): + super(Configurator, self).__init__(config) + self.base = base or os.getcwd() + + def configure_custom(self, config): + + def convert(o): + if isinstance(o, (list, tuple)): + result = type(o)([convert(i) for i in o]) + elif isinstance(o, dict): + if '()' in o: + result = self.configure_custom(o) + else: + result = {} + for k in o: + result[k] = convert(o[k]) + else: + result = self.convert(o) + return result + + c = config.pop('()') + if not callable(c): + c = self.resolve(c) + props = config.pop('.', None) + # Check for valid identifiers + args = config.pop('[]', ()) + if args: + args = tuple([convert(o) for o in args]) + items = [(k, convert(config[k])) for k in config if valid_ident(k)] + kwargs = dict(items) + result = c(*args, **kwargs) + if props: + for n, v in props.items(): + setattr(result, n, convert(v)) + return result + + def __getitem__(self, key): + result = self.config[key] + if isinstance(result, dict) and '()' in result: + self.config[key] = result = self.configure_custom(result) + return result + + def inc_convert(self, value): + """Default converter for the inc:// protocol.""" + if not os.path.isabs(value): + value = os.path.join(self.base, value) + with codecs.open(value, 'r', encoding='utf-8') as f: + result = json.load(f) + return result + + +class SubprocessMixin(object): + """ + Mixin for running subprocesses and capturing their output + """ + + def __init__(self, verbose=False, progress=None): + self.verbose = verbose + self.progress = progress + + def reader(self, stream, context): + """ + Read lines from a subprocess' output stream and either pass to a progress + callable (if specified) or write progress information to sys.stderr. + """ + progress = self.progress + verbose = self.verbose + while True: + s = stream.readline() + if not s: + break + if progress is not None: + progress(s, context) + else: + if not verbose: + sys.stderr.write('.') + else: + sys.stderr.write(s.decode('utf-8')) + sys.stderr.flush() + stream.close() + + def run_command(self, cmd, **kwargs): + p = subprocess.Popen(cmd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + **kwargs) + t1 = threading.Thread(target=self.reader, args=(p.stdout, 'stdout')) + t1.start() + t2 = threading.Thread(target=self.reader, args=(p.stderr, 'stderr')) + t2.start() + p.wait() + t1.join() + t2.join() + if self.progress is not None: + self.progress('done.', 'main') + elif self.verbose: + sys.stderr.write('done.\n') + return p + + +def normalize_name(name): + """Normalize a python package name a la PEP 503""" + # https://www.python.org/dev/peps/pep-0503/#normalized-names + return re.sub('[-_.]+', '-', name).lower() + + +# def _get_pypirc_command(): +# """ +# Get the distutils command for interacting with PyPI configurations. +# :return: the command. +# """ +# from distutils.core import Distribution +# from distutils.config import PyPIRCCommand +# d = Distribution() +# return PyPIRCCommand(d) + + +class PyPIRCFile(object): + + DEFAULT_REPOSITORY = 'https://upload.pypi.org/legacy/' + DEFAULT_REALM = 'pypi' + + def __init__(self, fn=None, url=None): + if fn is None: + fn = os.path.join(os.path.expanduser('~'), '.pypirc') + self.filename = fn + self.url = url + + def read(self): + result = {} + + if os.path.exists(self.filename): + repository = self.url or self.DEFAULT_REPOSITORY + + config = configparser.RawConfigParser() + config.read(self.filename) + sections = config.sections() + if 'distutils' in sections: + # let's get the list of servers + index_servers = config.get('distutils', 'index-servers') + _servers = [ + server.strip() for server in index_servers.split('\n') + if server.strip() != '' + ] + if _servers == []: + # nothing set, let's try to get the default pypi + if 'pypi' in sections: + _servers = ['pypi'] + else: + for server in _servers: + result = {'server': server} + result['username'] = config.get(server, 'username') + + # optional params + for key, default in (('repository', + self.DEFAULT_REPOSITORY), + ('realm', self.DEFAULT_REALM), + ('password', None)): + if config.has_option(server, key): + result[key] = config.get(server, key) + else: + result[key] = default + + # work around people having "repository" for the "pypi" + # section of their config set to the HTTP (rather than + # HTTPS) URL + if (server == 'pypi' and repository + in (self.DEFAULT_REPOSITORY, 'pypi')): + result['repository'] = self.DEFAULT_REPOSITORY + elif (result['server'] != repository + and result['repository'] != repository): + result = {} + elif 'server-login' in sections: + # old format + server = 'server-login' + if config.has_option(server, 'repository'): + repository = config.get(server, 'repository') + else: + repository = self.DEFAULT_REPOSITORY + result = { + 'username': config.get(server, 'username'), + 'password': config.get(server, 'password'), + 'repository': repository, + 'server': server, + 'realm': self.DEFAULT_REALM + } + return result + + def update(self, username, password): + # import pdb; pdb.set_trace() + config = configparser.RawConfigParser() + fn = self.filename + config.read(fn) + if not config.has_section('pypi'): + config.add_section('pypi') + config.set('pypi', 'username', username) + config.set('pypi', 'password', password) + with open(fn, 'w') as f: + config.write(f) + + +def _load_pypirc(index): + """ + Read the PyPI access configuration as supported by distutils. + """ + return PyPIRCFile(url=index.url).read() + + +def _store_pypirc(index): + PyPIRCFile().update(index.username, index.password) + + +# +# get_platform()/get_host_platform() copied from Python 3.10.a0 source, with some minor +# tweaks +# + + +def get_host_platform(): + """Return a string that identifies the current platform. This is used mainly to + distinguish platform-specific build directories and platform-specific built + distributions. Typically includes the OS name and version and the + architecture (as supplied by 'os.uname()'), although the exact information + included depends on the OS; eg. on Linux, the kernel version isn't + particularly important. + + Examples of returned values: + linux-i586 + linux-alpha (?) + solaris-2.6-sun4u + + Windows will return one of: + win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) + win32 (all others - specifically, sys.platform is returned) + + For other non-POSIX platforms, currently just returns 'sys.platform'. + + """ + if os.name == 'nt': + if 'amd64' in sys.version.lower(): + return 'win-amd64' + if '(arm)' in sys.version.lower(): + return 'win-arm32' + if '(arm64)' in sys.version.lower(): + return 'win-arm64' + return sys.platform + + # Set for cross builds explicitly + if "_PYTHON_HOST_PLATFORM" in os.environ: + return os.environ["_PYTHON_HOST_PLATFORM"] + + if os.name != 'posix' or not hasattr(os, 'uname'): + # XXX what about the architecture? NT is Intel or Alpha, + # Mac OS is M68k or PPC, etc. + return sys.platform + + # Try to distinguish various flavours of Unix + + (osname, host, release, version, machine) = os.uname() + + # Convert the OS name to lowercase, remove '/' characters, and translate + # spaces (for "Power Macintosh") + osname = osname.lower().replace('/', '') + machine = machine.replace(' ', '_').replace('/', '-') + + if osname[:5] == 'linux': + # At least on Linux/Intel, 'machine' is the processor -- + # i386, etc. + # XXX what about Alpha, SPARC, etc? + return "%s-%s" % (osname, machine) + + elif osname[:5] == 'sunos': + if release[0] >= '5': # SunOS 5 == Solaris 2 + osname = 'solaris' + release = '%d.%s' % (int(release[0]) - 3, release[2:]) + # We can't use 'platform.architecture()[0]' because a + # bootstrap problem. We use a dict to get an error + # if some suspicious happens. + bitness = {2147483647: '32bit', 9223372036854775807: '64bit'} + machine += '.%s' % bitness[sys.maxsize] + # fall through to standard osname-release-machine representation + elif osname[:3] == 'aix': + from _aix_support import aix_platform + return aix_platform() + elif osname[:6] == 'cygwin': + osname = 'cygwin' + rel_re = re.compile(r'[\d.]+', re.ASCII) + m = rel_re.match(release) + if m: + release = m.group() + elif osname[:6] == 'darwin': + import _osx_support + try: + from distutils import sysconfig + except ImportError: + import sysconfig + osname, release, machine = _osx_support.get_platform_osx( + sysconfig.get_config_vars(), osname, release, machine) + + return '%s-%s-%s' % (osname, release, machine) + + +_TARGET_TO_PLAT = { + 'x86': 'win32', + 'x64': 'win-amd64', + 'arm': 'win-arm32', +} + + +def get_platform(): + if os.name != 'nt': + return get_host_platform() + cross_compilation_target = os.environ.get('VSCMD_ARG_TGT_ARCH') + if cross_compilation_target not in _TARGET_TO_PLAT: + return get_host_platform() + return _TARGET_TO_PLAT[cross_compilation_target] diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/version.py b/venv/Lib/site-packages/pip/_vendor/distlib/version.py new file mode 100644 index 00000000000..14171ac938d --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/version.py @@ -0,0 +1,751 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2023 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +""" +Implementation of a flexible versioning scheme providing support for PEP-440, +setuptools-compatible and semantic versioning. +""" + +import logging +import re + +from .compat import string_types +from .util import parse_requirement + +__all__ = ['NormalizedVersion', 'NormalizedMatcher', + 'LegacyVersion', 'LegacyMatcher', + 'SemanticVersion', 'SemanticMatcher', + 'UnsupportedVersionError', 'get_scheme'] + +logger = logging.getLogger(__name__) + + +class UnsupportedVersionError(ValueError): + """This is an unsupported version.""" + pass + + +class Version(object): + def __init__(self, s): + self._string = s = s.strip() + self._parts = parts = self.parse(s) + assert isinstance(parts, tuple) + assert len(parts) > 0 + + def parse(self, s): + raise NotImplementedError('please implement in a subclass') + + def _check_compatible(self, other): + if type(self) != type(other): + raise TypeError('cannot compare %r and %r' % (self, other)) + + def __eq__(self, other): + self._check_compatible(other) + return self._parts == other._parts + + def __ne__(self, other): + return not self.__eq__(other) + + def __lt__(self, other): + self._check_compatible(other) + return self._parts < other._parts + + def __gt__(self, other): + return not (self.__lt__(other) or self.__eq__(other)) + + def __le__(self, other): + return self.__lt__(other) or self.__eq__(other) + + def __ge__(self, other): + return self.__gt__(other) or self.__eq__(other) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + def __hash__(self): + return hash(self._parts) + + def __repr__(self): + return "%s('%s')" % (self.__class__.__name__, self._string) + + def __str__(self): + return self._string + + @property + def is_prerelease(self): + raise NotImplementedError('Please implement in subclasses.') + + +class Matcher(object): + version_class = None + + # value is either a callable or the name of a method + _operators = { + '<': lambda v, c, p: v < c, + '>': lambda v, c, p: v > c, + '<=': lambda v, c, p: v == c or v < c, + '>=': lambda v, c, p: v == c or v > c, + '==': lambda v, c, p: v == c, + '===': lambda v, c, p: v == c, + # by default, compatible => >=. + '~=': lambda v, c, p: v == c or v > c, + '!=': lambda v, c, p: v != c, + } + + # this is a method only to support alternative implementations + # via overriding + def parse_requirement(self, s): + return parse_requirement(s) + + def __init__(self, s): + if self.version_class is None: + raise ValueError('Please specify a version class') + self._string = s = s.strip() + r = self.parse_requirement(s) + if not r: + raise ValueError('Not valid: %r' % s) + self.name = r.name + self.key = self.name.lower() # for case-insensitive comparisons + clist = [] + if r.constraints: + # import pdb; pdb.set_trace() + for op, s in r.constraints: + if s.endswith('.*'): + if op not in ('==', '!='): + raise ValueError('\'.*\' not allowed for ' + '%r constraints' % op) + # Could be a partial version (e.g. for '2.*') which + # won't parse as a version, so keep it as a string + vn, prefix = s[:-2], True + # Just to check that vn is a valid version + self.version_class(vn) + else: + # Should parse as a version, so we can create an + # instance for the comparison + vn, prefix = self.version_class(s), False + clist.append((op, vn, prefix)) + self._parts = tuple(clist) + + def match(self, version): + """ + Check if the provided version matches the constraints. + + :param version: The version to match against this instance. + :type version: String or :class:`Version` instance. + """ + if isinstance(version, string_types): + version = self.version_class(version) + for operator, constraint, prefix in self._parts: + f = self._operators.get(operator) + if isinstance(f, string_types): + f = getattr(self, f) + if not f: + msg = ('%r not implemented ' + 'for %s' % (operator, self.__class__.__name__)) + raise NotImplementedError(msg) + if not f(version, constraint, prefix): + return False + return True + + @property + def exact_version(self): + result = None + if len(self._parts) == 1 and self._parts[0][0] in ('==', '==='): + result = self._parts[0][1] + return result + + def _check_compatible(self, other): + if type(self) != type(other) or self.name != other.name: + raise TypeError('cannot compare %s and %s' % (self, other)) + + def __eq__(self, other): + self._check_compatible(other) + return self.key == other.key and self._parts == other._parts + + def __ne__(self, other): + return not self.__eq__(other) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + def __hash__(self): + return hash(self.key) + hash(self._parts) + + def __repr__(self): + return "%s(%r)" % (self.__class__.__name__, self._string) + + def __str__(self): + return self._string + + +PEP440_VERSION_RE = re.compile(r'^v?(\d+!)?(\d+(\.\d+)*)((a|alpha|b|beta|c|rc|pre|preview)(\d+)?)?' + r'(\.(post|r|rev)(\d+)?)?([._-]?(dev)(\d+)?)?' + r'(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$', re.I) + + +def _pep_440_key(s): + s = s.strip() + m = PEP440_VERSION_RE.match(s) + if not m: + raise UnsupportedVersionError('Not a valid version: %s' % s) + groups = m.groups() + nums = tuple(int(v) for v in groups[1].split('.')) + while len(nums) > 1 and nums[-1] == 0: + nums = nums[:-1] + + if not groups[0]: + epoch = 0 + else: + epoch = int(groups[0][:-1]) + pre = groups[4:6] + post = groups[7:9] + dev = groups[10:12] + local = groups[13] + if pre == (None, None): + pre = () + else: + if pre[1] is None: + pre = pre[0], 0 + else: + pre = pre[0], int(pre[1]) + if post == (None, None): + post = () + else: + if post[1] is None: + post = post[0], 0 + else: + post = post[0], int(post[1]) + if dev == (None, None): + dev = () + else: + if dev[1] is None: + dev = dev[0], 0 + else: + dev = dev[0], int(dev[1]) + if local is None: + local = () + else: + parts = [] + for part in local.split('.'): + # to ensure that numeric compares as > lexicographic, avoid + # comparing them directly, but encode a tuple which ensures + # correct sorting + if part.isdigit(): + part = (1, int(part)) + else: + part = (0, part) + parts.append(part) + local = tuple(parts) + if not pre: + # either before pre-release, or final release and after + if not post and dev: + # before pre-release + pre = ('a', -1) # to sort before a0 + else: + pre = ('z',) # to sort after all pre-releases + # now look at the state of post and dev. + if not post: + post = ('_',) # sort before 'a' + if not dev: + dev = ('final',) + + return epoch, nums, pre, post, dev, local + + +_normalized_key = _pep_440_key + + +class NormalizedVersion(Version): + """A rational version. + + Good: + 1.2 # equivalent to "1.2.0" + 1.2.0 + 1.2a1 + 1.2.3a2 + 1.2.3b1 + 1.2.3c1 + 1.2.3.4 + TODO: fill this out + + Bad: + 1 # minimum two numbers + 1.2a # release level must have a release serial + 1.2.3b + """ + def parse(self, s): + result = _normalized_key(s) + # _normalized_key loses trailing zeroes in the release + # clause, since that's needed to ensure that X.Y == X.Y.0 == X.Y.0.0 + # However, PEP 440 prefix matching needs it: for example, + # (~= 1.4.5.0) matches differently to (~= 1.4.5.0.0). + m = PEP440_VERSION_RE.match(s) # must succeed + groups = m.groups() + self._release_clause = tuple(int(v) for v in groups[1].split('.')) + return result + + PREREL_TAGS = set(['a', 'b', 'c', 'rc', 'dev']) + + @property + def is_prerelease(self): + return any(t[0] in self.PREREL_TAGS for t in self._parts if t) + + +def _match_prefix(x, y): + x = str(x) + y = str(y) + if x == y: + return True + if not x.startswith(y): + return False + n = len(y) + return x[n] == '.' + + +class NormalizedMatcher(Matcher): + version_class = NormalizedVersion + + # value is either a callable or the name of a method + _operators = { + '~=': '_match_compatible', + '<': '_match_lt', + '>': '_match_gt', + '<=': '_match_le', + '>=': '_match_ge', + '==': '_match_eq', + '===': '_match_arbitrary', + '!=': '_match_ne', + } + + def _adjust_local(self, version, constraint, prefix): + if prefix: + strip_local = '+' not in constraint and version._parts[-1] + else: + # both constraint and version are + # NormalizedVersion instances. + # If constraint does not have a local component, + # ensure the version doesn't, either. + strip_local = not constraint._parts[-1] and version._parts[-1] + if strip_local: + s = version._string.split('+', 1)[0] + version = self.version_class(s) + return version, constraint + + def _match_lt(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version >= constraint: + return False + release_clause = constraint._release_clause + pfx = '.'.join([str(i) for i in release_clause]) + return not _match_prefix(version, pfx) + + def _match_gt(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version <= constraint: + return False + release_clause = constraint._release_clause + pfx = '.'.join([str(i) for i in release_clause]) + return not _match_prefix(version, pfx) + + def _match_le(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + return version <= constraint + + def _match_ge(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + return version >= constraint + + def _match_eq(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if not prefix: + result = (version == constraint) + else: + result = _match_prefix(version, constraint) + return result + + def _match_arbitrary(self, version, constraint, prefix): + return str(version) == str(constraint) + + def _match_ne(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if not prefix: + result = (version != constraint) + else: + result = not _match_prefix(version, constraint) + return result + + def _match_compatible(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version == constraint: + return True + if version < constraint: + return False +# if not prefix: +# return True + release_clause = constraint._release_clause + if len(release_clause) > 1: + release_clause = release_clause[:-1] + pfx = '.'.join([str(i) for i in release_clause]) + return _match_prefix(version, pfx) + + +_REPLACEMENTS = ( + (re.compile('[.+-]$'), ''), # remove trailing puncts + (re.compile(r'^[.](\d)'), r'0.\1'), # .N -> 0.N at start + (re.compile('^[.-]'), ''), # remove leading puncts + (re.compile(r'^\((.*)\)$'), r'\1'), # remove parentheses + (re.compile(r'^v(ersion)?\s*(\d+)'), r'\2'), # remove leading v(ersion) + (re.compile(r'^r(ev)?\s*(\d+)'), r'\2'), # remove leading v(ersion) + (re.compile('[.]{2,}'), '.'), # multiple runs of '.' + (re.compile(r'\b(alfa|apha)\b'), 'alpha'), # misspelt alpha + (re.compile(r'\b(pre-alpha|prealpha)\b'), + 'pre.alpha'), # standardise + (re.compile(r'\(beta\)$'), 'beta'), # remove parentheses +) + +_SUFFIX_REPLACEMENTS = ( + (re.compile('^[:~._+-]+'), ''), # remove leading puncts + (re.compile('[,*")([\\]]'), ''), # remove unwanted chars + (re.compile('[~:+_ -]'), '.'), # replace illegal chars + (re.compile('[.]{2,}'), '.'), # multiple runs of '.' + (re.compile(r'\.$'), ''), # trailing '.' +) + +_NUMERIC_PREFIX = re.compile(r'(\d+(\.\d+)*)') + + +def _suggest_semantic_version(s): + """ + Try to suggest a semantic form for a version for which + _suggest_normalized_version couldn't come up with anything. + """ + result = s.strip().lower() + for pat, repl in _REPLACEMENTS: + result = pat.sub(repl, result) + if not result: + result = '0.0.0' + + # Now look for numeric prefix, and separate it out from + # the rest. + # import pdb; pdb.set_trace() + m = _NUMERIC_PREFIX.match(result) + if not m: + prefix = '0.0.0' + suffix = result + else: + prefix = m.groups()[0].split('.') + prefix = [int(i) for i in prefix] + while len(prefix) < 3: + prefix.append(0) + if len(prefix) == 3: + suffix = result[m.end():] + else: + suffix = '.'.join([str(i) for i in prefix[3:]]) + result[m.end():] + prefix = prefix[:3] + prefix = '.'.join([str(i) for i in prefix]) + suffix = suffix.strip() + if suffix: + # import pdb; pdb.set_trace() + # massage the suffix. + for pat, repl in _SUFFIX_REPLACEMENTS: + suffix = pat.sub(repl, suffix) + + if not suffix: + result = prefix + else: + sep = '-' if 'dev' in suffix else '+' + result = prefix + sep + suffix + if not is_semver(result): + result = None + return result + + +def _suggest_normalized_version(s): + """Suggest a normalized version close to the given version string. + + If you have a version string that isn't rational (i.e. NormalizedVersion + doesn't like it) then you might be able to get an equivalent (or close) + rational version from this function. + + This does a number of simple normalizations to the given string, based + on observation of versions currently in use on PyPI. Given a dump of + those version during PyCon 2009, 4287 of them: + - 2312 (53.93%) match NormalizedVersion without change + with the automatic suggestion + - 3474 (81.04%) match when using this suggestion method + + @param s {str} An irrational version string. + @returns A rational version string, or None, if couldn't determine one. + """ + try: + _normalized_key(s) + return s # already rational + except UnsupportedVersionError: + pass + + rs = s.lower() + + # part of this could use maketrans + for orig, repl in (('-alpha', 'a'), ('-beta', 'b'), ('alpha', 'a'), + ('beta', 'b'), ('rc', 'c'), ('-final', ''), + ('-pre', 'c'), + ('-release', ''), ('.release', ''), ('-stable', ''), + ('+', '.'), ('_', '.'), (' ', ''), ('.final', ''), + ('final', '')): + rs = rs.replace(orig, repl) + + # if something ends with dev or pre, we add a 0 + rs = re.sub(r"pre$", r"pre0", rs) + rs = re.sub(r"dev$", r"dev0", rs) + + # if we have something like "b-2" or "a.2" at the end of the + # version, that is probably beta, alpha, etc + # let's remove the dash or dot + rs = re.sub(r"([abc]|rc)[\-\.](\d+)$", r"\1\2", rs) + + # 1.0-dev-r371 -> 1.0.dev371 + # 0.1-dev-r79 -> 0.1.dev79 + rs = re.sub(r"[\-\.](dev)[\-\.]?r?(\d+)$", r".\1\2", rs) + + # Clean: 2.0.a.3, 2.0.b1, 0.9.0~c1 + rs = re.sub(r"[.~]?([abc])\.?", r"\1", rs) + + # Clean: v0.3, v1.0 + if rs.startswith('v'): + rs = rs[1:] + + # Clean leading '0's on numbers. + # TODO: unintended side-effect on, e.g., "2003.05.09" + # PyPI stats: 77 (~2%) better + rs = re.sub(r"\b0+(\d+)(?!\d)", r"\1", rs) + + # Clean a/b/c with no version. E.g. "1.0a" -> "1.0a0". Setuptools infers + # zero. + # PyPI stats: 245 (7.56%) better + rs = re.sub(r"(\d+[abc])$", r"\g<1>0", rs) + + # the 'dev-rNNN' tag is a dev tag + rs = re.sub(r"\.?(dev-r|dev\.r)\.?(\d+)$", r".dev\2", rs) + + # clean the - when used as a pre delimiter + rs = re.sub(r"-(a|b|c)(\d+)$", r"\1\2", rs) + + # a terminal "dev" or "devel" can be changed into ".dev0" + rs = re.sub(r"[\.\-](dev|devel)$", r".dev0", rs) + + # a terminal "dev" can be changed into ".dev0" + rs = re.sub(r"(?![\.\-])dev$", r".dev0", rs) + + # a terminal "final" or "stable" can be removed + rs = re.sub(r"(final|stable)$", "", rs) + + # The 'r' and the '-' tags are post release tags + # 0.4a1.r10 -> 0.4a1.post10 + # 0.9.33-17222 -> 0.9.33.post17222 + # 0.9.33-r17222 -> 0.9.33.post17222 + rs = re.sub(r"\.?(r|-|-r)\.?(\d+)$", r".post\2", rs) + + # Clean 'r' instead of 'dev' usage: + # 0.9.33+r17222 -> 0.9.33.dev17222 + # 1.0dev123 -> 1.0.dev123 + # 1.0.git123 -> 1.0.dev123 + # 1.0.bzr123 -> 1.0.dev123 + # 0.1a0dev.123 -> 0.1a0.dev123 + # PyPI stats: ~150 (~4%) better + rs = re.sub(r"\.?(dev|git|bzr)\.?(\d+)$", r".dev\2", rs) + + # Clean '.pre' (normalized from '-pre' above) instead of 'c' usage: + # 0.2.pre1 -> 0.2c1 + # 0.2-c1 -> 0.2c1 + # 1.0preview123 -> 1.0c123 + # PyPI stats: ~21 (0.62%) better + rs = re.sub(r"\.?(pre|preview|-c)(\d+)$", r"c\g<2>", rs) + + # Tcl/Tk uses "px" for their post release markers + rs = re.sub(r"p(\d+)$", r".post\1", rs) + + try: + _normalized_key(rs) + except UnsupportedVersionError: + rs = None + return rs + +# +# Legacy version processing (distribute-compatible) +# + + +_VERSION_PART = re.compile(r'([a-z]+|\d+|[\.-])', re.I) +_VERSION_REPLACE = { + 'pre': 'c', + 'preview': 'c', + '-': 'final-', + 'rc': 'c', + 'dev': '@', + '': None, + '.': None, +} + + +def _legacy_key(s): + def get_parts(s): + result = [] + for p in _VERSION_PART.split(s.lower()): + p = _VERSION_REPLACE.get(p, p) + if p: + if '0' <= p[:1] <= '9': + p = p.zfill(8) + else: + p = '*' + p + result.append(p) + result.append('*final') + return result + + result = [] + for p in get_parts(s): + if p.startswith('*'): + if p < '*final': + while result and result[-1] == '*final-': + result.pop() + while result and result[-1] == '00000000': + result.pop() + result.append(p) + return tuple(result) + + +class LegacyVersion(Version): + def parse(self, s): + return _legacy_key(s) + + @property + def is_prerelease(self): + result = False + for x in self._parts: + if (isinstance(x, string_types) and x.startswith('*') and + x < '*final'): + result = True + break + return result + + +class LegacyMatcher(Matcher): + version_class = LegacyVersion + + _operators = dict(Matcher._operators) + _operators['~='] = '_match_compatible' + + numeric_re = re.compile(r'^(\d+(\.\d+)*)') + + def _match_compatible(self, version, constraint, prefix): + if version < constraint: + return False + m = self.numeric_re.match(str(constraint)) + if not m: + logger.warning('Cannot compute compatible match for version %s ' + ' and constraint %s', version, constraint) + return True + s = m.groups()[0] + if '.' in s: + s = s.rsplit('.', 1)[0] + return _match_prefix(version, s) + +# +# Semantic versioning +# + + +_SEMVER_RE = re.compile(r'^(\d+)\.(\d+)\.(\d+)' + r'(-[a-z0-9]+(\.[a-z0-9-]+)*)?' + r'(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$', re.I) + + +def is_semver(s): + return _SEMVER_RE.match(s) + + +def _semantic_key(s): + def make_tuple(s, absent): + if s is None: + result = (absent,) + else: + parts = s[1:].split('.') + # We can't compare ints and strings on Python 3, so fudge it + # by zero-filling numeric values so simulate a numeric comparison + result = tuple([p.zfill(8) if p.isdigit() else p for p in parts]) + return result + + m = is_semver(s) + if not m: + raise UnsupportedVersionError(s) + groups = m.groups() + major, minor, patch = [int(i) for i in groups[:3]] + # choose the '|' and '*' so that versions sort correctly + pre, build = make_tuple(groups[3], '|'), make_tuple(groups[5], '*') + return (major, minor, patch), pre, build + + +class SemanticVersion(Version): + def parse(self, s): + return _semantic_key(s) + + @property + def is_prerelease(self): + return self._parts[1][0] != '|' + + +class SemanticMatcher(Matcher): + version_class = SemanticVersion + + +class VersionScheme(object): + def __init__(self, key, matcher, suggester=None): + self.key = key + self.matcher = matcher + self.suggester = suggester + + def is_valid_version(self, s): + try: + self.matcher.version_class(s) + result = True + except UnsupportedVersionError: + result = False + return result + + def is_valid_matcher(self, s): + try: + self.matcher(s) + result = True + except UnsupportedVersionError: + result = False + return result + + def is_valid_constraint_list(self, s): + """ + Used for processing some metadata fields + """ + # See issue #140. Be tolerant of a single trailing comma. + if s.endswith(','): + s = s[:-1] + return self.is_valid_matcher('dummy_name (%s)' % s) + + def suggest(self, s): + if self.suggester is None: + result = None + else: + result = self.suggester(s) + return result + + +_SCHEMES = { + 'normalized': VersionScheme(_normalized_key, NormalizedMatcher, + _suggest_normalized_version), + 'legacy': VersionScheme(_legacy_key, LegacyMatcher, lambda self, s: s), + 'semantic': VersionScheme(_semantic_key, SemanticMatcher, + _suggest_semantic_version), +} + +_SCHEMES['default'] = _SCHEMES['normalized'] + + +def get_scheme(name): + if name not in _SCHEMES: + raise ValueError('unknown scheme name: %r' % name) + return _SCHEMES[name] diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/w32.exe b/venv/Lib/site-packages/pip/_vendor/distlib/w32.exe new file mode 100644 index 00000000000..4ee2d3a31b5 Binary files /dev/null and b/venv/Lib/site-packages/pip/_vendor/distlib/w32.exe differ diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe b/venv/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe new file mode 100644 index 00000000000..951d5817c9e Binary files /dev/null and b/venv/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe differ diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/w64.exe b/venv/Lib/site-packages/pip/_vendor/distlib/w64.exe new file mode 100644 index 00000000000..5763076d287 Binary files /dev/null and b/venv/Lib/site-packages/pip/_vendor/distlib/w64.exe differ diff --git a/venv/Lib/site-packages/pip/_vendor/distlib/wheel.py b/venv/Lib/site-packages/pip/_vendor/distlib/wheel.py new file mode 100644 index 00000000000..4a5a30e1d8d --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distlib/wheel.py @@ -0,0 +1,1099 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2023 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import unicode_literals + +import base64 +import codecs +import datetime +from email import message_from_file +import hashlib +import json +import logging +import os +import posixpath +import re +import shutil +import sys +import tempfile +import zipfile + +from . import __version__, DistlibException +from .compat import sysconfig, ZipFile, fsdecode, text_type, filter +from .database import InstalledDistribution +from .metadata import Metadata, WHEEL_METADATA_FILENAME, LEGACY_METADATA_FILENAME +from .util import (FileOperator, convert_path, CSVReader, CSVWriter, Cache, + cached_property, get_cache_base, read_exports, tempdir, + get_platform) +from .version import NormalizedVersion, UnsupportedVersionError + +logger = logging.getLogger(__name__) + +cache = None # created when needed + +if hasattr(sys, 'pypy_version_info'): # pragma: no cover + IMP_PREFIX = 'pp' +elif sys.platform.startswith('java'): # pragma: no cover + IMP_PREFIX = 'jy' +elif sys.platform == 'cli': # pragma: no cover + IMP_PREFIX = 'ip' +else: + IMP_PREFIX = 'cp' + +VER_SUFFIX = sysconfig.get_config_var('py_version_nodot') +if not VER_SUFFIX: # pragma: no cover + VER_SUFFIX = '%s%s' % sys.version_info[:2] +PYVER = 'py' + VER_SUFFIX +IMPVER = IMP_PREFIX + VER_SUFFIX + +ARCH = get_platform().replace('-', '_').replace('.', '_') + +ABI = sysconfig.get_config_var('SOABI') +if ABI and ABI.startswith('cpython-'): + ABI = ABI.replace('cpython-', 'cp').split('-')[0] +else: + + def _derive_abi(): + parts = ['cp', VER_SUFFIX] + if sysconfig.get_config_var('Py_DEBUG'): + parts.append('d') + if IMP_PREFIX == 'cp': + vi = sys.version_info[:2] + if vi < (3, 8): + wpm = sysconfig.get_config_var('WITH_PYMALLOC') + if wpm is None: + wpm = True + if wpm: + parts.append('m') + if vi < (3, 3): + us = sysconfig.get_config_var('Py_UNICODE_SIZE') + if us == 4 or (us is None and sys.maxunicode == 0x10FFFF): + parts.append('u') + return ''.join(parts) + + ABI = _derive_abi() + del _derive_abi + +FILENAME_RE = re.compile( + r''' +(?P[^-]+) +-(?P\d+[^-]*) +(-(?P\d+[^-]*))? +-(?P\w+\d+(\.\w+\d+)*) +-(?P\w+) +-(?P\w+(\.\w+)*) +\.whl$ +''', re.IGNORECASE | re.VERBOSE) + +NAME_VERSION_RE = re.compile( + r''' +(?P[^-]+) +-(?P\d+[^-]*) +(-(?P\d+[^-]*))?$ +''', re.IGNORECASE | re.VERBOSE) + +SHEBANG_RE = re.compile(br'\s*#![^\r\n]*') +SHEBANG_DETAIL_RE = re.compile(br'^(\s*#!("[^"]+"|\S+))\s+(.*)$') +SHEBANG_PYTHON = b'#!python' +SHEBANG_PYTHONW = b'#!pythonw' + +if os.sep == '/': + to_posix = lambda o: o +else: + to_posix = lambda o: o.replace(os.sep, '/') + +if sys.version_info[0] < 3: + import imp +else: + imp = None + import importlib.machinery + import importlib.util + + +def _get_suffixes(): + if imp: + return [s[0] for s in imp.get_suffixes()] + else: + return importlib.machinery.EXTENSION_SUFFIXES + + +def _load_dynamic(name, path): + # https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly + if imp: + return imp.load_dynamic(name, path) + else: + spec = importlib.util.spec_from_file_location(name, path) + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + spec.loader.exec_module(module) + return module + + +class Mounter(object): + + def __init__(self): + self.impure_wheels = {} + self.libs = {} + + def add(self, pathname, extensions): + self.impure_wheels[pathname] = extensions + self.libs.update(extensions) + + def remove(self, pathname): + extensions = self.impure_wheels.pop(pathname) + for k, v in extensions: + if k in self.libs: + del self.libs[k] + + def find_module(self, fullname, path=None): + if fullname in self.libs: + result = self + else: + result = None + return result + + def load_module(self, fullname): + if fullname in sys.modules: + result = sys.modules[fullname] + else: + if fullname not in self.libs: + raise ImportError('unable to find extension for %s' % fullname) + result = _load_dynamic(fullname, self.libs[fullname]) + result.__loader__ = self + parts = fullname.rsplit('.', 1) + if len(parts) > 1: + result.__package__ = parts[0] + return result + + +_hook = Mounter() + + +class Wheel(object): + """ + Class to build and install from Wheel files (PEP 427). + """ + + wheel_version = (1, 1) + hash_kind = 'sha256' + + def __init__(self, filename=None, sign=False, verify=False): + """ + Initialise an instance using a (valid) filename. + """ + self.sign = sign + self.should_verify = verify + self.buildver = '' + self.pyver = [PYVER] + self.abi = ['none'] + self.arch = ['any'] + self.dirname = os.getcwd() + if filename is None: + self.name = 'dummy' + self.version = '0.1' + self._filename = self.filename + else: + m = NAME_VERSION_RE.match(filename) + if m: + info = m.groupdict('') + self.name = info['nm'] + # Reinstate the local version separator + self.version = info['vn'].replace('_', '-') + self.buildver = info['bn'] + self._filename = self.filename + else: + dirname, filename = os.path.split(filename) + m = FILENAME_RE.match(filename) + if not m: + raise DistlibException('Invalid name or ' + 'filename: %r' % filename) + if dirname: + self.dirname = os.path.abspath(dirname) + self._filename = filename + info = m.groupdict('') + self.name = info['nm'] + self.version = info['vn'] + self.buildver = info['bn'] + self.pyver = info['py'].split('.') + self.abi = info['bi'].split('.') + self.arch = info['ar'].split('.') + + @property + def filename(self): + """ + Build and return a filename from the various components. + """ + if self.buildver: + buildver = '-' + self.buildver + else: + buildver = '' + pyver = '.'.join(self.pyver) + abi = '.'.join(self.abi) + arch = '.'.join(self.arch) + # replace - with _ as a local version separator + version = self.version.replace('-', '_') + return '%s-%s%s-%s-%s-%s.whl' % (self.name, version, buildver, pyver, + abi, arch) + + @property + def exists(self): + path = os.path.join(self.dirname, self.filename) + return os.path.isfile(path) + + @property + def tags(self): + for pyver in self.pyver: + for abi in self.abi: + for arch in self.arch: + yield pyver, abi, arch + + @cached_property + def metadata(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + wrapper = codecs.getreader('utf-8') + with ZipFile(pathname, 'r') as zf: + self.get_wheel_metadata(zf) + # wv = wheel_metadata['Wheel-Version'].split('.', 1) + # file_version = tuple([int(i) for i in wv]) + # if file_version < (1, 1): + # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME, + # LEGACY_METADATA_FILENAME] + # else: + # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME] + fns = [WHEEL_METADATA_FILENAME, LEGACY_METADATA_FILENAME] + result = None + for fn in fns: + try: + metadata_filename = posixpath.join(info_dir, fn) + with zf.open(metadata_filename) as bf: + wf = wrapper(bf) + result = Metadata(fileobj=wf) + if result: + break + except KeyError: + pass + if not result: + raise ValueError('Invalid wheel, because metadata is ' + 'missing: looked in %s' % ', '.join(fns)) + return result + + def get_wheel_metadata(self, zf): + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + metadata_filename = posixpath.join(info_dir, 'WHEEL') + with zf.open(metadata_filename) as bf: + wf = codecs.getreader('utf-8')(bf) + message = message_from_file(wf) + return dict(message) + + @cached_property + def info(self): + pathname = os.path.join(self.dirname, self.filename) + with ZipFile(pathname, 'r') as zf: + result = self.get_wheel_metadata(zf) + return result + + def process_shebang(self, data): + m = SHEBANG_RE.match(data) + if m: + end = m.end() + shebang, data_after_shebang = data[:end], data[end:] + # Preserve any arguments after the interpreter + if b'pythonw' in shebang.lower(): + shebang_python = SHEBANG_PYTHONW + else: + shebang_python = SHEBANG_PYTHON + m = SHEBANG_DETAIL_RE.match(shebang) + if m: + args = b' ' + m.groups()[-1] + else: + args = b'' + shebang = shebang_python + args + data = shebang + data_after_shebang + else: + cr = data.find(b'\r') + lf = data.find(b'\n') + if cr < 0 or cr > lf: + term = b'\n' + else: + if data[cr:cr + 2] == b'\r\n': + term = b'\r\n' + else: + term = b'\r' + data = SHEBANG_PYTHON + term + data + return data + + def get_hash(self, data, hash_kind=None): + if hash_kind is None: + hash_kind = self.hash_kind + try: + hasher = getattr(hashlib, hash_kind) + except AttributeError: + raise DistlibException('Unsupported hash algorithm: %r' % + hash_kind) + result = hasher(data).digest() + result = base64.urlsafe_b64encode(result).rstrip(b'=').decode('ascii') + return hash_kind, result + + def write_record(self, records, record_path, archive_record_path): + records = list(records) # make a copy, as mutated + records.append((archive_record_path, '', '')) + with CSVWriter(record_path) as writer: + for row in records: + writer.writerow(row) + + def write_records(self, info, libdir, archive_paths): + records = [] + distinfo, info_dir = info + # hasher = getattr(hashlib, self.hash_kind) + for ap, p in archive_paths: + with open(p, 'rb') as f: + data = f.read() + digest = '%s=%s' % self.get_hash(data) + size = os.path.getsize(p) + records.append((ap, digest, size)) + + p = os.path.join(distinfo, 'RECORD') + ap = to_posix(os.path.join(info_dir, 'RECORD')) + self.write_record(records, p, ap) + archive_paths.append((ap, p)) + + def build_zip(self, pathname, archive_paths): + with ZipFile(pathname, 'w', zipfile.ZIP_DEFLATED) as zf: + for ap, p in archive_paths: + logger.debug('Wrote %s to %s in wheel', p, ap) + zf.write(p, ap) + + def build(self, paths, tags=None, wheel_version=None): + """ + Build a wheel from files in specified paths, and use any specified tags + when determining the name of the wheel. + """ + if tags is None: + tags = {} + + libkey = list(filter(lambda o: o in paths, ('purelib', 'platlib')))[0] + if libkey == 'platlib': + is_pure = 'false' + default_pyver = [IMPVER] + default_abi = [ABI] + default_arch = [ARCH] + else: + is_pure = 'true' + default_pyver = [PYVER] + default_abi = ['none'] + default_arch = ['any'] + + self.pyver = tags.get('pyver', default_pyver) + self.abi = tags.get('abi', default_abi) + self.arch = tags.get('arch', default_arch) + + libdir = paths[libkey] + + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + archive_paths = [] + + # First, stuff which is not in site-packages + for key in ('data', 'headers', 'scripts'): + if key not in paths: + continue + path = paths[key] + if os.path.isdir(path): + for root, dirs, files in os.walk(path): + for fn in files: + p = fsdecode(os.path.join(root, fn)) + rp = os.path.relpath(p, path) + ap = to_posix(os.path.join(data_dir, key, rp)) + archive_paths.append((ap, p)) + if key == 'scripts' and not p.endswith('.exe'): + with open(p, 'rb') as f: + data = f.read() + data = self.process_shebang(data) + with open(p, 'wb') as f: + f.write(data) + + # Now, stuff which is in site-packages, other than the + # distinfo stuff. + path = libdir + distinfo = None + for root, dirs, files in os.walk(path): + if root == path: + # At the top level only, save distinfo for later + # and skip it for now + for i, dn in enumerate(dirs): + dn = fsdecode(dn) + if dn.endswith('.dist-info'): + distinfo = os.path.join(root, dn) + del dirs[i] + break + assert distinfo, '.dist-info directory expected, not found' + + for fn in files: + # comment out next suite to leave .pyc files in + if fsdecode(fn).endswith(('.pyc', '.pyo')): + continue + p = os.path.join(root, fn) + rp = to_posix(os.path.relpath(p, path)) + archive_paths.append((rp, p)) + + # Now distinfo. Assumed to be flat, i.e. os.listdir is enough. + files = os.listdir(distinfo) + for fn in files: + if fn not in ('RECORD', 'INSTALLER', 'SHARED', 'WHEEL'): + p = fsdecode(os.path.join(distinfo, fn)) + ap = to_posix(os.path.join(info_dir, fn)) + archive_paths.append((ap, p)) + + wheel_metadata = [ + 'Wheel-Version: %d.%d' % (wheel_version or self.wheel_version), + 'Generator: distlib %s' % __version__, + 'Root-Is-Purelib: %s' % is_pure, + ] + for pyver, abi, arch in self.tags: + wheel_metadata.append('Tag: %s-%s-%s' % (pyver, abi, arch)) + p = os.path.join(distinfo, 'WHEEL') + with open(p, 'w') as f: + f.write('\n'.join(wheel_metadata)) + ap = to_posix(os.path.join(info_dir, 'WHEEL')) + archive_paths.append((ap, p)) + + # sort the entries by archive path. Not needed by any spec, but it + # keeps the archive listing and RECORD tidier than they would otherwise + # be. Use the number of path segments to keep directory entries together, + # and keep the dist-info stuff at the end. + def sorter(t): + ap = t[0] + n = ap.count('/') + if '.dist-info' in ap: + n += 10000 + return (n, ap) + + archive_paths = sorted(archive_paths, key=sorter) + + # Now, at last, RECORD. + # Paths in here are archive paths - nothing else makes sense. + self.write_records((distinfo, info_dir), libdir, archive_paths) + # Now, ready to build the zip file + pathname = os.path.join(self.dirname, self.filename) + self.build_zip(pathname, archive_paths) + return pathname + + def skip_entry(self, arcname): + """ + Determine whether an archive entry should be skipped when verifying + or installing. + """ + # The signature file won't be in RECORD, + # and we don't currently don't do anything with it + # We also skip directories, as they won't be in RECORD + # either. See: + # + # https://github.com/pypa/wheel/issues/294 + # https://github.com/pypa/wheel/issues/287 + # https://github.com/pypa/wheel/pull/289 + # + return arcname.endswith(('/', '/RECORD.jws')) + + def install(self, paths, maker, **kwargs): + """ + Install a wheel to the specified paths. If kwarg ``warner`` is + specified, it should be a callable, which will be called with two + tuples indicating the wheel version of this software and the wheel + version in the file, if there is a discrepancy in the versions. + This can be used to issue any warnings to raise any exceptions. + If kwarg ``lib_only`` is True, only the purelib/platlib files are + installed, and the headers, scripts, data and dist-info metadata are + not written. If kwarg ``bytecode_hashed_invalidation`` is True, written + bytecode will try to use file-hash based invalidation (PEP-552) on + supported interpreter versions (CPython 2.7+). + + The return value is a :class:`InstalledDistribution` instance unless + ``options.lib_only`` is True, in which case the return value is ``None``. + """ + + dry_run = maker.dry_run + warner = kwargs.get('warner') + lib_only = kwargs.get('lib_only', False) + bc_hashed_invalidation = kwargs.get('bytecode_hashed_invalidation', + False) + + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME) + wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') + record_name = posixpath.join(info_dir, 'RECORD') + + wrapper = codecs.getreader('utf-8') + + with ZipFile(pathname, 'r') as zf: + with zf.open(wheel_metadata_name) as bwf: + wf = wrapper(bwf) + message = message_from_file(wf) + wv = message['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + if (file_version != self.wheel_version) and warner: + warner(self.wheel_version, file_version) + + if message['Root-Is-Purelib'] == 'true': + libdir = paths['purelib'] + else: + libdir = paths['platlib'] + + records = {} + with zf.open(record_name) as bf: + with CSVReader(stream=bf) as reader: + for row in reader: + p = row[0] + records[p] = row + + data_pfx = posixpath.join(data_dir, '') + info_pfx = posixpath.join(info_dir, '') + script_pfx = posixpath.join(data_dir, 'scripts', '') + + # make a new instance rather than a copy of maker's, + # as we mutate it + fileop = FileOperator(dry_run=dry_run) + fileop.record = True # so we can rollback if needed + + bc = not sys.dont_write_bytecode # Double negatives. Lovely! + + outfiles = [] # for RECORD writing + + # for script copying/shebang processing + workdir = tempfile.mkdtemp() + # set target dir later + # we default add_launchers to False, as the + # Python Launcher should be used instead + maker.source_dir = workdir + maker.target_dir = None + try: + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + if self.skip_entry(u_arcname): + continue + row = records[u_arcname] + if row[2] and str(zinfo.file_size) != row[2]: + raise DistlibException('size mismatch for ' + '%s' % u_arcname) + if row[1]: + kind, value = row[1].split('=', 1) + with zf.open(arcname) as bf: + data = bf.read() + _, digest = self.get_hash(data, kind) + if digest != value: + raise DistlibException('digest mismatch for ' + '%s' % arcname) + + if lib_only and u_arcname.startswith((info_pfx, data_pfx)): + logger.debug('lib_only: skipping %s', u_arcname) + continue + is_script = (u_arcname.startswith(script_pfx) + and not u_arcname.endswith('.exe')) + + if u_arcname.startswith(data_pfx): + _, where, rp = u_arcname.split('/', 2) + outfile = os.path.join(paths[where], convert_path(rp)) + else: + # meant for site-packages. + if u_arcname in (wheel_metadata_name, record_name): + continue + outfile = os.path.join(libdir, convert_path(u_arcname)) + if not is_script: + with zf.open(arcname) as bf: + fileop.copy_stream(bf, outfile) + # Issue #147: permission bits aren't preserved. Using + # zf.extract(zinfo, libdir) should have worked, but didn't, + # see https://www.thetopsites.net/article/53834422.shtml + # So ... manually preserve permission bits as given in zinfo + if os.name == 'posix': + # just set the normal permission bits + os.chmod(outfile, + (zinfo.external_attr >> 16) & 0x1FF) + outfiles.append(outfile) + # Double check the digest of the written file + if not dry_run and row[1]: + with open(outfile, 'rb') as bf: + data = bf.read() + _, newdigest = self.get_hash(data, kind) + if newdigest != digest: + raise DistlibException('digest mismatch ' + 'on write for ' + '%s' % outfile) + if bc and outfile.endswith('.py'): + try: + pyc = fileop.byte_compile( + outfile, + hashed_invalidation=bc_hashed_invalidation) + outfiles.append(pyc) + except Exception: + # Don't give up if byte-compilation fails, + # but log it and perhaps warn the user + logger.warning('Byte-compilation failed', + exc_info=True) + else: + fn = os.path.basename(convert_path(arcname)) + workname = os.path.join(workdir, fn) + with zf.open(arcname) as bf: + fileop.copy_stream(bf, workname) + + dn, fn = os.path.split(outfile) + maker.target_dir = dn + filenames = maker.make(fn) + fileop.set_executable_mode(filenames) + outfiles.extend(filenames) + + if lib_only: + logger.debug('lib_only: returning None') + dist = None + else: + # Generate scripts + + # Try to get pydist.json so we can see if there are + # any commands to generate. If this fails (e.g. because + # of a legacy wheel), log a warning but don't give up. + commands = None + file_version = self.info['Wheel-Version'] + if file_version == '1.0': + # Use legacy info + ep = posixpath.join(info_dir, 'entry_points.txt') + try: + with zf.open(ep) as bwf: + epdata = read_exports(bwf) + commands = {} + for key in ('console', 'gui'): + k = '%s_scripts' % key + if k in epdata: + commands['wrap_%s' % key] = d = {} + for v in epdata[k].values(): + s = '%s:%s' % (v.prefix, v.suffix) + if v.flags: + s += ' [%s]' % ','.join(v.flags) + d[v.name] = s + except Exception: + logger.warning('Unable to read legacy script ' + 'metadata, so cannot generate ' + 'scripts') + else: + try: + with zf.open(metadata_name) as bwf: + wf = wrapper(bwf) + commands = json.load(wf).get('extensions') + if commands: + commands = commands.get('python.commands') + except Exception: + logger.warning('Unable to read JSON metadata, so ' + 'cannot generate scripts') + if commands: + console_scripts = commands.get('wrap_console', {}) + gui_scripts = commands.get('wrap_gui', {}) + if console_scripts or gui_scripts: + script_dir = paths.get('scripts', '') + if not os.path.isdir(script_dir): + raise ValueError('Valid script path not ' + 'specified') + maker.target_dir = script_dir + for k, v in console_scripts.items(): + script = '%s = %s' % (k, v) + filenames = maker.make(script) + fileop.set_executable_mode(filenames) + + if gui_scripts: + options = {'gui': True} + for k, v in gui_scripts.items(): + script = '%s = %s' % (k, v) + filenames = maker.make(script, options) + fileop.set_executable_mode(filenames) + + p = os.path.join(libdir, info_dir) + dist = InstalledDistribution(p) + + # Write SHARED + paths = dict(paths) # don't change passed in dict + del paths['purelib'] + del paths['platlib'] + paths['lib'] = libdir + p = dist.write_shared_locations(paths, dry_run) + if p: + outfiles.append(p) + + # Write RECORD + dist.write_installed_files(outfiles, paths['prefix'], + dry_run) + return dist + except Exception: # pragma: no cover + logger.exception('installation failed.') + fileop.rollback() + raise + finally: + shutil.rmtree(workdir) + + def _get_dylib_cache(self): + global cache + if cache is None: + # Use native string to avoid issues on 2.x: see Python #20140. + base = os.path.join(get_cache_base(), str('dylib-cache'), + '%s.%s' % sys.version_info[:2]) + cache = Cache(base) + return cache + + def _get_extensions(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + arcname = posixpath.join(info_dir, 'EXTENSIONS') + wrapper = codecs.getreader('utf-8') + result = [] + with ZipFile(pathname, 'r') as zf: + try: + with zf.open(arcname) as bf: + wf = wrapper(bf) + extensions = json.load(wf) + cache = self._get_dylib_cache() + prefix = cache.prefix_to_dir(pathname) + cache_base = os.path.join(cache.base, prefix) + if not os.path.isdir(cache_base): + os.makedirs(cache_base) + for name, relpath in extensions.items(): + dest = os.path.join(cache_base, convert_path(relpath)) + if not os.path.exists(dest): + extract = True + else: + file_time = os.stat(dest).st_mtime + file_time = datetime.datetime.fromtimestamp( + file_time) + info = zf.getinfo(relpath) + wheel_time = datetime.datetime(*info.date_time) + extract = wheel_time > file_time + if extract: + zf.extract(relpath, cache_base) + result.append((name, dest)) + except KeyError: + pass + return result + + def is_compatible(self): + """ + Determine if a wheel is compatible with the running system. + """ + return is_compatible(self) + + def is_mountable(self): + """ + Determine if a wheel is asserted as mountable by its metadata. + """ + return True # for now - metadata details TBD + + def mount(self, append=False): + pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) + if not self.is_compatible(): + msg = 'Wheel %s not compatible with this Python.' % pathname + raise DistlibException(msg) + if not self.is_mountable(): + msg = 'Wheel %s is marked as not mountable.' % pathname + raise DistlibException(msg) + if pathname in sys.path: + logger.debug('%s already in path', pathname) + else: + if append: + sys.path.append(pathname) + else: + sys.path.insert(0, pathname) + extensions = self._get_extensions() + if extensions: + if _hook not in sys.meta_path: + sys.meta_path.append(_hook) + _hook.add(pathname, extensions) + + def unmount(self): + pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) + if pathname not in sys.path: + logger.debug('%s not in path', pathname) + else: + sys.path.remove(pathname) + if pathname in _hook.impure_wheels: + _hook.remove(pathname) + if not _hook.impure_wheels: + if _hook in sys.meta_path: + sys.meta_path.remove(_hook) + + def verify(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + # data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + # metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME) + wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') + record_name = posixpath.join(info_dir, 'RECORD') + + wrapper = codecs.getreader('utf-8') + + with ZipFile(pathname, 'r') as zf: + with zf.open(wheel_metadata_name) as bwf: + wf = wrapper(bwf) + message_from_file(wf) + # wv = message['Wheel-Version'].split('.', 1) + # file_version = tuple([int(i) for i in wv]) + # TODO version verification + + records = {} + with zf.open(record_name) as bf: + with CSVReader(stream=bf) as reader: + for row in reader: + p = row[0] + records[p] = row + + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + # See issue #115: some wheels have .. in their entries, but + # in the filename ... e.g. __main__..py ! So the check is + # updated to look for .. in the directory portions + p = u_arcname.split('/') + if '..' in p: + raise DistlibException('invalid entry in ' + 'wheel: %r' % u_arcname) + + if self.skip_entry(u_arcname): + continue + row = records[u_arcname] + if row[2] and str(zinfo.file_size) != row[2]: + raise DistlibException('size mismatch for ' + '%s' % u_arcname) + if row[1]: + kind, value = row[1].split('=', 1) + with zf.open(arcname) as bf: + data = bf.read() + _, digest = self.get_hash(data, kind) + if digest != value: + raise DistlibException('digest mismatch for ' + '%s' % arcname) + + def update(self, modifier, dest_dir=None, **kwargs): + """ + Update the contents of a wheel in a generic way. The modifier should + be a callable which expects a dictionary argument: its keys are + archive-entry paths, and its values are absolute filesystem paths + where the contents the corresponding archive entries can be found. The + modifier is free to change the contents of the files pointed to, add + new entries and remove entries, before returning. This method will + extract the entire contents of the wheel to a temporary location, call + the modifier, and then use the passed (and possibly updated) + dictionary to write a new wheel. If ``dest_dir`` is specified, the new + wheel is written there -- otherwise, the original wheel is overwritten. + + The modifier should return True if it updated the wheel, else False. + This method returns the same value the modifier returns. + """ + + def get_version(path_map, info_dir): + version = path = None + key = '%s/%s' % (info_dir, LEGACY_METADATA_FILENAME) + if key not in path_map: + key = '%s/PKG-INFO' % info_dir + if key in path_map: + path = path_map[key] + version = Metadata(path=path).version + return version, path + + def update_version(version, path): + updated = None + try: + NormalizedVersion(version) + i = version.find('-') + if i < 0: + updated = '%s+1' % version + else: + parts = [int(s) for s in version[i + 1:].split('.')] + parts[-1] += 1 + updated = '%s+%s' % (version[:i], '.'.join( + str(i) for i in parts)) + except UnsupportedVersionError: + logger.debug( + 'Cannot update non-compliant (PEP-440) ' + 'version %r', version) + if updated: + md = Metadata(path=path) + md.version = updated + legacy = path.endswith(LEGACY_METADATA_FILENAME) + md.write(path=path, legacy=legacy) + logger.debug('Version updated from %r to %r', version, updated) + + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + record_name = posixpath.join(info_dir, 'RECORD') + with tempdir() as workdir: + with ZipFile(pathname, 'r') as zf: + path_map = {} + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + if u_arcname == record_name: + continue + if '..' in u_arcname: + raise DistlibException('invalid entry in ' + 'wheel: %r' % u_arcname) + zf.extract(zinfo, workdir) + path = os.path.join(workdir, convert_path(u_arcname)) + path_map[u_arcname] = path + + # Remember the version. + original_version, _ = get_version(path_map, info_dir) + # Files extracted. Call the modifier. + modified = modifier(path_map, **kwargs) + if modified: + # Something changed - need to build a new wheel. + current_version, path = get_version(path_map, info_dir) + if current_version and (current_version == original_version): + # Add or update local version to signify changes. + update_version(current_version, path) + # Decide where the new wheel goes. + if dest_dir is None: + fd, newpath = tempfile.mkstemp(suffix='.whl', + prefix='wheel-update-', + dir=workdir) + os.close(fd) + else: + if not os.path.isdir(dest_dir): + raise DistlibException('Not a directory: %r' % + dest_dir) + newpath = os.path.join(dest_dir, self.filename) + archive_paths = list(path_map.items()) + distinfo = os.path.join(workdir, info_dir) + info = distinfo, info_dir + self.write_records(info, workdir, archive_paths) + self.build_zip(newpath, archive_paths) + if dest_dir is None: + shutil.copyfile(newpath, pathname) + return modified + + +def _get_glibc_version(): + import platform + ver = platform.libc_ver() + result = [] + if ver[0] == 'glibc': + for s in ver[1].split('.'): + result.append(int(s) if s.isdigit() else 0) + result = tuple(result) + return result + + +def compatible_tags(): + """ + Return (pyver, abi, arch) tuples compatible with this Python. + """ + versions = [VER_SUFFIX] + major = VER_SUFFIX[0] + for minor in range(sys.version_info[1] - 1, -1, -1): + versions.append(''.join([major, str(minor)])) + + abis = [] + for suffix in _get_suffixes(): + if suffix.startswith('.abi'): + abis.append(suffix.split('.', 2)[1]) + abis.sort() + if ABI != 'none': + abis.insert(0, ABI) + abis.append('none') + result = [] + + arches = [ARCH] + if sys.platform == 'darwin': + m = re.match(r'(\w+)_(\d+)_(\d+)_(\w+)$', ARCH) + if m: + name, major, minor, arch = m.groups() + minor = int(minor) + matches = [arch] + if arch in ('i386', 'ppc'): + matches.append('fat') + if arch in ('i386', 'ppc', 'x86_64'): + matches.append('fat3') + if arch in ('ppc64', 'x86_64'): + matches.append('fat64') + if arch in ('i386', 'x86_64'): + matches.append('intel') + if arch in ('i386', 'x86_64', 'intel', 'ppc', 'ppc64'): + matches.append('universal') + while minor >= 0: + for match in matches: + s = '%s_%s_%s_%s' % (name, major, minor, match) + if s != ARCH: # already there + arches.append(s) + minor -= 1 + + # Most specific - our Python version, ABI and arch + for abi in abis: + for arch in arches: + result.append((''.join((IMP_PREFIX, versions[0])), abi, arch)) + # manylinux + if abi != 'none' and sys.platform.startswith('linux'): + arch = arch.replace('linux_', '') + parts = _get_glibc_version() + if len(parts) == 2: + if parts >= (2, 5): + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux1_%s' % arch)) + if parts >= (2, 12): + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux2010_%s' % arch)) + if parts >= (2, 17): + result.append((''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux2014_%s' % arch)) + result.append( + (''.join((IMP_PREFIX, versions[0])), abi, + 'manylinux_%s_%s_%s' % (parts[0], parts[1], arch))) + + # where no ABI / arch dependency, but IMP_PREFIX dependency + for i, version in enumerate(versions): + result.append((''.join((IMP_PREFIX, version)), 'none', 'any')) + if i == 0: + result.append((''.join((IMP_PREFIX, version[0])), 'none', 'any')) + + # no IMP_PREFIX, ABI or arch dependency + for i, version in enumerate(versions): + result.append((''.join(('py', version)), 'none', 'any')) + if i == 0: + result.append((''.join(('py', version[0])), 'none', 'any')) + + return set(result) + + +COMPATIBLE_TAGS = compatible_tags() + +del compatible_tags + + +def is_compatible(wheel, tags=None): + if not isinstance(wheel, Wheel): + wheel = Wheel(wheel) # assume it's a filename + result = False + if tags is None: + tags = COMPATIBLE_TAGS + for ver, abi, arch in tags: + if ver in wheel.pyver and abi in wheel.abi and arch in wheel.arch: + result = True + break + return result diff --git a/venv/Lib/site-packages/pip/_vendor/distro/__init__.py b/venv/Lib/site-packages/pip/_vendor/distro/__init__.py new file mode 100644 index 00000000000..7686fe85a7c --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distro/__init__.py @@ -0,0 +1,54 @@ +from .distro import ( + NORMALIZED_DISTRO_ID, + NORMALIZED_LSB_ID, + NORMALIZED_OS_ID, + LinuxDistribution, + __version__, + build_number, + codename, + distro_release_attr, + distro_release_info, + id, + info, + like, + linux_distribution, + lsb_release_attr, + lsb_release_info, + major_version, + minor_version, + name, + os_release_attr, + os_release_info, + uname_attr, + uname_info, + version, + version_parts, +) + +__all__ = [ + "NORMALIZED_DISTRO_ID", + "NORMALIZED_LSB_ID", + "NORMALIZED_OS_ID", + "LinuxDistribution", + "build_number", + "codename", + "distro_release_attr", + "distro_release_info", + "id", + "info", + "like", + "linux_distribution", + "lsb_release_attr", + "lsb_release_info", + "major_version", + "minor_version", + "name", + "os_release_attr", + "os_release_info", + "uname_attr", + "uname_info", + "version", + "version_parts", +] + +__version__ = __version__ diff --git a/venv/Lib/site-packages/pip/_vendor/distro/__main__.py b/venv/Lib/site-packages/pip/_vendor/distro/__main__.py new file mode 100644 index 00000000000..0c01d5b08b6 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distro/__main__.py @@ -0,0 +1,4 @@ +from .distro import main + +if __name__ == "__main__": + main() diff --git a/venv/Lib/site-packages/pip/_vendor/distro/distro.py b/venv/Lib/site-packages/pip/_vendor/distro/distro.py new file mode 100644 index 00000000000..78ccdfa402a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/distro/distro.py @@ -0,0 +1,1403 @@ +#!/usr/bin/env python +# Copyright 2015-2021 Nir Cohen +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +The ``distro`` package (``distro`` stands for Linux Distribution) provides +information about the Linux distribution it runs on, such as a reliable +machine-readable distro ID, or version information. + +It is the recommended replacement for Python's original +:py:func:`platform.linux_distribution` function, but it provides much more +functionality. An alternative implementation became necessary because Python +3.5 deprecated this function, and Python 3.8 removed it altogether. Its +predecessor function :py:func:`platform.dist` was already deprecated since +Python 2.6 and removed in Python 3.8. Still, there are many cases in which +access to OS distribution information is needed. See `Python issue 1322 +`_ for more information. +""" + +import argparse +import json +import logging +import os +import re +import shlex +import subprocess +import sys +import warnings +from typing import ( + Any, + Callable, + Dict, + Iterable, + Optional, + Sequence, + TextIO, + Tuple, + Type, +) + +try: + from typing import TypedDict +except ImportError: + # Python 3.7 + TypedDict = dict + +__version__ = "1.9.0" + + +class VersionDict(TypedDict): + major: str + minor: str + build_number: str + + +class InfoDict(TypedDict): + id: str + version: str + version_parts: VersionDict + like: str + codename: str + + +_UNIXCONFDIR = os.environ.get("UNIXCONFDIR", "/etc") +_UNIXUSRLIBDIR = os.environ.get("UNIXUSRLIBDIR", "/usr/lib") +_OS_RELEASE_BASENAME = "os-release" + +#: Translation table for normalizing the "ID" attribute defined in os-release +#: files, for use by the :func:`distro.id` method. +#: +#: * Key: Value as defined in the os-release file, translated to lower case, +#: with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_OS_ID = { + "ol": "oracle", # Oracle Linux + "opensuse-leap": "opensuse", # Newer versions of OpenSuSE report as opensuse-leap +} + +#: Translation table for normalizing the "Distributor ID" attribute returned by +#: the lsb_release command, for use by the :func:`distro.id` method. +#: +#: * Key: Value as returned by the lsb_release command, translated to lower +#: case, with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_LSB_ID = { + "enterpriseenterpriseas": "oracle", # Oracle Enterprise Linux 4 + "enterpriseenterpriseserver": "oracle", # Oracle Linux 5 + "redhatenterpriseworkstation": "rhel", # RHEL 6, 7 Workstation + "redhatenterpriseserver": "rhel", # RHEL 6, 7 Server + "redhatenterprisecomputenode": "rhel", # RHEL 6 ComputeNode +} + +#: Translation table for normalizing the distro ID derived from the file name +#: of distro release files, for use by the :func:`distro.id` method. +#: +#: * Key: Value as derived from the file name of a distro release file, +#: translated to lower case, with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_DISTRO_ID = { + "redhat": "rhel", # RHEL 6.x, 7.x +} + +# Pattern for content of distro release file (reversed) +_DISTRO_RELEASE_CONTENT_REVERSED_PATTERN = re.compile( + r"(?:[^)]*\)(.*)\()? *(?:STL )?([\d.+\-a-z]*\d) *(?:esaeler *)?(.+)" +) + +# Pattern for base file name of distro release file +_DISTRO_RELEASE_BASENAME_PATTERN = re.compile(r"(\w+)[-_](release|version)$") + +# Base file names to be looked up for if _UNIXCONFDIR is not readable. +_DISTRO_RELEASE_BASENAMES = [ + "SuSE-release", + "altlinux-release", + "arch-release", + "base-release", + "centos-release", + "fedora-release", + "gentoo-release", + "mageia-release", + "mandrake-release", + "mandriva-release", + "mandrivalinux-release", + "manjaro-release", + "oracle-release", + "redhat-release", + "rocky-release", + "sl-release", + "slackware-version", +] + +# Base file names to be ignored when searching for distro release file +_DISTRO_RELEASE_IGNORE_BASENAMES = ( + "debian_version", + "lsb-release", + "oem-release", + _OS_RELEASE_BASENAME, + "system-release", + "plesk-release", + "iredmail-release", + "board-release", + "ec2_version", +) + + +def linux_distribution(full_distribution_name: bool = True) -> Tuple[str, str, str]: + """ + .. deprecated:: 1.6.0 + + :func:`distro.linux_distribution()` is deprecated. It should only be + used as a compatibility shim with Python's + :py:func:`platform.linux_distribution()`. Please use :func:`distro.id`, + :func:`distro.version` and :func:`distro.name` instead. + + Return information about the current OS distribution as a tuple + ``(id_name, version, codename)`` with items as follows: + + * ``id_name``: If *full_distribution_name* is false, the result of + :func:`distro.id`. Otherwise, the result of :func:`distro.name`. + + * ``version``: The result of :func:`distro.version`. + + * ``codename``: The extra item (usually in parentheses) after the + os-release version number, or the result of :func:`distro.codename`. + + The interface of this function is compatible with the original + :py:func:`platform.linux_distribution` function, supporting a subset of + its parameters. + + The data it returns may not exactly be the same, because it uses more data + sources than the original function, and that may lead to different data if + the OS distribution is not consistent across multiple data sources it + provides (there are indeed such distributions ...). + + Another reason for differences is the fact that the :func:`distro.id` + method normalizes the distro ID string to a reliable machine-readable value + for a number of popular OS distributions. + """ + warnings.warn( + "distro.linux_distribution() is deprecated. It should only be used as a " + "compatibility shim with Python's platform.linux_distribution(). Please use " + "distro.id(), distro.version() and distro.name() instead.", + DeprecationWarning, + stacklevel=2, + ) + return _distro.linux_distribution(full_distribution_name) + + +def id() -> str: + """ + Return the distro ID of the current distribution, as a + machine-readable string. + + For a number of OS distributions, the returned distro ID value is + *reliable*, in the sense that it is documented and that it does not change + across releases of the distribution. + + This package maintains the following reliable distro ID values: + + ============== ========================================= + Distro ID Distribution + ============== ========================================= + "ubuntu" Ubuntu + "debian" Debian + "rhel" RedHat Enterprise Linux + "centos" CentOS + "fedora" Fedora + "sles" SUSE Linux Enterprise Server + "opensuse" openSUSE + "amzn" Amazon Linux + "arch" Arch Linux + "buildroot" Buildroot + "cloudlinux" CloudLinux OS + "exherbo" Exherbo Linux + "gentoo" GenToo Linux + "ibm_powerkvm" IBM PowerKVM + "kvmibm" KVM for IBM z Systems + "linuxmint" Linux Mint + "mageia" Mageia + "mandriva" Mandriva Linux + "parallels" Parallels + "pidora" Pidora + "raspbian" Raspbian + "oracle" Oracle Linux (and Oracle Enterprise Linux) + "scientific" Scientific Linux + "slackware" Slackware + "xenserver" XenServer + "openbsd" OpenBSD + "netbsd" NetBSD + "freebsd" FreeBSD + "midnightbsd" MidnightBSD + "rocky" Rocky Linux + "aix" AIX + "guix" Guix System + "altlinux" ALT Linux + ============== ========================================= + + If you have a need to get distros for reliable IDs added into this set, + or if you find that the :func:`distro.id` function returns a different + distro ID for one of the listed distros, please create an issue in the + `distro issue tracker`_. + + **Lookup hierarchy and transformations:** + + First, the ID is obtained from the following sources, in the specified + order. The first available and non-empty value is used: + + * the value of the "ID" attribute of the os-release file, + + * the value of the "Distributor ID" attribute returned by the lsb_release + command, + + * the first part of the file name of the distro release file, + + The so determined ID value then passes the following transformations, + before it is returned by this method: + + * it is translated to lower case, + + * blanks (which should not be there anyway) are translated to underscores, + + * a normalization of the ID is performed, based upon + `normalization tables`_. The purpose of this normalization is to ensure + that the ID is as reliable as possible, even across incompatible changes + in the OS distributions. A common reason for an incompatible change is + the addition of an os-release file, or the addition of the lsb_release + command, with ID values that differ from what was previously determined + from the distro release file name. + """ + return _distro.id() + + +def name(pretty: bool = False) -> str: + """ + Return the name of the current OS distribution, as a human-readable + string. + + If *pretty* is false, the name is returned without version or codename. + (e.g. "CentOS Linux") + + If *pretty* is true, the version and codename are appended. + (e.g. "CentOS Linux 7.1.1503 (Core)") + + **Lookup hierarchy:** + + The name is obtained from the following sources, in the specified order. + The first available and non-empty value is used: + + * If *pretty* is false: + + - the value of the "NAME" attribute of the os-release file, + + - the value of the "Distributor ID" attribute returned by the lsb_release + command, + + - the value of the "" field of the distro release file. + + * If *pretty* is true: + + - the value of the "PRETTY_NAME" attribute of the os-release file, + + - the value of the "Description" attribute returned by the lsb_release + command, + + - the value of the "" field of the distro release file, appended + with the value of the pretty version ("" and "" + fields) of the distro release file, if available. + """ + return _distro.name(pretty) + + +def version(pretty: bool = False, best: bool = False) -> str: + """ + Return the version of the current OS distribution, as a human-readable + string. + + If *pretty* is false, the version is returned without codename (e.g. + "7.0"). + + If *pretty* is true, the codename in parenthesis is appended, if the + codename is non-empty (e.g. "7.0 (Maipo)"). + + Some distributions provide version numbers with different precisions in + the different sources of distribution information. Examining the different + sources in a fixed priority order does not always yield the most precise + version (e.g. for Debian 8.2, or CentOS 7.1). + + Some other distributions may not provide this kind of information. In these + cases, an empty string would be returned. This behavior can be observed + with rolling releases distributions (e.g. Arch Linux). + + The *best* parameter can be used to control the approach for the returned + version: + + If *best* is false, the first non-empty version number in priority order of + the examined sources is returned. + + If *best* is true, the most precise version number out of all examined + sources is returned. + + **Lookup hierarchy:** + + In all cases, the version number is obtained from the following sources. + If *best* is false, this order represents the priority order: + + * the value of the "VERSION_ID" attribute of the os-release file, + * the value of the "Release" attribute returned by the lsb_release + command, + * the version number parsed from the "" field of the first line + of the distro release file, + * the version number parsed from the "PRETTY_NAME" attribute of the + os-release file, if it follows the format of the distro release files. + * the version number parsed from the "Description" attribute returned by + the lsb_release command, if it follows the format of the distro release + files. + """ + return _distro.version(pretty, best) + + +def version_parts(best: bool = False) -> Tuple[str, str, str]: + """ + Return the version of the current OS distribution as a tuple + ``(major, minor, build_number)`` with items as follows: + + * ``major``: The result of :func:`distro.major_version`. + + * ``minor``: The result of :func:`distro.minor_version`. + + * ``build_number``: The result of :func:`distro.build_number`. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.version_parts(best) + + +def major_version(best: bool = False) -> str: + """ + Return the major version of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The major version is the first + part of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.major_version(best) + + +def minor_version(best: bool = False) -> str: + """ + Return the minor version of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The minor version is the second + part of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.minor_version(best) + + +def build_number(best: bool = False) -> str: + """ + Return the build number of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The build number is the third part + of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.build_number(best) + + +def like() -> str: + """ + Return a space-separated list of distro IDs of distributions that are + closely related to the current OS distribution in regards to packaging + and programming interfaces, for example distributions the current + distribution is a derivative from. + + **Lookup hierarchy:** + + This information item is only provided by the os-release file. + For details, see the description of the "ID_LIKE" attribute in the + `os-release man page + `_. + """ + return _distro.like() + + +def codename() -> str: + """ + Return the codename for the release of the current OS distribution, + as a string. + + If the distribution does not have a codename, an empty string is returned. + + Note that the returned codename is not always really a codename. For + example, openSUSE returns "x86_64". This function does not handle such + cases in any special way and just returns the string it finds, if any. + + **Lookup hierarchy:** + + * the codename within the "VERSION" attribute of the os-release file, if + provided, + + * the value of the "Codename" attribute returned by the lsb_release + command, + + * the value of the "" field of the distro release file. + """ + return _distro.codename() + + +def info(pretty: bool = False, best: bool = False) -> InfoDict: + """ + Return certain machine-readable information items about the current OS + distribution in a dictionary, as shown in the following example: + + .. sourcecode:: python + + { + 'id': 'rhel', + 'version': '7.0', + 'version_parts': { + 'major': '7', + 'minor': '0', + 'build_number': '' + }, + 'like': 'fedora', + 'codename': 'Maipo' + } + + The dictionary structure and keys are always the same, regardless of which + information items are available in the underlying data sources. The values + for the various keys are as follows: + + * ``id``: The result of :func:`distro.id`. + + * ``version``: The result of :func:`distro.version`. + + * ``version_parts -> major``: The result of :func:`distro.major_version`. + + * ``version_parts -> minor``: The result of :func:`distro.minor_version`. + + * ``version_parts -> build_number``: The result of + :func:`distro.build_number`. + + * ``like``: The result of :func:`distro.like`. + + * ``codename``: The result of :func:`distro.codename`. + + For a description of the *pretty* and *best* parameters, see the + :func:`distro.version` method. + """ + return _distro.info(pretty, best) + + +def os_release_info() -> Dict[str, str]: + """ + Return a dictionary containing key-value pairs for the information items + from the os-release file data source of the current OS distribution. + + See `os-release file`_ for details about these information items. + """ + return _distro.os_release_info() + + +def lsb_release_info() -> Dict[str, str]: + """ + Return a dictionary containing key-value pairs for the information items + from the lsb_release command data source of the current OS distribution. + + See `lsb_release command output`_ for details about these information + items. + """ + return _distro.lsb_release_info() + + +def distro_release_info() -> Dict[str, str]: + """ + Return a dictionary containing key-value pairs for the information items + from the distro release file data source of the current OS distribution. + + See `distro release file`_ for details about these information items. + """ + return _distro.distro_release_info() + + +def uname_info() -> Dict[str, str]: + """ + Return a dictionary containing key-value pairs for the information items + from the distro release file data source of the current OS distribution. + """ + return _distro.uname_info() + + +def os_release_attr(attribute: str) -> str: + """ + Return a single named information item from the os-release file data source + of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `os-release file`_ for details about these information items. + """ + return _distro.os_release_attr(attribute) + + +def lsb_release_attr(attribute: str) -> str: + """ + Return a single named information item from the lsb_release command output + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `lsb_release command output`_ for details about these information + items. + """ + return _distro.lsb_release_attr(attribute) + + +def distro_release_attr(attribute: str) -> str: + """ + Return a single named information item from the distro release file + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `distro release file`_ for details about these information items. + """ + return _distro.distro_release_attr(attribute) + + +def uname_attr(attribute: str) -> str: + """ + Return a single named information item from the distro release file + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + """ + return _distro.uname_attr(attribute) + + +try: + from functools import cached_property +except ImportError: + # Python < 3.8 + class cached_property: # type: ignore + """A version of @property which caches the value. On access, it calls the + underlying function and sets the value in `__dict__` so future accesses + will not re-call the property. + """ + + def __init__(self, f: Callable[[Any], Any]) -> None: + self._fname = f.__name__ + self._f = f + + def __get__(self, obj: Any, owner: Type[Any]) -> Any: + assert obj is not None, f"call {self._fname} on an instance" + ret = obj.__dict__[self._fname] = self._f(obj) + return ret + + +class LinuxDistribution: + """ + Provides information about a OS distribution. + + This package creates a private module-global instance of this class with + default initialization arguments, that is used by the + `consolidated accessor functions`_ and `single source accessor functions`_. + By using default initialization arguments, that module-global instance + returns data about the current OS distribution (i.e. the distro this + package runs on). + + Normally, it is not necessary to create additional instances of this class. + However, in situations where control is needed over the exact data sources + that are used, instances of this class can be created with a specific + distro release file, or a specific os-release file, or without invoking the + lsb_release command. + """ + + def __init__( + self, + include_lsb: Optional[bool] = None, + os_release_file: str = "", + distro_release_file: str = "", + include_uname: Optional[bool] = None, + root_dir: Optional[str] = None, + include_oslevel: Optional[bool] = None, + ) -> None: + """ + The initialization method of this class gathers information from the + available data sources, and stores that in private instance attributes. + Subsequent access to the information items uses these private instance + attributes, so that the data sources are read only once. + + Parameters: + + * ``include_lsb`` (bool): Controls whether the + `lsb_release command output`_ is included as a data source. + + If the lsb_release command is not available in the program execution + path, the data source for the lsb_release command will be empty. + + * ``os_release_file`` (string): The path name of the + `os-release file`_ that is to be used as a data source. + + An empty string (the default) will cause the default path name to + be used (see `os-release file`_ for details). + + If the specified or defaulted os-release file does not exist, the + data source for the os-release file will be empty. + + * ``distro_release_file`` (string): The path name of the + `distro release file`_ that is to be used as a data source. + + An empty string (the default) will cause a default search algorithm + to be used (see `distro release file`_ for details). + + If the specified distro release file does not exist, or if no default + distro release file can be found, the data source for the distro + release file will be empty. + + * ``include_uname`` (bool): Controls whether uname command output is + included as a data source. If the uname command is not available in + the program execution path the data source for the uname command will + be empty. + + * ``root_dir`` (string): The absolute path to the root directory to use + to find distro-related information files. Note that ``include_*`` + parameters must not be enabled in combination with ``root_dir``. + + * ``include_oslevel`` (bool): Controls whether (AIX) oslevel command + output is included as a data source. If the oslevel command is not + available in the program execution path the data source will be + empty. + + Public instance attributes: + + * ``os_release_file`` (string): The path name of the + `os-release file`_ that is actually used as a data source. The + empty string if no distro release file is used as a data source. + + * ``distro_release_file`` (string): The path name of the + `distro release file`_ that is actually used as a data source. The + empty string if no distro release file is used as a data source. + + * ``include_lsb`` (bool): The result of the ``include_lsb`` parameter. + This controls whether the lsb information will be loaded. + + * ``include_uname`` (bool): The result of the ``include_uname`` + parameter. This controls whether the uname information will + be loaded. + + * ``include_oslevel`` (bool): The result of the ``include_oslevel`` + parameter. This controls whether (AIX) oslevel information will be + loaded. + + * ``root_dir`` (string): The result of the ``root_dir`` parameter. + The absolute path to the root directory to use to find distro-related + information files. + + Raises: + + * :py:exc:`ValueError`: Initialization parameters combination is not + supported. + + * :py:exc:`OSError`: Some I/O issue with an os-release file or distro + release file. + + * :py:exc:`UnicodeError`: A data source has unexpected characters or + uses an unexpected encoding. + """ + self.root_dir = root_dir + self.etc_dir = os.path.join(root_dir, "etc") if root_dir else _UNIXCONFDIR + self.usr_lib_dir = ( + os.path.join(root_dir, "usr/lib") if root_dir else _UNIXUSRLIBDIR + ) + + if os_release_file: + self.os_release_file = os_release_file + else: + etc_dir_os_release_file = os.path.join(self.etc_dir, _OS_RELEASE_BASENAME) + usr_lib_os_release_file = os.path.join( + self.usr_lib_dir, _OS_RELEASE_BASENAME + ) + + # NOTE: The idea is to respect order **and** have it set + # at all times for API backwards compatibility. + if os.path.isfile(etc_dir_os_release_file) or not os.path.isfile( + usr_lib_os_release_file + ): + self.os_release_file = etc_dir_os_release_file + else: + self.os_release_file = usr_lib_os_release_file + + self.distro_release_file = distro_release_file or "" # updated later + + is_root_dir_defined = root_dir is not None + if is_root_dir_defined and (include_lsb or include_uname or include_oslevel): + raise ValueError( + "Including subprocess data sources from specific root_dir is disallowed" + " to prevent false information" + ) + self.include_lsb = ( + include_lsb if include_lsb is not None else not is_root_dir_defined + ) + self.include_uname = ( + include_uname if include_uname is not None else not is_root_dir_defined + ) + self.include_oslevel = ( + include_oslevel if include_oslevel is not None else not is_root_dir_defined + ) + + def __repr__(self) -> str: + """Return repr of all info""" + return ( + "LinuxDistribution(" + "os_release_file={self.os_release_file!r}, " + "distro_release_file={self.distro_release_file!r}, " + "include_lsb={self.include_lsb!r}, " + "include_uname={self.include_uname!r}, " + "include_oslevel={self.include_oslevel!r}, " + "root_dir={self.root_dir!r}, " + "_os_release_info={self._os_release_info!r}, " + "_lsb_release_info={self._lsb_release_info!r}, " + "_distro_release_info={self._distro_release_info!r}, " + "_uname_info={self._uname_info!r}, " + "_oslevel_info={self._oslevel_info!r})".format(self=self) + ) + + def linux_distribution( + self, full_distribution_name: bool = True + ) -> Tuple[str, str, str]: + """ + Return information about the OS distribution that is compatible + with Python's :func:`platform.linux_distribution`, supporting a subset + of its parameters. + + For details, see :func:`distro.linux_distribution`. + """ + return ( + self.name() if full_distribution_name else self.id(), + self.version(), + self._os_release_info.get("release_codename") or self.codename(), + ) + + def id(self) -> str: + """Return the distro ID of the OS distribution, as a string. + + For details, see :func:`distro.id`. + """ + + def normalize(distro_id: str, table: Dict[str, str]) -> str: + distro_id = distro_id.lower().replace(" ", "_") + return table.get(distro_id, distro_id) + + distro_id = self.os_release_attr("id") + if distro_id: + return normalize(distro_id, NORMALIZED_OS_ID) + + distro_id = self.lsb_release_attr("distributor_id") + if distro_id: + return normalize(distro_id, NORMALIZED_LSB_ID) + + distro_id = self.distro_release_attr("id") + if distro_id: + return normalize(distro_id, NORMALIZED_DISTRO_ID) + + distro_id = self.uname_attr("id") + if distro_id: + return normalize(distro_id, NORMALIZED_DISTRO_ID) + + return "" + + def name(self, pretty: bool = False) -> str: + """ + Return the name of the OS distribution, as a string. + + For details, see :func:`distro.name`. + """ + name = ( + self.os_release_attr("name") + or self.lsb_release_attr("distributor_id") + or self.distro_release_attr("name") + or self.uname_attr("name") + ) + if pretty: + name = self.os_release_attr("pretty_name") or self.lsb_release_attr( + "description" + ) + if not name: + name = self.distro_release_attr("name") or self.uname_attr("name") + version = self.version(pretty=True) + if version: + name = f"{name} {version}" + return name or "" + + def version(self, pretty: bool = False, best: bool = False) -> str: + """ + Return the version of the OS distribution, as a string. + + For details, see :func:`distro.version`. + """ + versions = [ + self.os_release_attr("version_id"), + self.lsb_release_attr("release"), + self.distro_release_attr("version_id"), + self._parse_distro_release_content(self.os_release_attr("pretty_name")).get( + "version_id", "" + ), + self._parse_distro_release_content( + self.lsb_release_attr("description") + ).get("version_id", ""), + self.uname_attr("release"), + ] + if self.uname_attr("id").startswith("aix"): + # On AIX platforms, prefer oslevel command output. + versions.insert(0, self.oslevel_info()) + elif self.id() == "debian" or "debian" in self.like().split(): + # On Debian-like, add debian_version file content to candidates list. + versions.append(self._debian_version) + version = "" + if best: + # This algorithm uses the last version in priority order that has + # the best precision. If the versions are not in conflict, that + # does not matter; otherwise, using the last one instead of the + # first one might be considered a surprise. + for v in versions: + if v.count(".") > version.count(".") or version == "": + version = v + else: + for v in versions: + if v != "": + version = v + break + if pretty and version and self.codename(): + version = f"{version} ({self.codename()})" + return version + + def version_parts(self, best: bool = False) -> Tuple[str, str, str]: + """ + Return the version of the OS distribution, as a tuple of version + numbers. + + For details, see :func:`distro.version_parts`. + """ + version_str = self.version(best=best) + if version_str: + version_regex = re.compile(r"(\d+)\.?(\d+)?\.?(\d+)?") + matches = version_regex.match(version_str) + if matches: + major, minor, build_number = matches.groups() + return major, minor or "", build_number or "" + return "", "", "" + + def major_version(self, best: bool = False) -> str: + """ + Return the major version number of the current distribution. + + For details, see :func:`distro.major_version`. + """ + return self.version_parts(best)[0] + + def minor_version(self, best: bool = False) -> str: + """ + Return the minor version number of the current distribution. + + For details, see :func:`distro.minor_version`. + """ + return self.version_parts(best)[1] + + def build_number(self, best: bool = False) -> str: + """ + Return the build number of the current distribution. + + For details, see :func:`distro.build_number`. + """ + return self.version_parts(best)[2] + + def like(self) -> str: + """ + Return the IDs of distributions that are like the OS distribution. + + For details, see :func:`distro.like`. + """ + return self.os_release_attr("id_like") or "" + + def codename(self) -> str: + """ + Return the codename of the OS distribution. + + For details, see :func:`distro.codename`. + """ + try: + # Handle os_release specially since distros might purposefully set + # this to empty string to have no codename + return self._os_release_info["codename"] + except KeyError: + return ( + self.lsb_release_attr("codename") + or self.distro_release_attr("codename") + or "" + ) + + def info(self, pretty: bool = False, best: bool = False) -> InfoDict: + """ + Return certain machine-readable information about the OS + distribution. + + For details, see :func:`distro.info`. + """ + return InfoDict( + id=self.id(), + version=self.version(pretty, best), + version_parts=VersionDict( + major=self.major_version(best), + minor=self.minor_version(best), + build_number=self.build_number(best), + ), + like=self.like(), + codename=self.codename(), + ) + + def os_release_info(self) -> Dict[str, str]: + """ + Return a dictionary containing key-value pairs for the information + items from the os-release file data source of the OS distribution. + + For details, see :func:`distro.os_release_info`. + """ + return self._os_release_info + + def lsb_release_info(self) -> Dict[str, str]: + """ + Return a dictionary containing key-value pairs for the information + items from the lsb_release command data source of the OS + distribution. + + For details, see :func:`distro.lsb_release_info`. + """ + return self._lsb_release_info + + def distro_release_info(self) -> Dict[str, str]: + """ + Return a dictionary containing key-value pairs for the information + items from the distro release file data source of the OS + distribution. + + For details, see :func:`distro.distro_release_info`. + """ + return self._distro_release_info + + def uname_info(self) -> Dict[str, str]: + """ + Return a dictionary containing key-value pairs for the information + items from the uname command data source of the OS distribution. + + For details, see :func:`distro.uname_info`. + """ + return self._uname_info + + def oslevel_info(self) -> str: + """ + Return AIX' oslevel command output. + """ + return self._oslevel_info + + def os_release_attr(self, attribute: str) -> str: + """ + Return a single named information item from the os-release file data + source of the OS distribution. + + For details, see :func:`distro.os_release_attr`. + """ + return self._os_release_info.get(attribute, "") + + def lsb_release_attr(self, attribute: str) -> str: + """ + Return a single named information item from the lsb_release command + output data source of the OS distribution. + + For details, see :func:`distro.lsb_release_attr`. + """ + return self._lsb_release_info.get(attribute, "") + + def distro_release_attr(self, attribute: str) -> str: + """ + Return a single named information item from the distro release file + data source of the OS distribution. + + For details, see :func:`distro.distro_release_attr`. + """ + return self._distro_release_info.get(attribute, "") + + def uname_attr(self, attribute: str) -> str: + """ + Return a single named information item from the uname command + output data source of the OS distribution. + + For details, see :func:`distro.uname_attr`. + """ + return self._uname_info.get(attribute, "") + + @cached_property + def _os_release_info(self) -> Dict[str, str]: + """ + Get the information items from the specified os-release file. + + Returns: + A dictionary containing all information items. + """ + if os.path.isfile(self.os_release_file): + with open(self.os_release_file, encoding="utf-8") as release_file: + return self._parse_os_release_content(release_file) + return {} + + @staticmethod + def _parse_os_release_content(lines: TextIO) -> Dict[str, str]: + """ + Parse the lines of an os-release file. + + Parameters: + + * lines: Iterable through the lines in the os-release file. + Each line must be a unicode string or a UTF-8 encoded byte + string. + + Returns: + A dictionary containing all information items. + """ + props = {} + lexer = shlex.shlex(lines, posix=True) + lexer.whitespace_split = True + + tokens = list(lexer) + for token in tokens: + # At this point, all shell-like parsing has been done (i.e. + # comments processed, quotes and backslash escape sequences + # processed, multi-line values assembled, trailing newlines + # stripped, etc.), so the tokens are now either: + # * variable assignments: var=value + # * commands or their arguments (not allowed in os-release) + # Ignore any tokens that are not variable assignments + if "=" in token: + k, v = token.split("=", 1) + props[k.lower()] = v + + if "version" in props: + # extract release codename (if any) from version attribute + match = re.search(r"\((\D+)\)|,\s*(\D+)", props["version"]) + if match: + release_codename = match.group(1) or match.group(2) + props["codename"] = props["release_codename"] = release_codename + + if "version_codename" in props: + # os-release added a version_codename field. Use that in + # preference to anything else Note that some distros purposefully + # do not have code names. They should be setting + # version_codename="" + props["codename"] = props["version_codename"] + elif "ubuntu_codename" in props: + # Same as above but a non-standard field name used on older Ubuntus + props["codename"] = props["ubuntu_codename"] + + return props + + @cached_property + def _lsb_release_info(self) -> Dict[str, str]: + """ + Get the information items from the lsb_release command output. + + Returns: + A dictionary containing all information items. + """ + if not self.include_lsb: + return {} + try: + cmd = ("lsb_release", "-a") + stdout = subprocess.check_output(cmd, stderr=subprocess.DEVNULL) + # Command not found or lsb_release returned error + except (OSError, subprocess.CalledProcessError): + return {} + content = self._to_str(stdout).splitlines() + return self._parse_lsb_release_content(content) + + @staticmethod + def _parse_lsb_release_content(lines: Iterable[str]) -> Dict[str, str]: + """ + Parse the output of the lsb_release command. + + Parameters: + + * lines: Iterable through the lines of the lsb_release output. + Each line must be a unicode string or a UTF-8 encoded byte + string. + + Returns: + A dictionary containing all information items. + """ + props = {} + for line in lines: + kv = line.strip("\n").split(":", 1) + if len(kv) != 2: + # Ignore lines without colon. + continue + k, v = kv + props.update({k.replace(" ", "_").lower(): v.strip()}) + return props + + @cached_property + def _uname_info(self) -> Dict[str, str]: + if not self.include_uname: + return {} + try: + cmd = ("uname", "-rs") + stdout = subprocess.check_output(cmd, stderr=subprocess.DEVNULL) + except OSError: + return {} + content = self._to_str(stdout).splitlines() + return self._parse_uname_content(content) + + @cached_property + def _oslevel_info(self) -> str: + if not self.include_oslevel: + return "" + try: + stdout = subprocess.check_output("oslevel", stderr=subprocess.DEVNULL) + except (OSError, subprocess.CalledProcessError): + return "" + return self._to_str(stdout).strip() + + @cached_property + def _debian_version(self) -> str: + try: + with open( + os.path.join(self.etc_dir, "debian_version"), encoding="ascii" + ) as fp: + return fp.readline().rstrip() + except FileNotFoundError: + return "" + + @staticmethod + def _parse_uname_content(lines: Sequence[str]) -> Dict[str, str]: + if not lines: + return {} + props = {} + match = re.search(r"^([^\s]+)\s+([\d\.]+)", lines[0].strip()) + if match: + name, version = match.groups() + + # This is to prevent the Linux kernel version from + # appearing as the 'best' version on otherwise + # identifiable distributions. + if name == "Linux": + return {} + props["id"] = name.lower() + props["name"] = name + props["release"] = version + return props + + @staticmethod + def _to_str(bytestring: bytes) -> str: + encoding = sys.getfilesystemencoding() + return bytestring.decode(encoding) + + @cached_property + def _distro_release_info(self) -> Dict[str, str]: + """ + Get the information items from the specified distro release file. + + Returns: + A dictionary containing all information items. + """ + if self.distro_release_file: + # If it was specified, we use it and parse what we can, even if + # its file name or content does not match the expected pattern. + distro_info = self._parse_distro_release_file(self.distro_release_file) + basename = os.path.basename(self.distro_release_file) + # The file name pattern for user-specified distro release files + # is somewhat more tolerant (compared to when searching for the + # file), because we want to use what was specified as best as + # possible. + match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) + else: + try: + basenames = [ + basename + for basename in os.listdir(self.etc_dir) + if basename not in _DISTRO_RELEASE_IGNORE_BASENAMES + and os.path.isfile(os.path.join(self.etc_dir, basename)) + ] + # We sort for repeatability in cases where there are multiple + # distro specific files; e.g. CentOS, Oracle, Enterprise all + # containing `redhat-release` on top of their own. + basenames.sort() + except OSError: + # This may occur when /etc is not readable but we can't be + # sure about the *-release files. Check common entries of + # /etc for information. If they turn out to not be there the + # error is handled in `_parse_distro_release_file()`. + basenames = _DISTRO_RELEASE_BASENAMES + for basename in basenames: + match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) + if match is None: + continue + filepath = os.path.join(self.etc_dir, basename) + distro_info = self._parse_distro_release_file(filepath) + # The name is always present if the pattern matches. + if "name" not in distro_info: + continue + self.distro_release_file = filepath + break + else: # the loop didn't "break": no candidate. + return {} + + if match is not None: + distro_info["id"] = match.group(1) + + # CloudLinux < 7: manually enrich info with proper id. + if "cloudlinux" in distro_info.get("name", "").lower(): + distro_info["id"] = "cloudlinux" + + return distro_info + + def _parse_distro_release_file(self, filepath: str) -> Dict[str, str]: + """ + Parse a distro release file. + + Parameters: + + * filepath: Path name of the distro release file. + + Returns: + A dictionary containing all information items. + """ + try: + with open(filepath, encoding="utf-8") as fp: + # Only parse the first line. For instance, on SLES there + # are multiple lines. We don't want them... + return self._parse_distro_release_content(fp.readline()) + except OSError: + # Ignore not being able to read a specific, seemingly version + # related file. + # See https://github.com/python-distro/distro/issues/162 + return {} + + @staticmethod + def _parse_distro_release_content(line: str) -> Dict[str, str]: + """ + Parse a line from a distro release file. + + Parameters: + * line: Line from the distro release file. Must be a unicode string + or a UTF-8 encoded byte string. + + Returns: + A dictionary containing all information items. + """ + matches = _DISTRO_RELEASE_CONTENT_REVERSED_PATTERN.match(line.strip()[::-1]) + distro_info = {} + if matches: + # regexp ensures non-None + distro_info["name"] = matches.group(3)[::-1] + if matches.group(2): + distro_info["version_id"] = matches.group(2)[::-1] + if matches.group(1): + distro_info["codename"] = matches.group(1)[::-1] + elif line: + distro_info["name"] = line.strip() + return distro_info + + +_distro = LinuxDistribution() + + +def main() -> None: + logger = logging.getLogger(__name__) + logger.setLevel(logging.DEBUG) + logger.addHandler(logging.StreamHandler(sys.stdout)) + + parser = argparse.ArgumentParser(description="OS distro info tool") + parser.add_argument( + "--json", "-j", help="Output in machine readable format", action="store_true" + ) + + parser.add_argument( + "--root-dir", + "-r", + type=str, + dest="root_dir", + help="Path to the root filesystem directory (defaults to /)", + ) + + args = parser.parse_args() + + if args.root_dir: + dist = LinuxDistribution( + include_lsb=False, + include_uname=False, + include_oslevel=False, + root_dir=args.root_dir, + ) + else: + dist = _distro + + if args.json: + logger.info(json.dumps(dist.info(), indent=4, sort_keys=True)) + else: + logger.info("Name: %s", dist.name(pretty=True)) + distribution_version = dist.version(pretty=True) + logger.info("Version: %s", distribution_version) + distribution_codename = dist.codename() + logger.info("Codename: %s", distribution_codename) + + +if __name__ == "__main__": + main() diff --git a/venv/Lib/site-packages/pip/_vendor/distro/py.typed b/venv/Lib/site-packages/pip/_vendor/distro/py.typed new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_vendor/idna/__init__.py b/venv/Lib/site-packages/pip/_vendor/idna/__init__.py new file mode 100644 index 00000000000..a40eeafcc91 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/idna/__init__.py @@ -0,0 +1,44 @@ +from .package_data import __version__ +from .core import ( + IDNABidiError, + IDNAError, + InvalidCodepoint, + InvalidCodepointContext, + alabel, + check_bidi, + check_hyphen_ok, + check_initial_combiner, + check_label, + check_nfc, + decode, + encode, + ulabel, + uts46_remap, + valid_contextj, + valid_contexto, + valid_label_length, + valid_string_length, +) +from .intranges import intranges_contain + +__all__ = [ + "IDNABidiError", + "IDNAError", + "InvalidCodepoint", + "InvalidCodepointContext", + "alabel", + "check_bidi", + "check_hyphen_ok", + "check_initial_combiner", + "check_label", + "check_nfc", + "decode", + "encode", + "intranges_contain", + "ulabel", + "uts46_remap", + "valid_contextj", + "valid_contexto", + "valid_label_length", + "valid_string_length", +] diff --git a/venv/Lib/site-packages/pip/_vendor/idna/codec.py b/venv/Lib/site-packages/pip/_vendor/idna/codec.py new file mode 100644 index 00000000000..c855a4de6d7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/idna/codec.py @@ -0,0 +1,118 @@ +from .core import encode, decode, alabel, ulabel, IDNAError +import codecs +import re +from typing import Any, Tuple, Optional + +_unicode_dots_re = re.compile('[\u002e\u3002\uff0e\uff61]') + +class Codec(codecs.Codec): + + def encode(self, data: str, errors: str = 'strict') -> Tuple[bytes, int]: + if errors != 'strict': + raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + + if not data: + return b"", 0 + + return encode(data), len(data) + + def decode(self, data: bytes, errors: str = 'strict') -> Tuple[str, int]: + if errors != 'strict': + raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + + if not data: + return '', 0 + + return decode(data), len(data) + +class IncrementalEncoder(codecs.BufferedIncrementalEncoder): + def _buffer_encode(self, data: str, errors: str, final: bool) -> Tuple[bytes, int]: + if errors != 'strict': + raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + + if not data: + return b'', 0 + + labels = _unicode_dots_re.split(data) + trailing_dot = b'' + if labels: + if not labels[-1]: + trailing_dot = b'.' + del labels[-1] + elif not final: + # Keep potentially unfinished label until the next call + del labels[-1] + if labels: + trailing_dot = b'.' + + result = [] + size = 0 + for label in labels: + result.append(alabel(label)) + if size: + size += 1 + size += len(label) + + # Join with U+002E + result_bytes = b'.'.join(result) + trailing_dot + size += len(trailing_dot) + return result_bytes, size + +class IncrementalDecoder(codecs.BufferedIncrementalDecoder): + def _buffer_decode(self, data: Any, errors: str, final: bool) -> Tuple[str, int]: + if errors != 'strict': + raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + + if not data: + return ('', 0) + + if not isinstance(data, str): + data = str(data, 'ascii') + + labels = _unicode_dots_re.split(data) + trailing_dot = '' + if labels: + if not labels[-1]: + trailing_dot = '.' + del labels[-1] + elif not final: + # Keep potentially unfinished label until the next call + del labels[-1] + if labels: + trailing_dot = '.' + + result = [] + size = 0 + for label in labels: + result.append(ulabel(label)) + if size: + size += 1 + size += len(label) + + result_str = '.'.join(result) + trailing_dot + size += len(trailing_dot) + return (result_str, size) + + +class StreamWriter(Codec, codecs.StreamWriter): + pass + + +class StreamReader(Codec, codecs.StreamReader): + pass + + +def search_function(name: str) -> Optional[codecs.CodecInfo]: + if name != 'idna2008': + return None + return codecs.CodecInfo( + name=name, + encode=Codec().encode, + decode=Codec().decode, + incrementalencoder=IncrementalEncoder, + incrementaldecoder=IncrementalDecoder, + streamwriter=StreamWriter, + streamreader=StreamReader, + ) + +codecs.register(search_function) diff --git a/venv/Lib/site-packages/pip/_vendor/idna/compat.py b/venv/Lib/site-packages/pip/_vendor/idna/compat.py new file mode 100644 index 00000000000..786e6bda636 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/idna/compat.py @@ -0,0 +1,13 @@ +from .core import * +from .codec import * +from typing import Any, Union + +def ToASCII(label: str) -> bytes: + return encode(label) + +def ToUnicode(label: Union[bytes, bytearray]) -> str: + return decode(label) + +def nameprep(s: Any) -> None: + raise NotImplementedError('IDNA 2008 does not utilise nameprep protocol') + diff --git a/venv/Lib/site-packages/pip/_vendor/idna/core.py b/venv/Lib/site-packages/pip/_vendor/idna/core.py new file mode 100644 index 00000000000..0dae61acdbc --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/idna/core.py @@ -0,0 +1,395 @@ +from . import idnadata +import bisect +import unicodedata +import re +from typing import Union, Optional +from .intranges import intranges_contain + +_virama_combining_class = 9 +_alabel_prefix = b'xn--' +_unicode_dots_re = re.compile('[\u002e\u3002\uff0e\uff61]') + +class IDNAError(UnicodeError): + """ Base exception for all IDNA-encoding related problems """ + pass + + +class IDNABidiError(IDNAError): + """ Exception when bidirectional requirements are not satisfied """ + pass + + +class InvalidCodepoint(IDNAError): + """ Exception when a disallowed or unallocated codepoint is used """ + pass + + +class InvalidCodepointContext(IDNAError): + """ Exception when the codepoint is not valid in the context it is used """ + pass + + +def _combining_class(cp: int) -> int: + v = unicodedata.combining(chr(cp)) + if v == 0: + if not unicodedata.name(chr(cp)): + raise ValueError('Unknown character in unicodedata') + return v + +def _is_script(cp: str, script: str) -> bool: + return intranges_contain(ord(cp), idnadata.scripts[script]) + +def _punycode(s: str) -> bytes: + return s.encode('punycode') + +def _unot(s: int) -> str: + return 'U+{:04X}'.format(s) + + +def valid_label_length(label: Union[bytes, str]) -> bool: + if len(label) > 63: + return False + return True + + +def valid_string_length(label: Union[bytes, str], trailing_dot: bool) -> bool: + if len(label) > (254 if trailing_dot else 253): + return False + return True + + +def check_bidi(label: str, check_ltr: bool = False) -> bool: + # Bidi rules should only be applied if string contains RTL characters + bidi_label = False + for (idx, cp) in enumerate(label, 1): + direction = unicodedata.bidirectional(cp) + if direction == '': + # String likely comes from a newer version of Unicode + raise IDNABidiError('Unknown directionality in label {} at position {}'.format(repr(label), idx)) + if direction in ['R', 'AL', 'AN']: + bidi_label = True + if not bidi_label and not check_ltr: + return True + + # Bidi rule 1 + direction = unicodedata.bidirectional(label[0]) + if direction in ['R', 'AL']: + rtl = True + elif direction == 'L': + rtl = False + else: + raise IDNABidiError('First codepoint in label {} must be directionality L, R or AL'.format(repr(label))) + + valid_ending = False + number_type = None # type: Optional[str] + for (idx, cp) in enumerate(label, 1): + direction = unicodedata.bidirectional(cp) + + if rtl: + # Bidi rule 2 + if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: + raise IDNABidiError('Invalid direction for codepoint at position {} in a right-to-left label'.format(idx)) + # Bidi rule 3 + if direction in ['R', 'AL', 'EN', 'AN']: + valid_ending = True + elif direction != 'NSM': + valid_ending = False + # Bidi rule 4 + if direction in ['AN', 'EN']: + if not number_type: + number_type = direction + else: + if number_type != direction: + raise IDNABidiError('Can not mix numeral types in a right-to-left label') + else: + # Bidi rule 5 + if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: + raise IDNABidiError('Invalid direction for codepoint at position {} in a left-to-right label'.format(idx)) + # Bidi rule 6 + if direction in ['L', 'EN']: + valid_ending = True + elif direction != 'NSM': + valid_ending = False + + if not valid_ending: + raise IDNABidiError('Label ends with illegal codepoint directionality') + + return True + + +def check_initial_combiner(label: str) -> bool: + if unicodedata.category(label[0])[0] == 'M': + raise IDNAError('Label begins with an illegal combining character') + return True + + +def check_hyphen_ok(label: str) -> bool: + if label[2:4] == '--': + raise IDNAError('Label has disallowed hyphens in 3rd and 4th position') + if label[0] == '-' or label[-1] == '-': + raise IDNAError('Label must not start or end with a hyphen') + return True + + +def check_nfc(label: str) -> None: + if unicodedata.normalize('NFC', label) != label: + raise IDNAError('Label must be in Normalization Form C') + + +def valid_contextj(label: str, pos: int) -> bool: + cp_value = ord(label[pos]) + + if cp_value == 0x200c: + + if pos > 0: + if _combining_class(ord(label[pos - 1])) == _virama_combining_class: + return True + + ok = False + for i in range(pos-1, -1, -1): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord('T'): + continue + elif joining_type in [ord('L'), ord('D')]: + ok = True + break + else: + break + + if not ok: + return False + + ok = False + for i in range(pos+1, len(label)): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord('T'): + continue + elif joining_type in [ord('R'), ord('D')]: + ok = True + break + else: + break + return ok + + if cp_value == 0x200d: + + if pos > 0: + if _combining_class(ord(label[pos - 1])) == _virama_combining_class: + return True + return False + + else: + + return False + + +def valid_contexto(label: str, pos: int, exception: bool = False) -> bool: + cp_value = ord(label[pos]) + + if cp_value == 0x00b7: + if 0 < pos < len(label)-1: + if ord(label[pos - 1]) == 0x006c and ord(label[pos + 1]) == 0x006c: + return True + return False + + elif cp_value == 0x0375: + if pos < len(label)-1 and len(label) > 1: + return _is_script(label[pos + 1], 'Greek') + return False + + elif cp_value == 0x05f3 or cp_value == 0x05f4: + if pos > 0: + return _is_script(label[pos - 1], 'Hebrew') + return False + + elif cp_value == 0x30fb: + for cp in label: + if cp == '\u30fb': + continue + if _is_script(cp, 'Hiragana') or _is_script(cp, 'Katakana') or _is_script(cp, 'Han'): + return True + return False + + elif 0x660 <= cp_value <= 0x669: + for cp in label: + if 0x6f0 <= ord(cp) <= 0x06f9: + return False + return True + + elif 0x6f0 <= cp_value <= 0x6f9: + for cp in label: + if 0x660 <= ord(cp) <= 0x0669: + return False + return True + + return False + + +def check_label(label: Union[str, bytes, bytearray]) -> None: + if isinstance(label, (bytes, bytearray)): + label = label.decode('utf-8') + if len(label) == 0: + raise IDNAError('Empty Label') + + check_nfc(label) + check_hyphen_ok(label) + check_initial_combiner(label) + + for (pos, cp) in enumerate(label): + cp_value = ord(cp) + if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']): + continue + elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']): + if not valid_contextj(label, pos): + raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format( + _unot(cp_value), pos+1, repr(label))) + elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']): + if not valid_contexto(label, pos): + raise InvalidCodepointContext('Codepoint {} not allowed at position {} in {}'.format(_unot(cp_value), pos+1, repr(label))) + else: + raise InvalidCodepoint('Codepoint {} at position {} of {} not allowed'.format(_unot(cp_value), pos+1, repr(label))) + + check_bidi(label) + + +def alabel(label: str) -> bytes: + try: + label_bytes = label.encode('ascii') + ulabel(label_bytes) + if not valid_label_length(label_bytes): + raise IDNAError('Label too long') + return label_bytes + except UnicodeEncodeError: + pass + + check_label(label) + label_bytes = _alabel_prefix + _punycode(label) + + if not valid_label_length(label_bytes): + raise IDNAError('Label too long') + + return label_bytes + + +def ulabel(label: Union[str, bytes, bytearray]) -> str: + if not isinstance(label, (bytes, bytearray)): + try: + label_bytes = label.encode('ascii') + except UnicodeEncodeError: + check_label(label) + return label + else: + label_bytes = label + + label_bytes = label_bytes.lower() + if label_bytes.startswith(_alabel_prefix): + label_bytes = label_bytes[len(_alabel_prefix):] + if not label_bytes: + raise IDNAError('Malformed A-label, no Punycode eligible content found') + if label_bytes.decode('ascii')[-1] == '-': + raise IDNAError('A-label must not end with a hyphen') + else: + check_label(label_bytes) + return label_bytes.decode('ascii') + + try: + label = label_bytes.decode('punycode') + except UnicodeError: + raise IDNAError('Invalid A-label') + check_label(label) + return label + + +def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False) -> str: + """Re-map the characters in the string according to UTS46 processing.""" + from .uts46data import uts46data + output = '' + + for pos, char in enumerate(domain): + code_point = ord(char) + try: + uts46row = uts46data[code_point if code_point < 256 else + bisect.bisect_left(uts46data, (code_point, 'Z')) - 1] + status = uts46row[1] + replacement = None # type: Optional[str] + if len(uts46row) == 3: + replacement = uts46row[2] + if (status == 'V' or + (status == 'D' and not transitional) or + (status == '3' and not std3_rules and replacement is None)): + output += char + elif replacement is not None and (status == 'M' or + (status == '3' and not std3_rules) or + (status == 'D' and transitional)): + output += replacement + elif status != 'I': + raise IndexError() + except IndexError: + raise InvalidCodepoint( + 'Codepoint {} not allowed at position {} in {}'.format( + _unot(code_point), pos + 1, repr(domain))) + + return unicodedata.normalize('NFC', output) + + +def encode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False, transitional: bool = False) -> bytes: + if not isinstance(s, str): + try: + s = str(s, 'ascii') + except UnicodeDecodeError: + raise IDNAError('should pass a unicode string to the function rather than a byte string.') + if uts46: + s = uts46_remap(s, std3_rules, transitional) + trailing_dot = False + result = [] + if strict: + labels = s.split('.') + else: + labels = _unicode_dots_re.split(s) + if not labels or labels == ['']: + raise IDNAError('Empty domain') + if labels[-1] == '': + del labels[-1] + trailing_dot = True + for label in labels: + s = alabel(label) + if s: + result.append(s) + else: + raise IDNAError('Empty label') + if trailing_dot: + result.append(b'') + s = b'.'.join(result) + if not valid_string_length(s, trailing_dot): + raise IDNAError('Domain too long') + return s + + +def decode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False) -> str: + try: + if not isinstance(s, str): + s = str(s, 'ascii') + except UnicodeDecodeError: + raise IDNAError('Invalid ASCII in A-label') + if uts46: + s = uts46_remap(s, std3_rules, False) + trailing_dot = False + result = [] + if not strict: + labels = _unicode_dots_re.split(s) + else: + labels = s.split('.') + if not labels or labels == ['']: + raise IDNAError('Empty domain') + if not labels[-1]: + del labels[-1] + trailing_dot = True + for label in labels: + s = ulabel(label) + if s: + result.append(s) + else: + raise IDNAError('Empty label') + if trailing_dot: + result.append('') + return '.'.join(result) diff --git a/venv/Lib/site-packages/pip/_vendor/idna/idnadata.py b/venv/Lib/site-packages/pip/_vendor/idna/idnadata.py new file mode 100644 index 00000000000..c61dcf977e5 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/idna/idnadata.py @@ -0,0 +1,4245 @@ +# This file is automatically generated by tools/idna-data + +__version__ = '15.1.0' +scripts = { + 'Greek': ( + 0x37000000374, + 0x37500000378, + 0x37a0000037e, + 0x37f00000380, + 0x38400000385, + 0x38600000387, + 0x3880000038b, + 0x38c0000038d, + 0x38e000003a2, + 0x3a3000003e2, + 0x3f000000400, + 0x1d2600001d2b, + 0x1d5d00001d62, + 0x1d6600001d6b, + 0x1dbf00001dc0, + 0x1f0000001f16, + 0x1f1800001f1e, + 0x1f2000001f46, + 0x1f4800001f4e, + 0x1f5000001f58, + 0x1f5900001f5a, + 0x1f5b00001f5c, + 0x1f5d00001f5e, + 0x1f5f00001f7e, + 0x1f8000001fb5, + 0x1fb600001fc5, + 0x1fc600001fd4, + 0x1fd600001fdc, + 0x1fdd00001ff0, + 0x1ff200001ff5, + 0x1ff600001fff, + 0x212600002127, + 0xab650000ab66, + 0x101400001018f, + 0x101a0000101a1, + 0x1d2000001d246, + ), + 'Han': ( + 0x2e8000002e9a, + 0x2e9b00002ef4, + 0x2f0000002fd6, + 0x300500003006, + 0x300700003008, + 0x30210000302a, + 0x30380000303c, + 0x340000004dc0, + 0x4e000000a000, + 0xf9000000fa6e, + 0xfa700000fada, + 0x16fe200016fe4, + 0x16ff000016ff2, + 0x200000002a6e0, + 0x2a7000002b73a, + 0x2b7400002b81e, + 0x2b8200002cea2, + 0x2ceb00002ebe1, + 0x2ebf00002ee5e, + 0x2f8000002fa1e, + 0x300000003134b, + 0x31350000323b0, + ), + 'Hebrew': ( + 0x591000005c8, + 0x5d0000005eb, + 0x5ef000005f5, + 0xfb1d0000fb37, + 0xfb380000fb3d, + 0xfb3e0000fb3f, + 0xfb400000fb42, + 0xfb430000fb45, + 0xfb460000fb50, + ), + 'Hiragana': ( + 0x304100003097, + 0x309d000030a0, + 0x1b0010001b120, + 0x1b1320001b133, + 0x1b1500001b153, + 0x1f2000001f201, + ), + 'Katakana': ( + 0x30a1000030fb, + 0x30fd00003100, + 0x31f000003200, + 0x32d0000032ff, + 0x330000003358, + 0xff660000ff70, + 0xff710000ff9e, + 0x1aff00001aff4, + 0x1aff50001affc, + 0x1affd0001afff, + 0x1b0000001b001, + 0x1b1200001b123, + 0x1b1550001b156, + 0x1b1640001b168, + ), +} +joining_types = { + 0xad: 84, + 0x300: 84, + 0x301: 84, + 0x302: 84, + 0x303: 84, + 0x304: 84, + 0x305: 84, + 0x306: 84, + 0x307: 84, + 0x308: 84, + 0x309: 84, + 0x30a: 84, + 0x30b: 84, + 0x30c: 84, + 0x30d: 84, + 0x30e: 84, + 0x30f: 84, + 0x310: 84, + 0x311: 84, + 0x312: 84, + 0x313: 84, + 0x314: 84, + 0x315: 84, + 0x316: 84, + 0x317: 84, + 0x318: 84, + 0x319: 84, + 0x31a: 84, + 0x31b: 84, + 0x31c: 84, + 0x31d: 84, + 0x31e: 84, + 0x31f: 84, + 0x320: 84, + 0x321: 84, + 0x322: 84, + 0x323: 84, + 0x324: 84, + 0x325: 84, + 0x326: 84, + 0x327: 84, + 0x328: 84, + 0x329: 84, + 0x32a: 84, + 0x32b: 84, + 0x32c: 84, + 0x32d: 84, + 0x32e: 84, + 0x32f: 84, + 0x330: 84, + 0x331: 84, + 0x332: 84, + 0x333: 84, + 0x334: 84, + 0x335: 84, + 0x336: 84, + 0x337: 84, + 0x338: 84, + 0x339: 84, + 0x33a: 84, + 0x33b: 84, + 0x33c: 84, + 0x33d: 84, + 0x33e: 84, + 0x33f: 84, + 0x340: 84, + 0x341: 84, + 0x342: 84, + 0x343: 84, + 0x344: 84, + 0x345: 84, + 0x346: 84, + 0x347: 84, + 0x348: 84, + 0x349: 84, + 0x34a: 84, + 0x34b: 84, + 0x34c: 84, + 0x34d: 84, + 0x34e: 84, + 0x34f: 84, + 0x350: 84, + 0x351: 84, + 0x352: 84, + 0x353: 84, + 0x354: 84, + 0x355: 84, + 0x356: 84, + 0x357: 84, + 0x358: 84, + 0x359: 84, + 0x35a: 84, + 0x35b: 84, + 0x35c: 84, + 0x35d: 84, + 0x35e: 84, + 0x35f: 84, + 0x360: 84, + 0x361: 84, + 0x362: 84, + 0x363: 84, + 0x364: 84, + 0x365: 84, + 0x366: 84, + 0x367: 84, + 0x368: 84, + 0x369: 84, + 0x36a: 84, + 0x36b: 84, + 0x36c: 84, + 0x36d: 84, + 0x36e: 84, + 0x36f: 84, + 0x483: 84, + 0x484: 84, + 0x485: 84, + 0x486: 84, + 0x487: 84, + 0x488: 84, + 0x489: 84, + 0x591: 84, + 0x592: 84, + 0x593: 84, + 0x594: 84, + 0x595: 84, + 0x596: 84, + 0x597: 84, + 0x598: 84, + 0x599: 84, + 0x59a: 84, + 0x59b: 84, + 0x59c: 84, + 0x59d: 84, + 0x59e: 84, + 0x59f: 84, + 0x5a0: 84, + 0x5a1: 84, + 0x5a2: 84, + 0x5a3: 84, + 0x5a4: 84, + 0x5a5: 84, + 0x5a6: 84, + 0x5a7: 84, + 0x5a8: 84, + 0x5a9: 84, + 0x5aa: 84, + 0x5ab: 84, + 0x5ac: 84, + 0x5ad: 84, + 0x5ae: 84, + 0x5af: 84, + 0x5b0: 84, + 0x5b1: 84, + 0x5b2: 84, + 0x5b3: 84, + 0x5b4: 84, + 0x5b5: 84, + 0x5b6: 84, + 0x5b7: 84, + 0x5b8: 84, + 0x5b9: 84, + 0x5ba: 84, + 0x5bb: 84, + 0x5bc: 84, + 0x5bd: 84, + 0x5bf: 84, + 0x5c1: 84, + 0x5c2: 84, + 0x5c4: 84, + 0x5c5: 84, + 0x5c7: 84, + 0x610: 84, + 0x611: 84, + 0x612: 84, + 0x613: 84, + 0x614: 84, + 0x615: 84, + 0x616: 84, + 0x617: 84, + 0x618: 84, + 0x619: 84, + 0x61a: 84, + 0x61c: 84, + 0x620: 68, + 0x622: 82, + 0x623: 82, + 0x624: 82, + 0x625: 82, + 0x626: 68, + 0x627: 82, + 0x628: 68, + 0x629: 82, + 0x62a: 68, + 0x62b: 68, + 0x62c: 68, + 0x62d: 68, + 0x62e: 68, + 0x62f: 82, + 0x630: 82, + 0x631: 82, + 0x632: 82, + 0x633: 68, + 0x634: 68, + 0x635: 68, + 0x636: 68, + 0x637: 68, + 0x638: 68, + 0x639: 68, + 0x63a: 68, + 0x63b: 68, + 0x63c: 68, + 0x63d: 68, + 0x63e: 68, + 0x63f: 68, + 0x640: 67, + 0x641: 68, + 0x642: 68, + 0x643: 68, + 0x644: 68, + 0x645: 68, + 0x646: 68, + 0x647: 68, + 0x648: 82, + 0x649: 68, + 0x64a: 68, + 0x64b: 84, + 0x64c: 84, + 0x64d: 84, + 0x64e: 84, + 0x64f: 84, + 0x650: 84, + 0x651: 84, + 0x652: 84, + 0x653: 84, + 0x654: 84, + 0x655: 84, + 0x656: 84, + 0x657: 84, + 0x658: 84, + 0x659: 84, + 0x65a: 84, + 0x65b: 84, + 0x65c: 84, + 0x65d: 84, + 0x65e: 84, + 0x65f: 84, + 0x66e: 68, + 0x66f: 68, + 0x670: 84, + 0x671: 82, + 0x672: 82, + 0x673: 82, + 0x675: 82, + 0x676: 82, + 0x677: 82, + 0x678: 68, + 0x679: 68, + 0x67a: 68, + 0x67b: 68, + 0x67c: 68, + 0x67d: 68, + 0x67e: 68, + 0x67f: 68, + 0x680: 68, + 0x681: 68, + 0x682: 68, + 0x683: 68, + 0x684: 68, + 0x685: 68, + 0x686: 68, + 0x687: 68, + 0x688: 82, + 0x689: 82, + 0x68a: 82, + 0x68b: 82, + 0x68c: 82, + 0x68d: 82, + 0x68e: 82, + 0x68f: 82, + 0x690: 82, + 0x691: 82, + 0x692: 82, + 0x693: 82, + 0x694: 82, + 0x695: 82, + 0x696: 82, + 0x697: 82, + 0x698: 82, + 0x699: 82, + 0x69a: 68, + 0x69b: 68, + 0x69c: 68, + 0x69d: 68, + 0x69e: 68, + 0x69f: 68, + 0x6a0: 68, + 0x6a1: 68, + 0x6a2: 68, + 0x6a3: 68, + 0x6a4: 68, + 0x6a5: 68, + 0x6a6: 68, + 0x6a7: 68, + 0x6a8: 68, + 0x6a9: 68, + 0x6aa: 68, + 0x6ab: 68, + 0x6ac: 68, + 0x6ad: 68, + 0x6ae: 68, + 0x6af: 68, + 0x6b0: 68, + 0x6b1: 68, + 0x6b2: 68, + 0x6b3: 68, + 0x6b4: 68, + 0x6b5: 68, + 0x6b6: 68, + 0x6b7: 68, + 0x6b8: 68, + 0x6b9: 68, + 0x6ba: 68, + 0x6bb: 68, + 0x6bc: 68, + 0x6bd: 68, + 0x6be: 68, + 0x6bf: 68, + 0x6c0: 82, + 0x6c1: 68, + 0x6c2: 68, + 0x6c3: 82, + 0x6c4: 82, + 0x6c5: 82, + 0x6c6: 82, + 0x6c7: 82, + 0x6c8: 82, + 0x6c9: 82, + 0x6ca: 82, + 0x6cb: 82, + 0x6cc: 68, + 0x6cd: 82, + 0x6ce: 68, + 0x6cf: 82, + 0x6d0: 68, + 0x6d1: 68, + 0x6d2: 82, + 0x6d3: 82, + 0x6d5: 82, + 0x6d6: 84, + 0x6d7: 84, + 0x6d8: 84, + 0x6d9: 84, + 0x6da: 84, + 0x6db: 84, + 0x6dc: 84, + 0x6df: 84, + 0x6e0: 84, + 0x6e1: 84, + 0x6e2: 84, + 0x6e3: 84, + 0x6e4: 84, + 0x6e7: 84, + 0x6e8: 84, + 0x6ea: 84, + 0x6eb: 84, + 0x6ec: 84, + 0x6ed: 84, + 0x6ee: 82, + 0x6ef: 82, + 0x6fa: 68, + 0x6fb: 68, + 0x6fc: 68, + 0x6ff: 68, + 0x70f: 84, + 0x710: 82, + 0x711: 84, + 0x712: 68, + 0x713: 68, + 0x714: 68, + 0x715: 82, + 0x716: 82, + 0x717: 82, + 0x718: 82, + 0x719: 82, + 0x71a: 68, + 0x71b: 68, + 0x71c: 68, + 0x71d: 68, + 0x71e: 82, + 0x71f: 68, + 0x720: 68, + 0x721: 68, + 0x722: 68, + 0x723: 68, + 0x724: 68, + 0x725: 68, + 0x726: 68, + 0x727: 68, + 0x728: 82, + 0x729: 68, + 0x72a: 82, + 0x72b: 68, + 0x72c: 82, + 0x72d: 68, + 0x72e: 68, + 0x72f: 82, + 0x730: 84, + 0x731: 84, + 0x732: 84, + 0x733: 84, + 0x734: 84, + 0x735: 84, + 0x736: 84, + 0x737: 84, + 0x738: 84, + 0x739: 84, + 0x73a: 84, + 0x73b: 84, + 0x73c: 84, + 0x73d: 84, + 0x73e: 84, + 0x73f: 84, + 0x740: 84, + 0x741: 84, + 0x742: 84, + 0x743: 84, + 0x744: 84, + 0x745: 84, + 0x746: 84, + 0x747: 84, + 0x748: 84, + 0x749: 84, + 0x74a: 84, + 0x74d: 82, + 0x74e: 68, + 0x74f: 68, + 0x750: 68, + 0x751: 68, + 0x752: 68, + 0x753: 68, + 0x754: 68, + 0x755: 68, + 0x756: 68, + 0x757: 68, + 0x758: 68, + 0x759: 82, + 0x75a: 82, + 0x75b: 82, + 0x75c: 68, + 0x75d: 68, + 0x75e: 68, + 0x75f: 68, + 0x760: 68, + 0x761: 68, + 0x762: 68, + 0x763: 68, + 0x764: 68, + 0x765: 68, + 0x766: 68, + 0x767: 68, + 0x768: 68, + 0x769: 68, + 0x76a: 68, + 0x76b: 82, + 0x76c: 82, + 0x76d: 68, + 0x76e: 68, + 0x76f: 68, + 0x770: 68, + 0x771: 82, + 0x772: 68, + 0x773: 82, + 0x774: 82, + 0x775: 68, + 0x776: 68, + 0x777: 68, + 0x778: 82, + 0x779: 82, + 0x77a: 68, + 0x77b: 68, + 0x77c: 68, + 0x77d: 68, + 0x77e: 68, + 0x77f: 68, + 0x7a6: 84, + 0x7a7: 84, + 0x7a8: 84, + 0x7a9: 84, + 0x7aa: 84, + 0x7ab: 84, + 0x7ac: 84, + 0x7ad: 84, + 0x7ae: 84, + 0x7af: 84, + 0x7b0: 84, + 0x7ca: 68, + 0x7cb: 68, + 0x7cc: 68, + 0x7cd: 68, + 0x7ce: 68, + 0x7cf: 68, + 0x7d0: 68, + 0x7d1: 68, + 0x7d2: 68, + 0x7d3: 68, + 0x7d4: 68, + 0x7d5: 68, + 0x7d6: 68, + 0x7d7: 68, + 0x7d8: 68, + 0x7d9: 68, + 0x7da: 68, + 0x7db: 68, + 0x7dc: 68, + 0x7dd: 68, + 0x7de: 68, + 0x7df: 68, + 0x7e0: 68, + 0x7e1: 68, + 0x7e2: 68, + 0x7e3: 68, + 0x7e4: 68, + 0x7e5: 68, + 0x7e6: 68, + 0x7e7: 68, + 0x7e8: 68, + 0x7e9: 68, + 0x7ea: 68, + 0x7eb: 84, + 0x7ec: 84, + 0x7ed: 84, + 0x7ee: 84, + 0x7ef: 84, + 0x7f0: 84, + 0x7f1: 84, + 0x7f2: 84, + 0x7f3: 84, + 0x7fa: 67, + 0x7fd: 84, + 0x816: 84, + 0x817: 84, + 0x818: 84, + 0x819: 84, + 0x81b: 84, + 0x81c: 84, + 0x81d: 84, + 0x81e: 84, + 0x81f: 84, + 0x820: 84, + 0x821: 84, + 0x822: 84, + 0x823: 84, + 0x825: 84, + 0x826: 84, + 0x827: 84, + 0x829: 84, + 0x82a: 84, + 0x82b: 84, + 0x82c: 84, + 0x82d: 84, + 0x840: 82, + 0x841: 68, + 0x842: 68, + 0x843: 68, + 0x844: 68, + 0x845: 68, + 0x846: 82, + 0x847: 82, + 0x848: 68, + 0x849: 82, + 0x84a: 68, + 0x84b: 68, + 0x84c: 68, + 0x84d: 68, + 0x84e: 68, + 0x84f: 68, + 0x850: 68, + 0x851: 68, + 0x852: 68, + 0x853: 68, + 0x854: 82, + 0x855: 68, + 0x856: 82, + 0x857: 82, + 0x858: 82, + 0x859: 84, + 0x85a: 84, + 0x85b: 84, + 0x860: 68, + 0x862: 68, + 0x863: 68, + 0x864: 68, + 0x865: 68, + 0x867: 82, + 0x868: 68, + 0x869: 82, + 0x86a: 82, + 0x870: 82, + 0x871: 82, + 0x872: 82, + 0x873: 82, + 0x874: 82, + 0x875: 82, + 0x876: 82, + 0x877: 82, + 0x878: 82, + 0x879: 82, + 0x87a: 82, + 0x87b: 82, + 0x87c: 82, + 0x87d: 82, + 0x87e: 82, + 0x87f: 82, + 0x880: 82, + 0x881: 82, + 0x882: 82, + 0x883: 67, + 0x884: 67, + 0x885: 67, + 0x886: 68, + 0x889: 68, + 0x88a: 68, + 0x88b: 68, + 0x88c: 68, + 0x88d: 68, + 0x88e: 82, + 0x898: 84, + 0x899: 84, + 0x89a: 84, + 0x89b: 84, + 0x89c: 84, + 0x89d: 84, + 0x89e: 84, + 0x89f: 84, + 0x8a0: 68, + 0x8a1: 68, + 0x8a2: 68, + 0x8a3: 68, + 0x8a4: 68, + 0x8a5: 68, + 0x8a6: 68, + 0x8a7: 68, + 0x8a8: 68, + 0x8a9: 68, + 0x8aa: 82, + 0x8ab: 82, + 0x8ac: 82, + 0x8ae: 82, + 0x8af: 68, + 0x8b0: 68, + 0x8b1: 82, + 0x8b2: 82, + 0x8b3: 68, + 0x8b4: 68, + 0x8b5: 68, + 0x8b6: 68, + 0x8b7: 68, + 0x8b8: 68, + 0x8b9: 82, + 0x8ba: 68, + 0x8bb: 68, + 0x8bc: 68, + 0x8bd: 68, + 0x8be: 68, + 0x8bf: 68, + 0x8c0: 68, + 0x8c1: 68, + 0x8c2: 68, + 0x8c3: 68, + 0x8c4: 68, + 0x8c5: 68, + 0x8c6: 68, + 0x8c7: 68, + 0x8c8: 68, + 0x8ca: 84, + 0x8cb: 84, + 0x8cc: 84, + 0x8cd: 84, + 0x8ce: 84, + 0x8cf: 84, + 0x8d0: 84, + 0x8d1: 84, + 0x8d2: 84, + 0x8d3: 84, + 0x8d4: 84, + 0x8d5: 84, + 0x8d6: 84, + 0x8d7: 84, + 0x8d8: 84, + 0x8d9: 84, + 0x8da: 84, + 0x8db: 84, + 0x8dc: 84, + 0x8dd: 84, + 0x8de: 84, + 0x8df: 84, + 0x8e0: 84, + 0x8e1: 84, + 0x8e3: 84, + 0x8e4: 84, + 0x8e5: 84, + 0x8e6: 84, + 0x8e7: 84, + 0x8e8: 84, + 0x8e9: 84, + 0x8ea: 84, + 0x8eb: 84, + 0x8ec: 84, + 0x8ed: 84, + 0x8ee: 84, + 0x8ef: 84, + 0x8f0: 84, + 0x8f1: 84, + 0x8f2: 84, + 0x8f3: 84, + 0x8f4: 84, + 0x8f5: 84, + 0x8f6: 84, + 0x8f7: 84, + 0x8f8: 84, + 0x8f9: 84, + 0x8fa: 84, + 0x8fb: 84, + 0x8fc: 84, + 0x8fd: 84, + 0x8fe: 84, + 0x8ff: 84, + 0x900: 84, + 0x901: 84, + 0x902: 84, + 0x93a: 84, + 0x93c: 84, + 0x941: 84, + 0x942: 84, + 0x943: 84, + 0x944: 84, + 0x945: 84, + 0x946: 84, + 0x947: 84, + 0x948: 84, + 0x94d: 84, + 0x951: 84, + 0x952: 84, + 0x953: 84, + 0x954: 84, + 0x955: 84, + 0x956: 84, + 0x957: 84, + 0x962: 84, + 0x963: 84, + 0x981: 84, + 0x9bc: 84, + 0x9c1: 84, + 0x9c2: 84, + 0x9c3: 84, + 0x9c4: 84, + 0x9cd: 84, + 0x9e2: 84, + 0x9e3: 84, + 0x9fe: 84, + 0xa01: 84, + 0xa02: 84, + 0xa3c: 84, + 0xa41: 84, + 0xa42: 84, + 0xa47: 84, + 0xa48: 84, + 0xa4b: 84, + 0xa4c: 84, + 0xa4d: 84, + 0xa51: 84, + 0xa70: 84, + 0xa71: 84, + 0xa75: 84, + 0xa81: 84, + 0xa82: 84, + 0xabc: 84, + 0xac1: 84, + 0xac2: 84, + 0xac3: 84, + 0xac4: 84, + 0xac5: 84, + 0xac7: 84, + 0xac8: 84, + 0xacd: 84, + 0xae2: 84, + 0xae3: 84, + 0xafa: 84, + 0xafb: 84, + 0xafc: 84, + 0xafd: 84, + 0xafe: 84, + 0xaff: 84, + 0xb01: 84, + 0xb3c: 84, + 0xb3f: 84, + 0xb41: 84, + 0xb42: 84, + 0xb43: 84, + 0xb44: 84, + 0xb4d: 84, + 0xb55: 84, + 0xb56: 84, + 0xb62: 84, + 0xb63: 84, + 0xb82: 84, + 0xbc0: 84, + 0xbcd: 84, + 0xc00: 84, + 0xc04: 84, + 0xc3c: 84, + 0xc3e: 84, + 0xc3f: 84, + 0xc40: 84, + 0xc46: 84, + 0xc47: 84, + 0xc48: 84, + 0xc4a: 84, + 0xc4b: 84, + 0xc4c: 84, + 0xc4d: 84, + 0xc55: 84, + 0xc56: 84, + 0xc62: 84, + 0xc63: 84, + 0xc81: 84, + 0xcbc: 84, + 0xcbf: 84, + 0xcc6: 84, + 0xccc: 84, + 0xccd: 84, + 0xce2: 84, + 0xce3: 84, + 0xd00: 84, + 0xd01: 84, + 0xd3b: 84, + 0xd3c: 84, + 0xd41: 84, + 0xd42: 84, + 0xd43: 84, + 0xd44: 84, + 0xd4d: 84, + 0xd62: 84, + 0xd63: 84, + 0xd81: 84, + 0xdca: 84, + 0xdd2: 84, + 0xdd3: 84, + 0xdd4: 84, + 0xdd6: 84, + 0xe31: 84, + 0xe34: 84, + 0xe35: 84, + 0xe36: 84, + 0xe37: 84, + 0xe38: 84, + 0xe39: 84, + 0xe3a: 84, + 0xe47: 84, + 0xe48: 84, + 0xe49: 84, + 0xe4a: 84, + 0xe4b: 84, + 0xe4c: 84, + 0xe4d: 84, + 0xe4e: 84, + 0xeb1: 84, + 0xeb4: 84, + 0xeb5: 84, + 0xeb6: 84, + 0xeb7: 84, + 0xeb8: 84, + 0xeb9: 84, + 0xeba: 84, + 0xebb: 84, + 0xebc: 84, + 0xec8: 84, + 0xec9: 84, + 0xeca: 84, + 0xecb: 84, + 0xecc: 84, + 0xecd: 84, + 0xece: 84, + 0xf18: 84, + 0xf19: 84, + 0xf35: 84, + 0xf37: 84, + 0xf39: 84, + 0xf71: 84, + 0xf72: 84, + 0xf73: 84, + 0xf74: 84, + 0xf75: 84, + 0xf76: 84, + 0xf77: 84, + 0xf78: 84, + 0xf79: 84, + 0xf7a: 84, + 0xf7b: 84, + 0xf7c: 84, + 0xf7d: 84, + 0xf7e: 84, + 0xf80: 84, + 0xf81: 84, + 0xf82: 84, + 0xf83: 84, + 0xf84: 84, + 0xf86: 84, + 0xf87: 84, + 0xf8d: 84, + 0xf8e: 84, + 0xf8f: 84, + 0xf90: 84, + 0xf91: 84, + 0xf92: 84, + 0xf93: 84, + 0xf94: 84, + 0xf95: 84, + 0xf96: 84, + 0xf97: 84, + 0xf99: 84, + 0xf9a: 84, + 0xf9b: 84, + 0xf9c: 84, + 0xf9d: 84, + 0xf9e: 84, + 0xf9f: 84, + 0xfa0: 84, + 0xfa1: 84, + 0xfa2: 84, + 0xfa3: 84, + 0xfa4: 84, + 0xfa5: 84, + 0xfa6: 84, + 0xfa7: 84, + 0xfa8: 84, + 0xfa9: 84, + 0xfaa: 84, + 0xfab: 84, + 0xfac: 84, + 0xfad: 84, + 0xfae: 84, + 0xfaf: 84, + 0xfb0: 84, + 0xfb1: 84, + 0xfb2: 84, + 0xfb3: 84, + 0xfb4: 84, + 0xfb5: 84, + 0xfb6: 84, + 0xfb7: 84, + 0xfb8: 84, + 0xfb9: 84, + 0xfba: 84, + 0xfbb: 84, + 0xfbc: 84, + 0xfc6: 84, + 0x102d: 84, + 0x102e: 84, + 0x102f: 84, + 0x1030: 84, + 0x1032: 84, + 0x1033: 84, + 0x1034: 84, + 0x1035: 84, + 0x1036: 84, + 0x1037: 84, + 0x1039: 84, + 0x103a: 84, + 0x103d: 84, + 0x103e: 84, + 0x1058: 84, + 0x1059: 84, + 0x105e: 84, + 0x105f: 84, + 0x1060: 84, + 0x1071: 84, + 0x1072: 84, + 0x1073: 84, + 0x1074: 84, + 0x1082: 84, + 0x1085: 84, + 0x1086: 84, + 0x108d: 84, + 0x109d: 84, + 0x135d: 84, + 0x135e: 84, + 0x135f: 84, + 0x1712: 84, + 0x1713: 84, + 0x1714: 84, + 0x1732: 84, + 0x1733: 84, + 0x1752: 84, + 0x1753: 84, + 0x1772: 84, + 0x1773: 84, + 0x17b4: 84, + 0x17b5: 84, + 0x17b7: 84, + 0x17b8: 84, + 0x17b9: 84, + 0x17ba: 84, + 0x17bb: 84, + 0x17bc: 84, + 0x17bd: 84, + 0x17c6: 84, + 0x17c9: 84, + 0x17ca: 84, + 0x17cb: 84, + 0x17cc: 84, + 0x17cd: 84, + 0x17ce: 84, + 0x17cf: 84, + 0x17d0: 84, + 0x17d1: 84, + 0x17d2: 84, + 0x17d3: 84, + 0x17dd: 84, + 0x1807: 68, + 0x180a: 67, + 0x180b: 84, + 0x180c: 84, + 0x180d: 84, + 0x180f: 84, + 0x1820: 68, + 0x1821: 68, + 0x1822: 68, + 0x1823: 68, + 0x1824: 68, + 0x1825: 68, + 0x1826: 68, + 0x1827: 68, + 0x1828: 68, + 0x1829: 68, + 0x182a: 68, + 0x182b: 68, + 0x182c: 68, + 0x182d: 68, + 0x182e: 68, + 0x182f: 68, + 0x1830: 68, + 0x1831: 68, + 0x1832: 68, + 0x1833: 68, + 0x1834: 68, + 0x1835: 68, + 0x1836: 68, + 0x1837: 68, + 0x1838: 68, + 0x1839: 68, + 0x183a: 68, + 0x183b: 68, + 0x183c: 68, + 0x183d: 68, + 0x183e: 68, + 0x183f: 68, + 0x1840: 68, + 0x1841: 68, + 0x1842: 68, + 0x1843: 68, + 0x1844: 68, + 0x1845: 68, + 0x1846: 68, + 0x1847: 68, + 0x1848: 68, + 0x1849: 68, + 0x184a: 68, + 0x184b: 68, + 0x184c: 68, + 0x184d: 68, + 0x184e: 68, + 0x184f: 68, + 0x1850: 68, + 0x1851: 68, + 0x1852: 68, + 0x1853: 68, + 0x1854: 68, + 0x1855: 68, + 0x1856: 68, + 0x1857: 68, + 0x1858: 68, + 0x1859: 68, + 0x185a: 68, + 0x185b: 68, + 0x185c: 68, + 0x185d: 68, + 0x185e: 68, + 0x185f: 68, + 0x1860: 68, + 0x1861: 68, + 0x1862: 68, + 0x1863: 68, + 0x1864: 68, + 0x1865: 68, + 0x1866: 68, + 0x1867: 68, + 0x1868: 68, + 0x1869: 68, + 0x186a: 68, + 0x186b: 68, + 0x186c: 68, + 0x186d: 68, + 0x186e: 68, + 0x186f: 68, + 0x1870: 68, + 0x1871: 68, + 0x1872: 68, + 0x1873: 68, + 0x1874: 68, + 0x1875: 68, + 0x1876: 68, + 0x1877: 68, + 0x1878: 68, + 0x1885: 84, + 0x1886: 84, + 0x1887: 68, + 0x1888: 68, + 0x1889: 68, + 0x188a: 68, + 0x188b: 68, + 0x188c: 68, + 0x188d: 68, + 0x188e: 68, + 0x188f: 68, + 0x1890: 68, + 0x1891: 68, + 0x1892: 68, + 0x1893: 68, + 0x1894: 68, + 0x1895: 68, + 0x1896: 68, + 0x1897: 68, + 0x1898: 68, + 0x1899: 68, + 0x189a: 68, + 0x189b: 68, + 0x189c: 68, + 0x189d: 68, + 0x189e: 68, + 0x189f: 68, + 0x18a0: 68, + 0x18a1: 68, + 0x18a2: 68, + 0x18a3: 68, + 0x18a4: 68, + 0x18a5: 68, + 0x18a6: 68, + 0x18a7: 68, + 0x18a8: 68, + 0x18a9: 84, + 0x18aa: 68, + 0x1920: 84, + 0x1921: 84, + 0x1922: 84, + 0x1927: 84, + 0x1928: 84, + 0x1932: 84, + 0x1939: 84, + 0x193a: 84, + 0x193b: 84, + 0x1a17: 84, + 0x1a18: 84, + 0x1a1b: 84, + 0x1a56: 84, + 0x1a58: 84, + 0x1a59: 84, + 0x1a5a: 84, + 0x1a5b: 84, + 0x1a5c: 84, + 0x1a5d: 84, + 0x1a5e: 84, + 0x1a60: 84, + 0x1a62: 84, + 0x1a65: 84, + 0x1a66: 84, + 0x1a67: 84, + 0x1a68: 84, + 0x1a69: 84, + 0x1a6a: 84, + 0x1a6b: 84, + 0x1a6c: 84, + 0x1a73: 84, + 0x1a74: 84, + 0x1a75: 84, + 0x1a76: 84, + 0x1a77: 84, + 0x1a78: 84, + 0x1a79: 84, + 0x1a7a: 84, + 0x1a7b: 84, + 0x1a7c: 84, + 0x1a7f: 84, + 0x1ab0: 84, + 0x1ab1: 84, + 0x1ab2: 84, + 0x1ab3: 84, + 0x1ab4: 84, + 0x1ab5: 84, + 0x1ab6: 84, + 0x1ab7: 84, + 0x1ab8: 84, + 0x1ab9: 84, + 0x1aba: 84, + 0x1abb: 84, + 0x1abc: 84, + 0x1abd: 84, + 0x1abe: 84, + 0x1abf: 84, + 0x1ac0: 84, + 0x1ac1: 84, + 0x1ac2: 84, + 0x1ac3: 84, + 0x1ac4: 84, + 0x1ac5: 84, + 0x1ac6: 84, + 0x1ac7: 84, + 0x1ac8: 84, + 0x1ac9: 84, + 0x1aca: 84, + 0x1acb: 84, + 0x1acc: 84, + 0x1acd: 84, + 0x1ace: 84, + 0x1b00: 84, + 0x1b01: 84, + 0x1b02: 84, + 0x1b03: 84, + 0x1b34: 84, + 0x1b36: 84, + 0x1b37: 84, + 0x1b38: 84, + 0x1b39: 84, + 0x1b3a: 84, + 0x1b3c: 84, + 0x1b42: 84, + 0x1b6b: 84, + 0x1b6c: 84, + 0x1b6d: 84, + 0x1b6e: 84, + 0x1b6f: 84, + 0x1b70: 84, + 0x1b71: 84, + 0x1b72: 84, + 0x1b73: 84, + 0x1b80: 84, + 0x1b81: 84, + 0x1ba2: 84, + 0x1ba3: 84, + 0x1ba4: 84, + 0x1ba5: 84, + 0x1ba8: 84, + 0x1ba9: 84, + 0x1bab: 84, + 0x1bac: 84, + 0x1bad: 84, + 0x1be6: 84, + 0x1be8: 84, + 0x1be9: 84, + 0x1bed: 84, + 0x1bef: 84, + 0x1bf0: 84, + 0x1bf1: 84, + 0x1c2c: 84, + 0x1c2d: 84, + 0x1c2e: 84, + 0x1c2f: 84, + 0x1c30: 84, + 0x1c31: 84, + 0x1c32: 84, + 0x1c33: 84, + 0x1c36: 84, + 0x1c37: 84, + 0x1cd0: 84, + 0x1cd1: 84, + 0x1cd2: 84, + 0x1cd4: 84, + 0x1cd5: 84, + 0x1cd6: 84, + 0x1cd7: 84, + 0x1cd8: 84, + 0x1cd9: 84, + 0x1cda: 84, + 0x1cdb: 84, + 0x1cdc: 84, + 0x1cdd: 84, + 0x1cde: 84, + 0x1cdf: 84, + 0x1ce0: 84, + 0x1ce2: 84, + 0x1ce3: 84, + 0x1ce4: 84, + 0x1ce5: 84, + 0x1ce6: 84, + 0x1ce7: 84, + 0x1ce8: 84, + 0x1ced: 84, + 0x1cf4: 84, + 0x1cf8: 84, + 0x1cf9: 84, + 0x1dc0: 84, + 0x1dc1: 84, + 0x1dc2: 84, + 0x1dc3: 84, + 0x1dc4: 84, + 0x1dc5: 84, + 0x1dc6: 84, + 0x1dc7: 84, + 0x1dc8: 84, + 0x1dc9: 84, + 0x1dca: 84, + 0x1dcb: 84, + 0x1dcc: 84, + 0x1dcd: 84, + 0x1dce: 84, + 0x1dcf: 84, + 0x1dd0: 84, + 0x1dd1: 84, + 0x1dd2: 84, + 0x1dd3: 84, + 0x1dd4: 84, + 0x1dd5: 84, + 0x1dd6: 84, + 0x1dd7: 84, + 0x1dd8: 84, + 0x1dd9: 84, + 0x1dda: 84, + 0x1ddb: 84, + 0x1ddc: 84, + 0x1ddd: 84, + 0x1dde: 84, + 0x1ddf: 84, + 0x1de0: 84, + 0x1de1: 84, + 0x1de2: 84, + 0x1de3: 84, + 0x1de4: 84, + 0x1de5: 84, + 0x1de6: 84, + 0x1de7: 84, + 0x1de8: 84, + 0x1de9: 84, + 0x1dea: 84, + 0x1deb: 84, + 0x1dec: 84, + 0x1ded: 84, + 0x1dee: 84, + 0x1def: 84, + 0x1df0: 84, + 0x1df1: 84, + 0x1df2: 84, + 0x1df3: 84, + 0x1df4: 84, + 0x1df5: 84, + 0x1df6: 84, + 0x1df7: 84, + 0x1df8: 84, + 0x1df9: 84, + 0x1dfa: 84, + 0x1dfb: 84, + 0x1dfc: 84, + 0x1dfd: 84, + 0x1dfe: 84, + 0x1dff: 84, + 0x200b: 84, + 0x200d: 67, + 0x200e: 84, + 0x200f: 84, + 0x202a: 84, + 0x202b: 84, + 0x202c: 84, + 0x202d: 84, + 0x202e: 84, + 0x2060: 84, + 0x2061: 84, + 0x2062: 84, + 0x2063: 84, + 0x2064: 84, + 0x206a: 84, + 0x206b: 84, + 0x206c: 84, + 0x206d: 84, + 0x206e: 84, + 0x206f: 84, + 0x20d0: 84, + 0x20d1: 84, + 0x20d2: 84, + 0x20d3: 84, + 0x20d4: 84, + 0x20d5: 84, + 0x20d6: 84, + 0x20d7: 84, + 0x20d8: 84, + 0x20d9: 84, + 0x20da: 84, + 0x20db: 84, + 0x20dc: 84, + 0x20dd: 84, + 0x20de: 84, + 0x20df: 84, + 0x20e0: 84, + 0x20e1: 84, + 0x20e2: 84, + 0x20e3: 84, + 0x20e4: 84, + 0x20e5: 84, + 0x20e6: 84, + 0x20e7: 84, + 0x20e8: 84, + 0x20e9: 84, + 0x20ea: 84, + 0x20eb: 84, + 0x20ec: 84, + 0x20ed: 84, + 0x20ee: 84, + 0x20ef: 84, + 0x20f0: 84, + 0x2cef: 84, + 0x2cf0: 84, + 0x2cf1: 84, + 0x2d7f: 84, + 0x2de0: 84, + 0x2de1: 84, + 0x2de2: 84, + 0x2de3: 84, + 0x2de4: 84, + 0x2de5: 84, + 0x2de6: 84, + 0x2de7: 84, + 0x2de8: 84, + 0x2de9: 84, + 0x2dea: 84, + 0x2deb: 84, + 0x2dec: 84, + 0x2ded: 84, + 0x2dee: 84, + 0x2def: 84, + 0x2df0: 84, + 0x2df1: 84, + 0x2df2: 84, + 0x2df3: 84, + 0x2df4: 84, + 0x2df5: 84, + 0x2df6: 84, + 0x2df7: 84, + 0x2df8: 84, + 0x2df9: 84, + 0x2dfa: 84, + 0x2dfb: 84, + 0x2dfc: 84, + 0x2dfd: 84, + 0x2dfe: 84, + 0x2dff: 84, + 0x302a: 84, + 0x302b: 84, + 0x302c: 84, + 0x302d: 84, + 0x3099: 84, + 0x309a: 84, + 0xa66f: 84, + 0xa670: 84, + 0xa671: 84, + 0xa672: 84, + 0xa674: 84, + 0xa675: 84, + 0xa676: 84, + 0xa677: 84, + 0xa678: 84, + 0xa679: 84, + 0xa67a: 84, + 0xa67b: 84, + 0xa67c: 84, + 0xa67d: 84, + 0xa69e: 84, + 0xa69f: 84, + 0xa6f0: 84, + 0xa6f1: 84, + 0xa802: 84, + 0xa806: 84, + 0xa80b: 84, + 0xa825: 84, + 0xa826: 84, + 0xa82c: 84, + 0xa840: 68, + 0xa841: 68, + 0xa842: 68, + 0xa843: 68, + 0xa844: 68, + 0xa845: 68, + 0xa846: 68, + 0xa847: 68, + 0xa848: 68, + 0xa849: 68, + 0xa84a: 68, + 0xa84b: 68, + 0xa84c: 68, + 0xa84d: 68, + 0xa84e: 68, + 0xa84f: 68, + 0xa850: 68, + 0xa851: 68, + 0xa852: 68, + 0xa853: 68, + 0xa854: 68, + 0xa855: 68, + 0xa856: 68, + 0xa857: 68, + 0xa858: 68, + 0xa859: 68, + 0xa85a: 68, + 0xa85b: 68, + 0xa85c: 68, + 0xa85d: 68, + 0xa85e: 68, + 0xa85f: 68, + 0xa860: 68, + 0xa861: 68, + 0xa862: 68, + 0xa863: 68, + 0xa864: 68, + 0xa865: 68, + 0xa866: 68, + 0xa867: 68, + 0xa868: 68, + 0xa869: 68, + 0xa86a: 68, + 0xa86b: 68, + 0xa86c: 68, + 0xa86d: 68, + 0xa86e: 68, + 0xa86f: 68, + 0xa870: 68, + 0xa871: 68, + 0xa872: 76, + 0xa8c4: 84, + 0xa8c5: 84, + 0xa8e0: 84, + 0xa8e1: 84, + 0xa8e2: 84, + 0xa8e3: 84, + 0xa8e4: 84, + 0xa8e5: 84, + 0xa8e6: 84, + 0xa8e7: 84, + 0xa8e8: 84, + 0xa8e9: 84, + 0xa8ea: 84, + 0xa8eb: 84, + 0xa8ec: 84, + 0xa8ed: 84, + 0xa8ee: 84, + 0xa8ef: 84, + 0xa8f0: 84, + 0xa8f1: 84, + 0xa8ff: 84, + 0xa926: 84, + 0xa927: 84, + 0xa928: 84, + 0xa929: 84, + 0xa92a: 84, + 0xa92b: 84, + 0xa92c: 84, + 0xa92d: 84, + 0xa947: 84, + 0xa948: 84, + 0xa949: 84, + 0xa94a: 84, + 0xa94b: 84, + 0xa94c: 84, + 0xa94d: 84, + 0xa94e: 84, + 0xa94f: 84, + 0xa950: 84, + 0xa951: 84, + 0xa980: 84, + 0xa981: 84, + 0xa982: 84, + 0xa9b3: 84, + 0xa9b6: 84, + 0xa9b7: 84, + 0xa9b8: 84, + 0xa9b9: 84, + 0xa9bc: 84, + 0xa9bd: 84, + 0xa9e5: 84, + 0xaa29: 84, + 0xaa2a: 84, + 0xaa2b: 84, + 0xaa2c: 84, + 0xaa2d: 84, + 0xaa2e: 84, + 0xaa31: 84, + 0xaa32: 84, + 0xaa35: 84, + 0xaa36: 84, + 0xaa43: 84, + 0xaa4c: 84, + 0xaa7c: 84, + 0xaab0: 84, + 0xaab2: 84, + 0xaab3: 84, + 0xaab4: 84, + 0xaab7: 84, + 0xaab8: 84, + 0xaabe: 84, + 0xaabf: 84, + 0xaac1: 84, + 0xaaec: 84, + 0xaaed: 84, + 0xaaf6: 84, + 0xabe5: 84, + 0xabe8: 84, + 0xabed: 84, + 0xfb1e: 84, + 0xfe00: 84, + 0xfe01: 84, + 0xfe02: 84, + 0xfe03: 84, + 0xfe04: 84, + 0xfe05: 84, + 0xfe06: 84, + 0xfe07: 84, + 0xfe08: 84, + 0xfe09: 84, + 0xfe0a: 84, + 0xfe0b: 84, + 0xfe0c: 84, + 0xfe0d: 84, + 0xfe0e: 84, + 0xfe0f: 84, + 0xfe20: 84, + 0xfe21: 84, + 0xfe22: 84, + 0xfe23: 84, + 0xfe24: 84, + 0xfe25: 84, + 0xfe26: 84, + 0xfe27: 84, + 0xfe28: 84, + 0xfe29: 84, + 0xfe2a: 84, + 0xfe2b: 84, + 0xfe2c: 84, + 0xfe2d: 84, + 0xfe2e: 84, + 0xfe2f: 84, + 0xfeff: 84, + 0xfff9: 84, + 0xfffa: 84, + 0xfffb: 84, + 0x101fd: 84, + 0x102e0: 84, + 0x10376: 84, + 0x10377: 84, + 0x10378: 84, + 0x10379: 84, + 0x1037a: 84, + 0x10a01: 84, + 0x10a02: 84, + 0x10a03: 84, + 0x10a05: 84, + 0x10a06: 84, + 0x10a0c: 84, + 0x10a0d: 84, + 0x10a0e: 84, + 0x10a0f: 84, + 0x10a38: 84, + 0x10a39: 84, + 0x10a3a: 84, + 0x10a3f: 84, + 0x10ac0: 68, + 0x10ac1: 68, + 0x10ac2: 68, + 0x10ac3: 68, + 0x10ac4: 68, + 0x10ac5: 82, + 0x10ac7: 82, + 0x10ac9: 82, + 0x10aca: 82, + 0x10acd: 76, + 0x10ace: 82, + 0x10acf: 82, + 0x10ad0: 82, + 0x10ad1: 82, + 0x10ad2: 82, + 0x10ad3: 68, + 0x10ad4: 68, + 0x10ad5: 68, + 0x10ad6: 68, + 0x10ad7: 76, + 0x10ad8: 68, + 0x10ad9: 68, + 0x10ada: 68, + 0x10adb: 68, + 0x10adc: 68, + 0x10add: 82, + 0x10ade: 68, + 0x10adf: 68, + 0x10ae0: 68, + 0x10ae1: 82, + 0x10ae4: 82, + 0x10ae5: 84, + 0x10ae6: 84, + 0x10aeb: 68, + 0x10aec: 68, + 0x10aed: 68, + 0x10aee: 68, + 0x10aef: 82, + 0x10b80: 68, + 0x10b81: 82, + 0x10b82: 68, + 0x10b83: 82, + 0x10b84: 82, + 0x10b85: 82, + 0x10b86: 68, + 0x10b87: 68, + 0x10b88: 68, + 0x10b89: 82, + 0x10b8a: 68, + 0x10b8b: 68, + 0x10b8c: 82, + 0x10b8d: 68, + 0x10b8e: 82, + 0x10b8f: 82, + 0x10b90: 68, + 0x10b91: 82, + 0x10ba9: 82, + 0x10baa: 82, + 0x10bab: 82, + 0x10bac: 82, + 0x10bad: 68, + 0x10bae: 68, + 0x10d00: 76, + 0x10d01: 68, + 0x10d02: 68, + 0x10d03: 68, + 0x10d04: 68, + 0x10d05: 68, + 0x10d06: 68, + 0x10d07: 68, + 0x10d08: 68, + 0x10d09: 68, + 0x10d0a: 68, + 0x10d0b: 68, + 0x10d0c: 68, + 0x10d0d: 68, + 0x10d0e: 68, + 0x10d0f: 68, + 0x10d10: 68, + 0x10d11: 68, + 0x10d12: 68, + 0x10d13: 68, + 0x10d14: 68, + 0x10d15: 68, + 0x10d16: 68, + 0x10d17: 68, + 0x10d18: 68, + 0x10d19: 68, + 0x10d1a: 68, + 0x10d1b: 68, + 0x10d1c: 68, + 0x10d1d: 68, + 0x10d1e: 68, + 0x10d1f: 68, + 0x10d20: 68, + 0x10d21: 68, + 0x10d22: 82, + 0x10d23: 68, + 0x10d24: 84, + 0x10d25: 84, + 0x10d26: 84, + 0x10d27: 84, + 0x10eab: 84, + 0x10eac: 84, + 0x10efd: 84, + 0x10efe: 84, + 0x10eff: 84, + 0x10f30: 68, + 0x10f31: 68, + 0x10f32: 68, + 0x10f33: 82, + 0x10f34: 68, + 0x10f35: 68, + 0x10f36: 68, + 0x10f37: 68, + 0x10f38: 68, + 0x10f39: 68, + 0x10f3a: 68, + 0x10f3b: 68, + 0x10f3c: 68, + 0x10f3d: 68, + 0x10f3e: 68, + 0x10f3f: 68, + 0x10f40: 68, + 0x10f41: 68, + 0x10f42: 68, + 0x10f43: 68, + 0x10f44: 68, + 0x10f46: 84, + 0x10f47: 84, + 0x10f48: 84, + 0x10f49: 84, + 0x10f4a: 84, + 0x10f4b: 84, + 0x10f4c: 84, + 0x10f4d: 84, + 0x10f4e: 84, + 0x10f4f: 84, + 0x10f50: 84, + 0x10f51: 68, + 0x10f52: 68, + 0x10f53: 68, + 0x10f54: 82, + 0x10f70: 68, + 0x10f71: 68, + 0x10f72: 68, + 0x10f73: 68, + 0x10f74: 82, + 0x10f75: 82, + 0x10f76: 68, + 0x10f77: 68, + 0x10f78: 68, + 0x10f79: 68, + 0x10f7a: 68, + 0x10f7b: 68, + 0x10f7c: 68, + 0x10f7d: 68, + 0x10f7e: 68, + 0x10f7f: 68, + 0x10f80: 68, + 0x10f81: 68, + 0x10f82: 84, + 0x10f83: 84, + 0x10f84: 84, + 0x10f85: 84, + 0x10fb0: 68, + 0x10fb2: 68, + 0x10fb3: 68, + 0x10fb4: 82, + 0x10fb5: 82, + 0x10fb6: 82, + 0x10fb8: 68, + 0x10fb9: 82, + 0x10fba: 82, + 0x10fbb: 68, + 0x10fbc: 68, + 0x10fbd: 82, + 0x10fbe: 68, + 0x10fbf: 68, + 0x10fc1: 68, + 0x10fc2: 82, + 0x10fc3: 82, + 0x10fc4: 68, + 0x10fc9: 82, + 0x10fca: 68, + 0x10fcb: 76, + 0x11001: 84, + 0x11038: 84, + 0x11039: 84, + 0x1103a: 84, + 0x1103b: 84, + 0x1103c: 84, + 0x1103d: 84, + 0x1103e: 84, + 0x1103f: 84, + 0x11040: 84, + 0x11041: 84, + 0x11042: 84, + 0x11043: 84, + 0x11044: 84, + 0x11045: 84, + 0x11046: 84, + 0x11070: 84, + 0x11073: 84, + 0x11074: 84, + 0x1107f: 84, + 0x11080: 84, + 0x11081: 84, + 0x110b3: 84, + 0x110b4: 84, + 0x110b5: 84, + 0x110b6: 84, + 0x110b9: 84, + 0x110ba: 84, + 0x110c2: 84, + 0x11100: 84, + 0x11101: 84, + 0x11102: 84, + 0x11127: 84, + 0x11128: 84, + 0x11129: 84, + 0x1112a: 84, + 0x1112b: 84, + 0x1112d: 84, + 0x1112e: 84, + 0x1112f: 84, + 0x11130: 84, + 0x11131: 84, + 0x11132: 84, + 0x11133: 84, + 0x11134: 84, + 0x11173: 84, + 0x11180: 84, + 0x11181: 84, + 0x111b6: 84, + 0x111b7: 84, + 0x111b8: 84, + 0x111b9: 84, + 0x111ba: 84, + 0x111bb: 84, + 0x111bc: 84, + 0x111bd: 84, + 0x111be: 84, + 0x111c9: 84, + 0x111ca: 84, + 0x111cb: 84, + 0x111cc: 84, + 0x111cf: 84, + 0x1122f: 84, + 0x11230: 84, + 0x11231: 84, + 0x11234: 84, + 0x11236: 84, + 0x11237: 84, + 0x1123e: 84, + 0x11241: 84, + 0x112df: 84, + 0x112e3: 84, + 0x112e4: 84, + 0x112e5: 84, + 0x112e6: 84, + 0x112e7: 84, + 0x112e8: 84, + 0x112e9: 84, + 0x112ea: 84, + 0x11300: 84, + 0x11301: 84, + 0x1133b: 84, + 0x1133c: 84, + 0x11340: 84, + 0x11366: 84, + 0x11367: 84, + 0x11368: 84, + 0x11369: 84, + 0x1136a: 84, + 0x1136b: 84, + 0x1136c: 84, + 0x11370: 84, + 0x11371: 84, + 0x11372: 84, + 0x11373: 84, + 0x11374: 84, + 0x11438: 84, + 0x11439: 84, + 0x1143a: 84, + 0x1143b: 84, + 0x1143c: 84, + 0x1143d: 84, + 0x1143e: 84, + 0x1143f: 84, + 0x11442: 84, + 0x11443: 84, + 0x11444: 84, + 0x11446: 84, + 0x1145e: 84, + 0x114b3: 84, + 0x114b4: 84, + 0x114b5: 84, + 0x114b6: 84, + 0x114b7: 84, + 0x114b8: 84, + 0x114ba: 84, + 0x114bf: 84, + 0x114c0: 84, + 0x114c2: 84, + 0x114c3: 84, + 0x115b2: 84, + 0x115b3: 84, + 0x115b4: 84, + 0x115b5: 84, + 0x115bc: 84, + 0x115bd: 84, + 0x115bf: 84, + 0x115c0: 84, + 0x115dc: 84, + 0x115dd: 84, + 0x11633: 84, + 0x11634: 84, + 0x11635: 84, + 0x11636: 84, + 0x11637: 84, + 0x11638: 84, + 0x11639: 84, + 0x1163a: 84, + 0x1163d: 84, + 0x1163f: 84, + 0x11640: 84, + 0x116ab: 84, + 0x116ad: 84, + 0x116b0: 84, + 0x116b1: 84, + 0x116b2: 84, + 0x116b3: 84, + 0x116b4: 84, + 0x116b5: 84, + 0x116b7: 84, + 0x1171d: 84, + 0x1171e: 84, + 0x1171f: 84, + 0x11722: 84, + 0x11723: 84, + 0x11724: 84, + 0x11725: 84, + 0x11727: 84, + 0x11728: 84, + 0x11729: 84, + 0x1172a: 84, + 0x1172b: 84, + 0x1182f: 84, + 0x11830: 84, + 0x11831: 84, + 0x11832: 84, + 0x11833: 84, + 0x11834: 84, + 0x11835: 84, + 0x11836: 84, + 0x11837: 84, + 0x11839: 84, + 0x1183a: 84, + 0x1193b: 84, + 0x1193c: 84, + 0x1193e: 84, + 0x11943: 84, + 0x119d4: 84, + 0x119d5: 84, + 0x119d6: 84, + 0x119d7: 84, + 0x119da: 84, + 0x119db: 84, + 0x119e0: 84, + 0x11a01: 84, + 0x11a02: 84, + 0x11a03: 84, + 0x11a04: 84, + 0x11a05: 84, + 0x11a06: 84, + 0x11a07: 84, + 0x11a08: 84, + 0x11a09: 84, + 0x11a0a: 84, + 0x11a33: 84, + 0x11a34: 84, + 0x11a35: 84, + 0x11a36: 84, + 0x11a37: 84, + 0x11a38: 84, + 0x11a3b: 84, + 0x11a3c: 84, + 0x11a3d: 84, + 0x11a3e: 84, + 0x11a47: 84, + 0x11a51: 84, + 0x11a52: 84, + 0x11a53: 84, + 0x11a54: 84, + 0x11a55: 84, + 0x11a56: 84, + 0x11a59: 84, + 0x11a5a: 84, + 0x11a5b: 84, + 0x11a8a: 84, + 0x11a8b: 84, + 0x11a8c: 84, + 0x11a8d: 84, + 0x11a8e: 84, + 0x11a8f: 84, + 0x11a90: 84, + 0x11a91: 84, + 0x11a92: 84, + 0x11a93: 84, + 0x11a94: 84, + 0x11a95: 84, + 0x11a96: 84, + 0x11a98: 84, + 0x11a99: 84, + 0x11c30: 84, + 0x11c31: 84, + 0x11c32: 84, + 0x11c33: 84, + 0x11c34: 84, + 0x11c35: 84, + 0x11c36: 84, + 0x11c38: 84, + 0x11c39: 84, + 0x11c3a: 84, + 0x11c3b: 84, + 0x11c3c: 84, + 0x11c3d: 84, + 0x11c3f: 84, + 0x11c92: 84, + 0x11c93: 84, + 0x11c94: 84, + 0x11c95: 84, + 0x11c96: 84, + 0x11c97: 84, + 0x11c98: 84, + 0x11c99: 84, + 0x11c9a: 84, + 0x11c9b: 84, + 0x11c9c: 84, + 0x11c9d: 84, + 0x11c9e: 84, + 0x11c9f: 84, + 0x11ca0: 84, + 0x11ca1: 84, + 0x11ca2: 84, + 0x11ca3: 84, + 0x11ca4: 84, + 0x11ca5: 84, + 0x11ca6: 84, + 0x11ca7: 84, + 0x11caa: 84, + 0x11cab: 84, + 0x11cac: 84, + 0x11cad: 84, + 0x11cae: 84, + 0x11caf: 84, + 0x11cb0: 84, + 0x11cb2: 84, + 0x11cb3: 84, + 0x11cb5: 84, + 0x11cb6: 84, + 0x11d31: 84, + 0x11d32: 84, + 0x11d33: 84, + 0x11d34: 84, + 0x11d35: 84, + 0x11d36: 84, + 0x11d3a: 84, + 0x11d3c: 84, + 0x11d3d: 84, + 0x11d3f: 84, + 0x11d40: 84, + 0x11d41: 84, + 0x11d42: 84, + 0x11d43: 84, + 0x11d44: 84, + 0x11d45: 84, + 0x11d47: 84, + 0x11d90: 84, + 0x11d91: 84, + 0x11d95: 84, + 0x11d97: 84, + 0x11ef3: 84, + 0x11ef4: 84, + 0x11f00: 84, + 0x11f01: 84, + 0x11f36: 84, + 0x11f37: 84, + 0x11f38: 84, + 0x11f39: 84, + 0x11f3a: 84, + 0x11f40: 84, + 0x11f42: 84, + 0x13430: 84, + 0x13431: 84, + 0x13432: 84, + 0x13433: 84, + 0x13434: 84, + 0x13435: 84, + 0x13436: 84, + 0x13437: 84, + 0x13438: 84, + 0x13439: 84, + 0x1343a: 84, + 0x1343b: 84, + 0x1343c: 84, + 0x1343d: 84, + 0x1343e: 84, + 0x1343f: 84, + 0x13440: 84, + 0x13447: 84, + 0x13448: 84, + 0x13449: 84, + 0x1344a: 84, + 0x1344b: 84, + 0x1344c: 84, + 0x1344d: 84, + 0x1344e: 84, + 0x1344f: 84, + 0x13450: 84, + 0x13451: 84, + 0x13452: 84, + 0x13453: 84, + 0x13454: 84, + 0x13455: 84, + 0x16af0: 84, + 0x16af1: 84, + 0x16af2: 84, + 0x16af3: 84, + 0x16af4: 84, + 0x16b30: 84, + 0x16b31: 84, + 0x16b32: 84, + 0x16b33: 84, + 0x16b34: 84, + 0x16b35: 84, + 0x16b36: 84, + 0x16f4f: 84, + 0x16f8f: 84, + 0x16f90: 84, + 0x16f91: 84, + 0x16f92: 84, + 0x16fe4: 84, + 0x1bc9d: 84, + 0x1bc9e: 84, + 0x1bca0: 84, + 0x1bca1: 84, + 0x1bca2: 84, + 0x1bca3: 84, + 0x1cf00: 84, + 0x1cf01: 84, + 0x1cf02: 84, + 0x1cf03: 84, + 0x1cf04: 84, + 0x1cf05: 84, + 0x1cf06: 84, + 0x1cf07: 84, + 0x1cf08: 84, + 0x1cf09: 84, + 0x1cf0a: 84, + 0x1cf0b: 84, + 0x1cf0c: 84, + 0x1cf0d: 84, + 0x1cf0e: 84, + 0x1cf0f: 84, + 0x1cf10: 84, + 0x1cf11: 84, + 0x1cf12: 84, + 0x1cf13: 84, + 0x1cf14: 84, + 0x1cf15: 84, + 0x1cf16: 84, + 0x1cf17: 84, + 0x1cf18: 84, + 0x1cf19: 84, + 0x1cf1a: 84, + 0x1cf1b: 84, + 0x1cf1c: 84, + 0x1cf1d: 84, + 0x1cf1e: 84, + 0x1cf1f: 84, + 0x1cf20: 84, + 0x1cf21: 84, + 0x1cf22: 84, + 0x1cf23: 84, + 0x1cf24: 84, + 0x1cf25: 84, + 0x1cf26: 84, + 0x1cf27: 84, + 0x1cf28: 84, + 0x1cf29: 84, + 0x1cf2a: 84, + 0x1cf2b: 84, + 0x1cf2c: 84, + 0x1cf2d: 84, + 0x1cf30: 84, + 0x1cf31: 84, + 0x1cf32: 84, + 0x1cf33: 84, + 0x1cf34: 84, + 0x1cf35: 84, + 0x1cf36: 84, + 0x1cf37: 84, + 0x1cf38: 84, + 0x1cf39: 84, + 0x1cf3a: 84, + 0x1cf3b: 84, + 0x1cf3c: 84, + 0x1cf3d: 84, + 0x1cf3e: 84, + 0x1cf3f: 84, + 0x1cf40: 84, + 0x1cf41: 84, + 0x1cf42: 84, + 0x1cf43: 84, + 0x1cf44: 84, + 0x1cf45: 84, + 0x1cf46: 84, + 0x1d167: 84, + 0x1d168: 84, + 0x1d169: 84, + 0x1d173: 84, + 0x1d174: 84, + 0x1d175: 84, + 0x1d176: 84, + 0x1d177: 84, + 0x1d178: 84, + 0x1d179: 84, + 0x1d17a: 84, + 0x1d17b: 84, + 0x1d17c: 84, + 0x1d17d: 84, + 0x1d17e: 84, + 0x1d17f: 84, + 0x1d180: 84, + 0x1d181: 84, + 0x1d182: 84, + 0x1d185: 84, + 0x1d186: 84, + 0x1d187: 84, + 0x1d188: 84, + 0x1d189: 84, + 0x1d18a: 84, + 0x1d18b: 84, + 0x1d1aa: 84, + 0x1d1ab: 84, + 0x1d1ac: 84, + 0x1d1ad: 84, + 0x1d242: 84, + 0x1d243: 84, + 0x1d244: 84, + 0x1da00: 84, + 0x1da01: 84, + 0x1da02: 84, + 0x1da03: 84, + 0x1da04: 84, + 0x1da05: 84, + 0x1da06: 84, + 0x1da07: 84, + 0x1da08: 84, + 0x1da09: 84, + 0x1da0a: 84, + 0x1da0b: 84, + 0x1da0c: 84, + 0x1da0d: 84, + 0x1da0e: 84, + 0x1da0f: 84, + 0x1da10: 84, + 0x1da11: 84, + 0x1da12: 84, + 0x1da13: 84, + 0x1da14: 84, + 0x1da15: 84, + 0x1da16: 84, + 0x1da17: 84, + 0x1da18: 84, + 0x1da19: 84, + 0x1da1a: 84, + 0x1da1b: 84, + 0x1da1c: 84, + 0x1da1d: 84, + 0x1da1e: 84, + 0x1da1f: 84, + 0x1da20: 84, + 0x1da21: 84, + 0x1da22: 84, + 0x1da23: 84, + 0x1da24: 84, + 0x1da25: 84, + 0x1da26: 84, + 0x1da27: 84, + 0x1da28: 84, + 0x1da29: 84, + 0x1da2a: 84, + 0x1da2b: 84, + 0x1da2c: 84, + 0x1da2d: 84, + 0x1da2e: 84, + 0x1da2f: 84, + 0x1da30: 84, + 0x1da31: 84, + 0x1da32: 84, + 0x1da33: 84, + 0x1da34: 84, + 0x1da35: 84, + 0x1da36: 84, + 0x1da3b: 84, + 0x1da3c: 84, + 0x1da3d: 84, + 0x1da3e: 84, + 0x1da3f: 84, + 0x1da40: 84, + 0x1da41: 84, + 0x1da42: 84, + 0x1da43: 84, + 0x1da44: 84, + 0x1da45: 84, + 0x1da46: 84, + 0x1da47: 84, + 0x1da48: 84, + 0x1da49: 84, + 0x1da4a: 84, + 0x1da4b: 84, + 0x1da4c: 84, + 0x1da4d: 84, + 0x1da4e: 84, + 0x1da4f: 84, + 0x1da50: 84, + 0x1da51: 84, + 0x1da52: 84, + 0x1da53: 84, + 0x1da54: 84, + 0x1da55: 84, + 0x1da56: 84, + 0x1da57: 84, + 0x1da58: 84, + 0x1da59: 84, + 0x1da5a: 84, + 0x1da5b: 84, + 0x1da5c: 84, + 0x1da5d: 84, + 0x1da5e: 84, + 0x1da5f: 84, + 0x1da60: 84, + 0x1da61: 84, + 0x1da62: 84, + 0x1da63: 84, + 0x1da64: 84, + 0x1da65: 84, + 0x1da66: 84, + 0x1da67: 84, + 0x1da68: 84, + 0x1da69: 84, + 0x1da6a: 84, + 0x1da6b: 84, + 0x1da6c: 84, + 0x1da75: 84, + 0x1da84: 84, + 0x1da9b: 84, + 0x1da9c: 84, + 0x1da9d: 84, + 0x1da9e: 84, + 0x1da9f: 84, + 0x1daa1: 84, + 0x1daa2: 84, + 0x1daa3: 84, + 0x1daa4: 84, + 0x1daa5: 84, + 0x1daa6: 84, + 0x1daa7: 84, + 0x1daa8: 84, + 0x1daa9: 84, + 0x1daaa: 84, + 0x1daab: 84, + 0x1daac: 84, + 0x1daad: 84, + 0x1daae: 84, + 0x1daaf: 84, + 0x1e000: 84, + 0x1e001: 84, + 0x1e002: 84, + 0x1e003: 84, + 0x1e004: 84, + 0x1e005: 84, + 0x1e006: 84, + 0x1e008: 84, + 0x1e009: 84, + 0x1e00a: 84, + 0x1e00b: 84, + 0x1e00c: 84, + 0x1e00d: 84, + 0x1e00e: 84, + 0x1e00f: 84, + 0x1e010: 84, + 0x1e011: 84, + 0x1e012: 84, + 0x1e013: 84, + 0x1e014: 84, + 0x1e015: 84, + 0x1e016: 84, + 0x1e017: 84, + 0x1e018: 84, + 0x1e01b: 84, + 0x1e01c: 84, + 0x1e01d: 84, + 0x1e01e: 84, + 0x1e01f: 84, + 0x1e020: 84, + 0x1e021: 84, + 0x1e023: 84, + 0x1e024: 84, + 0x1e026: 84, + 0x1e027: 84, + 0x1e028: 84, + 0x1e029: 84, + 0x1e02a: 84, + 0x1e08f: 84, + 0x1e130: 84, + 0x1e131: 84, + 0x1e132: 84, + 0x1e133: 84, + 0x1e134: 84, + 0x1e135: 84, + 0x1e136: 84, + 0x1e2ae: 84, + 0x1e2ec: 84, + 0x1e2ed: 84, + 0x1e2ee: 84, + 0x1e2ef: 84, + 0x1e4ec: 84, + 0x1e4ed: 84, + 0x1e4ee: 84, + 0x1e4ef: 84, + 0x1e8d0: 84, + 0x1e8d1: 84, + 0x1e8d2: 84, + 0x1e8d3: 84, + 0x1e8d4: 84, + 0x1e8d5: 84, + 0x1e8d6: 84, + 0x1e900: 68, + 0x1e901: 68, + 0x1e902: 68, + 0x1e903: 68, + 0x1e904: 68, + 0x1e905: 68, + 0x1e906: 68, + 0x1e907: 68, + 0x1e908: 68, + 0x1e909: 68, + 0x1e90a: 68, + 0x1e90b: 68, + 0x1e90c: 68, + 0x1e90d: 68, + 0x1e90e: 68, + 0x1e90f: 68, + 0x1e910: 68, + 0x1e911: 68, + 0x1e912: 68, + 0x1e913: 68, + 0x1e914: 68, + 0x1e915: 68, + 0x1e916: 68, + 0x1e917: 68, + 0x1e918: 68, + 0x1e919: 68, + 0x1e91a: 68, + 0x1e91b: 68, + 0x1e91c: 68, + 0x1e91d: 68, + 0x1e91e: 68, + 0x1e91f: 68, + 0x1e920: 68, + 0x1e921: 68, + 0x1e922: 68, + 0x1e923: 68, + 0x1e924: 68, + 0x1e925: 68, + 0x1e926: 68, + 0x1e927: 68, + 0x1e928: 68, + 0x1e929: 68, + 0x1e92a: 68, + 0x1e92b: 68, + 0x1e92c: 68, + 0x1e92d: 68, + 0x1e92e: 68, + 0x1e92f: 68, + 0x1e930: 68, + 0x1e931: 68, + 0x1e932: 68, + 0x1e933: 68, + 0x1e934: 68, + 0x1e935: 68, + 0x1e936: 68, + 0x1e937: 68, + 0x1e938: 68, + 0x1e939: 68, + 0x1e93a: 68, + 0x1e93b: 68, + 0x1e93c: 68, + 0x1e93d: 68, + 0x1e93e: 68, + 0x1e93f: 68, + 0x1e940: 68, + 0x1e941: 68, + 0x1e942: 68, + 0x1e943: 68, + 0x1e944: 84, + 0x1e945: 84, + 0x1e946: 84, + 0x1e947: 84, + 0x1e948: 84, + 0x1e949: 84, + 0x1e94a: 84, + 0x1e94b: 84, + 0xe0001: 84, + 0xe0020: 84, + 0xe0021: 84, + 0xe0022: 84, + 0xe0023: 84, + 0xe0024: 84, + 0xe0025: 84, + 0xe0026: 84, + 0xe0027: 84, + 0xe0028: 84, + 0xe0029: 84, + 0xe002a: 84, + 0xe002b: 84, + 0xe002c: 84, + 0xe002d: 84, + 0xe002e: 84, + 0xe002f: 84, + 0xe0030: 84, + 0xe0031: 84, + 0xe0032: 84, + 0xe0033: 84, + 0xe0034: 84, + 0xe0035: 84, + 0xe0036: 84, + 0xe0037: 84, + 0xe0038: 84, + 0xe0039: 84, + 0xe003a: 84, + 0xe003b: 84, + 0xe003c: 84, + 0xe003d: 84, + 0xe003e: 84, + 0xe003f: 84, + 0xe0040: 84, + 0xe0041: 84, + 0xe0042: 84, + 0xe0043: 84, + 0xe0044: 84, + 0xe0045: 84, + 0xe0046: 84, + 0xe0047: 84, + 0xe0048: 84, + 0xe0049: 84, + 0xe004a: 84, + 0xe004b: 84, + 0xe004c: 84, + 0xe004d: 84, + 0xe004e: 84, + 0xe004f: 84, + 0xe0050: 84, + 0xe0051: 84, + 0xe0052: 84, + 0xe0053: 84, + 0xe0054: 84, + 0xe0055: 84, + 0xe0056: 84, + 0xe0057: 84, + 0xe0058: 84, + 0xe0059: 84, + 0xe005a: 84, + 0xe005b: 84, + 0xe005c: 84, + 0xe005d: 84, + 0xe005e: 84, + 0xe005f: 84, + 0xe0060: 84, + 0xe0061: 84, + 0xe0062: 84, + 0xe0063: 84, + 0xe0064: 84, + 0xe0065: 84, + 0xe0066: 84, + 0xe0067: 84, + 0xe0068: 84, + 0xe0069: 84, + 0xe006a: 84, + 0xe006b: 84, + 0xe006c: 84, + 0xe006d: 84, + 0xe006e: 84, + 0xe006f: 84, + 0xe0070: 84, + 0xe0071: 84, + 0xe0072: 84, + 0xe0073: 84, + 0xe0074: 84, + 0xe0075: 84, + 0xe0076: 84, + 0xe0077: 84, + 0xe0078: 84, + 0xe0079: 84, + 0xe007a: 84, + 0xe007b: 84, + 0xe007c: 84, + 0xe007d: 84, + 0xe007e: 84, + 0xe007f: 84, + 0xe0100: 84, + 0xe0101: 84, + 0xe0102: 84, + 0xe0103: 84, + 0xe0104: 84, + 0xe0105: 84, + 0xe0106: 84, + 0xe0107: 84, + 0xe0108: 84, + 0xe0109: 84, + 0xe010a: 84, + 0xe010b: 84, + 0xe010c: 84, + 0xe010d: 84, + 0xe010e: 84, + 0xe010f: 84, + 0xe0110: 84, + 0xe0111: 84, + 0xe0112: 84, + 0xe0113: 84, + 0xe0114: 84, + 0xe0115: 84, + 0xe0116: 84, + 0xe0117: 84, + 0xe0118: 84, + 0xe0119: 84, + 0xe011a: 84, + 0xe011b: 84, + 0xe011c: 84, + 0xe011d: 84, + 0xe011e: 84, + 0xe011f: 84, + 0xe0120: 84, + 0xe0121: 84, + 0xe0122: 84, + 0xe0123: 84, + 0xe0124: 84, + 0xe0125: 84, + 0xe0126: 84, + 0xe0127: 84, + 0xe0128: 84, + 0xe0129: 84, + 0xe012a: 84, + 0xe012b: 84, + 0xe012c: 84, + 0xe012d: 84, + 0xe012e: 84, + 0xe012f: 84, + 0xe0130: 84, + 0xe0131: 84, + 0xe0132: 84, + 0xe0133: 84, + 0xe0134: 84, + 0xe0135: 84, + 0xe0136: 84, + 0xe0137: 84, + 0xe0138: 84, + 0xe0139: 84, + 0xe013a: 84, + 0xe013b: 84, + 0xe013c: 84, + 0xe013d: 84, + 0xe013e: 84, + 0xe013f: 84, + 0xe0140: 84, + 0xe0141: 84, + 0xe0142: 84, + 0xe0143: 84, + 0xe0144: 84, + 0xe0145: 84, + 0xe0146: 84, + 0xe0147: 84, + 0xe0148: 84, + 0xe0149: 84, + 0xe014a: 84, + 0xe014b: 84, + 0xe014c: 84, + 0xe014d: 84, + 0xe014e: 84, + 0xe014f: 84, + 0xe0150: 84, + 0xe0151: 84, + 0xe0152: 84, + 0xe0153: 84, + 0xe0154: 84, + 0xe0155: 84, + 0xe0156: 84, + 0xe0157: 84, + 0xe0158: 84, + 0xe0159: 84, + 0xe015a: 84, + 0xe015b: 84, + 0xe015c: 84, + 0xe015d: 84, + 0xe015e: 84, + 0xe015f: 84, + 0xe0160: 84, + 0xe0161: 84, + 0xe0162: 84, + 0xe0163: 84, + 0xe0164: 84, + 0xe0165: 84, + 0xe0166: 84, + 0xe0167: 84, + 0xe0168: 84, + 0xe0169: 84, + 0xe016a: 84, + 0xe016b: 84, + 0xe016c: 84, + 0xe016d: 84, + 0xe016e: 84, + 0xe016f: 84, + 0xe0170: 84, + 0xe0171: 84, + 0xe0172: 84, + 0xe0173: 84, + 0xe0174: 84, + 0xe0175: 84, + 0xe0176: 84, + 0xe0177: 84, + 0xe0178: 84, + 0xe0179: 84, + 0xe017a: 84, + 0xe017b: 84, + 0xe017c: 84, + 0xe017d: 84, + 0xe017e: 84, + 0xe017f: 84, + 0xe0180: 84, + 0xe0181: 84, + 0xe0182: 84, + 0xe0183: 84, + 0xe0184: 84, + 0xe0185: 84, + 0xe0186: 84, + 0xe0187: 84, + 0xe0188: 84, + 0xe0189: 84, + 0xe018a: 84, + 0xe018b: 84, + 0xe018c: 84, + 0xe018d: 84, + 0xe018e: 84, + 0xe018f: 84, + 0xe0190: 84, + 0xe0191: 84, + 0xe0192: 84, + 0xe0193: 84, + 0xe0194: 84, + 0xe0195: 84, + 0xe0196: 84, + 0xe0197: 84, + 0xe0198: 84, + 0xe0199: 84, + 0xe019a: 84, + 0xe019b: 84, + 0xe019c: 84, + 0xe019d: 84, + 0xe019e: 84, + 0xe019f: 84, + 0xe01a0: 84, + 0xe01a1: 84, + 0xe01a2: 84, + 0xe01a3: 84, + 0xe01a4: 84, + 0xe01a5: 84, + 0xe01a6: 84, + 0xe01a7: 84, + 0xe01a8: 84, + 0xe01a9: 84, + 0xe01aa: 84, + 0xe01ab: 84, + 0xe01ac: 84, + 0xe01ad: 84, + 0xe01ae: 84, + 0xe01af: 84, + 0xe01b0: 84, + 0xe01b1: 84, + 0xe01b2: 84, + 0xe01b3: 84, + 0xe01b4: 84, + 0xe01b5: 84, + 0xe01b6: 84, + 0xe01b7: 84, + 0xe01b8: 84, + 0xe01b9: 84, + 0xe01ba: 84, + 0xe01bb: 84, + 0xe01bc: 84, + 0xe01bd: 84, + 0xe01be: 84, + 0xe01bf: 84, + 0xe01c0: 84, + 0xe01c1: 84, + 0xe01c2: 84, + 0xe01c3: 84, + 0xe01c4: 84, + 0xe01c5: 84, + 0xe01c6: 84, + 0xe01c7: 84, + 0xe01c8: 84, + 0xe01c9: 84, + 0xe01ca: 84, + 0xe01cb: 84, + 0xe01cc: 84, + 0xe01cd: 84, + 0xe01ce: 84, + 0xe01cf: 84, + 0xe01d0: 84, + 0xe01d1: 84, + 0xe01d2: 84, + 0xe01d3: 84, + 0xe01d4: 84, + 0xe01d5: 84, + 0xe01d6: 84, + 0xe01d7: 84, + 0xe01d8: 84, + 0xe01d9: 84, + 0xe01da: 84, + 0xe01db: 84, + 0xe01dc: 84, + 0xe01dd: 84, + 0xe01de: 84, + 0xe01df: 84, + 0xe01e0: 84, + 0xe01e1: 84, + 0xe01e2: 84, + 0xe01e3: 84, + 0xe01e4: 84, + 0xe01e5: 84, + 0xe01e6: 84, + 0xe01e7: 84, + 0xe01e8: 84, + 0xe01e9: 84, + 0xe01ea: 84, + 0xe01eb: 84, + 0xe01ec: 84, + 0xe01ed: 84, + 0xe01ee: 84, + 0xe01ef: 84, +} +codepoint_classes = { + 'PVALID': ( + 0x2d0000002e, + 0x300000003a, + 0x610000007b, + 0xdf000000f7, + 0xf800000100, + 0x10100000102, + 0x10300000104, + 0x10500000106, + 0x10700000108, + 0x1090000010a, + 0x10b0000010c, + 0x10d0000010e, + 0x10f00000110, + 0x11100000112, + 0x11300000114, + 0x11500000116, + 0x11700000118, + 0x1190000011a, + 0x11b0000011c, + 0x11d0000011e, + 0x11f00000120, + 0x12100000122, + 0x12300000124, + 0x12500000126, + 0x12700000128, + 0x1290000012a, + 0x12b0000012c, + 0x12d0000012e, + 0x12f00000130, + 0x13100000132, + 0x13500000136, + 0x13700000139, + 0x13a0000013b, + 0x13c0000013d, + 0x13e0000013f, + 0x14200000143, + 0x14400000145, + 0x14600000147, + 0x14800000149, + 0x14b0000014c, + 0x14d0000014e, + 0x14f00000150, + 0x15100000152, + 0x15300000154, + 0x15500000156, + 0x15700000158, + 0x1590000015a, + 0x15b0000015c, + 0x15d0000015e, + 0x15f00000160, + 0x16100000162, + 0x16300000164, + 0x16500000166, + 0x16700000168, + 0x1690000016a, + 0x16b0000016c, + 0x16d0000016e, + 0x16f00000170, + 0x17100000172, + 0x17300000174, + 0x17500000176, + 0x17700000178, + 0x17a0000017b, + 0x17c0000017d, + 0x17e0000017f, + 0x18000000181, + 0x18300000184, + 0x18500000186, + 0x18800000189, + 0x18c0000018e, + 0x19200000193, + 0x19500000196, + 0x1990000019c, + 0x19e0000019f, + 0x1a1000001a2, + 0x1a3000001a4, + 0x1a5000001a6, + 0x1a8000001a9, + 0x1aa000001ac, + 0x1ad000001ae, + 0x1b0000001b1, + 0x1b4000001b5, + 0x1b6000001b7, + 0x1b9000001bc, + 0x1bd000001c4, + 0x1ce000001cf, + 0x1d0000001d1, + 0x1d2000001d3, + 0x1d4000001d5, + 0x1d6000001d7, + 0x1d8000001d9, + 0x1da000001db, + 0x1dc000001de, + 0x1df000001e0, + 0x1e1000001e2, + 0x1e3000001e4, + 0x1e5000001e6, + 0x1e7000001e8, + 0x1e9000001ea, + 0x1eb000001ec, + 0x1ed000001ee, + 0x1ef000001f1, + 0x1f5000001f6, + 0x1f9000001fa, + 0x1fb000001fc, + 0x1fd000001fe, + 0x1ff00000200, + 0x20100000202, + 0x20300000204, + 0x20500000206, + 0x20700000208, + 0x2090000020a, + 0x20b0000020c, + 0x20d0000020e, + 0x20f00000210, + 0x21100000212, + 0x21300000214, + 0x21500000216, + 0x21700000218, + 0x2190000021a, + 0x21b0000021c, + 0x21d0000021e, + 0x21f00000220, + 0x22100000222, + 0x22300000224, + 0x22500000226, + 0x22700000228, + 0x2290000022a, + 0x22b0000022c, + 0x22d0000022e, + 0x22f00000230, + 0x23100000232, + 0x2330000023a, + 0x23c0000023d, + 0x23f00000241, + 0x24200000243, + 0x24700000248, + 0x2490000024a, + 0x24b0000024c, + 0x24d0000024e, + 0x24f000002b0, + 0x2b9000002c2, + 0x2c6000002d2, + 0x2ec000002ed, + 0x2ee000002ef, + 0x30000000340, + 0x34200000343, + 0x3460000034f, + 0x35000000370, + 0x37100000372, + 0x37300000374, + 0x37700000378, + 0x37b0000037e, + 0x39000000391, + 0x3ac000003cf, + 0x3d7000003d8, + 0x3d9000003da, + 0x3db000003dc, + 0x3dd000003de, + 0x3df000003e0, + 0x3e1000003e2, + 0x3e3000003e4, + 0x3e5000003e6, + 0x3e7000003e8, + 0x3e9000003ea, + 0x3eb000003ec, + 0x3ed000003ee, + 0x3ef000003f0, + 0x3f3000003f4, + 0x3f8000003f9, + 0x3fb000003fd, + 0x43000000460, + 0x46100000462, + 0x46300000464, + 0x46500000466, + 0x46700000468, + 0x4690000046a, + 0x46b0000046c, + 0x46d0000046e, + 0x46f00000470, + 0x47100000472, + 0x47300000474, + 0x47500000476, + 0x47700000478, + 0x4790000047a, + 0x47b0000047c, + 0x47d0000047e, + 0x47f00000480, + 0x48100000482, + 0x48300000488, + 0x48b0000048c, + 0x48d0000048e, + 0x48f00000490, + 0x49100000492, + 0x49300000494, + 0x49500000496, + 0x49700000498, + 0x4990000049a, + 0x49b0000049c, + 0x49d0000049e, + 0x49f000004a0, + 0x4a1000004a2, + 0x4a3000004a4, + 0x4a5000004a6, + 0x4a7000004a8, + 0x4a9000004aa, + 0x4ab000004ac, + 0x4ad000004ae, + 0x4af000004b0, + 0x4b1000004b2, + 0x4b3000004b4, + 0x4b5000004b6, + 0x4b7000004b8, + 0x4b9000004ba, + 0x4bb000004bc, + 0x4bd000004be, + 0x4bf000004c0, + 0x4c2000004c3, + 0x4c4000004c5, + 0x4c6000004c7, + 0x4c8000004c9, + 0x4ca000004cb, + 0x4cc000004cd, + 0x4ce000004d0, + 0x4d1000004d2, + 0x4d3000004d4, + 0x4d5000004d6, + 0x4d7000004d8, + 0x4d9000004da, + 0x4db000004dc, + 0x4dd000004de, + 0x4df000004e0, + 0x4e1000004e2, + 0x4e3000004e4, + 0x4e5000004e6, + 0x4e7000004e8, + 0x4e9000004ea, + 0x4eb000004ec, + 0x4ed000004ee, + 0x4ef000004f0, + 0x4f1000004f2, + 0x4f3000004f4, + 0x4f5000004f6, + 0x4f7000004f8, + 0x4f9000004fa, + 0x4fb000004fc, + 0x4fd000004fe, + 0x4ff00000500, + 0x50100000502, + 0x50300000504, + 0x50500000506, + 0x50700000508, + 0x5090000050a, + 0x50b0000050c, + 0x50d0000050e, + 0x50f00000510, + 0x51100000512, + 0x51300000514, + 0x51500000516, + 0x51700000518, + 0x5190000051a, + 0x51b0000051c, + 0x51d0000051e, + 0x51f00000520, + 0x52100000522, + 0x52300000524, + 0x52500000526, + 0x52700000528, + 0x5290000052a, + 0x52b0000052c, + 0x52d0000052e, + 0x52f00000530, + 0x5590000055a, + 0x56000000587, + 0x58800000589, + 0x591000005be, + 0x5bf000005c0, + 0x5c1000005c3, + 0x5c4000005c6, + 0x5c7000005c8, + 0x5d0000005eb, + 0x5ef000005f3, + 0x6100000061b, + 0x62000000640, + 0x64100000660, + 0x66e00000675, + 0x679000006d4, + 0x6d5000006dd, + 0x6df000006e9, + 0x6ea000006f0, + 0x6fa00000700, + 0x7100000074b, + 0x74d000007b2, + 0x7c0000007f6, + 0x7fd000007fe, + 0x8000000082e, + 0x8400000085c, + 0x8600000086b, + 0x87000000888, + 0x8890000088f, + 0x898000008e2, + 0x8e300000958, + 0x96000000964, + 0x96600000970, + 0x97100000984, + 0x9850000098d, + 0x98f00000991, + 0x993000009a9, + 0x9aa000009b1, + 0x9b2000009b3, + 0x9b6000009ba, + 0x9bc000009c5, + 0x9c7000009c9, + 0x9cb000009cf, + 0x9d7000009d8, + 0x9e0000009e4, + 0x9e6000009f2, + 0x9fc000009fd, + 0x9fe000009ff, + 0xa0100000a04, + 0xa0500000a0b, + 0xa0f00000a11, + 0xa1300000a29, + 0xa2a00000a31, + 0xa3200000a33, + 0xa3500000a36, + 0xa3800000a3a, + 0xa3c00000a3d, + 0xa3e00000a43, + 0xa4700000a49, + 0xa4b00000a4e, + 0xa5100000a52, + 0xa5c00000a5d, + 0xa6600000a76, + 0xa8100000a84, + 0xa8500000a8e, + 0xa8f00000a92, + 0xa9300000aa9, + 0xaaa00000ab1, + 0xab200000ab4, + 0xab500000aba, + 0xabc00000ac6, + 0xac700000aca, + 0xacb00000ace, + 0xad000000ad1, + 0xae000000ae4, + 0xae600000af0, + 0xaf900000b00, + 0xb0100000b04, + 0xb0500000b0d, + 0xb0f00000b11, + 0xb1300000b29, + 0xb2a00000b31, + 0xb3200000b34, + 0xb3500000b3a, + 0xb3c00000b45, + 0xb4700000b49, + 0xb4b00000b4e, + 0xb5500000b58, + 0xb5f00000b64, + 0xb6600000b70, + 0xb7100000b72, + 0xb8200000b84, + 0xb8500000b8b, + 0xb8e00000b91, + 0xb9200000b96, + 0xb9900000b9b, + 0xb9c00000b9d, + 0xb9e00000ba0, + 0xba300000ba5, + 0xba800000bab, + 0xbae00000bba, + 0xbbe00000bc3, + 0xbc600000bc9, + 0xbca00000bce, + 0xbd000000bd1, + 0xbd700000bd8, + 0xbe600000bf0, + 0xc0000000c0d, + 0xc0e00000c11, + 0xc1200000c29, + 0xc2a00000c3a, + 0xc3c00000c45, + 0xc4600000c49, + 0xc4a00000c4e, + 0xc5500000c57, + 0xc5800000c5b, + 0xc5d00000c5e, + 0xc6000000c64, + 0xc6600000c70, + 0xc8000000c84, + 0xc8500000c8d, + 0xc8e00000c91, + 0xc9200000ca9, + 0xcaa00000cb4, + 0xcb500000cba, + 0xcbc00000cc5, + 0xcc600000cc9, + 0xcca00000cce, + 0xcd500000cd7, + 0xcdd00000cdf, + 0xce000000ce4, + 0xce600000cf0, + 0xcf100000cf4, + 0xd0000000d0d, + 0xd0e00000d11, + 0xd1200000d45, + 0xd4600000d49, + 0xd4a00000d4f, + 0xd5400000d58, + 0xd5f00000d64, + 0xd6600000d70, + 0xd7a00000d80, + 0xd8100000d84, + 0xd8500000d97, + 0xd9a00000db2, + 0xdb300000dbc, + 0xdbd00000dbe, + 0xdc000000dc7, + 0xdca00000dcb, + 0xdcf00000dd5, + 0xdd600000dd7, + 0xdd800000de0, + 0xde600000df0, + 0xdf200000df4, + 0xe0100000e33, + 0xe3400000e3b, + 0xe4000000e4f, + 0xe5000000e5a, + 0xe8100000e83, + 0xe8400000e85, + 0xe8600000e8b, + 0xe8c00000ea4, + 0xea500000ea6, + 0xea700000eb3, + 0xeb400000ebe, + 0xec000000ec5, + 0xec600000ec7, + 0xec800000ecf, + 0xed000000eda, + 0xede00000ee0, + 0xf0000000f01, + 0xf0b00000f0c, + 0xf1800000f1a, + 0xf2000000f2a, + 0xf3500000f36, + 0xf3700000f38, + 0xf3900000f3a, + 0xf3e00000f43, + 0xf4400000f48, + 0xf4900000f4d, + 0xf4e00000f52, + 0xf5300000f57, + 0xf5800000f5c, + 0xf5d00000f69, + 0xf6a00000f6d, + 0xf7100000f73, + 0xf7400000f75, + 0xf7a00000f81, + 0xf8200000f85, + 0xf8600000f93, + 0xf9400000f98, + 0xf9900000f9d, + 0xf9e00000fa2, + 0xfa300000fa7, + 0xfa800000fac, + 0xfad00000fb9, + 0xfba00000fbd, + 0xfc600000fc7, + 0x10000000104a, + 0x10500000109e, + 0x10d0000010fb, + 0x10fd00001100, + 0x120000001249, + 0x124a0000124e, + 0x125000001257, + 0x125800001259, + 0x125a0000125e, + 0x126000001289, + 0x128a0000128e, + 0x1290000012b1, + 0x12b2000012b6, + 0x12b8000012bf, + 0x12c0000012c1, + 0x12c2000012c6, + 0x12c8000012d7, + 0x12d800001311, + 0x131200001316, + 0x13180000135b, + 0x135d00001360, + 0x138000001390, + 0x13a0000013f6, + 0x14010000166d, + 0x166f00001680, + 0x16810000169b, + 0x16a0000016eb, + 0x16f1000016f9, + 0x170000001716, + 0x171f00001735, + 0x174000001754, + 0x17600000176d, + 0x176e00001771, + 0x177200001774, + 0x1780000017b4, + 0x17b6000017d4, + 0x17d7000017d8, + 0x17dc000017de, + 0x17e0000017ea, + 0x18100000181a, + 0x182000001879, + 0x1880000018ab, + 0x18b0000018f6, + 0x19000000191f, + 0x19200000192c, + 0x19300000193c, + 0x19460000196e, + 0x197000001975, + 0x1980000019ac, + 0x19b0000019ca, + 0x19d0000019da, + 0x1a0000001a1c, + 0x1a2000001a5f, + 0x1a6000001a7d, + 0x1a7f00001a8a, + 0x1a9000001a9a, + 0x1aa700001aa8, + 0x1ab000001abe, + 0x1abf00001acf, + 0x1b0000001b4d, + 0x1b5000001b5a, + 0x1b6b00001b74, + 0x1b8000001bf4, + 0x1c0000001c38, + 0x1c4000001c4a, + 0x1c4d00001c7e, + 0x1cd000001cd3, + 0x1cd400001cfb, + 0x1d0000001d2c, + 0x1d2f00001d30, + 0x1d3b00001d3c, + 0x1d4e00001d4f, + 0x1d6b00001d78, + 0x1d7900001d9b, + 0x1dc000001e00, + 0x1e0100001e02, + 0x1e0300001e04, + 0x1e0500001e06, + 0x1e0700001e08, + 0x1e0900001e0a, + 0x1e0b00001e0c, + 0x1e0d00001e0e, + 0x1e0f00001e10, + 0x1e1100001e12, + 0x1e1300001e14, + 0x1e1500001e16, + 0x1e1700001e18, + 0x1e1900001e1a, + 0x1e1b00001e1c, + 0x1e1d00001e1e, + 0x1e1f00001e20, + 0x1e2100001e22, + 0x1e2300001e24, + 0x1e2500001e26, + 0x1e2700001e28, + 0x1e2900001e2a, + 0x1e2b00001e2c, + 0x1e2d00001e2e, + 0x1e2f00001e30, + 0x1e3100001e32, + 0x1e3300001e34, + 0x1e3500001e36, + 0x1e3700001e38, + 0x1e3900001e3a, + 0x1e3b00001e3c, + 0x1e3d00001e3e, + 0x1e3f00001e40, + 0x1e4100001e42, + 0x1e4300001e44, + 0x1e4500001e46, + 0x1e4700001e48, + 0x1e4900001e4a, + 0x1e4b00001e4c, + 0x1e4d00001e4e, + 0x1e4f00001e50, + 0x1e5100001e52, + 0x1e5300001e54, + 0x1e5500001e56, + 0x1e5700001e58, + 0x1e5900001e5a, + 0x1e5b00001e5c, + 0x1e5d00001e5e, + 0x1e5f00001e60, + 0x1e6100001e62, + 0x1e6300001e64, + 0x1e6500001e66, + 0x1e6700001e68, + 0x1e6900001e6a, + 0x1e6b00001e6c, + 0x1e6d00001e6e, + 0x1e6f00001e70, + 0x1e7100001e72, + 0x1e7300001e74, + 0x1e7500001e76, + 0x1e7700001e78, + 0x1e7900001e7a, + 0x1e7b00001e7c, + 0x1e7d00001e7e, + 0x1e7f00001e80, + 0x1e8100001e82, + 0x1e8300001e84, + 0x1e8500001e86, + 0x1e8700001e88, + 0x1e8900001e8a, + 0x1e8b00001e8c, + 0x1e8d00001e8e, + 0x1e8f00001e90, + 0x1e9100001e92, + 0x1e9300001e94, + 0x1e9500001e9a, + 0x1e9c00001e9e, + 0x1e9f00001ea0, + 0x1ea100001ea2, + 0x1ea300001ea4, + 0x1ea500001ea6, + 0x1ea700001ea8, + 0x1ea900001eaa, + 0x1eab00001eac, + 0x1ead00001eae, + 0x1eaf00001eb0, + 0x1eb100001eb2, + 0x1eb300001eb4, + 0x1eb500001eb6, + 0x1eb700001eb8, + 0x1eb900001eba, + 0x1ebb00001ebc, + 0x1ebd00001ebe, + 0x1ebf00001ec0, + 0x1ec100001ec2, + 0x1ec300001ec4, + 0x1ec500001ec6, + 0x1ec700001ec8, + 0x1ec900001eca, + 0x1ecb00001ecc, + 0x1ecd00001ece, + 0x1ecf00001ed0, + 0x1ed100001ed2, + 0x1ed300001ed4, + 0x1ed500001ed6, + 0x1ed700001ed8, + 0x1ed900001eda, + 0x1edb00001edc, + 0x1edd00001ede, + 0x1edf00001ee0, + 0x1ee100001ee2, + 0x1ee300001ee4, + 0x1ee500001ee6, + 0x1ee700001ee8, + 0x1ee900001eea, + 0x1eeb00001eec, + 0x1eed00001eee, + 0x1eef00001ef0, + 0x1ef100001ef2, + 0x1ef300001ef4, + 0x1ef500001ef6, + 0x1ef700001ef8, + 0x1ef900001efa, + 0x1efb00001efc, + 0x1efd00001efe, + 0x1eff00001f08, + 0x1f1000001f16, + 0x1f2000001f28, + 0x1f3000001f38, + 0x1f4000001f46, + 0x1f5000001f58, + 0x1f6000001f68, + 0x1f7000001f71, + 0x1f7200001f73, + 0x1f7400001f75, + 0x1f7600001f77, + 0x1f7800001f79, + 0x1f7a00001f7b, + 0x1f7c00001f7d, + 0x1fb000001fb2, + 0x1fb600001fb7, + 0x1fc600001fc7, + 0x1fd000001fd3, + 0x1fd600001fd8, + 0x1fe000001fe3, + 0x1fe400001fe8, + 0x1ff600001ff7, + 0x214e0000214f, + 0x218400002185, + 0x2c3000002c60, + 0x2c6100002c62, + 0x2c6500002c67, + 0x2c6800002c69, + 0x2c6a00002c6b, + 0x2c6c00002c6d, + 0x2c7100002c72, + 0x2c7300002c75, + 0x2c7600002c7c, + 0x2c8100002c82, + 0x2c8300002c84, + 0x2c8500002c86, + 0x2c8700002c88, + 0x2c8900002c8a, + 0x2c8b00002c8c, + 0x2c8d00002c8e, + 0x2c8f00002c90, + 0x2c9100002c92, + 0x2c9300002c94, + 0x2c9500002c96, + 0x2c9700002c98, + 0x2c9900002c9a, + 0x2c9b00002c9c, + 0x2c9d00002c9e, + 0x2c9f00002ca0, + 0x2ca100002ca2, + 0x2ca300002ca4, + 0x2ca500002ca6, + 0x2ca700002ca8, + 0x2ca900002caa, + 0x2cab00002cac, + 0x2cad00002cae, + 0x2caf00002cb0, + 0x2cb100002cb2, + 0x2cb300002cb4, + 0x2cb500002cb6, + 0x2cb700002cb8, + 0x2cb900002cba, + 0x2cbb00002cbc, + 0x2cbd00002cbe, + 0x2cbf00002cc0, + 0x2cc100002cc2, + 0x2cc300002cc4, + 0x2cc500002cc6, + 0x2cc700002cc8, + 0x2cc900002cca, + 0x2ccb00002ccc, + 0x2ccd00002cce, + 0x2ccf00002cd0, + 0x2cd100002cd2, + 0x2cd300002cd4, + 0x2cd500002cd6, + 0x2cd700002cd8, + 0x2cd900002cda, + 0x2cdb00002cdc, + 0x2cdd00002cde, + 0x2cdf00002ce0, + 0x2ce100002ce2, + 0x2ce300002ce5, + 0x2cec00002ced, + 0x2cee00002cf2, + 0x2cf300002cf4, + 0x2d0000002d26, + 0x2d2700002d28, + 0x2d2d00002d2e, + 0x2d3000002d68, + 0x2d7f00002d97, + 0x2da000002da7, + 0x2da800002daf, + 0x2db000002db7, + 0x2db800002dbf, + 0x2dc000002dc7, + 0x2dc800002dcf, + 0x2dd000002dd7, + 0x2dd800002ddf, + 0x2de000002e00, + 0x2e2f00002e30, + 0x300500003008, + 0x302a0000302e, + 0x303c0000303d, + 0x304100003097, + 0x30990000309b, + 0x309d0000309f, + 0x30a1000030fb, + 0x30fc000030ff, + 0x310500003130, + 0x31a0000031c0, + 0x31f000003200, + 0x340000004dc0, + 0x4e000000a48d, + 0xa4d00000a4fe, + 0xa5000000a60d, + 0xa6100000a62c, + 0xa6410000a642, + 0xa6430000a644, + 0xa6450000a646, + 0xa6470000a648, + 0xa6490000a64a, + 0xa64b0000a64c, + 0xa64d0000a64e, + 0xa64f0000a650, + 0xa6510000a652, + 0xa6530000a654, + 0xa6550000a656, + 0xa6570000a658, + 0xa6590000a65a, + 0xa65b0000a65c, + 0xa65d0000a65e, + 0xa65f0000a660, + 0xa6610000a662, + 0xa6630000a664, + 0xa6650000a666, + 0xa6670000a668, + 0xa6690000a66a, + 0xa66b0000a66c, + 0xa66d0000a670, + 0xa6740000a67e, + 0xa67f0000a680, + 0xa6810000a682, + 0xa6830000a684, + 0xa6850000a686, + 0xa6870000a688, + 0xa6890000a68a, + 0xa68b0000a68c, + 0xa68d0000a68e, + 0xa68f0000a690, + 0xa6910000a692, + 0xa6930000a694, + 0xa6950000a696, + 0xa6970000a698, + 0xa6990000a69a, + 0xa69b0000a69c, + 0xa69e0000a6e6, + 0xa6f00000a6f2, + 0xa7170000a720, + 0xa7230000a724, + 0xa7250000a726, + 0xa7270000a728, + 0xa7290000a72a, + 0xa72b0000a72c, + 0xa72d0000a72e, + 0xa72f0000a732, + 0xa7330000a734, + 0xa7350000a736, + 0xa7370000a738, + 0xa7390000a73a, + 0xa73b0000a73c, + 0xa73d0000a73e, + 0xa73f0000a740, + 0xa7410000a742, + 0xa7430000a744, + 0xa7450000a746, + 0xa7470000a748, + 0xa7490000a74a, + 0xa74b0000a74c, + 0xa74d0000a74e, + 0xa74f0000a750, + 0xa7510000a752, + 0xa7530000a754, + 0xa7550000a756, + 0xa7570000a758, + 0xa7590000a75a, + 0xa75b0000a75c, + 0xa75d0000a75e, + 0xa75f0000a760, + 0xa7610000a762, + 0xa7630000a764, + 0xa7650000a766, + 0xa7670000a768, + 0xa7690000a76a, + 0xa76b0000a76c, + 0xa76d0000a76e, + 0xa76f0000a770, + 0xa7710000a779, + 0xa77a0000a77b, + 0xa77c0000a77d, + 0xa77f0000a780, + 0xa7810000a782, + 0xa7830000a784, + 0xa7850000a786, + 0xa7870000a789, + 0xa78c0000a78d, + 0xa78e0000a790, + 0xa7910000a792, + 0xa7930000a796, + 0xa7970000a798, + 0xa7990000a79a, + 0xa79b0000a79c, + 0xa79d0000a79e, + 0xa79f0000a7a0, + 0xa7a10000a7a2, + 0xa7a30000a7a4, + 0xa7a50000a7a6, + 0xa7a70000a7a8, + 0xa7a90000a7aa, + 0xa7af0000a7b0, + 0xa7b50000a7b6, + 0xa7b70000a7b8, + 0xa7b90000a7ba, + 0xa7bb0000a7bc, + 0xa7bd0000a7be, + 0xa7bf0000a7c0, + 0xa7c10000a7c2, + 0xa7c30000a7c4, + 0xa7c80000a7c9, + 0xa7ca0000a7cb, + 0xa7d10000a7d2, + 0xa7d30000a7d4, + 0xa7d50000a7d6, + 0xa7d70000a7d8, + 0xa7d90000a7da, + 0xa7f60000a7f8, + 0xa7fa0000a828, + 0xa82c0000a82d, + 0xa8400000a874, + 0xa8800000a8c6, + 0xa8d00000a8da, + 0xa8e00000a8f8, + 0xa8fb0000a8fc, + 0xa8fd0000a92e, + 0xa9300000a954, + 0xa9800000a9c1, + 0xa9cf0000a9da, + 0xa9e00000a9ff, + 0xaa000000aa37, + 0xaa400000aa4e, + 0xaa500000aa5a, + 0xaa600000aa77, + 0xaa7a0000aac3, + 0xaadb0000aade, + 0xaae00000aaf0, + 0xaaf20000aaf7, + 0xab010000ab07, + 0xab090000ab0f, + 0xab110000ab17, + 0xab200000ab27, + 0xab280000ab2f, + 0xab300000ab5b, + 0xab600000ab69, + 0xabc00000abeb, + 0xabec0000abee, + 0xabf00000abfa, + 0xac000000d7a4, + 0xfa0e0000fa10, + 0xfa110000fa12, + 0xfa130000fa15, + 0xfa1f0000fa20, + 0xfa210000fa22, + 0xfa230000fa25, + 0xfa270000fa2a, + 0xfb1e0000fb1f, + 0xfe200000fe30, + 0xfe730000fe74, + 0x100000001000c, + 0x1000d00010027, + 0x100280001003b, + 0x1003c0001003e, + 0x1003f0001004e, + 0x100500001005e, + 0x10080000100fb, + 0x101fd000101fe, + 0x102800001029d, + 0x102a0000102d1, + 0x102e0000102e1, + 0x1030000010320, + 0x1032d00010341, + 0x103420001034a, + 0x103500001037b, + 0x103800001039e, + 0x103a0000103c4, + 0x103c8000103d0, + 0x104280001049e, + 0x104a0000104aa, + 0x104d8000104fc, + 0x1050000010528, + 0x1053000010564, + 0x10597000105a2, + 0x105a3000105b2, + 0x105b3000105ba, + 0x105bb000105bd, + 0x1060000010737, + 0x1074000010756, + 0x1076000010768, + 0x1078000010781, + 0x1080000010806, + 0x1080800010809, + 0x1080a00010836, + 0x1083700010839, + 0x1083c0001083d, + 0x1083f00010856, + 0x1086000010877, + 0x108800001089f, + 0x108e0000108f3, + 0x108f4000108f6, + 0x1090000010916, + 0x109200001093a, + 0x10980000109b8, + 0x109be000109c0, + 0x10a0000010a04, + 0x10a0500010a07, + 0x10a0c00010a14, + 0x10a1500010a18, + 0x10a1900010a36, + 0x10a3800010a3b, + 0x10a3f00010a40, + 0x10a6000010a7d, + 0x10a8000010a9d, + 0x10ac000010ac8, + 0x10ac900010ae7, + 0x10b0000010b36, + 0x10b4000010b56, + 0x10b6000010b73, + 0x10b8000010b92, + 0x10c0000010c49, + 0x10cc000010cf3, + 0x10d0000010d28, + 0x10d3000010d3a, + 0x10e8000010eaa, + 0x10eab00010ead, + 0x10eb000010eb2, + 0x10efd00010f1d, + 0x10f2700010f28, + 0x10f3000010f51, + 0x10f7000010f86, + 0x10fb000010fc5, + 0x10fe000010ff7, + 0x1100000011047, + 0x1106600011076, + 0x1107f000110bb, + 0x110c2000110c3, + 0x110d0000110e9, + 0x110f0000110fa, + 0x1110000011135, + 0x1113600011140, + 0x1114400011148, + 0x1115000011174, + 0x1117600011177, + 0x11180000111c5, + 0x111c9000111cd, + 0x111ce000111db, + 0x111dc000111dd, + 0x1120000011212, + 0x1121300011238, + 0x1123e00011242, + 0x1128000011287, + 0x1128800011289, + 0x1128a0001128e, + 0x1128f0001129e, + 0x1129f000112a9, + 0x112b0000112eb, + 0x112f0000112fa, + 0x1130000011304, + 0x113050001130d, + 0x1130f00011311, + 0x1131300011329, + 0x1132a00011331, + 0x1133200011334, + 0x113350001133a, + 0x1133b00011345, + 0x1134700011349, + 0x1134b0001134e, + 0x1135000011351, + 0x1135700011358, + 0x1135d00011364, + 0x113660001136d, + 0x1137000011375, + 0x114000001144b, + 0x114500001145a, + 0x1145e00011462, + 0x11480000114c6, + 0x114c7000114c8, + 0x114d0000114da, + 0x11580000115b6, + 0x115b8000115c1, + 0x115d8000115de, + 0x1160000011641, + 0x1164400011645, + 0x116500001165a, + 0x11680000116b9, + 0x116c0000116ca, + 0x117000001171b, + 0x1171d0001172c, + 0x117300001173a, + 0x1174000011747, + 0x118000001183b, + 0x118c0000118ea, + 0x118ff00011907, + 0x119090001190a, + 0x1190c00011914, + 0x1191500011917, + 0x1191800011936, + 0x1193700011939, + 0x1193b00011944, + 0x119500001195a, + 0x119a0000119a8, + 0x119aa000119d8, + 0x119da000119e2, + 0x119e3000119e5, + 0x11a0000011a3f, + 0x11a4700011a48, + 0x11a5000011a9a, + 0x11a9d00011a9e, + 0x11ab000011af9, + 0x11c0000011c09, + 0x11c0a00011c37, + 0x11c3800011c41, + 0x11c5000011c5a, + 0x11c7200011c90, + 0x11c9200011ca8, + 0x11ca900011cb7, + 0x11d0000011d07, + 0x11d0800011d0a, + 0x11d0b00011d37, + 0x11d3a00011d3b, + 0x11d3c00011d3e, + 0x11d3f00011d48, + 0x11d5000011d5a, + 0x11d6000011d66, + 0x11d6700011d69, + 0x11d6a00011d8f, + 0x11d9000011d92, + 0x11d9300011d99, + 0x11da000011daa, + 0x11ee000011ef7, + 0x11f0000011f11, + 0x11f1200011f3b, + 0x11f3e00011f43, + 0x11f5000011f5a, + 0x11fb000011fb1, + 0x120000001239a, + 0x1248000012544, + 0x12f9000012ff1, + 0x1300000013430, + 0x1344000013456, + 0x1440000014647, + 0x1680000016a39, + 0x16a4000016a5f, + 0x16a6000016a6a, + 0x16a7000016abf, + 0x16ac000016aca, + 0x16ad000016aee, + 0x16af000016af5, + 0x16b0000016b37, + 0x16b4000016b44, + 0x16b5000016b5a, + 0x16b6300016b78, + 0x16b7d00016b90, + 0x16e6000016e80, + 0x16f0000016f4b, + 0x16f4f00016f88, + 0x16f8f00016fa0, + 0x16fe000016fe2, + 0x16fe300016fe5, + 0x16ff000016ff2, + 0x17000000187f8, + 0x1880000018cd6, + 0x18d0000018d09, + 0x1aff00001aff4, + 0x1aff50001affc, + 0x1affd0001afff, + 0x1b0000001b123, + 0x1b1320001b133, + 0x1b1500001b153, + 0x1b1550001b156, + 0x1b1640001b168, + 0x1b1700001b2fc, + 0x1bc000001bc6b, + 0x1bc700001bc7d, + 0x1bc800001bc89, + 0x1bc900001bc9a, + 0x1bc9d0001bc9f, + 0x1cf000001cf2e, + 0x1cf300001cf47, + 0x1da000001da37, + 0x1da3b0001da6d, + 0x1da750001da76, + 0x1da840001da85, + 0x1da9b0001daa0, + 0x1daa10001dab0, + 0x1df000001df1f, + 0x1df250001df2b, + 0x1e0000001e007, + 0x1e0080001e019, + 0x1e01b0001e022, + 0x1e0230001e025, + 0x1e0260001e02b, + 0x1e08f0001e090, + 0x1e1000001e12d, + 0x1e1300001e13e, + 0x1e1400001e14a, + 0x1e14e0001e14f, + 0x1e2900001e2af, + 0x1e2c00001e2fa, + 0x1e4d00001e4fa, + 0x1e7e00001e7e7, + 0x1e7e80001e7ec, + 0x1e7ed0001e7ef, + 0x1e7f00001e7ff, + 0x1e8000001e8c5, + 0x1e8d00001e8d7, + 0x1e9220001e94c, + 0x1e9500001e95a, + 0x200000002a6e0, + 0x2a7000002b73a, + 0x2b7400002b81e, + 0x2b8200002cea2, + 0x2ceb00002ebe1, + 0x2ebf00002ee5e, + 0x300000003134b, + 0x31350000323b0, + ), + 'CONTEXTJ': ( + 0x200c0000200e, + ), + 'CONTEXTO': ( + 0xb7000000b8, + 0x37500000376, + 0x5f3000005f5, + 0x6600000066a, + 0x6f0000006fa, + 0x30fb000030fc, + ), +} diff --git a/venv/Lib/site-packages/pip/_vendor/idna/intranges.py b/venv/Lib/site-packages/pip/_vendor/idna/intranges.py new file mode 100644 index 00000000000..6a43b047534 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/idna/intranges.py @@ -0,0 +1,54 @@ +""" +Given a list of integers, made up of (hopefully) a small number of long runs +of consecutive integers, compute a representation of the form +((start1, end1), (start2, end2) ...). Then answer the question "was x present +in the original list?" in time O(log(# runs)). +""" + +import bisect +from typing import List, Tuple + +def intranges_from_list(list_: List[int]) -> Tuple[int, ...]: + """Represent a list of integers as a sequence of ranges: + ((start_0, end_0), (start_1, end_1), ...), such that the original + integers are exactly those x such that start_i <= x < end_i for some i. + + Ranges are encoded as single integers (start << 32 | end), not as tuples. + """ + + sorted_list = sorted(list_) + ranges = [] + last_write = -1 + for i in range(len(sorted_list)): + if i+1 < len(sorted_list): + if sorted_list[i] == sorted_list[i+1]-1: + continue + current_range = sorted_list[last_write+1:i+1] + ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) + last_write = i + + return tuple(ranges) + +def _encode_range(start: int, end: int) -> int: + return (start << 32) | end + +def _decode_range(r: int) -> Tuple[int, int]: + return (r >> 32), (r & ((1 << 32) - 1)) + + +def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool: + """Determine if `int_` falls into one of the ranges in `ranges`.""" + tuple_ = _encode_range(int_, 0) + pos = bisect.bisect_left(ranges, tuple_) + # we could be immediately ahead of a tuple (start, end) + # with start < int_ <= end + if pos > 0: + left, right = _decode_range(ranges[pos-1]) + if left <= int_ < right: + return True + # or we could be immediately behind a tuple (int_, end) + if pos < len(ranges): + left, _ = _decode_range(ranges[pos]) + if left == int_: + return True + return False diff --git a/venv/Lib/site-packages/pip/_vendor/idna/package_data.py b/venv/Lib/site-packages/pip/_vendor/idna/package_data.py new file mode 100644 index 00000000000..ed811133633 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/idna/package_data.py @@ -0,0 +1,2 @@ +__version__ = '3.7' + diff --git a/venv/Lib/site-packages/pip/_vendor/idna/py.typed b/venv/Lib/site-packages/pip/_vendor/idna/py.typed new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_vendor/idna/uts46data.py b/venv/Lib/site-packages/pip/_vendor/idna/uts46data.py new file mode 100644 index 00000000000..6a1eddbfd75 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/idna/uts46data.py @@ -0,0 +1,8598 @@ +# This file is automatically generated by tools/idna-data +# vim: set fileencoding=utf-8 : + +from typing import List, Tuple, Union + + +"""IDNA Mapping Table from UTS46.""" + + +__version__ = '15.1.0' +def _seg_0() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x0, '3'), + (0x1, '3'), + (0x2, '3'), + (0x3, '3'), + (0x4, '3'), + (0x5, '3'), + (0x6, '3'), + (0x7, '3'), + (0x8, '3'), + (0x9, '3'), + (0xA, '3'), + (0xB, '3'), + (0xC, '3'), + (0xD, '3'), + (0xE, '3'), + (0xF, '3'), + (0x10, '3'), + (0x11, '3'), + (0x12, '3'), + (0x13, '3'), + (0x14, '3'), + (0x15, '3'), + (0x16, '3'), + (0x17, '3'), + (0x18, '3'), + (0x19, '3'), + (0x1A, '3'), + (0x1B, '3'), + (0x1C, '3'), + (0x1D, '3'), + (0x1E, '3'), + (0x1F, '3'), + (0x20, '3'), + (0x21, '3'), + (0x22, '3'), + (0x23, '3'), + (0x24, '3'), + (0x25, '3'), + (0x26, '3'), + (0x27, '3'), + (0x28, '3'), + (0x29, '3'), + (0x2A, '3'), + (0x2B, '3'), + (0x2C, '3'), + (0x2D, 'V'), + (0x2E, 'V'), + (0x2F, '3'), + (0x30, 'V'), + (0x31, 'V'), + (0x32, 'V'), + (0x33, 'V'), + (0x34, 'V'), + (0x35, 'V'), + (0x36, 'V'), + (0x37, 'V'), + (0x38, 'V'), + (0x39, 'V'), + (0x3A, '3'), + (0x3B, '3'), + (0x3C, '3'), + (0x3D, '3'), + (0x3E, '3'), + (0x3F, '3'), + (0x40, '3'), + (0x41, 'M', 'a'), + (0x42, 'M', 'b'), + (0x43, 'M', 'c'), + (0x44, 'M', 'd'), + (0x45, 'M', 'e'), + (0x46, 'M', 'f'), + (0x47, 'M', 'g'), + (0x48, 'M', 'h'), + (0x49, 'M', 'i'), + (0x4A, 'M', 'j'), + (0x4B, 'M', 'k'), + (0x4C, 'M', 'l'), + (0x4D, 'M', 'm'), + (0x4E, 'M', 'n'), + (0x4F, 'M', 'o'), + (0x50, 'M', 'p'), + (0x51, 'M', 'q'), + (0x52, 'M', 'r'), + (0x53, 'M', 's'), + (0x54, 'M', 't'), + (0x55, 'M', 'u'), + (0x56, 'M', 'v'), + (0x57, 'M', 'w'), + (0x58, 'M', 'x'), + (0x59, 'M', 'y'), + (0x5A, 'M', 'z'), + (0x5B, '3'), + (0x5C, '3'), + (0x5D, '3'), + (0x5E, '3'), + (0x5F, '3'), + (0x60, '3'), + (0x61, 'V'), + (0x62, 'V'), + (0x63, 'V'), + ] + +def _seg_1() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x64, 'V'), + (0x65, 'V'), + (0x66, 'V'), + (0x67, 'V'), + (0x68, 'V'), + (0x69, 'V'), + (0x6A, 'V'), + (0x6B, 'V'), + (0x6C, 'V'), + (0x6D, 'V'), + (0x6E, 'V'), + (0x6F, 'V'), + (0x70, 'V'), + (0x71, 'V'), + (0x72, 'V'), + (0x73, 'V'), + (0x74, 'V'), + (0x75, 'V'), + (0x76, 'V'), + (0x77, 'V'), + (0x78, 'V'), + (0x79, 'V'), + (0x7A, 'V'), + (0x7B, '3'), + (0x7C, '3'), + (0x7D, '3'), + (0x7E, '3'), + (0x7F, '3'), + (0x80, 'X'), + (0x81, 'X'), + (0x82, 'X'), + (0x83, 'X'), + (0x84, 'X'), + (0x85, 'X'), + (0x86, 'X'), + (0x87, 'X'), + (0x88, 'X'), + (0x89, 'X'), + (0x8A, 'X'), + (0x8B, 'X'), + (0x8C, 'X'), + (0x8D, 'X'), + (0x8E, 'X'), + (0x8F, 'X'), + (0x90, 'X'), + (0x91, 'X'), + (0x92, 'X'), + (0x93, 'X'), + (0x94, 'X'), + (0x95, 'X'), + (0x96, 'X'), + (0x97, 'X'), + (0x98, 'X'), + (0x99, 'X'), + (0x9A, 'X'), + (0x9B, 'X'), + (0x9C, 'X'), + (0x9D, 'X'), + (0x9E, 'X'), + (0x9F, 'X'), + (0xA0, '3', ' '), + (0xA1, 'V'), + (0xA2, 'V'), + (0xA3, 'V'), + (0xA4, 'V'), + (0xA5, 'V'), + (0xA6, 'V'), + (0xA7, 'V'), + (0xA8, '3', ' ̈'), + (0xA9, 'V'), + (0xAA, 'M', 'a'), + (0xAB, 'V'), + (0xAC, 'V'), + (0xAD, 'I'), + (0xAE, 'V'), + (0xAF, '3', ' ̄'), + (0xB0, 'V'), + (0xB1, 'V'), + (0xB2, 'M', '2'), + (0xB3, 'M', '3'), + (0xB4, '3', ' ́'), + (0xB5, 'M', 'μ'), + (0xB6, 'V'), + (0xB7, 'V'), + (0xB8, '3', ' ̧'), + (0xB9, 'M', '1'), + (0xBA, 'M', 'o'), + (0xBB, 'V'), + (0xBC, 'M', '1⁄4'), + (0xBD, 'M', '1⁄2'), + (0xBE, 'M', '3⁄4'), + (0xBF, 'V'), + (0xC0, 'M', 'à'), + (0xC1, 'M', 'á'), + (0xC2, 'M', 'â'), + (0xC3, 'M', 'ã'), + (0xC4, 'M', 'ä'), + (0xC5, 'M', 'å'), + (0xC6, 'M', 'æ'), + (0xC7, 'M', 'ç'), + ] + +def _seg_2() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xC8, 'M', 'è'), + (0xC9, 'M', 'é'), + (0xCA, 'M', 'ê'), + (0xCB, 'M', 'ë'), + (0xCC, 'M', 'ì'), + (0xCD, 'M', 'í'), + (0xCE, 'M', 'î'), + (0xCF, 'M', 'ï'), + (0xD0, 'M', 'ð'), + (0xD1, 'M', 'ñ'), + (0xD2, 'M', 'ò'), + (0xD3, 'M', 'ó'), + (0xD4, 'M', 'ô'), + (0xD5, 'M', 'õ'), + (0xD6, 'M', 'ö'), + (0xD7, 'V'), + (0xD8, 'M', 'ø'), + (0xD9, 'M', 'ù'), + (0xDA, 'M', 'ú'), + (0xDB, 'M', 'û'), + (0xDC, 'M', 'ü'), + (0xDD, 'M', 'ý'), + (0xDE, 'M', 'þ'), + (0xDF, 'D', 'ss'), + (0xE0, 'V'), + (0xE1, 'V'), + (0xE2, 'V'), + (0xE3, 'V'), + (0xE4, 'V'), + (0xE5, 'V'), + (0xE6, 'V'), + (0xE7, 'V'), + (0xE8, 'V'), + (0xE9, 'V'), + (0xEA, 'V'), + (0xEB, 'V'), + (0xEC, 'V'), + (0xED, 'V'), + (0xEE, 'V'), + (0xEF, 'V'), + (0xF0, 'V'), + (0xF1, 'V'), + (0xF2, 'V'), + (0xF3, 'V'), + (0xF4, 'V'), + (0xF5, 'V'), + (0xF6, 'V'), + (0xF7, 'V'), + (0xF8, 'V'), + (0xF9, 'V'), + (0xFA, 'V'), + (0xFB, 'V'), + (0xFC, 'V'), + (0xFD, 'V'), + (0xFE, 'V'), + (0xFF, 'V'), + (0x100, 'M', 'ā'), + (0x101, 'V'), + (0x102, 'M', 'ă'), + (0x103, 'V'), + (0x104, 'M', 'ą'), + (0x105, 'V'), + (0x106, 'M', 'ć'), + (0x107, 'V'), + (0x108, 'M', 'ĉ'), + (0x109, 'V'), + (0x10A, 'M', 'ċ'), + (0x10B, 'V'), + (0x10C, 'M', 'č'), + (0x10D, 'V'), + (0x10E, 'M', 'ď'), + (0x10F, 'V'), + (0x110, 'M', 'đ'), + (0x111, 'V'), + (0x112, 'M', 'ē'), + (0x113, 'V'), + (0x114, 'M', 'ĕ'), + (0x115, 'V'), + (0x116, 'M', 'ė'), + (0x117, 'V'), + (0x118, 'M', 'ę'), + (0x119, 'V'), + (0x11A, 'M', 'ě'), + (0x11B, 'V'), + (0x11C, 'M', 'ĝ'), + (0x11D, 'V'), + (0x11E, 'M', 'ğ'), + (0x11F, 'V'), + (0x120, 'M', 'ġ'), + (0x121, 'V'), + (0x122, 'M', 'ģ'), + (0x123, 'V'), + (0x124, 'M', 'ĥ'), + (0x125, 'V'), + (0x126, 'M', 'ħ'), + (0x127, 'V'), + (0x128, 'M', 'ĩ'), + (0x129, 'V'), + (0x12A, 'M', 'ī'), + (0x12B, 'V'), + ] + +def _seg_3() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x12C, 'M', 'ĭ'), + (0x12D, 'V'), + (0x12E, 'M', 'į'), + (0x12F, 'V'), + (0x130, 'M', 'i̇'), + (0x131, 'V'), + (0x132, 'M', 'ij'), + (0x134, 'M', 'ĵ'), + (0x135, 'V'), + (0x136, 'M', 'ķ'), + (0x137, 'V'), + (0x139, 'M', 'ĺ'), + (0x13A, 'V'), + (0x13B, 'M', 'ļ'), + (0x13C, 'V'), + (0x13D, 'M', 'ľ'), + (0x13E, 'V'), + (0x13F, 'M', 'l·'), + (0x141, 'M', 'ł'), + (0x142, 'V'), + (0x143, 'M', 'ń'), + (0x144, 'V'), + (0x145, 'M', 'ņ'), + (0x146, 'V'), + (0x147, 'M', 'ň'), + (0x148, 'V'), + (0x149, 'M', 'ʼn'), + (0x14A, 'M', 'ŋ'), + (0x14B, 'V'), + (0x14C, 'M', 'ō'), + (0x14D, 'V'), + (0x14E, 'M', 'ŏ'), + (0x14F, 'V'), + (0x150, 'M', 'ő'), + (0x151, 'V'), + (0x152, 'M', 'œ'), + (0x153, 'V'), + (0x154, 'M', 'ŕ'), + (0x155, 'V'), + (0x156, 'M', 'ŗ'), + (0x157, 'V'), + (0x158, 'M', 'ř'), + (0x159, 'V'), + (0x15A, 'M', 'ś'), + (0x15B, 'V'), + (0x15C, 'M', 'ŝ'), + (0x15D, 'V'), + (0x15E, 'M', 'ş'), + (0x15F, 'V'), + (0x160, 'M', 'š'), + (0x161, 'V'), + (0x162, 'M', 'ţ'), + (0x163, 'V'), + (0x164, 'M', 'ť'), + (0x165, 'V'), + (0x166, 'M', 'ŧ'), + (0x167, 'V'), + (0x168, 'M', 'ũ'), + (0x169, 'V'), + (0x16A, 'M', 'ū'), + (0x16B, 'V'), + (0x16C, 'M', 'ŭ'), + (0x16D, 'V'), + (0x16E, 'M', 'ů'), + (0x16F, 'V'), + (0x170, 'M', 'ű'), + (0x171, 'V'), + (0x172, 'M', 'ų'), + (0x173, 'V'), + (0x174, 'M', 'ŵ'), + (0x175, 'V'), + (0x176, 'M', 'ŷ'), + (0x177, 'V'), + (0x178, 'M', 'ÿ'), + (0x179, 'M', 'ź'), + (0x17A, 'V'), + (0x17B, 'M', 'ż'), + (0x17C, 'V'), + (0x17D, 'M', 'ž'), + (0x17E, 'V'), + (0x17F, 'M', 's'), + (0x180, 'V'), + (0x181, 'M', 'ɓ'), + (0x182, 'M', 'ƃ'), + (0x183, 'V'), + (0x184, 'M', 'ƅ'), + (0x185, 'V'), + (0x186, 'M', 'ɔ'), + (0x187, 'M', 'ƈ'), + (0x188, 'V'), + (0x189, 'M', 'ɖ'), + (0x18A, 'M', 'ɗ'), + (0x18B, 'M', 'ƌ'), + (0x18C, 'V'), + (0x18E, 'M', 'ǝ'), + (0x18F, 'M', 'ə'), + (0x190, 'M', 'ɛ'), + (0x191, 'M', 'ƒ'), + (0x192, 'V'), + (0x193, 'M', 'ɠ'), + ] + +def _seg_4() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x194, 'M', 'ɣ'), + (0x195, 'V'), + (0x196, 'M', 'ɩ'), + (0x197, 'M', 'ɨ'), + (0x198, 'M', 'ƙ'), + (0x199, 'V'), + (0x19C, 'M', 'ɯ'), + (0x19D, 'M', 'ɲ'), + (0x19E, 'V'), + (0x19F, 'M', 'ɵ'), + (0x1A0, 'M', 'ơ'), + (0x1A1, 'V'), + (0x1A2, 'M', 'ƣ'), + (0x1A3, 'V'), + (0x1A4, 'M', 'ƥ'), + (0x1A5, 'V'), + (0x1A6, 'M', 'ʀ'), + (0x1A7, 'M', 'ƨ'), + (0x1A8, 'V'), + (0x1A9, 'M', 'ʃ'), + (0x1AA, 'V'), + (0x1AC, 'M', 'ƭ'), + (0x1AD, 'V'), + (0x1AE, 'M', 'ʈ'), + (0x1AF, 'M', 'ư'), + (0x1B0, 'V'), + (0x1B1, 'M', 'ʊ'), + (0x1B2, 'M', 'ʋ'), + (0x1B3, 'M', 'ƴ'), + (0x1B4, 'V'), + (0x1B5, 'M', 'ƶ'), + (0x1B6, 'V'), + (0x1B7, 'M', 'ʒ'), + (0x1B8, 'M', 'ƹ'), + (0x1B9, 'V'), + (0x1BC, 'M', 'ƽ'), + (0x1BD, 'V'), + (0x1C4, 'M', 'dž'), + (0x1C7, 'M', 'lj'), + (0x1CA, 'M', 'nj'), + (0x1CD, 'M', 'ǎ'), + (0x1CE, 'V'), + (0x1CF, 'M', 'ǐ'), + (0x1D0, 'V'), + (0x1D1, 'M', 'ǒ'), + (0x1D2, 'V'), + (0x1D3, 'M', 'ǔ'), + (0x1D4, 'V'), + (0x1D5, 'M', 'ǖ'), + (0x1D6, 'V'), + (0x1D7, 'M', 'ǘ'), + (0x1D8, 'V'), + (0x1D9, 'M', 'ǚ'), + (0x1DA, 'V'), + (0x1DB, 'M', 'ǜ'), + (0x1DC, 'V'), + (0x1DE, 'M', 'ǟ'), + (0x1DF, 'V'), + (0x1E0, 'M', 'ǡ'), + (0x1E1, 'V'), + (0x1E2, 'M', 'ǣ'), + (0x1E3, 'V'), + (0x1E4, 'M', 'ǥ'), + (0x1E5, 'V'), + (0x1E6, 'M', 'ǧ'), + (0x1E7, 'V'), + (0x1E8, 'M', 'ǩ'), + (0x1E9, 'V'), + (0x1EA, 'M', 'ǫ'), + (0x1EB, 'V'), + (0x1EC, 'M', 'ǭ'), + (0x1ED, 'V'), + (0x1EE, 'M', 'ǯ'), + (0x1EF, 'V'), + (0x1F1, 'M', 'dz'), + (0x1F4, 'M', 'ǵ'), + (0x1F5, 'V'), + (0x1F6, 'M', 'ƕ'), + (0x1F7, 'M', 'ƿ'), + (0x1F8, 'M', 'ǹ'), + (0x1F9, 'V'), + (0x1FA, 'M', 'ǻ'), + (0x1FB, 'V'), + (0x1FC, 'M', 'ǽ'), + (0x1FD, 'V'), + (0x1FE, 'M', 'ǿ'), + (0x1FF, 'V'), + (0x200, 'M', 'ȁ'), + (0x201, 'V'), + (0x202, 'M', 'ȃ'), + (0x203, 'V'), + (0x204, 'M', 'ȅ'), + (0x205, 'V'), + (0x206, 'M', 'ȇ'), + (0x207, 'V'), + (0x208, 'M', 'ȉ'), + (0x209, 'V'), + (0x20A, 'M', 'ȋ'), + (0x20B, 'V'), + (0x20C, 'M', 'ȍ'), + ] + +def _seg_5() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x20D, 'V'), + (0x20E, 'M', 'ȏ'), + (0x20F, 'V'), + (0x210, 'M', 'ȑ'), + (0x211, 'V'), + (0x212, 'M', 'ȓ'), + (0x213, 'V'), + (0x214, 'M', 'ȕ'), + (0x215, 'V'), + (0x216, 'M', 'ȗ'), + (0x217, 'V'), + (0x218, 'M', 'ș'), + (0x219, 'V'), + (0x21A, 'M', 'ț'), + (0x21B, 'V'), + (0x21C, 'M', 'ȝ'), + (0x21D, 'V'), + (0x21E, 'M', 'ȟ'), + (0x21F, 'V'), + (0x220, 'M', 'ƞ'), + (0x221, 'V'), + (0x222, 'M', 'ȣ'), + (0x223, 'V'), + (0x224, 'M', 'ȥ'), + (0x225, 'V'), + (0x226, 'M', 'ȧ'), + (0x227, 'V'), + (0x228, 'M', 'ȩ'), + (0x229, 'V'), + (0x22A, 'M', 'ȫ'), + (0x22B, 'V'), + (0x22C, 'M', 'ȭ'), + (0x22D, 'V'), + (0x22E, 'M', 'ȯ'), + (0x22F, 'V'), + (0x230, 'M', 'ȱ'), + (0x231, 'V'), + (0x232, 'M', 'ȳ'), + (0x233, 'V'), + (0x23A, 'M', 'ⱥ'), + (0x23B, 'M', 'ȼ'), + (0x23C, 'V'), + (0x23D, 'M', 'ƚ'), + (0x23E, 'M', 'ⱦ'), + (0x23F, 'V'), + (0x241, 'M', 'ɂ'), + (0x242, 'V'), + (0x243, 'M', 'ƀ'), + (0x244, 'M', 'ʉ'), + (0x245, 'M', 'ʌ'), + (0x246, 'M', 'ɇ'), + (0x247, 'V'), + (0x248, 'M', 'ɉ'), + (0x249, 'V'), + (0x24A, 'M', 'ɋ'), + (0x24B, 'V'), + (0x24C, 'M', 'ɍ'), + (0x24D, 'V'), + (0x24E, 'M', 'ɏ'), + (0x24F, 'V'), + (0x2B0, 'M', 'h'), + (0x2B1, 'M', 'ɦ'), + (0x2B2, 'M', 'j'), + (0x2B3, 'M', 'r'), + (0x2B4, 'M', 'ɹ'), + (0x2B5, 'M', 'ɻ'), + (0x2B6, 'M', 'ʁ'), + (0x2B7, 'M', 'w'), + (0x2B8, 'M', 'y'), + (0x2B9, 'V'), + (0x2D8, '3', ' ̆'), + (0x2D9, '3', ' ̇'), + (0x2DA, '3', ' ̊'), + (0x2DB, '3', ' ̨'), + (0x2DC, '3', ' ̃'), + (0x2DD, '3', ' ̋'), + (0x2DE, 'V'), + (0x2E0, 'M', 'ɣ'), + (0x2E1, 'M', 'l'), + (0x2E2, 'M', 's'), + (0x2E3, 'M', 'x'), + (0x2E4, 'M', 'ʕ'), + (0x2E5, 'V'), + (0x340, 'M', '̀'), + (0x341, 'M', '́'), + (0x342, 'V'), + (0x343, 'M', '̓'), + (0x344, 'M', '̈́'), + (0x345, 'M', 'ι'), + (0x346, 'V'), + (0x34F, 'I'), + (0x350, 'V'), + (0x370, 'M', 'ͱ'), + (0x371, 'V'), + (0x372, 'M', 'ͳ'), + (0x373, 'V'), + (0x374, 'M', 'ʹ'), + (0x375, 'V'), + (0x376, 'M', 'ͷ'), + (0x377, 'V'), + ] + +def _seg_6() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x378, 'X'), + (0x37A, '3', ' ι'), + (0x37B, 'V'), + (0x37E, '3', ';'), + (0x37F, 'M', 'ϳ'), + (0x380, 'X'), + (0x384, '3', ' ́'), + (0x385, '3', ' ̈́'), + (0x386, 'M', 'ά'), + (0x387, 'M', '·'), + (0x388, 'M', 'έ'), + (0x389, 'M', 'ή'), + (0x38A, 'M', 'ί'), + (0x38B, 'X'), + (0x38C, 'M', 'ό'), + (0x38D, 'X'), + (0x38E, 'M', 'ύ'), + (0x38F, 'M', 'ώ'), + (0x390, 'V'), + (0x391, 'M', 'α'), + (0x392, 'M', 'β'), + (0x393, 'M', 'γ'), + (0x394, 'M', 'δ'), + (0x395, 'M', 'ε'), + (0x396, 'M', 'ζ'), + (0x397, 'M', 'η'), + (0x398, 'M', 'θ'), + (0x399, 'M', 'ι'), + (0x39A, 'M', 'κ'), + (0x39B, 'M', 'λ'), + (0x39C, 'M', 'μ'), + (0x39D, 'M', 'ν'), + (0x39E, 'M', 'ξ'), + (0x39F, 'M', 'ο'), + (0x3A0, 'M', 'π'), + (0x3A1, 'M', 'ρ'), + (0x3A2, 'X'), + (0x3A3, 'M', 'σ'), + (0x3A4, 'M', 'τ'), + (0x3A5, 'M', 'υ'), + (0x3A6, 'M', 'φ'), + (0x3A7, 'M', 'χ'), + (0x3A8, 'M', 'ψ'), + (0x3A9, 'M', 'ω'), + (0x3AA, 'M', 'ϊ'), + (0x3AB, 'M', 'ϋ'), + (0x3AC, 'V'), + (0x3C2, 'D', 'σ'), + (0x3C3, 'V'), + (0x3CF, 'M', 'ϗ'), + (0x3D0, 'M', 'β'), + (0x3D1, 'M', 'θ'), + (0x3D2, 'M', 'υ'), + (0x3D3, 'M', 'ύ'), + (0x3D4, 'M', 'ϋ'), + (0x3D5, 'M', 'φ'), + (0x3D6, 'M', 'π'), + (0x3D7, 'V'), + (0x3D8, 'M', 'ϙ'), + (0x3D9, 'V'), + (0x3DA, 'M', 'ϛ'), + (0x3DB, 'V'), + (0x3DC, 'M', 'ϝ'), + (0x3DD, 'V'), + (0x3DE, 'M', 'ϟ'), + (0x3DF, 'V'), + (0x3E0, 'M', 'ϡ'), + (0x3E1, 'V'), + (0x3E2, 'M', 'ϣ'), + (0x3E3, 'V'), + (0x3E4, 'M', 'ϥ'), + (0x3E5, 'V'), + (0x3E6, 'M', 'ϧ'), + (0x3E7, 'V'), + (0x3E8, 'M', 'ϩ'), + (0x3E9, 'V'), + (0x3EA, 'M', 'ϫ'), + (0x3EB, 'V'), + (0x3EC, 'M', 'ϭ'), + (0x3ED, 'V'), + (0x3EE, 'M', 'ϯ'), + (0x3EF, 'V'), + (0x3F0, 'M', 'κ'), + (0x3F1, 'M', 'ρ'), + (0x3F2, 'M', 'σ'), + (0x3F3, 'V'), + (0x3F4, 'M', 'θ'), + (0x3F5, 'M', 'ε'), + (0x3F6, 'V'), + (0x3F7, 'M', 'ϸ'), + (0x3F8, 'V'), + (0x3F9, 'M', 'σ'), + (0x3FA, 'M', 'ϻ'), + (0x3FB, 'V'), + (0x3FD, 'M', 'ͻ'), + (0x3FE, 'M', 'ͼ'), + (0x3FF, 'M', 'ͽ'), + (0x400, 'M', 'ѐ'), + (0x401, 'M', 'ё'), + (0x402, 'M', 'ђ'), + ] + +def _seg_7() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x403, 'M', 'ѓ'), + (0x404, 'M', 'є'), + (0x405, 'M', 'ѕ'), + (0x406, 'M', 'і'), + (0x407, 'M', 'ї'), + (0x408, 'M', 'ј'), + (0x409, 'M', 'љ'), + (0x40A, 'M', 'њ'), + (0x40B, 'M', 'ћ'), + (0x40C, 'M', 'ќ'), + (0x40D, 'M', 'ѝ'), + (0x40E, 'M', 'ў'), + (0x40F, 'M', 'џ'), + (0x410, 'M', 'а'), + (0x411, 'M', 'б'), + (0x412, 'M', 'в'), + (0x413, 'M', 'г'), + (0x414, 'M', 'д'), + (0x415, 'M', 'е'), + (0x416, 'M', 'ж'), + (0x417, 'M', 'з'), + (0x418, 'M', 'и'), + (0x419, 'M', 'й'), + (0x41A, 'M', 'к'), + (0x41B, 'M', 'л'), + (0x41C, 'M', 'м'), + (0x41D, 'M', 'н'), + (0x41E, 'M', 'о'), + (0x41F, 'M', 'п'), + (0x420, 'M', 'р'), + (0x421, 'M', 'с'), + (0x422, 'M', 'т'), + (0x423, 'M', 'у'), + (0x424, 'M', 'ф'), + (0x425, 'M', 'х'), + (0x426, 'M', 'ц'), + (0x427, 'M', 'ч'), + (0x428, 'M', 'ш'), + (0x429, 'M', 'щ'), + (0x42A, 'M', 'ъ'), + (0x42B, 'M', 'ы'), + (0x42C, 'M', 'ь'), + (0x42D, 'M', 'э'), + (0x42E, 'M', 'ю'), + (0x42F, 'M', 'я'), + (0x430, 'V'), + (0x460, 'M', 'ѡ'), + (0x461, 'V'), + (0x462, 'M', 'ѣ'), + (0x463, 'V'), + (0x464, 'M', 'ѥ'), + (0x465, 'V'), + (0x466, 'M', 'ѧ'), + (0x467, 'V'), + (0x468, 'M', 'ѩ'), + (0x469, 'V'), + (0x46A, 'M', 'ѫ'), + (0x46B, 'V'), + (0x46C, 'M', 'ѭ'), + (0x46D, 'V'), + (0x46E, 'M', 'ѯ'), + (0x46F, 'V'), + (0x470, 'M', 'ѱ'), + (0x471, 'V'), + (0x472, 'M', 'ѳ'), + (0x473, 'V'), + (0x474, 'M', 'ѵ'), + (0x475, 'V'), + (0x476, 'M', 'ѷ'), + (0x477, 'V'), + (0x478, 'M', 'ѹ'), + (0x479, 'V'), + (0x47A, 'M', 'ѻ'), + (0x47B, 'V'), + (0x47C, 'M', 'ѽ'), + (0x47D, 'V'), + (0x47E, 'M', 'ѿ'), + (0x47F, 'V'), + (0x480, 'M', 'ҁ'), + (0x481, 'V'), + (0x48A, 'M', 'ҋ'), + (0x48B, 'V'), + (0x48C, 'M', 'ҍ'), + (0x48D, 'V'), + (0x48E, 'M', 'ҏ'), + (0x48F, 'V'), + (0x490, 'M', 'ґ'), + (0x491, 'V'), + (0x492, 'M', 'ғ'), + (0x493, 'V'), + (0x494, 'M', 'ҕ'), + (0x495, 'V'), + (0x496, 'M', 'җ'), + (0x497, 'V'), + (0x498, 'M', 'ҙ'), + (0x499, 'V'), + (0x49A, 'M', 'қ'), + (0x49B, 'V'), + (0x49C, 'M', 'ҝ'), + (0x49D, 'V'), + ] + +def _seg_8() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x49E, 'M', 'ҟ'), + (0x49F, 'V'), + (0x4A0, 'M', 'ҡ'), + (0x4A1, 'V'), + (0x4A2, 'M', 'ң'), + (0x4A3, 'V'), + (0x4A4, 'M', 'ҥ'), + (0x4A5, 'V'), + (0x4A6, 'M', 'ҧ'), + (0x4A7, 'V'), + (0x4A8, 'M', 'ҩ'), + (0x4A9, 'V'), + (0x4AA, 'M', 'ҫ'), + (0x4AB, 'V'), + (0x4AC, 'M', 'ҭ'), + (0x4AD, 'V'), + (0x4AE, 'M', 'ү'), + (0x4AF, 'V'), + (0x4B0, 'M', 'ұ'), + (0x4B1, 'V'), + (0x4B2, 'M', 'ҳ'), + (0x4B3, 'V'), + (0x4B4, 'M', 'ҵ'), + (0x4B5, 'V'), + (0x4B6, 'M', 'ҷ'), + (0x4B7, 'V'), + (0x4B8, 'M', 'ҹ'), + (0x4B9, 'V'), + (0x4BA, 'M', 'һ'), + (0x4BB, 'V'), + (0x4BC, 'M', 'ҽ'), + (0x4BD, 'V'), + (0x4BE, 'M', 'ҿ'), + (0x4BF, 'V'), + (0x4C0, 'X'), + (0x4C1, 'M', 'ӂ'), + (0x4C2, 'V'), + (0x4C3, 'M', 'ӄ'), + (0x4C4, 'V'), + (0x4C5, 'M', 'ӆ'), + (0x4C6, 'V'), + (0x4C7, 'M', 'ӈ'), + (0x4C8, 'V'), + (0x4C9, 'M', 'ӊ'), + (0x4CA, 'V'), + (0x4CB, 'M', 'ӌ'), + (0x4CC, 'V'), + (0x4CD, 'M', 'ӎ'), + (0x4CE, 'V'), + (0x4D0, 'M', 'ӑ'), + (0x4D1, 'V'), + (0x4D2, 'M', 'ӓ'), + (0x4D3, 'V'), + (0x4D4, 'M', 'ӕ'), + (0x4D5, 'V'), + (0x4D6, 'M', 'ӗ'), + (0x4D7, 'V'), + (0x4D8, 'M', 'ә'), + (0x4D9, 'V'), + (0x4DA, 'M', 'ӛ'), + (0x4DB, 'V'), + (0x4DC, 'M', 'ӝ'), + (0x4DD, 'V'), + (0x4DE, 'M', 'ӟ'), + (0x4DF, 'V'), + (0x4E0, 'M', 'ӡ'), + (0x4E1, 'V'), + (0x4E2, 'M', 'ӣ'), + (0x4E3, 'V'), + (0x4E4, 'M', 'ӥ'), + (0x4E5, 'V'), + (0x4E6, 'M', 'ӧ'), + (0x4E7, 'V'), + (0x4E8, 'M', 'ө'), + (0x4E9, 'V'), + (0x4EA, 'M', 'ӫ'), + (0x4EB, 'V'), + (0x4EC, 'M', 'ӭ'), + (0x4ED, 'V'), + (0x4EE, 'M', 'ӯ'), + (0x4EF, 'V'), + (0x4F0, 'M', 'ӱ'), + (0x4F1, 'V'), + (0x4F2, 'M', 'ӳ'), + (0x4F3, 'V'), + (0x4F4, 'M', 'ӵ'), + (0x4F5, 'V'), + (0x4F6, 'M', 'ӷ'), + (0x4F7, 'V'), + (0x4F8, 'M', 'ӹ'), + (0x4F9, 'V'), + (0x4FA, 'M', 'ӻ'), + (0x4FB, 'V'), + (0x4FC, 'M', 'ӽ'), + (0x4FD, 'V'), + (0x4FE, 'M', 'ӿ'), + (0x4FF, 'V'), + (0x500, 'M', 'ԁ'), + (0x501, 'V'), + (0x502, 'M', 'ԃ'), + ] + +def _seg_9() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x503, 'V'), + (0x504, 'M', 'ԅ'), + (0x505, 'V'), + (0x506, 'M', 'ԇ'), + (0x507, 'V'), + (0x508, 'M', 'ԉ'), + (0x509, 'V'), + (0x50A, 'M', 'ԋ'), + (0x50B, 'V'), + (0x50C, 'M', 'ԍ'), + (0x50D, 'V'), + (0x50E, 'M', 'ԏ'), + (0x50F, 'V'), + (0x510, 'M', 'ԑ'), + (0x511, 'V'), + (0x512, 'M', 'ԓ'), + (0x513, 'V'), + (0x514, 'M', 'ԕ'), + (0x515, 'V'), + (0x516, 'M', 'ԗ'), + (0x517, 'V'), + (0x518, 'M', 'ԙ'), + (0x519, 'V'), + (0x51A, 'M', 'ԛ'), + (0x51B, 'V'), + (0x51C, 'M', 'ԝ'), + (0x51D, 'V'), + (0x51E, 'M', 'ԟ'), + (0x51F, 'V'), + (0x520, 'M', 'ԡ'), + (0x521, 'V'), + (0x522, 'M', 'ԣ'), + (0x523, 'V'), + (0x524, 'M', 'ԥ'), + (0x525, 'V'), + (0x526, 'M', 'ԧ'), + (0x527, 'V'), + (0x528, 'M', 'ԩ'), + (0x529, 'V'), + (0x52A, 'M', 'ԫ'), + (0x52B, 'V'), + (0x52C, 'M', 'ԭ'), + (0x52D, 'V'), + (0x52E, 'M', 'ԯ'), + (0x52F, 'V'), + (0x530, 'X'), + (0x531, 'M', 'ա'), + (0x532, 'M', 'բ'), + (0x533, 'M', 'գ'), + (0x534, 'M', 'դ'), + (0x535, 'M', 'ե'), + (0x536, 'M', 'զ'), + (0x537, 'M', 'է'), + (0x538, 'M', 'ը'), + (0x539, 'M', 'թ'), + (0x53A, 'M', 'ժ'), + (0x53B, 'M', 'ի'), + (0x53C, 'M', 'լ'), + (0x53D, 'M', 'խ'), + (0x53E, 'M', 'ծ'), + (0x53F, 'M', 'կ'), + (0x540, 'M', 'հ'), + (0x541, 'M', 'ձ'), + (0x542, 'M', 'ղ'), + (0x543, 'M', 'ճ'), + (0x544, 'M', 'մ'), + (0x545, 'M', 'յ'), + (0x546, 'M', 'ն'), + (0x547, 'M', 'շ'), + (0x548, 'M', 'ո'), + (0x549, 'M', 'չ'), + (0x54A, 'M', 'պ'), + (0x54B, 'M', 'ջ'), + (0x54C, 'M', 'ռ'), + (0x54D, 'M', 'ս'), + (0x54E, 'M', 'վ'), + (0x54F, 'M', 'տ'), + (0x550, 'M', 'ր'), + (0x551, 'M', 'ց'), + (0x552, 'M', 'ւ'), + (0x553, 'M', 'փ'), + (0x554, 'M', 'ք'), + (0x555, 'M', 'օ'), + (0x556, 'M', 'ֆ'), + (0x557, 'X'), + (0x559, 'V'), + (0x587, 'M', 'եւ'), + (0x588, 'V'), + (0x58B, 'X'), + (0x58D, 'V'), + (0x590, 'X'), + (0x591, 'V'), + (0x5C8, 'X'), + (0x5D0, 'V'), + (0x5EB, 'X'), + (0x5EF, 'V'), + (0x5F5, 'X'), + (0x606, 'V'), + (0x61C, 'X'), + (0x61D, 'V'), + ] + +def _seg_10() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x675, 'M', 'اٴ'), + (0x676, 'M', 'وٴ'), + (0x677, 'M', 'ۇٴ'), + (0x678, 'M', 'يٴ'), + (0x679, 'V'), + (0x6DD, 'X'), + (0x6DE, 'V'), + (0x70E, 'X'), + (0x710, 'V'), + (0x74B, 'X'), + (0x74D, 'V'), + (0x7B2, 'X'), + (0x7C0, 'V'), + (0x7FB, 'X'), + (0x7FD, 'V'), + (0x82E, 'X'), + (0x830, 'V'), + (0x83F, 'X'), + (0x840, 'V'), + (0x85C, 'X'), + (0x85E, 'V'), + (0x85F, 'X'), + (0x860, 'V'), + (0x86B, 'X'), + (0x870, 'V'), + (0x88F, 'X'), + (0x898, 'V'), + (0x8E2, 'X'), + (0x8E3, 'V'), + (0x958, 'M', 'क़'), + (0x959, 'M', 'ख़'), + (0x95A, 'M', 'ग़'), + (0x95B, 'M', 'ज़'), + (0x95C, 'M', 'ड़'), + (0x95D, 'M', 'ढ़'), + (0x95E, 'M', 'फ़'), + (0x95F, 'M', 'य़'), + (0x960, 'V'), + (0x984, 'X'), + (0x985, 'V'), + (0x98D, 'X'), + (0x98F, 'V'), + (0x991, 'X'), + (0x993, 'V'), + (0x9A9, 'X'), + (0x9AA, 'V'), + (0x9B1, 'X'), + (0x9B2, 'V'), + (0x9B3, 'X'), + (0x9B6, 'V'), + (0x9BA, 'X'), + (0x9BC, 'V'), + (0x9C5, 'X'), + (0x9C7, 'V'), + (0x9C9, 'X'), + (0x9CB, 'V'), + (0x9CF, 'X'), + (0x9D7, 'V'), + (0x9D8, 'X'), + (0x9DC, 'M', 'ড়'), + (0x9DD, 'M', 'ঢ়'), + (0x9DE, 'X'), + (0x9DF, 'M', 'য়'), + (0x9E0, 'V'), + (0x9E4, 'X'), + (0x9E6, 'V'), + (0x9FF, 'X'), + (0xA01, 'V'), + (0xA04, 'X'), + (0xA05, 'V'), + (0xA0B, 'X'), + (0xA0F, 'V'), + (0xA11, 'X'), + (0xA13, 'V'), + (0xA29, 'X'), + (0xA2A, 'V'), + (0xA31, 'X'), + (0xA32, 'V'), + (0xA33, 'M', 'ਲ਼'), + (0xA34, 'X'), + (0xA35, 'V'), + (0xA36, 'M', 'ਸ਼'), + (0xA37, 'X'), + (0xA38, 'V'), + (0xA3A, 'X'), + (0xA3C, 'V'), + (0xA3D, 'X'), + (0xA3E, 'V'), + (0xA43, 'X'), + (0xA47, 'V'), + (0xA49, 'X'), + (0xA4B, 'V'), + (0xA4E, 'X'), + (0xA51, 'V'), + (0xA52, 'X'), + (0xA59, 'M', 'ਖ਼'), + (0xA5A, 'M', 'ਗ਼'), + (0xA5B, 'M', 'ਜ਼'), + (0xA5C, 'V'), + (0xA5D, 'X'), + ] + +def _seg_11() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA5E, 'M', 'ਫ਼'), + (0xA5F, 'X'), + (0xA66, 'V'), + (0xA77, 'X'), + (0xA81, 'V'), + (0xA84, 'X'), + (0xA85, 'V'), + (0xA8E, 'X'), + (0xA8F, 'V'), + (0xA92, 'X'), + (0xA93, 'V'), + (0xAA9, 'X'), + (0xAAA, 'V'), + (0xAB1, 'X'), + (0xAB2, 'V'), + (0xAB4, 'X'), + (0xAB5, 'V'), + (0xABA, 'X'), + (0xABC, 'V'), + (0xAC6, 'X'), + (0xAC7, 'V'), + (0xACA, 'X'), + (0xACB, 'V'), + (0xACE, 'X'), + (0xAD0, 'V'), + (0xAD1, 'X'), + (0xAE0, 'V'), + (0xAE4, 'X'), + (0xAE6, 'V'), + (0xAF2, 'X'), + (0xAF9, 'V'), + (0xB00, 'X'), + (0xB01, 'V'), + (0xB04, 'X'), + (0xB05, 'V'), + (0xB0D, 'X'), + (0xB0F, 'V'), + (0xB11, 'X'), + (0xB13, 'V'), + (0xB29, 'X'), + (0xB2A, 'V'), + (0xB31, 'X'), + (0xB32, 'V'), + (0xB34, 'X'), + (0xB35, 'V'), + (0xB3A, 'X'), + (0xB3C, 'V'), + (0xB45, 'X'), + (0xB47, 'V'), + (0xB49, 'X'), + (0xB4B, 'V'), + (0xB4E, 'X'), + (0xB55, 'V'), + (0xB58, 'X'), + (0xB5C, 'M', 'ଡ଼'), + (0xB5D, 'M', 'ଢ଼'), + (0xB5E, 'X'), + (0xB5F, 'V'), + (0xB64, 'X'), + (0xB66, 'V'), + (0xB78, 'X'), + (0xB82, 'V'), + (0xB84, 'X'), + (0xB85, 'V'), + (0xB8B, 'X'), + (0xB8E, 'V'), + (0xB91, 'X'), + (0xB92, 'V'), + (0xB96, 'X'), + (0xB99, 'V'), + (0xB9B, 'X'), + (0xB9C, 'V'), + (0xB9D, 'X'), + (0xB9E, 'V'), + (0xBA0, 'X'), + (0xBA3, 'V'), + (0xBA5, 'X'), + (0xBA8, 'V'), + (0xBAB, 'X'), + (0xBAE, 'V'), + (0xBBA, 'X'), + (0xBBE, 'V'), + (0xBC3, 'X'), + (0xBC6, 'V'), + (0xBC9, 'X'), + (0xBCA, 'V'), + (0xBCE, 'X'), + (0xBD0, 'V'), + (0xBD1, 'X'), + (0xBD7, 'V'), + (0xBD8, 'X'), + (0xBE6, 'V'), + (0xBFB, 'X'), + (0xC00, 'V'), + (0xC0D, 'X'), + (0xC0E, 'V'), + (0xC11, 'X'), + (0xC12, 'V'), + (0xC29, 'X'), + (0xC2A, 'V'), + ] + +def _seg_12() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xC3A, 'X'), + (0xC3C, 'V'), + (0xC45, 'X'), + (0xC46, 'V'), + (0xC49, 'X'), + (0xC4A, 'V'), + (0xC4E, 'X'), + (0xC55, 'V'), + (0xC57, 'X'), + (0xC58, 'V'), + (0xC5B, 'X'), + (0xC5D, 'V'), + (0xC5E, 'X'), + (0xC60, 'V'), + (0xC64, 'X'), + (0xC66, 'V'), + (0xC70, 'X'), + (0xC77, 'V'), + (0xC8D, 'X'), + (0xC8E, 'V'), + (0xC91, 'X'), + (0xC92, 'V'), + (0xCA9, 'X'), + (0xCAA, 'V'), + (0xCB4, 'X'), + (0xCB5, 'V'), + (0xCBA, 'X'), + (0xCBC, 'V'), + (0xCC5, 'X'), + (0xCC6, 'V'), + (0xCC9, 'X'), + (0xCCA, 'V'), + (0xCCE, 'X'), + (0xCD5, 'V'), + (0xCD7, 'X'), + (0xCDD, 'V'), + (0xCDF, 'X'), + (0xCE0, 'V'), + (0xCE4, 'X'), + (0xCE6, 'V'), + (0xCF0, 'X'), + (0xCF1, 'V'), + (0xCF4, 'X'), + (0xD00, 'V'), + (0xD0D, 'X'), + (0xD0E, 'V'), + (0xD11, 'X'), + (0xD12, 'V'), + (0xD45, 'X'), + (0xD46, 'V'), + (0xD49, 'X'), + (0xD4A, 'V'), + (0xD50, 'X'), + (0xD54, 'V'), + (0xD64, 'X'), + (0xD66, 'V'), + (0xD80, 'X'), + (0xD81, 'V'), + (0xD84, 'X'), + (0xD85, 'V'), + (0xD97, 'X'), + (0xD9A, 'V'), + (0xDB2, 'X'), + (0xDB3, 'V'), + (0xDBC, 'X'), + (0xDBD, 'V'), + (0xDBE, 'X'), + (0xDC0, 'V'), + (0xDC7, 'X'), + (0xDCA, 'V'), + (0xDCB, 'X'), + (0xDCF, 'V'), + (0xDD5, 'X'), + (0xDD6, 'V'), + (0xDD7, 'X'), + (0xDD8, 'V'), + (0xDE0, 'X'), + (0xDE6, 'V'), + (0xDF0, 'X'), + (0xDF2, 'V'), + (0xDF5, 'X'), + (0xE01, 'V'), + (0xE33, 'M', 'ํา'), + (0xE34, 'V'), + (0xE3B, 'X'), + (0xE3F, 'V'), + (0xE5C, 'X'), + (0xE81, 'V'), + (0xE83, 'X'), + (0xE84, 'V'), + (0xE85, 'X'), + (0xE86, 'V'), + (0xE8B, 'X'), + (0xE8C, 'V'), + (0xEA4, 'X'), + (0xEA5, 'V'), + (0xEA6, 'X'), + (0xEA7, 'V'), + (0xEB3, 'M', 'ໍາ'), + (0xEB4, 'V'), + ] + +def _seg_13() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xEBE, 'X'), + (0xEC0, 'V'), + (0xEC5, 'X'), + (0xEC6, 'V'), + (0xEC7, 'X'), + (0xEC8, 'V'), + (0xECF, 'X'), + (0xED0, 'V'), + (0xEDA, 'X'), + (0xEDC, 'M', 'ຫນ'), + (0xEDD, 'M', 'ຫມ'), + (0xEDE, 'V'), + (0xEE0, 'X'), + (0xF00, 'V'), + (0xF0C, 'M', '་'), + (0xF0D, 'V'), + (0xF43, 'M', 'གྷ'), + (0xF44, 'V'), + (0xF48, 'X'), + (0xF49, 'V'), + (0xF4D, 'M', 'ཌྷ'), + (0xF4E, 'V'), + (0xF52, 'M', 'དྷ'), + (0xF53, 'V'), + (0xF57, 'M', 'བྷ'), + (0xF58, 'V'), + (0xF5C, 'M', 'ཛྷ'), + (0xF5D, 'V'), + (0xF69, 'M', 'ཀྵ'), + (0xF6A, 'V'), + (0xF6D, 'X'), + (0xF71, 'V'), + (0xF73, 'M', 'ཱི'), + (0xF74, 'V'), + (0xF75, 'M', 'ཱུ'), + (0xF76, 'M', 'ྲྀ'), + (0xF77, 'M', 'ྲཱྀ'), + (0xF78, 'M', 'ླྀ'), + (0xF79, 'M', 'ླཱྀ'), + (0xF7A, 'V'), + (0xF81, 'M', 'ཱྀ'), + (0xF82, 'V'), + (0xF93, 'M', 'ྒྷ'), + (0xF94, 'V'), + (0xF98, 'X'), + (0xF99, 'V'), + (0xF9D, 'M', 'ྜྷ'), + (0xF9E, 'V'), + (0xFA2, 'M', 'ྡྷ'), + (0xFA3, 'V'), + (0xFA7, 'M', 'ྦྷ'), + (0xFA8, 'V'), + (0xFAC, 'M', 'ྫྷ'), + (0xFAD, 'V'), + (0xFB9, 'M', 'ྐྵ'), + (0xFBA, 'V'), + (0xFBD, 'X'), + (0xFBE, 'V'), + (0xFCD, 'X'), + (0xFCE, 'V'), + (0xFDB, 'X'), + (0x1000, 'V'), + (0x10A0, 'X'), + (0x10C7, 'M', 'ⴧ'), + (0x10C8, 'X'), + (0x10CD, 'M', 'ⴭ'), + (0x10CE, 'X'), + (0x10D0, 'V'), + (0x10FC, 'M', 'ნ'), + (0x10FD, 'V'), + (0x115F, 'X'), + (0x1161, 'V'), + (0x1249, 'X'), + (0x124A, 'V'), + (0x124E, 'X'), + (0x1250, 'V'), + (0x1257, 'X'), + (0x1258, 'V'), + (0x1259, 'X'), + (0x125A, 'V'), + (0x125E, 'X'), + (0x1260, 'V'), + (0x1289, 'X'), + (0x128A, 'V'), + (0x128E, 'X'), + (0x1290, 'V'), + (0x12B1, 'X'), + (0x12B2, 'V'), + (0x12B6, 'X'), + (0x12B8, 'V'), + (0x12BF, 'X'), + (0x12C0, 'V'), + (0x12C1, 'X'), + (0x12C2, 'V'), + (0x12C6, 'X'), + (0x12C8, 'V'), + (0x12D7, 'X'), + (0x12D8, 'V'), + (0x1311, 'X'), + (0x1312, 'V'), + ] + +def _seg_14() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1316, 'X'), + (0x1318, 'V'), + (0x135B, 'X'), + (0x135D, 'V'), + (0x137D, 'X'), + (0x1380, 'V'), + (0x139A, 'X'), + (0x13A0, 'V'), + (0x13F6, 'X'), + (0x13F8, 'M', 'Ᏸ'), + (0x13F9, 'M', 'Ᏹ'), + (0x13FA, 'M', 'Ᏺ'), + (0x13FB, 'M', 'Ᏻ'), + (0x13FC, 'M', 'Ᏼ'), + (0x13FD, 'M', 'Ᏽ'), + (0x13FE, 'X'), + (0x1400, 'V'), + (0x1680, 'X'), + (0x1681, 'V'), + (0x169D, 'X'), + (0x16A0, 'V'), + (0x16F9, 'X'), + (0x1700, 'V'), + (0x1716, 'X'), + (0x171F, 'V'), + (0x1737, 'X'), + (0x1740, 'V'), + (0x1754, 'X'), + (0x1760, 'V'), + (0x176D, 'X'), + (0x176E, 'V'), + (0x1771, 'X'), + (0x1772, 'V'), + (0x1774, 'X'), + (0x1780, 'V'), + (0x17B4, 'X'), + (0x17B6, 'V'), + (0x17DE, 'X'), + (0x17E0, 'V'), + (0x17EA, 'X'), + (0x17F0, 'V'), + (0x17FA, 'X'), + (0x1800, 'V'), + (0x1806, 'X'), + (0x1807, 'V'), + (0x180B, 'I'), + (0x180E, 'X'), + (0x180F, 'I'), + (0x1810, 'V'), + (0x181A, 'X'), + (0x1820, 'V'), + (0x1879, 'X'), + (0x1880, 'V'), + (0x18AB, 'X'), + (0x18B0, 'V'), + (0x18F6, 'X'), + (0x1900, 'V'), + (0x191F, 'X'), + (0x1920, 'V'), + (0x192C, 'X'), + (0x1930, 'V'), + (0x193C, 'X'), + (0x1940, 'V'), + (0x1941, 'X'), + (0x1944, 'V'), + (0x196E, 'X'), + (0x1970, 'V'), + (0x1975, 'X'), + (0x1980, 'V'), + (0x19AC, 'X'), + (0x19B0, 'V'), + (0x19CA, 'X'), + (0x19D0, 'V'), + (0x19DB, 'X'), + (0x19DE, 'V'), + (0x1A1C, 'X'), + (0x1A1E, 'V'), + (0x1A5F, 'X'), + (0x1A60, 'V'), + (0x1A7D, 'X'), + (0x1A7F, 'V'), + (0x1A8A, 'X'), + (0x1A90, 'V'), + (0x1A9A, 'X'), + (0x1AA0, 'V'), + (0x1AAE, 'X'), + (0x1AB0, 'V'), + (0x1ACF, 'X'), + (0x1B00, 'V'), + (0x1B4D, 'X'), + (0x1B50, 'V'), + (0x1B7F, 'X'), + (0x1B80, 'V'), + (0x1BF4, 'X'), + (0x1BFC, 'V'), + (0x1C38, 'X'), + (0x1C3B, 'V'), + (0x1C4A, 'X'), + (0x1C4D, 'V'), + (0x1C80, 'M', 'в'), + ] + +def _seg_15() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1C81, 'M', 'д'), + (0x1C82, 'M', 'о'), + (0x1C83, 'M', 'с'), + (0x1C84, 'M', 'т'), + (0x1C86, 'M', 'ъ'), + (0x1C87, 'M', 'ѣ'), + (0x1C88, 'M', 'ꙋ'), + (0x1C89, 'X'), + (0x1C90, 'M', 'ა'), + (0x1C91, 'M', 'ბ'), + (0x1C92, 'M', 'გ'), + (0x1C93, 'M', 'დ'), + (0x1C94, 'M', 'ე'), + (0x1C95, 'M', 'ვ'), + (0x1C96, 'M', 'ზ'), + (0x1C97, 'M', 'თ'), + (0x1C98, 'M', 'ი'), + (0x1C99, 'M', 'კ'), + (0x1C9A, 'M', 'ლ'), + (0x1C9B, 'M', 'მ'), + (0x1C9C, 'M', 'ნ'), + (0x1C9D, 'M', 'ო'), + (0x1C9E, 'M', 'პ'), + (0x1C9F, 'M', 'ჟ'), + (0x1CA0, 'M', 'რ'), + (0x1CA1, 'M', 'ს'), + (0x1CA2, 'M', 'ტ'), + (0x1CA3, 'M', 'უ'), + (0x1CA4, 'M', 'ფ'), + (0x1CA5, 'M', 'ქ'), + (0x1CA6, 'M', 'ღ'), + (0x1CA7, 'M', 'ყ'), + (0x1CA8, 'M', 'შ'), + (0x1CA9, 'M', 'ჩ'), + (0x1CAA, 'M', 'ც'), + (0x1CAB, 'M', 'ძ'), + (0x1CAC, 'M', 'წ'), + (0x1CAD, 'M', 'ჭ'), + (0x1CAE, 'M', 'ხ'), + (0x1CAF, 'M', 'ჯ'), + (0x1CB0, 'M', 'ჰ'), + (0x1CB1, 'M', 'ჱ'), + (0x1CB2, 'M', 'ჲ'), + (0x1CB3, 'M', 'ჳ'), + (0x1CB4, 'M', 'ჴ'), + (0x1CB5, 'M', 'ჵ'), + (0x1CB6, 'M', 'ჶ'), + (0x1CB7, 'M', 'ჷ'), + (0x1CB8, 'M', 'ჸ'), + (0x1CB9, 'M', 'ჹ'), + (0x1CBA, 'M', 'ჺ'), + (0x1CBB, 'X'), + (0x1CBD, 'M', 'ჽ'), + (0x1CBE, 'M', 'ჾ'), + (0x1CBF, 'M', 'ჿ'), + (0x1CC0, 'V'), + (0x1CC8, 'X'), + (0x1CD0, 'V'), + (0x1CFB, 'X'), + (0x1D00, 'V'), + (0x1D2C, 'M', 'a'), + (0x1D2D, 'M', 'æ'), + (0x1D2E, 'M', 'b'), + (0x1D2F, 'V'), + (0x1D30, 'M', 'd'), + (0x1D31, 'M', 'e'), + (0x1D32, 'M', 'ǝ'), + (0x1D33, 'M', 'g'), + (0x1D34, 'M', 'h'), + (0x1D35, 'M', 'i'), + (0x1D36, 'M', 'j'), + (0x1D37, 'M', 'k'), + (0x1D38, 'M', 'l'), + (0x1D39, 'M', 'm'), + (0x1D3A, 'M', 'n'), + (0x1D3B, 'V'), + (0x1D3C, 'M', 'o'), + (0x1D3D, 'M', 'ȣ'), + (0x1D3E, 'M', 'p'), + (0x1D3F, 'M', 'r'), + (0x1D40, 'M', 't'), + (0x1D41, 'M', 'u'), + (0x1D42, 'M', 'w'), + (0x1D43, 'M', 'a'), + (0x1D44, 'M', 'ɐ'), + (0x1D45, 'M', 'ɑ'), + (0x1D46, 'M', 'ᴂ'), + (0x1D47, 'M', 'b'), + (0x1D48, 'M', 'd'), + (0x1D49, 'M', 'e'), + (0x1D4A, 'M', 'ə'), + (0x1D4B, 'M', 'ɛ'), + (0x1D4C, 'M', 'ɜ'), + (0x1D4D, 'M', 'g'), + (0x1D4E, 'V'), + (0x1D4F, 'M', 'k'), + (0x1D50, 'M', 'm'), + (0x1D51, 'M', 'ŋ'), + (0x1D52, 'M', 'o'), + (0x1D53, 'M', 'ɔ'), + ] + +def _seg_16() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D54, 'M', 'ᴖ'), + (0x1D55, 'M', 'ᴗ'), + (0x1D56, 'M', 'p'), + (0x1D57, 'M', 't'), + (0x1D58, 'M', 'u'), + (0x1D59, 'M', 'ᴝ'), + (0x1D5A, 'M', 'ɯ'), + (0x1D5B, 'M', 'v'), + (0x1D5C, 'M', 'ᴥ'), + (0x1D5D, 'M', 'β'), + (0x1D5E, 'M', 'γ'), + (0x1D5F, 'M', 'δ'), + (0x1D60, 'M', 'φ'), + (0x1D61, 'M', 'χ'), + (0x1D62, 'M', 'i'), + (0x1D63, 'M', 'r'), + (0x1D64, 'M', 'u'), + (0x1D65, 'M', 'v'), + (0x1D66, 'M', 'β'), + (0x1D67, 'M', 'γ'), + (0x1D68, 'M', 'ρ'), + (0x1D69, 'M', 'φ'), + (0x1D6A, 'M', 'χ'), + (0x1D6B, 'V'), + (0x1D78, 'M', 'н'), + (0x1D79, 'V'), + (0x1D9B, 'M', 'ɒ'), + (0x1D9C, 'M', 'c'), + (0x1D9D, 'M', 'ɕ'), + (0x1D9E, 'M', 'ð'), + (0x1D9F, 'M', 'ɜ'), + (0x1DA0, 'M', 'f'), + (0x1DA1, 'M', 'ɟ'), + (0x1DA2, 'M', 'ɡ'), + (0x1DA3, 'M', 'ɥ'), + (0x1DA4, 'M', 'ɨ'), + (0x1DA5, 'M', 'ɩ'), + (0x1DA6, 'M', 'ɪ'), + (0x1DA7, 'M', 'ᵻ'), + (0x1DA8, 'M', 'ʝ'), + (0x1DA9, 'M', 'ɭ'), + (0x1DAA, 'M', 'ᶅ'), + (0x1DAB, 'M', 'ʟ'), + (0x1DAC, 'M', 'ɱ'), + (0x1DAD, 'M', 'ɰ'), + (0x1DAE, 'M', 'ɲ'), + (0x1DAF, 'M', 'ɳ'), + (0x1DB0, 'M', 'ɴ'), + (0x1DB1, 'M', 'ɵ'), + (0x1DB2, 'M', 'ɸ'), + (0x1DB3, 'M', 'ʂ'), + (0x1DB4, 'M', 'ʃ'), + (0x1DB5, 'M', 'ƫ'), + (0x1DB6, 'M', 'ʉ'), + (0x1DB7, 'M', 'ʊ'), + (0x1DB8, 'M', 'ᴜ'), + (0x1DB9, 'M', 'ʋ'), + (0x1DBA, 'M', 'ʌ'), + (0x1DBB, 'M', 'z'), + (0x1DBC, 'M', 'ʐ'), + (0x1DBD, 'M', 'ʑ'), + (0x1DBE, 'M', 'ʒ'), + (0x1DBF, 'M', 'θ'), + (0x1DC0, 'V'), + (0x1E00, 'M', 'ḁ'), + (0x1E01, 'V'), + (0x1E02, 'M', 'ḃ'), + (0x1E03, 'V'), + (0x1E04, 'M', 'ḅ'), + (0x1E05, 'V'), + (0x1E06, 'M', 'ḇ'), + (0x1E07, 'V'), + (0x1E08, 'M', 'ḉ'), + (0x1E09, 'V'), + (0x1E0A, 'M', 'ḋ'), + (0x1E0B, 'V'), + (0x1E0C, 'M', 'ḍ'), + (0x1E0D, 'V'), + (0x1E0E, 'M', 'ḏ'), + (0x1E0F, 'V'), + (0x1E10, 'M', 'ḑ'), + (0x1E11, 'V'), + (0x1E12, 'M', 'ḓ'), + (0x1E13, 'V'), + (0x1E14, 'M', 'ḕ'), + (0x1E15, 'V'), + (0x1E16, 'M', 'ḗ'), + (0x1E17, 'V'), + (0x1E18, 'M', 'ḙ'), + (0x1E19, 'V'), + (0x1E1A, 'M', 'ḛ'), + (0x1E1B, 'V'), + (0x1E1C, 'M', 'ḝ'), + (0x1E1D, 'V'), + (0x1E1E, 'M', 'ḟ'), + (0x1E1F, 'V'), + (0x1E20, 'M', 'ḡ'), + (0x1E21, 'V'), + (0x1E22, 'M', 'ḣ'), + (0x1E23, 'V'), + ] + +def _seg_17() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E24, 'M', 'ḥ'), + (0x1E25, 'V'), + (0x1E26, 'M', 'ḧ'), + (0x1E27, 'V'), + (0x1E28, 'M', 'ḩ'), + (0x1E29, 'V'), + (0x1E2A, 'M', 'ḫ'), + (0x1E2B, 'V'), + (0x1E2C, 'M', 'ḭ'), + (0x1E2D, 'V'), + (0x1E2E, 'M', 'ḯ'), + (0x1E2F, 'V'), + (0x1E30, 'M', 'ḱ'), + (0x1E31, 'V'), + (0x1E32, 'M', 'ḳ'), + (0x1E33, 'V'), + (0x1E34, 'M', 'ḵ'), + (0x1E35, 'V'), + (0x1E36, 'M', 'ḷ'), + (0x1E37, 'V'), + (0x1E38, 'M', 'ḹ'), + (0x1E39, 'V'), + (0x1E3A, 'M', 'ḻ'), + (0x1E3B, 'V'), + (0x1E3C, 'M', 'ḽ'), + (0x1E3D, 'V'), + (0x1E3E, 'M', 'ḿ'), + (0x1E3F, 'V'), + (0x1E40, 'M', 'ṁ'), + (0x1E41, 'V'), + (0x1E42, 'M', 'ṃ'), + (0x1E43, 'V'), + (0x1E44, 'M', 'ṅ'), + (0x1E45, 'V'), + (0x1E46, 'M', 'ṇ'), + (0x1E47, 'V'), + (0x1E48, 'M', 'ṉ'), + (0x1E49, 'V'), + (0x1E4A, 'M', 'ṋ'), + (0x1E4B, 'V'), + (0x1E4C, 'M', 'ṍ'), + (0x1E4D, 'V'), + (0x1E4E, 'M', 'ṏ'), + (0x1E4F, 'V'), + (0x1E50, 'M', 'ṑ'), + (0x1E51, 'V'), + (0x1E52, 'M', 'ṓ'), + (0x1E53, 'V'), + (0x1E54, 'M', 'ṕ'), + (0x1E55, 'V'), + (0x1E56, 'M', 'ṗ'), + (0x1E57, 'V'), + (0x1E58, 'M', 'ṙ'), + (0x1E59, 'V'), + (0x1E5A, 'M', 'ṛ'), + (0x1E5B, 'V'), + (0x1E5C, 'M', 'ṝ'), + (0x1E5D, 'V'), + (0x1E5E, 'M', 'ṟ'), + (0x1E5F, 'V'), + (0x1E60, 'M', 'ṡ'), + (0x1E61, 'V'), + (0x1E62, 'M', 'ṣ'), + (0x1E63, 'V'), + (0x1E64, 'M', 'ṥ'), + (0x1E65, 'V'), + (0x1E66, 'M', 'ṧ'), + (0x1E67, 'V'), + (0x1E68, 'M', 'ṩ'), + (0x1E69, 'V'), + (0x1E6A, 'M', 'ṫ'), + (0x1E6B, 'V'), + (0x1E6C, 'M', 'ṭ'), + (0x1E6D, 'V'), + (0x1E6E, 'M', 'ṯ'), + (0x1E6F, 'V'), + (0x1E70, 'M', 'ṱ'), + (0x1E71, 'V'), + (0x1E72, 'M', 'ṳ'), + (0x1E73, 'V'), + (0x1E74, 'M', 'ṵ'), + (0x1E75, 'V'), + (0x1E76, 'M', 'ṷ'), + (0x1E77, 'V'), + (0x1E78, 'M', 'ṹ'), + (0x1E79, 'V'), + (0x1E7A, 'M', 'ṻ'), + (0x1E7B, 'V'), + (0x1E7C, 'M', 'ṽ'), + (0x1E7D, 'V'), + (0x1E7E, 'M', 'ṿ'), + (0x1E7F, 'V'), + (0x1E80, 'M', 'ẁ'), + (0x1E81, 'V'), + (0x1E82, 'M', 'ẃ'), + (0x1E83, 'V'), + (0x1E84, 'M', 'ẅ'), + (0x1E85, 'V'), + (0x1E86, 'M', 'ẇ'), + (0x1E87, 'V'), + ] + +def _seg_18() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E88, 'M', 'ẉ'), + (0x1E89, 'V'), + (0x1E8A, 'M', 'ẋ'), + (0x1E8B, 'V'), + (0x1E8C, 'M', 'ẍ'), + (0x1E8D, 'V'), + (0x1E8E, 'M', 'ẏ'), + (0x1E8F, 'V'), + (0x1E90, 'M', 'ẑ'), + (0x1E91, 'V'), + (0x1E92, 'M', 'ẓ'), + (0x1E93, 'V'), + (0x1E94, 'M', 'ẕ'), + (0x1E95, 'V'), + (0x1E9A, 'M', 'aʾ'), + (0x1E9B, 'M', 'ṡ'), + (0x1E9C, 'V'), + (0x1E9E, 'M', 'ß'), + (0x1E9F, 'V'), + (0x1EA0, 'M', 'ạ'), + (0x1EA1, 'V'), + (0x1EA2, 'M', 'ả'), + (0x1EA3, 'V'), + (0x1EA4, 'M', 'ấ'), + (0x1EA5, 'V'), + (0x1EA6, 'M', 'ầ'), + (0x1EA7, 'V'), + (0x1EA8, 'M', 'ẩ'), + (0x1EA9, 'V'), + (0x1EAA, 'M', 'ẫ'), + (0x1EAB, 'V'), + (0x1EAC, 'M', 'ậ'), + (0x1EAD, 'V'), + (0x1EAE, 'M', 'ắ'), + (0x1EAF, 'V'), + (0x1EB0, 'M', 'ằ'), + (0x1EB1, 'V'), + (0x1EB2, 'M', 'ẳ'), + (0x1EB3, 'V'), + (0x1EB4, 'M', 'ẵ'), + (0x1EB5, 'V'), + (0x1EB6, 'M', 'ặ'), + (0x1EB7, 'V'), + (0x1EB8, 'M', 'ẹ'), + (0x1EB9, 'V'), + (0x1EBA, 'M', 'ẻ'), + (0x1EBB, 'V'), + (0x1EBC, 'M', 'ẽ'), + (0x1EBD, 'V'), + (0x1EBE, 'M', 'ế'), + (0x1EBF, 'V'), + (0x1EC0, 'M', 'ề'), + (0x1EC1, 'V'), + (0x1EC2, 'M', 'ể'), + (0x1EC3, 'V'), + (0x1EC4, 'M', 'ễ'), + (0x1EC5, 'V'), + (0x1EC6, 'M', 'ệ'), + (0x1EC7, 'V'), + (0x1EC8, 'M', 'ỉ'), + (0x1EC9, 'V'), + (0x1ECA, 'M', 'ị'), + (0x1ECB, 'V'), + (0x1ECC, 'M', 'ọ'), + (0x1ECD, 'V'), + (0x1ECE, 'M', 'ỏ'), + (0x1ECF, 'V'), + (0x1ED0, 'M', 'ố'), + (0x1ED1, 'V'), + (0x1ED2, 'M', 'ồ'), + (0x1ED3, 'V'), + (0x1ED4, 'M', 'ổ'), + (0x1ED5, 'V'), + (0x1ED6, 'M', 'ỗ'), + (0x1ED7, 'V'), + (0x1ED8, 'M', 'ộ'), + (0x1ED9, 'V'), + (0x1EDA, 'M', 'ớ'), + (0x1EDB, 'V'), + (0x1EDC, 'M', 'ờ'), + (0x1EDD, 'V'), + (0x1EDE, 'M', 'ở'), + (0x1EDF, 'V'), + (0x1EE0, 'M', 'ỡ'), + (0x1EE1, 'V'), + (0x1EE2, 'M', 'ợ'), + (0x1EE3, 'V'), + (0x1EE4, 'M', 'ụ'), + (0x1EE5, 'V'), + (0x1EE6, 'M', 'ủ'), + (0x1EE7, 'V'), + (0x1EE8, 'M', 'ứ'), + (0x1EE9, 'V'), + (0x1EEA, 'M', 'ừ'), + (0x1EEB, 'V'), + (0x1EEC, 'M', 'ử'), + (0x1EED, 'V'), + (0x1EEE, 'M', 'ữ'), + (0x1EEF, 'V'), + (0x1EF0, 'M', 'ự'), + ] + +def _seg_19() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1EF1, 'V'), + (0x1EF2, 'M', 'ỳ'), + (0x1EF3, 'V'), + (0x1EF4, 'M', 'ỵ'), + (0x1EF5, 'V'), + (0x1EF6, 'M', 'ỷ'), + (0x1EF7, 'V'), + (0x1EF8, 'M', 'ỹ'), + (0x1EF9, 'V'), + (0x1EFA, 'M', 'ỻ'), + (0x1EFB, 'V'), + (0x1EFC, 'M', 'ỽ'), + (0x1EFD, 'V'), + (0x1EFE, 'M', 'ỿ'), + (0x1EFF, 'V'), + (0x1F08, 'M', 'ἀ'), + (0x1F09, 'M', 'ἁ'), + (0x1F0A, 'M', 'ἂ'), + (0x1F0B, 'M', 'ἃ'), + (0x1F0C, 'M', 'ἄ'), + (0x1F0D, 'M', 'ἅ'), + (0x1F0E, 'M', 'ἆ'), + (0x1F0F, 'M', 'ἇ'), + (0x1F10, 'V'), + (0x1F16, 'X'), + (0x1F18, 'M', 'ἐ'), + (0x1F19, 'M', 'ἑ'), + (0x1F1A, 'M', 'ἒ'), + (0x1F1B, 'M', 'ἓ'), + (0x1F1C, 'M', 'ἔ'), + (0x1F1D, 'M', 'ἕ'), + (0x1F1E, 'X'), + (0x1F20, 'V'), + (0x1F28, 'M', 'ἠ'), + (0x1F29, 'M', 'ἡ'), + (0x1F2A, 'M', 'ἢ'), + (0x1F2B, 'M', 'ἣ'), + (0x1F2C, 'M', 'ἤ'), + (0x1F2D, 'M', 'ἥ'), + (0x1F2E, 'M', 'ἦ'), + (0x1F2F, 'M', 'ἧ'), + (0x1F30, 'V'), + (0x1F38, 'M', 'ἰ'), + (0x1F39, 'M', 'ἱ'), + (0x1F3A, 'M', 'ἲ'), + (0x1F3B, 'M', 'ἳ'), + (0x1F3C, 'M', 'ἴ'), + (0x1F3D, 'M', 'ἵ'), + (0x1F3E, 'M', 'ἶ'), + (0x1F3F, 'M', 'ἷ'), + (0x1F40, 'V'), + (0x1F46, 'X'), + (0x1F48, 'M', 'ὀ'), + (0x1F49, 'M', 'ὁ'), + (0x1F4A, 'M', 'ὂ'), + (0x1F4B, 'M', 'ὃ'), + (0x1F4C, 'M', 'ὄ'), + (0x1F4D, 'M', 'ὅ'), + (0x1F4E, 'X'), + (0x1F50, 'V'), + (0x1F58, 'X'), + (0x1F59, 'M', 'ὑ'), + (0x1F5A, 'X'), + (0x1F5B, 'M', 'ὓ'), + (0x1F5C, 'X'), + (0x1F5D, 'M', 'ὕ'), + (0x1F5E, 'X'), + (0x1F5F, 'M', 'ὗ'), + (0x1F60, 'V'), + (0x1F68, 'M', 'ὠ'), + (0x1F69, 'M', 'ὡ'), + (0x1F6A, 'M', 'ὢ'), + (0x1F6B, 'M', 'ὣ'), + (0x1F6C, 'M', 'ὤ'), + (0x1F6D, 'M', 'ὥ'), + (0x1F6E, 'M', 'ὦ'), + (0x1F6F, 'M', 'ὧ'), + (0x1F70, 'V'), + (0x1F71, 'M', 'ά'), + (0x1F72, 'V'), + (0x1F73, 'M', 'έ'), + (0x1F74, 'V'), + (0x1F75, 'M', 'ή'), + (0x1F76, 'V'), + (0x1F77, 'M', 'ί'), + (0x1F78, 'V'), + (0x1F79, 'M', 'ό'), + (0x1F7A, 'V'), + (0x1F7B, 'M', 'ύ'), + (0x1F7C, 'V'), + (0x1F7D, 'M', 'ώ'), + (0x1F7E, 'X'), + (0x1F80, 'M', 'ἀι'), + (0x1F81, 'M', 'ἁι'), + (0x1F82, 'M', 'ἂι'), + (0x1F83, 'M', 'ἃι'), + (0x1F84, 'M', 'ἄι'), + (0x1F85, 'M', 'ἅι'), + (0x1F86, 'M', 'ἆι'), + (0x1F87, 'M', 'ἇι'), + ] + +def _seg_20() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1F88, 'M', 'ἀι'), + (0x1F89, 'M', 'ἁι'), + (0x1F8A, 'M', 'ἂι'), + (0x1F8B, 'M', 'ἃι'), + (0x1F8C, 'M', 'ἄι'), + (0x1F8D, 'M', 'ἅι'), + (0x1F8E, 'M', 'ἆι'), + (0x1F8F, 'M', 'ἇι'), + (0x1F90, 'M', 'ἠι'), + (0x1F91, 'M', 'ἡι'), + (0x1F92, 'M', 'ἢι'), + (0x1F93, 'M', 'ἣι'), + (0x1F94, 'M', 'ἤι'), + (0x1F95, 'M', 'ἥι'), + (0x1F96, 'M', 'ἦι'), + (0x1F97, 'M', 'ἧι'), + (0x1F98, 'M', 'ἠι'), + (0x1F99, 'M', 'ἡι'), + (0x1F9A, 'M', 'ἢι'), + (0x1F9B, 'M', 'ἣι'), + (0x1F9C, 'M', 'ἤι'), + (0x1F9D, 'M', 'ἥι'), + (0x1F9E, 'M', 'ἦι'), + (0x1F9F, 'M', 'ἧι'), + (0x1FA0, 'M', 'ὠι'), + (0x1FA1, 'M', 'ὡι'), + (0x1FA2, 'M', 'ὢι'), + (0x1FA3, 'M', 'ὣι'), + (0x1FA4, 'M', 'ὤι'), + (0x1FA5, 'M', 'ὥι'), + (0x1FA6, 'M', 'ὦι'), + (0x1FA7, 'M', 'ὧι'), + (0x1FA8, 'M', 'ὠι'), + (0x1FA9, 'M', 'ὡι'), + (0x1FAA, 'M', 'ὢι'), + (0x1FAB, 'M', 'ὣι'), + (0x1FAC, 'M', 'ὤι'), + (0x1FAD, 'M', 'ὥι'), + (0x1FAE, 'M', 'ὦι'), + (0x1FAF, 'M', 'ὧι'), + (0x1FB0, 'V'), + (0x1FB2, 'M', 'ὰι'), + (0x1FB3, 'M', 'αι'), + (0x1FB4, 'M', 'άι'), + (0x1FB5, 'X'), + (0x1FB6, 'V'), + (0x1FB7, 'M', 'ᾶι'), + (0x1FB8, 'M', 'ᾰ'), + (0x1FB9, 'M', 'ᾱ'), + (0x1FBA, 'M', 'ὰ'), + (0x1FBB, 'M', 'ά'), + (0x1FBC, 'M', 'αι'), + (0x1FBD, '3', ' ̓'), + (0x1FBE, 'M', 'ι'), + (0x1FBF, '3', ' ̓'), + (0x1FC0, '3', ' ͂'), + (0x1FC1, '3', ' ̈͂'), + (0x1FC2, 'M', 'ὴι'), + (0x1FC3, 'M', 'ηι'), + (0x1FC4, 'M', 'ήι'), + (0x1FC5, 'X'), + (0x1FC6, 'V'), + (0x1FC7, 'M', 'ῆι'), + (0x1FC8, 'M', 'ὲ'), + (0x1FC9, 'M', 'έ'), + (0x1FCA, 'M', 'ὴ'), + (0x1FCB, 'M', 'ή'), + (0x1FCC, 'M', 'ηι'), + (0x1FCD, '3', ' ̓̀'), + (0x1FCE, '3', ' ̓́'), + (0x1FCF, '3', ' ̓͂'), + (0x1FD0, 'V'), + (0x1FD3, 'M', 'ΐ'), + (0x1FD4, 'X'), + (0x1FD6, 'V'), + (0x1FD8, 'M', 'ῐ'), + (0x1FD9, 'M', 'ῑ'), + (0x1FDA, 'M', 'ὶ'), + (0x1FDB, 'M', 'ί'), + (0x1FDC, 'X'), + (0x1FDD, '3', ' ̔̀'), + (0x1FDE, '3', ' ̔́'), + (0x1FDF, '3', ' ̔͂'), + (0x1FE0, 'V'), + (0x1FE3, 'M', 'ΰ'), + (0x1FE4, 'V'), + (0x1FE8, 'M', 'ῠ'), + (0x1FE9, 'M', 'ῡ'), + (0x1FEA, 'M', 'ὺ'), + (0x1FEB, 'M', 'ύ'), + (0x1FEC, 'M', 'ῥ'), + (0x1FED, '3', ' ̈̀'), + (0x1FEE, '3', ' ̈́'), + (0x1FEF, '3', '`'), + (0x1FF0, 'X'), + (0x1FF2, 'M', 'ὼι'), + (0x1FF3, 'M', 'ωι'), + (0x1FF4, 'M', 'ώι'), + (0x1FF5, 'X'), + (0x1FF6, 'V'), + ] + +def _seg_21() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1FF7, 'M', 'ῶι'), + (0x1FF8, 'M', 'ὸ'), + (0x1FF9, 'M', 'ό'), + (0x1FFA, 'M', 'ὼ'), + (0x1FFB, 'M', 'ώ'), + (0x1FFC, 'M', 'ωι'), + (0x1FFD, '3', ' ́'), + (0x1FFE, '3', ' ̔'), + (0x1FFF, 'X'), + (0x2000, '3', ' '), + (0x200B, 'I'), + (0x200C, 'D', ''), + (0x200E, 'X'), + (0x2010, 'V'), + (0x2011, 'M', '‐'), + (0x2012, 'V'), + (0x2017, '3', ' ̳'), + (0x2018, 'V'), + (0x2024, 'X'), + (0x2027, 'V'), + (0x2028, 'X'), + (0x202F, '3', ' '), + (0x2030, 'V'), + (0x2033, 'M', '′′'), + (0x2034, 'M', '′′′'), + (0x2035, 'V'), + (0x2036, 'M', '‵‵'), + (0x2037, 'M', '‵‵‵'), + (0x2038, 'V'), + (0x203C, '3', '!!'), + (0x203D, 'V'), + (0x203E, '3', ' ̅'), + (0x203F, 'V'), + (0x2047, '3', '??'), + (0x2048, '3', '?!'), + (0x2049, '3', '!?'), + (0x204A, 'V'), + (0x2057, 'M', '′′′′'), + (0x2058, 'V'), + (0x205F, '3', ' '), + (0x2060, 'I'), + (0x2061, 'X'), + (0x2064, 'I'), + (0x2065, 'X'), + (0x2070, 'M', '0'), + (0x2071, 'M', 'i'), + (0x2072, 'X'), + (0x2074, 'M', '4'), + (0x2075, 'M', '5'), + (0x2076, 'M', '6'), + (0x2077, 'M', '7'), + (0x2078, 'M', '8'), + (0x2079, 'M', '9'), + (0x207A, '3', '+'), + (0x207B, 'M', '−'), + (0x207C, '3', '='), + (0x207D, '3', '('), + (0x207E, '3', ')'), + (0x207F, 'M', 'n'), + (0x2080, 'M', '0'), + (0x2081, 'M', '1'), + (0x2082, 'M', '2'), + (0x2083, 'M', '3'), + (0x2084, 'M', '4'), + (0x2085, 'M', '5'), + (0x2086, 'M', '6'), + (0x2087, 'M', '7'), + (0x2088, 'M', '8'), + (0x2089, 'M', '9'), + (0x208A, '3', '+'), + (0x208B, 'M', '−'), + (0x208C, '3', '='), + (0x208D, '3', '('), + (0x208E, '3', ')'), + (0x208F, 'X'), + (0x2090, 'M', 'a'), + (0x2091, 'M', 'e'), + (0x2092, 'M', 'o'), + (0x2093, 'M', 'x'), + (0x2094, 'M', 'ə'), + (0x2095, 'M', 'h'), + (0x2096, 'M', 'k'), + (0x2097, 'M', 'l'), + (0x2098, 'M', 'm'), + (0x2099, 'M', 'n'), + (0x209A, 'M', 'p'), + (0x209B, 'M', 's'), + (0x209C, 'M', 't'), + (0x209D, 'X'), + (0x20A0, 'V'), + (0x20A8, 'M', 'rs'), + (0x20A9, 'V'), + (0x20C1, 'X'), + (0x20D0, 'V'), + (0x20F1, 'X'), + (0x2100, '3', 'a/c'), + (0x2101, '3', 'a/s'), + (0x2102, 'M', 'c'), + (0x2103, 'M', '°c'), + (0x2104, 'V'), + ] + +def _seg_22() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2105, '3', 'c/o'), + (0x2106, '3', 'c/u'), + (0x2107, 'M', 'ɛ'), + (0x2108, 'V'), + (0x2109, 'M', '°f'), + (0x210A, 'M', 'g'), + (0x210B, 'M', 'h'), + (0x210F, 'M', 'ħ'), + (0x2110, 'M', 'i'), + (0x2112, 'M', 'l'), + (0x2114, 'V'), + (0x2115, 'M', 'n'), + (0x2116, 'M', 'no'), + (0x2117, 'V'), + (0x2119, 'M', 'p'), + (0x211A, 'M', 'q'), + (0x211B, 'M', 'r'), + (0x211E, 'V'), + (0x2120, 'M', 'sm'), + (0x2121, 'M', 'tel'), + (0x2122, 'M', 'tm'), + (0x2123, 'V'), + (0x2124, 'M', 'z'), + (0x2125, 'V'), + (0x2126, 'M', 'ω'), + (0x2127, 'V'), + (0x2128, 'M', 'z'), + (0x2129, 'V'), + (0x212A, 'M', 'k'), + (0x212B, 'M', 'å'), + (0x212C, 'M', 'b'), + (0x212D, 'M', 'c'), + (0x212E, 'V'), + (0x212F, 'M', 'e'), + (0x2131, 'M', 'f'), + (0x2132, 'X'), + (0x2133, 'M', 'm'), + (0x2134, 'M', 'o'), + (0x2135, 'M', 'א'), + (0x2136, 'M', 'ב'), + (0x2137, 'M', 'ג'), + (0x2138, 'M', 'ד'), + (0x2139, 'M', 'i'), + (0x213A, 'V'), + (0x213B, 'M', 'fax'), + (0x213C, 'M', 'π'), + (0x213D, 'M', 'γ'), + (0x213F, 'M', 'π'), + (0x2140, 'M', '∑'), + (0x2141, 'V'), + (0x2145, 'M', 'd'), + (0x2147, 'M', 'e'), + (0x2148, 'M', 'i'), + (0x2149, 'M', 'j'), + (0x214A, 'V'), + (0x2150, 'M', '1⁄7'), + (0x2151, 'M', '1⁄9'), + (0x2152, 'M', '1⁄10'), + (0x2153, 'M', '1⁄3'), + (0x2154, 'M', '2⁄3'), + (0x2155, 'M', '1⁄5'), + (0x2156, 'M', '2⁄5'), + (0x2157, 'M', '3⁄5'), + (0x2158, 'M', '4⁄5'), + (0x2159, 'M', '1⁄6'), + (0x215A, 'M', '5⁄6'), + (0x215B, 'M', '1⁄8'), + (0x215C, 'M', '3⁄8'), + (0x215D, 'M', '5⁄8'), + (0x215E, 'M', '7⁄8'), + (0x215F, 'M', '1⁄'), + (0x2160, 'M', 'i'), + (0x2161, 'M', 'ii'), + (0x2162, 'M', 'iii'), + (0x2163, 'M', 'iv'), + (0x2164, 'M', 'v'), + (0x2165, 'M', 'vi'), + (0x2166, 'M', 'vii'), + (0x2167, 'M', 'viii'), + (0x2168, 'M', 'ix'), + (0x2169, 'M', 'x'), + (0x216A, 'M', 'xi'), + (0x216B, 'M', 'xii'), + (0x216C, 'M', 'l'), + (0x216D, 'M', 'c'), + (0x216E, 'M', 'd'), + (0x216F, 'M', 'm'), + (0x2170, 'M', 'i'), + (0x2171, 'M', 'ii'), + (0x2172, 'M', 'iii'), + (0x2173, 'M', 'iv'), + (0x2174, 'M', 'v'), + (0x2175, 'M', 'vi'), + (0x2176, 'M', 'vii'), + (0x2177, 'M', 'viii'), + (0x2178, 'M', 'ix'), + (0x2179, 'M', 'x'), + (0x217A, 'M', 'xi'), + (0x217B, 'M', 'xii'), + (0x217C, 'M', 'l'), + ] + +def _seg_23() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x217D, 'M', 'c'), + (0x217E, 'M', 'd'), + (0x217F, 'M', 'm'), + (0x2180, 'V'), + (0x2183, 'X'), + (0x2184, 'V'), + (0x2189, 'M', '0⁄3'), + (0x218A, 'V'), + (0x218C, 'X'), + (0x2190, 'V'), + (0x222C, 'M', '∫∫'), + (0x222D, 'M', '∫∫∫'), + (0x222E, 'V'), + (0x222F, 'M', '∮∮'), + (0x2230, 'M', '∮∮∮'), + (0x2231, 'V'), + (0x2329, 'M', '〈'), + (0x232A, 'M', '〉'), + (0x232B, 'V'), + (0x2427, 'X'), + (0x2440, 'V'), + (0x244B, 'X'), + (0x2460, 'M', '1'), + (0x2461, 'M', '2'), + (0x2462, 'M', '3'), + (0x2463, 'M', '4'), + (0x2464, 'M', '5'), + (0x2465, 'M', '6'), + (0x2466, 'M', '7'), + (0x2467, 'M', '8'), + (0x2468, 'M', '9'), + (0x2469, 'M', '10'), + (0x246A, 'M', '11'), + (0x246B, 'M', '12'), + (0x246C, 'M', '13'), + (0x246D, 'M', '14'), + (0x246E, 'M', '15'), + (0x246F, 'M', '16'), + (0x2470, 'M', '17'), + (0x2471, 'M', '18'), + (0x2472, 'M', '19'), + (0x2473, 'M', '20'), + (0x2474, '3', '(1)'), + (0x2475, '3', '(2)'), + (0x2476, '3', '(3)'), + (0x2477, '3', '(4)'), + (0x2478, '3', '(5)'), + (0x2479, '3', '(6)'), + (0x247A, '3', '(7)'), + (0x247B, '3', '(8)'), + (0x247C, '3', '(9)'), + (0x247D, '3', '(10)'), + (0x247E, '3', '(11)'), + (0x247F, '3', '(12)'), + (0x2480, '3', '(13)'), + (0x2481, '3', '(14)'), + (0x2482, '3', '(15)'), + (0x2483, '3', '(16)'), + (0x2484, '3', '(17)'), + (0x2485, '3', '(18)'), + (0x2486, '3', '(19)'), + (0x2487, '3', '(20)'), + (0x2488, 'X'), + (0x249C, '3', '(a)'), + (0x249D, '3', '(b)'), + (0x249E, '3', '(c)'), + (0x249F, '3', '(d)'), + (0x24A0, '3', '(e)'), + (0x24A1, '3', '(f)'), + (0x24A2, '3', '(g)'), + (0x24A3, '3', '(h)'), + (0x24A4, '3', '(i)'), + (0x24A5, '3', '(j)'), + (0x24A6, '3', '(k)'), + (0x24A7, '3', '(l)'), + (0x24A8, '3', '(m)'), + (0x24A9, '3', '(n)'), + (0x24AA, '3', '(o)'), + (0x24AB, '3', '(p)'), + (0x24AC, '3', '(q)'), + (0x24AD, '3', '(r)'), + (0x24AE, '3', '(s)'), + (0x24AF, '3', '(t)'), + (0x24B0, '3', '(u)'), + (0x24B1, '3', '(v)'), + (0x24B2, '3', '(w)'), + (0x24B3, '3', '(x)'), + (0x24B4, '3', '(y)'), + (0x24B5, '3', '(z)'), + (0x24B6, 'M', 'a'), + (0x24B7, 'M', 'b'), + (0x24B8, 'M', 'c'), + (0x24B9, 'M', 'd'), + (0x24BA, 'M', 'e'), + (0x24BB, 'M', 'f'), + (0x24BC, 'M', 'g'), + (0x24BD, 'M', 'h'), + (0x24BE, 'M', 'i'), + (0x24BF, 'M', 'j'), + (0x24C0, 'M', 'k'), + ] + +def _seg_24() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x24C1, 'M', 'l'), + (0x24C2, 'M', 'm'), + (0x24C3, 'M', 'n'), + (0x24C4, 'M', 'o'), + (0x24C5, 'M', 'p'), + (0x24C6, 'M', 'q'), + (0x24C7, 'M', 'r'), + (0x24C8, 'M', 's'), + (0x24C9, 'M', 't'), + (0x24CA, 'M', 'u'), + (0x24CB, 'M', 'v'), + (0x24CC, 'M', 'w'), + (0x24CD, 'M', 'x'), + (0x24CE, 'M', 'y'), + (0x24CF, 'M', 'z'), + (0x24D0, 'M', 'a'), + (0x24D1, 'M', 'b'), + (0x24D2, 'M', 'c'), + (0x24D3, 'M', 'd'), + (0x24D4, 'M', 'e'), + (0x24D5, 'M', 'f'), + (0x24D6, 'M', 'g'), + (0x24D7, 'M', 'h'), + (0x24D8, 'M', 'i'), + (0x24D9, 'M', 'j'), + (0x24DA, 'M', 'k'), + (0x24DB, 'M', 'l'), + (0x24DC, 'M', 'm'), + (0x24DD, 'M', 'n'), + (0x24DE, 'M', 'o'), + (0x24DF, 'M', 'p'), + (0x24E0, 'M', 'q'), + (0x24E1, 'M', 'r'), + (0x24E2, 'M', 's'), + (0x24E3, 'M', 't'), + (0x24E4, 'M', 'u'), + (0x24E5, 'M', 'v'), + (0x24E6, 'M', 'w'), + (0x24E7, 'M', 'x'), + (0x24E8, 'M', 'y'), + (0x24E9, 'M', 'z'), + (0x24EA, 'M', '0'), + (0x24EB, 'V'), + (0x2A0C, 'M', '∫∫∫∫'), + (0x2A0D, 'V'), + (0x2A74, '3', '::='), + (0x2A75, '3', '=='), + (0x2A76, '3', '==='), + (0x2A77, 'V'), + (0x2ADC, 'M', '⫝̸'), + (0x2ADD, 'V'), + (0x2B74, 'X'), + (0x2B76, 'V'), + (0x2B96, 'X'), + (0x2B97, 'V'), + (0x2C00, 'M', 'ⰰ'), + (0x2C01, 'M', 'ⰱ'), + (0x2C02, 'M', 'ⰲ'), + (0x2C03, 'M', 'ⰳ'), + (0x2C04, 'M', 'ⰴ'), + (0x2C05, 'M', 'ⰵ'), + (0x2C06, 'M', 'ⰶ'), + (0x2C07, 'M', 'ⰷ'), + (0x2C08, 'M', 'ⰸ'), + (0x2C09, 'M', 'ⰹ'), + (0x2C0A, 'M', 'ⰺ'), + (0x2C0B, 'M', 'ⰻ'), + (0x2C0C, 'M', 'ⰼ'), + (0x2C0D, 'M', 'ⰽ'), + (0x2C0E, 'M', 'ⰾ'), + (0x2C0F, 'M', 'ⰿ'), + (0x2C10, 'M', 'ⱀ'), + (0x2C11, 'M', 'ⱁ'), + (0x2C12, 'M', 'ⱂ'), + (0x2C13, 'M', 'ⱃ'), + (0x2C14, 'M', 'ⱄ'), + (0x2C15, 'M', 'ⱅ'), + (0x2C16, 'M', 'ⱆ'), + (0x2C17, 'M', 'ⱇ'), + (0x2C18, 'M', 'ⱈ'), + (0x2C19, 'M', 'ⱉ'), + (0x2C1A, 'M', 'ⱊ'), + (0x2C1B, 'M', 'ⱋ'), + (0x2C1C, 'M', 'ⱌ'), + (0x2C1D, 'M', 'ⱍ'), + (0x2C1E, 'M', 'ⱎ'), + (0x2C1F, 'M', 'ⱏ'), + (0x2C20, 'M', 'ⱐ'), + (0x2C21, 'M', 'ⱑ'), + (0x2C22, 'M', 'ⱒ'), + (0x2C23, 'M', 'ⱓ'), + (0x2C24, 'M', 'ⱔ'), + (0x2C25, 'M', 'ⱕ'), + (0x2C26, 'M', 'ⱖ'), + (0x2C27, 'M', 'ⱗ'), + (0x2C28, 'M', 'ⱘ'), + (0x2C29, 'M', 'ⱙ'), + (0x2C2A, 'M', 'ⱚ'), + (0x2C2B, 'M', 'ⱛ'), + (0x2C2C, 'M', 'ⱜ'), + ] + +def _seg_25() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2C2D, 'M', 'ⱝ'), + (0x2C2E, 'M', 'ⱞ'), + (0x2C2F, 'M', 'ⱟ'), + (0x2C30, 'V'), + (0x2C60, 'M', 'ⱡ'), + (0x2C61, 'V'), + (0x2C62, 'M', 'ɫ'), + (0x2C63, 'M', 'ᵽ'), + (0x2C64, 'M', 'ɽ'), + (0x2C65, 'V'), + (0x2C67, 'M', 'ⱨ'), + (0x2C68, 'V'), + (0x2C69, 'M', 'ⱪ'), + (0x2C6A, 'V'), + (0x2C6B, 'M', 'ⱬ'), + (0x2C6C, 'V'), + (0x2C6D, 'M', 'ɑ'), + (0x2C6E, 'M', 'ɱ'), + (0x2C6F, 'M', 'ɐ'), + (0x2C70, 'M', 'ɒ'), + (0x2C71, 'V'), + (0x2C72, 'M', 'ⱳ'), + (0x2C73, 'V'), + (0x2C75, 'M', 'ⱶ'), + (0x2C76, 'V'), + (0x2C7C, 'M', 'j'), + (0x2C7D, 'M', 'v'), + (0x2C7E, 'M', 'ȿ'), + (0x2C7F, 'M', 'ɀ'), + (0x2C80, 'M', 'ⲁ'), + (0x2C81, 'V'), + (0x2C82, 'M', 'ⲃ'), + (0x2C83, 'V'), + (0x2C84, 'M', 'ⲅ'), + (0x2C85, 'V'), + (0x2C86, 'M', 'ⲇ'), + (0x2C87, 'V'), + (0x2C88, 'M', 'ⲉ'), + (0x2C89, 'V'), + (0x2C8A, 'M', 'ⲋ'), + (0x2C8B, 'V'), + (0x2C8C, 'M', 'ⲍ'), + (0x2C8D, 'V'), + (0x2C8E, 'M', 'ⲏ'), + (0x2C8F, 'V'), + (0x2C90, 'M', 'ⲑ'), + (0x2C91, 'V'), + (0x2C92, 'M', 'ⲓ'), + (0x2C93, 'V'), + (0x2C94, 'M', 'ⲕ'), + (0x2C95, 'V'), + (0x2C96, 'M', 'ⲗ'), + (0x2C97, 'V'), + (0x2C98, 'M', 'ⲙ'), + (0x2C99, 'V'), + (0x2C9A, 'M', 'ⲛ'), + (0x2C9B, 'V'), + (0x2C9C, 'M', 'ⲝ'), + (0x2C9D, 'V'), + (0x2C9E, 'M', 'ⲟ'), + (0x2C9F, 'V'), + (0x2CA0, 'M', 'ⲡ'), + (0x2CA1, 'V'), + (0x2CA2, 'M', 'ⲣ'), + (0x2CA3, 'V'), + (0x2CA4, 'M', 'ⲥ'), + (0x2CA5, 'V'), + (0x2CA6, 'M', 'ⲧ'), + (0x2CA7, 'V'), + (0x2CA8, 'M', 'ⲩ'), + (0x2CA9, 'V'), + (0x2CAA, 'M', 'ⲫ'), + (0x2CAB, 'V'), + (0x2CAC, 'M', 'ⲭ'), + (0x2CAD, 'V'), + (0x2CAE, 'M', 'ⲯ'), + (0x2CAF, 'V'), + (0x2CB0, 'M', 'ⲱ'), + (0x2CB1, 'V'), + (0x2CB2, 'M', 'ⲳ'), + (0x2CB3, 'V'), + (0x2CB4, 'M', 'ⲵ'), + (0x2CB5, 'V'), + (0x2CB6, 'M', 'ⲷ'), + (0x2CB7, 'V'), + (0x2CB8, 'M', 'ⲹ'), + (0x2CB9, 'V'), + (0x2CBA, 'M', 'ⲻ'), + (0x2CBB, 'V'), + (0x2CBC, 'M', 'ⲽ'), + (0x2CBD, 'V'), + (0x2CBE, 'M', 'ⲿ'), + (0x2CBF, 'V'), + (0x2CC0, 'M', 'ⳁ'), + (0x2CC1, 'V'), + (0x2CC2, 'M', 'ⳃ'), + (0x2CC3, 'V'), + (0x2CC4, 'M', 'ⳅ'), + (0x2CC5, 'V'), + (0x2CC6, 'M', 'ⳇ'), + ] + +def _seg_26() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2CC7, 'V'), + (0x2CC8, 'M', 'ⳉ'), + (0x2CC9, 'V'), + (0x2CCA, 'M', 'ⳋ'), + (0x2CCB, 'V'), + (0x2CCC, 'M', 'ⳍ'), + (0x2CCD, 'V'), + (0x2CCE, 'M', 'ⳏ'), + (0x2CCF, 'V'), + (0x2CD0, 'M', 'ⳑ'), + (0x2CD1, 'V'), + (0x2CD2, 'M', 'ⳓ'), + (0x2CD3, 'V'), + (0x2CD4, 'M', 'ⳕ'), + (0x2CD5, 'V'), + (0x2CD6, 'M', 'ⳗ'), + (0x2CD7, 'V'), + (0x2CD8, 'M', 'ⳙ'), + (0x2CD9, 'V'), + (0x2CDA, 'M', 'ⳛ'), + (0x2CDB, 'V'), + (0x2CDC, 'M', 'ⳝ'), + (0x2CDD, 'V'), + (0x2CDE, 'M', 'ⳟ'), + (0x2CDF, 'V'), + (0x2CE0, 'M', 'ⳡ'), + (0x2CE1, 'V'), + (0x2CE2, 'M', 'ⳣ'), + (0x2CE3, 'V'), + (0x2CEB, 'M', 'ⳬ'), + (0x2CEC, 'V'), + (0x2CED, 'M', 'ⳮ'), + (0x2CEE, 'V'), + (0x2CF2, 'M', 'ⳳ'), + (0x2CF3, 'V'), + (0x2CF4, 'X'), + (0x2CF9, 'V'), + (0x2D26, 'X'), + (0x2D27, 'V'), + (0x2D28, 'X'), + (0x2D2D, 'V'), + (0x2D2E, 'X'), + (0x2D30, 'V'), + (0x2D68, 'X'), + (0x2D6F, 'M', 'ⵡ'), + (0x2D70, 'V'), + (0x2D71, 'X'), + (0x2D7F, 'V'), + (0x2D97, 'X'), + (0x2DA0, 'V'), + (0x2DA7, 'X'), + (0x2DA8, 'V'), + (0x2DAF, 'X'), + (0x2DB0, 'V'), + (0x2DB7, 'X'), + (0x2DB8, 'V'), + (0x2DBF, 'X'), + (0x2DC0, 'V'), + (0x2DC7, 'X'), + (0x2DC8, 'V'), + (0x2DCF, 'X'), + (0x2DD0, 'V'), + (0x2DD7, 'X'), + (0x2DD8, 'V'), + (0x2DDF, 'X'), + (0x2DE0, 'V'), + (0x2E5E, 'X'), + (0x2E80, 'V'), + (0x2E9A, 'X'), + (0x2E9B, 'V'), + (0x2E9F, 'M', '母'), + (0x2EA0, 'V'), + (0x2EF3, 'M', '龟'), + (0x2EF4, 'X'), + (0x2F00, 'M', '一'), + (0x2F01, 'M', '丨'), + (0x2F02, 'M', '丶'), + (0x2F03, 'M', '丿'), + (0x2F04, 'M', '乙'), + (0x2F05, 'M', '亅'), + (0x2F06, 'M', '二'), + (0x2F07, 'M', '亠'), + (0x2F08, 'M', '人'), + (0x2F09, 'M', '儿'), + (0x2F0A, 'M', '入'), + (0x2F0B, 'M', '八'), + (0x2F0C, 'M', '冂'), + (0x2F0D, 'M', '冖'), + (0x2F0E, 'M', '冫'), + (0x2F0F, 'M', '几'), + (0x2F10, 'M', '凵'), + (0x2F11, 'M', '刀'), + (0x2F12, 'M', '力'), + (0x2F13, 'M', '勹'), + (0x2F14, 'M', '匕'), + (0x2F15, 'M', '匚'), + (0x2F16, 'M', '匸'), + (0x2F17, 'M', '十'), + (0x2F18, 'M', '卜'), + (0x2F19, 'M', '卩'), + ] + +def _seg_27() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F1A, 'M', '厂'), + (0x2F1B, 'M', '厶'), + (0x2F1C, 'M', '又'), + (0x2F1D, 'M', '口'), + (0x2F1E, 'M', '囗'), + (0x2F1F, 'M', '土'), + (0x2F20, 'M', '士'), + (0x2F21, 'M', '夂'), + (0x2F22, 'M', '夊'), + (0x2F23, 'M', '夕'), + (0x2F24, 'M', '大'), + (0x2F25, 'M', '女'), + (0x2F26, 'M', '子'), + (0x2F27, 'M', '宀'), + (0x2F28, 'M', '寸'), + (0x2F29, 'M', '小'), + (0x2F2A, 'M', '尢'), + (0x2F2B, 'M', '尸'), + (0x2F2C, 'M', '屮'), + (0x2F2D, 'M', '山'), + (0x2F2E, 'M', '巛'), + (0x2F2F, 'M', '工'), + (0x2F30, 'M', '己'), + (0x2F31, 'M', '巾'), + (0x2F32, 'M', '干'), + (0x2F33, 'M', '幺'), + (0x2F34, 'M', '广'), + (0x2F35, 'M', '廴'), + (0x2F36, 'M', '廾'), + (0x2F37, 'M', '弋'), + (0x2F38, 'M', '弓'), + (0x2F39, 'M', '彐'), + (0x2F3A, 'M', '彡'), + (0x2F3B, 'M', '彳'), + (0x2F3C, 'M', '心'), + (0x2F3D, 'M', '戈'), + (0x2F3E, 'M', '戶'), + (0x2F3F, 'M', '手'), + (0x2F40, 'M', '支'), + (0x2F41, 'M', '攴'), + (0x2F42, 'M', '文'), + (0x2F43, 'M', '斗'), + (0x2F44, 'M', '斤'), + (0x2F45, 'M', '方'), + (0x2F46, 'M', '无'), + (0x2F47, 'M', '日'), + (0x2F48, 'M', '曰'), + (0x2F49, 'M', '月'), + (0x2F4A, 'M', '木'), + (0x2F4B, 'M', '欠'), + (0x2F4C, 'M', '止'), + (0x2F4D, 'M', '歹'), + (0x2F4E, 'M', '殳'), + (0x2F4F, 'M', '毋'), + (0x2F50, 'M', '比'), + (0x2F51, 'M', '毛'), + (0x2F52, 'M', '氏'), + (0x2F53, 'M', '气'), + (0x2F54, 'M', '水'), + (0x2F55, 'M', '火'), + (0x2F56, 'M', '爪'), + (0x2F57, 'M', '父'), + (0x2F58, 'M', '爻'), + (0x2F59, 'M', '爿'), + (0x2F5A, 'M', '片'), + (0x2F5B, 'M', '牙'), + (0x2F5C, 'M', '牛'), + (0x2F5D, 'M', '犬'), + (0x2F5E, 'M', '玄'), + (0x2F5F, 'M', '玉'), + (0x2F60, 'M', '瓜'), + (0x2F61, 'M', '瓦'), + (0x2F62, 'M', '甘'), + (0x2F63, 'M', '生'), + (0x2F64, 'M', '用'), + (0x2F65, 'M', '田'), + (0x2F66, 'M', '疋'), + (0x2F67, 'M', '疒'), + (0x2F68, 'M', '癶'), + (0x2F69, 'M', '白'), + (0x2F6A, 'M', '皮'), + (0x2F6B, 'M', '皿'), + (0x2F6C, 'M', '目'), + (0x2F6D, 'M', '矛'), + (0x2F6E, 'M', '矢'), + (0x2F6F, 'M', '石'), + (0x2F70, 'M', '示'), + (0x2F71, 'M', '禸'), + (0x2F72, 'M', '禾'), + (0x2F73, 'M', '穴'), + (0x2F74, 'M', '立'), + (0x2F75, 'M', '竹'), + (0x2F76, 'M', '米'), + (0x2F77, 'M', '糸'), + (0x2F78, 'M', '缶'), + (0x2F79, 'M', '网'), + (0x2F7A, 'M', '羊'), + (0x2F7B, 'M', '羽'), + (0x2F7C, 'M', '老'), + (0x2F7D, 'M', '而'), + ] + +def _seg_28() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F7E, 'M', '耒'), + (0x2F7F, 'M', '耳'), + (0x2F80, 'M', '聿'), + (0x2F81, 'M', '肉'), + (0x2F82, 'M', '臣'), + (0x2F83, 'M', '自'), + (0x2F84, 'M', '至'), + (0x2F85, 'M', '臼'), + (0x2F86, 'M', '舌'), + (0x2F87, 'M', '舛'), + (0x2F88, 'M', '舟'), + (0x2F89, 'M', '艮'), + (0x2F8A, 'M', '色'), + (0x2F8B, 'M', '艸'), + (0x2F8C, 'M', '虍'), + (0x2F8D, 'M', '虫'), + (0x2F8E, 'M', '血'), + (0x2F8F, 'M', '行'), + (0x2F90, 'M', '衣'), + (0x2F91, 'M', '襾'), + (0x2F92, 'M', '見'), + (0x2F93, 'M', '角'), + (0x2F94, 'M', '言'), + (0x2F95, 'M', '谷'), + (0x2F96, 'M', '豆'), + (0x2F97, 'M', '豕'), + (0x2F98, 'M', '豸'), + (0x2F99, 'M', '貝'), + (0x2F9A, 'M', '赤'), + (0x2F9B, 'M', '走'), + (0x2F9C, 'M', '足'), + (0x2F9D, 'M', '身'), + (0x2F9E, 'M', '車'), + (0x2F9F, 'M', '辛'), + (0x2FA0, 'M', '辰'), + (0x2FA1, 'M', '辵'), + (0x2FA2, 'M', '邑'), + (0x2FA3, 'M', '酉'), + (0x2FA4, 'M', '釆'), + (0x2FA5, 'M', '里'), + (0x2FA6, 'M', '金'), + (0x2FA7, 'M', '長'), + (0x2FA8, 'M', '門'), + (0x2FA9, 'M', '阜'), + (0x2FAA, 'M', '隶'), + (0x2FAB, 'M', '隹'), + (0x2FAC, 'M', '雨'), + (0x2FAD, 'M', '靑'), + (0x2FAE, 'M', '非'), + (0x2FAF, 'M', '面'), + (0x2FB0, 'M', '革'), + (0x2FB1, 'M', '韋'), + (0x2FB2, 'M', '韭'), + (0x2FB3, 'M', '音'), + (0x2FB4, 'M', '頁'), + (0x2FB5, 'M', '風'), + (0x2FB6, 'M', '飛'), + (0x2FB7, 'M', '食'), + (0x2FB8, 'M', '首'), + (0x2FB9, 'M', '香'), + (0x2FBA, 'M', '馬'), + (0x2FBB, 'M', '骨'), + (0x2FBC, 'M', '高'), + (0x2FBD, 'M', '髟'), + (0x2FBE, 'M', '鬥'), + (0x2FBF, 'M', '鬯'), + (0x2FC0, 'M', '鬲'), + (0x2FC1, 'M', '鬼'), + (0x2FC2, 'M', '魚'), + (0x2FC3, 'M', '鳥'), + (0x2FC4, 'M', '鹵'), + (0x2FC5, 'M', '鹿'), + (0x2FC6, 'M', '麥'), + (0x2FC7, 'M', '麻'), + (0x2FC8, 'M', '黃'), + (0x2FC9, 'M', '黍'), + (0x2FCA, 'M', '黑'), + (0x2FCB, 'M', '黹'), + (0x2FCC, 'M', '黽'), + (0x2FCD, 'M', '鼎'), + (0x2FCE, 'M', '鼓'), + (0x2FCF, 'M', '鼠'), + (0x2FD0, 'M', '鼻'), + (0x2FD1, 'M', '齊'), + (0x2FD2, 'M', '齒'), + (0x2FD3, 'M', '龍'), + (0x2FD4, 'M', '龜'), + (0x2FD5, 'M', '龠'), + (0x2FD6, 'X'), + (0x3000, '3', ' '), + (0x3001, 'V'), + (0x3002, 'M', '.'), + (0x3003, 'V'), + (0x3036, 'M', '〒'), + (0x3037, 'V'), + (0x3038, 'M', '十'), + (0x3039, 'M', '卄'), + (0x303A, 'M', '卅'), + (0x303B, 'V'), + (0x3040, 'X'), + ] + +def _seg_29() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x3041, 'V'), + (0x3097, 'X'), + (0x3099, 'V'), + (0x309B, '3', ' ゙'), + (0x309C, '3', ' ゚'), + (0x309D, 'V'), + (0x309F, 'M', 'より'), + (0x30A0, 'V'), + (0x30FF, 'M', 'コト'), + (0x3100, 'X'), + (0x3105, 'V'), + (0x3130, 'X'), + (0x3131, 'M', 'ᄀ'), + (0x3132, 'M', 'ᄁ'), + (0x3133, 'M', 'ᆪ'), + (0x3134, 'M', 'ᄂ'), + (0x3135, 'M', 'ᆬ'), + (0x3136, 'M', 'ᆭ'), + (0x3137, 'M', 'ᄃ'), + (0x3138, 'M', 'ᄄ'), + (0x3139, 'M', 'ᄅ'), + (0x313A, 'M', 'ᆰ'), + (0x313B, 'M', 'ᆱ'), + (0x313C, 'M', 'ᆲ'), + (0x313D, 'M', 'ᆳ'), + (0x313E, 'M', 'ᆴ'), + (0x313F, 'M', 'ᆵ'), + (0x3140, 'M', 'ᄚ'), + (0x3141, 'M', 'ᄆ'), + (0x3142, 'M', 'ᄇ'), + (0x3143, 'M', 'ᄈ'), + (0x3144, 'M', 'ᄡ'), + (0x3145, 'M', 'ᄉ'), + (0x3146, 'M', 'ᄊ'), + (0x3147, 'M', 'ᄋ'), + (0x3148, 'M', 'ᄌ'), + (0x3149, 'M', 'ᄍ'), + (0x314A, 'M', 'ᄎ'), + (0x314B, 'M', 'ᄏ'), + (0x314C, 'M', 'ᄐ'), + (0x314D, 'M', 'ᄑ'), + (0x314E, 'M', 'ᄒ'), + (0x314F, 'M', 'ᅡ'), + (0x3150, 'M', 'ᅢ'), + (0x3151, 'M', 'ᅣ'), + (0x3152, 'M', 'ᅤ'), + (0x3153, 'M', 'ᅥ'), + (0x3154, 'M', 'ᅦ'), + (0x3155, 'M', 'ᅧ'), + (0x3156, 'M', 'ᅨ'), + (0x3157, 'M', 'ᅩ'), + (0x3158, 'M', 'ᅪ'), + (0x3159, 'M', 'ᅫ'), + (0x315A, 'M', 'ᅬ'), + (0x315B, 'M', 'ᅭ'), + (0x315C, 'M', 'ᅮ'), + (0x315D, 'M', 'ᅯ'), + (0x315E, 'M', 'ᅰ'), + (0x315F, 'M', 'ᅱ'), + (0x3160, 'M', 'ᅲ'), + (0x3161, 'M', 'ᅳ'), + (0x3162, 'M', 'ᅴ'), + (0x3163, 'M', 'ᅵ'), + (0x3164, 'X'), + (0x3165, 'M', 'ᄔ'), + (0x3166, 'M', 'ᄕ'), + (0x3167, 'M', 'ᇇ'), + (0x3168, 'M', 'ᇈ'), + (0x3169, 'M', 'ᇌ'), + (0x316A, 'M', 'ᇎ'), + (0x316B, 'M', 'ᇓ'), + (0x316C, 'M', 'ᇗ'), + (0x316D, 'M', 'ᇙ'), + (0x316E, 'M', 'ᄜ'), + (0x316F, 'M', 'ᇝ'), + (0x3170, 'M', 'ᇟ'), + (0x3171, 'M', 'ᄝ'), + (0x3172, 'M', 'ᄞ'), + (0x3173, 'M', 'ᄠ'), + (0x3174, 'M', 'ᄢ'), + (0x3175, 'M', 'ᄣ'), + (0x3176, 'M', 'ᄧ'), + (0x3177, 'M', 'ᄩ'), + (0x3178, 'M', 'ᄫ'), + (0x3179, 'M', 'ᄬ'), + (0x317A, 'M', 'ᄭ'), + (0x317B, 'M', 'ᄮ'), + (0x317C, 'M', 'ᄯ'), + (0x317D, 'M', 'ᄲ'), + (0x317E, 'M', 'ᄶ'), + (0x317F, 'M', 'ᅀ'), + (0x3180, 'M', 'ᅇ'), + (0x3181, 'M', 'ᅌ'), + (0x3182, 'M', 'ᇱ'), + (0x3183, 'M', 'ᇲ'), + (0x3184, 'M', 'ᅗ'), + (0x3185, 'M', 'ᅘ'), + (0x3186, 'M', 'ᅙ'), + (0x3187, 'M', 'ᆄ'), + (0x3188, 'M', 'ᆅ'), + ] + +def _seg_30() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x3189, 'M', 'ᆈ'), + (0x318A, 'M', 'ᆑ'), + (0x318B, 'M', 'ᆒ'), + (0x318C, 'M', 'ᆔ'), + (0x318D, 'M', 'ᆞ'), + (0x318E, 'M', 'ᆡ'), + (0x318F, 'X'), + (0x3190, 'V'), + (0x3192, 'M', '一'), + (0x3193, 'M', '二'), + (0x3194, 'M', '三'), + (0x3195, 'M', '四'), + (0x3196, 'M', '上'), + (0x3197, 'M', '中'), + (0x3198, 'M', '下'), + (0x3199, 'M', '甲'), + (0x319A, 'M', '乙'), + (0x319B, 'M', '丙'), + (0x319C, 'M', '丁'), + (0x319D, 'M', '天'), + (0x319E, 'M', '地'), + (0x319F, 'M', '人'), + (0x31A0, 'V'), + (0x31E4, 'X'), + (0x31F0, 'V'), + (0x3200, '3', '(ᄀ)'), + (0x3201, '3', '(ᄂ)'), + (0x3202, '3', '(ᄃ)'), + (0x3203, '3', '(ᄅ)'), + (0x3204, '3', '(ᄆ)'), + (0x3205, '3', '(ᄇ)'), + (0x3206, '3', '(ᄉ)'), + (0x3207, '3', '(ᄋ)'), + (0x3208, '3', '(ᄌ)'), + (0x3209, '3', '(ᄎ)'), + (0x320A, '3', '(ᄏ)'), + (0x320B, '3', '(ᄐ)'), + (0x320C, '3', '(ᄑ)'), + (0x320D, '3', '(ᄒ)'), + (0x320E, '3', '(가)'), + (0x320F, '3', '(나)'), + (0x3210, '3', '(다)'), + (0x3211, '3', '(라)'), + (0x3212, '3', '(마)'), + (0x3213, '3', '(바)'), + (0x3214, '3', '(사)'), + (0x3215, '3', '(아)'), + (0x3216, '3', '(자)'), + (0x3217, '3', '(차)'), + (0x3218, '3', '(카)'), + (0x3219, '3', '(타)'), + (0x321A, '3', '(파)'), + (0x321B, '3', '(하)'), + (0x321C, '3', '(주)'), + (0x321D, '3', '(오전)'), + (0x321E, '3', '(오후)'), + (0x321F, 'X'), + (0x3220, '3', '(一)'), + (0x3221, '3', '(二)'), + (0x3222, '3', '(三)'), + (0x3223, '3', '(四)'), + (0x3224, '3', '(五)'), + (0x3225, '3', '(六)'), + (0x3226, '3', '(七)'), + (0x3227, '3', '(八)'), + (0x3228, '3', '(九)'), + (0x3229, '3', '(十)'), + (0x322A, '3', '(月)'), + (0x322B, '3', '(火)'), + (0x322C, '3', '(水)'), + (0x322D, '3', '(木)'), + (0x322E, '3', '(金)'), + (0x322F, '3', '(土)'), + (0x3230, '3', '(日)'), + (0x3231, '3', '(株)'), + (0x3232, '3', '(有)'), + (0x3233, '3', '(社)'), + (0x3234, '3', '(名)'), + (0x3235, '3', '(特)'), + (0x3236, '3', '(財)'), + (0x3237, '3', '(祝)'), + (0x3238, '3', '(労)'), + (0x3239, '3', '(代)'), + (0x323A, '3', '(呼)'), + (0x323B, '3', '(学)'), + (0x323C, '3', '(監)'), + (0x323D, '3', '(企)'), + (0x323E, '3', '(資)'), + (0x323F, '3', '(協)'), + (0x3240, '3', '(祭)'), + (0x3241, '3', '(休)'), + (0x3242, '3', '(自)'), + (0x3243, '3', '(至)'), + (0x3244, 'M', '問'), + (0x3245, 'M', '幼'), + (0x3246, 'M', '文'), + (0x3247, 'M', '箏'), + (0x3248, 'V'), + (0x3250, 'M', 'pte'), + (0x3251, 'M', '21'), + ] + +def _seg_31() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x3252, 'M', '22'), + (0x3253, 'M', '23'), + (0x3254, 'M', '24'), + (0x3255, 'M', '25'), + (0x3256, 'M', '26'), + (0x3257, 'M', '27'), + (0x3258, 'M', '28'), + (0x3259, 'M', '29'), + (0x325A, 'M', '30'), + (0x325B, 'M', '31'), + (0x325C, 'M', '32'), + (0x325D, 'M', '33'), + (0x325E, 'M', '34'), + (0x325F, 'M', '35'), + (0x3260, 'M', 'ᄀ'), + (0x3261, 'M', 'ᄂ'), + (0x3262, 'M', 'ᄃ'), + (0x3263, 'M', 'ᄅ'), + (0x3264, 'M', 'ᄆ'), + (0x3265, 'M', 'ᄇ'), + (0x3266, 'M', 'ᄉ'), + (0x3267, 'M', 'ᄋ'), + (0x3268, 'M', 'ᄌ'), + (0x3269, 'M', 'ᄎ'), + (0x326A, 'M', 'ᄏ'), + (0x326B, 'M', 'ᄐ'), + (0x326C, 'M', 'ᄑ'), + (0x326D, 'M', 'ᄒ'), + (0x326E, 'M', '가'), + (0x326F, 'M', '나'), + (0x3270, 'M', '다'), + (0x3271, 'M', '라'), + (0x3272, 'M', '마'), + (0x3273, 'M', '바'), + (0x3274, 'M', '사'), + (0x3275, 'M', '아'), + (0x3276, 'M', '자'), + (0x3277, 'M', '차'), + (0x3278, 'M', '카'), + (0x3279, 'M', '타'), + (0x327A, 'M', '파'), + (0x327B, 'M', '하'), + (0x327C, 'M', '참고'), + (0x327D, 'M', '주의'), + (0x327E, 'M', '우'), + (0x327F, 'V'), + (0x3280, 'M', '一'), + (0x3281, 'M', '二'), + (0x3282, 'M', '三'), + (0x3283, 'M', '四'), + (0x3284, 'M', '五'), + (0x3285, 'M', '六'), + (0x3286, 'M', '七'), + (0x3287, 'M', '八'), + (0x3288, 'M', '九'), + (0x3289, 'M', '十'), + (0x328A, 'M', '月'), + (0x328B, 'M', '火'), + (0x328C, 'M', '水'), + (0x328D, 'M', '木'), + (0x328E, 'M', '金'), + (0x328F, 'M', '土'), + (0x3290, 'M', '日'), + (0x3291, 'M', '株'), + (0x3292, 'M', '有'), + (0x3293, 'M', '社'), + (0x3294, 'M', '名'), + (0x3295, 'M', '特'), + (0x3296, 'M', '財'), + (0x3297, 'M', '祝'), + (0x3298, 'M', '労'), + (0x3299, 'M', '秘'), + (0x329A, 'M', '男'), + (0x329B, 'M', '女'), + (0x329C, 'M', '適'), + (0x329D, 'M', '優'), + (0x329E, 'M', '印'), + (0x329F, 'M', '注'), + (0x32A0, 'M', '項'), + (0x32A1, 'M', '休'), + (0x32A2, 'M', '写'), + (0x32A3, 'M', '正'), + (0x32A4, 'M', '上'), + (0x32A5, 'M', '中'), + (0x32A6, 'M', '下'), + (0x32A7, 'M', '左'), + (0x32A8, 'M', '右'), + (0x32A9, 'M', '医'), + (0x32AA, 'M', '宗'), + (0x32AB, 'M', '学'), + (0x32AC, 'M', '監'), + (0x32AD, 'M', '企'), + (0x32AE, 'M', '資'), + (0x32AF, 'M', '協'), + (0x32B0, 'M', '夜'), + (0x32B1, 'M', '36'), + (0x32B2, 'M', '37'), + (0x32B3, 'M', '38'), + (0x32B4, 'M', '39'), + (0x32B5, 'M', '40'), + ] + +def _seg_32() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x32B6, 'M', '41'), + (0x32B7, 'M', '42'), + (0x32B8, 'M', '43'), + (0x32B9, 'M', '44'), + (0x32BA, 'M', '45'), + (0x32BB, 'M', '46'), + (0x32BC, 'M', '47'), + (0x32BD, 'M', '48'), + (0x32BE, 'M', '49'), + (0x32BF, 'M', '50'), + (0x32C0, 'M', '1月'), + (0x32C1, 'M', '2月'), + (0x32C2, 'M', '3月'), + (0x32C3, 'M', '4月'), + (0x32C4, 'M', '5月'), + (0x32C5, 'M', '6月'), + (0x32C6, 'M', '7月'), + (0x32C7, 'M', '8月'), + (0x32C8, 'M', '9月'), + (0x32C9, 'M', '10月'), + (0x32CA, 'M', '11月'), + (0x32CB, 'M', '12月'), + (0x32CC, 'M', 'hg'), + (0x32CD, 'M', 'erg'), + (0x32CE, 'M', 'ev'), + (0x32CF, 'M', 'ltd'), + (0x32D0, 'M', 'ア'), + (0x32D1, 'M', 'イ'), + (0x32D2, 'M', 'ウ'), + (0x32D3, 'M', 'エ'), + (0x32D4, 'M', 'オ'), + (0x32D5, 'M', 'カ'), + (0x32D6, 'M', 'キ'), + (0x32D7, 'M', 'ク'), + (0x32D8, 'M', 'ケ'), + (0x32D9, 'M', 'コ'), + (0x32DA, 'M', 'サ'), + (0x32DB, 'M', 'シ'), + (0x32DC, 'M', 'ス'), + (0x32DD, 'M', 'セ'), + (0x32DE, 'M', 'ソ'), + (0x32DF, 'M', 'タ'), + (0x32E0, 'M', 'チ'), + (0x32E1, 'M', 'ツ'), + (0x32E2, 'M', 'テ'), + (0x32E3, 'M', 'ト'), + (0x32E4, 'M', 'ナ'), + (0x32E5, 'M', 'ニ'), + (0x32E6, 'M', 'ヌ'), + (0x32E7, 'M', 'ネ'), + (0x32E8, 'M', 'ノ'), + (0x32E9, 'M', 'ハ'), + (0x32EA, 'M', 'ヒ'), + (0x32EB, 'M', 'フ'), + (0x32EC, 'M', 'ヘ'), + (0x32ED, 'M', 'ホ'), + (0x32EE, 'M', 'マ'), + (0x32EF, 'M', 'ミ'), + (0x32F0, 'M', 'ム'), + (0x32F1, 'M', 'メ'), + (0x32F2, 'M', 'モ'), + (0x32F3, 'M', 'ヤ'), + (0x32F4, 'M', 'ユ'), + (0x32F5, 'M', 'ヨ'), + (0x32F6, 'M', 'ラ'), + (0x32F7, 'M', 'リ'), + (0x32F8, 'M', 'ル'), + (0x32F9, 'M', 'レ'), + (0x32FA, 'M', 'ロ'), + (0x32FB, 'M', 'ワ'), + (0x32FC, 'M', 'ヰ'), + (0x32FD, 'M', 'ヱ'), + (0x32FE, 'M', 'ヲ'), + (0x32FF, 'M', '令和'), + (0x3300, 'M', 'アパート'), + (0x3301, 'M', 'アルファ'), + (0x3302, 'M', 'アンペア'), + (0x3303, 'M', 'アール'), + (0x3304, 'M', 'イニング'), + (0x3305, 'M', 'インチ'), + (0x3306, 'M', 'ウォン'), + (0x3307, 'M', 'エスクード'), + (0x3308, 'M', 'エーカー'), + (0x3309, 'M', 'オンス'), + (0x330A, 'M', 'オーム'), + (0x330B, 'M', 'カイリ'), + (0x330C, 'M', 'カラット'), + (0x330D, 'M', 'カロリー'), + (0x330E, 'M', 'ガロン'), + (0x330F, 'M', 'ガンマ'), + (0x3310, 'M', 'ギガ'), + (0x3311, 'M', 'ギニー'), + (0x3312, 'M', 'キュリー'), + (0x3313, 'M', 'ギルダー'), + (0x3314, 'M', 'キロ'), + (0x3315, 'M', 'キログラム'), + (0x3316, 'M', 'キロメートル'), + (0x3317, 'M', 'キロワット'), + (0x3318, 'M', 'グラム'), + (0x3319, 'M', 'グラムトン'), + ] + +def _seg_33() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x331A, 'M', 'クルゼイロ'), + (0x331B, 'M', 'クローネ'), + (0x331C, 'M', 'ケース'), + (0x331D, 'M', 'コルナ'), + (0x331E, 'M', 'コーポ'), + (0x331F, 'M', 'サイクル'), + (0x3320, 'M', 'サンチーム'), + (0x3321, 'M', 'シリング'), + (0x3322, 'M', 'センチ'), + (0x3323, 'M', 'セント'), + (0x3324, 'M', 'ダース'), + (0x3325, 'M', 'デシ'), + (0x3326, 'M', 'ドル'), + (0x3327, 'M', 'トン'), + (0x3328, 'M', 'ナノ'), + (0x3329, 'M', 'ノット'), + (0x332A, 'M', 'ハイツ'), + (0x332B, 'M', 'パーセント'), + (0x332C, 'M', 'パーツ'), + (0x332D, 'M', 'バーレル'), + (0x332E, 'M', 'ピアストル'), + (0x332F, 'M', 'ピクル'), + (0x3330, 'M', 'ピコ'), + (0x3331, 'M', 'ビル'), + (0x3332, 'M', 'ファラッド'), + (0x3333, 'M', 'フィート'), + (0x3334, 'M', 'ブッシェル'), + (0x3335, 'M', 'フラン'), + (0x3336, 'M', 'ヘクタール'), + (0x3337, 'M', 'ペソ'), + (0x3338, 'M', 'ペニヒ'), + (0x3339, 'M', 'ヘルツ'), + (0x333A, 'M', 'ペンス'), + (0x333B, 'M', 'ページ'), + (0x333C, 'M', 'ベータ'), + (0x333D, 'M', 'ポイント'), + (0x333E, 'M', 'ボルト'), + (0x333F, 'M', 'ホン'), + (0x3340, 'M', 'ポンド'), + (0x3341, 'M', 'ホール'), + (0x3342, 'M', 'ホーン'), + (0x3343, 'M', 'マイクロ'), + (0x3344, 'M', 'マイル'), + (0x3345, 'M', 'マッハ'), + (0x3346, 'M', 'マルク'), + (0x3347, 'M', 'マンション'), + (0x3348, 'M', 'ミクロン'), + (0x3349, 'M', 'ミリ'), + (0x334A, 'M', 'ミリバール'), + (0x334B, 'M', 'メガ'), + (0x334C, 'M', 'メガトン'), + (0x334D, 'M', 'メートル'), + (0x334E, 'M', 'ヤード'), + (0x334F, 'M', 'ヤール'), + (0x3350, 'M', 'ユアン'), + (0x3351, 'M', 'リットル'), + (0x3352, 'M', 'リラ'), + (0x3353, 'M', 'ルピー'), + (0x3354, 'M', 'ルーブル'), + (0x3355, 'M', 'レム'), + (0x3356, 'M', 'レントゲン'), + (0x3357, 'M', 'ワット'), + (0x3358, 'M', '0点'), + (0x3359, 'M', '1点'), + (0x335A, 'M', '2点'), + (0x335B, 'M', '3点'), + (0x335C, 'M', '4点'), + (0x335D, 'M', '5点'), + (0x335E, 'M', '6点'), + (0x335F, 'M', '7点'), + (0x3360, 'M', '8点'), + (0x3361, 'M', '9点'), + (0x3362, 'M', '10点'), + (0x3363, 'M', '11点'), + (0x3364, 'M', '12点'), + (0x3365, 'M', '13点'), + (0x3366, 'M', '14点'), + (0x3367, 'M', '15点'), + (0x3368, 'M', '16点'), + (0x3369, 'M', '17点'), + (0x336A, 'M', '18点'), + (0x336B, 'M', '19点'), + (0x336C, 'M', '20点'), + (0x336D, 'M', '21点'), + (0x336E, 'M', '22点'), + (0x336F, 'M', '23点'), + (0x3370, 'M', '24点'), + (0x3371, 'M', 'hpa'), + (0x3372, 'M', 'da'), + (0x3373, 'M', 'au'), + (0x3374, 'M', 'bar'), + (0x3375, 'M', 'ov'), + (0x3376, 'M', 'pc'), + (0x3377, 'M', 'dm'), + (0x3378, 'M', 'dm2'), + (0x3379, 'M', 'dm3'), + (0x337A, 'M', 'iu'), + (0x337B, 'M', '平成'), + (0x337C, 'M', '昭和'), + (0x337D, 'M', '大正'), + ] + +def _seg_34() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x337E, 'M', '明治'), + (0x337F, 'M', '株式会社'), + (0x3380, 'M', 'pa'), + (0x3381, 'M', 'na'), + (0x3382, 'M', 'μa'), + (0x3383, 'M', 'ma'), + (0x3384, 'M', 'ka'), + (0x3385, 'M', 'kb'), + (0x3386, 'M', 'mb'), + (0x3387, 'M', 'gb'), + (0x3388, 'M', 'cal'), + (0x3389, 'M', 'kcal'), + (0x338A, 'M', 'pf'), + (0x338B, 'M', 'nf'), + (0x338C, 'M', 'μf'), + (0x338D, 'M', 'μg'), + (0x338E, 'M', 'mg'), + (0x338F, 'M', 'kg'), + (0x3390, 'M', 'hz'), + (0x3391, 'M', 'khz'), + (0x3392, 'M', 'mhz'), + (0x3393, 'M', 'ghz'), + (0x3394, 'M', 'thz'), + (0x3395, 'M', 'μl'), + (0x3396, 'M', 'ml'), + (0x3397, 'M', 'dl'), + (0x3398, 'M', 'kl'), + (0x3399, 'M', 'fm'), + (0x339A, 'M', 'nm'), + (0x339B, 'M', 'μm'), + (0x339C, 'M', 'mm'), + (0x339D, 'M', 'cm'), + (0x339E, 'M', 'km'), + (0x339F, 'M', 'mm2'), + (0x33A0, 'M', 'cm2'), + (0x33A1, 'M', 'm2'), + (0x33A2, 'M', 'km2'), + (0x33A3, 'M', 'mm3'), + (0x33A4, 'M', 'cm3'), + (0x33A5, 'M', 'm3'), + (0x33A6, 'M', 'km3'), + (0x33A7, 'M', 'm∕s'), + (0x33A8, 'M', 'm∕s2'), + (0x33A9, 'M', 'pa'), + (0x33AA, 'M', 'kpa'), + (0x33AB, 'M', 'mpa'), + (0x33AC, 'M', 'gpa'), + (0x33AD, 'M', 'rad'), + (0x33AE, 'M', 'rad∕s'), + (0x33AF, 'M', 'rad∕s2'), + (0x33B0, 'M', 'ps'), + (0x33B1, 'M', 'ns'), + (0x33B2, 'M', 'μs'), + (0x33B3, 'M', 'ms'), + (0x33B4, 'M', 'pv'), + (0x33B5, 'M', 'nv'), + (0x33B6, 'M', 'μv'), + (0x33B7, 'M', 'mv'), + (0x33B8, 'M', 'kv'), + (0x33B9, 'M', 'mv'), + (0x33BA, 'M', 'pw'), + (0x33BB, 'M', 'nw'), + (0x33BC, 'M', 'μw'), + (0x33BD, 'M', 'mw'), + (0x33BE, 'M', 'kw'), + (0x33BF, 'M', 'mw'), + (0x33C0, 'M', 'kω'), + (0x33C1, 'M', 'mω'), + (0x33C2, 'X'), + (0x33C3, 'M', 'bq'), + (0x33C4, 'M', 'cc'), + (0x33C5, 'M', 'cd'), + (0x33C6, 'M', 'c∕kg'), + (0x33C7, 'X'), + (0x33C8, 'M', 'db'), + (0x33C9, 'M', 'gy'), + (0x33CA, 'M', 'ha'), + (0x33CB, 'M', 'hp'), + (0x33CC, 'M', 'in'), + (0x33CD, 'M', 'kk'), + (0x33CE, 'M', 'km'), + (0x33CF, 'M', 'kt'), + (0x33D0, 'M', 'lm'), + (0x33D1, 'M', 'ln'), + (0x33D2, 'M', 'log'), + (0x33D3, 'M', 'lx'), + (0x33D4, 'M', 'mb'), + (0x33D5, 'M', 'mil'), + (0x33D6, 'M', 'mol'), + (0x33D7, 'M', 'ph'), + (0x33D8, 'X'), + (0x33D9, 'M', 'ppm'), + (0x33DA, 'M', 'pr'), + (0x33DB, 'M', 'sr'), + (0x33DC, 'M', 'sv'), + (0x33DD, 'M', 'wb'), + (0x33DE, 'M', 'v∕m'), + (0x33DF, 'M', 'a∕m'), + (0x33E0, 'M', '1日'), + (0x33E1, 'M', '2日'), + ] + +def _seg_35() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x33E2, 'M', '3日'), + (0x33E3, 'M', '4日'), + (0x33E4, 'M', '5日'), + (0x33E5, 'M', '6日'), + (0x33E6, 'M', '7日'), + (0x33E7, 'M', '8日'), + (0x33E8, 'M', '9日'), + (0x33E9, 'M', '10日'), + (0x33EA, 'M', '11日'), + (0x33EB, 'M', '12日'), + (0x33EC, 'M', '13日'), + (0x33ED, 'M', '14日'), + (0x33EE, 'M', '15日'), + (0x33EF, 'M', '16日'), + (0x33F0, 'M', '17日'), + (0x33F1, 'M', '18日'), + (0x33F2, 'M', '19日'), + (0x33F3, 'M', '20日'), + (0x33F4, 'M', '21日'), + (0x33F5, 'M', '22日'), + (0x33F6, 'M', '23日'), + (0x33F7, 'M', '24日'), + (0x33F8, 'M', '25日'), + (0x33F9, 'M', '26日'), + (0x33FA, 'M', '27日'), + (0x33FB, 'M', '28日'), + (0x33FC, 'M', '29日'), + (0x33FD, 'M', '30日'), + (0x33FE, 'M', '31日'), + (0x33FF, 'M', 'gal'), + (0x3400, 'V'), + (0xA48D, 'X'), + (0xA490, 'V'), + (0xA4C7, 'X'), + (0xA4D0, 'V'), + (0xA62C, 'X'), + (0xA640, 'M', 'ꙁ'), + (0xA641, 'V'), + (0xA642, 'M', 'ꙃ'), + (0xA643, 'V'), + (0xA644, 'M', 'ꙅ'), + (0xA645, 'V'), + (0xA646, 'M', 'ꙇ'), + (0xA647, 'V'), + (0xA648, 'M', 'ꙉ'), + (0xA649, 'V'), + (0xA64A, 'M', 'ꙋ'), + (0xA64B, 'V'), + (0xA64C, 'M', 'ꙍ'), + (0xA64D, 'V'), + (0xA64E, 'M', 'ꙏ'), + (0xA64F, 'V'), + (0xA650, 'M', 'ꙑ'), + (0xA651, 'V'), + (0xA652, 'M', 'ꙓ'), + (0xA653, 'V'), + (0xA654, 'M', 'ꙕ'), + (0xA655, 'V'), + (0xA656, 'M', 'ꙗ'), + (0xA657, 'V'), + (0xA658, 'M', 'ꙙ'), + (0xA659, 'V'), + (0xA65A, 'M', 'ꙛ'), + (0xA65B, 'V'), + (0xA65C, 'M', 'ꙝ'), + (0xA65D, 'V'), + (0xA65E, 'M', 'ꙟ'), + (0xA65F, 'V'), + (0xA660, 'M', 'ꙡ'), + (0xA661, 'V'), + (0xA662, 'M', 'ꙣ'), + (0xA663, 'V'), + (0xA664, 'M', 'ꙥ'), + (0xA665, 'V'), + (0xA666, 'M', 'ꙧ'), + (0xA667, 'V'), + (0xA668, 'M', 'ꙩ'), + (0xA669, 'V'), + (0xA66A, 'M', 'ꙫ'), + (0xA66B, 'V'), + (0xA66C, 'M', 'ꙭ'), + (0xA66D, 'V'), + (0xA680, 'M', 'ꚁ'), + (0xA681, 'V'), + (0xA682, 'M', 'ꚃ'), + (0xA683, 'V'), + (0xA684, 'M', 'ꚅ'), + (0xA685, 'V'), + (0xA686, 'M', 'ꚇ'), + (0xA687, 'V'), + (0xA688, 'M', 'ꚉ'), + (0xA689, 'V'), + (0xA68A, 'M', 'ꚋ'), + (0xA68B, 'V'), + (0xA68C, 'M', 'ꚍ'), + (0xA68D, 'V'), + (0xA68E, 'M', 'ꚏ'), + (0xA68F, 'V'), + (0xA690, 'M', 'ꚑ'), + (0xA691, 'V'), + ] + +def _seg_36() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA692, 'M', 'ꚓ'), + (0xA693, 'V'), + (0xA694, 'M', 'ꚕ'), + (0xA695, 'V'), + (0xA696, 'M', 'ꚗ'), + (0xA697, 'V'), + (0xA698, 'M', 'ꚙ'), + (0xA699, 'V'), + (0xA69A, 'M', 'ꚛ'), + (0xA69B, 'V'), + (0xA69C, 'M', 'ъ'), + (0xA69D, 'M', 'ь'), + (0xA69E, 'V'), + (0xA6F8, 'X'), + (0xA700, 'V'), + (0xA722, 'M', 'ꜣ'), + (0xA723, 'V'), + (0xA724, 'M', 'ꜥ'), + (0xA725, 'V'), + (0xA726, 'M', 'ꜧ'), + (0xA727, 'V'), + (0xA728, 'M', 'ꜩ'), + (0xA729, 'V'), + (0xA72A, 'M', 'ꜫ'), + (0xA72B, 'V'), + (0xA72C, 'M', 'ꜭ'), + (0xA72D, 'V'), + (0xA72E, 'M', 'ꜯ'), + (0xA72F, 'V'), + (0xA732, 'M', 'ꜳ'), + (0xA733, 'V'), + (0xA734, 'M', 'ꜵ'), + (0xA735, 'V'), + (0xA736, 'M', 'ꜷ'), + (0xA737, 'V'), + (0xA738, 'M', 'ꜹ'), + (0xA739, 'V'), + (0xA73A, 'M', 'ꜻ'), + (0xA73B, 'V'), + (0xA73C, 'M', 'ꜽ'), + (0xA73D, 'V'), + (0xA73E, 'M', 'ꜿ'), + (0xA73F, 'V'), + (0xA740, 'M', 'ꝁ'), + (0xA741, 'V'), + (0xA742, 'M', 'ꝃ'), + (0xA743, 'V'), + (0xA744, 'M', 'ꝅ'), + (0xA745, 'V'), + (0xA746, 'M', 'ꝇ'), + (0xA747, 'V'), + (0xA748, 'M', 'ꝉ'), + (0xA749, 'V'), + (0xA74A, 'M', 'ꝋ'), + (0xA74B, 'V'), + (0xA74C, 'M', 'ꝍ'), + (0xA74D, 'V'), + (0xA74E, 'M', 'ꝏ'), + (0xA74F, 'V'), + (0xA750, 'M', 'ꝑ'), + (0xA751, 'V'), + (0xA752, 'M', 'ꝓ'), + (0xA753, 'V'), + (0xA754, 'M', 'ꝕ'), + (0xA755, 'V'), + (0xA756, 'M', 'ꝗ'), + (0xA757, 'V'), + (0xA758, 'M', 'ꝙ'), + (0xA759, 'V'), + (0xA75A, 'M', 'ꝛ'), + (0xA75B, 'V'), + (0xA75C, 'M', 'ꝝ'), + (0xA75D, 'V'), + (0xA75E, 'M', 'ꝟ'), + (0xA75F, 'V'), + (0xA760, 'M', 'ꝡ'), + (0xA761, 'V'), + (0xA762, 'M', 'ꝣ'), + (0xA763, 'V'), + (0xA764, 'M', 'ꝥ'), + (0xA765, 'V'), + (0xA766, 'M', 'ꝧ'), + (0xA767, 'V'), + (0xA768, 'M', 'ꝩ'), + (0xA769, 'V'), + (0xA76A, 'M', 'ꝫ'), + (0xA76B, 'V'), + (0xA76C, 'M', 'ꝭ'), + (0xA76D, 'V'), + (0xA76E, 'M', 'ꝯ'), + (0xA76F, 'V'), + (0xA770, 'M', 'ꝯ'), + (0xA771, 'V'), + (0xA779, 'M', 'ꝺ'), + (0xA77A, 'V'), + (0xA77B, 'M', 'ꝼ'), + (0xA77C, 'V'), + (0xA77D, 'M', 'ᵹ'), + (0xA77E, 'M', 'ꝿ'), + (0xA77F, 'V'), + ] + +def _seg_37() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA780, 'M', 'ꞁ'), + (0xA781, 'V'), + (0xA782, 'M', 'ꞃ'), + (0xA783, 'V'), + (0xA784, 'M', 'ꞅ'), + (0xA785, 'V'), + (0xA786, 'M', 'ꞇ'), + (0xA787, 'V'), + (0xA78B, 'M', 'ꞌ'), + (0xA78C, 'V'), + (0xA78D, 'M', 'ɥ'), + (0xA78E, 'V'), + (0xA790, 'M', 'ꞑ'), + (0xA791, 'V'), + (0xA792, 'M', 'ꞓ'), + (0xA793, 'V'), + (0xA796, 'M', 'ꞗ'), + (0xA797, 'V'), + (0xA798, 'M', 'ꞙ'), + (0xA799, 'V'), + (0xA79A, 'M', 'ꞛ'), + (0xA79B, 'V'), + (0xA79C, 'M', 'ꞝ'), + (0xA79D, 'V'), + (0xA79E, 'M', 'ꞟ'), + (0xA79F, 'V'), + (0xA7A0, 'M', 'ꞡ'), + (0xA7A1, 'V'), + (0xA7A2, 'M', 'ꞣ'), + (0xA7A3, 'V'), + (0xA7A4, 'M', 'ꞥ'), + (0xA7A5, 'V'), + (0xA7A6, 'M', 'ꞧ'), + (0xA7A7, 'V'), + (0xA7A8, 'M', 'ꞩ'), + (0xA7A9, 'V'), + (0xA7AA, 'M', 'ɦ'), + (0xA7AB, 'M', 'ɜ'), + (0xA7AC, 'M', 'ɡ'), + (0xA7AD, 'M', 'ɬ'), + (0xA7AE, 'M', 'ɪ'), + (0xA7AF, 'V'), + (0xA7B0, 'M', 'ʞ'), + (0xA7B1, 'M', 'ʇ'), + (0xA7B2, 'M', 'ʝ'), + (0xA7B3, 'M', 'ꭓ'), + (0xA7B4, 'M', 'ꞵ'), + (0xA7B5, 'V'), + (0xA7B6, 'M', 'ꞷ'), + (0xA7B7, 'V'), + (0xA7B8, 'M', 'ꞹ'), + (0xA7B9, 'V'), + (0xA7BA, 'M', 'ꞻ'), + (0xA7BB, 'V'), + (0xA7BC, 'M', 'ꞽ'), + (0xA7BD, 'V'), + (0xA7BE, 'M', 'ꞿ'), + (0xA7BF, 'V'), + (0xA7C0, 'M', 'ꟁ'), + (0xA7C1, 'V'), + (0xA7C2, 'M', 'ꟃ'), + (0xA7C3, 'V'), + (0xA7C4, 'M', 'ꞔ'), + (0xA7C5, 'M', 'ʂ'), + (0xA7C6, 'M', 'ᶎ'), + (0xA7C7, 'M', 'ꟈ'), + (0xA7C8, 'V'), + (0xA7C9, 'M', 'ꟊ'), + (0xA7CA, 'V'), + (0xA7CB, 'X'), + (0xA7D0, 'M', 'ꟑ'), + (0xA7D1, 'V'), + (0xA7D2, 'X'), + (0xA7D3, 'V'), + (0xA7D4, 'X'), + (0xA7D5, 'V'), + (0xA7D6, 'M', 'ꟗ'), + (0xA7D7, 'V'), + (0xA7D8, 'M', 'ꟙ'), + (0xA7D9, 'V'), + (0xA7DA, 'X'), + (0xA7F2, 'M', 'c'), + (0xA7F3, 'M', 'f'), + (0xA7F4, 'M', 'q'), + (0xA7F5, 'M', 'ꟶ'), + (0xA7F6, 'V'), + (0xA7F8, 'M', 'ħ'), + (0xA7F9, 'M', 'œ'), + (0xA7FA, 'V'), + (0xA82D, 'X'), + (0xA830, 'V'), + (0xA83A, 'X'), + (0xA840, 'V'), + (0xA878, 'X'), + (0xA880, 'V'), + (0xA8C6, 'X'), + (0xA8CE, 'V'), + (0xA8DA, 'X'), + (0xA8E0, 'V'), + (0xA954, 'X'), + ] + +def _seg_38() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA95F, 'V'), + (0xA97D, 'X'), + (0xA980, 'V'), + (0xA9CE, 'X'), + (0xA9CF, 'V'), + (0xA9DA, 'X'), + (0xA9DE, 'V'), + (0xA9FF, 'X'), + (0xAA00, 'V'), + (0xAA37, 'X'), + (0xAA40, 'V'), + (0xAA4E, 'X'), + (0xAA50, 'V'), + (0xAA5A, 'X'), + (0xAA5C, 'V'), + (0xAAC3, 'X'), + (0xAADB, 'V'), + (0xAAF7, 'X'), + (0xAB01, 'V'), + (0xAB07, 'X'), + (0xAB09, 'V'), + (0xAB0F, 'X'), + (0xAB11, 'V'), + (0xAB17, 'X'), + (0xAB20, 'V'), + (0xAB27, 'X'), + (0xAB28, 'V'), + (0xAB2F, 'X'), + (0xAB30, 'V'), + (0xAB5C, 'M', 'ꜧ'), + (0xAB5D, 'M', 'ꬷ'), + (0xAB5E, 'M', 'ɫ'), + (0xAB5F, 'M', 'ꭒ'), + (0xAB60, 'V'), + (0xAB69, 'M', 'ʍ'), + (0xAB6A, 'V'), + (0xAB6C, 'X'), + (0xAB70, 'M', 'Ꭰ'), + (0xAB71, 'M', 'Ꭱ'), + (0xAB72, 'M', 'Ꭲ'), + (0xAB73, 'M', 'Ꭳ'), + (0xAB74, 'M', 'Ꭴ'), + (0xAB75, 'M', 'Ꭵ'), + (0xAB76, 'M', 'Ꭶ'), + (0xAB77, 'M', 'Ꭷ'), + (0xAB78, 'M', 'Ꭸ'), + (0xAB79, 'M', 'Ꭹ'), + (0xAB7A, 'M', 'Ꭺ'), + (0xAB7B, 'M', 'Ꭻ'), + (0xAB7C, 'M', 'Ꭼ'), + (0xAB7D, 'M', 'Ꭽ'), + (0xAB7E, 'M', 'Ꭾ'), + (0xAB7F, 'M', 'Ꭿ'), + (0xAB80, 'M', 'Ꮀ'), + (0xAB81, 'M', 'Ꮁ'), + (0xAB82, 'M', 'Ꮂ'), + (0xAB83, 'M', 'Ꮃ'), + (0xAB84, 'M', 'Ꮄ'), + (0xAB85, 'M', 'Ꮅ'), + (0xAB86, 'M', 'Ꮆ'), + (0xAB87, 'M', 'Ꮇ'), + (0xAB88, 'M', 'Ꮈ'), + (0xAB89, 'M', 'Ꮉ'), + (0xAB8A, 'M', 'Ꮊ'), + (0xAB8B, 'M', 'Ꮋ'), + (0xAB8C, 'M', 'Ꮌ'), + (0xAB8D, 'M', 'Ꮍ'), + (0xAB8E, 'M', 'Ꮎ'), + (0xAB8F, 'M', 'Ꮏ'), + (0xAB90, 'M', 'Ꮐ'), + (0xAB91, 'M', 'Ꮑ'), + (0xAB92, 'M', 'Ꮒ'), + (0xAB93, 'M', 'Ꮓ'), + (0xAB94, 'M', 'Ꮔ'), + (0xAB95, 'M', 'Ꮕ'), + (0xAB96, 'M', 'Ꮖ'), + (0xAB97, 'M', 'Ꮗ'), + (0xAB98, 'M', 'Ꮘ'), + (0xAB99, 'M', 'Ꮙ'), + (0xAB9A, 'M', 'Ꮚ'), + (0xAB9B, 'M', 'Ꮛ'), + (0xAB9C, 'M', 'Ꮜ'), + (0xAB9D, 'M', 'Ꮝ'), + (0xAB9E, 'M', 'Ꮞ'), + (0xAB9F, 'M', 'Ꮟ'), + (0xABA0, 'M', 'Ꮠ'), + (0xABA1, 'M', 'Ꮡ'), + (0xABA2, 'M', 'Ꮢ'), + (0xABA3, 'M', 'Ꮣ'), + (0xABA4, 'M', 'Ꮤ'), + (0xABA5, 'M', 'Ꮥ'), + (0xABA6, 'M', 'Ꮦ'), + (0xABA7, 'M', 'Ꮧ'), + (0xABA8, 'M', 'Ꮨ'), + (0xABA9, 'M', 'Ꮩ'), + (0xABAA, 'M', 'Ꮪ'), + (0xABAB, 'M', 'Ꮫ'), + (0xABAC, 'M', 'Ꮬ'), + (0xABAD, 'M', 'Ꮭ'), + (0xABAE, 'M', 'Ꮮ'), + ] + +def _seg_39() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xABAF, 'M', 'Ꮯ'), + (0xABB0, 'M', 'Ꮰ'), + (0xABB1, 'M', 'Ꮱ'), + (0xABB2, 'M', 'Ꮲ'), + (0xABB3, 'M', 'Ꮳ'), + (0xABB4, 'M', 'Ꮴ'), + (0xABB5, 'M', 'Ꮵ'), + (0xABB6, 'M', 'Ꮶ'), + (0xABB7, 'M', 'Ꮷ'), + (0xABB8, 'M', 'Ꮸ'), + (0xABB9, 'M', 'Ꮹ'), + (0xABBA, 'M', 'Ꮺ'), + (0xABBB, 'M', 'Ꮻ'), + (0xABBC, 'M', 'Ꮼ'), + (0xABBD, 'M', 'Ꮽ'), + (0xABBE, 'M', 'Ꮾ'), + (0xABBF, 'M', 'Ꮿ'), + (0xABC0, 'V'), + (0xABEE, 'X'), + (0xABF0, 'V'), + (0xABFA, 'X'), + (0xAC00, 'V'), + (0xD7A4, 'X'), + (0xD7B0, 'V'), + (0xD7C7, 'X'), + (0xD7CB, 'V'), + (0xD7FC, 'X'), + (0xF900, 'M', '豈'), + (0xF901, 'M', '更'), + (0xF902, 'M', '車'), + (0xF903, 'M', '賈'), + (0xF904, 'M', '滑'), + (0xF905, 'M', '串'), + (0xF906, 'M', '句'), + (0xF907, 'M', '龜'), + (0xF909, 'M', '契'), + (0xF90A, 'M', '金'), + (0xF90B, 'M', '喇'), + (0xF90C, 'M', '奈'), + (0xF90D, 'M', '懶'), + (0xF90E, 'M', '癩'), + (0xF90F, 'M', '羅'), + (0xF910, 'M', '蘿'), + (0xF911, 'M', '螺'), + (0xF912, 'M', '裸'), + (0xF913, 'M', '邏'), + (0xF914, 'M', '樂'), + (0xF915, 'M', '洛'), + (0xF916, 'M', '烙'), + (0xF917, 'M', '珞'), + (0xF918, 'M', '落'), + (0xF919, 'M', '酪'), + (0xF91A, 'M', '駱'), + (0xF91B, 'M', '亂'), + (0xF91C, 'M', '卵'), + (0xF91D, 'M', '欄'), + (0xF91E, 'M', '爛'), + (0xF91F, 'M', '蘭'), + (0xF920, 'M', '鸞'), + (0xF921, 'M', '嵐'), + (0xF922, 'M', '濫'), + (0xF923, 'M', '藍'), + (0xF924, 'M', '襤'), + (0xF925, 'M', '拉'), + (0xF926, 'M', '臘'), + (0xF927, 'M', '蠟'), + (0xF928, 'M', '廊'), + (0xF929, 'M', '朗'), + (0xF92A, 'M', '浪'), + (0xF92B, 'M', '狼'), + (0xF92C, 'M', '郎'), + (0xF92D, 'M', '來'), + (0xF92E, 'M', '冷'), + (0xF92F, 'M', '勞'), + (0xF930, 'M', '擄'), + (0xF931, 'M', '櫓'), + (0xF932, 'M', '爐'), + (0xF933, 'M', '盧'), + (0xF934, 'M', '老'), + (0xF935, 'M', '蘆'), + (0xF936, 'M', '虜'), + (0xF937, 'M', '路'), + (0xF938, 'M', '露'), + (0xF939, 'M', '魯'), + (0xF93A, 'M', '鷺'), + (0xF93B, 'M', '碌'), + (0xF93C, 'M', '祿'), + (0xF93D, 'M', '綠'), + (0xF93E, 'M', '菉'), + (0xF93F, 'M', '錄'), + (0xF940, 'M', '鹿'), + (0xF941, 'M', '論'), + (0xF942, 'M', '壟'), + (0xF943, 'M', '弄'), + (0xF944, 'M', '籠'), + (0xF945, 'M', '聾'), + (0xF946, 'M', '牢'), + (0xF947, 'M', '磊'), + (0xF948, 'M', '賂'), + (0xF949, 'M', '雷'), + ] + +def _seg_40() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xF94A, 'M', '壘'), + (0xF94B, 'M', '屢'), + (0xF94C, 'M', '樓'), + (0xF94D, 'M', '淚'), + (0xF94E, 'M', '漏'), + (0xF94F, 'M', '累'), + (0xF950, 'M', '縷'), + (0xF951, 'M', '陋'), + (0xF952, 'M', '勒'), + (0xF953, 'M', '肋'), + (0xF954, 'M', '凜'), + (0xF955, 'M', '凌'), + (0xF956, 'M', '稜'), + (0xF957, 'M', '綾'), + (0xF958, 'M', '菱'), + (0xF959, 'M', '陵'), + (0xF95A, 'M', '讀'), + (0xF95B, 'M', '拏'), + (0xF95C, 'M', '樂'), + (0xF95D, 'M', '諾'), + (0xF95E, 'M', '丹'), + (0xF95F, 'M', '寧'), + (0xF960, 'M', '怒'), + (0xF961, 'M', '率'), + (0xF962, 'M', '異'), + (0xF963, 'M', '北'), + (0xF964, 'M', '磻'), + (0xF965, 'M', '便'), + (0xF966, 'M', '復'), + (0xF967, 'M', '不'), + (0xF968, 'M', '泌'), + (0xF969, 'M', '數'), + (0xF96A, 'M', '索'), + (0xF96B, 'M', '參'), + (0xF96C, 'M', '塞'), + (0xF96D, 'M', '省'), + (0xF96E, 'M', '葉'), + (0xF96F, 'M', '說'), + (0xF970, 'M', '殺'), + (0xF971, 'M', '辰'), + (0xF972, 'M', '沈'), + (0xF973, 'M', '拾'), + (0xF974, 'M', '若'), + (0xF975, 'M', '掠'), + (0xF976, 'M', '略'), + (0xF977, 'M', '亮'), + (0xF978, 'M', '兩'), + (0xF979, 'M', '凉'), + (0xF97A, 'M', '梁'), + (0xF97B, 'M', '糧'), + (0xF97C, 'M', '良'), + (0xF97D, 'M', '諒'), + (0xF97E, 'M', '量'), + (0xF97F, 'M', '勵'), + (0xF980, 'M', '呂'), + (0xF981, 'M', '女'), + (0xF982, 'M', '廬'), + (0xF983, 'M', '旅'), + (0xF984, 'M', '濾'), + (0xF985, 'M', '礪'), + (0xF986, 'M', '閭'), + (0xF987, 'M', '驪'), + (0xF988, 'M', '麗'), + (0xF989, 'M', '黎'), + (0xF98A, 'M', '力'), + (0xF98B, 'M', '曆'), + (0xF98C, 'M', '歷'), + (0xF98D, 'M', '轢'), + (0xF98E, 'M', '年'), + (0xF98F, 'M', '憐'), + (0xF990, 'M', '戀'), + (0xF991, 'M', '撚'), + (0xF992, 'M', '漣'), + (0xF993, 'M', '煉'), + (0xF994, 'M', '璉'), + (0xF995, 'M', '秊'), + (0xF996, 'M', '練'), + (0xF997, 'M', '聯'), + (0xF998, 'M', '輦'), + (0xF999, 'M', '蓮'), + (0xF99A, 'M', '連'), + (0xF99B, 'M', '鍊'), + (0xF99C, 'M', '列'), + (0xF99D, 'M', '劣'), + (0xF99E, 'M', '咽'), + (0xF99F, 'M', '烈'), + (0xF9A0, 'M', '裂'), + (0xF9A1, 'M', '說'), + (0xF9A2, 'M', '廉'), + (0xF9A3, 'M', '念'), + (0xF9A4, 'M', '捻'), + (0xF9A5, 'M', '殮'), + (0xF9A6, 'M', '簾'), + (0xF9A7, 'M', '獵'), + (0xF9A8, 'M', '令'), + (0xF9A9, 'M', '囹'), + (0xF9AA, 'M', '寧'), + (0xF9AB, 'M', '嶺'), + (0xF9AC, 'M', '怜'), + (0xF9AD, 'M', '玲'), + ] + +def _seg_41() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xF9AE, 'M', '瑩'), + (0xF9AF, 'M', '羚'), + (0xF9B0, 'M', '聆'), + (0xF9B1, 'M', '鈴'), + (0xF9B2, 'M', '零'), + (0xF9B3, 'M', '靈'), + (0xF9B4, 'M', '領'), + (0xF9B5, 'M', '例'), + (0xF9B6, 'M', '禮'), + (0xF9B7, 'M', '醴'), + (0xF9B8, 'M', '隸'), + (0xF9B9, 'M', '惡'), + (0xF9BA, 'M', '了'), + (0xF9BB, 'M', '僚'), + (0xF9BC, 'M', '寮'), + (0xF9BD, 'M', '尿'), + (0xF9BE, 'M', '料'), + (0xF9BF, 'M', '樂'), + (0xF9C0, 'M', '燎'), + (0xF9C1, 'M', '療'), + (0xF9C2, 'M', '蓼'), + (0xF9C3, 'M', '遼'), + (0xF9C4, 'M', '龍'), + (0xF9C5, 'M', '暈'), + (0xF9C6, 'M', '阮'), + (0xF9C7, 'M', '劉'), + (0xF9C8, 'M', '杻'), + (0xF9C9, 'M', '柳'), + (0xF9CA, 'M', '流'), + (0xF9CB, 'M', '溜'), + (0xF9CC, 'M', '琉'), + (0xF9CD, 'M', '留'), + (0xF9CE, 'M', '硫'), + (0xF9CF, 'M', '紐'), + (0xF9D0, 'M', '類'), + (0xF9D1, 'M', '六'), + (0xF9D2, 'M', '戮'), + (0xF9D3, 'M', '陸'), + (0xF9D4, 'M', '倫'), + (0xF9D5, 'M', '崙'), + (0xF9D6, 'M', '淪'), + (0xF9D7, 'M', '輪'), + (0xF9D8, 'M', '律'), + (0xF9D9, 'M', '慄'), + (0xF9DA, 'M', '栗'), + (0xF9DB, 'M', '率'), + (0xF9DC, 'M', '隆'), + (0xF9DD, 'M', '利'), + (0xF9DE, 'M', '吏'), + (0xF9DF, 'M', '履'), + (0xF9E0, 'M', '易'), + (0xF9E1, 'M', '李'), + (0xF9E2, 'M', '梨'), + (0xF9E3, 'M', '泥'), + (0xF9E4, 'M', '理'), + (0xF9E5, 'M', '痢'), + (0xF9E6, 'M', '罹'), + (0xF9E7, 'M', '裏'), + (0xF9E8, 'M', '裡'), + (0xF9E9, 'M', '里'), + (0xF9EA, 'M', '離'), + (0xF9EB, 'M', '匿'), + (0xF9EC, 'M', '溺'), + (0xF9ED, 'M', '吝'), + (0xF9EE, 'M', '燐'), + (0xF9EF, 'M', '璘'), + (0xF9F0, 'M', '藺'), + (0xF9F1, 'M', '隣'), + (0xF9F2, 'M', '鱗'), + (0xF9F3, 'M', '麟'), + (0xF9F4, 'M', '林'), + (0xF9F5, 'M', '淋'), + (0xF9F6, 'M', '臨'), + (0xF9F7, 'M', '立'), + (0xF9F8, 'M', '笠'), + (0xF9F9, 'M', '粒'), + (0xF9FA, 'M', '狀'), + (0xF9FB, 'M', '炙'), + (0xF9FC, 'M', '識'), + (0xF9FD, 'M', '什'), + (0xF9FE, 'M', '茶'), + (0xF9FF, 'M', '刺'), + (0xFA00, 'M', '切'), + (0xFA01, 'M', '度'), + (0xFA02, 'M', '拓'), + (0xFA03, 'M', '糖'), + (0xFA04, 'M', '宅'), + (0xFA05, 'M', '洞'), + (0xFA06, 'M', '暴'), + (0xFA07, 'M', '輻'), + (0xFA08, 'M', '行'), + (0xFA09, 'M', '降'), + (0xFA0A, 'M', '見'), + (0xFA0B, 'M', '廓'), + (0xFA0C, 'M', '兀'), + (0xFA0D, 'M', '嗀'), + (0xFA0E, 'V'), + (0xFA10, 'M', '塚'), + (0xFA11, 'V'), + (0xFA12, 'M', '晴'), + ] + +def _seg_42() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFA13, 'V'), + (0xFA15, 'M', '凞'), + (0xFA16, 'M', '猪'), + (0xFA17, 'M', '益'), + (0xFA18, 'M', '礼'), + (0xFA19, 'M', '神'), + (0xFA1A, 'M', '祥'), + (0xFA1B, 'M', '福'), + (0xFA1C, 'M', '靖'), + (0xFA1D, 'M', '精'), + (0xFA1E, 'M', '羽'), + (0xFA1F, 'V'), + (0xFA20, 'M', '蘒'), + (0xFA21, 'V'), + (0xFA22, 'M', '諸'), + (0xFA23, 'V'), + (0xFA25, 'M', '逸'), + (0xFA26, 'M', '都'), + (0xFA27, 'V'), + (0xFA2A, 'M', '飯'), + (0xFA2B, 'M', '飼'), + (0xFA2C, 'M', '館'), + (0xFA2D, 'M', '鶴'), + (0xFA2E, 'M', '郞'), + (0xFA2F, 'M', '隷'), + (0xFA30, 'M', '侮'), + (0xFA31, 'M', '僧'), + (0xFA32, 'M', '免'), + (0xFA33, 'M', '勉'), + (0xFA34, 'M', '勤'), + (0xFA35, 'M', '卑'), + (0xFA36, 'M', '喝'), + (0xFA37, 'M', '嘆'), + (0xFA38, 'M', '器'), + (0xFA39, 'M', '塀'), + (0xFA3A, 'M', '墨'), + (0xFA3B, 'M', '層'), + (0xFA3C, 'M', '屮'), + (0xFA3D, 'M', '悔'), + (0xFA3E, 'M', '慨'), + (0xFA3F, 'M', '憎'), + (0xFA40, 'M', '懲'), + (0xFA41, 'M', '敏'), + (0xFA42, 'M', '既'), + (0xFA43, 'M', '暑'), + (0xFA44, 'M', '梅'), + (0xFA45, 'M', '海'), + (0xFA46, 'M', '渚'), + (0xFA47, 'M', '漢'), + (0xFA48, 'M', '煮'), + (0xFA49, 'M', '爫'), + (0xFA4A, 'M', '琢'), + (0xFA4B, 'M', '碑'), + (0xFA4C, 'M', '社'), + (0xFA4D, 'M', '祉'), + (0xFA4E, 'M', '祈'), + (0xFA4F, 'M', '祐'), + (0xFA50, 'M', '祖'), + (0xFA51, 'M', '祝'), + (0xFA52, 'M', '禍'), + (0xFA53, 'M', '禎'), + (0xFA54, 'M', '穀'), + (0xFA55, 'M', '突'), + (0xFA56, 'M', '節'), + (0xFA57, 'M', '練'), + (0xFA58, 'M', '縉'), + (0xFA59, 'M', '繁'), + (0xFA5A, 'M', '署'), + (0xFA5B, 'M', '者'), + (0xFA5C, 'M', '臭'), + (0xFA5D, 'M', '艹'), + (0xFA5F, 'M', '著'), + (0xFA60, 'M', '褐'), + (0xFA61, 'M', '視'), + (0xFA62, 'M', '謁'), + (0xFA63, 'M', '謹'), + (0xFA64, 'M', '賓'), + (0xFA65, 'M', '贈'), + (0xFA66, 'M', '辶'), + (0xFA67, 'M', '逸'), + (0xFA68, 'M', '難'), + (0xFA69, 'M', '響'), + (0xFA6A, 'M', '頻'), + (0xFA6B, 'M', '恵'), + (0xFA6C, 'M', '𤋮'), + (0xFA6D, 'M', '舘'), + (0xFA6E, 'X'), + (0xFA70, 'M', '並'), + (0xFA71, 'M', '况'), + (0xFA72, 'M', '全'), + (0xFA73, 'M', '侀'), + (0xFA74, 'M', '充'), + (0xFA75, 'M', '冀'), + (0xFA76, 'M', '勇'), + (0xFA77, 'M', '勺'), + (0xFA78, 'M', '喝'), + (0xFA79, 'M', '啕'), + (0xFA7A, 'M', '喙'), + (0xFA7B, 'M', '嗢'), + (0xFA7C, 'M', '塚'), + ] + +def _seg_43() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFA7D, 'M', '墳'), + (0xFA7E, 'M', '奄'), + (0xFA7F, 'M', '奔'), + (0xFA80, 'M', '婢'), + (0xFA81, 'M', '嬨'), + (0xFA82, 'M', '廒'), + (0xFA83, 'M', '廙'), + (0xFA84, 'M', '彩'), + (0xFA85, 'M', '徭'), + (0xFA86, 'M', '惘'), + (0xFA87, 'M', '慎'), + (0xFA88, 'M', '愈'), + (0xFA89, 'M', '憎'), + (0xFA8A, 'M', '慠'), + (0xFA8B, 'M', '懲'), + (0xFA8C, 'M', '戴'), + (0xFA8D, 'M', '揄'), + (0xFA8E, 'M', '搜'), + (0xFA8F, 'M', '摒'), + (0xFA90, 'M', '敖'), + (0xFA91, 'M', '晴'), + (0xFA92, 'M', '朗'), + (0xFA93, 'M', '望'), + (0xFA94, 'M', '杖'), + (0xFA95, 'M', '歹'), + (0xFA96, 'M', '殺'), + (0xFA97, 'M', '流'), + (0xFA98, 'M', '滛'), + (0xFA99, 'M', '滋'), + (0xFA9A, 'M', '漢'), + (0xFA9B, 'M', '瀞'), + (0xFA9C, 'M', '煮'), + (0xFA9D, 'M', '瞧'), + (0xFA9E, 'M', '爵'), + (0xFA9F, 'M', '犯'), + (0xFAA0, 'M', '猪'), + (0xFAA1, 'M', '瑱'), + (0xFAA2, 'M', '甆'), + (0xFAA3, 'M', '画'), + (0xFAA4, 'M', '瘝'), + (0xFAA5, 'M', '瘟'), + (0xFAA6, 'M', '益'), + (0xFAA7, 'M', '盛'), + (0xFAA8, 'M', '直'), + (0xFAA9, 'M', '睊'), + (0xFAAA, 'M', '着'), + (0xFAAB, 'M', '磌'), + (0xFAAC, 'M', '窱'), + (0xFAAD, 'M', '節'), + (0xFAAE, 'M', '类'), + (0xFAAF, 'M', '絛'), + (0xFAB0, 'M', '練'), + (0xFAB1, 'M', '缾'), + (0xFAB2, 'M', '者'), + (0xFAB3, 'M', '荒'), + (0xFAB4, 'M', '華'), + (0xFAB5, 'M', '蝹'), + (0xFAB6, 'M', '襁'), + (0xFAB7, 'M', '覆'), + (0xFAB8, 'M', '視'), + (0xFAB9, 'M', '調'), + (0xFABA, 'M', '諸'), + (0xFABB, 'M', '請'), + (0xFABC, 'M', '謁'), + (0xFABD, 'M', '諾'), + (0xFABE, 'M', '諭'), + (0xFABF, 'M', '謹'), + (0xFAC0, 'M', '變'), + (0xFAC1, 'M', '贈'), + (0xFAC2, 'M', '輸'), + (0xFAC3, 'M', '遲'), + (0xFAC4, 'M', '醙'), + (0xFAC5, 'M', '鉶'), + (0xFAC6, 'M', '陼'), + (0xFAC7, 'M', '難'), + (0xFAC8, 'M', '靖'), + (0xFAC9, 'M', '韛'), + (0xFACA, 'M', '響'), + (0xFACB, 'M', '頋'), + (0xFACC, 'M', '頻'), + (0xFACD, 'M', '鬒'), + (0xFACE, 'M', '龜'), + (0xFACF, 'M', '𢡊'), + (0xFAD0, 'M', '𢡄'), + (0xFAD1, 'M', '𣏕'), + (0xFAD2, 'M', '㮝'), + (0xFAD3, 'M', '䀘'), + (0xFAD4, 'M', '䀹'), + (0xFAD5, 'M', '𥉉'), + (0xFAD6, 'M', '𥳐'), + (0xFAD7, 'M', '𧻓'), + (0xFAD8, 'M', '齃'), + (0xFAD9, 'M', '龎'), + (0xFADA, 'X'), + (0xFB00, 'M', 'ff'), + (0xFB01, 'M', 'fi'), + (0xFB02, 'M', 'fl'), + (0xFB03, 'M', 'ffi'), + (0xFB04, 'M', 'ffl'), + (0xFB05, 'M', 'st'), + ] + +def _seg_44() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFB07, 'X'), + (0xFB13, 'M', 'մն'), + (0xFB14, 'M', 'մե'), + (0xFB15, 'M', 'մի'), + (0xFB16, 'M', 'վն'), + (0xFB17, 'M', 'մխ'), + (0xFB18, 'X'), + (0xFB1D, 'M', 'יִ'), + (0xFB1E, 'V'), + (0xFB1F, 'M', 'ײַ'), + (0xFB20, 'M', 'ע'), + (0xFB21, 'M', 'א'), + (0xFB22, 'M', 'ד'), + (0xFB23, 'M', 'ה'), + (0xFB24, 'M', 'כ'), + (0xFB25, 'M', 'ל'), + (0xFB26, 'M', 'ם'), + (0xFB27, 'M', 'ר'), + (0xFB28, 'M', 'ת'), + (0xFB29, '3', '+'), + (0xFB2A, 'M', 'שׁ'), + (0xFB2B, 'M', 'שׂ'), + (0xFB2C, 'M', 'שּׁ'), + (0xFB2D, 'M', 'שּׂ'), + (0xFB2E, 'M', 'אַ'), + (0xFB2F, 'M', 'אָ'), + (0xFB30, 'M', 'אּ'), + (0xFB31, 'M', 'בּ'), + (0xFB32, 'M', 'גּ'), + (0xFB33, 'M', 'דּ'), + (0xFB34, 'M', 'הּ'), + (0xFB35, 'M', 'וּ'), + (0xFB36, 'M', 'זּ'), + (0xFB37, 'X'), + (0xFB38, 'M', 'טּ'), + (0xFB39, 'M', 'יּ'), + (0xFB3A, 'M', 'ךּ'), + (0xFB3B, 'M', 'כּ'), + (0xFB3C, 'M', 'לּ'), + (0xFB3D, 'X'), + (0xFB3E, 'M', 'מּ'), + (0xFB3F, 'X'), + (0xFB40, 'M', 'נּ'), + (0xFB41, 'M', 'סּ'), + (0xFB42, 'X'), + (0xFB43, 'M', 'ףּ'), + (0xFB44, 'M', 'פּ'), + (0xFB45, 'X'), + (0xFB46, 'M', 'צּ'), + (0xFB47, 'M', 'קּ'), + (0xFB48, 'M', 'רּ'), + (0xFB49, 'M', 'שּ'), + (0xFB4A, 'M', 'תּ'), + (0xFB4B, 'M', 'וֹ'), + (0xFB4C, 'M', 'בֿ'), + (0xFB4D, 'M', 'כֿ'), + (0xFB4E, 'M', 'פֿ'), + (0xFB4F, 'M', 'אל'), + (0xFB50, 'M', 'ٱ'), + (0xFB52, 'M', 'ٻ'), + (0xFB56, 'M', 'پ'), + (0xFB5A, 'M', 'ڀ'), + (0xFB5E, 'M', 'ٺ'), + (0xFB62, 'M', 'ٿ'), + (0xFB66, 'M', 'ٹ'), + (0xFB6A, 'M', 'ڤ'), + (0xFB6E, 'M', 'ڦ'), + (0xFB72, 'M', 'ڄ'), + (0xFB76, 'M', 'ڃ'), + (0xFB7A, 'M', 'چ'), + (0xFB7E, 'M', 'ڇ'), + (0xFB82, 'M', 'ڍ'), + (0xFB84, 'M', 'ڌ'), + (0xFB86, 'M', 'ڎ'), + (0xFB88, 'M', 'ڈ'), + (0xFB8A, 'M', 'ژ'), + (0xFB8C, 'M', 'ڑ'), + (0xFB8E, 'M', 'ک'), + (0xFB92, 'M', 'گ'), + (0xFB96, 'M', 'ڳ'), + (0xFB9A, 'M', 'ڱ'), + (0xFB9E, 'M', 'ں'), + (0xFBA0, 'M', 'ڻ'), + (0xFBA4, 'M', 'ۀ'), + (0xFBA6, 'M', 'ہ'), + (0xFBAA, 'M', 'ھ'), + (0xFBAE, 'M', 'ے'), + (0xFBB0, 'M', 'ۓ'), + (0xFBB2, 'V'), + (0xFBC3, 'X'), + (0xFBD3, 'M', 'ڭ'), + (0xFBD7, 'M', 'ۇ'), + (0xFBD9, 'M', 'ۆ'), + (0xFBDB, 'M', 'ۈ'), + (0xFBDD, 'M', 'ۇٴ'), + (0xFBDE, 'M', 'ۋ'), + (0xFBE0, 'M', 'ۅ'), + (0xFBE2, 'M', 'ۉ'), + (0xFBE4, 'M', 'ې'), + (0xFBE8, 'M', 'ى'), + ] + +def _seg_45() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFBEA, 'M', 'ئا'), + (0xFBEC, 'M', 'ئە'), + (0xFBEE, 'M', 'ئو'), + (0xFBF0, 'M', 'ئۇ'), + (0xFBF2, 'M', 'ئۆ'), + (0xFBF4, 'M', 'ئۈ'), + (0xFBF6, 'M', 'ئې'), + (0xFBF9, 'M', 'ئى'), + (0xFBFC, 'M', 'ی'), + (0xFC00, 'M', 'ئج'), + (0xFC01, 'M', 'ئح'), + (0xFC02, 'M', 'ئم'), + (0xFC03, 'M', 'ئى'), + (0xFC04, 'M', 'ئي'), + (0xFC05, 'M', 'بج'), + (0xFC06, 'M', 'بح'), + (0xFC07, 'M', 'بخ'), + (0xFC08, 'M', 'بم'), + (0xFC09, 'M', 'بى'), + (0xFC0A, 'M', 'بي'), + (0xFC0B, 'M', 'تج'), + (0xFC0C, 'M', 'تح'), + (0xFC0D, 'M', 'تخ'), + (0xFC0E, 'M', 'تم'), + (0xFC0F, 'M', 'تى'), + (0xFC10, 'M', 'تي'), + (0xFC11, 'M', 'ثج'), + (0xFC12, 'M', 'ثم'), + (0xFC13, 'M', 'ثى'), + (0xFC14, 'M', 'ثي'), + (0xFC15, 'M', 'جح'), + (0xFC16, 'M', 'جم'), + (0xFC17, 'M', 'حج'), + (0xFC18, 'M', 'حم'), + (0xFC19, 'M', 'خج'), + (0xFC1A, 'M', 'خح'), + (0xFC1B, 'M', 'خم'), + (0xFC1C, 'M', 'سج'), + (0xFC1D, 'M', 'سح'), + (0xFC1E, 'M', 'سخ'), + (0xFC1F, 'M', 'سم'), + (0xFC20, 'M', 'صح'), + (0xFC21, 'M', 'صم'), + (0xFC22, 'M', 'ضج'), + (0xFC23, 'M', 'ضح'), + (0xFC24, 'M', 'ضخ'), + (0xFC25, 'M', 'ضم'), + (0xFC26, 'M', 'طح'), + (0xFC27, 'M', 'طم'), + (0xFC28, 'M', 'ظم'), + (0xFC29, 'M', 'عج'), + (0xFC2A, 'M', 'عم'), + (0xFC2B, 'M', 'غج'), + (0xFC2C, 'M', 'غم'), + (0xFC2D, 'M', 'فج'), + (0xFC2E, 'M', 'فح'), + (0xFC2F, 'M', 'فخ'), + (0xFC30, 'M', 'فم'), + (0xFC31, 'M', 'فى'), + (0xFC32, 'M', 'في'), + (0xFC33, 'M', 'قح'), + (0xFC34, 'M', 'قم'), + (0xFC35, 'M', 'قى'), + (0xFC36, 'M', 'قي'), + (0xFC37, 'M', 'كا'), + (0xFC38, 'M', 'كج'), + (0xFC39, 'M', 'كح'), + (0xFC3A, 'M', 'كخ'), + (0xFC3B, 'M', 'كل'), + (0xFC3C, 'M', 'كم'), + (0xFC3D, 'M', 'كى'), + (0xFC3E, 'M', 'كي'), + (0xFC3F, 'M', 'لج'), + (0xFC40, 'M', 'لح'), + (0xFC41, 'M', 'لخ'), + (0xFC42, 'M', 'لم'), + (0xFC43, 'M', 'لى'), + (0xFC44, 'M', 'لي'), + (0xFC45, 'M', 'مج'), + (0xFC46, 'M', 'مح'), + (0xFC47, 'M', 'مخ'), + (0xFC48, 'M', 'مم'), + (0xFC49, 'M', 'مى'), + (0xFC4A, 'M', 'مي'), + (0xFC4B, 'M', 'نج'), + (0xFC4C, 'M', 'نح'), + (0xFC4D, 'M', 'نخ'), + (0xFC4E, 'M', 'نم'), + (0xFC4F, 'M', 'نى'), + (0xFC50, 'M', 'ني'), + (0xFC51, 'M', 'هج'), + (0xFC52, 'M', 'هم'), + (0xFC53, 'M', 'هى'), + (0xFC54, 'M', 'هي'), + (0xFC55, 'M', 'يج'), + (0xFC56, 'M', 'يح'), + (0xFC57, 'M', 'يخ'), + (0xFC58, 'M', 'يم'), + (0xFC59, 'M', 'يى'), + (0xFC5A, 'M', 'يي'), + ] + +def _seg_46() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFC5B, 'M', 'ذٰ'), + (0xFC5C, 'M', 'رٰ'), + (0xFC5D, 'M', 'ىٰ'), + (0xFC5E, '3', ' ٌّ'), + (0xFC5F, '3', ' ٍّ'), + (0xFC60, '3', ' َّ'), + (0xFC61, '3', ' ُّ'), + (0xFC62, '3', ' ِّ'), + (0xFC63, '3', ' ّٰ'), + (0xFC64, 'M', 'ئر'), + (0xFC65, 'M', 'ئز'), + (0xFC66, 'M', 'ئم'), + (0xFC67, 'M', 'ئن'), + (0xFC68, 'M', 'ئى'), + (0xFC69, 'M', 'ئي'), + (0xFC6A, 'M', 'بر'), + (0xFC6B, 'M', 'بز'), + (0xFC6C, 'M', 'بم'), + (0xFC6D, 'M', 'بن'), + (0xFC6E, 'M', 'بى'), + (0xFC6F, 'M', 'بي'), + (0xFC70, 'M', 'تر'), + (0xFC71, 'M', 'تز'), + (0xFC72, 'M', 'تم'), + (0xFC73, 'M', 'تن'), + (0xFC74, 'M', 'تى'), + (0xFC75, 'M', 'تي'), + (0xFC76, 'M', 'ثر'), + (0xFC77, 'M', 'ثز'), + (0xFC78, 'M', 'ثم'), + (0xFC79, 'M', 'ثن'), + (0xFC7A, 'M', 'ثى'), + (0xFC7B, 'M', 'ثي'), + (0xFC7C, 'M', 'فى'), + (0xFC7D, 'M', 'في'), + (0xFC7E, 'M', 'قى'), + (0xFC7F, 'M', 'قي'), + (0xFC80, 'M', 'كا'), + (0xFC81, 'M', 'كل'), + (0xFC82, 'M', 'كم'), + (0xFC83, 'M', 'كى'), + (0xFC84, 'M', 'كي'), + (0xFC85, 'M', 'لم'), + (0xFC86, 'M', 'لى'), + (0xFC87, 'M', 'لي'), + (0xFC88, 'M', 'ما'), + (0xFC89, 'M', 'مم'), + (0xFC8A, 'M', 'نر'), + (0xFC8B, 'M', 'نز'), + (0xFC8C, 'M', 'نم'), + (0xFC8D, 'M', 'نن'), + (0xFC8E, 'M', 'نى'), + (0xFC8F, 'M', 'ني'), + (0xFC90, 'M', 'ىٰ'), + (0xFC91, 'M', 'ير'), + (0xFC92, 'M', 'يز'), + (0xFC93, 'M', 'يم'), + (0xFC94, 'M', 'ين'), + (0xFC95, 'M', 'يى'), + (0xFC96, 'M', 'يي'), + (0xFC97, 'M', 'ئج'), + (0xFC98, 'M', 'ئح'), + (0xFC99, 'M', 'ئخ'), + (0xFC9A, 'M', 'ئم'), + (0xFC9B, 'M', 'ئه'), + (0xFC9C, 'M', 'بج'), + (0xFC9D, 'M', 'بح'), + (0xFC9E, 'M', 'بخ'), + (0xFC9F, 'M', 'بم'), + (0xFCA0, 'M', 'به'), + (0xFCA1, 'M', 'تج'), + (0xFCA2, 'M', 'تح'), + (0xFCA3, 'M', 'تخ'), + (0xFCA4, 'M', 'تم'), + (0xFCA5, 'M', 'ته'), + (0xFCA6, 'M', 'ثم'), + (0xFCA7, 'M', 'جح'), + (0xFCA8, 'M', 'جم'), + (0xFCA9, 'M', 'حج'), + (0xFCAA, 'M', 'حم'), + (0xFCAB, 'M', 'خج'), + (0xFCAC, 'M', 'خم'), + (0xFCAD, 'M', 'سج'), + (0xFCAE, 'M', 'سح'), + (0xFCAF, 'M', 'سخ'), + (0xFCB0, 'M', 'سم'), + (0xFCB1, 'M', 'صح'), + (0xFCB2, 'M', 'صخ'), + (0xFCB3, 'M', 'صم'), + (0xFCB4, 'M', 'ضج'), + (0xFCB5, 'M', 'ضح'), + (0xFCB6, 'M', 'ضخ'), + (0xFCB7, 'M', 'ضم'), + (0xFCB8, 'M', 'طح'), + (0xFCB9, 'M', 'ظم'), + (0xFCBA, 'M', 'عج'), + (0xFCBB, 'M', 'عم'), + (0xFCBC, 'M', 'غج'), + (0xFCBD, 'M', 'غم'), + (0xFCBE, 'M', 'فج'), + ] + +def _seg_47() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFCBF, 'M', 'فح'), + (0xFCC0, 'M', 'فخ'), + (0xFCC1, 'M', 'فم'), + (0xFCC2, 'M', 'قح'), + (0xFCC3, 'M', 'قم'), + (0xFCC4, 'M', 'كج'), + (0xFCC5, 'M', 'كح'), + (0xFCC6, 'M', 'كخ'), + (0xFCC7, 'M', 'كل'), + (0xFCC8, 'M', 'كم'), + (0xFCC9, 'M', 'لج'), + (0xFCCA, 'M', 'لح'), + (0xFCCB, 'M', 'لخ'), + (0xFCCC, 'M', 'لم'), + (0xFCCD, 'M', 'له'), + (0xFCCE, 'M', 'مج'), + (0xFCCF, 'M', 'مح'), + (0xFCD0, 'M', 'مخ'), + (0xFCD1, 'M', 'مم'), + (0xFCD2, 'M', 'نج'), + (0xFCD3, 'M', 'نح'), + (0xFCD4, 'M', 'نخ'), + (0xFCD5, 'M', 'نم'), + (0xFCD6, 'M', 'نه'), + (0xFCD7, 'M', 'هج'), + (0xFCD8, 'M', 'هم'), + (0xFCD9, 'M', 'هٰ'), + (0xFCDA, 'M', 'يج'), + (0xFCDB, 'M', 'يح'), + (0xFCDC, 'M', 'يخ'), + (0xFCDD, 'M', 'يم'), + (0xFCDE, 'M', 'يه'), + (0xFCDF, 'M', 'ئم'), + (0xFCE0, 'M', 'ئه'), + (0xFCE1, 'M', 'بم'), + (0xFCE2, 'M', 'به'), + (0xFCE3, 'M', 'تم'), + (0xFCE4, 'M', 'ته'), + (0xFCE5, 'M', 'ثم'), + (0xFCE6, 'M', 'ثه'), + (0xFCE7, 'M', 'سم'), + (0xFCE8, 'M', 'سه'), + (0xFCE9, 'M', 'شم'), + (0xFCEA, 'M', 'شه'), + (0xFCEB, 'M', 'كل'), + (0xFCEC, 'M', 'كم'), + (0xFCED, 'M', 'لم'), + (0xFCEE, 'M', 'نم'), + (0xFCEF, 'M', 'نه'), + (0xFCF0, 'M', 'يم'), + (0xFCF1, 'M', 'يه'), + (0xFCF2, 'M', 'ـَّ'), + (0xFCF3, 'M', 'ـُّ'), + (0xFCF4, 'M', 'ـِّ'), + (0xFCF5, 'M', 'طى'), + (0xFCF6, 'M', 'طي'), + (0xFCF7, 'M', 'عى'), + (0xFCF8, 'M', 'عي'), + (0xFCF9, 'M', 'غى'), + (0xFCFA, 'M', 'غي'), + (0xFCFB, 'M', 'سى'), + (0xFCFC, 'M', 'سي'), + (0xFCFD, 'M', 'شى'), + (0xFCFE, 'M', 'شي'), + (0xFCFF, 'M', 'حى'), + (0xFD00, 'M', 'حي'), + (0xFD01, 'M', 'جى'), + (0xFD02, 'M', 'جي'), + (0xFD03, 'M', 'خى'), + (0xFD04, 'M', 'خي'), + (0xFD05, 'M', 'صى'), + (0xFD06, 'M', 'صي'), + (0xFD07, 'M', 'ضى'), + (0xFD08, 'M', 'ضي'), + (0xFD09, 'M', 'شج'), + (0xFD0A, 'M', 'شح'), + (0xFD0B, 'M', 'شخ'), + (0xFD0C, 'M', 'شم'), + (0xFD0D, 'M', 'شر'), + (0xFD0E, 'M', 'سر'), + (0xFD0F, 'M', 'صر'), + (0xFD10, 'M', 'ضر'), + (0xFD11, 'M', 'طى'), + (0xFD12, 'M', 'طي'), + (0xFD13, 'M', 'عى'), + (0xFD14, 'M', 'عي'), + (0xFD15, 'M', 'غى'), + (0xFD16, 'M', 'غي'), + (0xFD17, 'M', 'سى'), + (0xFD18, 'M', 'سي'), + (0xFD19, 'M', 'شى'), + (0xFD1A, 'M', 'شي'), + (0xFD1B, 'M', 'حى'), + (0xFD1C, 'M', 'حي'), + (0xFD1D, 'M', 'جى'), + (0xFD1E, 'M', 'جي'), + (0xFD1F, 'M', 'خى'), + (0xFD20, 'M', 'خي'), + (0xFD21, 'M', 'صى'), + (0xFD22, 'M', 'صي'), + ] + +def _seg_48() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFD23, 'M', 'ضى'), + (0xFD24, 'M', 'ضي'), + (0xFD25, 'M', 'شج'), + (0xFD26, 'M', 'شح'), + (0xFD27, 'M', 'شخ'), + (0xFD28, 'M', 'شم'), + (0xFD29, 'M', 'شر'), + (0xFD2A, 'M', 'سر'), + (0xFD2B, 'M', 'صر'), + (0xFD2C, 'M', 'ضر'), + (0xFD2D, 'M', 'شج'), + (0xFD2E, 'M', 'شح'), + (0xFD2F, 'M', 'شخ'), + (0xFD30, 'M', 'شم'), + (0xFD31, 'M', 'سه'), + (0xFD32, 'M', 'شه'), + (0xFD33, 'M', 'طم'), + (0xFD34, 'M', 'سج'), + (0xFD35, 'M', 'سح'), + (0xFD36, 'M', 'سخ'), + (0xFD37, 'M', 'شج'), + (0xFD38, 'M', 'شح'), + (0xFD39, 'M', 'شخ'), + (0xFD3A, 'M', 'طم'), + (0xFD3B, 'M', 'ظم'), + (0xFD3C, 'M', 'اً'), + (0xFD3E, 'V'), + (0xFD50, 'M', 'تجم'), + (0xFD51, 'M', 'تحج'), + (0xFD53, 'M', 'تحم'), + (0xFD54, 'M', 'تخم'), + (0xFD55, 'M', 'تمج'), + (0xFD56, 'M', 'تمح'), + (0xFD57, 'M', 'تمخ'), + (0xFD58, 'M', 'جمح'), + (0xFD5A, 'M', 'حمي'), + (0xFD5B, 'M', 'حمى'), + (0xFD5C, 'M', 'سحج'), + (0xFD5D, 'M', 'سجح'), + (0xFD5E, 'M', 'سجى'), + (0xFD5F, 'M', 'سمح'), + (0xFD61, 'M', 'سمج'), + (0xFD62, 'M', 'سمم'), + (0xFD64, 'M', 'صحح'), + (0xFD66, 'M', 'صمم'), + (0xFD67, 'M', 'شحم'), + (0xFD69, 'M', 'شجي'), + (0xFD6A, 'M', 'شمخ'), + (0xFD6C, 'M', 'شمم'), + (0xFD6E, 'M', 'ضحى'), + (0xFD6F, 'M', 'ضخم'), + (0xFD71, 'M', 'طمح'), + (0xFD73, 'M', 'طمم'), + (0xFD74, 'M', 'طمي'), + (0xFD75, 'M', 'عجم'), + (0xFD76, 'M', 'عمم'), + (0xFD78, 'M', 'عمى'), + (0xFD79, 'M', 'غمم'), + (0xFD7A, 'M', 'غمي'), + (0xFD7B, 'M', 'غمى'), + (0xFD7C, 'M', 'فخم'), + (0xFD7E, 'M', 'قمح'), + (0xFD7F, 'M', 'قمم'), + (0xFD80, 'M', 'لحم'), + (0xFD81, 'M', 'لحي'), + (0xFD82, 'M', 'لحى'), + (0xFD83, 'M', 'لجج'), + (0xFD85, 'M', 'لخم'), + (0xFD87, 'M', 'لمح'), + (0xFD89, 'M', 'محج'), + (0xFD8A, 'M', 'محم'), + (0xFD8B, 'M', 'محي'), + (0xFD8C, 'M', 'مجح'), + (0xFD8D, 'M', 'مجم'), + (0xFD8E, 'M', 'مخج'), + (0xFD8F, 'M', 'مخم'), + (0xFD90, 'X'), + (0xFD92, 'M', 'مجخ'), + (0xFD93, 'M', 'همج'), + (0xFD94, 'M', 'همم'), + (0xFD95, 'M', 'نحم'), + (0xFD96, 'M', 'نحى'), + (0xFD97, 'M', 'نجم'), + (0xFD99, 'M', 'نجى'), + (0xFD9A, 'M', 'نمي'), + (0xFD9B, 'M', 'نمى'), + (0xFD9C, 'M', 'يمم'), + (0xFD9E, 'M', 'بخي'), + (0xFD9F, 'M', 'تجي'), + (0xFDA0, 'M', 'تجى'), + (0xFDA1, 'M', 'تخي'), + (0xFDA2, 'M', 'تخى'), + (0xFDA3, 'M', 'تمي'), + (0xFDA4, 'M', 'تمى'), + (0xFDA5, 'M', 'جمي'), + (0xFDA6, 'M', 'جحى'), + (0xFDA7, 'M', 'جمى'), + (0xFDA8, 'M', 'سخى'), + (0xFDA9, 'M', 'صحي'), + (0xFDAA, 'M', 'شحي'), + ] + +def _seg_49() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFDAB, 'M', 'ضحي'), + (0xFDAC, 'M', 'لجي'), + (0xFDAD, 'M', 'لمي'), + (0xFDAE, 'M', 'يحي'), + (0xFDAF, 'M', 'يجي'), + (0xFDB0, 'M', 'يمي'), + (0xFDB1, 'M', 'ممي'), + (0xFDB2, 'M', 'قمي'), + (0xFDB3, 'M', 'نحي'), + (0xFDB4, 'M', 'قمح'), + (0xFDB5, 'M', 'لحم'), + (0xFDB6, 'M', 'عمي'), + (0xFDB7, 'M', 'كمي'), + (0xFDB8, 'M', 'نجح'), + (0xFDB9, 'M', 'مخي'), + (0xFDBA, 'M', 'لجم'), + (0xFDBB, 'M', 'كمم'), + (0xFDBC, 'M', 'لجم'), + (0xFDBD, 'M', 'نجح'), + (0xFDBE, 'M', 'جحي'), + (0xFDBF, 'M', 'حجي'), + (0xFDC0, 'M', 'مجي'), + (0xFDC1, 'M', 'فمي'), + (0xFDC2, 'M', 'بحي'), + (0xFDC3, 'M', 'كمم'), + (0xFDC4, 'M', 'عجم'), + (0xFDC5, 'M', 'صمم'), + (0xFDC6, 'M', 'سخي'), + (0xFDC7, 'M', 'نجي'), + (0xFDC8, 'X'), + (0xFDCF, 'V'), + (0xFDD0, 'X'), + (0xFDF0, 'M', 'صلے'), + (0xFDF1, 'M', 'قلے'), + (0xFDF2, 'M', 'الله'), + (0xFDF3, 'M', 'اكبر'), + (0xFDF4, 'M', 'محمد'), + (0xFDF5, 'M', 'صلعم'), + (0xFDF6, 'M', 'رسول'), + (0xFDF7, 'M', 'عليه'), + (0xFDF8, 'M', 'وسلم'), + (0xFDF9, 'M', 'صلى'), + (0xFDFA, '3', 'صلى الله عليه وسلم'), + (0xFDFB, '3', 'جل جلاله'), + (0xFDFC, 'M', 'ریال'), + (0xFDFD, 'V'), + (0xFE00, 'I'), + (0xFE10, '3', ','), + (0xFE11, 'M', '、'), + (0xFE12, 'X'), + (0xFE13, '3', ':'), + (0xFE14, '3', ';'), + (0xFE15, '3', '!'), + (0xFE16, '3', '?'), + (0xFE17, 'M', '〖'), + (0xFE18, 'M', '〗'), + (0xFE19, 'X'), + (0xFE20, 'V'), + (0xFE30, 'X'), + (0xFE31, 'M', '—'), + (0xFE32, 'M', '–'), + (0xFE33, '3', '_'), + (0xFE35, '3', '('), + (0xFE36, '3', ')'), + (0xFE37, '3', '{'), + (0xFE38, '3', '}'), + (0xFE39, 'M', '〔'), + (0xFE3A, 'M', '〕'), + (0xFE3B, 'M', '【'), + (0xFE3C, 'M', '】'), + (0xFE3D, 'M', '《'), + (0xFE3E, 'M', '》'), + (0xFE3F, 'M', '〈'), + (0xFE40, 'M', '〉'), + (0xFE41, 'M', '「'), + (0xFE42, 'M', '」'), + (0xFE43, 'M', '『'), + (0xFE44, 'M', '』'), + (0xFE45, 'V'), + (0xFE47, '3', '['), + (0xFE48, '3', ']'), + (0xFE49, '3', ' ̅'), + (0xFE4D, '3', '_'), + (0xFE50, '3', ','), + (0xFE51, 'M', '、'), + (0xFE52, 'X'), + (0xFE54, '3', ';'), + (0xFE55, '3', ':'), + (0xFE56, '3', '?'), + (0xFE57, '3', '!'), + (0xFE58, 'M', '—'), + (0xFE59, '3', '('), + (0xFE5A, '3', ')'), + (0xFE5B, '3', '{'), + (0xFE5C, '3', '}'), + (0xFE5D, 'M', '〔'), + (0xFE5E, 'M', '〕'), + (0xFE5F, '3', '#'), + (0xFE60, '3', '&'), + (0xFE61, '3', '*'), + ] + +def _seg_50() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFE62, '3', '+'), + (0xFE63, 'M', '-'), + (0xFE64, '3', '<'), + (0xFE65, '3', '>'), + (0xFE66, '3', '='), + (0xFE67, 'X'), + (0xFE68, '3', '\\'), + (0xFE69, '3', '$'), + (0xFE6A, '3', '%'), + (0xFE6B, '3', '@'), + (0xFE6C, 'X'), + (0xFE70, '3', ' ً'), + (0xFE71, 'M', 'ـً'), + (0xFE72, '3', ' ٌ'), + (0xFE73, 'V'), + (0xFE74, '3', ' ٍ'), + (0xFE75, 'X'), + (0xFE76, '3', ' َ'), + (0xFE77, 'M', 'ـَ'), + (0xFE78, '3', ' ُ'), + (0xFE79, 'M', 'ـُ'), + (0xFE7A, '3', ' ِ'), + (0xFE7B, 'M', 'ـِ'), + (0xFE7C, '3', ' ّ'), + (0xFE7D, 'M', 'ـّ'), + (0xFE7E, '3', ' ْ'), + (0xFE7F, 'M', 'ـْ'), + (0xFE80, 'M', 'ء'), + (0xFE81, 'M', 'آ'), + (0xFE83, 'M', 'أ'), + (0xFE85, 'M', 'ؤ'), + (0xFE87, 'M', 'إ'), + (0xFE89, 'M', 'ئ'), + (0xFE8D, 'M', 'ا'), + (0xFE8F, 'M', 'ب'), + (0xFE93, 'M', 'ة'), + (0xFE95, 'M', 'ت'), + (0xFE99, 'M', 'ث'), + (0xFE9D, 'M', 'ج'), + (0xFEA1, 'M', 'ح'), + (0xFEA5, 'M', 'خ'), + (0xFEA9, 'M', 'د'), + (0xFEAB, 'M', 'ذ'), + (0xFEAD, 'M', 'ر'), + (0xFEAF, 'M', 'ز'), + (0xFEB1, 'M', 'س'), + (0xFEB5, 'M', 'ش'), + (0xFEB9, 'M', 'ص'), + (0xFEBD, 'M', 'ض'), + (0xFEC1, 'M', 'ط'), + (0xFEC5, 'M', 'ظ'), + (0xFEC9, 'M', 'ع'), + (0xFECD, 'M', 'غ'), + (0xFED1, 'M', 'ف'), + (0xFED5, 'M', 'ق'), + (0xFED9, 'M', 'ك'), + (0xFEDD, 'M', 'ل'), + (0xFEE1, 'M', 'م'), + (0xFEE5, 'M', 'ن'), + (0xFEE9, 'M', 'ه'), + (0xFEED, 'M', 'و'), + (0xFEEF, 'M', 'ى'), + (0xFEF1, 'M', 'ي'), + (0xFEF5, 'M', 'لآ'), + (0xFEF7, 'M', 'لأ'), + (0xFEF9, 'M', 'لإ'), + (0xFEFB, 'M', 'لا'), + (0xFEFD, 'X'), + (0xFEFF, 'I'), + (0xFF00, 'X'), + (0xFF01, '3', '!'), + (0xFF02, '3', '"'), + (0xFF03, '3', '#'), + (0xFF04, '3', '$'), + (0xFF05, '3', '%'), + (0xFF06, '3', '&'), + (0xFF07, '3', '\''), + (0xFF08, '3', '('), + (0xFF09, '3', ')'), + (0xFF0A, '3', '*'), + (0xFF0B, '3', '+'), + (0xFF0C, '3', ','), + (0xFF0D, 'M', '-'), + (0xFF0E, 'M', '.'), + (0xFF0F, '3', '/'), + (0xFF10, 'M', '0'), + (0xFF11, 'M', '1'), + (0xFF12, 'M', '2'), + (0xFF13, 'M', '3'), + (0xFF14, 'M', '4'), + (0xFF15, 'M', '5'), + (0xFF16, 'M', '6'), + (0xFF17, 'M', '7'), + (0xFF18, 'M', '8'), + (0xFF19, 'M', '9'), + (0xFF1A, '3', ':'), + (0xFF1B, '3', ';'), + (0xFF1C, '3', '<'), + (0xFF1D, '3', '='), + (0xFF1E, '3', '>'), + ] + +def _seg_51() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFF1F, '3', '?'), + (0xFF20, '3', '@'), + (0xFF21, 'M', 'a'), + (0xFF22, 'M', 'b'), + (0xFF23, 'M', 'c'), + (0xFF24, 'M', 'd'), + (0xFF25, 'M', 'e'), + (0xFF26, 'M', 'f'), + (0xFF27, 'M', 'g'), + (0xFF28, 'M', 'h'), + (0xFF29, 'M', 'i'), + (0xFF2A, 'M', 'j'), + (0xFF2B, 'M', 'k'), + (0xFF2C, 'M', 'l'), + (0xFF2D, 'M', 'm'), + (0xFF2E, 'M', 'n'), + (0xFF2F, 'M', 'o'), + (0xFF30, 'M', 'p'), + (0xFF31, 'M', 'q'), + (0xFF32, 'M', 'r'), + (0xFF33, 'M', 's'), + (0xFF34, 'M', 't'), + (0xFF35, 'M', 'u'), + (0xFF36, 'M', 'v'), + (0xFF37, 'M', 'w'), + (0xFF38, 'M', 'x'), + (0xFF39, 'M', 'y'), + (0xFF3A, 'M', 'z'), + (0xFF3B, '3', '['), + (0xFF3C, '3', '\\'), + (0xFF3D, '3', ']'), + (0xFF3E, '3', '^'), + (0xFF3F, '3', '_'), + (0xFF40, '3', '`'), + (0xFF41, 'M', 'a'), + (0xFF42, 'M', 'b'), + (0xFF43, 'M', 'c'), + (0xFF44, 'M', 'd'), + (0xFF45, 'M', 'e'), + (0xFF46, 'M', 'f'), + (0xFF47, 'M', 'g'), + (0xFF48, 'M', 'h'), + (0xFF49, 'M', 'i'), + (0xFF4A, 'M', 'j'), + (0xFF4B, 'M', 'k'), + (0xFF4C, 'M', 'l'), + (0xFF4D, 'M', 'm'), + (0xFF4E, 'M', 'n'), + (0xFF4F, 'M', 'o'), + (0xFF50, 'M', 'p'), + (0xFF51, 'M', 'q'), + (0xFF52, 'M', 'r'), + (0xFF53, 'M', 's'), + (0xFF54, 'M', 't'), + (0xFF55, 'M', 'u'), + (0xFF56, 'M', 'v'), + (0xFF57, 'M', 'w'), + (0xFF58, 'M', 'x'), + (0xFF59, 'M', 'y'), + (0xFF5A, 'M', 'z'), + (0xFF5B, '3', '{'), + (0xFF5C, '3', '|'), + (0xFF5D, '3', '}'), + (0xFF5E, '3', '~'), + (0xFF5F, 'M', '⦅'), + (0xFF60, 'M', '⦆'), + (0xFF61, 'M', '.'), + (0xFF62, 'M', '「'), + (0xFF63, 'M', '」'), + (0xFF64, 'M', '、'), + (0xFF65, 'M', '・'), + (0xFF66, 'M', 'ヲ'), + (0xFF67, 'M', 'ァ'), + (0xFF68, 'M', 'ィ'), + (0xFF69, 'M', 'ゥ'), + (0xFF6A, 'M', 'ェ'), + (0xFF6B, 'M', 'ォ'), + (0xFF6C, 'M', 'ャ'), + (0xFF6D, 'M', 'ュ'), + (0xFF6E, 'M', 'ョ'), + (0xFF6F, 'M', 'ッ'), + (0xFF70, 'M', 'ー'), + (0xFF71, 'M', 'ア'), + (0xFF72, 'M', 'イ'), + (0xFF73, 'M', 'ウ'), + (0xFF74, 'M', 'エ'), + (0xFF75, 'M', 'オ'), + (0xFF76, 'M', 'カ'), + (0xFF77, 'M', 'キ'), + (0xFF78, 'M', 'ク'), + (0xFF79, 'M', 'ケ'), + (0xFF7A, 'M', 'コ'), + (0xFF7B, 'M', 'サ'), + (0xFF7C, 'M', 'シ'), + (0xFF7D, 'M', 'ス'), + (0xFF7E, 'M', 'セ'), + (0xFF7F, 'M', 'ソ'), + (0xFF80, 'M', 'タ'), + (0xFF81, 'M', 'チ'), + (0xFF82, 'M', 'ツ'), + ] + +def _seg_52() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFF83, 'M', 'テ'), + (0xFF84, 'M', 'ト'), + (0xFF85, 'M', 'ナ'), + (0xFF86, 'M', 'ニ'), + (0xFF87, 'M', 'ヌ'), + (0xFF88, 'M', 'ネ'), + (0xFF89, 'M', 'ノ'), + (0xFF8A, 'M', 'ハ'), + (0xFF8B, 'M', 'ヒ'), + (0xFF8C, 'M', 'フ'), + (0xFF8D, 'M', 'ヘ'), + (0xFF8E, 'M', 'ホ'), + (0xFF8F, 'M', 'マ'), + (0xFF90, 'M', 'ミ'), + (0xFF91, 'M', 'ム'), + (0xFF92, 'M', 'メ'), + (0xFF93, 'M', 'モ'), + (0xFF94, 'M', 'ヤ'), + (0xFF95, 'M', 'ユ'), + (0xFF96, 'M', 'ヨ'), + (0xFF97, 'M', 'ラ'), + (0xFF98, 'M', 'リ'), + (0xFF99, 'M', 'ル'), + (0xFF9A, 'M', 'レ'), + (0xFF9B, 'M', 'ロ'), + (0xFF9C, 'M', 'ワ'), + (0xFF9D, 'M', 'ン'), + (0xFF9E, 'M', '゙'), + (0xFF9F, 'M', '゚'), + (0xFFA0, 'X'), + (0xFFA1, 'M', 'ᄀ'), + (0xFFA2, 'M', 'ᄁ'), + (0xFFA3, 'M', 'ᆪ'), + (0xFFA4, 'M', 'ᄂ'), + (0xFFA5, 'M', 'ᆬ'), + (0xFFA6, 'M', 'ᆭ'), + (0xFFA7, 'M', 'ᄃ'), + (0xFFA8, 'M', 'ᄄ'), + (0xFFA9, 'M', 'ᄅ'), + (0xFFAA, 'M', 'ᆰ'), + (0xFFAB, 'M', 'ᆱ'), + (0xFFAC, 'M', 'ᆲ'), + (0xFFAD, 'M', 'ᆳ'), + (0xFFAE, 'M', 'ᆴ'), + (0xFFAF, 'M', 'ᆵ'), + (0xFFB0, 'M', 'ᄚ'), + (0xFFB1, 'M', 'ᄆ'), + (0xFFB2, 'M', 'ᄇ'), + (0xFFB3, 'M', 'ᄈ'), + (0xFFB4, 'M', 'ᄡ'), + (0xFFB5, 'M', 'ᄉ'), + (0xFFB6, 'M', 'ᄊ'), + (0xFFB7, 'M', 'ᄋ'), + (0xFFB8, 'M', 'ᄌ'), + (0xFFB9, 'M', 'ᄍ'), + (0xFFBA, 'M', 'ᄎ'), + (0xFFBB, 'M', 'ᄏ'), + (0xFFBC, 'M', 'ᄐ'), + (0xFFBD, 'M', 'ᄑ'), + (0xFFBE, 'M', 'ᄒ'), + (0xFFBF, 'X'), + (0xFFC2, 'M', 'ᅡ'), + (0xFFC3, 'M', 'ᅢ'), + (0xFFC4, 'M', 'ᅣ'), + (0xFFC5, 'M', 'ᅤ'), + (0xFFC6, 'M', 'ᅥ'), + (0xFFC7, 'M', 'ᅦ'), + (0xFFC8, 'X'), + (0xFFCA, 'M', 'ᅧ'), + (0xFFCB, 'M', 'ᅨ'), + (0xFFCC, 'M', 'ᅩ'), + (0xFFCD, 'M', 'ᅪ'), + (0xFFCE, 'M', 'ᅫ'), + (0xFFCF, 'M', 'ᅬ'), + (0xFFD0, 'X'), + (0xFFD2, 'M', 'ᅭ'), + (0xFFD3, 'M', 'ᅮ'), + (0xFFD4, 'M', 'ᅯ'), + (0xFFD5, 'M', 'ᅰ'), + (0xFFD6, 'M', 'ᅱ'), + (0xFFD7, 'M', 'ᅲ'), + (0xFFD8, 'X'), + (0xFFDA, 'M', 'ᅳ'), + (0xFFDB, 'M', 'ᅴ'), + (0xFFDC, 'M', 'ᅵ'), + (0xFFDD, 'X'), + (0xFFE0, 'M', '¢'), + (0xFFE1, 'M', '£'), + (0xFFE2, 'M', '¬'), + (0xFFE3, '3', ' ̄'), + (0xFFE4, 'M', '¦'), + (0xFFE5, 'M', '¥'), + (0xFFE6, 'M', '₩'), + (0xFFE7, 'X'), + (0xFFE8, 'M', '│'), + (0xFFE9, 'M', '←'), + (0xFFEA, 'M', '↑'), + (0xFFEB, 'M', '→'), + (0xFFEC, 'M', '↓'), + (0xFFED, 'M', '■'), + ] + +def _seg_53() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFFEE, 'M', '○'), + (0xFFEF, 'X'), + (0x10000, 'V'), + (0x1000C, 'X'), + (0x1000D, 'V'), + (0x10027, 'X'), + (0x10028, 'V'), + (0x1003B, 'X'), + (0x1003C, 'V'), + (0x1003E, 'X'), + (0x1003F, 'V'), + (0x1004E, 'X'), + (0x10050, 'V'), + (0x1005E, 'X'), + (0x10080, 'V'), + (0x100FB, 'X'), + (0x10100, 'V'), + (0x10103, 'X'), + (0x10107, 'V'), + (0x10134, 'X'), + (0x10137, 'V'), + (0x1018F, 'X'), + (0x10190, 'V'), + (0x1019D, 'X'), + (0x101A0, 'V'), + (0x101A1, 'X'), + (0x101D0, 'V'), + (0x101FE, 'X'), + (0x10280, 'V'), + (0x1029D, 'X'), + (0x102A0, 'V'), + (0x102D1, 'X'), + (0x102E0, 'V'), + (0x102FC, 'X'), + (0x10300, 'V'), + (0x10324, 'X'), + (0x1032D, 'V'), + (0x1034B, 'X'), + (0x10350, 'V'), + (0x1037B, 'X'), + (0x10380, 'V'), + (0x1039E, 'X'), + (0x1039F, 'V'), + (0x103C4, 'X'), + (0x103C8, 'V'), + (0x103D6, 'X'), + (0x10400, 'M', '𐐨'), + (0x10401, 'M', '𐐩'), + (0x10402, 'M', '𐐪'), + (0x10403, 'M', '𐐫'), + (0x10404, 'M', '𐐬'), + (0x10405, 'M', '𐐭'), + (0x10406, 'M', '𐐮'), + (0x10407, 'M', '𐐯'), + (0x10408, 'M', '𐐰'), + (0x10409, 'M', '𐐱'), + (0x1040A, 'M', '𐐲'), + (0x1040B, 'M', '𐐳'), + (0x1040C, 'M', '𐐴'), + (0x1040D, 'M', '𐐵'), + (0x1040E, 'M', '𐐶'), + (0x1040F, 'M', '𐐷'), + (0x10410, 'M', '𐐸'), + (0x10411, 'M', '𐐹'), + (0x10412, 'M', '𐐺'), + (0x10413, 'M', '𐐻'), + (0x10414, 'M', '𐐼'), + (0x10415, 'M', '𐐽'), + (0x10416, 'M', '𐐾'), + (0x10417, 'M', '𐐿'), + (0x10418, 'M', '𐑀'), + (0x10419, 'M', '𐑁'), + (0x1041A, 'M', '𐑂'), + (0x1041B, 'M', '𐑃'), + (0x1041C, 'M', '𐑄'), + (0x1041D, 'M', '𐑅'), + (0x1041E, 'M', '𐑆'), + (0x1041F, 'M', '𐑇'), + (0x10420, 'M', '𐑈'), + (0x10421, 'M', '𐑉'), + (0x10422, 'M', '𐑊'), + (0x10423, 'M', '𐑋'), + (0x10424, 'M', '𐑌'), + (0x10425, 'M', '𐑍'), + (0x10426, 'M', '𐑎'), + (0x10427, 'M', '𐑏'), + (0x10428, 'V'), + (0x1049E, 'X'), + (0x104A0, 'V'), + (0x104AA, 'X'), + (0x104B0, 'M', '𐓘'), + (0x104B1, 'M', '𐓙'), + (0x104B2, 'M', '𐓚'), + (0x104B3, 'M', '𐓛'), + (0x104B4, 'M', '𐓜'), + (0x104B5, 'M', '𐓝'), + (0x104B6, 'M', '𐓞'), + (0x104B7, 'M', '𐓟'), + (0x104B8, 'M', '𐓠'), + (0x104B9, 'M', '𐓡'), + ] + +def _seg_54() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x104BA, 'M', '𐓢'), + (0x104BB, 'M', '𐓣'), + (0x104BC, 'M', '𐓤'), + (0x104BD, 'M', '𐓥'), + (0x104BE, 'M', '𐓦'), + (0x104BF, 'M', '𐓧'), + (0x104C0, 'M', '𐓨'), + (0x104C1, 'M', '𐓩'), + (0x104C2, 'M', '𐓪'), + (0x104C3, 'M', '𐓫'), + (0x104C4, 'M', '𐓬'), + (0x104C5, 'M', '𐓭'), + (0x104C6, 'M', '𐓮'), + (0x104C7, 'M', '𐓯'), + (0x104C8, 'M', '𐓰'), + (0x104C9, 'M', '𐓱'), + (0x104CA, 'M', '𐓲'), + (0x104CB, 'M', '𐓳'), + (0x104CC, 'M', '𐓴'), + (0x104CD, 'M', '𐓵'), + (0x104CE, 'M', '𐓶'), + (0x104CF, 'M', '𐓷'), + (0x104D0, 'M', '𐓸'), + (0x104D1, 'M', '𐓹'), + (0x104D2, 'M', '𐓺'), + (0x104D3, 'M', '𐓻'), + (0x104D4, 'X'), + (0x104D8, 'V'), + (0x104FC, 'X'), + (0x10500, 'V'), + (0x10528, 'X'), + (0x10530, 'V'), + (0x10564, 'X'), + (0x1056F, 'V'), + (0x10570, 'M', '𐖗'), + (0x10571, 'M', '𐖘'), + (0x10572, 'M', '𐖙'), + (0x10573, 'M', '𐖚'), + (0x10574, 'M', '𐖛'), + (0x10575, 'M', '𐖜'), + (0x10576, 'M', '𐖝'), + (0x10577, 'M', '𐖞'), + (0x10578, 'M', '𐖟'), + (0x10579, 'M', '𐖠'), + (0x1057A, 'M', '𐖡'), + (0x1057B, 'X'), + (0x1057C, 'M', '𐖣'), + (0x1057D, 'M', '𐖤'), + (0x1057E, 'M', '𐖥'), + (0x1057F, 'M', '𐖦'), + (0x10580, 'M', '𐖧'), + (0x10581, 'M', '𐖨'), + (0x10582, 'M', '𐖩'), + (0x10583, 'M', '𐖪'), + (0x10584, 'M', '𐖫'), + (0x10585, 'M', '𐖬'), + (0x10586, 'M', '𐖭'), + (0x10587, 'M', '𐖮'), + (0x10588, 'M', '𐖯'), + (0x10589, 'M', '𐖰'), + (0x1058A, 'M', '𐖱'), + (0x1058B, 'X'), + (0x1058C, 'M', '𐖳'), + (0x1058D, 'M', '𐖴'), + (0x1058E, 'M', '𐖵'), + (0x1058F, 'M', '𐖶'), + (0x10590, 'M', '𐖷'), + (0x10591, 'M', '𐖸'), + (0x10592, 'M', '𐖹'), + (0x10593, 'X'), + (0x10594, 'M', '𐖻'), + (0x10595, 'M', '𐖼'), + (0x10596, 'X'), + (0x10597, 'V'), + (0x105A2, 'X'), + (0x105A3, 'V'), + (0x105B2, 'X'), + (0x105B3, 'V'), + (0x105BA, 'X'), + (0x105BB, 'V'), + (0x105BD, 'X'), + (0x10600, 'V'), + (0x10737, 'X'), + (0x10740, 'V'), + (0x10756, 'X'), + (0x10760, 'V'), + (0x10768, 'X'), + (0x10780, 'V'), + (0x10781, 'M', 'ː'), + (0x10782, 'M', 'ˑ'), + (0x10783, 'M', 'æ'), + (0x10784, 'M', 'ʙ'), + (0x10785, 'M', 'ɓ'), + (0x10786, 'X'), + (0x10787, 'M', 'ʣ'), + (0x10788, 'M', 'ꭦ'), + (0x10789, 'M', 'ʥ'), + (0x1078A, 'M', 'ʤ'), + (0x1078B, 'M', 'ɖ'), + (0x1078C, 'M', 'ɗ'), + ] + +def _seg_55() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1078D, 'M', 'ᶑ'), + (0x1078E, 'M', 'ɘ'), + (0x1078F, 'M', 'ɞ'), + (0x10790, 'M', 'ʩ'), + (0x10791, 'M', 'ɤ'), + (0x10792, 'M', 'ɢ'), + (0x10793, 'M', 'ɠ'), + (0x10794, 'M', 'ʛ'), + (0x10795, 'M', 'ħ'), + (0x10796, 'M', 'ʜ'), + (0x10797, 'M', 'ɧ'), + (0x10798, 'M', 'ʄ'), + (0x10799, 'M', 'ʪ'), + (0x1079A, 'M', 'ʫ'), + (0x1079B, 'M', 'ɬ'), + (0x1079C, 'M', '𝼄'), + (0x1079D, 'M', 'ꞎ'), + (0x1079E, 'M', 'ɮ'), + (0x1079F, 'M', '𝼅'), + (0x107A0, 'M', 'ʎ'), + (0x107A1, 'M', '𝼆'), + (0x107A2, 'M', 'ø'), + (0x107A3, 'M', 'ɶ'), + (0x107A4, 'M', 'ɷ'), + (0x107A5, 'M', 'q'), + (0x107A6, 'M', 'ɺ'), + (0x107A7, 'M', '𝼈'), + (0x107A8, 'M', 'ɽ'), + (0x107A9, 'M', 'ɾ'), + (0x107AA, 'M', 'ʀ'), + (0x107AB, 'M', 'ʨ'), + (0x107AC, 'M', 'ʦ'), + (0x107AD, 'M', 'ꭧ'), + (0x107AE, 'M', 'ʧ'), + (0x107AF, 'M', 'ʈ'), + (0x107B0, 'M', 'ⱱ'), + (0x107B1, 'X'), + (0x107B2, 'M', 'ʏ'), + (0x107B3, 'M', 'ʡ'), + (0x107B4, 'M', 'ʢ'), + (0x107B5, 'M', 'ʘ'), + (0x107B6, 'M', 'ǀ'), + (0x107B7, 'M', 'ǁ'), + (0x107B8, 'M', 'ǂ'), + (0x107B9, 'M', '𝼊'), + (0x107BA, 'M', '𝼞'), + (0x107BB, 'X'), + (0x10800, 'V'), + (0x10806, 'X'), + (0x10808, 'V'), + (0x10809, 'X'), + (0x1080A, 'V'), + (0x10836, 'X'), + (0x10837, 'V'), + (0x10839, 'X'), + (0x1083C, 'V'), + (0x1083D, 'X'), + (0x1083F, 'V'), + (0x10856, 'X'), + (0x10857, 'V'), + (0x1089F, 'X'), + (0x108A7, 'V'), + (0x108B0, 'X'), + (0x108E0, 'V'), + (0x108F3, 'X'), + (0x108F4, 'V'), + (0x108F6, 'X'), + (0x108FB, 'V'), + (0x1091C, 'X'), + (0x1091F, 'V'), + (0x1093A, 'X'), + (0x1093F, 'V'), + (0x10940, 'X'), + (0x10980, 'V'), + (0x109B8, 'X'), + (0x109BC, 'V'), + (0x109D0, 'X'), + (0x109D2, 'V'), + (0x10A04, 'X'), + (0x10A05, 'V'), + (0x10A07, 'X'), + (0x10A0C, 'V'), + (0x10A14, 'X'), + (0x10A15, 'V'), + (0x10A18, 'X'), + (0x10A19, 'V'), + (0x10A36, 'X'), + (0x10A38, 'V'), + (0x10A3B, 'X'), + (0x10A3F, 'V'), + (0x10A49, 'X'), + (0x10A50, 'V'), + (0x10A59, 'X'), + (0x10A60, 'V'), + (0x10AA0, 'X'), + (0x10AC0, 'V'), + (0x10AE7, 'X'), + (0x10AEB, 'V'), + (0x10AF7, 'X'), + (0x10B00, 'V'), + ] + +def _seg_56() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x10B36, 'X'), + (0x10B39, 'V'), + (0x10B56, 'X'), + (0x10B58, 'V'), + (0x10B73, 'X'), + (0x10B78, 'V'), + (0x10B92, 'X'), + (0x10B99, 'V'), + (0x10B9D, 'X'), + (0x10BA9, 'V'), + (0x10BB0, 'X'), + (0x10C00, 'V'), + (0x10C49, 'X'), + (0x10C80, 'M', '𐳀'), + (0x10C81, 'M', '𐳁'), + (0x10C82, 'M', '𐳂'), + (0x10C83, 'M', '𐳃'), + (0x10C84, 'M', '𐳄'), + (0x10C85, 'M', '𐳅'), + (0x10C86, 'M', '𐳆'), + (0x10C87, 'M', '𐳇'), + (0x10C88, 'M', '𐳈'), + (0x10C89, 'M', '𐳉'), + (0x10C8A, 'M', '𐳊'), + (0x10C8B, 'M', '𐳋'), + (0x10C8C, 'M', '𐳌'), + (0x10C8D, 'M', '𐳍'), + (0x10C8E, 'M', '𐳎'), + (0x10C8F, 'M', '𐳏'), + (0x10C90, 'M', '𐳐'), + (0x10C91, 'M', '𐳑'), + (0x10C92, 'M', '𐳒'), + (0x10C93, 'M', '𐳓'), + (0x10C94, 'M', '𐳔'), + (0x10C95, 'M', '𐳕'), + (0x10C96, 'M', '𐳖'), + (0x10C97, 'M', '𐳗'), + (0x10C98, 'M', '𐳘'), + (0x10C99, 'M', '𐳙'), + (0x10C9A, 'M', '𐳚'), + (0x10C9B, 'M', '𐳛'), + (0x10C9C, 'M', '𐳜'), + (0x10C9D, 'M', '𐳝'), + (0x10C9E, 'M', '𐳞'), + (0x10C9F, 'M', '𐳟'), + (0x10CA0, 'M', '𐳠'), + (0x10CA1, 'M', '𐳡'), + (0x10CA2, 'M', '𐳢'), + (0x10CA3, 'M', '𐳣'), + (0x10CA4, 'M', '𐳤'), + (0x10CA5, 'M', '𐳥'), + (0x10CA6, 'M', '𐳦'), + (0x10CA7, 'M', '𐳧'), + (0x10CA8, 'M', '𐳨'), + (0x10CA9, 'M', '𐳩'), + (0x10CAA, 'M', '𐳪'), + (0x10CAB, 'M', '𐳫'), + (0x10CAC, 'M', '𐳬'), + (0x10CAD, 'M', '𐳭'), + (0x10CAE, 'M', '𐳮'), + (0x10CAF, 'M', '𐳯'), + (0x10CB0, 'M', '𐳰'), + (0x10CB1, 'M', '𐳱'), + (0x10CB2, 'M', '𐳲'), + (0x10CB3, 'X'), + (0x10CC0, 'V'), + (0x10CF3, 'X'), + (0x10CFA, 'V'), + (0x10D28, 'X'), + (0x10D30, 'V'), + (0x10D3A, 'X'), + (0x10E60, 'V'), + (0x10E7F, 'X'), + (0x10E80, 'V'), + (0x10EAA, 'X'), + (0x10EAB, 'V'), + (0x10EAE, 'X'), + (0x10EB0, 'V'), + (0x10EB2, 'X'), + (0x10EFD, 'V'), + (0x10F28, 'X'), + (0x10F30, 'V'), + (0x10F5A, 'X'), + (0x10F70, 'V'), + (0x10F8A, 'X'), + (0x10FB0, 'V'), + (0x10FCC, 'X'), + (0x10FE0, 'V'), + (0x10FF7, 'X'), + (0x11000, 'V'), + (0x1104E, 'X'), + (0x11052, 'V'), + (0x11076, 'X'), + (0x1107F, 'V'), + (0x110BD, 'X'), + (0x110BE, 'V'), + (0x110C3, 'X'), + (0x110D0, 'V'), + (0x110E9, 'X'), + (0x110F0, 'V'), + ] + +def _seg_57() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x110FA, 'X'), + (0x11100, 'V'), + (0x11135, 'X'), + (0x11136, 'V'), + (0x11148, 'X'), + (0x11150, 'V'), + (0x11177, 'X'), + (0x11180, 'V'), + (0x111E0, 'X'), + (0x111E1, 'V'), + (0x111F5, 'X'), + (0x11200, 'V'), + (0x11212, 'X'), + (0x11213, 'V'), + (0x11242, 'X'), + (0x11280, 'V'), + (0x11287, 'X'), + (0x11288, 'V'), + (0x11289, 'X'), + (0x1128A, 'V'), + (0x1128E, 'X'), + (0x1128F, 'V'), + (0x1129E, 'X'), + (0x1129F, 'V'), + (0x112AA, 'X'), + (0x112B0, 'V'), + (0x112EB, 'X'), + (0x112F0, 'V'), + (0x112FA, 'X'), + (0x11300, 'V'), + (0x11304, 'X'), + (0x11305, 'V'), + (0x1130D, 'X'), + (0x1130F, 'V'), + (0x11311, 'X'), + (0x11313, 'V'), + (0x11329, 'X'), + (0x1132A, 'V'), + (0x11331, 'X'), + (0x11332, 'V'), + (0x11334, 'X'), + (0x11335, 'V'), + (0x1133A, 'X'), + (0x1133B, 'V'), + (0x11345, 'X'), + (0x11347, 'V'), + (0x11349, 'X'), + (0x1134B, 'V'), + (0x1134E, 'X'), + (0x11350, 'V'), + (0x11351, 'X'), + (0x11357, 'V'), + (0x11358, 'X'), + (0x1135D, 'V'), + (0x11364, 'X'), + (0x11366, 'V'), + (0x1136D, 'X'), + (0x11370, 'V'), + (0x11375, 'X'), + (0x11400, 'V'), + (0x1145C, 'X'), + (0x1145D, 'V'), + (0x11462, 'X'), + (0x11480, 'V'), + (0x114C8, 'X'), + (0x114D0, 'V'), + (0x114DA, 'X'), + (0x11580, 'V'), + (0x115B6, 'X'), + (0x115B8, 'V'), + (0x115DE, 'X'), + (0x11600, 'V'), + (0x11645, 'X'), + (0x11650, 'V'), + (0x1165A, 'X'), + (0x11660, 'V'), + (0x1166D, 'X'), + (0x11680, 'V'), + (0x116BA, 'X'), + (0x116C0, 'V'), + (0x116CA, 'X'), + (0x11700, 'V'), + (0x1171B, 'X'), + (0x1171D, 'V'), + (0x1172C, 'X'), + (0x11730, 'V'), + (0x11747, 'X'), + (0x11800, 'V'), + (0x1183C, 'X'), + (0x118A0, 'M', '𑣀'), + (0x118A1, 'M', '𑣁'), + (0x118A2, 'M', '𑣂'), + (0x118A3, 'M', '𑣃'), + (0x118A4, 'M', '𑣄'), + (0x118A5, 'M', '𑣅'), + (0x118A6, 'M', '𑣆'), + (0x118A7, 'M', '𑣇'), + (0x118A8, 'M', '𑣈'), + (0x118A9, 'M', '𑣉'), + (0x118AA, 'M', '𑣊'), + ] + +def _seg_58() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x118AB, 'M', '𑣋'), + (0x118AC, 'M', '𑣌'), + (0x118AD, 'M', '𑣍'), + (0x118AE, 'M', '𑣎'), + (0x118AF, 'M', '𑣏'), + (0x118B0, 'M', '𑣐'), + (0x118B1, 'M', '𑣑'), + (0x118B2, 'M', '𑣒'), + (0x118B3, 'M', '𑣓'), + (0x118B4, 'M', '𑣔'), + (0x118B5, 'M', '𑣕'), + (0x118B6, 'M', '𑣖'), + (0x118B7, 'M', '𑣗'), + (0x118B8, 'M', '𑣘'), + (0x118B9, 'M', '𑣙'), + (0x118BA, 'M', '𑣚'), + (0x118BB, 'M', '𑣛'), + (0x118BC, 'M', '𑣜'), + (0x118BD, 'M', '𑣝'), + (0x118BE, 'M', '𑣞'), + (0x118BF, 'M', '𑣟'), + (0x118C0, 'V'), + (0x118F3, 'X'), + (0x118FF, 'V'), + (0x11907, 'X'), + (0x11909, 'V'), + (0x1190A, 'X'), + (0x1190C, 'V'), + (0x11914, 'X'), + (0x11915, 'V'), + (0x11917, 'X'), + (0x11918, 'V'), + (0x11936, 'X'), + (0x11937, 'V'), + (0x11939, 'X'), + (0x1193B, 'V'), + (0x11947, 'X'), + (0x11950, 'V'), + (0x1195A, 'X'), + (0x119A0, 'V'), + (0x119A8, 'X'), + (0x119AA, 'V'), + (0x119D8, 'X'), + (0x119DA, 'V'), + (0x119E5, 'X'), + (0x11A00, 'V'), + (0x11A48, 'X'), + (0x11A50, 'V'), + (0x11AA3, 'X'), + (0x11AB0, 'V'), + (0x11AF9, 'X'), + (0x11B00, 'V'), + (0x11B0A, 'X'), + (0x11C00, 'V'), + (0x11C09, 'X'), + (0x11C0A, 'V'), + (0x11C37, 'X'), + (0x11C38, 'V'), + (0x11C46, 'X'), + (0x11C50, 'V'), + (0x11C6D, 'X'), + (0x11C70, 'V'), + (0x11C90, 'X'), + (0x11C92, 'V'), + (0x11CA8, 'X'), + (0x11CA9, 'V'), + (0x11CB7, 'X'), + (0x11D00, 'V'), + (0x11D07, 'X'), + (0x11D08, 'V'), + (0x11D0A, 'X'), + (0x11D0B, 'V'), + (0x11D37, 'X'), + (0x11D3A, 'V'), + (0x11D3B, 'X'), + (0x11D3C, 'V'), + (0x11D3E, 'X'), + (0x11D3F, 'V'), + (0x11D48, 'X'), + (0x11D50, 'V'), + (0x11D5A, 'X'), + (0x11D60, 'V'), + (0x11D66, 'X'), + (0x11D67, 'V'), + (0x11D69, 'X'), + (0x11D6A, 'V'), + (0x11D8F, 'X'), + (0x11D90, 'V'), + (0x11D92, 'X'), + (0x11D93, 'V'), + (0x11D99, 'X'), + (0x11DA0, 'V'), + (0x11DAA, 'X'), + (0x11EE0, 'V'), + (0x11EF9, 'X'), + (0x11F00, 'V'), + (0x11F11, 'X'), + (0x11F12, 'V'), + (0x11F3B, 'X'), + (0x11F3E, 'V'), + ] + +def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x11F5A, 'X'), + (0x11FB0, 'V'), + (0x11FB1, 'X'), + (0x11FC0, 'V'), + (0x11FF2, 'X'), + (0x11FFF, 'V'), + (0x1239A, 'X'), + (0x12400, 'V'), + (0x1246F, 'X'), + (0x12470, 'V'), + (0x12475, 'X'), + (0x12480, 'V'), + (0x12544, 'X'), + (0x12F90, 'V'), + (0x12FF3, 'X'), + (0x13000, 'V'), + (0x13430, 'X'), + (0x13440, 'V'), + (0x13456, 'X'), + (0x14400, 'V'), + (0x14647, 'X'), + (0x16800, 'V'), + (0x16A39, 'X'), + (0x16A40, 'V'), + (0x16A5F, 'X'), + (0x16A60, 'V'), + (0x16A6A, 'X'), + (0x16A6E, 'V'), + (0x16ABF, 'X'), + (0x16AC0, 'V'), + (0x16ACA, 'X'), + (0x16AD0, 'V'), + (0x16AEE, 'X'), + (0x16AF0, 'V'), + (0x16AF6, 'X'), + (0x16B00, 'V'), + (0x16B46, 'X'), + (0x16B50, 'V'), + (0x16B5A, 'X'), + (0x16B5B, 'V'), + (0x16B62, 'X'), + (0x16B63, 'V'), + (0x16B78, 'X'), + (0x16B7D, 'V'), + (0x16B90, 'X'), + (0x16E40, 'M', '𖹠'), + (0x16E41, 'M', '𖹡'), + (0x16E42, 'M', '𖹢'), + (0x16E43, 'M', '𖹣'), + (0x16E44, 'M', '𖹤'), + (0x16E45, 'M', '𖹥'), + (0x16E46, 'M', '𖹦'), + (0x16E47, 'M', '𖹧'), + (0x16E48, 'M', '𖹨'), + (0x16E49, 'M', '𖹩'), + (0x16E4A, 'M', '𖹪'), + (0x16E4B, 'M', '𖹫'), + (0x16E4C, 'M', '𖹬'), + (0x16E4D, 'M', '𖹭'), + (0x16E4E, 'M', '𖹮'), + (0x16E4F, 'M', '𖹯'), + (0x16E50, 'M', '𖹰'), + (0x16E51, 'M', '𖹱'), + (0x16E52, 'M', '𖹲'), + (0x16E53, 'M', '𖹳'), + (0x16E54, 'M', '𖹴'), + (0x16E55, 'M', '𖹵'), + (0x16E56, 'M', '𖹶'), + (0x16E57, 'M', '𖹷'), + (0x16E58, 'M', '𖹸'), + (0x16E59, 'M', '𖹹'), + (0x16E5A, 'M', '𖹺'), + (0x16E5B, 'M', '𖹻'), + (0x16E5C, 'M', '𖹼'), + (0x16E5D, 'M', '𖹽'), + (0x16E5E, 'M', '𖹾'), + (0x16E5F, 'M', '𖹿'), + (0x16E60, 'V'), + (0x16E9B, 'X'), + (0x16F00, 'V'), + (0x16F4B, 'X'), + (0x16F4F, 'V'), + (0x16F88, 'X'), + (0x16F8F, 'V'), + (0x16FA0, 'X'), + (0x16FE0, 'V'), + (0x16FE5, 'X'), + (0x16FF0, 'V'), + (0x16FF2, 'X'), + (0x17000, 'V'), + (0x187F8, 'X'), + (0x18800, 'V'), + (0x18CD6, 'X'), + (0x18D00, 'V'), + (0x18D09, 'X'), + (0x1AFF0, 'V'), + (0x1AFF4, 'X'), + (0x1AFF5, 'V'), + (0x1AFFC, 'X'), + (0x1AFFD, 'V'), + ] + +def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1AFFF, 'X'), + (0x1B000, 'V'), + (0x1B123, 'X'), + (0x1B132, 'V'), + (0x1B133, 'X'), + (0x1B150, 'V'), + (0x1B153, 'X'), + (0x1B155, 'V'), + (0x1B156, 'X'), + (0x1B164, 'V'), + (0x1B168, 'X'), + (0x1B170, 'V'), + (0x1B2FC, 'X'), + (0x1BC00, 'V'), + (0x1BC6B, 'X'), + (0x1BC70, 'V'), + (0x1BC7D, 'X'), + (0x1BC80, 'V'), + (0x1BC89, 'X'), + (0x1BC90, 'V'), + (0x1BC9A, 'X'), + (0x1BC9C, 'V'), + (0x1BCA0, 'I'), + (0x1BCA4, 'X'), + (0x1CF00, 'V'), + (0x1CF2E, 'X'), + (0x1CF30, 'V'), + (0x1CF47, 'X'), + (0x1CF50, 'V'), + (0x1CFC4, 'X'), + (0x1D000, 'V'), + (0x1D0F6, 'X'), + (0x1D100, 'V'), + (0x1D127, 'X'), + (0x1D129, 'V'), + (0x1D15E, 'M', '𝅗𝅥'), + (0x1D15F, 'M', '𝅘𝅥'), + (0x1D160, 'M', '𝅘𝅥𝅮'), + (0x1D161, 'M', '𝅘𝅥𝅯'), + (0x1D162, 'M', '𝅘𝅥𝅰'), + (0x1D163, 'M', '𝅘𝅥𝅱'), + (0x1D164, 'M', '𝅘𝅥𝅲'), + (0x1D165, 'V'), + (0x1D173, 'X'), + (0x1D17B, 'V'), + (0x1D1BB, 'M', '𝆹𝅥'), + (0x1D1BC, 'M', '𝆺𝅥'), + (0x1D1BD, 'M', '𝆹𝅥𝅮'), + (0x1D1BE, 'M', '𝆺𝅥𝅮'), + (0x1D1BF, 'M', '𝆹𝅥𝅯'), + (0x1D1C0, 'M', '𝆺𝅥𝅯'), + (0x1D1C1, 'V'), + (0x1D1EB, 'X'), + (0x1D200, 'V'), + (0x1D246, 'X'), + (0x1D2C0, 'V'), + (0x1D2D4, 'X'), + (0x1D2E0, 'V'), + (0x1D2F4, 'X'), + (0x1D300, 'V'), + (0x1D357, 'X'), + (0x1D360, 'V'), + (0x1D379, 'X'), + (0x1D400, 'M', 'a'), + (0x1D401, 'M', 'b'), + (0x1D402, 'M', 'c'), + (0x1D403, 'M', 'd'), + (0x1D404, 'M', 'e'), + (0x1D405, 'M', 'f'), + (0x1D406, 'M', 'g'), + (0x1D407, 'M', 'h'), + (0x1D408, 'M', 'i'), + (0x1D409, 'M', 'j'), + (0x1D40A, 'M', 'k'), + (0x1D40B, 'M', 'l'), + (0x1D40C, 'M', 'm'), + (0x1D40D, 'M', 'n'), + (0x1D40E, 'M', 'o'), + (0x1D40F, 'M', 'p'), + (0x1D410, 'M', 'q'), + (0x1D411, 'M', 'r'), + (0x1D412, 'M', 's'), + (0x1D413, 'M', 't'), + (0x1D414, 'M', 'u'), + (0x1D415, 'M', 'v'), + (0x1D416, 'M', 'w'), + (0x1D417, 'M', 'x'), + (0x1D418, 'M', 'y'), + (0x1D419, 'M', 'z'), + (0x1D41A, 'M', 'a'), + (0x1D41B, 'M', 'b'), + (0x1D41C, 'M', 'c'), + (0x1D41D, 'M', 'd'), + (0x1D41E, 'M', 'e'), + (0x1D41F, 'M', 'f'), + (0x1D420, 'M', 'g'), + (0x1D421, 'M', 'h'), + (0x1D422, 'M', 'i'), + (0x1D423, 'M', 'j'), + (0x1D424, 'M', 'k'), + ] + +def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D425, 'M', 'l'), + (0x1D426, 'M', 'm'), + (0x1D427, 'M', 'n'), + (0x1D428, 'M', 'o'), + (0x1D429, 'M', 'p'), + (0x1D42A, 'M', 'q'), + (0x1D42B, 'M', 'r'), + (0x1D42C, 'M', 's'), + (0x1D42D, 'M', 't'), + (0x1D42E, 'M', 'u'), + (0x1D42F, 'M', 'v'), + (0x1D430, 'M', 'w'), + (0x1D431, 'M', 'x'), + (0x1D432, 'M', 'y'), + (0x1D433, 'M', 'z'), + (0x1D434, 'M', 'a'), + (0x1D435, 'M', 'b'), + (0x1D436, 'M', 'c'), + (0x1D437, 'M', 'd'), + (0x1D438, 'M', 'e'), + (0x1D439, 'M', 'f'), + (0x1D43A, 'M', 'g'), + (0x1D43B, 'M', 'h'), + (0x1D43C, 'M', 'i'), + (0x1D43D, 'M', 'j'), + (0x1D43E, 'M', 'k'), + (0x1D43F, 'M', 'l'), + (0x1D440, 'M', 'm'), + (0x1D441, 'M', 'n'), + (0x1D442, 'M', 'o'), + (0x1D443, 'M', 'p'), + (0x1D444, 'M', 'q'), + (0x1D445, 'M', 'r'), + (0x1D446, 'M', 's'), + (0x1D447, 'M', 't'), + (0x1D448, 'M', 'u'), + (0x1D449, 'M', 'v'), + (0x1D44A, 'M', 'w'), + (0x1D44B, 'M', 'x'), + (0x1D44C, 'M', 'y'), + (0x1D44D, 'M', 'z'), + (0x1D44E, 'M', 'a'), + (0x1D44F, 'M', 'b'), + (0x1D450, 'M', 'c'), + (0x1D451, 'M', 'd'), + (0x1D452, 'M', 'e'), + (0x1D453, 'M', 'f'), + (0x1D454, 'M', 'g'), + (0x1D455, 'X'), + (0x1D456, 'M', 'i'), + (0x1D457, 'M', 'j'), + (0x1D458, 'M', 'k'), + (0x1D459, 'M', 'l'), + (0x1D45A, 'M', 'm'), + (0x1D45B, 'M', 'n'), + (0x1D45C, 'M', 'o'), + (0x1D45D, 'M', 'p'), + (0x1D45E, 'M', 'q'), + (0x1D45F, 'M', 'r'), + (0x1D460, 'M', 's'), + (0x1D461, 'M', 't'), + (0x1D462, 'M', 'u'), + (0x1D463, 'M', 'v'), + (0x1D464, 'M', 'w'), + (0x1D465, 'M', 'x'), + (0x1D466, 'M', 'y'), + (0x1D467, 'M', 'z'), + (0x1D468, 'M', 'a'), + (0x1D469, 'M', 'b'), + (0x1D46A, 'M', 'c'), + (0x1D46B, 'M', 'd'), + (0x1D46C, 'M', 'e'), + (0x1D46D, 'M', 'f'), + (0x1D46E, 'M', 'g'), + (0x1D46F, 'M', 'h'), + (0x1D470, 'M', 'i'), + (0x1D471, 'M', 'j'), + (0x1D472, 'M', 'k'), + (0x1D473, 'M', 'l'), + (0x1D474, 'M', 'm'), + (0x1D475, 'M', 'n'), + (0x1D476, 'M', 'o'), + (0x1D477, 'M', 'p'), + (0x1D478, 'M', 'q'), + (0x1D479, 'M', 'r'), + (0x1D47A, 'M', 's'), + (0x1D47B, 'M', 't'), + (0x1D47C, 'M', 'u'), + (0x1D47D, 'M', 'v'), + (0x1D47E, 'M', 'w'), + (0x1D47F, 'M', 'x'), + (0x1D480, 'M', 'y'), + (0x1D481, 'M', 'z'), + (0x1D482, 'M', 'a'), + (0x1D483, 'M', 'b'), + (0x1D484, 'M', 'c'), + (0x1D485, 'M', 'd'), + (0x1D486, 'M', 'e'), + (0x1D487, 'M', 'f'), + (0x1D488, 'M', 'g'), + ] + +def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D489, 'M', 'h'), + (0x1D48A, 'M', 'i'), + (0x1D48B, 'M', 'j'), + (0x1D48C, 'M', 'k'), + (0x1D48D, 'M', 'l'), + (0x1D48E, 'M', 'm'), + (0x1D48F, 'M', 'n'), + (0x1D490, 'M', 'o'), + (0x1D491, 'M', 'p'), + (0x1D492, 'M', 'q'), + (0x1D493, 'M', 'r'), + (0x1D494, 'M', 's'), + (0x1D495, 'M', 't'), + (0x1D496, 'M', 'u'), + (0x1D497, 'M', 'v'), + (0x1D498, 'M', 'w'), + (0x1D499, 'M', 'x'), + (0x1D49A, 'M', 'y'), + (0x1D49B, 'M', 'z'), + (0x1D49C, 'M', 'a'), + (0x1D49D, 'X'), + (0x1D49E, 'M', 'c'), + (0x1D49F, 'M', 'd'), + (0x1D4A0, 'X'), + (0x1D4A2, 'M', 'g'), + (0x1D4A3, 'X'), + (0x1D4A5, 'M', 'j'), + (0x1D4A6, 'M', 'k'), + (0x1D4A7, 'X'), + (0x1D4A9, 'M', 'n'), + (0x1D4AA, 'M', 'o'), + (0x1D4AB, 'M', 'p'), + (0x1D4AC, 'M', 'q'), + (0x1D4AD, 'X'), + (0x1D4AE, 'M', 's'), + (0x1D4AF, 'M', 't'), + (0x1D4B0, 'M', 'u'), + (0x1D4B1, 'M', 'v'), + (0x1D4B2, 'M', 'w'), + (0x1D4B3, 'M', 'x'), + (0x1D4B4, 'M', 'y'), + (0x1D4B5, 'M', 'z'), + (0x1D4B6, 'M', 'a'), + (0x1D4B7, 'M', 'b'), + (0x1D4B8, 'M', 'c'), + (0x1D4B9, 'M', 'd'), + (0x1D4BA, 'X'), + (0x1D4BB, 'M', 'f'), + (0x1D4BC, 'X'), + (0x1D4BD, 'M', 'h'), + (0x1D4BE, 'M', 'i'), + (0x1D4BF, 'M', 'j'), + (0x1D4C0, 'M', 'k'), + (0x1D4C1, 'M', 'l'), + (0x1D4C2, 'M', 'm'), + (0x1D4C3, 'M', 'n'), + (0x1D4C4, 'X'), + (0x1D4C5, 'M', 'p'), + (0x1D4C6, 'M', 'q'), + (0x1D4C7, 'M', 'r'), + (0x1D4C8, 'M', 's'), + (0x1D4C9, 'M', 't'), + (0x1D4CA, 'M', 'u'), + (0x1D4CB, 'M', 'v'), + (0x1D4CC, 'M', 'w'), + (0x1D4CD, 'M', 'x'), + (0x1D4CE, 'M', 'y'), + (0x1D4CF, 'M', 'z'), + (0x1D4D0, 'M', 'a'), + (0x1D4D1, 'M', 'b'), + (0x1D4D2, 'M', 'c'), + (0x1D4D3, 'M', 'd'), + (0x1D4D4, 'M', 'e'), + (0x1D4D5, 'M', 'f'), + (0x1D4D6, 'M', 'g'), + (0x1D4D7, 'M', 'h'), + (0x1D4D8, 'M', 'i'), + (0x1D4D9, 'M', 'j'), + (0x1D4DA, 'M', 'k'), + (0x1D4DB, 'M', 'l'), + (0x1D4DC, 'M', 'm'), + (0x1D4DD, 'M', 'n'), + (0x1D4DE, 'M', 'o'), + (0x1D4DF, 'M', 'p'), + (0x1D4E0, 'M', 'q'), + (0x1D4E1, 'M', 'r'), + (0x1D4E2, 'M', 's'), + (0x1D4E3, 'M', 't'), + (0x1D4E4, 'M', 'u'), + (0x1D4E5, 'M', 'v'), + (0x1D4E6, 'M', 'w'), + (0x1D4E7, 'M', 'x'), + (0x1D4E8, 'M', 'y'), + (0x1D4E9, 'M', 'z'), + (0x1D4EA, 'M', 'a'), + (0x1D4EB, 'M', 'b'), + (0x1D4EC, 'M', 'c'), + (0x1D4ED, 'M', 'd'), + (0x1D4EE, 'M', 'e'), + (0x1D4EF, 'M', 'f'), + ] + +def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D4F0, 'M', 'g'), + (0x1D4F1, 'M', 'h'), + (0x1D4F2, 'M', 'i'), + (0x1D4F3, 'M', 'j'), + (0x1D4F4, 'M', 'k'), + (0x1D4F5, 'M', 'l'), + (0x1D4F6, 'M', 'm'), + (0x1D4F7, 'M', 'n'), + (0x1D4F8, 'M', 'o'), + (0x1D4F9, 'M', 'p'), + (0x1D4FA, 'M', 'q'), + (0x1D4FB, 'M', 'r'), + (0x1D4FC, 'M', 's'), + (0x1D4FD, 'M', 't'), + (0x1D4FE, 'M', 'u'), + (0x1D4FF, 'M', 'v'), + (0x1D500, 'M', 'w'), + (0x1D501, 'M', 'x'), + (0x1D502, 'M', 'y'), + (0x1D503, 'M', 'z'), + (0x1D504, 'M', 'a'), + (0x1D505, 'M', 'b'), + (0x1D506, 'X'), + (0x1D507, 'M', 'd'), + (0x1D508, 'M', 'e'), + (0x1D509, 'M', 'f'), + (0x1D50A, 'M', 'g'), + (0x1D50B, 'X'), + (0x1D50D, 'M', 'j'), + (0x1D50E, 'M', 'k'), + (0x1D50F, 'M', 'l'), + (0x1D510, 'M', 'm'), + (0x1D511, 'M', 'n'), + (0x1D512, 'M', 'o'), + (0x1D513, 'M', 'p'), + (0x1D514, 'M', 'q'), + (0x1D515, 'X'), + (0x1D516, 'M', 's'), + (0x1D517, 'M', 't'), + (0x1D518, 'M', 'u'), + (0x1D519, 'M', 'v'), + (0x1D51A, 'M', 'w'), + (0x1D51B, 'M', 'x'), + (0x1D51C, 'M', 'y'), + (0x1D51D, 'X'), + (0x1D51E, 'M', 'a'), + (0x1D51F, 'M', 'b'), + (0x1D520, 'M', 'c'), + (0x1D521, 'M', 'd'), + (0x1D522, 'M', 'e'), + (0x1D523, 'M', 'f'), + (0x1D524, 'M', 'g'), + (0x1D525, 'M', 'h'), + (0x1D526, 'M', 'i'), + (0x1D527, 'M', 'j'), + (0x1D528, 'M', 'k'), + (0x1D529, 'M', 'l'), + (0x1D52A, 'M', 'm'), + (0x1D52B, 'M', 'n'), + (0x1D52C, 'M', 'o'), + (0x1D52D, 'M', 'p'), + (0x1D52E, 'M', 'q'), + (0x1D52F, 'M', 'r'), + (0x1D530, 'M', 's'), + (0x1D531, 'M', 't'), + (0x1D532, 'M', 'u'), + (0x1D533, 'M', 'v'), + (0x1D534, 'M', 'w'), + (0x1D535, 'M', 'x'), + (0x1D536, 'M', 'y'), + (0x1D537, 'M', 'z'), + (0x1D538, 'M', 'a'), + (0x1D539, 'M', 'b'), + (0x1D53A, 'X'), + (0x1D53B, 'M', 'd'), + (0x1D53C, 'M', 'e'), + (0x1D53D, 'M', 'f'), + (0x1D53E, 'M', 'g'), + (0x1D53F, 'X'), + (0x1D540, 'M', 'i'), + (0x1D541, 'M', 'j'), + (0x1D542, 'M', 'k'), + (0x1D543, 'M', 'l'), + (0x1D544, 'M', 'm'), + (0x1D545, 'X'), + (0x1D546, 'M', 'o'), + (0x1D547, 'X'), + (0x1D54A, 'M', 's'), + (0x1D54B, 'M', 't'), + (0x1D54C, 'M', 'u'), + (0x1D54D, 'M', 'v'), + (0x1D54E, 'M', 'w'), + (0x1D54F, 'M', 'x'), + (0x1D550, 'M', 'y'), + (0x1D551, 'X'), + (0x1D552, 'M', 'a'), + (0x1D553, 'M', 'b'), + (0x1D554, 'M', 'c'), + (0x1D555, 'M', 'd'), + (0x1D556, 'M', 'e'), + ] + +def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D557, 'M', 'f'), + (0x1D558, 'M', 'g'), + (0x1D559, 'M', 'h'), + (0x1D55A, 'M', 'i'), + (0x1D55B, 'M', 'j'), + (0x1D55C, 'M', 'k'), + (0x1D55D, 'M', 'l'), + (0x1D55E, 'M', 'm'), + (0x1D55F, 'M', 'n'), + (0x1D560, 'M', 'o'), + (0x1D561, 'M', 'p'), + (0x1D562, 'M', 'q'), + (0x1D563, 'M', 'r'), + (0x1D564, 'M', 's'), + (0x1D565, 'M', 't'), + (0x1D566, 'M', 'u'), + (0x1D567, 'M', 'v'), + (0x1D568, 'M', 'w'), + (0x1D569, 'M', 'x'), + (0x1D56A, 'M', 'y'), + (0x1D56B, 'M', 'z'), + (0x1D56C, 'M', 'a'), + (0x1D56D, 'M', 'b'), + (0x1D56E, 'M', 'c'), + (0x1D56F, 'M', 'd'), + (0x1D570, 'M', 'e'), + (0x1D571, 'M', 'f'), + (0x1D572, 'M', 'g'), + (0x1D573, 'M', 'h'), + (0x1D574, 'M', 'i'), + (0x1D575, 'M', 'j'), + (0x1D576, 'M', 'k'), + (0x1D577, 'M', 'l'), + (0x1D578, 'M', 'm'), + (0x1D579, 'M', 'n'), + (0x1D57A, 'M', 'o'), + (0x1D57B, 'M', 'p'), + (0x1D57C, 'M', 'q'), + (0x1D57D, 'M', 'r'), + (0x1D57E, 'M', 's'), + (0x1D57F, 'M', 't'), + (0x1D580, 'M', 'u'), + (0x1D581, 'M', 'v'), + (0x1D582, 'M', 'w'), + (0x1D583, 'M', 'x'), + (0x1D584, 'M', 'y'), + (0x1D585, 'M', 'z'), + (0x1D586, 'M', 'a'), + (0x1D587, 'M', 'b'), + (0x1D588, 'M', 'c'), + (0x1D589, 'M', 'd'), + (0x1D58A, 'M', 'e'), + (0x1D58B, 'M', 'f'), + (0x1D58C, 'M', 'g'), + (0x1D58D, 'M', 'h'), + (0x1D58E, 'M', 'i'), + (0x1D58F, 'M', 'j'), + (0x1D590, 'M', 'k'), + (0x1D591, 'M', 'l'), + (0x1D592, 'M', 'm'), + (0x1D593, 'M', 'n'), + (0x1D594, 'M', 'o'), + (0x1D595, 'M', 'p'), + (0x1D596, 'M', 'q'), + (0x1D597, 'M', 'r'), + (0x1D598, 'M', 's'), + (0x1D599, 'M', 't'), + (0x1D59A, 'M', 'u'), + (0x1D59B, 'M', 'v'), + (0x1D59C, 'M', 'w'), + (0x1D59D, 'M', 'x'), + (0x1D59E, 'M', 'y'), + (0x1D59F, 'M', 'z'), + (0x1D5A0, 'M', 'a'), + (0x1D5A1, 'M', 'b'), + (0x1D5A2, 'M', 'c'), + (0x1D5A3, 'M', 'd'), + (0x1D5A4, 'M', 'e'), + (0x1D5A5, 'M', 'f'), + (0x1D5A6, 'M', 'g'), + (0x1D5A7, 'M', 'h'), + (0x1D5A8, 'M', 'i'), + (0x1D5A9, 'M', 'j'), + (0x1D5AA, 'M', 'k'), + (0x1D5AB, 'M', 'l'), + (0x1D5AC, 'M', 'm'), + (0x1D5AD, 'M', 'n'), + (0x1D5AE, 'M', 'o'), + (0x1D5AF, 'M', 'p'), + (0x1D5B0, 'M', 'q'), + (0x1D5B1, 'M', 'r'), + (0x1D5B2, 'M', 's'), + (0x1D5B3, 'M', 't'), + (0x1D5B4, 'M', 'u'), + (0x1D5B5, 'M', 'v'), + (0x1D5B6, 'M', 'w'), + (0x1D5B7, 'M', 'x'), + (0x1D5B8, 'M', 'y'), + (0x1D5B9, 'M', 'z'), + (0x1D5BA, 'M', 'a'), + ] + +def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D5BB, 'M', 'b'), + (0x1D5BC, 'M', 'c'), + (0x1D5BD, 'M', 'd'), + (0x1D5BE, 'M', 'e'), + (0x1D5BF, 'M', 'f'), + (0x1D5C0, 'M', 'g'), + (0x1D5C1, 'M', 'h'), + (0x1D5C2, 'M', 'i'), + (0x1D5C3, 'M', 'j'), + (0x1D5C4, 'M', 'k'), + (0x1D5C5, 'M', 'l'), + (0x1D5C6, 'M', 'm'), + (0x1D5C7, 'M', 'n'), + (0x1D5C8, 'M', 'o'), + (0x1D5C9, 'M', 'p'), + (0x1D5CA, 'M', 'q'), + (0x1D5CB, 'M', 'r'), + (0x1D5CC, 'M', 's'), + (0x1D5CD, 'M', 't'), + (0x1D5CE, 'M', 'u'), + (0x1D5CF, 'M', 'v'), + (0x1D5D0, 'M', 'w'), + (0x1D5D1, 'M', 'x'), + (0x1D5D2, 'M', 'y'), + (0x1D5D3, 'M', 'z'), + (0x1D5D4, 'M', 'a'), + (0x1D5D5, 'M', 'b'), + (0x1D5D6, 'M', 'c'), + (0x1D5D7, 'M', 'd'), + (0x1D5D8, 'M', 'e'), + (0x1D5D9, 'M', 'f'), + (0x1D5DA, 'M', 'g'), + (0x1D5DB, 'M', 'h'), + (0x1D5DC, 'M', 'i'), + (0x1D5DD, 'M', 'j'), + (0x1D5DE, 'M', 'k'), + (0x1D5DF, 'M', 'l'), + (0x1D5E0, 'M', 'm'), + (0x1D5E1, 'M', 'n'), + (0x1D5E2, 'M', 'o'), + (0x1D5E3, 'M', 'p'), + (0x1D5E4, 'M', 'q'), + (0x1D5E5, 'M', 'r'), + (0x1D5E6, 'M', 's'), + (0x1D5E7, 'M', 't'), + (0x1D5E8, 'M', 'u'), + (0x1D5E9, 'M', 'v'), + (0x1D5EA, 'M', 'w'), + (0x1D5EB, 'M', 'x'), + (0x1D5EC, 'M', 'y'), + (0x1D5ED, 'M', 'z'), + (0x1D5EE, 'M', 'a'), + (0x1D5EF, 'M', 'b'), + (0x1D5F0, 'M', 'c'), + (0x1D5F1, 'M', 'd'), + (0x1D5F2, 'M', 'e'), + (0x1D5F3, 'M', 'f'), + (0x1D5F4, 'M', 'g'), + (0x1D5F5, 'M', 'h'), + (0x1D5F6, 'M', 'i'), + (0x1D5F7, 'M', 'j'), + (0x1D5F8, 'M', 'k'), + (0x1D5F9, 'M', 'l'), + (0x1D5FA, 'M', 'm'), + (0x1D5FB, 'M', 'n'), + (0x1D5FC, 'M', 'o'), + (0x1D5FD, 'M', 'p'), + (0x1D5FE, 'M', 'q'), + (0x1D5FF, 'M', 'r'), + (0x1D600, 'M', 's'), + (0x1D601, 'M', 't'), + (0x1D602, 'M', 'u'), + (0x1D603, 'M', 'v'), + (0x1D604, 'M', 'w'), + (0x1D605, 'M', 'x'), + (0x1D606, 'M', 'y'), + (0x1D607, 'M', 'z'), + (0x1D608, 'M', 'a'), + (0x1D609, 'M', 'b'), + (0x1D60A, 'M', 'c'), + (0x1D60B, 'M', 'd'), + (0x1D60C, 'M', 'e'), + (0x1D60D, 'M', 'f'), + (0x1D60E, 'M', 'g'), + (0x1D60F, 'M', 'h'), + (0x1D610, 'M', 'i'), + (0x1D611, 'M', 'j'), + (0x1D612, 'M', 'k'), + (0x1D613, 'M', 'l'), + (0x1D614, 'M', 'm'), + (0x1D615, 'M', 'n'), + (0x1D616, 'M', 'o'), + (0x1D617, 'M', 'p'), + (0x1D618, 'M', 'q'), + (0x1D619, 'M', 'r'), + (0x1D61A, 'M', 's'), + (0x1D61B, 'M', 't'), + (0x1D61C, 'M', 'u'), + (0x1D61D, 'M', 'v'), + (0x1D61E, 'M', 'w'), + ] + +def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D61F, 'M', 'x'), + (0x1D620, 'M', 'y'), + (0x1D621, 'M', 'z'), + (0x1D622, 'M', 'a'), + (0x1D623, 'M', 'b'), + (0x1D624, 'M', 'c'), + (0x1D625, 'M', 'd'), + (0x1D626, 'M', 'e'), + (0x1D627, 'M', 'f'), + (0x1D628, 'M', 'g'), + (0x1D629, 'M', 'h'), + (0x1D62A, 'M', 'i'), + (0x1D62B, 'M', 'j'), + (0x1D62C, 'M', 'k'), + (0x1D62D, 'M', 'l'), + (0x1D62E, 'M', 'm'), + (0x1D62F, 'M', 'n'), + (0x1D630, 'M', 'o'), + (0x1D631, 'M', 'p'), + (0x1D632, 'M', 'q'), + (0x1D633, 'M', 'r'), + (0x1D634, 'M', 's'), + (0x1D635, 'M', 't'), + (0x1D636, 'M', 'u'), + (0x1D637, 'M', 'v'), + (0x1D638, 'M', 'w'), + (0x1D639, 'M', 'x'), + (0x1D63A, 'M', 'y'), + (0x1D63B, 'M', 'z'), + (0x1D63C, 'M', 'a'), + (0x1D63D, 'M', 'b'), + (0x1D63E, 'M', 'c'), + (0x1D63F, 'M', 'd'), + (0x1D640, 'M', 'e'), + (0x1D641, 'M', 'f'), + (0x1D642, 'M', 'g'), + (0x1D643, 'M', 'h'), + (0x1D644, 'M', 'i'), + (0x1D645, 'M', 'j'), + (0x1D646, 'M', 'k'), + (0x1D647, 'M', 'l'), + (0x1D648, 'M', 'm'), + (0x1D649, 'M', 'n'), + (0x1D64A, 'M', 'o'), + (0x1D64B, 'M', 'p'), + (0x1D64C, 'M', 'q'), + (0x1D64D, 'M', 'r'), + (0x1D64E, 'M', 's'), + (0x1D64F, 'M', 't'), + (0x1D650, 'M', 'u'), + (0x1D651, 'M', 'v'), + (0x1D652, 'M', 'w'), + (0x1D653, 'M', 'x'), + (0x1D654, 'M', 'y'), + (0x1D655, 'M', 'z'), + (0x1D656, 'M', 'a'), + (0x1D657, 'M', 'b'), + (0x1D658, 'M', 'c'), + (0x1D659, 'M', 'd'), + (0x1D65A, 'M', 'e'), + (0x1D65B, 'M', 'f'), + (0x1D65C, 'M', 'g'), + (0x1D65D, 'M', 'h'), + (0x1D65E, 'M', 'i'), + (0x1D65F, 'M', 'j'), + (0x1D660, 'M', 'k'), + (0x1D661, 'M', 'l'), + (0x1D662, 'M', 'm'), + (0x1D663, 'M', 'n'), + (0x1D664, 'M', 'o'), + (0x1D665, 'M', 'p'), + (0x1D666, 'M', 'q'), + (0x1D667, 'M', 'r'), + (0x1D668, 'M', 's'), + (0x1D669, 'M', 't'), + (0x1D66A, 'M', 'u'), + (0x1D66B, 'M', 'v'), + (0x1D66C, 'M', 'w'), + (0x1D66D, 'M', 'x'), + (0x1D66E, 'M', 'y'), + (0x1D66F, 'M', 'z'), + (0x1D670, 'M', 'a'), + (0x1D671, 'M', 'b'), + (0x1D672, 'M', 'c'), + (0x1D673, 'M', 'd'), + (0x1D674, 'M', 'e'), + (0x1D675, 'M', 'f'), + (0x1D676, 'M', 'g'), + (0x1D677, 'M', 'h'), + (0x1D678, 'M', 'i'), + (0x1D679, 'M', 'j'), + (0x1D67A, 'M', 'k'), + (0x1D67B, 'M', 'l'), + (0x1D67C, 'M', 'm'), + (0x1D67D, 'M', 'n'), + (0x1D67E, 'M', 'o'), + (0x1D67F, 'M', 'p'), + (0x1D680, 'M', 'q'), + (0x1D681, 'M', 'r'), + (0x1D682, 'M', 's'), + ] + +def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D683, 'M', 't'), + (0x1D684, 'M', 'u'), + (0x1D685, 'M', 'v'), + (0x1D686, 'M', 'w'), + (0x1D687, 'M', 'x'), + (0x1D688, 'M', 'y'), + (0x1D689, 'M', 'z'), + (0x1D68A, 'M', 'a'), + (0x1D68B, 'M', 'b'), + (0x1D68C, 'M', 'c'), + (0x1D68D, 'M', 'd'), + (0x1D68E, 'M', 'e'), + (0x1D68F, 'M', 'f'), + (0x1D690, 'M', 'g'), + (0x1D691, 'M', 'h'), + (0x1D692, 'M', 'i'), + (0x1D693, 'M', 'j'), + (0x1D694, 'M', 'k'), + (0x1D695, 'M', 'l'), + (0x1D696, 'M', 'm'), + (0x1D697, 'M', 'n'), + (0x1D698, 'M', 'o'), + (0x1D699, 'M', 'p'), + (0x1D69A, 'M', 'q'), + (0x1D69B, 'M', 'r'), + (0x1D69C, 'M', 's'), + (0x1D69D, 'M', 't'), + (0x1D69E, 'M', 'u'), + (0x1D69F, 'M', 'v'), + (0x1D6A0, 'M', 'w'), + (0x1D6A1, 'M', 'x'), + (0x1D6A2, 'M', 'y'), + (0x1D6A3, 'M', 'z'), + (0x1D6A4, 'M', 'ı'), + (0x1D6A5, 'M', 'ȷ'), + (0x1D6A6, 'X'), + (0x1D6A8, 'M', 'α'), + (0x1D6A9, 'M', 'β'), + (0x1D6AA, 'M', 'γ'), + (0x1D6AB, 'M', 'δ'), + (0x1D6AC, 'M', 'ε'), + (0x1D6AD, 'M', 'ζ'), + (0x1D6AE, 'M', 'η'), + (0x1D6AF, 'M', 'θ'), + (0x1D6B0, 'M', 'ι'), + (0x1D6B1, 'M', 'κ'), + (0x1D6B2, 'M', 'λ'), + (0x1D6B3, 'M', 'μ'), + (0x1D6B4, 'M', 'ν'), + (0x1D6B5, 'M', 'ξ'), + (0x1D6B6, 'M', 'ο'), + (0x1D6B7, 'M', 'π'), + (0x1D6B8, 'M', 'ρ'), + (0x1D6B9, 'M', 'θ'), + (0x1D6BA, 'M', 'σ'), + (0x1D6BB, 'M', 'τ'), + (0x1D6BC, 'M', 'υ'), + (0x1D6BD, 'M', 'φ'), + (0x1D6BE, 'M', 'χ'), + (0x1D6BF, 'M', 'ψ'), + (0x1D6C0, 'M', 'ω'), + (0x1D6C1, 'M', '∇'), + (0x1D6C2, 'M', 'α'), + (0x1D6C3, 'M', 'β'), + (0x1D6C4, 'M', 'γ'), + (0x1D6C5, 'M', 'δ'), + (0x1D6C6, 'M', 'ε'), + (0x1D6C7, 'M', 'ζ'), + (0x1D6C8, 'M', 'η'), + (0x1D6C9, 'M', 'θ'), + (0x1D6CA, 'M', 'ι'), + (0x1D6CB, 'M', 'κ'), + (0x1D6CC, 'M', 'λ'), + (0x1D6CD, 'M', 'μ'), + (0x1D6CE, 'M', 'ν'), + (0x1D6CF, 'M', 'ξ'), + (0x1D6D0, 'M', 'ο'), + (0x1D6D1, 'M', 'π'), + (0x1D6D2, 'M', 'ρ'), + (0x1D6D3, 'M', 'σ'), + (0x1D6D5, 'M', 'τ'), + (0x1D6D6, 'M', 'υ'), + (0x1D6D7, 'M', 'φ'), + (0x1D6D8, 'M', 'χ'), + (0x1D6D9, 'M', 'ψ'), + (0x1D6DA, 'M', 'ω'), + (0x1D6DB, 'M', '∂'), + (0x1D6DC, 'M', 'ε'), + (0x1D6DD, 'M', 'θ'), + (0x1D6DE, 'M', 'κ'), + (0x1D6DF, 'M', 'φ'), + (0x1D6E0, 'M', 'ρ'), + (0x1D6E1, 'M', 'π'), + (0x1D6E2, 'M', 'α'), + (0x1D6E3, 'M', 'β'), + (0x1D6E4, 'M', 'γ'), + (0x1D6E5, 'M', 'δ'), + (0x1D6E6, 'M', 'ε'), + (0x1D6E7, 'M', 'ζ'), + (0x1D6E8, 'M', 'η'), + ] + +def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D6E9, 'M', 'θ'), + (0x1D6EA, 'M', 'ι'), + (0x1D6EB, 'M', 'κ'), + (0x1D6EC, 'M', 'λ'), + (0x1D6ED, 'M', 'μ'), + (0x1D6EE, 'M', 'ν'), + (0x1D6EF, 'M', 'ξ'), + (0x1D6F0, 'M', 'ο'), + (0x1D6F1, 'M', 'π'), + (0x1D6F2, 'M', 'ρ'), + (0x1D6F3, 'M', 'θ'), + (0x1D6F4, 'M', 'σ'), + (0x1D6F5, 'M', 'τ'), + (0x1D6F6, 'M', 'υ'), + (0x1D6F7, 'M', 'φ'), + (0x1D6F8, 'M', 'χ'), + (0x1D6F9, 'M', 'ψ'), + (0x1D6FA, 'M', 'ω'), + (0x1D6FB, 'M', '∇'), + (0x1D6FC, 'M', 'α'), + (0x1D6FD, 'M', 'β'), + (0x1D6FE, 'M', 'γ'), + (0x1D6FF, 'M', 'δ'), + (0x1D700, 'M', 'ε'), + (0x1D701, 'M', 'ζ'), + (0x1D702, 'M', 'η'), + (0x1D703, 'M', 'θ'), + (0x1D704, 'M', 'ι'), + (0x1D705, 'M', 'κ'), + (0x1D706, 'M', 'λ'), + (0x1D707, 'M', 'μ'), + (0x1D708, 'M', 'ν'), + (0x1D709, 'M', 'ξ'), + (0x1D70A, 'M', 'ο'), + (0x1D70B, 'M', 'π'), + (0x1D70C, 'M', 'ρ'), + (0x1D70D, 'M', 'σ'), + (0x1D70F, 'M', 'τ'), + (0x1D710, 'M', 'υ'), + (0x1D711, 'M', 'φ'), + (0x1D712, 'M', 'χ'), + (0x1D713, 'M', 'ψ'), + (0x1D714, 'M', 'ω'), + (0x1D715, 'M', '∂'), + (0x1D716, 'M', 'ε'), + (0x1D717, 'M', 'θ'), + (0x1D718, 'M', 'κ'), + (0x1D719, 'M', 'φ'), + (0x1D71A, 'M', 'ρ'), + (0x1D71B, 'M', 'π'), + (0x1D71C, 'M', 'α'), + (0x1D71D, 'M', 'β'), + (0x1D71E, 'M', 'γ'), + (0x1D71F, 'M', 'δ'), + (0x1D720, 'M', 'ε'), + (0x1D721, 'M', 'ζ'), + (0x1D722, 'M', 'η'), + (0x1D723, 'M', 'θ'), + (0x1D724, 'M', 'ι'), + (0x1D725, 'M', 'κ'), + (0x1D726, 'M', 'λ'), + (0x1D727, 'M', 'μ'), + (0x1D728, 'M', 'ν'), + (0x1D729, 'M', 'ξ'), + (0x1D72A, 'M', 'ο'), + (0x1D72B, 'M', 'π'), + (0x1D72C, 'M', 'ρ'), + (0x1D72D, 'M', 'θ'), + (0x1D72E, 'M', 'σ'), + (0x1D72F, 'M', 'τ'), + (0x1D730, 'M', 'υ'), + (0x1D731, 'M', 'φ'), + (0x1D732, 'M', 'χ'), + (0x1D733, 'M', 'ψ'), + (0x1D734, 'M', 'ω'), + (0x1D735, 'M', '∇'), + (0x1D736, 'M', 'α'), + (0x1D737, 'M', 'β'), + (0x1D738, 'M', 'γ'), + (0x1D739, 'M', 'δ'), + (0x1D73A, 'M', 'ε'), + (0x1D73B, 'M', 'ζ'), + (0x1D73C, 'M', 'η'), + (0x1D73D, 'M', 'θ'), + (0x1D73E, 'M', 'ι'), + (0x1D73F, 'M', 'κ'), + (0x1D740, 'M', 'λ'), + (0x1D741, 'M', 'μ'), + (0x1D742, 'M', 'ν'), + (0x1D743, 'M', 'ξ'), + (0x1D744, 'M', 'ο'), + (0x1D745, 'M', 'π'), + (0x1D746, 'M', 'ρ'), + (0x1D747, 'M', 'σ'), + (0x1D749, 'M', 'τ'), + (0x1D74A, 'M', 'υ'), + (0x1D74B, 'M', 'φ'), + (0x1D74C, 'M', 'χ'), + (0x1D74D, 'M', 'ψ'), + (0x1D74E, 'M', 'ω'), + ] + +def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D74F, 'M', '∂'), + (0x1D750, 'M', 'ε'), + (0x1D751, 'M', 'θ'), + (0x1D752, 'M', 'κ'), + (0x1D753, 'M', 'φ'), + (0x1D754, 'M', 'ρ'), + (0x1D755, 'M', 'π'), + (0x1D756, 'M', 'α'), + (0x1D757, 'M', 'β'), + (0x1D758, 'M', 'γ'), + (0x1D759, 'M', 'δ'), + (0x1D75A, 'M', 'ε'), + (0x1D75B, 'M', 'ζ'), + (0x1D75C, 'M', 'η'), + (0x1D75D, 'M', 'θ'), + (0x1D75E, 'M', 'ι'), + (0x1D75F, 'M', 'κ'), + (0x1D760, 'M', 'λ'), + (0x1D761, 'M', 'μ'), + (0x1D762, 'M', 'ν'), + (0x1D763, 'M', 'ξ'), + (0x1D764, 'M', 'ο'), + (0x1D765, 'M', 'π'), + (0x1D766, 'M', 'ρ'), + (0x1D767, 'M', 'θ'), + (0x1D768, 'M', 'σ'), + (0x1D769, 'M', 'τ'), + (0x1D76A, 'M', 'υ'), + (0x1D76B, 'M', 'φ'), + (0x1D76C, 'M', 'χ'), + (0x1D76D, 'M', 'ψ'), + (0x1D76E, 'M', 'ω'), + (0x1D76F, 'M', '∇'), + (0x1D770, 'M', 'α'), + (0x1D771, 'M', 'β'), + (0x1D772, 'M', 'γ'), + (0x1D773, 'M', 'δ'), + (0x1D774, 'M', 'ε'), + (0x1D775, 'M', 'ζ'), + (0x1D776, 'M', 'η'), + (0x1D777, 'M', 'θ'), + (0x1D778, 'M', 'ι'), + (0x1D779, 'M', 'κ'), + (0x1D77A, 'M', 'λ'), + (0x1D77B, 'M', 'μ'), + (0x1D77C, 'M', 'ν'), + (0x1D77D, 'M', 'ξ'), + (0x1D77E, 'M', 'ο'), + (0x1D77F, 'M', 'π'), + (0x1D780, 'M', 'ρ'), + (0x1D781, 'M', 'σ'), + (0x1D783, 'M', 'τ'), + (0x1D784, 'M', 'υ'), + (0x1D785, 'M', 'φ'), + (0x1D786, 'M', 'χ'), + (0x1D787, 'M', 'ψ'), + (0x1D788, 'M', 'ω'), + (0x1D789, 'M', '∂'), + (0x1D78A, 'M', 'ε'), + (0x1D78B, 'M', 'θ'), + (0x1D78C, 'M', 'κ'), + (0x1D78D, 'M', 'φ'), + (0x1D78E, 'M', 'ρ'), + (0x1D78F, 'M', 'π'), + (0x1D790, 'M', 'α'), + (0x1D791, 'M', 'β'), + (0x1D792, 'M', 'γ'), + (0x1D793, 'M', 'δ'), + (0x1D794, 'M', 'ε'), + (0x1D795, 'M', 'ζ'), + (0x1D796, 'M', 'η'), + (0x1D797, 'M', 'θ'), + (0x1D798, 'M', 'ι'), + (0x1D799, 'M', 'κ'), + (0x1D79A, 'M', 'λ'), + (0x1D79B, 'M', 'μ'), + (0x1D79C, 'M', 'ν'), + (0x1D79D, 'M', 'ξ'), + (0x1D79E, 'M', 'ο'), + (0x1D79F, 'M', 'π'), + (0x1D7A0, 'M', 'ρ'), + (0x1D7A1, 'M', 'θ'), + (0x1D7A2, 'M', 'σ'), + (0x1D7A3, 'M', 'τ'), + (0x1D7A4, 'M', 'υ'), + (0x1D7A5, 'M', 'φ'), + (0x1D7A6, 'M', 'χ'), + (0x1D7A7, 'M', 'ψ'), + (0x1D7A8, 'M', 'ω'), + (0x1D7A9, 'M', '∇'), + (0x1D7AA, 'M', 'α'), + (0x1D7AB, 'M', 'β'), + (0x1D7AC, 'M', 'γ'), + (0x1D7AD, 'M', 'δ'), + (0x1D7AE, 'M', 'ε'), + (0x1D7AF, 'M', 'ζ'), + (0x1D7B0, 'M', 'η'), + (0x1D7B1, 'M', 'θ'), + (0x1D7B2, 'M', 'ι'), + (0x1D7B3, 'M', 'κ'), + ] + +def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D7B4, 'M', 'λ'), + (0x1D7B5, 'M', 'μ'), + (0x1D7B6, 'M', 'ν'), + (0x1D7B7, 'M', 'ξ'), + (0x1D7B8, 'M', 'ο'), + (0x1D7B9, 'M', 'π'), + (0x1D7BA, 'M', 'ρ'), + (0x1D7BB, 'M', 'σ'), + (0x1D7BD, 'M', 'τ'), + (0x1D7BE, 'M', 'υ'), + (0x1D7BF, 'M', 'φ'), + (0x1D7C0, 'M', 'χ'), + (0x1D7C1, 'M', 'ψ'), + (0x1D7C2, 'M', 'ω'), + (0x1D7C3, 'M', '∂'), + (0x1D7C4, 'M', 'ε'), + (0x1D7C5, 'M', 'θ'), + (0x1D7C6, 'M', 'κ'), + (0x1D7C7, 'M', 'φ'), + (0x1D7C8, 'M', 'ρ'), + (0x1D7C9, 'M', 'π'), + (0x1D7CA, 'M', 'ϝ'), + (0x1D7CC, 'X'), + (0x1D7CE, 'M', '0'), + (0x1D7CF, 'M', '1'), + (0x1D7D0, 'M', '2'), + (0x1D7D1, 'M', '3'), + (0x1D7D2, 'M', '4'), + (0x1D7D3, 'M', '5'), + (0x1D7D4, 'M', '6'), + (0x1D7D5, 'M', '7'), + (0x1D7D6, 'M', '8'), + (0x1D7D7, 'M', '9'), + (0x1D7D8, 'M', '0'), + (0x1D7D9, 'M', '1'), + (0x1D7DA, 'M', '2'), + (0x1D7DB, 'M', '3'), + (0x1D7DC, 'M', '4'), + (0x1D7DD, 'M', '5'), + (0x1D7DE, 'M', '6'), + (0x1D7DF, 'M', '7'), + (0x1D7E0, 'M', '8'), + (0x1D7E1, 'M', '9'), + (0x1D7E2, 'M', '0'), + (0x1D7E3, 'M', '1'), + (0x1D7E4, 'M', '2'), + (0x1D7E5, 'M', '3'), + (0x1D7E6, 'M', '4'), + (0x1D7E7, 'M', '5'), + (0x1D7E8, 'M', '6'), + (0x1D7E9, 'M', '7'), + (0x1D7EA, 'M', '8'), + (0x1D7EB, 'M', '9'), + (0x1D7EC, 'M', '0'), + (0x1D7ED, 'M', '1'), + (0x1D7EE, 'M', '2'), + (0x1D7EF, 'M', '3'), + (0x1D7F0, 'M', '4'), + (0x1D7F1, 'M', '5'), + (0x1D7F2, 'M', '6'), + (0x1D7F3, 'M', '7'), + (0x1D7F4, 'M', '8'), + (0x1D7F5, 'M', '9'), + (0x1D7F6, 'M', '0'), + (0x1D7F7, 'M', '1'), + (0x1D7F8, 'M', '2'), + (0x1D7F9, 'M', '3'), + (0x1D7FA, 'M', '4'), + (0x1D7FB, 'M', '5'), + (0x1D7FC, 'M', '6'), + (0x1D7FD, 'M', '7'), + (0x1D7FE, 'M', '8'), + (0x1D7FF, 'M', '9'), + (0x1D800, 'V'), + (0x1DA8C, 'X'), + (0x1DA9B, 'V'), + (0x1DAA0, 'X'), + (0x1DAA1, 'V'), + (0x1DAB0, 'X'), + (0x1DF00, 'V'), + (0x1DF1F, 'X'), + (0x1DF25, 'V'), + (0x1DF2B, 'X'), + (0x1E000, 'V'), + (0x1E007, 'X'), + (0x1E008, 'V'), + (0x1E019, 'X'), + (0x1E01B, 'V'), + (0x1E022, 'X'), + (0x1E023, 'V'), + (0x1E025, 'X'), + (0x1E026, 'V'), + (0x1E02B, 'X'), + (0x1E030, 'M', 'а'), + (0x1E031, 'M', 'б'), + (0x1E032, 'M', 'в'), + (0x1E033, 'M', 'г'), + (0x1E034, 'M', 'д'), + (0x1E035, 'M', 'е'), + (0x1E036, 'M', 'ж'), + ] + +def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E037, 'M', 'з'), + (0x1E038, 'M', 'и'), + (0x1E039, 'M', 'к'), + (0x1E03A, 'M', 'л'), + (0x1E03B, 'M', 'м'), + (0x1E03C, 'M', 'о'), + (0x1E03D, 'M', 'п'), + (0x1E03E, 'M', 'р'), + (0x1E03F, 'M', 'с'), + (0x1E040, 'M', 'т'), + (0x1E041, 'M', 'у'), + (0x1E042, 'M', 'ф'), + (0x1E043, 'M', 'х'), + (0x1E044, 'M', 'ц'), + (0x1E045, 'M', 'ч'), + (0x1E046, 'M', 'ш'), + (0x1E047, 'M', 'ы'), + (0x1E048, 'M', 'э'), + (0x1E049, 'M', 'ю'), + (0x1E04A, 'M', 'ꚉ'), + (0x1E04B, 'M', 'ә'), + (0x1E04C, 'M', 'і'), + (0x1E04D, 'M', 'ј'), + (0x1E04E, 'M', 'ө'), + (0x1E04F, 'M', 'ү'), + (0x1E050, 'M', 'ӏ'), + (0x1E051, 'M', 'а'), + (0x1E052, 'M', 'б'), + (0x1E053, 'M', 'в'), + (0x1E054, 'M', 'г'), + (0x1E055, 'M', 'д'), + (0x1E056, 'M', 'е'), + (0x1E057, 'M', 'ж'), + (0x1E058, 'M', 'з'), + (0x1E059, 'M', 'и'), + (0x1E05A, 'M', 'к'), + (0x1E05B, 'M', 'л'), + (0x1E05C, 'M', 'о'), + (0x1E05D, 'M', 'п'), + (0x1E05E, 'M', 'с'), + (0x1E05F, 'M', 'у'), + (0x1E060, 'M', 'ф'), + (0x1E061, 'M', 'х'), + (0x1E062, 'M', 'ц'), + (0x1E063, 'M', 'ч'), + (0x1E064, 'M', 'ш'), + (0x1E065, 'M', 'ъ'), + (0x1E066, 'M', 'ы'), + (0x1E067, 'M', 'ґ'), + (0x1E068, 'M', 'і'), + (0x1E069, 'M', 'ѕ'), + (0x1E06A, 'M', 'џ'), + (0x1E06B, 'M', 'ҫ'), + (0x1E06C, 'M', 'ꙑ'), + (0x1E06D, 'M', 'ұ'), + (0x1E06E, 'X'), + (0x1E08F, 'V'), + (0x1E090, 'X'), + (0x1E100, 'V'), + (0x1E12D, 'X'), + (0x1E130, 'V'), + (0x1E13E, 'X'), + (0x1E140, 'V'), + (0x1E14A, 'X'), + (0x1E14E, 'V'), + (0x1E150, 'X'), + (0x1E290, 'V'), + (0x1E2AF, 'X'), + (0x1E2C0, 'V'), + (0x1E2FA, 'X'), + (0x1E2FF, 'V'), + (0x1E300, 'X'), + (0x1E4D0, 'V'), + (0x1E4FA, 'X'), + (0x1E7E0, 'V'), + (0x1E7E7, 'X'), + (0x1E7E8, 'V'), + (0x1E7EC, 'X'), + (0x1E7ED, 'V'), + (0x1E7EF, 'X'), + (0x1E7F0, 'V'), + (0x1E7FF, 'X'), + (0x1E800, 'V'), + (0x1E8C5, 'X'), + (0x1E8C7, 'V'), + (0x1E8D7, 'X'), + (0x1E900, 'M', '𞤢'), + (0x1E901, 'M', '𞤣'), + (0x1E902, 'M', '𞤤'), + (0x1E903, 'M', '𞤥'), + (0x1E904, 'M', '𞤦'), + (0x1E905, 'M', '𞤧'), + (0x1E906, 'M', '𞤨'), + (0x1E907, 'M', '𞤩'), + (0x1E908, 'M', '𞤪'), + (0x1E909, 'M', '𞤫'), + (0x1E90A, 'M', '𞤬'), + (0x1E90B, 'M', '𞤭'), + (0x1E90C, 'M', '𞤮'), + (0x1E90D, 'M', '𞤯'), + ] + +def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E90E, 'M', '𞤰'), + (0x1E90F, 'M', '𞤱'), + (0x1E910, 'M', '𞤲'), + (0x1E911, 'M', '𞤳'), + (0x1E912, 'M', '𞤴'), + (0x1E913, 'M', '𞤵'), + (0x1E914, 'M', '𞤶'), + (0x1E915, 'M', '𞤷'), + (0x1E916, 'M', '𞤸'), + (0x1E917, 'M', '𞤹'), + (0x1E918, 'M', '𞤺'), + (0x1E919, 'M', '𞤻'), + (0x1E91A, 'M', '𞤼'), + (0x1E91B, 'M', '𞤽'), + (0x1E91C, 'M', '𞤾'), + (0x1E91D, 'M', '𞤿'), + (0x1E91E, 'M', '𞥀'), + (0x1E91F, 'M', '𞥁'), + (0x1E920, 'M', '𞥂'), + (0x1E921, 'M', '𞥃'), + (0x1E922, 'V'), + (0x1E94C, 'X'), + (0x1E950, 'V'), + (0x1E95A, 'X'), + (0x1E95E, 'V'), + (0x1E960, 'X'), + (0x1EC71, 'V'), + (0x1ECB5, 'X'), + (0x1ED01, 'V'), + (0x1ED3E, 'X'), + (0x1EE00, 'M', 'ا'), + (0x1EE01, 'M', 'ب'), + (0x1EE02, 'M', 'ج'), + (0x1EE03, 'M', 'د'), + (0x1EE04, 'X'), + (0x1EE05, 'M', 'و'), + (0x1EE06, 'M', 'ز'), + (0x1EE07, 'M', 'ح'), + (0x1EE08, 'M', 'ط'), + (0x1EE09, 'M', 'ي'), + (0x1EE0A, 'M', 'ك'), + (0x1EE0B, 'M', 'ل'), + (0x1EE0C, 'M', 'م'), + (0x1EE0D, 'M', 'ن'), + (0x1EE0E, 'M', 'س'), + (0x1EE0F, 'M', 'ع'), + (0x1EE10, 'M', 'ف'), + (0x1EE11, 'M', 'ص'), + (0x1EE12, 'M', 'ق'), + (0x1EE13, 'M', 'ر'), + (0x1EE14, 'M', 'ش'), + (0x1EE15, 'M', 'ت'), + (0x1EE16, 'M', 'ث'), + (0x1EE17, 'M', 'خ'), + (0x1EE18, 'M', 'ذ'), + (0x1EE19, 'M', 'ض'), + (0x1EE1A, 'M', 'ظ'), + (0x1EE1B, 'M', 'غ'), + (0x1EE1C, 'M', 'ٮ'), + (0x1EE1D, 'M', 'ں'), + (0x1EE1E, 'M', 'ڡ'), + (0x1EE1F, 'M', 'ٯ'), + (0x1EE20, 'X'), + (0x1EE21, 'M', 'ب'), + (0x1EE22, 'M', 'ج'), + (0x1EE23, 'X'), + (0x1EE24, 'M', 'ه'), + (0x1EE25, 'X'), + (0x1EE27, 'M', 'ح'), + (0x1EE28, 'X'), + (0x1EE29, 'M', 'ي'), + (0x1EE2A, 'M', 'ك'), + (0x1EE2B, 'M', 'ل'), + (0x1EE2C, 'M', 'م'), + (0x1EE2D, 'M', 'ن'), + (0x1EE2E, 'M', 'س'), + (0x1EE2F, 'M', 'ع'), + (0x1EE30, 'M', 'ف'), + (0x1EE31, 'M', 'ص'), + (0x1EE32, 'M', 'ق'), + (0x1EE33, 'X'), + (0x1EE34, 'M', 'ش'), + (0x1EE35, 'M', 'ت'), + (0x1EE36, 'M', 'ث'), + (0x1EE37, 'M', 'خ'), + (0x1EE38, 'X'), + (0x1EE39, 'M', 'ض'), + (0x1EE3A, 'X'), + (0x1EE3B, 'M', 'غ'), + (0x1EE3C, 'X'), + (0x1EE42, 'M', 'ج'), + (0x1EE43, 'X'), + (0x1EE47, 'M', 'ح'), + (0x1EE48, 'X'), + (0x1EE49, 'M', 'ي'), + (0x1EE4A, 'X'), + (0x1EE4B, 'M', 'ل'), + (0x1EE4C, 'X'), + (0x1EE4D, 'M', 'ن'), + (0x1EE4E, 'M', 'س'), + ] + +def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1EE4F, 'M', 'ع'), + (0x1EE50, 'X'), + (0x1EE51, 'M', 'ص'), + (0x1EE52, 'M', 'ق'), + (0x1EE53, 'X'), + (0x1EE54, 'M', 'ش'), + (0x1EE55, 'X'), + (0x1EE57, 'M', 'خ'), + (0x1EE58, 'X'), + (0x1EE59, 'M', 'ض'), + (0x1EE5A, 'X'), + (0x1EE5B, 'M', 'غ'), + (0x1EE5C, 'X'), + (0x1EE5D, 'M', 'ں'), + (0x1EE5E, 'X'), + (0x1EE5F, 'M', 'ٯ'), + (0x1EE60, 'X'), + (0x1EE61, 'M', 'ب'), + (0x1EE62, 'M', 'ج'), + (0x1EE63, 'X'), + (0x1EE64, 'M', 'ه'), + (0x1EE65, 'X'), + (0x1EE67, 'M', 'ح'), + (0x1EE68, 'M', 'ط'), + (0x1EE69, 'M', 'ي'), + (0x1EE6A, 'M', 'ك'), + (0x1EE6B, 'X'), + (0x1EE6C, 'M', 'م'), + (0x1EE6D, 'M', 'ن'), + (0x1EE6E, 'M', 'س'), + (0x1EE6F, 'M', 'ع'), + (0x1EE70, 'M', 'ف'), + (0x1EE71, 'M', 'ص'), + (0x1EE72, 'M', 'ق'), + (0x1EE73, 'X'), + (0x1EE74, 'M', 'ش'), + (0x1EE75, 'M', 'ت'), + (0x1EE76, 'M', 'ث'), + (0x1EE77, 'M', 'خ'), + (0x1EE78, 'X'), + (0x1EE79, 'M', 'ض'), + (0x1EE7A, 'M', 'ظ'), + (0x1EE7B, 'M', 'غ'), + (0x1EE7C, 'M', 'ٮ'), + (0x1EE7D, 'X'), + (0x1EE7E, 'M', 'ڡ'), + (0x1EE7F, 'X'), + (0x1EE80, 'M', 'ا'), + (0x1EE81, 'M', 'ب'), + (0x1EE82, 'M', 'ج'), + (0x1EE83, 'M', 'د'), + (0x1EE84, 'M', 'ه'), + (0x1EE85, 'M', 'و'), + (0x1EE86, 'M', 'ز'), + (0x1EE87, 'M', 'ح'), + (0x1EE88, 'M', 'ط'), + (0x1EE89, 'M', 'ي'), + (0x1EE8A, 'X'), + (0x1EE8B, 'M', 'ل'), + (0x1EE8C, 'M', 'م'), + (0x1EE8D, 'M', 'ن'), + (0x1EE8E, 'M', 'س'), + (0x1EE8F, 'M', 'ع'), + (0x1EE90, 'M', 'ف'), + (0x1EE91, 'M', 'ص'), + (0x1EE92, 'M', 'ق'), + (0x1EE93, 'M', 'ر'), + (0x1EE94, 'M', 'ش'), + (0x1EE95, 'M', 'ت'), + (0x1EE96, 'M', 'ث'), + (0x1EE97, 'M', 'خ'), + (0x1EE98, 'M', 'ذ'), + (0x1EE99, 'M', 'ض'), + (0x1EE9A, 'M', 'ظ'), + (0x1EE9B, 'M', 'غ'), + (0x1EE9C, 'X'), + (0x1EEA1, 'M', 'ب'), + (0x1EEA2, 'M', 'ج'), + (0x1EEA3, 'M', 'د'), + (0x1EEA4, 'X'), + (0x1EEA5, 'M', 'و'), + (0x1EEA6, 'M', 'ز'), + (0x1EEA7, 'M', 'ح'), + (0x1EEA8, 'M', 'ط'), + (0x1EEA9, 'M', 'ي'), + (0x1EEAA, 'X'), + (0x1EEAB, 'M', 'ل'), + (0x1EEAC, 'M', 'م'), + (0x1EEAD, 'M', 'ن'), + (0x1EEAE, 'M', 'س'), + (0x1EEAF, 'M', 'ع'), + (0x1EEB0, 'M', 'ف'), + (0x1EEB1, 'M', 'ص'), + (0x1EEB2, 'M', 'ق'), + (0x1EEB3, 'M', 'ر'), + (0x1EEB4, 'M', 'ش'), + (0x1EEB5, 'M', 'ت'), + (0x1EEB6, 'M', 'ث'), + (0x1EEB7, 'M', 'خ'), + (0x1EEB8, 'M', 'ذ'), + ] + +def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1EEB9, 'M', 'ض'), + (0x1EEBA, 'M', 'ظ'), + (0x1EEBB, 'M', 'غ'), + (0x1EEBC, 'X'), + (0x1EEF0, 'V'), + (0x1EEF2, 'X'), + (0x1F000, 'V'), + (0x1F02C, 'X'), + (0x1F030, 'V'), + (0x1F094, 'X'), + (0x1F0A0, 'V'), + (0x1F0AF, 'X'), + (0x1F0B1, 'V'), + (0x1F0C0, 'X'), + (0x1F0C1, 'V'), + (0x1F0D0, 'X'), + (0x1F0D1, 'V'), + (0x1F0F6, 'X'), + (0x1F101, '3', '0,'), + (0x1F102, '3', '1,'), + (0x1F103, '3', '2,'), + (0x1F104, '3', '3,'), + (0x1F105, '3', '4,'), + (0x1F106, '3', '5,'), + (0x1F107, '3', '6,'), + (0x1F108, '3', '7,'), + (0x1F109, '3', '8,'), + (0x1F10A, '3', '9,'), + (0x1F10B, 'V'), + (0x1F110, '3', '(a)'), + (0x1F111, '3', '(b)'), + (0x1F112, '3', '(c)'), + (0x1F113, '3', '(d)'), + (0x1F114, '3', '(e)'), + (0x1F115, '3', '(f)'), + (0x1F116, '3', '(g)'), + (0x1F117, '3', '(h)'), + (0x1F118, '3', '(i)'), + (0x1F119, '3', '(j)'), + (0x1F11A, '3', '(k)'), + (0x1F11B, '3', '(l)'), + (0x1F11C, '3', '(m)'), + (0x1F11D, '3', '(n)'), + (0x1F11E, '3', '(o)'), + (0x1F11F, '3', '(p)'), + (0x1F120, '3', '(q)'), + (0x1F121, '3', '(r)'), + (0x1F122, '3', '(s)'), + (0x1F123, '3', '(t)'), + (0x1F124, '3', '(u)'), + (0x1F125, '3', '(v)'), + (0x1F126, '3', '(w)'), + (0x1F127, '3', '(x)'), + (0x1F128, '3', '(y)'), + (0x1F129, '3', '(z)'), + (0x1F12A, 'M', '〔s〕'), + (0x1F12B, 'M', 'c'), + (0x1F12C, 'M', 'r'), + (0x1F12D, 'M', 'cd'), + (0x1F12E, 'M', 'wz'), + (0x1F12F, 'V'), + (0x1F130, 'M', 'a'), + (0x1F131, 'M', 'b'), + (0x1F132, 'M', 'c'), + (0x1F133, 'M', 'd'), + (0x1F134, 'M', 'e'), + (0x1F135, 'M', 'f'), + (0x1F136, 'M', 'g'), + (0x1F137, 'M', 'h'), + (0x1F138, 'M', 'i'), + (0x1F139, 'M', 'j'), + (0x1F13A, 'M', 'k'), + (0x1F13B, 'M', 'l'), + (0x1F13C, 'M', 'm'), + (0x1F13D, 'M', 'n'), + (0x1F13E, 'M', 'o'), + (0x1F13F, 'M', 'p'), + (0x1F140, 'M', 'q'), + (0x1F141, 'M', 'r'), + (0x1F142, 'M', 's'), + (0x1F143, 'M', 't'), + (0x1F144, 'M', 'u'), + (0x1F145, 'M', 'v'), + (0x1F146, 'M', 'w'), + (0x1F147, 'M', 'x'), + (0x1F148, 'M', 'y'), + (0x1F149, 'M', 'z'), + (0x1F14A, 'M', 'hv'), + (0x1F14B, 'M', 'mv'), + (0x1F14C, 'M', 'sd'), + (0x1F14D, 'M', 'ss'), + (0x1F14E, 'M', 'ppv'), + (0x1F14F, 'M', 'wc'), + (0x1F150, 'V'), + (0x1F16A, 'M', 'mc'), + (0x1F16B, 'M', 'md'), + (0x1F16C, 'M', 'mr'), + (0x1F16D, 'V'), + (0x1F190, 'M', 'dj'), + (0x1F191, 'V'), + ] + +def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1F1AE, 'X'), + (0x1F1E6, 'V'), + (0x1F200, 'M', 'ほか'), + (0x1F201, 'M', 'ココ'), + (0x1F202, 'M', 'サ'), + (0x1F203, 'X'), + (0x1F210, 'M', '手'), + (0x1F211, 'M', '字'), + (0x1F212, 'M', '双'), + (0x1F213, 'M', 'デ'), + (0x1F214, 'M', '二'), + (0x1F215, 'M', '多'), + (0x1F216, 'M', '解'), + (0x1F217, 'M', '天'), + (0x1F218, 'M', '交'), + (0x1F219, 'M', '映'), + (0x1F21A, 'M', '無'), + (0x1F21B, 'M', '料'), + (0x1F21C, 'M', '前'), + (0x1F21D, 'M', '後'), + (0x1F21E, 'M', '再'), + (0x1F21F, 'M', '新'), + (0x1F220, 'M', '初'), + (0x1F221, 'M', '終'), + (0x1F222, 'M', '生'), + (0x1F223, 'M', '販'), + (0x1F224, 'M', '声'), + (0x1F225, 'M', '吹'), + (0x1F226, 'M', '演'), + (0x1F227, 'M', '投'), + (0x1F228, 'M', '捕'), + (0x1F229, 'M', '一'), + (0x1F22A, 'M', '三'), + (0x1F22B, 'M', '遊'), + (0x1F22C, 'M', '左'), + (0x1F22D, 'M', '中'), + (0x1F22E, 'M', '右'), + (0x1F22F, 'M', '指'), + (0x1F230, 'M', '走'), + (0x1F231, 'M', '打'), + (0x1F232, 'M', '禁'), + (0x1F233, 'M', '空'), + (0x1F234, 'M', '合'), + (0x1F235, 'M', '満'), + (0x1F236, 'M', '有'), + (0x1F237, 'M', '月'), + (0x1F238, 'M', '申'), + (0x1F239, 'M', '割'), + (0x1F23A, 'M', '営'), + (0x1F23B, 'M', '配'), + (0x1F23C, 'X'), + (0x1F240, 'M', '〔本〕'), + (0x1F241, 'M', '〔三〕'), + (0x1F242, 'M', '〔二〕'), + (0x1F243, 'M', '〔安〕'), + (0x1F244, 'M', '〔点〕'), + (0x1F245, 'M', '〔打〕'), + (0x1F246, 'M', '〔盗〕'), + (0x1F247, 'M', '〔勝〕'), + (0x1F248, 'M', '〔敗〕'), + (0x1F249, 'X'), + (0x1F250, 'M', '得'), + (0x1F251, 'M', '可'), + (0x1F252, 'X'), + (0x1F260, 'V'), + (0x1F266, 'X'), + (0x1F300, 'V'), + (0x1F6D8, 'X'), + (0x1F6DC, 'V'), + (0x1F6ED, 'X'), + (0x1F6F0, 'V'), + (0x1F6FD, 'X'), + (0x1F700, 'V'), + (0x1F777, 'X'), + (0x1F77B, 'V'), + (0x1F7DA, 'X'), + (0x1F7E0, 'V'), + (0x1F7EC, 'X'), + (0x1F7F0, 'V'), + (0x1F7F1, 'X'), + (0x1F800, 'V'), + (0x1F80C, 'X'), + (0x1F810, 'V'), + (0x1F848, 'X'), + (0x1F850, 'V'), + (0x1F85A, 'X'), + (0x1F860, 'V'), + (0x1F888, 'X'), + (0x1F890, 'V'), + (0x1F8AE, 'X'), + (0x1F8B0, 'V'), + (0x1F8B2, 'X'), + (0x1F900, 'V'), + (0x1FA54, 'X'), + (0x1FA60, 'V'), + (0x1FA6E, 'X'), + (0x1FA70, 'V'), + (0x1FA7D, 'X'), + (0x1FA80, 'V'), + (0x1FA89, 'X'), + ] + +def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1FA90, 'V'), + (0x1FABE, 'X'), + (0x1FABF, 'V'), + (0x1FAC6, 'X'), + (0x1FACE, 'V'), + (0x1FADC, 'X'), + (0x1FAE0, 'V'), + (0x1FAE9, 'X'), + (0x1FAF0, 'V'), + (0x1FAF9, 'X'), + (0x1FB00, 'V'), + (0x1FB93, 'X'), + (0x1FB94, 'V'), + (0x1FBCB, 'X'), + (0x1FBF0, 'M', '0'), + (0x1FBF1, 'M', '1'), + (0x1FBF2, 'M', '2'), + (0x1FBF3, 'M', '3'), + (0x1FBF4, 'M', '4'), + (0x1FBF5, 'M', '5'), + (0x1FBF6, 'M', '6'), + (0x1FBF7, 'M', '7'), + (0x1FBF8, 'M', '8'), + (0x1FBF9, 'M', '9'), + (0x1FBFA, 'X'), + (0x20000, 'V'), + (0x2A6E0, 'X'), + (0x2A700, 'V'), + (0x2B73A, 'X'), + (0x2B740, 'V'), + (0x2B81E, 'X'), + (0x2B820, 'V'), + (0x2CEA2, 'X'), + (0x2CEB0, 'V'), + (0x2EBE1, 'X'), + (0x2EBF0, 'V'), + (0x2EE5E, 'X'), + (0x2F800, 'M', '丽'), + (0x2F801, 'M', '丸'), + (0x2F802, 'M', '乁'), + (0x2F803, 'M', '𠄢'), + (0x2F804, 'M', '你'), + (0x2F805, 'M', '侮'), + (0x2F806, 'M', '侻'), + (0x2F807, 'M', '倂'), + (0x2F808, 'M', '偺'), + (0x2F809, 'M', '備'), + (0x2F80A, 'M', '僧'), + (0x2F80B, 'M', '像'), + (0x2F80C, 'M', '㒞'), + (0x2F80D, 'M', '𠘺'), + (0x2F80E, 'M', '免'), + (0x2F80F, 'M', '兔'), + (0x2F810, 'M', '兤'), + (0x2F811, 'M', '具'), + (0x2F812, 'M', '𠔜'), + (0x2F813, 'M', '㒹'), + (0x2F814, 'M', '內'), + (0x2F815, 'M', '再'), + (0x2F816, 'M', '𠕋'), + (0x2F817, 'M', '冗'), + (0x2F818, 'M', '冤'), + (0x2F819, 'M', '仌'), + (0x2F81A, 'M', '冬'), + (0x2F81B, 'M', '况'), + (0x2F81C, 'M', '𩇟'), + (0x2F81D, 'M', '凵'), + (0x2F81E, 'M', '刃'), + (0x2F81F, 'M', '㓟'), + (0x2F820, 'M', '刻'), + (0x2F821, 'M', '剆'), + (0x2F822, 'M', '割'), + (0x2F823, 'M', '剷'), + (0x2F824, 'M', '㔕'), + (0x2F825, 'M', '勇'), + (0x2F826, 'M', '勉'), + (0x2F827, 'M', '勤'), + (0x2F828, 'M', '勺'), + (0x2F829, 'M', '包'), + (0x2F82A, 'M', '匆'), + (0x2F82B, 'M', '北'), + (0x2F82C, 'M', '卉'), + (0x2F82D, 'M', '卑'), + (0x2F82E, 'M', '博'), + (0x2F82F, 'M', '即'), + (0x2F830, 'M', '卽'), + (0x2F831, 'M', '卿'), + (0x2F834, 'M', '𠨬'), + (0x2F835, 'M', '灰'), + (0x2F836, 'M', '及'), + (0x2F837, 'M', '叟'), + (0x2F838, 'M', '𠭣'), + (0x2F839, 'M', '叫'), + (0x2F83A, 'M', '叱'), + (0x2F83B, 'M', '吆'), + (0x2F83C, 'M', '咞'), + (0x2F83D, 'M', '吸'), + (0x2F83E, 'M', '呈'), + (0x2F83F, 'M', '周'), + (0x2F840, 'M', '咢'), + ] + +def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F841, 'M', '哶'), + (0x2F842, 'M', '唐'), + (0x2F843, 'M', '啓'), + (0x2F844, 'M', '啣'), + (0x2F845, 'M', '善'), + (0x2F847, 'M', '喙'), + (0x2F848, 'M', '喫'), + (0x2F849, 'M', '喳'), + (0x2F84A, 'M', '嗂'), + (0x2F84B, 'M', '圖'), + (0x2F84C, 'M', '嘆'), + (0x2F84D, 'M', '圗'), + (0x2F84E, 'M', '噑'), + (0x2F84F, 'M', '噴'), + (0x2F850, 'M', '切'), + (0x2F851, 'M', '壮'), + (0x2F852, 'M', '城'), + (0x2F853, 'M', '埴'), + (0x2F854, 'M', '堍'), + (0x2F855, 'M', '型'), + (0x2F856, 'M', '堲'), + (0x2F857, 'M', '報'), + (0x2F858, 'M', '墬'), + (0x2F859, 'M', '𡓤'), + (0x2F85A, 'M', '売'), + (0x2F85B, 'M', '壷'), + (0x2F85C, 'M', '夆'), + (0x2F85D, 'M', '多'), + (0x2F85E, 'M', '夢'), + (0x2F85F, 'M', '奢'), + (0x2F860, 'M', '𡚨'), + (0x2F861, 'M', '𡛪'), + (0x2F862, 'M', '姬'), + (0x2F863, 'M', '娛'), + (0x2F864, 'M', '娧'), + (0x2F865, 'M', '姘'), + (0x2F866, 'M', '婦'), + (0x2F867, 'M', '㛮'), + (0x2F868, 'X'), + (0x2F869, 'M', '嬈'), + (0x2F86A, 'M', '嬾'), + (0x2F86C, 'M', '𡧈'), + (0x2F86D, 'M', '寃'), + (0x2F86E, 'M', '寘'), + (0x2F86F, 'M', '寧'), + (0x2F870, 'M', '寳'), + (0x2F871, 'M', '𡬘'), + (0x2F872, 'M', '寿'), + (0x2F873, 'M', '将'), + (0x2F874, 'X'), + (0x2F875, 'M', '尢'), + (0x2F876, 'M', '㞁'), + (0x2F877, 'M', '屠'), + (0x2F878, 'M', '屮'), + (0x2F879, 'M', '峀'), + (0x2F87A, 'M', '岍'), + (0x2F87B, 'M', '𡷤'), + (0x2F87C, 'M', '嵃'), + (0x2F87D, 'M', '𡷦'), + (0x2F87E, 'M', '嵮'), + (0x2F87F, 'M', '嵫'), + (0x2F880, 'M', '嵼'), + (0x2F881, 'M', '巡'), + (0x2F882, 'M', '巢'), + (0x2F883, 'M', '㠯'), + (0x2F884, 'M', '巽'), + (0x2F885, 'M', '帨'), + (0x2F886, 'M', '帽'), + (0x2F887, 'M', '幩'), + (0x2F888, 'M', '㡢'), + (0x2F889, 'M', '𢆃'), + (0x2F88A, 'M', '㡼'), + (0x2F88B, 'M', '庰'), + (0x2F88C, 'M', '庳'), + (0x2F88D, 'M', '庶'), + (0x2F88E, 'M', '廊'), + (0x2F88F, 'M', '𪎒'), + (0x2F890, 'M', '廾'), + (0x2F891, 'M', '𢌱'), + (0x2F893, 'M', '舁'), + (0x2F894, 'M', '弢'), + (0x2F896, 'M', '㣇'), + (0x2F897, 'M', '𣊸'), + (0x2F898, 'M', '𦇚'), + (0x2F899, 'M', '形'), + (0x2F89A, 'M', '彫'), + (0x2F89B, 'M', '㣣'), + (0x2F89C, 'M', '徚'), + (0x2F89D, 'M', '忍'), + (0x2F89E, 'M', '志'), + (0x2F89F, 'M', '忹'), + (0x2F8A0, 'M', '悁'), + (0x2F8A1, 'M', '㤺'), + (0x2F8A2, 'M', '㤜'), + (0x2F8A3, 'M', '悔'), + (0x2F8A4, 'M', '𢛔'), + (0x2F8A5, 'M', '惇'), + (0x2F8A6, 'M', '慈'), + (0x2F8A7, 'M', '慌'), + (0x2F8A8, 'M', '慎'), + ] + +def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F8A9, 'M', '慌'), + (0x2F8AA, 'M', '慺'), + (0x2F8AB, 'M', '憎'), + (0x2F8AC, 'M', '憲'), + (0x2F8AD, 'M', '憤'), + (0x2F8AE, 'M', '憯'), + (0x2F8AF, 'M', '懞'), + (0x2F8B0, 'M', '懲'), + (0x2F8B1, 'M', '懶'), + (0x2F8B2, 'M', '成'), + (0x2F8B3, 'M', '戛'), + (0x2F8B4, 'M', '扝'), + (0x2F8B5, 'M', '抱'), + (0x2F8B6, 'M', '拔'), + (0x2F8B7, 'M', '捐'), + (0x2F8B8, 'M', '𢬌'), + (0x2F8B9, 'M', '挽'), + (0x2F8BA, 'M', '拼'), + (0x2F8BB, 'M', '捨'), + (0x2F8BC, 'M', '掃'), + (0x2F8BD, 'M', '揤'), + (0x2F8BE, 'M', '𢯱'), + (0x2F8BF, 'M', '搢'), + (0x2F8C0, 'M', '揅'), + (0x2F8C1, 'M', '掩'), + (0x2F8C2, 'M', '㨮'), + (0x2F8C3, 'M', '摩'), + (0x2F8C4, 'M', '摾'), + (0x2F8C5, 'M', '撝'), + (0x2F8C6, 'M', '摷'), + (0x2F8C7, 'M', '㩬'), + (0x2F8C8, 'M', '敏'), + (0x2F8C9, 'M', '敬'), + (0x2F8CA, 'M', '𣀊'), + (0x2F8CB, 'M', '旣'), + (0x2F8CC, 'M', '書'), + (0x2F8CD, 'M', '晉'), + (0x2F8CE, 'M', '㬙'), + (0x2F8CF, 'M', '暑'), + (0x2F8D0, 'M', '㬈'), + (0x2F8D1, 'M', '㫤'), + (0x2F8D2, 'M', '冒'), + (0x2F8D3, 'M', '冕'), + (0x2F8D4, 'M', '最'), + (0x2F8D5, 'M', '暜'), + (0x2F8D6, 'M', '肭'), + (0x2F8D7, 'M', '䏙'), + (0x2F8D8, 'M', '朗'), + (0x2F8D9, 'M', '望'), + (0x2F8DA, 'M', '朡'), + (0x2F8DB, 'M', '杞'), + (0x2F8DC, 'M', '杓'), + (0x2F8DD, 'M', '𣏃'), + (0x2F8DE, 'M', '㭉'), + (0x2F8DF, 'M', '柺'), + (0x2F8E0, 'M', '枅'), + (0x2F8E1, 'M', '桒'), + (0x2F8E2, 'M', '梅'), + (0x2F8E3, 'M', '𣑭'), + (0x2F8E4, 'M', '梎'), + (0x2F8E5, 'M', '栟'), + (0x2F8E6, 'M', '椔'), + (0x2F8E7, 'M', '㮝'), + (0x2F8E8, 'M', '楂'), + (0x2F8E9, 'M', '榣'), + (0x2F8EA, 'M', '槪'), + (0x2F8EB, 'M', '檨'), + (0x2F8EC, 'M', '𣚣'), + (0x2F8ED, 'M', '櫛'), + (0x2F8EE, 'M', '㰘'), + (0x2F8EF, 'M', '次'), + (0x2F8F0, 'M', '𣢧'), + (0x2F8F1, 'M', '歔'), + (0x2F8F2, 'M', '㱎'), + (0x2F8F3, 'M', '歲'), + (0x2F8F4, 'M', '殟'), + (0x2F8F5, 'M', '殺'), + (0x2F8F6, 'M', '殻'), + (0x2F8F7, 'M', '𣪍'), + (0x2F8F8, 'M', '𡴋'), + (0x2F8F9, 'M', '𣫺'), + (0x2F8FA, 'M', '汎'), + (0x2F8FB, 'M', '𣲼'), + (0x2F8FC, 'M', '沿'), + (0x2F8FD, 'M', '泍'), + (0x2F8FE, 'M', '汧'), + (0x2F8FF, 'M', '洖'), + (0x2F900, 'M', '派'), + (0x2F901, 'M', '海'), + (0x2F902, 'M', '流'), + (0x2F903, 'M', '浩'), + (0x2F904, 'M', '浸'), + (0x2F905, 'M', '涅'), + (0x2F906, 'M', '𣴞'), + (0x2F907, 'M', '洴'), + (0x2F908, 'M', '港'), + (0x2F909, 'M', '湮'), + (0x2F90A, 'M', '㴳'), + (0x2F90B, 'M', '滋'), + (0x2F90C, 'M', '滇'), + ] + +def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F90D, 'M', '𣻑'), + (0x2F90E, 'M', '淹'), + (0x2F90F, 'M', '潮'), + (0x2F910, 'M', '𣽞'), + (0x2F911, 'M', '𣾎'), + (0x2F912, 'M', '濆'), + (0x2F913, 'M', '瀹'), + (0x2F914, 'M', '瀞'), + (0x2F915, 'M', '瀛'), + (0x2F916, 'M', '㶖'), + (0x2F917, 'M', '灊'), + (0x2F918, 'M', '災'), + (0x2F919, 'M', '灷'), + (0x2F91A, 'M', '炭'), + (0x2F91B, 'M', '𠔥'), + (0x2F91C, 'M', '煅'), + (0x2F91D, 'M', '𤉣'), + (0x2F91E, 'M', '熜'), + (0x2F91F, 'X'), + (0x2F920, 'M', '爨'), + (0x2F921, 'M', '爵'), + (0x2F922, 'M', '牐'), + (0x2F923, 'M', '𤘈'), + (0x2F924, 'M', '犀'), + (0x2F925, 'M', '犕'), + (0x2F926, 'M', '𤜵'), + (0x2F927, 'M', '𤠔'), + (0x2F928, 'M', '獺'), + (0x2F929, 'M', '王'), + (0x2F92A, 'M', '㺬'), + (0x2F92B, 'M', '玥'), + (0x2F92C, 'M', '㺸'), + (0x2F92E, 'M', '瑇'), + (0x2F92F, 'M', '瑜'), + (0x2F930, 'M', '瑱'), + (0x2F931, 'M', '璅'), + (0x2F932, 'M', '瓊'), + (0x2F933, 'M', '㼛'), + (0x2F934, 'M', '甤'), + (0x2F935, 'M', '𤰶'), + (0x2F936, 'M', '甾'), + (0x2F937, 'M', '𤲒'), + (0x2F938, 'M', '異'), + (0x2F939, 'M', '𢆟'), + (0x2F93A, 'M', '瘐'), + (0x2F93B, 'M', '𤾡'), + (0x2F93C, 'M', '𤾸'), + (0x2F93D, 'M', '𥁄'), + (0x2F93E, 'M', '㿼'), + (0x2F93F, 'M', '䀈'), + (0x2F940, 'M', '直'), + (0x2F941, 'M', '𥃳'), + (0x2F942, 'M', '𥃲'), + (0x2F943, 'M', '𥄙'), + (0x2F944, 'M', '𥄳'), + (0x2F945, 'M', '眞'), + (0x2F946, 'M', '真'), + (0x2F948, 'M', '睊'), + (0x2F949, 'M', '䀹'), + (0x2F94A, 'M', '瞋'), + (0x2F94B, 'M', '䁆'), + (0x2F94C, 'M', '䂖'), + (0x2F94D, 'M', '𥐝'), + (0x2F94E, 'M', '硎'), + (0x2F94F, 'M', '碌'), + (0x2F950, 'M', '磌'), + (0x2F951, 'M', '䃣'), + (0x2F952, 'M', '𥘦'), + (0x2F953, 'M', '祖'), + (0x2F954, 'M', '𥚚'), + (0x2F955, 'M', '𥛅'), + (0x2F956, 'M', '福'), + (0x2F957, 'M', '秫'), + (0x2F958, 'M', '䄯'), + (0x2F959, 'M', '穀'), + (0x2F95A, 'M', '穊'), + (0x2F95B, 'M', '穏'), + (0x2F95C, 'M', '𥥼'), + (0x2F95D, 'M', '𥪧'), + (0x2F95F, 'X'), + (0x2F960, 'M', '䈂'), + (0x2F961, 'M', '𥮫'), + (0x2F962, 'M', '篆'), + (0x2F963, 'M', '築'), + (0x2F964, 'M', '䈧'), + (0x2F965, 'M', '𥲀'), + (0x2F966, 'M', '糒'), + (0x2F967, 'M', '䊠'), + (0x2F968, 'M', '糨'), + (0x2F969, 'M', '糣'), + (0x2F96A, 'M', '紀'), + (0x2F96B, 'M', '𥾆'), + (0x2F96C, 'M', '絣'), + (0x2F96D, 'M', '䌁'), + (0x2F96E, 'M', '緇'), + (0x2F96F, 'M', '縂'), + (0x2F970, 'M', '繅'), + (0x2F971, 'M', '䌴'), + (0x2F972, 'M', '𦈨'), + (0x2F973, 'M', '𦉇'), + ] + +def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F974, 'M', '䍙'), + (0x2F975, 'M', '𦋙'), + (0x2F976, 'M', '罺'), + (0x2F977, 'M', '𦌾'), + (0x2F978, 'M', '羕'), + (0x2F979, 'M', '翺'), + (0x2F97A, 'M', '者'), + (0x2F97B, 'M', '𦓚'), + (0x2F97C, 'M', '𦔣'), + (0x2F97D, 'M', '聠'), + (0x2F97E, 'M', '𦖨'), + (0x2F97F, 'M', '聰'), + (0x2F980, 'M', '𣍟'), + (0x2F981, 'M', '䏕'), + (0x2F982, 'M', '育'), + (0x2F983, 'M', '脃'), + (0x2F984, 'M', '䐋'), + (0x2F985, 'M', '脾'), + (0x2F986, 'M', '媵'), + (0x2F987, 'M', '𦞧'), + (0x2F988, 'M', '𦞵'), + (0x2F989, 'M', '𣎓'), + (0x2F98A, 'M', '𣎜'), + (0x2F98B, 'M', '舁'), + (0x2F98C, 'M', '舄'), + (0x2F98D, 'M', '辞'), + (0x2F98E, 'M', '䑫'), + (0x2F98F, 'M', '芑'), + (0x2F990, 'M', '芋'), + (0x2F991, 'M', '芝'), + (0x2F992, 'M', '劳'), + (0x2F993, 'M', '花'), + (0x2F994, 'M', '芳'), + (0x2F995, 'M', '芽'), + (0x2F996, 'M', '苦'), + (0x2F997, 'M', '𦬼'), + (0x2F998, 'M', '若'), + (0x2F999, 'M', '茝'), + (0x2F99A, 'M', '荣'), + (0x2F99B, 'M', '莭'), + (0x2F99C, 'M', '茣'), + (0x2F99D, 'M', '莽'), + (0x2F99E, 'M', '菧'), + (0x2F99F, 'M', '著'), + (0x2F9A0, 'M', '荓'), + (0x2F9A1, 'M', '菊'), + (0x2F9A2, 'M', '菌'), + (0x2F9A3, 'M', '菜'), + (0x2F9A4, 'M', '𦰶'), + (0x2F9A5, 'M', '𦵫'), + (0x2F9A6, 'M', '𦳕'), + (0x2F9A7, 'M', '䔫'), + (0x2F9A8, 'M', '蓱'), + (0x2F9A9, 'M', '蓳'), + (0x2F9AA, 'M', '蔖'), + (0x2F9AB, 'M', '𧏊'), + (0x2F9AC, 'M', '蕤'), + (0x2F9AD, 'M', '𦼬'), + (0x2F9AE, 'M', '䕝'), + (0x2F9AF, 'M', '䕡'), + (0x2F9B0, 'M', '𦾱'), + (0x2F9B1, 'M', '𧃒'), + (0x2F9B2, 'M', '䕫'), + (0x2F9B3, 'M', '虐'), + (0x2F9B4, 'M', '虜'), + (0x2F9B5, 'M', '虧'), + (0x2F9B6, 'M', '虩'), + (0x2F9B7, 'M', '蚩'), + (0x2F9B8, 'M', '蚈'), + (0x2F9B9, 'M', '蜎'), + (0x2F9BA, 'M', '蛢'), + (0x2F9BB, 'M', '蝹'), + (0x2F9BC, 'M', '蜨'), + (0x2F9BD, 'M', '蝫'), + (0x2F9BE, 'M', '螆'), + (0x2F9BF, 'X'), + (0x2F9C0, 'M', '蟡'), + (0x2F9C1, 'M', '蠁'), + (0x2F9C2, 'M', '䗹'), + (0x2F9C3, 'M', '衠'), + (0x2F9C4, 'M', '衣'), + (0x2F9C5, 'M', '𧙧'), + (0x2F9C6, 'M', '裗'), + (0x2F9C7, 'M', '裞'), + (0x2F9C8, 'M', '䘵'), + (0x2F9C9, 'M', '裺'), + (0x2F9CA, 'M', '㒻'), + (0x2F9CB, 'M', '𧢮'), + (0x2F9CC, 'M', '𧥦'), + (0x2F9CD, 'M', '䚾'), + (0x2F9CE, 'M', '䛇'), + (0x2F9CF, 'M', '誠'), + (0x2F9D0, 'M', '諭'), + (0x2F9D1, 'M', '變'), + (0x2F9D2, 'M', '豕'), + (0x2F9D3, 'M', '𧲨'), + (0x2F9D4, 'M', '貫'), + (0x2F9D5, 'M', '賁'), + (0x2F9D6, 'M', '贛'), + (0x2F9D7, 'M', '起'), + ] + +def _seg_81() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F9D8, 'M', '𧼯'), + (0x2F9D9, 'M', '𠠄'), + (0x2F9DA, 'M', '跋'), + (0x2F9DB, 'M', '趼'), + (0x2F9DC, 'M', '跰'), + (0x2F9DD, 'M', '𠣞'), + (0x2F9DE, 'M', '軔'), + (0x2F9DF, 'M', '輸'), + (0x2F9E0, 'M', '𨗒'), + (0x2F9E1, 'M', '𨗭'), + (0x2F9E2, 'M', '邔'), + (0x2F9E3, 'M', '郱'), + (0x2F9E4, 'M', '鄑'), + (0x2F9E5, 'M', '𨜮'), + (0x2F9E6, 'M', '鄛'), + (0x2F9E7, 'M', '鈸'), + (0x2F9E8, 'M', '鋗'), + (0x2F9E9, 'M', '鋘'), + (0x2F9EA, 'M', '鉼'), + (0x2F9EB, 'M', '鏹'), + (0x2F9EC, 'M', '鐕'), + (0x2F9ED, 'M', '𨯺'), + (0x2F9EE, 'M', '開'), + (0x2F9EF, 'M', '䦕'), + (0x2F9F0, 'M', '閷'), + (0x2F9F1, 'M', '𨵷'), + (0x2F9F2, 'M', '䧦'), + (0x2F9F3, 'M', '雃'), + (0x2F9F4, 'M', '嶲'), + (0x2F9F5, 'M', '霣'), + (0x2F9F6, 'M', '𩅅'), + (0x2F9F7, 'M', '𩈚'), + (0x2F9F8, 'M', '䩮'), + (0x2F9F9, 'M', '䩶'), + (0x2F9FA, 'M', '韠'), + (0x2F9FB, 'M', '𩐊'), + (0x2F9FC, 'M', '䪲'), + (0x2F9FD, 'M', '𩒖'), + (0x2F9FE, 'M', '頋'), + (0x2FA00, 'M', '頩'), + (0x2FA01, 'M', '𩖶'), + (0x2FA02, 'M', '飢'), + (0x2FA03, 'M', '䬳'), + (0x2FA04, 'M', '餩'), + (0x2FA05, 'M', '馧'), + (0x2FA06, 'M', '駂'), + (0x2FA07, 'M', '駾'), + (0x2FA08, 'M', '䯎'), + (0x2FA09, 'M', '𩬰'), + (0x2FA0A, 'M', '鬒'), + (0x2FA0B, 'M', '鱀'), + (0x2FA0C, 'M', '鳽'), + (0x2FA0D, 'M', '䳎'), + (0x2FA0E, 'M', '䳭'), + (0x2FA0F, 'M', '鵧'), + (0x2FA10, 'M', '𪃎'), + (0x2FA11, 'M', '䳸'), + (0x2FA12, 'M', '𪄅'), + (0x2FA13, 'M', '𪈎'), + (0x2FA14, 'M', '𪊑'), + (0x2FA15, 'M', '麻'), + (0x2FA16, 'M', '䵖'), + (0x2FA17, 'M', '黹'), + (0x2FA18, 'M', '黾'), + (0x2FA19, 'M', '鼅'), + (0x2FA1A, 'M', '鼏'), + (0x2FA1B, 'M', '鼖'), + (0x2FA1C, 'M', '鼻'), + (0x2FA1D, 'M', '𪘀'), + (0x2FA1E, 'X'), + (0x30000, 'V'), + (0x3134B, 'X'), + (0x31350, 'V'), + (0x323B0, 'X'), + (0xE0100, 'I'), + (0xE01F0, 'X'), + ] + +uts46data = tuple( + _seg_0() + + _seg_1() + + _seg_2() + + _seg_3() + + _seg_4() + + _seg_5() + + _seg_6() + + _seg_7() + + _seg_8() + + _seg_9() + + _seg_10() + + _seg_11() + + _seg_12() + + _seg_13() + + _seg_14() + + _seg_15() + + _seg_16() + + _seg_17() + + _seg_18() + + _seg_19() + + _seg_20() + + _seg_21() + + _seg_22() + + _seg_23() + + _seg_24() + + _seg_25() + + _seg_26() + + _seg_27() + + _seg_28() + + _seg_29() + + _seg_30() + + _seg_31() + + _seg_32() + + _seg_33() + + _seg_34() + + _seg_35() + + _seg_36() + + _seg_37() + + _seg_38() + + _seg_39() + + _seg_40() + + _seg_41() + + _seg_42() + + _seg_43() + + _seg_44() + + _seg_45() + + _seg_46() + + _seg_47() + + _seg_48() + + _seg_49() + + _seg_50() + + _seg_51() + + _seg_52() + + _seg_53() + + _seg_54() + + _seg_55() + + _seg_56() + + _seg_57() + + _seg_58() + + _seg_59() + + _seg_60() + + _seg_61() + + _seg_62() + + _seg_63() + + _seg_64() + + _seg_65() + + _seg_66() + + _seg_67() + + _seg_68() + + _seg_69() + + _seg_70() + + _seg_71() + + _seg_72() + + _seg_73() + + _seg_74() + + _seg_75() + + _seg_76() + + _seg_77() + + _seg_78() + + _seg_79() + + _seg_80() + + _seg_81() +) # type: Tuple[Union[Tuple[int, str], Tuple[int, str, str]], ...] diff --git a/venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py b/venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py new file mode 100644 index 00000000000..919b86f175f --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py @@ -0,0 +1,55 @@ +from .exceptions import * +from .ext import ExtType, Timestamp + +import os + + +version = (1, 0, 8) +__version__ = "1.0.8" + + +if os.environ.get("MSGPACK_PUREPYTHON"): + from .fallback import Packer, unpackb, Unpacker +else: + try: + from ._cmsgpack import Packer, unpackb, Unpacker + except ImportError: + from .fallback import Packer, unpackb, Unpacker + + +def pack(o, stream, **kwargs): + """ + Pack object `o` and write it to `stream` + + See :class:`Packer` for options. + """ + packer = Packer(**kwargs) + stream.write(packer.pack(o)) + + +def packb(o, **kwargs): + """ + Pack object `o` and return packed bytes + + See :class:`Packer` for options. + """ + return Packer(**kwargs).pack(o) + + +def unpack(stream, **kwargs): + """ + Unpack an object from `stream`. + + Raises `ExtraData` when `stream` contains extra bytes. + See :class:`Unpacker` for options. + """ + data = stream.read() + return unpackb(data, **kwargs) + + +# alias for compatibility to simplejson/marshal/pickle. +load = unpack +loads = unpackb + +dump = pack +dumps = packb diff --git a/venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py b/venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py new file mode 100644 index 00000000000..d6d2615cfdd --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py @@ -0,0 +1,48 @@ +class UnpackException(Exception): + """Base class for some exceptions raised while unpacking. + + NOTE: unpack may raise exception other than subclass of + UnpackException. If you want to catch all error, catch + Exception instead. + """ + + +class BufferFull(UnpackException): + pass + + +class OutOfData(UnpackException): + pass + + +class FormatError(ValueError, UnpackException): + """Invalid msgpack format""" + + +class StackError(ValueError, UnpackException): + """Too nested""" + + +# Deprecated. Use ValueError instead +UnpackValueError = ValueError + + +class ExtraData(UnpackValueError): + """ExtraData is raised when there is trailing data. + + This exception is raised while only one-shot (not streaming) + unpack. + """ + + def __init__(self, unpacked, extra): + self.unpacked = unpacked + self.extra = extra + + def __str__(self): + return "unpack(b) received extra data." + + +# Deprecated. Use Exception instead to catch all exception during packing. +PackException = Exception +PackValueError = ValueError +PackOverflowError = OverflowError diff --git a/venv/Lib/site-packages/pip/_vendor/msgpack/ext.py b/venv/Lib/site-packages/pip/_vendor/msgpack/ext.py new file mode 100644 index 00000000000..02c2c43008a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/msgpack/ext.py @@ -0,0 +1,168 @@ +from collections import namedtuple +import datetime +import struct + + +class ExtType(namedtuple("ExtType", "code data")): + """ExtType represents ext type in msgpack.""" + + def __new__(cls, code, data): + if not isinstance(code, int): + raise TypeError("code must be int") + if not isinstance(data, bytes): + raise TypeError("data must be bytes") + if not 0 <= code <= 127: + raise ValueError("code must be 0~127") + return super().__new__(cls, code, data) + + +class Timestamp: + """Timestamp represents the Timestamp extension type in msgpack. + + When built with Cython, msgpack uses C methods to pack and unpack `Timestamp`. + When using pure-Python msgpack, :func:`to_bytes` and :func:`from_bytes` are used to pack and + unpack `Timestamp`. + + This class is immutable: Do not override seconds and nanoseconds. + """ + + __slots__ = ["seconds", "nanoseconds"] + + def __init__(self, seconds, nanoseconds=0): + """Initialize a Timestamp object. + + :param int seconds: + Number of seconds since the UNIX epoch (00:00:00 UTC Jan 1 1970, minus leap seconds). + May be negative. + + :param int nanoseconds: + Number of nanoseconds to add to `seconds` to get fractional time. + Maximum is 999_999_999. Default is 0. + + Note: Negative times (before the UNIX epoch) are represented as neg. seconds + pos. ns. + """ + if not isinstance(seconds, int): + raise TypeError("seconds must be an integer") + if not isinstance(nanoseconds, int): + raise TypeError("nanoseconds must be an integer") + if not (0 <= nanoseconds < 10**9): + raise ValueError("nanoseconds must be a non-negative integer less than 999999999.") + self.seconds = seconds + self.nanoseconds = nanoseconds + + def __repr__(self): + """String representation of Timestamp.""" + return f"Timestamp(seconds={self.seconds}, nanoseconds={self.nanoseconds})" + + def __eq__(self, other): + """Check for equality with another Timestamp object""" + if type(other) is self.__class__: + return self.seconds == other.seconds and self.nanoseconds == other.nanoseconds + return False + + def __ne__(self, other): + """not-equals method (see :func:`__eq__()`)""" + return not self.__eq__(other) + + def __hash__(self): + return hash((self.seconds, self.nanoseconds)) + + @staticmethod + def from_bytes(b): + """Unpack bytes into a `Timestamp` object. + + Used for pure-Python msgpack unpacking. + + :param b: Payload from msgpack ext message with code -1 + :type b: bytes + + :returns: Timestamp object unpacked from msgpack ext payload + :rtype: Timestamp + """ + if len(b) == 4: + seconds = struct.unpack("!L", b)[0] + nanoseconds = 0 + elif len(b) == 8: + data64 = struct.unpack("!Q", b)[0] + seconds = data64 & 0x00000003FFFFFFFF + nanoseconds = data64 >> 34 + elif len(b) == 12: + nanoseconds, seconds = struct.unpack("!Iq", b) + else: + raise ValueError( + "Timestamp type can only be created from 32, 64, or 96-bit byte objects" + ) + return Timestamp(seconds, nanoseconds) + + def to_bytes(self): + """Pack this Timestamp object into bytes. + + Used for pure-Python msgpack packing. + + :returns data: Payload for EXT message with code -1 (timestamp type) + :rtype: bytes + """ + if (self.seconds >> 34) == 0: # seconds is non-negative and fits in 34 bits + data64 = self.nanoseconds << 34 | self.seconds + if data64 & 0xFFFFFFFF00000000 == 0: + # nanoseconds is zero and seconds < 2**32, so timestamp 32 + data = struct.pack("!L", data64) + else: + # timestamp 64 + data = struct.pack("!Q", data64) + else: + # timestamp 96 + data = struct.pack("!Iq", self.nanoseconds, self.seconds) + return data + + @staticmethod + def from_unix(unix_sec): + """Create a Timestamp from posix timestamp in seconds. + + :param unix_float: Posix timestamp in seconds. + :type unix_float: int or float + """ + seconds = int(unix_sec // 1) + nanoseconds = int((unix_sec % 1) * 10**9) + return Timestamp(seconds, nanoseconds) + + def to_unix(self): + """Get the timestamp as a floating-point value. + + :returns: posix timestamp + :rtype: float + """ + return self.seconds + self.nanoseconds / 1e9 + + @staticmethod + def from_unix_nano(unix_ns): + """Create a Timestamp from posix timestamp in nanoseconds. + + :param int unix_ns: Posix timestamp in nanoseconds. + :rtype: Timestamp + """ + return Timestamp(*divmod(unix_ns, 10**9)) + + def to_unix_nano(self): + """Get the timestamp as a unixtime in nanoseconds. + + :returns: posix timestamp in nanoseconds + :rtype: int + """ + return self.seconds * 10**9 + self.nanoseconds + + def to_datetime(self): + """Get the timestamp as a UTC datetime. + + :rtype: `datetime.datetime` + """ + utc = datetime.timezone.utc + return datetime.datetime.fromtimestamp(0, utc) + datetime.timedelta(seconds=self.to_unix()) + + @staticmethod + def from_datetime(dt): + """Create a Timestamp from datetime with tzinfo. + + :rtype: Timestamp + """ + return Timestamp.from_unix(dt.timestamp()) diff --git a/venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py b/venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py new file mode 100644 index 00000000000..a174162af8a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py @@ -0,0 +1,951 @@ +"""Fallback pure Python implementation of msgpack""" +from datetime import datetime as _DateTime +import sys +import struct + + +if hasattr(sys, "pypy_version_info"): + # StringIO is slow on PyPy, StringIO is faster. However: PyPy's own + # StringBuilder is fastest. + from __pypy__ import newlist_hint + + try: + from __pypy__.builders import BytesBuilder as StringBuilder + except ImportError: + from __pypy__.builders import StringBuilder + USING_STRINGBUILDER = True + + class StringIO: + def __init__(self, s=b""): + if s: + self.builder = StringBuilder(len(s)) + self.builder.append(s) + else: + self.builder = StringBuilder() + + def write(self, s): + if isinstance(s, memoryview): + s = s.tobytes() + elif isinstance(s, bytearray): + s = bytes(s) + self.builder.append(s) + + def getvalue(self): + return self.builder.build() + +else: + USING_STRINGBUILDER = False + from io import BytesIO as StringIO + + newlist_hint = lambda size: [] + + +from .exceptions import BufferFull, OutOfData, ExtraData, FormatError, StackError + +from .ext import ExtType, Timestamp + + +EX_SKIP = 0 +EX_CONSTRUCT = 1 +EX_READ_ARRAY_HEADER = 2 +EX_READ_MAP_HEADER = 3 + +TYPE_IMMEDIATE = 0 +TYPE_ARRAY = 1 +TYPE_MAP = 2 +TYPE_RAW = 3 +TYPE_BIN = 4 +TYPE_EXT = 5 + +DEFAULT_RECURSE_LIMIT = 511 + + +def _check_type_strict(obj, t, type=type, tuple=tuple): + if type(t) is tuple: + return type(obj) in t + else: + return type(obj) is t + + +def _get_data_from_buffer(obj): + view = memoryview(obj) + if view.itemsize != 1: + raise ValueError("cannot unpack from multi-byte object") + return view + + +def unpackb(packed, **kwargs): + """ + Unpack an object from `packed`. + + Raises ``ExtraData`` when *packed* contains extra bytes. + Raises ``ValueError`` when *packed* is incomplete. + Raises ``FormatError`` when *packed* is not valid msgpack. + Raises ``StackError`` when *packed* contains too nested. + Other exceptions can be raised during unpacking. + + See :class:`Unpacker` for options. + """ + unpacker = Unpacker(None, max_buffer_size=len(packed), **kwargs) + unpacker.feed(packed) + try: + ret = unpacker._unpack() + except OutOfData: + raise ValueError("Unpack failed: incomplete input") + except RecursionError: + raise StackError + if unpacker._got_extradata(): + raise ExtraData(ret, unpacker._get_extradata()) + return ret + + +_NO_FORMAT_USED = "" +_MSGPACK_HEADERS = { + 0xC4: (1, _NO_FORMAT_USED, TYPE_BIN), + 0xC5: (2, ">H", TYPE_BIN), + 0xC6: (4, ">I", TYPE_BIN), + 0xC7: (2, "Bb", TYPE_EXT), + 0xC8: (3, ">Hb", TYPE_EXT), + 0xC9: (5, ">Ib", TYPE_EXT), + 0xCA: (4, ">f"), + 0xCB: (8, ">d"), + 0xCC: (1, _NO_FORMAT_USED), + 0xCD: (2, ">H"), + 0xCE: (4, ">I"), + 0xCF: (8, ">Q"), + 0xD0: (1, "b"), + 0xD1: (2, ">h"), + 0xD2: (4, ">i"), + 0xD3: (8, ">q"), + 0xD4: (1, "b1s", TYPE_EXT), + 0xD5: (2, "b2s", TYPE_EXT), + 0xD6: (4, "b4s", TYPE_EXT), + 0xD7: (8, "b8s", TYPE_EXT), + 0xD8: (16, "b16s", TYPE_EXT), + 0xD9: (1, _NO_FORMAT_USED, TYPE_RAW), + 0xDA: (2, ">H", TYPE_RAW), + 0xDB: (4, ">I", TYPE_RAW), + 0xDC: (2, ">H", TYPE_ARRAY), + 0xDD: (4, ">I", TYPE_ARRAY), + 0xDE: (2, ">H", TYPE_MAP), + 0xDF: (4, ">I", TYPE_MAP), +} + + +class Unpacker: + """Streaming unpacker. + + Arguments: + + :param file_like: + File-like object having `.read(n)` method. + If specified, unpacker reads serialized data from it and `.feed()` is not usable. + + :param int read_size: + Used as `file_like.read(read_size)`. (default: `min(16*1024, max_buffer_size)`) + + :param bool use_list: + If true, unpack msgpack array to Python list. + Otherwise, unpack to Python tuple. (default: True) + + :param bool raw: + If true, unpack msgpack raw to Python bytes. + Otherwise, unpack to Python str by decoding with UTF-8 encoding (default). + + :param int timestamp: + Control how timestamp type is unpacked: + + 0 - Timestamp + 1 - float (Seconds from the EPOCH) + 2 - int (Nanoseconds from the EPOCH) + 3 - datetime.datetime (UTC). + + :param bool strict_map_key: + If true (default), only str or bytes are accepted for map (dict) keys. + + :param object_hook: + When specified, it should be callable. + Unpacker calls it with a dict argument after unpacking msgpack map. + (See also simplejson) + + :param object_pairs_hook: + When specified, it should be callable. + Unpacker calls it with a list of key-value pairs after unpacking msgpack map. + (See also simplejson) + + :param str unicode_errors: + The error handler for decoding unicode. (default: 'strict') + This option should be used only when you have msgpack data which + contains invalid UTF-8 string. + + :param int max_buffer_size: + Limits size of data waiting unpacked. 0 means 2**32-1. + The default value is 100*1024*1024 (100MiB). + Raises `BufferFull` exception when it is insufficient. + You should set this parameter when unpacking data from untrusted source. + + :param int max_str_len: + Deprecated, use *max_buffer_size* instead. + Limits max length of str. (default: max_buffer_size) + + :param int max_bin_len: + Deprecated, use *max_buffer_size* instead. + Limits max length of bin. (default: max_buffer_size) + + :param int max_array_len: + Limits max length of array. + (default: max_buffer_size) + + :param int max_map_len: + Limits max length of map. + (default: max_buffer_size//2) + + :param int max_ext_len: + Deprecated, use *max_buffer_size* instead. + Limits max size of ext type. (default: max_buffer_size) + + Example of streaming deserialize from file-like object:: + + unpacker = Unpacker(file_like) + for o in unpacker: + process(o) + + Example of streaming deserialize from socket:: + + unpacker = Unpacker() + while True: + buf = sock.recv(1024**2) + if not buf: + break + unpacker.feed(buf) + for o in unpacker: + process(o) + + Raises ``ExtraData`` when *packed* contains extra bytes. + Raises ``OutOfData`` when *packed* is incomplete. + Raises ``FormatError`` when *packed* is not valid msgpack. + Raises ``StackError`` when *packed* contains too nested. + Other exceptions can be raised during unpacking. + """ + + def __init__( + self, + file_like=None, + read_size=0, + use_list=True, + raw=False, + timestamp=0, + strict_map_key=True, + object_hook=None, + object_pairs_hook=None, + list_hook=None, + unicode_errors=None, + max_buffer_size=100 * 1024 * 1024, + ext_hook=ExtType, + max_str_len=-1, + max_bin_len=-1, + max_array_len=-1, + max_map_len=-1, + max_ext_len=-1, + ): + if unicode_errors is None: + unicode_errors = "strict" + + if file_like is None: + self._feeding = True + else: + if not callable(file_like.read): + raise TypeError("`file_like.read` must be callable") + self.file_like = file_like + self._feeding = False + + #: array of bytes fed. + self._buffer = bytearray() + #: Which position we currently reads + self._buff_i = 0 + + # When Unpacker is used as an iterable, between the calls to next(), + # the buffer is not "consumed" completely, for efficiency sake. + # Instead, it is done sloppily. To make sure we raise BufferFull at + # the correct moments, we have to keep track of how sloppy we were. + # Furthermore, when the buffer is incomplete (that is: in the case + # we raise an OutOfData) we need to rollback the buffer to the correct + # state, which _buf_checkpoint records. + self._buf_checkpoint = 0 + + if not max_buffer_size: + max_buffer_size = 2**31 - 1 + if max_str_len == -1: + max_str_len = max_buffer_size + if max_bin_len == -1: + max_bin_len = max_buffer_size + if max_array_len == -1: + max_array_len = max_buffer_size + if max_map_len == -1: + max_map_len = max_buffer_size // 2 + if max_ext_len == -1: + max_ext_len = max_buffer_size + + self._max_buffer_size = max_buffer_size + if read_size > self._max_buffer_size: + raise ValueError("read_size must be smaller than max_buffer_size") + self._read_size = read_size or min(self._max_buffer_size, 16 * 1024) + self._raw = bool(raw) + self._strict_map_key = bool(strict_map_key) + self._unicode_errors = unicode_errors + self._use_list = use_list + if not (0 <= timestamp <= 3): + raise ValueError("timestamp must be 0..3") + self._timestamp = timestamp + self._list_hook = list_hook + self._object_hook = object_hook + self._object_pairs_hook = object_pairs_hook + self._ext_hook = ext_hook + self._max_str_len = max_str_len + self._max_bin_len = max_bin_len + self._max_array_len = max_array_len + self._max_map_len = max_map_len + self._max_ext_len = max_ext_len + self._stream_offset = 0 + + if list_hook is not None and not callable(list_hook): + raise TypeError("`list_hook` is not callable") + if object_hook is not None and not callable(object_hook): + raise TypeError("`object_hook` is not callable") + if object_pairs_hook is not None and not callable(object_pairs_hook): + raise TypeError("`object_pairs_hook` is not callable") + if object_hook is not None and object_pairs_hook is not None: + raise TypeError("object_pairs_hook and object_hook are mutually exclusive") + if not callable(ext_hook): + raise TypeError("`ext_hook` is not callable") + + def feed(self, next_bytes): + assert self._feeding + view = _get_data_from_buffer(next_bytes) + if len(self._buffer) - self._buff_i + len(view) > self._max_buffer_size: + raise BufferFull + + # Strip buffer before checkpoint before reading file. + if self._buf_checkpoint > 0: + del self._buffer[: self._buf_checkpoint] + self._buff_i -= self._buf_checkpoint + self._buf_checkpoint = 0 + + # Use extend here: INPLACE_ADD += doesn't reliably typecast memoryview in jython + self._buffer.extend(view) + + def _consume(self): + """Gets rid of the used parts of the buffer.""" + self._stream_offset += self._buff_i - self._buf_checkpoint + self._buf_checkpoint = self._buff_i + + def _got_extradata(self): + return self._buff_i < len(self._buffer) + + def _get_extradata(self): + return self._buffer[self._buff_i :] + + def read_bytes(self, n): + ret = self._read(n, raise_outofdata=False) + self._consume() + return ret + + def _read(self, n, raise_outofdata=True): + # (int) -> bytearray + self._reserve(n, raise_outofdata=raise_outofdata) + i = self._buff_i + ret = self._buffer[i : i + n] + self._buff_i = i + len(ret) + return ret + + def _reserve(self, n, raise_outofdata=True): + remain_bytes = len(self._buffer) - self._buff_i - n + + # Fast path: buffer has n bytes already + if remain_bytes >= 0: + return + + if self._feeding: + self._buff_i = self._buf_checkpoint + raise OutOfData + + # Strip buffer before checkpoint before reading file. + if self._buf_checkpoint > 0: + del self._buffer[: self._buf_checkpoint] + self._buff_i -= self._buf_checkpoint + self._buf_checkpoint = 0 + + # Read from file + remain_bytes = -remain_bytes + if remain_bytes + len(self._buffer) > self._max_buffer_size: + raise BufferFull + while remain_bytes > 0: + to_read_bytes = max(self._read_size, remain_bytes) + read_data = self.file_like.read(to_read_bytes) + if not read_data: + break + assert isinstance(read_data, bytes) + self._buffer += read_data + remain_bytes -= len(read_data) + + if len(self._buffer) < n + self._buff_i and raise_outofdata: + self._buff_i = 0 # rollback + raise OutOfData + + def _read_header(self): + typ = TYPE_IMMEDIATE + n = 0 + obj = None + self._reserve(1) + b = self._buffer[self._buff_i] + self._buff_i += 1 + if b & 0b10000000 == 0: + obj = b + elif b & 0b11100000 == 0b11100000: + obj = -1 - (b ^ 0xFF) + elif b & 0b11100000 == 0b10100000: + n = b & 0b00011111 + typ = TYPE_RAW + if n > self._max_str_len: + raise ValueError(f"{n} exceeds max_str_len({self._max_str_len})") + obj = self._read(n) + elif b & 0b11110000 == 0b10010000: + n = b & 0b00001111 + typ = TYPE_ARRAY + if n > self._max_array_len: + raise ValueError(f"{n} exceeds max_array_len({self._max_array_len})") + elif b & 0b11110000 == 0b10000000: + n = b & 0b00001111 + typ = TYPE_MAP + if n > self._max_map_len: + raise ValueError(f"{n} exceeds max_map_len({self._max_map_len})") + elif b == 0xC0: + obj = None + elif b == 0xC2: + obj = False + elif b == 0xC3: + obj = True + elif 0xC4 <= b <= 0xC6: + size, fmt, typ = _MSGPACK_HEADERS[b] + self._reserve(size) + if len(fmt) > 0: + n = struct.unpack_from(fmt, self._buffer, self._buff_i)[0] + else: + n = self._buffer[self._buff_i] + self._buff_i += size + if n > self._max_bin_len: + raise ValueError(f"{n} exceeds max_bin_len({self._max_bin_len})") + obj = self._read(n) + elif 0xC7 <= b <= 0xC9: + size, fmt, typ = _MSGPACK_HEADERS[b] + self._reserve(size) + L, n = struct.unpack_from(fmt, self._buffer, self._buff_i) + self._buff_i += size + if L > self._max_ext_len: + raise ValueError(f"{L} exceeds max_ext_len({self._max_ext_len})") + obj = self._read(L) + elif 0xCA <= b <= 0xD3: + size, fmt = _MSGPACK_HEADERS[b] + self._reserve(size) + if len(fmt) > 0: + obj = struct.unpack_from(fmt, self._buffer, self._buff_i)[0] + else: + obj = self._buffer[self._buff_i] + self._buff_i += size + elif 0xD4 <= b <= 0xD8: + size, fmt, typ = _MSGPACK_HEADERS[b] + if self._max_ext_len < size: + raise ValueError(f"{size} exceeds max_ext_len({self._max_ext_len})") + self._reserve(size + 1) + n, obj = struct.unpack_from(fmt, self._buffer, self._buff_i) + self._buff_i += size + 1 + elif 0xD9 <= b <= 0xDB: + size, fmt, typ = _MSGPACK_HEADERS[b] + self._reserve(size) + if len(fmt) > 0: + (n,) = struct.unpack_from(fmt, self._buffer, self._buff_i) + else: + n = self._buffer[self._buff_i] + self._buff_i += size + if n > self._max_str_len: + raise ValueError(f"{n} exceeds max_str_len({self._max_str_len})") + obj = self._read(n) + elif 0xDC <= b <= 0xDD: + size, fmt, typ = _MSGPACK_HEADERS[b] + self._reserve(size) + (n,) = struct.unpack_from(fmt, self._buffer, self._buff_i) + self._buff_i += size + if n > self._max_array_len: + raise ValueError(f"{n} exceeds max_array_len({self._max_array_len})") + elif 0xDE <= b <= 0xDF: + size, fmt, typ = _MSGPACK_HEADERS[b] + self._reserve(size) + (n,) = struct.unpack_from(fmt, self._buffer, self._buff_i) + self._buff_i += size + if n > self._max_map_len: + raise ValueError(f"{n} exceeds max_map_len({self._max_map_len})") + else: + raise FormatError("Unknown header: 0x%x" % b) + return typ, n, obj + + def _unpack(self, execute=EX_CONSTRUCT): + typ, n, obj = self._read_header() + + if execute == EX_READ_ARRAY_HEADER: + if typ != TYPE_ARRAY: + raise ValueError("Expected array") + return n + if execute == EX_READ_MAP_HEADER: + if typ != TYPE_MAP: + raise ValueError("Expected map") + return n + # TODO should we eliminate the recursion? + if typ == TYPE_ARRAY: + if execute == EX_SKIP: + for i in range(n): + # TODO check whether we need to call `list_hook` + self._unpack(EX_SKIP) + return + ret = newlist_hint(n) + for i in range(n): + ret.append(self._unpack(EX_CONSTRUCT)) + if self._list_hook is not None: + ret = self._list_hook(ret) + # TODO is the interaction between `list_hook` and `use_list` ok? + return ret if self._use_list else tuple(ret) + if typ == TYPE_MAP: + if execute == EX_SKIP: + for i in range(n): + # TODO check whether we need to call hooks + self._unpack(EX_SKIP) + self._unpack(EX_SKIP) + return + if self._object_pairs_hook is not None: + ret = self._object_pairs_hook( + (self._unpack(EX_CONSTRUCT), self._unpack(EX_CONSTRUCT)) for _ in range(n) + ) + else: + ret = {} + for _ in range(n): + key = self._unpack(EX_CONSTRUCT) + if self._strict_map_key and type(key) not in (str, bytes): + raise ValueError("%s is not allowed for map key" % str(type(key))) + if isinstance(key, str): + key = sys.intern(key) + ret[key] = self._unpack(EX_CONSTRUCT) + if self._object_hook is not None: + ret = self._object_hook(ret) + return ret + if execute == EX_SKIP: + return + if typ == TYPE_RAW: + if self._raw: + obj = bytes(obj) + else: + obj = obj.decode("utf_8", self._unicode_errors) + return obj + if typ == TYPE_BIN: + return bytes(obj) + if typ == TYPE_EXT: + if n == -1: # timestamp + ts = Timestamp.from_bytes(bytes(obj)) + if self._timestamp == 1: + return ts.to_unix() + elif self._timestamp == 2: + return ts.to_unix_nano() + elif self._timestamp == 3: + return ts.to_datetime() + else: + return ts + else: + return self._ext_hook(n, bytes(obj)) + assert typ == TYPE_IMMEDIATE + return obj + + def __iter__(self): + return self + + def __next__(self): + try: + ret = self._unpack(EX_CONSTRUCT) + self._consume() + return ret + except OutOfData: + self._consume() + raise StopIteration + except RecursionError: + raise StackError + + next = __next__ + + def skip(self): + self._unpack(EX_SKIP) + self._consume() + + def unpack(self): + try: + ret = self._unpack(EX_CONSTRUCT) + except RecursionError: + raise StackError + self._consume() + return ret + + def read_array_header(self): + ret = self._unpack(EX_READ_ARRAY_HEADER) + self._consume() + return ret + + def read_map_header(self): + ret = self._unpack(EX_READ_MAP_HEADER) + self._consume() + return ret + + def tell(self): + return self._stream_offset + + +class Packer: + """ + MessagePack Packer + + Usage:: + + packer = Packer() + astream.write(packer.pack(a)) + astream.write(packer.pack(b)) + + Packer's constructor has some keyword arguments: + + :param default: + When specified, it should be callable. + Convert user type to builtin type that Packer supports. + See also simplejson's document. + + :param bool use_single_float: + Use single precision float type for float. (default: False) + + :param bool autoreset: + Reset buffer after each pack and return its content as `bytes`. (default: True). + If set this to false, use `bytes()` to get content and `.reset()` to clear buffer. + + :param bool use_bin_type: + Use bin type introduced in msgpack spec 2.0 for bytes. + It also enables str8 type for unicode. (default: True) + + :param bool strict_types: + If set to true, types will be checked to be exact. Derived classes + from serializable types will not be serialized and will be + treated as unsupported type and forwarded to default. + Additionally tuples will not be serialized as lists. + This is useful when trying to implement accurate serialization + for python types. + + :param bool datetime: + If set to true, datetime with tzinfo is packed into Timestamp type. + Note that the tzinfo is stripped in the timestamp. + You can get UTC datetime with `timestamp=3` option of the Unpacker. + + :param str unicode_errors: + The error handler for encoding unicode. (default: 'strict') + DO NOT USE THIS!! This option is kept for very specific usage. + + Example of streaming deserialize from file-like object:: + + unpacker = Unpacker(file_like) + for o in unpacker: + process(o) + + Example of streaming deserialize from socket:: + + unpacker = Unpacker() + while True: + buf = sock.recv(1024**2) + if not buf: + break + unpacker.feed(buf) + for o in unpacker: + process(o) + + Raises ``ExtraData`` when *packed* contains extra bytes. + Raises ``OutOfData`` when *packed* is incomplete. + Raises ``FormatError`` when *packed* is not valid msgpack. + Raises ``StackError`` when *packed* contains too nested. + Other exceptions can be raised during unpacking. + """ + + def __init__( + self, + default=None, + use_single_float=False, + autoreset=True, + use_bin_type=True, + strict_types=False, + datetime=False, + unicode_errors=None, + ): + self._strict_types = strict_types + self._use_float = use_single_float + self._autoreset = autoreset + self._use_bin_type = use_bin_type + self._buffer = StringIO() + self._datetime = bool(datetime) + self._unicode_errors = unicode_errors or "strict" + if default is not None: + if not callable(default): + raise TypeError("default must be callable") + self._default = default + + def _pack( + self, + obj, + nest_limit=DEFAULT_RECURSE_LIMIT, + check=isinstance, + check_type_strict=_check_type_strict, + ): + default_used = False + if self._strict_types: + check = check_type_strict + list_types = list + else: + list_types = (list, tuple) + while True: + if nest_limit < 0: + raise ValueError("recursion limit exceeded") + if obj is None: + return self._buffer.write(b"\xc0") + if check(obj, bool): + if obj: + return self._buffer.write(b"\xc3") + return self._buffer.write(b"\xc2") + if check(obj, int): + if 0 <= obj < 0x80: + return self._buffer.write(struct.pack("B", obj)) + if -0x20 <= obj < 0: + return self._buffer.write(struct.pack("b", obj)) + if 0x80 <= obj <= 0xFF: + return self._buffer.write(struct.pack("BB", 0xCC, obj)) + if -0x80 <= obj < 0: + return self._buffer.write(struct.pack(">Bb", 0xD0, obj)) + if 0xFF < obj <= 0xFFFF: + return self._buffer.write(struct.pack(">BH", 0xCD, obj)) + if -0x8000 <= obj < -0x80: + return self._buffer.write(struct.pack(">Bh", 0xD1, obj)) + if 0xFFFF < obj <= 0xFFFFFFFF: + return self._buffer.write(struct.pack(">BI", 0xCE, obj)) + if -0x80000000 <= obj < -0x8000: + return self._buffer.write(struct.pack(">Bi", 0xD2, obj)) + if 0xFFFFFFFF < obj <= 0xFFFFFFFFFFFFFFFF: + return self._buffer.write(struct.pack(">BQ", 0xCF, obj)) + if -0x8000000000000000 <= obj < -0x80000000: + return self._buffer.write(struct.pack(">Bq", 0xD3, obj)) + if not default_used and self._default is not None: + obj = self._default(obj) + default_used = True + continue + raise OverflowError("Integer value out of range") + if check(obj, (bytes, bytearray)): + n = len(obj) + if n >= 2**32: + raise ValueError("%s is too large" % type(obj).__name__) + self._pack_bin_header(n) + return self._buffer.write(obj) + if check(obj, str): + obj = obj.encode("utf-8", self._unicode_errors) + n = len(obj) + if n >= 2**32: + raise ValueError("String is too large") + self._pack_raw_header(n) + return self._buffer.write(obj) + if check(obj, memoryview): + n = obj.nbytes + if n >= 2**32: + raise ValueError("Memoryview is too large") + self._pack_bin_header(n) + return self._buffer.write(obj) + if check(obj, float): + if self._use_float: + return self._buffer.write(struct.pack(">Bf", 0xCA, obj)) + return self._buffer.write(struct.pack(">Bd", 0xCB, obj)) + if check(obj, (ExtType, Timestamp)): + if check(obj, Timestamp): + code = -1 + data = obj.to_bytes() + else: + code = obj.code + data = obj.data + assert isinstance(code, int) + assert isinstance(data, bytes) + L = len(data) + if L == 1: + self._buffer.write(b"\xd4") + elif L == 2: + self._buffer.write(b"\xd5") + elif L == 4: + self._buffer.write(b"\xd6") + elif L == 8: + self._buffer.write(b"\xd7") + elif L == 16: + self._buffer.write(b"\xd8") + elif L <= 0xFF: + self._buffer.write(struct.pack(">BB", 0xC7, L)) + elif L <= 0xFFFF: + self._buffer.write(struct.pack(">BH", 0xC8, L)) + else: + self._buffer.write(struct.pack(">BI", 0xC9, L)) + self._buffer.write(struct.pack("b", code)) + self._buffer.write(data) + return + if check(obj, list_types): + n = len(obj) + self._pack_array_header(n) + for i in range(n): + self._pack(obj[i], nest_limit - 1) + return + if check(obj, dict): + return self._pack_map_pairs(len(obj), obj.items(), nest_limit - 1) + + if self._datetime and check(obj, _DateTime) and obj.tzinfo is not None: + obj = Timestamp.from_datetime(obj) + default_used = 1 + continue + + if not default_used and self._default is not None: + obj = self._default(obj) + default_used = 1 + continue + + if self._datetime and check(obj, _DateTime): + raise ValueError(f"Cannot serialize {obj!r} where tzinfo=None") + + raise TypeError(f"Cannot serialize {obj!r}") + + def pack(self, obj): + try: + self._pack(obj) + except: + self._buffer = StringIO() # force reset + raise + if self._autoreset: + ret = self._buffer.getvalue() + self._buffer = StringIO() + return ret + + def pack_map_pairs(self, pairs): + self._pack_map_pairs(len(pairs), pairs) + if self._autoreset: + ret = self._buffer.getvalue() + self._buffer = StringIO() + return ret + + def pack_array_header(self, n): + if n >= 2**32: + raise ValueError + self._pack_array_header(n) + if self._autoreset: + ret = self._buffer.getvalue() + self._buffer = StringIO() + return ret + + def pack_map_header(self, n): + if n >= 2**32: + raise ValueError + self._pack_map_header(n) + if self._autoreset: + ret = self._buffer.getvalue() + self._buffer = StringIO() + return ret + + def pack_ext_type(self, typecode, data): + if not isinstance(typecode, int): + raise TypeError("typecode must have int type.") + if not 0 <= typecode <= 127: + raise ValueError("typecode should be 0-127") + if not isinstance(data, bytes): + raise TypeError("data must have bytes type") + L = len(data) + if L > 0xFFFFFFFF: + raise ValueError("Too large data") + if L == 1: + self._buffer.write(b"\xd4") + elif L == 2: + self._buffer.write(b"\xd5") + elif L == 4: + self._buffer.write(b"\xd6") + elif L == 8: + self._buffer.write(b"\xd7") + elif L == 16: + self._buffer.write(b"\xd8") + elif L <= 0xFF: + self._buffer.write(b"\xc7" + struct.pack("B", L)) + elif L <= 0xFFFF: + self._buffer.write(b"\xc8" + struct.pack(">H", L)) + else: + self._buffer.write(b"\xc9" + struct.pack(">I", L)) + self._buffer.write(struct.pack("B", typecode)) + self._buffer.write(data) + + def _pack_array_header(self, n): + if n <= 0x0F: + return self._buffer.write(struct.pack("B", 0x90 + n)) + if n <= 0xFFFF: + return self._buffer.write(struct.pack(">BH", 0xDC, n)) + if n <= 0xFFFFFFFF: + return self._buffer.write(struct.pack(">BI", 0xDD, n)) + raise ValueError("Array is too large") + + def _pack_map_header(self, n): + if n <= 0x0F: + return self._buffer.write(struct.pack("B", 0x80 + n)) + if n <= 0xFFFF: + return self._buffer.write(struct.pack(">BH", 0xDE, n)) + if n <= 0xFFFFFFFF: + return self._buffer.write(struct.pack(">BI", 0xDF, n)) + raise ValueError("Dict is too large") + + def _pack_map_pairs(self, n, pairs, nest_limit=DEFAULT_RECURSE_LIMIT): + self._pack_map_header(n) + for k, v in pairs: + self._pack(k, nest_limit - 1) + self._pack(v, nest_limit - 1) + + def _pack_raw_header(self, n): + if n <= 0x1F: + self._buffer.write(struct.pack("B", 0xA0 + n)) + elif self._use_bin_type and n <= 0xFF: + self._buffer.write(struct.pack(">BB", 0xD9, n)) + elif n <= 0xFFFF: + self._buffer.write(struct.pack(">BH", 0xDA, n)) + elif n <= 0xFFFFFFFF: + self._buffer.write(struct.pack(">BI", 0xDB, n)) + else: + raise ValueError("Raw is too large") + + def _pack_bin_header(self, n): + if not self._use_bin_type: + return self._pack_raw_header(n) + elif n <= 0xFF: + return self._buffer.write(struct.pack(">BB", 0xC4, n)) + elif n <= 0xFFFF: + return self._buffer.write(struct.pack(">BH", 0xC5, n)) + elif n <= 0xFFFFFFFF: + return self._buffer.write(struct.pack(">BI", 0xC6, n)) + else: + raise ValueError("Bin is too large") + + def bytes(self): + """Return internal buffer contents as bytes object""" + return self._buffer.getvalue() + + def reset(self): + """Reset internal buffer. + + This method is useful only when autoreset=False. + """ + self._buffer = StringIO() + + def getbuffer(self): + """Return view of internal buffer.""" + if USING_STRINGBUILDER: + return memoryview(self.bytes()) + else: + return self._buffer.getbuffer() diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/__init__.py b/venv/Lib/site-packages/pip/_vendor/packaging/__init__.py new file mode 100644 index 00000000000..9ba41d83579 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/__init__.py @@ -0,0 +1,15 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +__title__ = "packaging" +__summary__ = "Core utilities for Python packages" +__uri__ = "https://github.com/pypa/packaging" + +__version__ = "24.1" + +__author__ = "Donald Stufft and individual contributors" +__email__ = "donald@stufft.io" + +__license__ = "BSD-2-Clause or Apache-2.0" +__copyright__ = "2014 %s" % __author__ diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/_elffile.py b/venv/Lib/site-packages/pip/_vendor/packaging/_elffile.py new file mode 100644 index 00000000000..f7a02180bfe --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/_elffile.py @@ -0,0 +1,110 @@ +""" +ELF file parser. + +This provides a class ``ELFFile`` that parses an ELF executable in a similar +interface to ``ZipFile``. Only the read interface is implemented. + +Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca +ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html +""" + +from __future__ import annotations + +import enum +import os +import struct +from typing import IO + + +class ELFInvalid(ValueError): + pass + + +class EIClass(enum.IntEnum): + C32 = 1 + C64 = 2 + + +class EIData(enum.IntEnum): + Lsb = 1 + Msb = 2 + + +class EMachine(enum.IntEnum): + I386 = 3 + S390 = 22 + Arm = 40 + X8664 = 62 + AArc64 = 183 + + +class ELFFile: + """ + Representation of an ELF executable. + """ + + def __init__(self, f: IO[bytes]) -> None: + self._f = f + + try: + ident = self._read("16B") + except struct.error: + raise ELFInvalid("unable to parse identification") + magic = bytes(ident[:4]) + if magic != b"\x7fELF": + raise ELFInvalid(f"invalid magic: {magic!r}") + + self.capacity = ident[4] # Format for program header (bitness). + self.encoding = ident[5] # Data structure encoding (endianness). + + try: + # e_fmt: Format for program header. + # p_fmt: Format for section header. + # p_idx: Indexes to find p_type, p_offset, and p_filesz. + e_fmt, self._p_fmt, self._p_idx = { + (1, 1): ("HHIIIIIHHH", ">IIIIIIII", (0, 1, 4)), # 32-bit MSB. + (2, 1): ("HHIQQQIHHH", ">IIQQQQQQ", (0, 2, 5)), # 64-bit MSB. + }[(self.capacity, self.encoding)] + except KeyError: + raise ELFInvalid( + f"unrecognized capacity ({self.capacity}) or " + f"encoding ({self.encoding})" + ) + + try: + ( + _, + self.machine, # Architecture type. + _, + _, + self._e_phoff, # Offset of program header. + _, + self.flags, # Processor-specific flags. + _, + self._e_phentsize, # Size of section. + self._e_phnum, # Number of sections. + ) = self._read(e_fmt) + except struct.error as e: + raise ELFInvalid("unable to parse machine and section information") from e + + def _read(self, fmt: str) -> tuple[int, ...]: + return struct.unpack(fmt, self._f.read(struct.calcsize(fmt))) + + @property + def interpreter(self) -> str | None: + """ + The path recorded in the ``PT_INTERP`` section header. + """ + for index in range(self._e_phnum): + self._f.seek(self._e_phoff + self._e_phentsize * index) + try: + data = self._read(self._p_fmt) + except struct.error: + continue + if data[self._p_idx[0]] != 3: # Not PT_INTERP. + continue + self._f.seek(data[self._p_idx[1]]) + return os.fsdecode(self._f.read(data[self._p_idx[2]])).strip("\0") + return None diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/_manylinux.py b/venv/Lib/site-packages/pip/_vendor/packaging/_manylinux.py new file mode 100644 index 00000000000..08f651fbd8d --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/_manylinux.py @@ -0,0 +1,262 @@ +from __future__ import annotations + +import collections +import contextlib +import functools +import os +import re +import sys +import warnings +from typing import Generator, Iterator, NamedTuple, Sequence + +from ._elffile import EIClass, EIData, ELFFile, EMachine + +EF_ARM_ABIMASK = 0xFF000000 +EF_ARM_ABI_VER5 = 0x05000000 +EF_ARM_ABI_FLOAT_HARD = 0x00000400 + + +# `os.PathLike` not a generic type until Python 3.9, so sticking with `str` +# as the type for `path` until then. +@contextlib.contextmanager +def _parse_elf(path: str) -> Generator[ELFFile | None, None, None]: + try: + with open(path, "rb") as f: + yield ELFFile(f) + except (OSError, TypeError, ValueError): + yield None + + +def _is_linux_armhf(executable: str) -> bool: + # hard-float ABI can be detected from the ELF header of the running + # process + # https://static.docs.arm.com/ihi0044/g/aaelf32.pdf + with _parse_elf(executable) as f: + return ( + f is not None + and f.capacity == EIClass.C32 + and f.encoding == EIData.Lsb + and f.machine == EMachine.Arm + and f.flags & EF_ARM_ABIMASK == EF_ARM_ABI_VER5 + and f.flags & EF_ARM_ABI_FLOAT_HARD == EF_ARM_ABI_FLOAT_HARD + ) + + +def _is_linux_i686(executable: str) -> bool: + with _parse_elf(executable) as f: + return ( + f is not None + and f.capacity == EIClass.C32 + and f.encoding == EIData.Lsb + and f.machine == EMachine.I386 + ) + + +def _have_compatible_abi(executable: str, archs: Sequence[str]) -> bool: + if "armv7l" in archs: + return _is_linux_armhf(executable) + if "i686" in archs: + return _is_linux_i686(executable) + allowed_archs = { + "x86_64", + "aarch64", + "ppc64", + "ppc64le", + "s390x", + "loongarch64", + "riscv64", + } + return any(arch in allowed_archs for arch in archs) + + +# If glibc ever changes its major version, we need to know what the last +# minor version was, so we can build the complete list of all versions. +# For now, guess what the highest minor version might be, assume it will +# be 50 for testing. Once this actually happens, update the dictionary +# with the actual value. +_LAST_GLIBC_MINOR: dict[int, int] = collections.defaultdict(lambda: 50) + + +class _GLibCVersion(NamedTuple): + major: int + minor: int + + +def _glibc_version_string_confstr() -> str | None: + """ + Primary implementation of glibc_version_string using os.confstr. + """ + # os.confstr is quite a bit faster than ctypes.DLL. It's also less likely + # to be broken or missing. This strategy is used in the standard library + # platform module. + # https://github.com/python/cpython/blob/fcf1d003bf4f0100c/Lib/platform.py#L175-L183 + try: + # Should be a string like "glibc 2.17". + version_string: str | None = os.confstr("CS_GNU_LIBC_VERSION") + assert version_string is not None + _, version = version_string.rsplit() + except (AssertionError, AttributeError, OSError, ValueError): + # os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)... + return None + return version + + +def _glibc_version_string_ctypes() -> str | None: + """ + Fallback implementation of glibc_version_string using ctypes. + """ + try: + import ctypes + except ImportError: + return None + + # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen + # manpage says, "If filename is NULL, then the returned handle is for the + # main program". This way we can let the linker do the work to figure out + # which libc our process is actually using. + # + # We must also handle the special case where the executable is not a + # dynamically linked executable. This can occur when using musl libc, + # for example. In this situation, dlopen() will error, leading to an + # OSError. Interestingly, at least in the case of musl, there is no + # errno set on the OSError. The single string argument used to construct + # OSError comes from libc itself and is therefore not portable to + # hard code here. In any case, failure to call dlopen() means we + # can proceed, so we bail on our attempt. + try: + process_namespace = ctypes.CDLL(None) + except OSError: + return None + + try: + gnu_get_libc_version = process_namespace.gnu_get_libc_version + except AttributeError: + # Symbol doesn't exist -> therefore, we are not linked to + # glibc. + return None + + # Call gnu_get_libc_version, which returns a string like "2.5" + gnu_get_libc_version.restype = ctypes.c_char_p + version_str: str = gnu_get_libc_version() + # py2 / py3 compatibility: + if not isinstance(version_str, str): + version_str = version_str.decode("ascii") + + return version_str + + +def _glibc_version_string() -> str | None: + """Returns glibc version string, or None if not using glibc.""" + return _glibc_version_string_confstr() or _glibc_version_string_ctypes() + + +def _parse_glibc_version(version_str: str) -> tuple[int, int]: + """Parse glibc version. + + We use a regexp instead of str.split because we want to discard any + random junk that might come after the minor version -- this might happen + in patched/forked versions of glibc (e.g. Linaro's version of glibc + uses version strings like "2.20-2014.11"). See gh-3588. + """ + m = re.match(r"(?P[0-9]+)\.(?P[0-9]+)", version_str) + if not m: + warnings.warn( + f"Expected glibc version with 2 components major.minor," + f" got: {version_str}", + RuntimeWarning, + ) + return -1, -1 + return int(m.group("major")), int(m.group("minor")) + + +@functools.lru_cache +def _get_glibc_version() -> tuple[int, int]: + version_str = _glibc_version_string() + if version_str is None: + return (-1, -1) + return _parse_glibc_version(version_str) + + +# From PEP 513, PEP 600 +def _is_compatible(arch: str, version: _GLibCVersion) -> bool: + sys_glibc = _get_glibc_version() + if sys_glibc < version: + return False + # Check for presence of _manylinux module. + try: + import _manylinux + except ImportError: + return True + if hasattr(_manylinux, "manylinux_compatible"): + result = _manylinux.manylinux_compatible(version[0], version[1], arch) + if result is not None: + return bool(result) + return True + if version == _GLibCVersion(2, 5): + if hasattr(_manylinux, "manylinux1_compatible"): + return bool(_manylinux.manylinux1_compatible) + if version == _GLibCVersion(2, 12): + if hasattr(_manylinux, "manylinux2010_compatible"): + return bool(_manylinux.manylinux2010_compatible) + if version == _GLibCVersion(2, 17): + if hasattr(_manylinux, "manylinux2014_compatible"): + return bool(_manylinux.manylinux2014_compatible) + return True + + +_LEGACY_MANYLINUX_MAP = { + # CentOS 7 w/ glibc 2.17 (PEP 599) + (2, 17): "manylinux2014", + # CentOS 6 w/ glibc 2.12 (PEP 571) + (2, 12): "manylinux2010", + # CentOS 5 w/ glibc 2.5 (PEP 513) + (2, 5): "manylinux1", +} + + +def platform_tags(archs: Sequence[str]) -> Iterator[str]: + """Generate manylinux tags compatible to the current platform. + + :param archs: Sequence of compatible architectures. + The first one shall be the closest to the actual architecture and be the part of + platform tag after the ``linux_`` prefix, e.g. ``x86_64``. + The ``linux_`` prefix is assumed as a prerequisite for the current platform to + be manylinux-compatible. + + :returns: An iterator of compatible manylinux tags. + """ + if not _have_compatible_abi(sys.executable, archs): + return + # Oldest glibc to be supported regardless of architecture is (2, 17). + too_old_glibc2 = _GLibCVersion(2, 16) + if set(archs) & {"x86_64", "i686"}: + # On x86/i686 also oldest glibc to be supported is (2, 5). + too_old_glibc2 = _GLibCVersion(2, 4) + current_glibc = _GLibCVersion(*_get_glibc_version()) + glibc_max_list = [current_glibc] + # We can assume compatibility across glibc major versions. + # https://sourceware.org/bugzilla/show_bug.cgi?id=24636 + # + # Build a list of maximum glibc versions so that we can + # output the canonical list of all glibc from current_glibc + # down to too_old_glibc2, including all intermediary versions. + for glibc_major in range(current_glibc.major - 1, 1, -1): + glibc_minor = _LAST_GLIBC_MINOR[glibc_major] + glibc_max_list.append(_GLibCVersion(glibc_major, glibc_minor)) + for arch in archs: + for glibc_max in glibc_max_list: + if glibc_max.major == too_old_glibc2.major: + min_minor = too_old_glibc2.minor + else: + # For other glibc major versions oldest supported is (x, 0). + min_minor = -1 + for glibc_minor in range(glibc_max.minor, min_minor, -1): + glibc_version = _GLibCVersion(glibc_max.major, glibc_minor) + tag = "manylinux_{}_{}".format(*glibc_version) + if _is_compatible(arch, glibc_version): + yield f"{tag}_{arch}" + # Handle the legacy manylinux1, manylinux2010, manylinux2014 tags. + if glibc_version in _LEGACY_MANYLINUX_MAP: + legacy_tag = _LEGACY_MANYLINUX_MAP[glibc_version] + if _is_compatible(arch, glibc_version): + yield f"{legacy_tag}_{arch}" diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/_musllinux.py b/venv/Lib/site-packages/pip/_vendor/packaging/_musllinux.py new file mode 100644 index 00000000000..d2bf30b5631 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/_musllinux.py @@ -0,0 +1,85 @@ +"""PEP 656 support. + +This module implements logic to detect if the currently running Python is +linked against musl, and what musl version is used. +""" + +from __future__ import annotations + +import functools +import re +import subprocess +import sys +from typing import Iterator, NamedTuple, Sequence + +from ._elffile import ELFFile + + +class _MuslVersion(NamedTuple): + major: int + minor: int + + +def _parse_musl_version(output: str) -> _MuslVersion | None: + lines = [n for n in (n.strip() for n in output.splitlines()) if n] + if len(lines) < 2 or lines[0][:4] != "musl": + return None + m = re.match(r"Version (\d+)\.(\d+)", lines[1]) + if not m: + return None + return _MuslVersion(major=int(m.group(1)), minor=int(m.group(2))) + + +@functools.lru_cache +def _get_musl_version(executable: str) -> _MuslVersion | None: + """Detect currently-running musl runtime version. + + This is done by checking the specified executable's dynamic linking + information, and invoking the loader to parse its output for a version + string. If the loader is musl, the output would be something like:: + + musl libc (x86_64) + Version 1.2.2 + Dynamic Program Loader + """ + try: + with open(executable, "rb") as f: + ld = ELFFile(f).interpreter + except (OSError, TypeError, ValueError): + return None + if ld is None or "musl" not in ld: + return None + proc = subprocess.run([ld], stderr=subprocess.PIPE, text=True) + return _parse_musl_version(proc.stderr) + + +def platform_tags(archs: Sequence[str]) -> Iterator[str]: + """Generate musllinux tags compatible to the current platform. + + :param archs: Sequence of compatible architectures. + The first one shall be the closest to the actual architecture and be the part of + platform tag after the ``linux_`` prefix, e.g. ``x86_64``. + The ``linux_`` prefix is assumed as a prerequisite for the current platform to + be musllinux-compatible. + + :returns: An iterator of compatible musllinux tags. + """ + sys_musl = _get_musl_version(sys.executable) + if sys_musl is None: # Python not dynamically linked against musl. + return + for arch in archs: + for minor in range(sys_musl.minor, -1, -1): + yield f"musllinux_{sys_musl.major}_{minor}_{arch}" + + +if __name__ == "__main__": # pragma: no cover + import sysconfig + + plat = sysconfig.get_platform() + assert plat.startswith("linux-"), "not linux" + + print("plat:", plat) + print("musl:", _get_musl_version(sys.executable)) + print("tags:", end=" ") + for t in platform_tags(re.sub(r"[.-]", "_", plat.split("-", 1)[-1])): + print(t, end="\n ") diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/_parser.py b/venv/Lib/site-packages/pip/_vendor/packaging/_parser.py new file mode 100644 index 00000000000..c1238c06eab --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/_parser.py @@ -0,0 +1,354 @@ +"""Handwritten parser of dependency specifiers. + +The docstring for each __parse_* function contains EBNF-inspired grammar representing +the implementation. +""" + +from __future__ import annotations + +import ast +from typing import NamedTuple, Sequence, Tuple, Union + +from ._tokenizer import DEFAULT_RULES, Tokenizer + + +class Node: + def __init__(self, value: str) -> None: + self.value = value + + def __str__(self) -> str: + return self.value + + def __repr__(self) -> str: + return f"<{self.__class__.__name__}('{self}')>" + + def serialize(self) -> str: + raise NotImplementedError + + +class Variable(Node): + def serialize(self) -> str: + return str(self) + + +class Value(Node): + def serialize(self) -> str: + return f'"{self}"' + + +class Op(Node): + def serialize(self) -> str: + return str(self) + + +MarkerVar = Union[Variable, Value] +MarkerItem = Tuple[MarkerVar, Op, MarkerVar] +MarkerAtom = Union[MarkerItem, Sequence["MarkerAtom"]] +MarkerList = Sequence[Union["MarkerList", MarkerAtom, str]] + + +class ParsedRequirement(NamedTuple): + name: str + url: str + extras: list[str] + specifier: str + marker: MarkerList | None + + +# -------------------------------------------------------------------------------------- +# Recursive descent parser for dependency specifier +# -------------------------------------------------------------------------------------- +def parse_requirement(source: str) -> ParsedRequirement: + return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES)) + + +def _parse_requirement(tokenizer: Tokenizer) -> ParsedRequirement: + """ + requirement = WS? IDENTIFIER WS? extras WS? requirement_details + """ + tokenizer.consume("WS") + + name_token = tokenizer.expect( + "IDENTIFIER", expected="package name at the start of dependency specifier" + ) + name = name_token.text + tokenizer.consume("WS") + + extras = _parse_extras(tokenizer) + tokenizer.consume("WS") + + url, specifier, marker = _parse_requirement_details(tokenizer) + tokenizer.expect("END", expected="end of dependency specifier") + + return ParsedRequirement(name, url, extras, specifier, marker) + + +def _parse_requirement_details( + tokenizer: Tokenizer, +) -> tuple[str, str, MarkerList | None]: + """ + requirement_details = AT URL (WS requirement_marker?)? + | specifier WS? (requirement_marker)? + """ + + specifier = "" + url = "" + marker = None + + if tokenizer.check("AT"): + tokenizer.read() + tokenizer.consume("WS") + + url_start = tokenizer.position + url = tokenizer.expect("URL", expected="URL after @").text + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + tokenizer.expect("WS", expected="whitespace after URL") + + # The input might end after whitespace. + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + marker = _parse_requirement_marker( + tokenizer, span_start=url_start, after="URL and whitespace" + ) + else: + specifier_start = tokenizer.position + specifier = _parse_specifier(tokenizer) + tokenizer.consume("WS") + + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + marker = _parse_requirement_marker( + tokenizer, + span_start=specifier_start, + after=( + "version specifier" + if specifier + else "name and no valid version specifier" + ), + ) + + return (url, specifier, marker) + + +def _parse_requirement_marker( + tokenizer: Tokenizer, *, span_start: int, after: str +) -> MarkerList: + """ + requirement_marker = SEMICOLON marker WS? + """ + + if not tokenizer.check("SEMICOLON"): + tokenizer.raise_syntax_error( + f"Expected end or semicolon (after {after})", + span_start=span_start, + ) + tokenizer.read() + + marker = _parse_marker(tokenizer) + tokenizer.consume("WS") + + return marker + + +def _parse_extras(tokenizer: Tokenizer) -> list[str]: + """ + extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)? + """ + if not tokenizer.check("LEFT_BRACKET", peek=True): + return [] + + with tokenizer.enclosing_tokens( + "LEFT_BRACKET", + "RIGHT_BRACKET", + around="extras", + ): + tokenizer.consume("WS") + extras = _parse_extras_list(tokenizer) + tokenizer.consume("WS") + + return extras + + +def _parse_extras_list(tokenizer: Tokenizer) -> list[str]: + """ + extras_list = identifier (wsp* ',' wsp* identifier)* + """ + extras: list[str] = [] + + if not tokenizer.check("IDENTIFIER"): + return extras + + extras.append(tokenizer.read().text) + + while True: + tokenizer.consume("WS") + if tokenizer.check("IDENTIFIER", peek=True): + tokenizer.raise_syntax_error("Expected comma between extra names") + elif not tokenizer.check("COMMA"): + break + + tokenizer.read() + tokenizer.consume("WS") + + extra_token = tokenizer.expect("IDENTIFIER", expected="extra name after comma") + extras.append(extra_token.text) + + return extras + + +def _parse_specifier(tokenizer: Tokenizer) -> str: + """ + specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS + | WS? version_many WS? + """ + with tokenizer.enclosing_tokens( + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + around="version specifier", + ): + tokenizer.consume("WS") + parsed_specifiers = _parse_version_many(tokenizer) + tokenizer.consume("WS") + + return parsed_specifiers + + +def _parse_version_many(tokenizer: Tokenizer) -> str: + """ + version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)? + """ + parsed_specifiers = "" + while tokenizer.check("SPECIFIER"): + span_start = tokenizer.position + parsed_specifiers += tokenizer.read().text + if tokenizer.check("VERSION_PREFIX_TRAIL", peek=True): + tokenizer.raise_syntax_error( + ".* suffix can only be used with `==` or `!=` operators", + span_start=span_start, + span_end=tokenizer.position + 1, + ) + if tokenizer.check("VERSION_LOCAL_LABEL_TRAIL", peek=True): + tokenizer.raise_syntax_error( + "Local version label can only be used with `==` or `!=` operators", + span_start=span_start, + span_end=tokenizer.position, + ) + tokenizer.consume("WS") + if not tokenizer.check("COMMA"): + break + parsed_specifiers += tokenizer.read().text + tokenizer.consume("WS") + + return parsed_specifiers + + +# -------------------------------------------------------------------------------------- +# Recursive descent parser for marker expression +# -------------------------------------------------------------------------------------- +def parse_marker(source: str) -> MarkerList: + return _parse_full_marker(Tokenizer(source, rules=DEFAULT_RULES)) + + +def _parse_full_marker(tokenizer: Tokenizer) -> MarkerList: + retval = _parse_marker(tokenizer) + tokenizer.expect("END", expected="end of marker expression") + return retval + + +def _parse_marker(tokenizer: Tokenizer) -> MarkerList: + """ + marker = marker_atom (BOOLOP marker_atom)+ + """ + expression = [_parse_marker_atom(tokenizer)] + while tokenizer.check("BOOLOP"): + token = tokenizer.read() + expr_right = _parse_marker_atom(tokenizer) + expression.extend((token.text, expr_right)) + return expression + + +def _parse_marker_atom(tokenizer: Tokenizer) -> MarkerAtom: + """ + marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS? + | WS? marker_item WS? + """ + + tokenizer.consume("WS") + if tokenizer.check("LEFT_PARENTHESIS", peek=True): + with tokenizer.enclosing_tokens( + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + around="marker expression", + ): + tokenizer.consume("WS") + marker: MarkerAtom = _parse_marker(tokenizer) + tokenizer.consume("WS") + else: + marker = _parse_marker_item(tokenizer) + tokenizer.consume("WS") + return marker + + +def _parse_marker_item(tokenizer: Tokenizer) -> MarkerItem: + """ + marker_item = WS? marker_var WS? marker_op WS? marker_var WS? + """ + tokenizer.consume("WS") + marker_var_left = _parse_marker_var(tokenizer) + tokenizer.consume("WS") + marker_op = _parse_marker_op(tokenizer) + tokenizer.consume("WS") + marker_var_right = _parse_marker_var(tokenizer) + tokenizer.consume("WS") + return (marker_var_left, marker_op, marker_var_right) + + +def _parse_marker_var(tokenizer: Tokenizer) -> MarkerVar: + """ + marker_var = VARIABLE | QUOTED_STRING + """ + if tokenizer.check("VARIABLE"): + return process_env_var(tokenizer.read().text.replace(".", "_")) + elif tokenizer.check("QUOTED_STRING"): + return process_python_str(tokenizer.read().text) + else: + tokenizer.raise_syntax_error( + message="Expected a marker variable or quoted string" + ) + + +def process_env_var(env_var: str) -> Variable: + if env_var in ("platform_python_implementation", "python_implementation"): + return Variable("platform_python_implementation") + else: + return Variable(env_var) + + +def process_python_str(python_str: str) -> Value: + value = ast.literal_eval(python_str) + return Value(str(value)) + + +def _parse_marker_op(tokenizer: Tokenizer) -> Op: + """ + marker_op = IN | NOT IN | OP + """ + if tokenizer.check("IN"): + tokenizer.read() + return Op("in") + elif tokenizer.check("NOT"): + tokenizer.read() + tokenizer.expect("WS", expected="whitespace after 'not'") + tokenizer.expect("IN", expected="'in' after 'not'") + return Op("not in") + elif tokenizer.check("OP"): + return Op(tokenizer.read().text) + else: + return tokenizer.raise_syntax_error( + "Expected marker operator, one of " + "<=, <, !=, ==, >=, >, ~=, ===, in, not in" + ) diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/_structures.py b/venv/Lib/site-packages/pip/_vendor/packaging/_structures.py new file mode 100644 index 00000000000..90a6465f968 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/_structures.py @@ -0,0 +1,61 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + + +class InfinityType: + def __repr__(self) -> str: + return "Infinity" + + def __hash__(self) -> int: + return hash(repr(self)) + + def __lt__(self, other: object) -> bool: + return False + + def __le__(self, other: object) -> bool: + return False + + def __eq__(self, other: object) -> bool: + return isinstance(other, self.__class__) + + def __gt__(self, other: object) -> bool: + return True + + def __ge__(self, other: object) -> bool: + return True + + def __neg__(self: object) -> "NegativeInfinityType": + return NegativeInfinity + + +Infinity = InfinityType() + + +class NegativeInfinityType: + def __repr__(self) -> str: + return "-Infinity" + + def __hash__(self) -> int: + return hash(repr(self)) + + def __lt__(self, other: object) -> bool: + return True + + def __le__(self, other: object) -> bool: + return True + + def __eq__(self, other: object) -> bool: + return isinstance(other, self.__class__) + + def __gt__(self, other: object) -> bool: + return False + + def __ge__(self, other: object) -> bool: + return False + + def __neg__(self: object) -> InfinityType: + return Infinity + + +NegativeInfinity = NegativeInfinityType() diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py b/venv/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py new file mode 100644 index 00000000000..89d041605c0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py @@ -0,0 +1,194 @@ +from __future__ import annotations + +import contextlib +import re +from dataclasses import dataclass +from typing import Iterator, NoReturn + +from .specifiers import Specifier + + +@dataclass +class Token: + name: str + text: str + position: int + + +class ParserSyntaxError(Exception): + """The provided source text could not be parsed correctly.""" + + def __init__( + self, + message: str, + *, + source: str, + span: tuple[int, int], + ) -> None: + self.span = span + self.message = message + self.source = source + + super().__init__() + + def __str__(self) -> str: + marker = " " * self.span[0] + "~" * (self.span[1] - self.span[0]) + "^" + return "\n ".join([self.message, self.source, marker]) + + +DEFAULT_RULES: dict[str, str | re.Pattern[str]] = { + "LEFT_PARENTHESIS": r"\(", + "RIGHT_PARENTHESIS": r"\)", + "LEFT_BRACKET": r"\[", + "RIGHT_BRACKET": r"\]", + "SEMICOLON": r";", + "COMMA": r",", + "QUOTED_STRING": re.compile( + r""" + ( + ('[^']*') + | + ("[^"]*") + ) + """, + re.VERBOSE, + ), + "OP": r"(===|==|~=|!=|<=|>=|<|>)", + "BOOLOP": r"\b(or|and)\b", + "IN": r"\bin\b", + "NOT": r"\bnot\b", + "VARIABLE": re.compile( + r""" + \b( + python_version + |python_full_version + |os[._]name + |sys[._]platform + |platform_(release|system) + |platform[._](version|machine|python_implementation) + |python_implementation + |implementation_(name|version) + |extra + )\b + """, + re.VERBOSE, + ), + "SPECIFIER": re.compile( + Specifier._operator_regex_str + Specifier._version_regex_str, + re.VERBOSE | re.IGNORECASE, + ), + "AT": r"\@", + "URL": r"[^ \t]+", + "IDENTIFIER": r"\b[a-zA-Z0-9][a-zA-Z0-9._-]*\b", + "VERSION_PREFIX_TRAIL": r"\.\*", + "VERSION_LOCAL_LABEL_TRAIL": r"\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*", + "WS": r"[ \t]+", + "END": r"$", +} + + +class Tokenizer: + """Context-sensitive token parsing. + + Provides methods to examine the input stream to check whether the next token + matches. + """ + + def __init__( + self, + source: str, + *, + rules: dict[str, str | re.Pattern[str]], + ) -> None: + self.source = source + self.rules: dict[str, re.Pattern[str]] = { + name: re.compile(pattern) for name, pattern in rules.items() + } + self.next_token: Token | None = None + self.position = 0 + + def consume(self, name: str) -> None: + """Move beyond provided token name, if at current position.""" + if self.check(name): + self.read() + + def check(self, name: str, *, peek: bool = False) -> bool: + """Check whether the next token has the provided name. + + By default, if the check succeeds, the token *must* be read before + another check. If `peek` is set to `True`, the token is not loaded and + would need to be checked again. + """ + assert ( + self.next_token is None + ), f"Cannot check for {name!r}, already have {self.next_token!r}" + assert name in self.rules, f"Unknown token name: {name!r}" + + expression = self.rules[name] + + match = expression.match(self.source, self.position) + if match is None: + return False + if not peek: + self.next_token = Token(name, match[0], self.position) + return True + + def expect(self, name: str, *, expected: str) -> Token: + """Expect a certain token name next, failing with a syntax error otherwise. + + The token is *not* read. + """ + if not self.check(name): + raise self.raise_syntax_error(f"Expected {expected}") + return self.read() + + def read(self) -> Token: + """Consume the next token and return it.""" + token = self.next_token + assert token is not None + + self.position += len(token.text) + self.next_token = None + + return token + + def raise_syntax_error( + self, + message: str, + *, + span_start: int | None = None, + span_end: int | None = None, + ) -> NoReturn: + """Raise ParserSyntaxError at the given position.""" + span = ( + self.position if span_start is None else span_start, + self.position if span_end is None else span_end, + ) + raise ParserSyntaxError( + message, + source=self.source, + span=span, + ) + + @contextlib.contextmanager + def enclosing_tokens( + self, open_token: str, close_token: str, *, around: str + ) -> Iterator[None]: + if self.check(open_token): + open_position = self.position + self.read() + else: + open_position = None + + yield + + if open_position is None: + return + + if not self.check(close_token): + self.raise_syntax_error( + f"Expected matching {close_token} for {open_token}, after {around}", + span_start=open_position, + ) + + self.read() diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/markers.py b/venv/Lib/site-packages/pip/_vendor/packaging/markers.py new file mode 100644 index 00000000000..7ac7bb69a53 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/markers.py @@ -0,0 +1,325 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import operator +import os +import platform +import sys +from typing import Any, Callable, TypedDict, cast + +from ._parser import MarkerAtom, MarkerList, Op, Value, Variable +from ._parser import parse_marker as _parse_marker +from ._tokenizer import ParserSyntaxError +from .specifiers import InvalidSpecifier, Specifier +from .utils import canonicalize_name + +__all__ = [ + "InvalidMarker", + "UndefinedComparison", + "UndefinedEnvironmentName", + "Marker", + "default_environment", +] + +Operator = Callable[[str, str], bool] + + +class InvalidMarker(ValueError): + """ + An invalid marker was found, users should refer to PEP 508. + """ + + +class UndefinedComparison(ValueError): + """ + An invalid operation was attempted on a value that doesn't support it. + """ + + +class UndefinedEnvironmentName(ValueError): + """ + A name was attempted to be used that does not exist inside of the + environment. + """ + + +class Environment(TypedDict): + implementation_name: str + """The implementation's identifier, e.g. ``'cpython'``.""" + + implementation_version: str + """ + The implementation's version, e.g. ``'3.13.0a2'`` for CPython 3.13.0a2, or + ``'7.3.13'`` for PyPy3.10 v7.3.13. + """ + + os_name: str + """ + The value of :py:data:`os.name`. The name of the operating system dependent module + imported, e.g. ``'posix'``. + """ + + platform_machine: str + """ + Returns the machine type, e.g. ``'i386'``. + + An empty string if the value cannot be determined. + """ + + platform_release: str + """ + The system's release, e.g. ``'2.2.0'`` or ``'NT'``. + + An empty string if the value cannot be determined. + """ + + platform_system: str + """ + The system/OS name, e.g. ``'Linux'``, ``'Windows'`` or ``'Java'``. + + An empty string if the value cannot be determined. + """ + + platform_version: str + """ + The system's release version, e.g. ``'#3 on degas'``. + + An empty string if the value cannot be determined. + """ + + python_full_version: str + """ + The Python version as string ``'major.minor.patchlevel'``. + + Note that unlike the Python :py:data:`sys.version`, this value will always include + the patchlevel (it defaults to 0). + """ + + platform_python_implementation: str + """ + A string identifying the Python implementation, e.g. ``'CPython'``. + """ + + python_version: str + """The Python version as string ``'major.minor'``.""" + + sys_platform: str + """ + This string contains a platform identifier that can be used to append + platform-specific components to :py:data:`sys.path`, for instance. + + For Unix systems, except on Linux and AIX, this is the lowercased OS name as + returned by ``uname -s`` with the first part of the version as returned by + ``uname -r`` appended, e.g. ``'sunos5'`` or ``'freebsd8'``, at the time when Python + was built. + """ + + +def _normalize_extra_values(results: Any) -> Any: + """ + Normalize extra values. + """ + if isinstance(results[0], tuple): + lhs, op, rhs = results[0] + if isinstance(lhs, Variable) and lhs.value == "extra": + normalized_extra = canonicalize_name(rhs.value) + rhs = Value(normalized_extra) + elif isinstance(rhs, Variable) and rhs.value == "extra": + normalized_extra = canonicalize_name(lhs.value) + lhs = Value(normalized_extra) + results[0] = lhs, op, rhs + return results + + +def _format_marker( + marker: list[str] | MarkerAtom | str, first: bool | None = True +) -> str: + assert isinstance(marker, (list, tuple, str)) + + # Sometimes we have a structure like [[...]] which is a single item list + # where the single item is itself it's own list. In that case we want skip + # the rest of this function so that we don't get extraneous () on the + # outside. + if ( + isinstance(marker, list) + and len(marker) == 1 + and isinstance(marker[0], (list, tuple)) + ): + return _format_marker(marker[0]) + + if isinstance(marker, list): + inner = (_format_marker(m, first=False) for m in marker) + if first: + return " ".join(inner) + else: + return "(" + " ".join(inner) + ")" + elif isinstance(marker, tuple): + return " ".join([m.serialize() for m in marker]) + else: + return marker + + +_operators: dict[str, Operator] = { + "in": lambda lhs, rhs: lhs in rhs, + "not in": lambda lhs, rhs: lhs not in rhs, + "<": operator.lt, + "<=": operator.le, + "==": operator.eq, + "!=": operator.ne, + ">=": operator.ge, + ">": operator.gt, +} + + +def _eval_op(lhs: str, op: Op, rhs: str) -> bool: + try: + spec = Specifier("".join([op.serialize(), rhs])) + except InvalidSpecifier: + pass + else: + return spec.contains(lhs, prereleases=True) + + oper: Operator | None = _operators.get(op.serialize()) + if oper is None: + raise UndefinedComparison(f"Undefined {op!r} on {lhs!r} and {rhs!r}.") + + return oper(lhs, rhs) + + +def _normalize(*values: str, key: str) -> tuple[str, ...]: + # PEP 685 – Comparison of extra names for optional distribution dependencies + # https://peps.python.org/pep-0685/ + # > When comparing extra names, tools MUST normalize the names being + # > compared using the semantics outlined in PEP 503 for names + if key == "extra": + return tuple(canonicalize_name(v) for v in values) + + # other environment markers don't have such standards + return values + + +def _evaluate_markers(markers: MarkerList, environment: dict[str, str]) -> bool: + groups: list[list[bool]] = [[]] + + for marker in markers: + assert isinstance(marker, (list, tuple, str)) + + if isinstance(marker, list): + groups[-1].append(_evaluate_markers(marker, environment)) + elif isinstance(marker, tuple): + lhs, op, rhs = marker + + if isinstance(lhs, Variable): + environment_key = lhs.value + lhs_value = environment[environment_key] + rhs_value = rhs.value + else: + lhs_value = lhs.value + environment_key = rhs.value + rhs_value = environment[environment_key] + + lhs_value, rhs_value = _normalize(lhs_value, rhs_value, key=environment_key) + groups[-1].append(_eval_op(lhs_value, op, rhs_value)) + else: + assert marker in ["and", "or"] + if marker == "or": + groups.append([]) + + return any(all(item) for item in groups) + + +def format_full_version(info: sys._version_info) -> str: + version = "{0.major}.{0.minor}.{0.micro}".format(info) + kind = info.releaselevel + if kind != "final": + version += kind[0] + str(info.serial) + return version + + +def default_environment() -> Environment: + iver = format_full_version(sys.implementation.version) + implementation_name = sys.implementation.name + return { + "implementation_name": implementation_name, + "implementation_version": iver, + "os_name": os.name, + "platform_machine": platform.machine(), + "platform_release": platform.release(), + "platform_system": platform.system(), + "platform_version": platform.version(), + "python_full_version": platform.python_version(), + "platform_python_implementation": platform.python_implementation(), + "python_version": ".".join(platform.python_version_tuple()[:2]), + "sys_platform": sys.platform, + } + + +class Marker: + def __init__(self, marker: str) -> None: + # Note: We create a Marker object without calling this constructor in + # packaging.requirements.Requirement. If any additional logic is + # added here, make sure to mirror/adapt Requirement. + try: + self._markers = _normalize_extra_values(_parse_marker(marker)) + # The attribute `_markers` can be described in terms of a recursive type: + # MarkerList = List[Union[Tuple[Node, ...], str, MarkerList]] + # + # For example, the following expression: + # python_version > "3.6" or (python_version == "3.6" and os_name == "unix") + # + # is parsed into: + # [ + # (, ')>, ), + # 'and', + # [ + # (, , ), + # 'or', + # (, , ) + # ] + # ] + except ParserSyntaxError as e: + raise InvalidMarker(str(e)) from e + + def __str__(self) -> str: + return _format_marker(self._markers) + + def __repr__(self) -> str: + return f"" + + def __hash__(self) -> int: + return hash((self.__class__.__name__, str(self))) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, Marker): + return NotImplemented + + return str(self) == str(other) + + def evaluate(self, environment: dict[str, str] | None = None) -> bool: + """Evaluate a marker. + + Return the boolean from evaluating the given marker against the + environment. environment is an optional argument to override all or + part of the determined environment. + + The environment is determined from the current Python process. + """ + current_environment = cast("dict[str, str]", default_environment()) + current_environment["extra"] = "" + # Work around platform.python_version() returning something that is not PEP 440 + # compliant for non-tagged Python builds. We preserve default_environment()'s + # behavior of returning platform.python_version() verbatim, and leave it to the + # caller to provide a syntactically valid version if they want to override it. + if current_environment["python_full_version"].endswith("+"): + current_environment["python_full_version"] += "local" + if environment is not None: + current_environment.update(environment) + # The API used to allow setting extra to None. We need to handle this + # case for backwards compatibility. + if current_environment["extra"] is None: + current_environment["extra"] = "" + + return _evaluate_markers(self._markers, current_environment) diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/metadata.py b/venv/Lib/site-packages/pip/_vendor/packaging/metadata.py new file mode 100644 index 00000000000..eb8dc844d28 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/metadata.py @@ -0,0 +1,804 @@ +from __future__ import annotations + +import email.feedparser +import email.header +import email.message +import email.parser +import email.policy +import typing +from typing import ( + Any, + Callable, + Generic, + Literal, + TypedDict, + cast, +) + +from . import requirements, specifiers, utils +from . import version as version_module + +T = typing.TypeVar("T") + + +try: + ExceptionGroup +except NameError: # pragma: no cover + + class ExceptionGroup(Exception): + """A minimal implementation of :external:exc:`ExceptionGroup` from Python 3.11. + + If :external:exc:`ExceptionGroup` is already defined by Python itself, + that version is used instead. + """ + + message: str + exceptions: list[Exception] + + def __init__(self, message: str, exceptions: list[Exception]) -> None: + self.message = message + self.exceptions = exceptions + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self.message!r}, {self.exceptions!r})" + +else: # pragma: no cover + ExceptionGroup = ExceptionGroup + + +class InvalidMetadata(ValueError): + """A metadata field contains invalid data.""" + + field: str + """The name of the field that contains invalid data.""" + + def __init__(self, field: str, message: str) -> None: + self.field = field + super().__init__(message) + + +# The RawMetadata class attempts to make as few assumptions about the underlying +# serialization formats as possible. The idea is that as long as a serialization +# formats offer some very basic primitives in *some* way then we can support +# serializing to and from that format. +class RawMetadata(TypedDict, total=False): + """A dictionary of raw core metadata. + + Each field in core metadata maps to a key of this dictionary (when data is + provided). The key is lower-case and underscores are used instead of dashes + compared to the equivalent core metadata field. Any core metadata field that + can be specified multiple times or can hold multiple values in a single + field have a key with a plural name. See :class:`Metadata` whose attributes + match the keys of this dictionary. + + Core metadata fields that can be specified multiple times are stored as a + list or dict depending on which is appropriate for the field. Any fields + which hold multiple values in a single field are stored as a list. + + """ + + # Metadata 1.0 - PEP 241 + metadata_version: str + name: str + version: str + platforms: list[str] + summary: str + description: str + keywords: list[str] + home_page: str + author: str + author_email: str + license: str + + # Metadata 1.1 - PEP 314 + supported_platforms: list[str] + download_url: str + classifiers: list[str] + requires: list[str] + provides: list[str] + obsoletes: list[str] + + # Metadata 1.2 - PEP 345 + maintainer: str + maintainer_email: str + requires_dist: list[str] + provides_dist: list[str] + obsoletes_dist: list[str] + requires_python: str + requires_external: list[str] + project_urls: dict[str, str] + + # Metadata 2.0 + # PEP 426 attempted to completely revamp the metadata format + # but got stuck without ever being able to build consensus on + # it and ultimately ended up withdrawn. + # + # However, a number of tools had started emitting METADATA with + # `2.0` Metadata-Version, so for historical reasons, this version + # was skipped. + + # Metadata 2.1 - PEP 566 + description_content_type: str + provides_extra: list[str] + + # Metadata 2.2 - PEP 643 + dynamic: list[str] + + # Metadata 2.3 - PEP 685 + # No new fields were added in PEP 685, just some edge case were + # tightened up to provide better interoptability. + + +_STRING_FIELDS = { + "author", + "author_email", + "description", + "description_content_type", + "download_url", + "home_page", + "license", + "maintainer", + "maintainer_email", + "metadata_version", + "name", + "requires_python", + "summary", + "version", +} + +_LIST_FIELDS = { + "classifiers", + "dynamic", + "obsoletes", + "obsoletes_dist", + "platforms", + "provides", + "provides_dist", + "provides_extra", + "requires", + "requires_dist", + "requires_external", + "supported_platforms", +} + +_DICT_FIELDS = { + "project_urls", +} + + +def _parse_keywords(data: str) -> list[str]: + """Split a string of comma-separate keyboards into a list of keywords.""" + return [k.strip() for k in data.split(",")] + + +def _parse_project_urls(data: list[str]) -> dict[str, str]: + """Parse a list of label/URL string pairings separated by a comma.""" + urls = {} + for pair in data: + # Our logic is slightly tricky here as we want to try and do + # *something* reasonable with malformed data. + # + # The main thing that we have to worry about, is data that does + # not have a ',' at all to split the label from the Value. There + # isn't a singular right answer here, and we will fail validation + # later on (if the caller is validating) so it doesn't *really* + # matter, but since the missing value has to be an empty str + # and our return value is dict[str, str], if we let the key + # be the missing value, then they'd have multiple '' values that + # overwrite each other in a accumulating dict. + # + # The other potentional issue is that it's possible to have the + # same label multiple times in the metadata, with no solid "right" + # answer with what to do in that case. As such, we'll do the only + # thing we can, which is treat the field as unparseable and add it + # to our list of unparsed fields. + parts = [p.strip() for p in pair.split(",", 1)] + parts.extend([""] * (max(0, 2 - len(parts)))) # Ensure 2 items + + # TODO: The spec doesn't say anything about if the keys should be + # considered case sensitive or not... logically they should + # be case-preserving and case-insensitive, but doing that + # would open up more cases where we might have duplicate + # entries. + label, url = parts + if label in urls: + # The label already exists in our set of urls, so this field + # is unparseable, and we can just add the whole thing to our + # unparseable data and stop processing it. + raise KeyError("duplicate labels in project urls") + urls[label] = url + + return urls + + +def _get_payload(msg: email.message.Message, source: bytes | str) -> str: + """Get the body of the message.""" + # If our source is a str, then our caller has managed encodings for us, + # and we don't need to deal with it. + if isinstance(source, str): + payload: str = msg.get_payload() + return payload + # If our source is a bytes, then we're managing the encoding and we need + # to deal with it. + else: + bpayload: bytes = msg.get_payload(decode=True) + try: + return bpayload.decode("utf8", "strict") + except UnicodeDecodeError: + raise ValueError("payload in an invalid encoding") + + +# The various parse_FORMAT functions here are intended to be as lenient as +# possible in their parsing, while still returning a correctly typed +# RawMetadata. +# +# To aid in this, we also generally want to do as little touching of the +# data as possible, except where there are possibly some historic holdovers +# that make valid data awkward to work with. +# +# While this is a lower level, intermediate format than our ``Metadata`` +# class, some light touch ups can make a massive difference in usability. + +# Map METADATA fields to RawMetadata. +_EMAIL_TO_RAW_MAPPING = { + "author": "author", + "author-email": "author_email", + "classifier": "classifiers", + "description": "description", + "description-content-type": "description_content_type", + "download-url": "download_url", + "dynamic": "dynamic", + "home-page": "home_page", + "keywords": "keywords", + "license": "license", + "maintainer": "maintainer", + "maintainer-email": "maintainer_email", + "metadata-version": "metadata_version", + "name": "name", + "obsoletes": "obsoletes", + "obsoletes-dist": "obsoletes_dist", + "platform": "platforms", + "project-url": "project_urls", + "provides": "provides", + "provides-dist": "provides_dist", + "provides-extra": "provides_extra", + "requires": "requires", + "requires-dist": "requires_dist", + "requires-external": "requires_external", + "requires-python": "requires_python", + "summary": "summary", + "supported-platform": "supported_platforms", + "version": "version", +} +_RAW_TO_EMAIL_MAPPING = {raw: email for email, raw in _EMAIL_TO_RAW_MAPPING.items()} + + +def parse_email(data: bytes | str) -> tuple[RawMetadata, dict[str, list[str]]]: + """Parse a distribution's metadata stored as email headers (e.g. from ``METADATA``). + + This function returns a two-item tuple of dicts. The first dict is of + recognized fields from the core metadata specification. Fields that can be + parsed and translated into Python's built-in types are converted + appropriately. All other fields are left as-is. Fields that are allowed to + appear multiple times are stored as lists. + + The second dict contains all other fields from the metadata. This includes + any unrecognized fields. It also includes any fields which are expected to + be parsed into a built-in type but were not formatted appropriately. Finally, + any fields that are expected to appear only once but are repeated are + included in this dict. + + """ + raw: dict[str, str | list[str] | dict[str, str]] = {} + unparsed: dict[str, list[str]] = {} + + if isinstance(data, str): + parsed = email.parser.Parser(policy=email.policy.compat32).parsestr(data) + else: + parsed = email.parser.BytesParser(policy=email.policy.compat32).parsebytes(data) + + # We have to wrap parsed.keys() in a set, because in the case of multiple + # values for a key (a list), the key will appear multiple times in the + # list of keys, but we're avoiding that by using get_all(). + for name in frozenset(parsed.keys()): + # Header names in RFC are case insensitive, so we'll normalize to all + # lower case to make comparisons easier. + name = name.lower() + + # We use get_all() here, even for fields that aren't multiple use, + # because otherwise someone could have e.g. two Name fields, and we + # would just silently ignore it rather than doing something about it. + headers = parsed.get_all(name) or [] + + # The way the email module works when parsing bytes is that it + # unconditionally decodes the bytes as ascii using the surrogateescape + # handler. When you pull that data back out (such as with get_all() ), + # it looks to see if the str has any surrogate escapes, and if it does + # it wraps it in a Header object instead of returning the string. + # + # As such, we'll look for those Header objects, and fix up the encoding. + value = [] + # Flag if we have run into any issues processing the headers, thus + # signalling that the data belongs in 'unparsed'. + valid_encoding = True + for h in headers: + # It's unclear if this can return more types than just a Header or + # a str, so we'll just assert here to make sure. + assert isinstance(h, (email.header.Header, str)) + + # If it's a header object, we need to do our little dance to get + # the real data out of it. In cases where there is invalid data + # we're going to end up with mojibake, but there's no obvious, good + # way around that without reimplementing parts of the Header object + # ourselves. + # + # That should be fine since, if mojibacked happens, this key is + # going into the unparsed dict anyways. + if isinstance(h, email.header.Header): + # The Header object stores it's data as chunks, and each chunk + # can be independently encoded, so we'll need to check each + # of them. + chunks: list[tuple[bytes, str | None]] = [] + for bin, encoding in email.header.decode_header(h): + try: + bin.decode("utf8", "strict") + except UnicodeDecodeError: + # Enable mojibake. + encoding = "latin1" + valid_encoding = False + else: + encoding = "utf8" + chunks.append((bin, encoding)) + + # Turn our chunks back into a Header object, then let that + # Header object do the right thing to turn them into a + # string for us. + value.append(str(email.header.make_header(chunks))) + # This is already a string, so just add it. + else: + value.append(h) + + # We've processed all of our values to get them into a list of str, + # but we may have mojibake data, in which case this is an unparsed + # field. + if not valid_encoding: + unparsed[name] = value + continue + + raw_name = _EMAIL_TO_RAW_MAPPING.get(name) + if raw_name is None: + # This is a bit of a weird situation, we've encountered a key that + # we don't know what it means, so we don't know whether it's meant + # to be a list or not. + # + # Since we can't really tell one way or another, we'll just leave it + # as a list, even though it may be a single item list, because that's + # what makes the most sense for email headers. + unparsed[name] = value + continue + + # If this is one of our string fields, then we'll check to see if our + # value is a list of a single item. If it is then we'll assume that + # it was emitted as a single string, and unwrap the str from inside + # the list. + # + # If it's any other kind of data, then we haven't the faintest clue + # what we should parse it as, and we have to just add it to our list + # of unparsed stuff. + if raw_name in _STRING_FIELDS and len(value) == 1: + raw[raw_name] = value[0] + # If this is one of our list of string fields, then we can just assign + # the value, since email *only* has strings, and our get_all() call + # above ensures that this is a list. + elif raw_name in _LIST_FIELDS: + raw[raw_name] = value + # Special Case: Keywords + # The keywords field is implemented in the metadata spec as a str, + # but it conceptually is a list of strings, and is serialized using + # ", ".join(keywords), so we'll do some light data massaging to turn + # this into what it logically is. + elif raw_name == "keywords" and len(value) == 1: + raw[raw_name] = _parse_keywords(value[0]) + # Special Case: Project-URL + # The project urls is implemented in the metadata spec as a list of + # specially-formatted strings that represent a key and a value, which + # is fundamentally a mapping, however the email format doesn't support + # mappings in a sane way, so it was crammed into a list of strings + # instead. + # + # We will do a little light data massaging to turn this into a map as + # it logically should be. + elif raw_name == "project_urls": + try: + raw[raw_name] = _parse_project_urls(value) + except KeyError: + unparsed[name] = value + # Nothing that we've done has managed to parse this, so it'll just + # throw it in our unparseable data and move on. + else: + unparsed[name] = value + + # We need to support getting the Description from the message payload in + # addition to getting it from the the headers. This does mean, though, there + # is the possibility of it being set both ways, in which case we put both + # in 'unparsed' since we don't know which is right. + try: + payload = _get_payload(parsed, data) + except ValueError: + unparsed.setdefault("description", []).append( + parsed.get_payload(decode=isinstance(data, bytes)) + ) + else: + if payload: + # Check to see if we've already got a description, if so then both + # it, and this body move to unparseable. + if "description" in raw: + description_header = cast(str, raw.pop("description")) + unparsed.setdefault("description", []).extend( + [description_header, payload] + ) + elif "description" in unparsed: + unparsed["description"].append(payload) + else: + raw["description"] = payload + + # We need to cast our `raw` to a metadata, because a TypedDict only support + # literal key names, but we're computing our key names on purpose, but the + # way this function is implemented, our `TypedDict` can only have valid key + # names. + return cast(RawMetadata, raw), unparsed + + +_NOT_FOUND = object() + + +# Keep the two values in sync. +_VALID_METADATA_VERSIONS = ["1.0", "1.1", "1.2", "2.1", "2.2", "2.3"] +_MetadataVersion = Literal["1.0", "1.1", "1.2", "2.1", "2.2", "2.3"] + +_REQUIRED_ATTRS = frozenset(["metadata_version", "name", "version"]) + + +class _Validator(Generic[T]): + """Validate a metadata field. + + All _process_*() methods correspond to a core metadata field. The method is + called with the field's raw value. If the raw value is valid it is returned + in its "enriched" form (e.g. ``version.Version`` for the ``Version`` field). + If the raw value is invalid, :exc:`InvalidMetadata` is raised (with a cause + as appropriate). + """ + + name: str + raw_name: str + added: _MetadataVersion + + def __init__( + self, + *, + added: _MetadataVersion = "1.0", + ) -> None: + self.added = added + + def __set_name__(self, _owner: Metadata, name: str) -> None: + self.name = name + self.raw_name = _RAW_TO_EMAIL_MAPPING[name] + + def __get__(self, instance: Metadata, _owner: type[Metadata]) -> T: + # With Python 3.8, the caching can be replaced with functools.cached_property(). + # No need to check the cache as attribute lookup will resolve into the + # instance's __dict__ before __get__ is called. + cache = instance.__dict__ + value = instance._raw.get(self.name) + + # To make the _process_* methods easier, we'll check if the value is None + # and if this field is NOT a required attribute, and if both of those + # things are true, we'll skip the the converter. This will mean that the + # converters never have to deal with the None union. + if self.name in _REQUIRED_ATTRS or value is not None: + try: + converter: Callable[[Any], T] = getattr(self, f"_process_{self.name}") + except AttributeError: + pass + else: + value = converter(value) + + cache[self.name] = value + try: + del instance._raw[self.name] # type: ignore[misc] + except KeyError: + pass + + return cast(T, value) + + def _invalid_metadata( + self, msg: str, cause: Exception | None = None + ) -> InvalidMetadata: + exc = InvalidMetadata( + self.raw_name, msg.format_map({"field": repr(self.raw_name)}) + ) + exc.__cause__ = cause + return exc + + def _process_metadata_version(self, value: str) -> _MetadataVersion: + # Implicitly makes Metadata-Version required. + if value not in _VALID_METADATA_VERSIONS: + raise self._invalid_metadata(f"{value!r} is not a valid metadata version") + return cast(_MetadataVersion, value) + + def _process_name(self, value: str) -> str: + if not value: + raise self._invalid_metadata("{field} is a required field") + # Validate the name as a side-effect. + try: + utils.canonicalize_name(value, validate=True) + except utils.InvalidName as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) + else: + return value + + def _process_version(self, value: str) -> version_module.Version: + if not value: + raise self._invalid_metadata("{field} is a required field") + try: + return version_module.parse(value) + except version_module.InvalidVersion as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) + + def _process_summary(self, value: str) -> str: + """Check the field contains no newlines.""" + if "\n" in value: + raise self._invalid_metadata("{field} must be a single line") + return value + + def _process_description_content_type(self, value: str) -> str: + content_types = {"text/plain", "text/x-rst", "text/markdown"} + message = email.message.EmailMessage() + message["content-type"] = value + + content_type, parameters = ( + # Defaults to `text/plain` if parsing failed. + message.get_content_type().lower(), + message["content-type"].params, + ) + # Check if content-type is valid or defaulted to `text/plain` and thus was + # not parseable. + if content_type not in content_types or content_type not in value.lower(): + raise self._invalid_metadata( + f"{{field}} must be one of {list(content_types)}, not {value!r}" + ) + + charset = parameters.get("charset", "UTF-8") + if charset != "UTF-8": + raise self._invalid_metadata( + f"{{field}} can only specify the UTF-8 charset, not {list(charset)}" + ) + + markdown_variants = {"GFM", "CommonMark"} + variant = parameters.get("variant", "GFM") # Use an acceptable default. + if content_type == "text/markdown" and variant not in markdown_variants: + raise self._invalid_metadata( + f"valid Markdown variants for {{field}} are {list(markdown_variants)}, " + f"not {variant!r}", + ) + return value + + def _process_dynamic(self, value: list[str]) -> list[str]: + for dynamic_field in map(str.lower, value): + if dynamic_field in {"name", "version", "metadata-version"}: + raise self._invalid_metadata( + f"{value!r} is not allowed as a dynamic field" + ) + elif dynamic_field not in _EMAIL_TO_RAW_MAPPING: + raise self._invalid_metadata(f"{value!r} is not a valid dynamic field") + return list(map(str.lower, value)) + + def _process_provides_extra( + self, + value: list[str], + ) -> list[utils.NormalizedName]: + normalized_names = [] + try: + for name in value: + normalized_names.append(utils.canonicalize_name(name, validate=True)) + except utils.InvalidName as exc: + raise self._invalid_metadata( + f"{name!r} is invalid for {{field}}", cause=exc + ) + else: + return normalized_names + + def _process_requires_python(self, value: str) -> specifiers.SpecifierSet: + try: + return specifiers.SpecifierSet(value) + except specifiers.InvalidSpecifier as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) + + def _process_requires_dist( + self, + value: list[str], + ) -> list[requirements.Requirement]: + reqs = [] + try: + for req in value: + reqs.append(requirements.Requirement(req)) + except requirements.InvalidRequirement as exc: + raise self._invalid_metadata(f"{req!r} is invalid for {{field}}", cause=exc) + else: + return reqs + + +class Metadata: + """Representation of distribution metadata. + + Compared to :class:`RawMetadata`, this class provides objects representing + metadata fields instead of only using built-in types. Any invalid metadata + will cause :exc:`InvalidMetadata` to be raised (with a + :py:attr:`~BaseException.__cause__` attribute as appropriate). + """ + + _raw: RawMetadata + + @classmethod + def from_raw(cls, data: RawMetadata, *, validate: bool = True) -> Metadata: + """Create an instance from :class:`RawMetadata`. + + If *validate* is true, all metadata will be validated. All exceptions + related to validation will be gathered and raised as an :class:`ExceptionGroup`. + """ + ins = cls() + ins._raw = data.copy() # Mutations occur due to caching enriched values. + + if validate: + exceptions: list[Exception] = [] + try: + metadata_version = ins.metadata_version + metadata_age = _VALID_METADATA_VERSIONS.index(metadata_version) + except InvalidMetadata as metadata_version_exc: + exceptions.append(metadata_version_exc) + metadata_version = None + + # Make sure to check for the fields that are present, the required + # fields (so their absence can be reported). + fields_to_check = frozenset(ins._raw) | _REQUIRED_ATTRS + # Remove fields that have already been checked. + fields_to_check -= {"metadata_version"} + + for key in fields_to_check: + try: + if metadata_version: + # Can't use getattr() as that triggers descriptor protocol which + # will fail due to no value for the instance argument. + try: + field_metadata_version = cls.__dict__[key].added + except KeyError: + exc = InvalidMetadata(key, f"unrecognized field: {key!r}") + exceptions.append(exc) + continue + field_age = _VALID_METADATA_VERSIONS.index( + field_metadata_version + ) + if field_age > metadata_age: + field = _RAW_TO_EMAIL_MAPPING[key] + exc = InvalidMetadata( + field, + "{field} introduced in metadata version " + "{field_metadata_version}, not {metadata_version}", + ) + exceptions.append(exc) + continue + getattr(ins, key) + except InvalidMetadata as exc: + exceptions.append(exc) + + if exceptions: + raise ExceptionGroup("invalid metadata", exceptions) + + return ins + + @classmethod + def from_email(cls, data: bytes | str, *, validate: bool = True) -> Metadata: + """Parse metadata from email headers. + + If *validate* is true, the metadata will be validated. All exceptions + related to validation will be gathered and raised as an :class:`ExceptionGroup`. + """ + raw, unparsed = parse_email(data) + + if validate: + exceptions: list[Exception] = [] + for unparsed_key in unparsed: + if unparsed_key in _EMAIL_TO_RAW_MAPPING: + message = f"{unparsed_key!r} has invalid data" + else: + message = f"unrecognized field: {unparsed_key!r}" + exceptions.append(InvalidMetadata(unparsed_key, message)) + + if exceptions: + raise ExceptionGroup("unparsed", exceptions) + + try: + return cls.from_raw(raw, validate=validate) + except ExceptionGroup as exc_group: + raise ExceptionGroup( + "invalid or unparsed metadata", exc_group.exceptions + ) from None + + metadata_version: _Validator[_MetadataVersion] = _Validator() + """:external:ref:`core-metadata-metadata-version` + (required; validated to be a valid metadata version)""" + name: _Validator[str] = _Validator() + """:external:ref:`core-metadata-name` + (required; validated using :func:`~packaging.utils.canonicalize_name` and its + *validate* parameter)""" + version: _Validator[version_module.Version] = _Validator() + """:external:ref:`core-metadata-version` (required)""" + dynamic: _Validator[list[str] | None] = _Validator( + added="2.2", + ) + """:external:ref:`core-metadata-dynamic` + (validated against core metadata field names and lowercased)""" + platforms: _Validator[list[str] | None] = _Validator() + """:external:ref:`core-metadata-platform`""" + supported_platforms: _Validator[list[str] | None] = _Validator(added="1.1") + """:external:ref:`core-metadata-supported-platform`""" + summary: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-summary` (validated to contain no newlines)""" + description: _Validator[str | None] = _Validator() # TODO 2.1: can be in body + """:external:ref:`core-metadata-description`""" + description_content_type: _Validator[str | None] = _Validator(added="2.1") + """:external:ref:`core-metadata-description-content-type` (validated)""" + keywords: _Validator[list[str] | None] = _Validator() + """:external:ref:`core-metadata-keywords`""" + home_page: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-home-page`""" + download_url: _Validator[str | None] = _Validator(added="1.1") + """:external:ref:`core-metadata-download-url`""" + author: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-author`""" + author_email: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-author-email`""" + maintainer: _Validator[str | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-maintainer`""" + maintainer_email: _Validator[str | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-maintainer-email`""" + license: _Validator[str | None] = _Validator() + """:external:ref:`core-metadata-license`""" + classifiers: _Validator[list[str] | None] = _Validator(added="1.1") + """:external:ref:`core-metadata-classifier`""" + requires_dist: _Validator[list[requirements.Requirement] | None] = _Validator( + added="1.2" + ) + """:external:ref:`core-metadata-requires-dist`""" + requires_python: _Validator[specifiers.SpecifierSet | None] = _Validator( + added="1.2" + ) + """:external:ref:`core-metadata-requires-python`""" + # Because `Requires-External` allows for non-PEP 440 version specifiers, we + # don't do any processing on the values. + requires_external: _Validator[list[str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-requires-external`""" + project_urls: _Validator[dict[str, str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-project-url`""" + # PEP 685 lets us raise an error if an extra doesn't pass `Name` validation + # regardless of metadata version. + provides_extra: _Validator[list[utils.NormalizedName] | None] = _Validator( + added="2.1", + ) + """:external:ref:`core-metadata-provides-extra`""" + provides_dist: _Validator[list[str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-provides-dist`""" + obsoletes_dist: _Validator[list[str] | None] = _Validator(added="1.2") + """:external:ref:`core-metadata-obsoletes-dist`""" + requires: _Validator[list[str] | None] = _Validator(added="1.1") + """``Requires`` (deprecated)""" + provides: _Validator[list[str] | None] = _Validator(added="1.1") + """``Provides`` (deprecated)""" + obsoletes: _Validator[list[str] | None] = _Validator(added="1.1") + """``Obsoletes`` (deprecated)""" diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/py.typed b/venv/Lib/site-packages/pip/_vendor/packaging/py.typed new file mode 100644 index 00000000000..e69de29bb2d diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/requirements.py b/venv/Lib/site-packages/pip/_vendor/packaging/requirements.py new file mode 100644 index 00000000000..4e068c9567d --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/requirements.py @@ -0,0 +1,91 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. +from __future__ import annotations + +from typing import Any, Iterator + +from ._parser import parse_requirement as _parse_requirement +from ._tokenizer import ParserSyntaxError +from .markers import Marker, _normalize_extra_values +from .specifiers import SpecifierSet +from .utils import canonicalize_name + + +class InvalidRequirement(ValueError): + """ + An invalid requirement was found, users should refer to PEP 508. + """ + + +class Requirement: + """Parse a requirement. + + Parse a given requirement string into its parts, such as name, specifier, + URL, and extras. Raises InvalidRequirement on a badly-formed requirement + string. + """ + + # TODO: Can we test whether something is contained within a requirement? + # If so how do we do that? Do we need to test against the _name_ of + # the thing as well as the version? What about the markers? + # TODO: Can we normalize the name and extra name? + + def __init__(self, requirement_string: str) -> None: + try: + parsed = _parse_requirement(requirement_string) + except ParserSyntaxError as e: + raise InvalidRequirement(str(e)) from e + + self.name: str = parsed.name + self.url: str | None = parsed.url or None + self.extras: set[str] = set(parsed.extras or []) + self.specifier: SpecifierSet = SpecifierSet(parsed.specifier) + self.marker: Marker | None = None + if parsed.marker is not None: + self.marker = Marker.__new__(Marker) + self.marker._markers = _normalize_extra_values(parsed.marker) + + def _iter_parts(self, name: str) -> Iterator[str]: + yield name + + if self.extras: + formatted_extras = ",".join(sorted(self.extras)) + yield f"[{formatted_extras}]" + + if self.specifier: + yield str(self.specifier) + + if self.url: + yield f"@ {self.url}" + if self.marker: + yield " " + + if self.marker: + yield f"; {self.marker}" + + def __str__(self) -> str: + return "".join(self._iter_parts(self.name)) + + def __repr__(self) -> str: + return f"" + + def __hash__(self) -> int: + return hash( + ( + self.__class__.__name__, + *self._iter_parts(canonicalize_name(self.name)), + ) + ) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, Requirement): + return NotImplemented + + return ( + canonicalize_name(self.name) == canonicalize_name(other.name) + and self.extras == other.extras + and self.specifier == other.specifier + and self.url == other.url + and self.marker == other.marker + ) diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py b/venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py new file mode 100644 index 00000000000..f3ac480fa68 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py @@ -0,0 +1,1009 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. +""" +.. testsetup:: + + from pip._vendor.packaging.specifiers import Specifier, SpecifierSet, InvalidSpecifier + from pip._vendor.packaging.version import Version +""" + +from __future__ import annotations + +import abc +import itertools +import re +from typing import Callable, Iterable, Iterator, TypeVar, Union + +from .utils import canonicalize_version +from .version import Version + +UnparsedVersion = Union[Version, str] +UnparsedVersionVar = TypeVar("UnparsedVersionVar", bound=UnparsedVersion) +CallableOperator = Callable[[Version, str], bool] + + +def _coerce_version(version: UnparsedVersion) -> Version: + if not isinstance(version, Version): + version = Version(version) + return version + + +class InvalidSpecifier(ValueError): + """ + Raised when attempting to create a :class:`Specifier` with a specifier + string that is invalid. + + >>> Specifier("lolwat") + Traceback (most recent call last): + ... + packaging.specifiers.InvalidSpecifier: Invalid specifier: 'lolwat' + """ + + +class BaseSpecifier(metaclass=abc.ABCMeta): + @abc.abstractmethod + def __str__(self) -> str: + """ + Returns the str representation of this Specifier-like object. This + should be representative of the Specifier itself. + """ + + @abc.abstractmethod + def __hash__(self) -> int: + """ + Returns a hash value for this Specifier-like object. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Returns a boolean representing whether or not the two Specifier-like + objects are equal. + + :param other: The other object to check against. + """ + + @property + @abc.abstractmethod + def prereleases(self) -> bool | None: + """Whether or not pre-releases as a whole are allowed. + + This can be set to either ``True`` or ``False`` to explicitly enable or disable + prereleases or it can be set to ``None`` (the default) to use default semantics. + """ + + @prereleases.setter + def prereleases(self, value: bool) -> None: + """Setter for :attr:`prereleases`. + + :param value: The value to set. + """ + + @abc.abstractmethod + def contains(self, item: str, prereleases: bool | None = None) -> bool: + """ + Determines if the given item is contained within this specifier. + """ + + @abc.abstractmethod + def filter( + self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None + ) -> Iterator[UnparsedVersionVar]: + """ + Takes an iterable of items and filters them so that only items which + are contained within this specifier are allowed in it. + """ + + +class Specifier(BaseSpecifier): + """This class abstracts handling of version specifiers. + + .. tip:: + + It is generally not required to instantiate this manually. You should instead + prefer to work with :class:`SpecifierSet` instead, which can parse + comma-separated version specifiers (which is what package metadata contains). + """ + + _operator_regex_str = r""" + (?P(~=|==|!=|<=|>=|<|>|===)) + """ + _version_regex_str = r""" + (?P + (?: + # The identity operators allow for an escape hatch that will + # do an exact string match of the version you wish to install. + # This will not be parsed by PEP 440 and we cannot determine + # any semantic meaning from it. This operator is discouraged + # but included entirely as an escape hatch. + (?<====) # Only match for the identity operator + \s* + [^\s;)]* # The arbitrary version can be just about anything, + # we match everything except for whitespace, a + # semi-colon for marker support, and a closing paren + # since versions can be enclosed in them. + ) + | + (?: + # The (non)equality operators allow for wild card and local + # versions to be specified so we have to define these two + # operators separately to enable that. + (?<===|!=) # Only match for equals and not equals + + \s* + v? + (?:[0-9]+!)? # epoch + [0-9]+(?:\.[0-9]+)* # release + + # You cannot use a wild card and a pre-release, post-release, a dev or + # local version together so group them with a | and make them optional. + (?: + \.\* # Wild card syntax of .* + | + (?: # pre release + [-_\.]? + (alpha|beta|preview|pre|a|b|c|rc) + [-_\.]? + [0-9]* + )? + (?: # post release + (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) + )? + (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release + (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local + )? + ) + | + (?: + # The compatible operator requires at least two digits in the + # release segment. + (?<=~=) # Only match for the compatible operator + + \s* + v? + (?:[0-9]+!)? # epoch + [0-9]+(?:\.[0-9]+)+ # release (We have a + instead of a *) + (?: # pre release + [-_\.]? + (alpha|beta|preview|pre|a|b|c|rc) + [-_\.]? + [0-9]* + )? + (?: # post release + (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) + )? + (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release + ) + | + (?: + # All other operators only allow a sub set of what the + # (non)equality operators do. Specifically they do not allow + # local versions to be specified nor do they allow the prefix + # matching wild cards. + (?=": "greater_than_equal", + "<": "less_than", + ">": "greater_than", + "===": "arbitrary", + } + + def __init__(self, spec: str = "", prereleases: bool | None = None) -> None: + """Initialize a Specifier instance. + + :param spec: + The string representation of a specifier which will be parsed and + normalized before use. + :param prereleases: + This tells the specifier if it should accept prerelease versions if + applicable or not. The default of ``None`` will autodetect it from the + given specifiers. + :raises InvalidSpecifier: + If the given specifier is invalid (i.e. bad syntax). + """ + match = self._regex.search(spec) + if not match: + raise InvalidSpecifier(f"Invalid specifier: '{spec}'") + + self._spec: tuple[str, str] = ( + match.group("operator").strip(), + match.group("version").strip(), + ) + + # Store whether or not this Specifier should accept prereleases + self._prereleases = prereleases + + # https://github.com/python/mypy/pull/13475#pullrequestreview-1079784515 + @property # type: ignore[override] + def prereleases(self) -> bool: + # If there is an explicit prereleases set for this, then we'll just + # blindly use that. + if self._prereleases is not None: + return self._prereleases + + # Look at all of our specifiers and determine if they are inclusive + # operators, and if they are if they are including an explicit + # prerelease. + operator, version = self._spec + if operator in ["==", ">=", "<=", "~=", "==="]: + # The == specifier can include a trailing .*, if it does we + # want to remove before parsing. + if operator == "==" and version.endswith(".*"): + version = version[:-2] + + # Parse the version, and if it is a pre-release than this + # specifier allows pre-releases. + if Version(version).is_prerelease: + return True + + return False + + @prereleases.setter + def prereleases(self, value: bool) -> None: + self._prereleases = value + + @property + def operator(self) -> str: + """The operator of this specifier. + + >>> Specifier("==1.2.3").operator + '==' + """ + return self._spec[0] + + @property + def version(self) -> str: + """The version of this specifier. + + >>> Specifier("==1.2.3").version + '1.2.3' + """ + return self._spec[1] + + def __repr__(self) -> str: + """A representation of the Specifier that shows all internal state. + + >>> Specifier('>=1.0.0') + =1.0.0')> + >>> Specifier('>=1.0.0', prereleases=False) + =1.0.0', prereleases=False)> + >>> Specifier('>=1.0.0', prereleases=True) + =1.0.0', prereleases=True)> + """ + pre = ( + f", prereleases={self.prereleases!r}" + if self._prereleases is not None + else "" + ) + + return f"<{self.__class__.__name__}({str(self)!r}{pre})>" + + def __str__(self) -> str: + """A string representation of the Specifier that can be round-tripped. + + >>> str(Specifier('>=1.0.0')) + '>=1.0.0' + >>> str(Specifier('>=1.0.0', prereleases=False)) + '>=1.0.0' + """ + return "{}{}".format(*self._spec) + + @property + def _canonical_spec(self) -> tuple[str, str]: + canonical_version = canonicalize_version( + self._spec[1], + strip_trailing_zero=(self._spec[0] != "~="), + ) + return self._spec[0], canonical_version + + def __hash__(self) -> int: + return hash(self._canonical_spec) + + def __eq__(self, other: object) -> bool: + """Whether or not the two Specifier-like objects are equal. + + :param other: The other object to check against. + + The value of :attr:`prereleases` is ignored. + + >>> Specifier("==1.2.3") == Specifier("== 1.2.3.0") + True + >>> (Specifier("==1.2.3", prereleases=False) == + ... Specifier("==1.2.3", prereleases=True)) + True + >>> Specifier("==1.2.3") == "==1.2.3" + True + >>> Specifier("==1.2.3") == Specifier("==1.2.4") + False + >>> Specifier("==1.2.3") == Specifier("~=1.2.3") + False + """ + if isinstance(other, str): + try: + other = self.__class__(str(other)) + except InvalidSpecifier: + return NotImplemented + elif not isinstance(other, self.__class__): + return NotImplemented + + return self._canonical_spec == other._canonical_spec + + def _get_operator(self, op: str) -> CallableOperator: + operator_callable: CallableOperator = getattr( + self, f"_compare_{self._operators[op]}" + ) + return operator_callable + + def _compare_compatible(self, prospective: Version, spec: str) -> bool: + # Compatible releases have an equivalent combination of >= and ==. That + # is that ~=2.2 is equivalent to >=2.2,==2.*. This allows us to + # implement this in terms of the other specifiers instead of + # implementing it ourselves. The only thing we need to do is construct + # the other specifiers. + + # We want everything but the last item in the version, but we want to + # ignore suffix segments. + prefix = _version_join( + list(itertools.takewhile(_is_not_suffix, _version_split(spec)))[:-1] + ) + + # Add the prefix notation to the end of our string + prefix += ".*" + + return self._get_operator(">=")(prospective, spec) and self._get_operator("==")( + prospective, prefix + ) + + def _compare_equal(self, prospective: Version, spec: str) -> bool: + # We need special logic to handle prefix matching + if spec.endswith(".*"): + # In the case of prefix matching we want to ignore local segment. + normalized_prospective = canonicalize_version( + prospective.public, strip_trailing_zero=False + ) + # Get the normalized version string ignoring the trailing .* + normalized_spec = canonicalize_version(spec[:-2], strip_trailing_zero=False) + # Split the spec out by bangs and dots, and pretend that there is + # an implicit dot in between a release segment and a pre-release segment. + split_spec = _version_split(normalized_spec) + + # Split the prospective version out by bangs and dots, and pretend + # that there is an implicit dot in between a release segment and + # a pre-release segment. + split_prospective = _version_split(normalized_prospective) + + # 0-pad the prospective version before shortening it to get the correct + # shortened version. + padded_prospective, _ = _pad_version(split_prospective, split_spec) + + # Shorten the prospective version to be the same length as the spec + # so that we can determine if the specifier is a prefix of the + # prospective version or not. + shortened_prospective = padded_prospective[: len(split_spec)] + + return shortened_prospective == split_spec + else: + # Convert our spec string into a Version + spec_version = Version(spec) + + # If the specifier does not have a local segment, then we want to + # act as if the prospective version also does not have a local + # segment. + if not spec_version.local: + prospective = Version(prospective.public) + + return prospective == spec_version + + def _compare_not_equal(self, prospective: Version, spec: str) -> bool: + return not self._compare_equal(prospective, spec) + + def _compare_less_than_equal(self, prospective: Version, spec: str) -> bool: + # NB: Local version identifiers are NOT permitted in the version + # specifier, so local version labels can be universally removed from + # the prospective version. + return Version(prospective.public) <= Version(spec) + + def _compare_greater_than_equal(self, prospective: Version, spec: str) -> bool: + # NB: Local version identifiers are NOT permitted in the version + # specifier, so local version labels can be universally removed from + # the prospective version. + return Version(prospective.public) >= Version(spec) + + def _compare_less_than(self, prospective: Version, spec_str: str) -> bool: + # Convert our spec to a Version instance, since we'll want to work with + # it as a version. + spec = Version(spec_str) + + # Check to see if the prospective version is less than the spec + # version. If it's not we can short circuit and just return False now + # instead of doing extra unneeded work. + if not prospective < spec: + return False + + # This special case is here so that, unless the specifier itself + # includes is a pre-release version, that we do not accept pre-release + # versions for the version mentioned in the specifier (e.g. <3.1 should + # not match 3.1.dev0, but should match 3.0.dev0). + if not spec.is_prerelease and prospective.is_prerelease: + if Version(prospective.base_version) == Version(spec.base_version): + return False + + # If we've gotten to here, it means that prospective version is both + # less than the spec version *and* it's not a pre-release of the same + # version in the spec. + return True + + def _compare_greater_than(self, prospective: Version, spec_str: str) -> bool: + # Convert our spec to a Version instance, since we'll want to work with + # it as a version. + spec = Version(spec_str) + + # Check to see if the prospective version is greater than the spec + # version. If it's not we can short circuit and just return False now + # instead of doing extra unneeded work. + if not prospective > spec: + return False + + # This special case is here so that, unless the specifier itself + # includes is a post-release version, that we do not accept + # post-release versions for the version mentioned in the specifier + # (e.g. >3.1 should not match 3.0.post0, but should match 3.2.post0). + if not spec.is_postrelease and prospective.is_postrelease: + if Version(prospective.base_version) == Version(spec.base_version): + return False + + # Ensure that we do not allow a local version of the version mentioned + # in the specifier, which is technically greater than, to match. + if prospective.local is not None: + if Version(prospective.base_version) == Version(spec.base_version): + return False + + # If we've gotten to here, it means that prospective version is both + # greater than the spec version *and* it's not a pre-release of the + # same version in the spec. + return True + + def _compare_arbitrary(self, prospective: Version, spec: str) -> bool: + return str(prospective).lower() == str(spec).lower() + + def __contains__(self, item: str | Version) -> bool: + """Return whether or not the item is contained in this specifier. + + :param item: The item to check for. + + This is used for the ``in`` operator and behaves the same as + :meth:`contains` with no ``prereleases`` argument passed. + + >>> "1.2.3" in Specifier(">=1.2.3") + True + >>> Version("1.2.3") in Specifier(">=1.2.3") + True + >>> "1.0.0" in Specifier(">=1.2.3") + False + >>> "1.3.0a1" in Specifier(">=1.2.3") + False + >>> "1.3.0a1" in Specifier(">=1.2.3", prereleases=True) + True + """ + return self.contains(item) + + def contains(self, item: UnparsedVersion, prereleases: bool | None = None) -> bool: + """Return whether or not the item is contained in this specifier. + + :param item: + The item to check for, which can be a version string or a + :class:`Version` instance. + :param prereleases: + Whether or not to match prereleases with this Specifier. If set to + ``None`` (the default), it uses :attr:`prereleases` to determine + whether or not prereleases are allowed. + + >>> Specifier(">=1.2.3").contains("1.2.3") + True + >>> Specifier(">=1.2.3").contains(Version("1.2.3")) + True + >>> Specifier(">=1.2.3").contains("1.0.0") + False + >>> Specifier(">=1.2.3").contains("1.3.0a1") + False + >>> Specifier(">=1.2.3", prereleases=True).contains("1.3.0a1") + True + >>> Specifier(">=1.2.3").contains("1.3.0a1", prereleases=True) + True + """ + + # Determine if prereleases are to be allowed or not. + if prereleases is None: + prereleases = self.prereleases + + # Normalize item to a Version, this allows us to have a shortcut for + # "2.0" in Specifier(">=2") + normalized_item = _coerce_version(item) + + # Determine if we should be supporting prereleases in this specifier + # or not, if we do not support prereleases than we can short circuit + # logic if this version is a prereleases. + if normalized_item.is_prerelease and not prereleases: + return False + + # Actually do the comparison to determine if this item is contained + # within this Specifier or not. + operator_callable: CallableOperator = self._get_operator(self.operator) + return operator_callable(normalized_item, self.version) + + def filter( + self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None + ) -> Iterator[UnparsedVersionVar]: + """Filter items in the given iterable, that match the specifier. + + :param iterable: + An iterable that can contain version strings and :class:`Version` instances. + The items in the iterable will be filtered according to the specifier. + :param prereleases: + Whether or not to allow prereleases in the returned iterator. If set to + ``None`` (the default), it will be intelligently decide whether to allow + prereleases or not (based on the :attr:`prereleases` attribute, and + whether the only versions matching are prereleases). + + This method is smarter than just ``filter(Specifier().contains, [...])`` + because it implements the rule from :pep:`440` that a prerelease item + SHOULD be accepted if no other versions match the given specifier. + + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.3", "1.5a1"])) + ['1.3'] + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.2.3", "1.3", Version("1.4")])) + ['1.2.3', '1.3', ] + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.5a1"])) + ['1.5a1'] + >>> list(Specifier(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + >>> list(Specifier(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + """ + + yielded = False + found_prereleases = [] + + kw = {"prereleases": prereleases if prereleases is not None else True} + + # Attempt to iterate over all the values in the iterable and if any of + # them match, yield them. + for version in iterable: + parsed_version = _coerce_version(version) + + if self.contains(parsed_version, **kw): + # If our version is a prerelease, and we were not set to allow + # prereleases, then we'll store it for later in case nothing + # else matches this specifier. + if parsed_version.is_prerelease and not ( + prereleases or self.prereleases + ): + found_prereleases.append(version) + # Either this is not a prerelease, or we should have been + # accepting prereleases from the beginning. + else: + yielded = True + yield version + + # Now that we've iterated over everything, determine if we've yielded + # any values, and if we have not and we have any prereleases stored up + # then we will go ahead and yield the prereleases. + if not yielded and found_prereleases: + for version in found_prereleases: + yield version + + +_prefix_regex = re.compile(r"^([0-9]+)((?:a|b|c|rc)[0-9]+)$") + + +def _version_split(version: str) -> list[str]: + """Split version into components. + + The split components are intended for version comparison. The logic does + not attempt to retain the original version string, so joining the + components back with :func:`_version_join` may not produce the original + version string. + """ + result: list[str] = [] + + epoch, _, rest = version.rpartition("!") + result.append(epoch or "0") + + for item in rest.split("."): + match = _prefix_regex.search(item) + if match: + result.extend(match.groups()) + else: + result.append(item) + return result + + +def _version_join(components: list[str]) -> str: + """Join split version components into a version string. + + This function assumes the input came from :func:`_version_split`, where the + first component must be the epoch (either empty or numeric), and all other + components numeric. + """ + epoch, *rest = components + return f"{epoch}!{'.'.join(rest)}" + + +def _is_not_suffix(segment: str) -> bool: + return not any( + segment.startswith(prefix) for prefix in ("dev", "a", "b", "rc", "post") + ) + + +def _pad_version(left: list[str], right: list[str]) -> tuple[list[str], list[str]]: + left_split, right_split = [], [] + + # Get the release segment of our versions + left_split.append(list(itertools.takewhile(lambda x: x.isdigit(), left))) + right_split.append(list(itertools.takewhile(lambda x: x.isdigit(), right))) + + # Get the rest of our versions + left_split.append(left[len(left_split[0]) :]) + right_split.append(right[len(right_split[0]) :]) + + # Insert our padding + left_split.insert(1, ["0"] * max(0, len(right_split[0]) - len(left_split[0]))) + right_split.insert(1, ["0"] * max(0, len(left_split[0]) - len(right_split[0]))) + + return ( + list(itertools.chain.from_iterable(left_split)), + list(itertools.chain.from_iterable(right_split)), + ) + + +class SpecifierSet(BaseSpecifier): + """This class abstracts handling of a set of version specifiers. + + It can be passed a single specifier (``>=3.0``), a comma-separated list of + specifiers (``>=3.0,!=3.1``), or no specifier at all. + """ + + def __init__(self, specifiers: str = "", prereleases: bool | None = None) -> None: + """Initialize a SpecifierSet instance. + + :param specifiers: + The string representation of a specifier or a comma-separated list of + specifiers which will be parsed and normalized before use. + :param prereleases: + This tells the SpecifierSet if it should accept prerelease versions if + applicable or not. The default of ``None`` will autodetect it from the + given specifiers. + + :raises InvalidSpecifier: + If the given ``specifiers`` are not parseable than this exception will be + raised. + """ + + # Split on `,` to break each individual specifier into it's own item, and + # strip each item to remove leading/trailing whitespace. + split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()] + + # Make each individual specifier a Specifier and save in a frozen set for later. + self._specs = frozenset(map(Specifier, split_specifiers)) + + # Store our prereleases value so we can use it later to determine if + # we accept prereleases or not. + self._prereleases = prereleases + + @property + def prereleases(self) -> bool | None: + # If we have been given an explicit prerelease modifier, then we'll + # pass that through here. + if self._prereleases is not None: + return self._prereleases + + # If we don't have any specifiers, and we don't have a forced value, + # then we'll just return None since we don't know if this should have + # pre-releases or not. + if not self._specs: + return None + + # Otherwise we'll see if any of the given specifiers accept + # prereleases, if any of them do we'll return True, otherwise False. + return any(s.prereleases for s in self._specs) + + @prereleases.setter + def prereleases(self, value: bool) -> None: + self._prereleases = value + + def __repr__(self) -> str: + """A representation of the specifier set that shows all internal state. + + Note that the ordering of the individual specifiers within the set may not + match the input string. + + >>> SpecifierSet('>=1.0.0,!=2.0.0') + =1.0.0')> + >>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=False) + =1.0.0', prereleases=False)> + >>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=True) + =1.0.0', prereleases=True)> + """ + pre = ( + f", prereleases={self.prereleases!r}" + if self._prereleases is not None + else "" + ) + + return f"" + + def __str__(self) -> str: + """A string representation of the specifier set that can be round-tripped. + + Note that the ordering of the individual specifiers within the set may not + match the input string. + + >>> str(SpecifierSet(">=1.0.0,!=1.0.1")) + '!=1.0.1,>=1.0.0' + >>> str(SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False)) + '!=1.0.1,>=1.0.0' + """ + return ",".join(sorted(str(s) for s in self._specs)) + + def __hash__(self) -> int: + return hash(self._specs) + + def __and__(self, other: SpecifierSet | str) -> SpecifierSet: + """Return a SpecifierSet which is a combination of the two sets. + + :param other: The other object to combine with. + + >>> SpecifierSet(">=1.0.0,!=1.0.1") & '<=2.0.0,!=2.0.1' + =1.0.0')> + >>> SpecifierSet(">=1.0.0,!=1.0.1") & SpecifierSet('<=2.0.0,!=2.0.1') + =1.0.0')> + """ + if isinstance(other, str): + other = SpecifierSet(other) + elif not isinstance(other, SpecifierSet): + return NotImplemented + + specifier = SpecifierSet() + specifier._specs = frozenset(self._specs | other._specs) + + if self._prereleases is None and other._prereleases is not None: + specifier._prereleases = other._prereleases + elif self._prereleases is not None and other._prereleases is None: + specifier._prereleases = self._prereleases + elif self._prereleases == other._prereleases: + specifier._prereleases = self._prereleases + else: + raise ValueError( + "Cannot combine SpecifierSets with True and False prerelease " + "overrides." + ) + + return specifier + + def __eq__(self, other: object) -> bool: + """Whether or not the two SpecifierSet-like objects are equal. + + :param other: The other object to check against. + + The value of :attr:`prereleases` is ignored. + + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> (SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False) == + ... SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True)) + True + >>> SpecifierSet(">=1.0.0,!=1.0.1") == ">=1.0.0,!=1.0.1" + True + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.2") + False + """ + if isinstance(other, (str, Specifier)): + other = SpecifierSet(str(other)) + elif not isinstance(other, SpecifierSet): + return NotImplemented + + return self._specs == other._specs + + def __len__(self) -> int: + """Returns the number of specifiers in this specifier set.""" + return len(self._specs) + + def __iter__(self) -> Iterator[Specifier]: + """ + Returns an iterator over all the underlying :class:`Specifier` instances + in this specifier set. + + >>> sorted(SpecifierSet(">=1.0.0,!=1.0.1"), key=str) + [, =1.0.0')>] + """ + return iter(self._specs) + + def __contains__(self, item: UnparsedVersion) -> bool: + """Return whether or not the item is contained in this specifier. + + :param item: The item to check for. + + This is used for the ``in`` operator and behaves the same as + :meth:`contains` with no ``prereleases`` argument passed. + + >>> "1.2.3" in SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> Version("1.2.3") in SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> "1.0.1" in SpecifierSet(">=1.0.0,!=1.0.1") + False + >>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1") + False + >>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True) + True + """ + return self.contains(item) + + def contains( + self, + item: UnparsedVersion, + prereleases: bool | None = None, + installed: bool | None = None, + ) -> bool: + """Return whether or not the item is contained in this SpecifierSet. + + :param item: + The item to check for, which can be a version string or a + :class:`Version` instance. + :param prereleases: + Whether or not to match prereleases with this SpecifierSet. If set to + ``None`` (the default), it uses :attr:`prereleases` to determine + whether or not prereleases are allowed. + + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.2.3") + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains(Version("1.2.3")) + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.0.1") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True).contains("1.3.0a1") + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1", prereleases=True) + True + """ + # Ensure that our item is a Version instance. + if not isinstance(item, Version): + item = Version(item) + + # Determine if we're forcing a prerelease or not, if we're not forcing + # one for this particular filter call, then we'll use whatever the + # SpecifierSet thinks for whether or not we should support prereleases. + if prereleases is None: + prereleases = self.prereleases + + # We can determine if we're going to allow pre-releases by looking to + # see if any of the underlying items supports them. If none of them do + # and this item is a pre-release then we do not allow it and we can + # short circuit that here. + # Note: This means that 1.0.dev1 would not be contained in something + # like >=1.0.devabc however it would be in >=1.0.debabc,>0.0.dev0 + if not prereleases and item.is_prerelease: + return False + + if installed and item.is_prerelease: + item = Version(item.base_version) + + # We simply dispatch to the underlying specs here to make sure that the + # given version is contained within all of them. + # Note: This use of all() here means that an empty set of specifiers + # will always return True, this is an explicit design decision. + return all(s.contains(item, prereleases=prereleases) for s in self._specs) + + def filter( + self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None + ) -> Iterator[UnparsedVersionVar]: + """Filter items in the given iterable, that match the specifiers in this set. + + :param iterable: + An iterable that can contain version strings and :class:`Version` instances. + The items in the iterable will be filtered according to the specifier. + :param prereleases: + Whether or not to allow prereleases in the returned iterator. If set to + ``None`` (the default), it will be intelligently decide whether to allow + prereleases or not (based on the :attr:`prereleases` attribute, and + whether the only versions matching are prereleases). + + This method is smarter than just ``filter(SpecifierSet(...).contains, [...])`` + because it implements the rule from :pep:`440` that a prerelease item + SHOULD be accepted if no other versions match the given specifier. + + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", "1.5a1"])) + ['1.3'] + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", Version("1.4")])) + ['1.3', ] + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.5a1"])) + [] + >>> list(SpecifierSet(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + >>> list(SpecifierSet(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + + An "empty" SpecifierSet will filter items based on the presence of prerelease + versions in the set. + + >>> list(SpecifierSet("").filter(["1.3", "1.5a1"])) + ['1.3'] + >>> list(SpecifierSet("").filter(["1.5a1"])) + ['1.5a1'] + >>> list(SpecifierSet("", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + >>> list(SpecifierSet("").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + """ + # Determine if we're forcing a prerelease or not, if we're not forcing + # one for this particular filter call, then we'll use whatever the + # SpecifierSet thinks for whether or not we should support prereleases. + if prereleases is None: + prereleases = self.prereleases + + # If we have any specifiers, then we want to wrap our iterable in the + # filter method for each one, this will act as a logical AND amongst + # each specifier. + if self._specs: + for spec in self._specs: + iterable = spec.filter(iterable, prereleases=bool(prereleases)) + return iter(iterable) + # If we do not have any specifiers, then we need to have a rough filter + # which will filter out any pre-releases, unless there are no final + # releases. + else: + filtered: list[UnparsedVersionVar] = [] + found_prereleases: list[UnparsedVersionVar] = [] + + for item in iterable: + parsed_version = _coerce_version(item) + + # Store any item which is a pre-release for later unless we've + # already found a final version or we are accepting prereleases + if parsed_version.is_prerelease and not prereleases: + if not filtered: + found_prereleases.append(item) + else: + filtered.append(item) + + # If we've found no items except for pre-releases, then we'll go + # ahead and use the pre-releases + if not filtered and found_prereleases and prereleases is None: + return iter(found_prereleases) + + return iter(filtered) diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/tags.py b/venv/Lib/site-packages/pip/_vendor/packaging/tags.py new file mode 100644 index 00000000000..6667d299085 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/tags.py @@ -0,0 +1,568 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import logging +import platform +import re +import struct +import subprocess +import sys +import sysconfig +from importlib.machinery import EXTENSION_SUFFIXES +from typing import ( + Iterable, + Iterator, + Sequence, + Tuple, + cast, +) + +from . import _manylinux, _musllinux + +logger = logging.getLogger(__name__) + +PythonVersion = Sequence[int] +MacVersion = Tuple[int, int] + +INTERPRETER_SHORT_NAMES: dict[str, str] = { + "python": "py", # Generic. + "cpython": "cp", + "pypy": "pp", + "ironpython": "ip", + "jython": "jy", +} + + +_32_BIT_INTERPRETER = struct.calcsize("P") == 4 + + +class Tag: + """ + A representation of the tag triple for a wheel. + + Instances are considered immutable and thus are hashable. Equality checking + is also supported. + """ + + __slots__ = ["_interpreter", "_abi", "_platform", "_hash"] + + def __init__(self, interpreter: str, abi: str, platform: str) -> None: + self._interpreter = interpreter.lower() + self._abi = abi.lower() + self._platform = platform.lower() + # The __hash__ of every single element in a Set[Tag] will be evaluated each time + # that a set calls its `.disjoint()` method, which may be called hundreds of + # times when scanning a page of links for packages with tags matching that + # Set[Tag]. Pre-computing the value here produces significant speedups for + # downstream consumers. + self._hash = hash((self._interpreter, self._abi, self._platform)) + + @property + def interpreter(self) -> str: + return self._interpreter + + @property + def abi(self) -> str: + return self._abi + + @property + def platform(self) -> str: + return self._platform + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Tag): + return NotImplemented + + return ( + (self._hash == other._hash) # Short-circuit ASAP for perf reasons. + and (self._platform == other._platform) + and (self._abi == other._abi) + and (self._interpreter == other._interpreter) + ) + + def __hash__(self) -> int: + return self._hash + + def __str__(self) -> str: + return f"{self._interpreter}-{self._abi}-{self._platform}" + + def __repr__(self) -> str: + return f"<{self} @ {id(self)}>" + + +def parse_tag(tag: str) -> frozenset[Tag]: + """ + Parses the provided tag (e.g. `py3-none-any`) into a frozenset of Tag instances. + + Returning a set is required due to the possibility that the tag is a + compressed tag set. + """ + tags = set() + interpreters, abis, platforms = tag.split("-") + for interpreter in interpreters.split("."): + for abi in abis.split("."): + for platform_ in platforms.split("."): + tags.add(Tag(interpreter, abi, platform_)) + return frozenset(tags) + + +def _get_config_var(name: str, warn: bool = False) -> int | str | None: + value: int | str | None = sysconfig.get_config_var(name) + if value is None and warn: + logger.debug( + "Config variable '%s' is unset, Python ABI tag may be incorrect", name + ) + return value + + +def _normalize_string(string: str) -> str: + return string.replace(".", "_").replace("-", "_").replace(" ", "_") + + +def _is_threaded_cpython(abis: list[str]) -> bool: + """ + Determine if the ABI corresponds to a threaded (`--disable-gil`) build. + + The threaded builds are indicated by a "t" in the abiflags. + """ + if len(abis) == 0: + return False + # expect e.g., cp313 + m = re.match(r"cp\d+(.*)", abis[0]) + if not m: + return False + abiflags = m.group(1) + return "t" in abiflags + + +def _abi3_applies(python_version: PythonVersion, threading: bool) -> bool: + """ + Determine if the Python version supports abi3. + + PEP 384 was first implemented in Python 3.2. The threaded (`--disable-gil`) + builds do not support abi3. + """ + return len(python_version) > 1 and tuple(python_version) >= (3, 2) and not threading + + +def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> list[str]: + py_version = tuple(py_version) # To allow for version comparison. + abis = [] + version = _version_nodot(py_version[:2]) + threading = debug = pymalloc = ucs4 = "" + with_debug = _get_config_var("Py_DEBUG", warn) + has_refcount = hasattr(sys, "gettotalrefcount") + # Windows doesn't set Py_DEBUG, so checking for support of debug-compiled + # extension modules is the best option. + # https://github.com/pypa/pip/issues/3383#issuecomment-173267692 + has_ext = "_d.pyd" in EXTENSION_SUFFIXES + if with_debug or (with_debug is None and (has_refcount or has_ext)): + debug = "d" + if py_version >= (3, 13) and _get_config_var("Py_GIL_DISABLED", warn): + threading = "t" + if py_version < (3, 8): + with_pymalloc = _get_config_var("WITH_PYMALLOC", warn) + if with_pymalloc or with_pymalloc is None: + pymalloc = "m" + if py_version < (3, 3): + unicode_size = _get_config_var("Py_UNICODE_SIZE", warn) + if unicode_size == 4 or ( + unicode_size is None and sys.maxunicode == 0x10FFFF + ): + ucs4 = "u" + elif debug: + # Debug builds can also load "normal" extension modules. + # We can also assume no UCS-4 or pymalloc requirement. + abis.append(f"cp{version}{threading}") + abis.insert(0, f"cp{version}{threading}{debug}{pymalloc}{ucs4}") + return abis + + +def cpython_tags( + python_version: PythonVersion | None = None, + abis: Iterable[str] | None = None, + platforms: Iterable[str] | None = None, + *, + warn: bool = False, +) -> Iterator[Tag]: + """ + Yields the tags for a CPython interpreter. + + The tags consist of: + - cp-- + - cp-abi3- + - cp-none- + - cp-abi3- # Older Python versions down to 3.2. + + If python_version only specifies a major version then user-provided ABIs and + the 'none' ABItag will be used. + + If 'abi3' or 'none' are specified in 'abis' then they will be yielded at + their normal position and not at the beginning. + """ + if not python_version: + python_version = sys.version_info[:2] + + interpreter = f"cp{_version_nodot(python_version[:2])}" + + if abis is None: + if len(python_version) > 1: + abis = _cpython_abis(python_version, warn) + else: + abis = [] + abis = list(abis) + # 'abi3' and 'none' are explicitly handled later. + for explicit_abi in ("abi3", "none"): + try: + abis.remove(explicit_abi) + except ValueError: + pass + + platforms = list(platforms or platform_tags()) + for abi in abis: + for platform_ in platforms: + yield Tag(interpreter, abi, platform_) + + threading = _is_threaded_cpython(abis) + use_abi3 = _abi3_applies(python_version, threading) + if use_abi3: + yield from (Tag(interpreter, "abi3", platform_) for platform_ in platforms) + yield from (Tag(interpreter, "none", platform_) for platform_ in platforms) + + if use_abi3: + for minor_version in range(python_version[1] - 1, 1, -1): + for platform_ in platforms: + interpreter = "cp{version}".format( + version=_version_nodot((python_version[0], minor_version)) + ) + yield Tag(interpreter, "abi3", platform_) + + +def _generic_abi() -> list[str]: + """ + Return the ABI tag based on EXT_SUFFIX. + """ + # The following are examples of `EXT_SUFFIX`. + # We want to keep the parts which are related to the ABI and remove the + # parts which are related to the platform: + # - linux: '.cpython-310-x86_64-linux-gnu.so' => cp310 + # - mac: '.cpython-310-darwin.so' => cp310 + # - win: '.cp310-win_amd64.pyd' => cp310 + # - win: '.pyd' => cp37 (uses _cpython_abis()) + # - pypy: '.pypy38-pp73-x86_64-linux-gnu.so' => pypy38_pp73 + # - graalpy: '.graalpy-38-native-x86_64-darwin.dylib' + # => graalpy_38_native + + ext_suffix = _get_config_var("EXT_SUFFIX", warn=True) + if not isinstance(ext_suffix, str) or ext_suffix[0] != ".": + raise SystemError("invalid sysconfig.get_config_var('EXT_SUFFIX')") + parts = ext_suffix.split(".") + if len(parts) < 3: + # CPython3.7 and earlier uses ".pyd" on Windows. + return _cpython_abis(sys.version_info[:2]) + soabi = parts[1] + if soabi.startswith("cpython"): + # non-windows + abi = "cp" + soabi.split("-")[1] + elif soabi.startswith("cp"): + # windows + abi = soabi.split("-")[0] + elif soabi.startswith("pypy"): + abi = "-".join(soabi.split("-")[:2]) + elif soabi.startswith("graalpy"): + abi = "-".join(soabi.split("-")[:3]) + elif soabi: + # pyston, ironpython, others? + abi = soabi + else: + return [] + return [_normalize_string(abi)] + + +def generic_tags( + interpreter: str | None = None, + abis: Iterable[str] | None = None, + platforms: Iterable[str] | None = None, + *, + warn: bool = False, +) -> Iterator[Tag]: + """ + Yields the tags for a generic interpreter. + + The tags consist of: + - -- + + The "none" ABI will be added if it was not explicitly provided. + """ + if not interpreter: + interp_name = interpreter_name() + interp_version = interpreter_version(warn=warn) + interpreter = "".join([interp_name, interp_version]) + if abis is None: + abis = _generic_abi() + else: + abis = list(abis) + platforms = list(platforms or platform_tags()) + if "none" not in abis: + abis.append("none") + for abi in abis: + for platform_ in platforms: + yield Tag(interpreter, abi, platform_) + + +def _py_interpreter_range(py_version: PythonVersion) -> Iterator[str]: + """ + Yields Python versions in descending order. + + After the latest version, the major-only version will be yielded, and then + all previous versions of that major version. + """ + if len(py_version) > 1: + yield f"py{_version_nodot(py_version[:2])}" + yield f"py{py_version[0]}" + if len(py_version) > 1: + for minor in range(py_version[1] - 1, -1, -1): + yield f"py{_version_nodot((py_version[0], minor))}" + + +def compatible_tags( + python_version: PythonVersion | None = None, + interpreter: str | None = None, + platforms: Iterable[str] | None = None, +) -> Iterator[Tag]: + """ + Yields the sequence of tags that are compatible with a specific version of Python. + + The tags consist of: + - py*-none- + - -none-any # ... if `interpreter` is provided. + - py*-none-any + """ + if not python_version: + python_version = sys.version_info[:2] + platforms = list(platforms or platform_tags()) + for version in _py_interpreter_range(python_version): + for platform_ in platforms: + yield Tag(version, "none", platform_) + if interpreter: + yield Tag(interpreter, "none", "any") + for version in _py_interpreter_range(python_version): + yield Tag(version, "none", "any") + + +def _mac_arch(arch: str, is_32bit: bool = _32_BIT_INTERPRETER) -> str: + if not is_32bit: + return arch + + if arch.startswith("ppc"): + return "ppc" + + return "i386" + + +def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> list[str]: + formats = [cpu_arch] + if cpu_arch == "x86_64": + if version < (10, 4): + return [] + formats.extend(["intel", "fat64", "fat32"]) + + elif cpu_arch == "i386": + if version < (10, 4): + return [] + formats.extend(["intel", "fat32", "fat"]) + + elif cpu_arch == "ppc64": + # TODO: Need to care about 32-bit PPC for ppc64 through 10.2? + if version > (10, 5) or version < (10, 4): + return [] + formats.append("fat64") + + elif cpu_arch == "ppc": + if version > (10, 6): + return [] + formats.extend(["fat32", "fat"]) + + if cpu_arch in {"arm64", "x86_64"}: + formats.append("universal2") + + if cpu_arch in {"x86_64", "i386", "ppc64", "ppc", "intel"}: + formats.append("universal") + + return formats + + +def mac_platforms( + version: MacVersion | None = None, arch: str | None = None +) -> Iterator[str]: + """ + Yields the platform tags for a macOS system. + + The `version` parameter is a two-item tuple specifying the macOS version to + generate platform tags for. The `arch` parameter is the CPU architecture to + generate platform tags for. Both parameters default to the appropriate value + for the current system. + """ + version_str, _, cpu_arch = platform.mac_ver() + if version is None: + version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2]))) + if version == (10, 16): + # When built against an older macOS SDK, Python will report macOS 10.16 + # instead of the real version. + version_str = subprocess.run( + [ + sys.executable, + "-sS", + "-c", + "import platform; print(platform.mac_ver()[0])", + ], + check=True, + env={"SYSTEM_VERSION_COMPAT": "0"}, + stdout=subprocess.PIPE, + text=True, + ).stdout + version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2]))) + else: + version = version + if arch is None: + arch = _mac_arch(cpu_arch) + else: + arch = arch + + if (10, 0) <= version and version < (11, 0): + # Prior to Mac OS 11, each yearly release of Mac OS bumped the + # "minor" version number. The major version was always 10. + for minor_version in range(version[1], -1, -1): + compat_version = 10, minor_version + binary_formats = _mac_binary_formats(compat_version, arch) + for binary_format in binary_formats: + yield "macosx_{major}_{minor}_{binary_format}".format( + major=10, minor=minor_version, binary_format=binary_format + ) + + if version >= (11, 0): + # Starting with Mac OS 11, each yearly release bumps the major version + # number. The minor versions are now the midyear updates. + for major_version in range(version[0], 10, -1): + compat_version = major_version, 0 + binary_formats = _mac_binary_formats(compat_version, arch) + for binary_format in binary_formats: + yield "macosx_{major}_{minor}_{binary_format}".format( + major=major_version, minor=0, binary_format=binary_format + ) + + if version >= (11, 0): + # Mac OS 11 on x86_64 is compatible with binaries from previous releases. + # Arm64 support was introduced in 11.0, so no Arm binaries from previous + # releases exist. + # + # However, the "universal2" binary format can have a + # macOS version earlier than 11.0 when the x86_64 part of the binary supports + # that version of macOS. + if arch == "x86_64": + for minor_version in range(16, 3, -1): + compat_version = 10, minor_version + binary_formats = _mac_binary_formats(compat_version, arch) + for binary_format in binary_formats: + yield "macosx_{major}_{minor}_{binary_format}".format( + major=compat_version[0], + minor=compat_version[1], + binary_format=binary_format, + ) + else: + for minor_version in range(16, 3, -1): + compat_version = 10, minor_version + binary_format = "universal2" + yield "macosx_{major}_{minor}_{binary_format}".format( + major=compat_version[0], + minor=compat_version[1], + binary_format=binary_format, + ) + + +def _linux_platforms(is_32bit: bool = _32_BIT_INTERPRETER) -> Iterator[str]: + linux = _normalize_string(sysconfig.get_platform()) + if not linux.startswith("linux_"): + # we should never be here, just yield the sysconfig one and return + yield linux + return + if is_32bit: + if linux == "linux_x86_64": + linux = "linux_i686" + elif linux == "linux_aarch64": + linux = "linux_armv8l" + _, arch = linux.split("_", 1) + archs = {"armv8l": ["armv8l", "armv7l"]}.get(arch, [arch]) + yield from _manylinux.platform_tags(archs) + yield from _musllinux.platform_tags(archs) + for arch in archs: + yield f"linux_{arch}" + + +def _generic_platforms() -> Iterator[str]: + yield _normalize_string(sysconfig.get_platform()) + + +def platform_tags() -> Iterator[str]: + """ + Provides the platform tags for this installation. + """ + if platform.system() == "Darwin": + return mac_platforms() + elif platform.system() == "Linux": + return _linux_platforms() + else: + return _generic_platforms() + + +def interpreter_name() -> str: + """ + Returns the name of the running interpreter. + + Some implementations have a reserved, two-letter abbreviation which will + be returned when appropriate. + """ + name = sys.implementation.name + return INTERPRETER_SHORT_NAMES.get(name) or name + + +def interpreter_version(*, warn: bool = False) -> str: + """ + Returns the version of the running interpreter. + """ + version = _get_config_var("py_version_nodot", warn=warn) + if version: + version = str(version) + else: + version = _version_nodot(sys.version_info[:2]) + return version + + +def _version_nodot(version: PythonVersion) -> str: + return "".join(map(str, version)) + + +def sys_tags(*, warn: bool = False) -> Iterator[Tag]: + """ + Returns the sequence of tag triples for the running interpreter. + + The order of the sequence corresponds to priority order for the + interpreter, from most to least important. + """ + + interp_name = interpreter_name() + if interp_name == "cp": + yield from cpython_tags(warn=warn) + else: + yield from generic_tags() + + if interp_name == "pp": + interp = "pp3" + elif interp_name == "cp": + interp = "cp" + interpreter_version(warn=warn) + else: + interp = None + yield from compatible_tags(interpreter=interp) diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/utils.py b/venv/Lib/site-packages/pip/_vendor/packaging/utils.py new file mode 100644 index 00000000000..d33da5bb8bd --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/utils.py @@ -0,0 +1,174 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import annotations + +import re +from typing import NewType, Tuple, Union, cast + +from .tags import Tag, parse_tag +from .version import InvalidVersion, Version + +BuildTag = Union[Tuple[()], Tuple[int, str]] +NormalizedName = NewType("NormalizedName", str) + + +class InvalidName(ValueError): + """ + An invalid distribution name; users should refer to the packaging user guide. + """ + + +class InvalidWheelFilename(ValueError): + """ + An invalid wheel filename was found, users should refer to PEP 427. + """ + + +class InvalidSdistFilename(ValueError): + """ + An invalid sdist filename was found, users should refer to the packaging user guide. + """ + + +# Core metadata spec for `Name` +_validate_regex = re.compile( + r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", re.IGNORECASE +) +_canonicalize_regex = re.compile(r"[-_.]+") +_normalized_regex = re.compile(r"^([a-z0-9]|[a-z0-9]([a-z0-9-](?!--))*[a-z0-9])$") +# PEP 427: The build number must start with a digit. +_build_tag_regex = re.compile(r"(\d+)(.*)") + + +def canonicalize_name(name: str, *, validate: bool = False) -> NormalizedName: + if validate and not _validate_regex.match(name): + raise InvalidName(f"name is invalid: {name!r}") + # This is taken from PEP 503. + value = _canonicalize_regex.sub("-", name).lower() + return cast(NormalizedName, value) + + +def is_normalized_name(name: str) -> bool: + return _normalized_regex.match(name) is not None + + +def canonicalize_version( + version: Version | str, *, strip_trailing_zero: bool = True +) -> str: + """ + This is very similar to Version.__str__, but has one subtle difference + with the way it handles the release segment. + """ + if isinstance(version, str): + try: + parsed = Version(version) + except InvalidVersion: + # Legacy versions cannot be normalized + return version + else: + parsed = version + + parts = [] + + # Epoch + if parsed.epoch != 0: + parts.append(f"{parsed.epoch}!") + + # Release segment + release_segment = ".".join(str(x) for x in parsed.release) + if strip_trailing_zero: + # NB: This strips trailing '.0's to normalize + release_segment = re.sub(r"(\.0)+$", "", release_segment) + parts.append(release_segment) + + # Pre-release + if parsed.pre is not None: + parts.append("".join(str(x) for x in parsed.pre)) + + # Post-release + if parsed.post is not None: + parts.append(f".post{parsed.post}") + + # Development release + if parsed.dev is not None: + parts.append(f".dev{parsed.dev}") + + # Local version segment + if parsed.local is not None: + parts.append(f"+{parsed.local}") + + return "".join(parts) + + +def parse_wheel_filename( + filename: str, +) -> tuple[NormalizedName, Version, BuildTag, frozenset[Tag]]: + if not filename.endswith(".whl"): + raise InvalidWheelFilename( + f"Invalid wheel filename (extension must be '.whl'): {filename}" + ) + + filename = filename[:-4] + dashes = filename.count("-") + if dashes not in (4, 5): + raise InvalidWheelFilename( + f"Invalid wheel filename (wrong number of parts): {filename}" + ) + + parts = filename.split("-", dashes - 2) + name_part = parts[0] + # See PEP 427 for the rules on escaping the project name. + if "__" in name_part or re.match(r"^[\w\d._]*$", name_part, re.UNICODE) is None: + raise InvalidWheelFilename(f"Invalid project name: {filename}") + name = canonicalize_name(name_part) + + try: + version = Version(parts[1]) + except InvalidVersion as e: + raise InvalidWheelFilename( + f"Invalid wheel filename (invalid version): {filename}" + ) from e + + if dashes == 5: + build_part = parts[2] + build_match = _build_tag_regex.match(build_part) + if build_match is None: + raise InvalidWheelFilename( + f"Invalid build number: {build_part} in '{filename}'" + ) + build = cast(BuildTag, (int(build_match.group(1)), build_match.group(2))) + else: + build = () + tags = parse_tag(parts[-1]) + return (name, version, build, tags) + + +def parse_sdist_filename(filename: str) -> tuple[NormalizedName, Version]: + if filename.endswith(".tar.gz"): + file_stem = filename[: -len(".tar.gz")] + elif filename.endswith(".zip"): + file_stem = filename[: -len(".zip")] + else: + raise InvalidSdistFilename( + f"Invalid sdist filename (extension must be '.tar.gz' or '.zip'):" + f" {filename}" + ) + + # We are requiring a PEP 440 version, which cannot contain dashes, + # so we split on the last dash. + name_part, sep, version_part = file_stem.rpartition("-") + if not sep: + raise InvalidSdistFilename(f"Invalid sdist filename: {filename}") + + name = canonicalize_name(name_part) + + try: + version = Version(version_part) + except InvalidVersion as e: + raise InvalidSdistFilename( + f"Invalid sdist filename (invalid version): {filename}" + ) from e + + return (name, version) diff --git a/venv/Lib/site-packages/pip/_vendor/packaging/version.py b/venv/Lib/site-packages/pip/_vendor/packaging/version.py new file mode 100644 index 00000000000..8b0a040848d --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/packaging/version.py @@ -0,0 +1,563 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. +""" +.. testsetup:: + + from pip._vendor.packaging.version import parse, Version +""" + +from __future__ import annotations + +import itertools +import re +from typing import Any, Callable, NamedTuple, SupportsInt, Tuple, Union + +from ._structures import Infinity, InfinityType, NegativeInfinity, NegativeInfinityType + +__all__ = ["VERSION_PATTERN", "parse", "Version", "InvalidVersion"] + +LocalType = Tuple[Union[int, str], ...] + +CmpPrePostDevType = Union[InfinityType, NegativeInfinityType, Tuple[str, int]] +CmpLocalType = Union[ + NegativeInfinityType, + Tuple[Union[Tuple[int, str], Tuple[NegativeInfinityType, Union[int, str]]], ...], +] +CmpKey = Tuple[ + int, + Tuple[int, ...], + CmpPrePostDevType, + CmpPrePostDevType, + CmpPrePostDevType, + CmpLocalType, +] +VersionComparisonMethod = Callable[[CmpKey, CmpKey], bool] + + +class _Version(NamedTuple): + epoch: int + release: tuple[int, ...] + dev: tuple[str, int] | None + pre: tuple[str, int] | None + post: tuple[str, int] | None + local: LocalType | None + + +def parse(version: str) -> Version: + """Parse the given version string. + + >>> parse('1.0.dev1') + + + :param version: The version string to parse. + :raises InvalidVersion: When the version string is not a valid version. + """ + return Version(version) + + +class InvalidVersion(ValueError): + """Raised when a version string is not a valid version. + + >>> Version("invalid") + Traceback (most recent call last): + ... + packaging.version.InvalidVersion: Invalid version: 'invalid' + """ + + +class _BaseVersion: + _key: tuple[Any, ...] + + def __hash__(self) -> int: + return hash(self._key) + + # Please keep the duplicated `isinstance` check + # in the six comparisons hereunder + # unless you find a way to avoid adding overhead function calls. + def __lt__(self, other: _BaseVersion) -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key < other._key + + def __le__(self, other: _BaseVersion) -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key <= other._key + + def __eq__(self, other: object) -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key == other._key + + def __ge__(self, other: _BaseVersion) -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key >= other._key + + def __gt__(self, other: _BaseVersion) -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key > other._key + + def __ne__(self, other: object) -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key != other._key + + +# Deliberately not anchored to the start and end of the string, to make it +# easier for 3rd party code to reuse +_VERSION_PATTERN = r""" + v? + (?: + (?:(?P[0-9]+)!)? # epoch + (?P[0-9]+(?:\.[0-9]+)*) # release segment + (?P
                                          # pre-release
+            [-_\.]?
+            (?Palpha|a|beta|b|preview|pre|c|rc)
+            [-_\.]?
+            (?P[0-9]+)?
+        )?
+        (?P                                         # post release
+            (?:-(?P[0-9]+))
+            |
+            (?:
+                [-_\.]?
+                (?Ppost|rev|r)
+                [-_\.]?
+                (?P[0-9]+)?
+            )
+        )?
+        (?P                                          # dev release
+            [-_\.]?
+            (?Pdev)
+            [-_\.]?
+            (?P[0-9]+)?
+        )?
+    )
+    (?:\+(?P[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
+"""
+
+VERSION_PATTERN = _VERSION_PATTERN
+"""
+A string containing the regular expression used to match a valid version.
+
+The pattern is not anchored at either end, and is intended for embedding in larger
+expressions (for example, matching a version number as part of a file name). The
+regular expression should be compiled with the ``re.VERBOSE`` and ``re.IGNORECASE``
+flags set.
+
+:meta hide-value:
+"""
+
+
+class Version(_BaseVersion):
+    """This class abstracts handling of a project's versions.
+
+    A :class:`Version` instance is comparison aware and can be compared and
+    sorted using the standard Python interfaces.
+
+    >>> v1 = Version("1.0a5")
+    >>> v2 = Version("1.0")
+    >>> v1
+    
+    >>> v2
+    
+    >>> v1 < v2
+    True
+    >>> v1 == v2
+    False
+    >>> v1 > v2
+    False
+    >>> v1 >= v2
+    False
+    >>> v1 <= v2
+    True
+    """
+
+    _regex = re.compile(r"^\s*" + VERSION_PATTERN + r"\s*$", re.VERBOSE | re.IGNORECASE)
+    _key: CmpKey
+
+    def __init__(self, version: str) -> None:
+        """Initialize a Version object.
+
+        :param version:
+            The string representation of a version which will be parsed and normalized
+            before use.
+        :raises InvalidVersion:
+            If the ``version`` does not conform to PEP 440 in any way then this
+            exception will be raised.
+        """
+
+        # Validate the version and parse it into pieces
+        match = self._regex.search(version)
+        if not match:
+            raise InvalidVersion(f"Invalid version: '{version}'")
+
+        # Store the parsed out pieces of the version
+        self._version = _Version(
+            epoch=int(match.group("epoch")) if match.group("epoch") else 0,
+            release=tuple(int(i) for i in match.group("release").split(".")),
+            pre=_parse_letter_version(match.group("pre_l"), match.group("pre_n")),
+            post=_parse_letter_version(
+                match.group("post_l"), match.group("post_n1") or match.group("post_n2")
+            ),
+            dev=_parse_letter_version(match.group("dev_l"), match.group("dev_n")),
+            local=_parse_local_version(match.group("local")),
+        )
+
+        # Generate a key which will be used for sorting
+        self._key = _cmpkey(
+            self._version.epoch,
+            self._version.release,
+            self._version.pre,
+            self._version.post,
+            self._version.dev,
+            self._version.local,
+        )
+
+    def __repr__(self) -> str:
+        """A representation of the Version that shows all internal state.
+
+        >>> Version('1.0.0')
+        
+        """
+        return f""
+
+    def __str__(self) -> str:
+        """A string representation of the version that can be rounded-tripped.
+
+        >>> str(Version("1.0a5"))
+        '1.0a5'
+        """
+        parts = []
+
+        # Epoch
+        if self.epoch != 0:
+            parts.append(f"{self.epoch}!")
+
+        # Release segment
+        parts.append(".".join(str(x) for x in self.release))
+
+        # Pre-release
+        if self.pre is not None:
+            parts.append("".join(str(x) for x in self.pre))
+
+        # Post-release
+        if self.post is not None:
+            parts.append(f".post{self.post}")
+
+        # Development release
+        if self.dev is not None:
+            parts.append(f".dev{self.dev}")
+
+        # Local version segment
+        if self.local is not None:
+            parts.append(f"+{self.local}")
+
+        return "".join(parts)
+
+    @property
+    def epoch(self) -> int:
+        """The epoch of the version.
+
+        >>> Version("2.0.0").epoch
+        0
+        >>> Version("1!2.0.0").epoch
+        1
+        """
+        return self._version.epoch
+
+    @property
+    def release(self) -> tuple[int, ...]:
+        """The components of the "release" segment of the version.
+
+        >>> Version("1.2.3").release
+        (1, 2, 3)
+        >>> Version("2.0.0").release
+        (2, 0, 0)
+        >>> Version("1!2.0.0.post0").release
+        (2, 0, 0)
+
+        Includes trailing zeroes but not the epoch or any pre-release / development /
+        post-release suffixes.
+        """
+        return self._version.release
+
+    @property
+    def pre(self) -> tuple[str, int] | None:
+        """The pre-release segment of the version.
+
+        >>> print(Version("1.2.3").pre)
+        None
+        >>> Version("1.2.3a1").pre
+        ('a', 1)
+        >>> Version("1.2.3b1").pre
+        ('b', 1)
+        >>> Version("1.2.3rc1").pre
+        ('rc', 1)
+        """
+        return self._version.pre
+
+    @property
+    def post(self) -> int | None:
+        """The post-release number of the version.
+
+        >>> print(Version("1.2.3").post)
+        None
+        >>> Version("1.2.3.post1").post
+        1
+        """
+        return self._version.post[1] if self._version.post else None
+
+    @property
+    def dev(self) -> int | None:
+        """The development number of the version.
+
+        >>> print(Version("1.2.3").dev)
+        None
+        >>> Version("1.2.3.dev1").dev
+        1
+        """
+        return self._version.dev[1] if self._version.dev else None
+
+    @property
+    def local(self) -> str | None:
+        """The local version segment of the version.
+
+        >>> print(Version("1.2.3").local)
+        None
+        >>> Version("1.2.3+abc").local
+        'abc'
+        """
+        if self._version.local:
+            return ".".join(str(x) for x in self._version.local)
+        else:
+            return None
+
+    @property
+    def public(self) -> str:
+        """The public portion of the version.
+
+        >>> Version("1.2.3").public
+        '1.2.3'
+        >>> Version("1.2.3+abc").public
+        '1.2.3'
+        >>> Version("1.2.3+abc.dev1").public
+        '1.2.3'
+        """
+        return str(self).split("+", 1)[0]
+
+    @property
+    def base_version(self) -> str:
+        """The "base version" of the version.
+
+        >>> Version("1.2.3").base_version
+        '1.2.3'
+        >>> Version("1.2.3+abc").base_version
+        '1.2.3'
+        >>> Version("1!1.2.3+abc.dev1").base_version
+        '1!1.2.3'
+
+        The "base version" is the public version of the project without any pre or post
+        release markers.
+        """
+        parts = []
+
+        # Epoch
+        if self.epoch != 0:
+            parts.append(f"{self.epoch}!")
+
+        # Release segment
+        parts.append(".".join(str(x) for x in self.release))
+
+        return "".join(parts)
+
+    @property
+    def is_prerelease(self) -> bool:
+        """Whether this version is a pre-release.
+
+        >>> Version("1.2.3").is_prerelease
+        False
+        >>> Version("1.2.3a1").is_prerelease
+        True
+        >>> Version("1.2.3b1").is_prerelease
+        True
+        >>> Version("1.2.3rc1").is_prerelease
+        True
+        >>> Version("1.2.3dev1").is_prerelease
+        True
+        """
+        return self.dev is not None or self.pre is not None
+
+    @property
+    def is_postrelease(self) -> bool:
+        """Whether this version is a post-release.
+
+        >>> Version("1.2.3").is_postrelease
+        False
+        >>> Version("1.2.3.post1").is_postrelease
+        True
+        """
+        return self.post is not None
+
+    @property
+    def is_devrelease(self) -> bool:
+        """Whether this version is a development release.
+
+        >>> Version("1.2.3").is_devrelease
+        False
+        >>> Version("1.2.3.dev1").is_devrelease
+        True
+        """
+        return self.dev is not None
+
+    @property
+    def major(self) -> int:
+        """The first item of :attr:`release` or ``0`` if unavailable.
+
+        >>> Version("1.2.3").major
+        1
+        """
+        return self.release[0] if len(self.release) >= 1 else 0
+
+    @property
+    def minor(self) -> int:
+        """The second item of :attr:`release` or ``0`` if unavailable.
+
+        >>> Version("1.2.3").minor
+        2
+        >>> Version("1").minor
+        0
+        """
+        return self.release[1] if len(self.release) >= 2 else 0
+
+    @property
+    def micro(self) -> int:
+        """The third item of :attr:`release` or ``0`` if unavailable.
+
+        >>> Version("1.2.3").micro
+        3
+        >>> Version("1").micro
+        0
+        """
+        return self.release[2] if len(self.release) >= 3 else 0
+
+
+def _parse_letter_version(
+    letter: str | None, number: str | bytes | SupportsInt | None
+) -> tuple[str, int] | None:
+    if letter:
+        # We consider there to be an implicit 0 in a pre-release if there is
+        # not a numeral associated with it.
+        if number is None:
+            number = 0
+
+        # We normalize any letters to their lower case form
+        letter = letter.lower()
+
+        # We consider some words to be alternate spellings of other words and
+        # in those cases we want to normalize the spellings to our preferred
+        # spelling.
+        if letter == "alpha":
+            letter = "a"
+        elif letter == "beta":
+            letter = "b"
+        elif letter in ["c", "pre", "preview"]:
+            letter = "rc"
+        elif letter in ["rev", "r"]:
+            letter = "post"
+
+        return letter, int(number)
+    if not letter and number:
+        # We assume if we are given a number, but we are not given a letter
+        # then this is using the implicit post release syntax (e.g. 1.0-1)
+        letter = "post"
+
+        return letter, int(number)
+
+    return None
+
+
+_local_version_separators = re.compile(r"[\._-]")
+
+
+def _parse_local_version(local: str | None) -> LocalType | None:
+    """
+    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
+    """
+    if local is not None:
+        return tuple(
+            part.lower() if not part.isdigit() else int(part)
+            for part in _local_version_separators.split(local)
+        )
+    return None
+
+
+def _cmpkey(
+    epoch: int,
+    release: tuple[int, ...],
+    pre: tuple[str, int] | None,
+    post: tuple[str, int] | None,
+    dev: tuple[str, int] | None,
+    local: LocalType | None,
+) -> CmpKey:
+    # When we compare a release version, we want to compare it with all of the
+    # trailing zeros removed. So we'll use a reverse the list, drop all the now
+    # leading zeros until we come to something non zero, then take the rest
+    # re-reverse it back into the correct order and make it a tuple and use
+    # that for our sorting key.
+    _release = tuple(
+        reversed(list(itertools.dropwhile(lambda x: x == 0, reversed(release))))
+    )
+
+    # We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0.
+    # We'll do this by abusing the pre segment, but we _only_ want to do this
+    # if there is not a pre or a post segment. If we have one of those then
+    # the normal sorting rules will handle this case correctly.
+    if pre is None and post is None and dev is not None:
+        _pre: CmpPrePostDevType = NegativeInfinity
+    # Versions without a pre-release (except as noted above) should sort after
+    # those with one.
+    elif pre is None:
+        _pre = Infinity
+    else:
+        _pre = pre
+
+    # Versions without a post segment should sort before those with one.
+    if post is None:
+        _post: CmpPrePostDevType = NegativeInfinity
+
+    else:
+        _post = post
+
+    # Versions without a development segment should sort after those with one.
+    if dev is None:
+        _dev: CmpPrePostDevType = Infinity
+
+    else:
+        _dev = dev
+
+    if local is None:
+        # Versions without a local segment should sort before those with one.
+        _local: CmpLocalType = NegativeInfinity
+    else:
+        # Versions with a local segment need that segment parsed to implement
+        # the sorting rules in PEP440.
+        # - Alpha numeric segments sort before numeric segments
+        # - Alpha numeric segments sort lexicographically
+        # - Numeric segments sort numerically
+        # - Shorter versions sort before longer versions when the prefixes
+        #   match exactly
+        _local = tuple(
+            (i, "") if isinstance(i, int) else (NegativeInfinity, i) for i in local
+        )
+
+    return epoch, _release, _pre, _post, _dev, _local
diff --git a/venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py b/venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py
new file mode 100644
index 00000000000..57ce7f10064
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py
@@ -0,0 +1,3676 @@
+# TODO: Add Generic type annotations to initialized collections.
+# For now we'd simply use implicit Any/Unknown which would add redundant annotations
+# mypy: disable-error-code="var-annotated"
+"""
+Package resource API
+--------------------
+
+A resource is a logical file contained within a package, or a logical
+subdirectory thereof.  The package resource API expects resource names
+to have their path parts separated with ``/``, *not* whatever the local
+path separator is.  Do not use os.path operations to manipulate resource
+names being passed into the API.
+
+The package resource API is designed to work with normal filesystem packages,
+.egg files, and unpacked .egg files.  It can also work in a limited way with
+.zip files and with custom PEP 302 loaders that support the ``get_data()``
+method.
+
+This module is deprecated. Users are directed to :mod:`importlib.resources`,
+:mod:`importlib.metadata` and :pypi:`packaging` instead.
+"""
+
+from __future__ import annotations
+
+import sys
+
+if sys.version_info < (3, 8):  # noqa: UP036 # Check for unsupported versions
+    raise RuntimeError("Python 3.8 or later is required")
+
+import os
+import io
+import time
+import re
+import types
+from typing import (
+    Any,
+    Literal,
+    Dict,
+    Iterator,
+    Mapping,
+    MutableSequence,
+    NamedTuple,
+    NoReturn,
+    Tuple,
+    Union,
+    TYPE_CHECKING,
+    Protocol,
+    Callable,
+    Iterable,
+    TypeVar,
+    overload,
+)
+import zipfile
+import zipimport
+import warnings
+import stat
+import functools
+import pkgutil
+import operator
+import platform
+import collections
+import plistlib
+import email.parser
+import errno
+import tempfile
+import textwrap
+import inspect
+import ntpath
+import posixpath
+import importlib
+import importlib.abc
+import importlib.machinery
+from pkgutil import get_importer
+
+import _imp
+
+# capture these to bypass sandboxing
+from os import utime
+from os import open as os_open
+from os.path import isdir, split
+
+try:
+    from os import mkdir, rename, unlink
+
+    WRITE_SUPPORT = True
+except ImportError:
+    # no write support, probably under GAE
+    WRITE_SUPPORT = False
+
+from pip._internal.utils._jaraco_text import (
+    yield_lines,
+    drop_comment,
+    join_continuation,
+)
+from pip._vendor.packaging import markers as _packaging_markers
+from pip._vendor.packaging import requirements as _packaging_requirements
+from pip._vendor.packaging import utils as _packaging_utils
+from pip._vendor.packaging import version as _packaging_version
+from pip._vendor.platformdirs import user_cache_dir as _user_cache_dir
+
+if TYPE_CHECKING:
+    from _typeshed import BytesPath, StrPath, StrOrBytesPath
+    from pip._vendor.typing_extensions import Self
+
+
+# Patch: Remove deprecation warning from vendored pkg_resources.
+# Setting PYTHONWARNINGS=error to verify builds produce no warnings
+# causes immediate exceptions.
+# See https://github.com/pypa/pip/issues/12243
+
+
+_T = TypeVar("_T")
+_DistributionT = TypeVar("_DistributionT", bound="Distribution")
+# Type aliases
+_NestedStr = Union[str, Iterable[Union[str, Iterable["_NestedStr"]]]]
+_InstallerTypeT = Callable[["Requirement"], "_DistributionT"]
+_InstallerType = Callable[["Requirement"], Union["Distribution", None]]
+_PkgReqType = Union[str, "Requirement"]
+_EPDistType = Union["Distribution", _PkgReqType]
+_MetadataType = Union["IResourceProvider", None]
+_ResolvedEntryPoint = Any  # Can be any attribute in the module
+_ResourceStream = Any  # TODO / Incomplete: A readable file-like object
+# Any object works, but let's indicate we expect something like a module (optionally has __loader__ or __file__)
+_ModuleLike = Union[object, types.ModuleType]
+# Any: Should be _ModuleLike but we end up with issues where _ModuleLike doesn't have _ZipLoaderModule's __loader__
+_ProviderFactoryType = Callable[[Any], "IResourceProvider"]
+_DistFinderType = Callable[[_T, str, bool], Iterable["Distribution"]]
+_NSHandlerType = Callable[[_T, str, str, types.ModuleType], Union[str, None]]
+_AdapterT = TypeVar(
+    "_AdapterT", _DistFinderType[Any], _ProviderFactoryType, _NSHandlerType[Any]
+)
+
+
+# Use _typeshed.importlib.LoaderProtocol once available https://github.com/python/typeshed/pull/11890
+class _LoaderProtocol(Protocol):
+    def load_module(self, fullname: str, /) -> types.ModuleType: ...
+
+
+class _ZipLoaderModule(Protocol):
+    __loader__: zipimport.zipimporter
+
+
+_PEP440_FALLBACK = re.compile(r"^v?(?P(?:[0-9]+!)?[0-9]+(?:\.[0-9]+)*)", re.I)
+
+
+class PEP440Warning(RuntimeWarning):
+    """
+    Used when there is an issue with a version or specifier not complying with
+    PEP 440.
+    """
+
+
+parse_version = _packaging_version.Version
+
+
+_state_vars: dict[str, str] = {}
+
+
+def _declare_state(vartype: str, varname: str, initial_value: _T) -> _T:
+    _state_vars[varname] = vartype
+    return initial_value
+
+
+def __getstate__() -> dict[str, Any]:
+    state = {}
+    g = globals()
+    for k, v in _state_vars.items():
+        state[k] = g['_sget_' + v](g[k])
+    return state
+
+
+def __setstate__(state: dict[str, Any]) -> dict[str, Any]:
+    g = globals()
+    for k, v in state.items():
+        g['_sset_' + _state_vars[k]](k, g[k], v)
+    return state
+
+
+def _sget_dict(val):
+    return val.copy()
+
+
+def _sset_dict(key, ob, state):
+    ob.clear()
+    ob.update(state)
+
+
+def _sget_object(val):
+    return val.__getstate__()
+
+
+def _sset_object(key, ob, state):
+    ob.__setstate__(state)
+
+
+_sget_none = _sset_none = lambda *args: None
+
+
+def get_supported_platform():
+    """Return this platform's maximum compatible version.
+
+    distutils.util.get_platform() normally reports the minimum version
+    of macOS that would be required to *use* extensions produced by
+    distutils.  But what we want when checking compatibility is to know the
+    version of macOS that we are *running*.  To allow usage of packages that
+    explicitly require a newer version of macOS, we must also know the
+    current version of the OS.
+
+    If this condition occurs for any other platform with a version in its
+    platform strings, this function should be extended accordingly.
+    """
+    plat = get_build_platform()
+    m = macosVersionString.match(plat)
+    if m is not None and sys.platform == "darwin":
+        try:
+            plat = 'macosx-%s-%s' % ('.'.join(_macos_vers()[:2]), m.group(3))
+        except ValueError:
+            # not macOS
+            pass
+    return plat
+
+
+__all__ = [
+    # Basic resource access and distribution/entry point discovery
+    'require',
+    'run_script',
+    'get_provider',
+    'get_distribution',
+    'load_entry_point',
+    'get_entry_map',
+    'get_entry_info',
+    'iter_entry_points',
+    'resource_string',
+    'resource_stream',
+    'resource_filename',
+    'resource_listdir',
+    'resource_exists',
+    'resource_isdir',
+    # Environmental control
+    'declare_namespace',
+    'working_set',
+    'add_activation_listener',
+    'find_distributions',
+    'set_extraction_path',
+    'cleanup_resources',
+    'get_default_cache',
+    # Primary implementation classes
+    'Environment',
+    'WorkingSet',
+    'ResourceManager',
+    'Distribution',
+    'Requirement',
+    'EntryPoint',
+    # Exceptions
+    'ResolutionError',
+    'VersionConflict',
+    'DistributionNotFound',
+    'UnknownExtra',
+    'ExtractionError',
+    # Warnings
+    'PEP440Warning',
+    # Parsing functions and string utilities
+    'parse_requirements',
+    'parse_version',
+    'safe_name',
+    'safe_version',
+    'get_platform',
+    'compatible_platforms',
+    'yield_lines',
+    'split_sections',
+    'safe_extra',
+    'to_filename',
+    'invalid_marker',
+    'evaluate_marker',
+    # filesystem utilities
+    'ensure_directory',
+    'normalize_path',
+    # Distribution "precedence" constants
+    'EGG_DIST',
+    'BINARY_DIST',
+    'SOURCE_DIST',
+    'CHECKOUT_DIST',
+    'DEVELOP_DIST',
+    # "Provider" interfaces, implementations, and registration/lookup APIs
+    'IMetadataProvider',
+    'IResourceProvider',
+    'FileMetadata',
+    'PathMetadata',
+    'EggMetadata',
+    'EmptyProvider',
+    'empty_provider',
+    'NullProvider',
+    'EggProvider',
+    'DefaultProvider',
+    'ZipProvider',
+    'register_finder',
+    'register_namespace_handler',
+    'register_loader_type',
+    'fixup_namespace_packages',
+    'get_importer',
+    # Warnings
+    'PkgResourcesDeprecationWarning',
+    # Deprecated/backward compatibility only
+    'run_main',
+    'AvailableDistributions',
+]
+
+
+class ResolutionError(Exception):
+    """Abstract base for dependency resolution errors"""
+
+    def __repr__(self):
+        return self.__class__.__name__ + repr(self.args)
+
+
+class VersionConflict(ResolutionError):
+    """
+    An already-installed version conflicts with the requested version.
+
+    Should be initialized with the installed Distribution and the requested
+    Requirement.
+    """
+
+    _template = "{self.dist} is installed but {self.req} is required"
+
+    @property
+    def dist(self) -> Distribution:
+        return self.args[0]
+
+    @property
+    def req(self) -> Requirement:
+        return self.args[1]
+
+    def report(self):
+        return self._template.format(**locals())
+
+    def with_context(self, required_by: set[Distribution | str]):
+        """
+        If required_by is non-empty, return a version of self that is a
+        ContextualVersionConflict.
+        """
+        if not required_by:
+            return self
+        args = self.args + (required_by,)
+        return ContextualVersionConflict(*args)
+
+
+class ContextualVersionConflict(VersionConflict):
+    """
+    A VersionConflict that accepts a third parameter, the set of the
+    requirements that required the installed Distribution.
+    """
+
+    _template = VersionConflict._template + ' by {self.required_by}'
+
+    @property
+    def required_by(self) -> set[str]:
+        return self.args[2]
+
+
+class DistributionNotFound(ResolutionError):
+    """A requested distribution was not found"""
+
+    _template = (
+        "The '{self.req}' distribution was not found "
+        "and is required by {self.requirers_str}"
+    )
+
+    @property
+    def req(self) -> Requirement:
+        return self.args[0]
+
+    @property
+    def requirers(self) -> set[str] | None:
+        return self.args[1]
+
+    @property
+    def requirers_str(self):
+        if not self.requirers:
+            return 'the application'
+        return ', '.join(self.requirers)
+
+    def report(self):
+        return self._template.format(**locals())
+
+    def __str__(self):
+        return self.report()
+
+
+class UnknownExtra(ResolutionError):
+    """Distribution doesn't have an "extra feature" of the given name"""
+
+
+_provider_factories: dict[type[_ModuleLike], _ProviderFactoryType] = {}
+
+PY_MAJOR = '{}.{}'.format(*sys.version_info)
+EGG_DIST = 3
+BINARY_DIST = 2
+SOURCE_DIST = 1
+CHECKOUT_DIST = 0
+DEVELOP_DIST = -1
+
+
+def register_loader_type(
+    loader_type: type[_ModuleLike], provider_factory: _ProviderFactoryType
+):
+    """Register `provider_factory` to make providers for `loader_type`
+
+    `loader_type` is the type or class of a PEP 302 ``module.__loader__``,
+    and `provider_factory` is a function that, passed a *module* object,
+    returns an ``IResourceProvider`` for that module.
+    """
+    _provider_factories[loader_type] = provider_factory
+
+
+@overload
+def get_provider(moduleOrReq: str) -> IResourceProvider: ...
+@overload
+def get_provider(moduleOrReq: Requirement) -> Distribution: ...
+def get_provider(moduleOrReq: str | Requirement) -> IResourceProvider | Distribution:
+    """Return an IResourceProvider for the named module or requirement"""
+    if isinstance(moduleOrReq, Requirement):
+        return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
+    try:
+        module = sys.modules[moduleOrReq]
+    except KeyError:
+        __import__(moduleOrReq)
+        module = sys.modules[moduleOrReq]
+    loader = getattr(module, '__loader__', None)
+    return _find_adapter(_provider_factories, loader)(module)
+
+
+@functools.lru_cache(maxsize=None)
+def _macos_vers():
+    version = platform.mac_ver()[0]
+    # fallback for MacPorts
+    if version == '':
+        plist = '/System/Library/CoreServices/SystemVersion.plist'
+        if os.path.exists(plist):
+            with open(plist, 'rb') as fh:
+                plist_content = plistlib.load(fh)
+            if 'ProductVersion' in plist_content:
+                version = plist_content['ProductVersion']
+    return version.split('.')
+
+
+def _macos_arch(machine):
+    return {'PowerPC': 'ppc', 'Power_Macintosh': 'ppc'}.get(machine, machine)
+
+
+def get_build_platform():
+    """Return this platform's string for platform-specific distributions
+
+    XXX Currently this is the same as ``distutils.util.get_platform()``, but it
+    needs some hacks for Linux and macOS.
+    """
+    from sysconfig import get_platform
+
+    plat = get_platform()
+    if sys.platform == "darwin" and not plat.startswith('macosx-'):
+        try:
+            version = _macos_vers()
+            machine = os.uname()[4].replace(" ", "_")
+            return "macosx-%d.%d-%s" % (
+                int(version[0]),
+                int(version[1]),
+                _macos_arch(machine),
+            )
+        except ValueError:
+            # if someone is running a non-Mac darwin system, this will fall
+            # through to the default implementation
+            pass
+    return plat
+
+
+macosVersionString = re.compile(r"macosx-(\d+)\.(\d+)-(.*)")
+darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)")
+# XXX backward compat
+get_platform = get_build_platform
+
+
+def compatible_platforms(provided: str | None, required: str | None):
+    """Can code for the `provided` platform run on the `required` platform?
+
+    Returns true if either platform is ``None``, or the platforms are equal.
+
+    XXX Needs compatibility checks for Linux and other unixy OSes.
+    """
+    if provided is None or required is None or provided == required:
+        # easy case
+        return True
+
+    # macOS special cases
+    reqMac = macosVersionString.match(required)
+    if reqMac:
+        provMac = macosVersionString.match(provided)
+
+        # is this a Mac package?
+        if not provMac:
+            # this is backwards compatibility for packages built before
+            # setuptools 0.6. All packages built after this point will
+            # use the new macOS designation.
+            provDarwin = darwinVersionString.match(provided)
+            if provDarwin:
+                dversion = int(provDarwin.group(1))
+                macosversion = "%s.%s" % (reqMac.group(1), reqMac.group(2))
+                if (
+                    dversion == 7
+                    and macosversion >= "10.3"
+                    or dversion == 8
+                    and macosversion >= "10.4"
+                ):
+                    return True
+            # egg isn't macOS or legacy darwin
+            return False
+
+        # are they the same major version and machine type?
+        if provMac.group(1) != reqMac.group(1) or provMac.group(3) != reqMac.group(3):
+            return False
+
+        # is the required OS major update >= the provided one?
+        if int(provMac.group(2)) > int(reqMac.group(2)):
+            return False
+
+        return True
+
+    # XXX Linux and other platforms' special cases should go here
+    return False
+
+
+@overload
+def get_distribution(dist: _DistributionT) -> _DistributionT: ...
+@overload
+def get_distribution(dist: _PkgReqType) -> Distribution: ...
+def get_distribution(dist: Distribution | _PkgReqType) -> Distribution:
+    """Return a current distribution object for a Requirement or string"""
+    if isinstance(dist, str):
+        dist = Requirement.parse(dist)
+    if isinstance(dist, Requirement):
+        # Bad type narrowing, dist has to be a Requirement here, so get_provider has to return Distribution
+        dist = get_provider(dist)  # type: ignore[assignment]
+    if not isinstance(dist, Distribution):
+        raise TypeError("Expected str, Requirement, or Distribution", dist)
+    return dist
+
+
+def load_entry_point(dist: _EPDistType, group: str, name: str) -> _ResolvedEntryPoint:
+    """Return `name` entry point of `group` for `dist` or raise ImportError"""
+    return get_distribution(dist).load_entry_point(group, name)
+
+
+@overload
+def get_entry_map(
+    dist: _EPDistType, group: None = None
+) -> dict[str, dict[str, EntryPoint]]: ...
+@overload
+def get_entry_map(dist: _EPDistType, group: str) -> dict[str, EntryPoint]: ...
+def get_entry_map(dist: _EPDistType, group: str | None = None):
+    """Return the entry point map for `group`, or the full entry map"""
+    return get_distribution(dist).get_entry_map(group)
+
+
+def get_entry_info(dist: _EPDistType, group: str, name: str):
+    """Return the EntryPoint object for `group`+`name`, or ``None``"""
+    return get_distribution(dist).get_entry_info(group, name)
+
+
+class IMetadataProvider(Protocol):
+    def has_metadata(self, name: str) -> bool:
+        """Does the package's distribution contain the named metadata?"""
+
+    def get_metadata(self, name: str) -> str:
+        """The named metadata resource as a string"""
+
+    def get_metadata_lines(self, name: str) -> Iterator[str]:
+        """Yield named metadata resource as list of non-blank non-comment lines
+
+        Leading and trailing whitespace is stripped from each line, and lines
+        with ``#`` as the first non-blank character are omitted."""
+
+    def metadata_isdir(self, name: str) -> bool:
+        """Is the named metadata a directory?  (like ``os.path.isdir()``)"""
+
+    def metadata_listdir(self, name: str) -> list[str]:
+        """List of metadata names in the directory (like ``os.listdir()``)"""
+
+    def run_script(self, script_name: str, namespace: dict[str, Any]) -> None:
+        """Execute the named script in the supplied namespace dictionary"""
+
+
+class IResourceProvider(IMetadataProvider, Protocol):
+    """An object that provides access to package resources"""
+
+    def get_resource_filename(
+        self, manager: ResourceManager, resource_name: str
+    ) -> str:
+        """Return a true filesystem path for `resource_name`
+
+        `manager` must be a ``ResourceManager``"""
+
+    def get_resource_stream(
+        self, manager: ResourceManager, resource_name: str
+    ) -> _ResourceStream:
+        """Return a readable file-like object for `resource_name`
+
+        `manager` must be a ``ResourceManager``"""
+
+    def get_resource_string(
+        self, manager: ResourceManager, resource_name: str
+    ) -> bytes:
+        """Return the contents of `resource_name` as :obj:`bytes`
+
+        `manager` must be a ``ResourceManager``"""
+
+    def has_resource(self, resource_name: str) -> bool:
+        """Does the package contain the named resource?"""
+
+    def resource_isdir(self, resource_name: str) -> bool:
+        """Is the named resource a directory?  (like ``os.path.isdir()``)"""
+
+    def resource_listdir(self, resource_name: str) -> list[str]:
+        """List of resource names in the directory (like ``os.listdir()``)"""
+
+
+class WorkingSet:
+    """A collection of active distributions on sys.path (or a similar list)"""
+
+    def __init__(self, entries: Iterable[str] | None = None):
+        """Create working set from list of path entries (default=sys.path)"""
+        self.entries: list[str] = []
+        self.entry_keys = {}
+        self.by_key = {}
+        self.normalized_to_canonical_keys = {}
+        self.callbacks = []
+
+        if entries is None:
+            entries = sys.path
+
+        for entry in entries:
+            self.add_entry(entry)
+
+    @classmethod
+    def _build_master(cls):
+        """
+        Prepare the master working set.
+        """
+        ws = cls()
+        try:
+            from __main__ import __requires__
+        except ImportError:
+            # The main program does not list any requirements
+            return ws
+
+        # ensure the requirements are met
+        try:
+            ws.require(__requires__)
+        except VersionConflict:
+            return cls._build_from_requirements(__requires__)
+
+        return ws
+
+    @classmethod
+    def _build_from_requirements(cls, req_spec):
+        """
+        Build a working set from a requirement spec. Rewrites sys.path.
+        """
+        # try it without defaults already on sys.path
+        # by starting with an empty path
+        ws = cls([])
+        reqs = parse_requirements(req_spec)
+        dists = ws.resolve(reqs, Environment())
+        for dist in dists:
+            ws.add(dist)
+
+        # add any missing entries from sys.path
+        for entry in sys.path:
+            if entry not in ws.entries:
+                ws.add_entry(entry)
+
+        # then copy back to sys.path
+        sys.path[:] = ws.entries
+        return ws
+
+    def add_entry(self, entry: str):
+        """Add a path item to ``.entries``, finding any distributions on it
+
+        ``find_distributions(entry, True)`` is used to find distributions
+        corresponding to the path entry, and they are added.  `entry` is
+        always appended to ``.entries``, even if it is already present.
+        (This is because ``sys.path`` can contain the same value more than
+        once, and the ``.entries`` of the ``sys.path`` WorkingSet should always
+        equal ``sys.path``.)
+        """
+        self.entry_keys.setdefault(entry, [])
+        self.entries.append(entry)
+        for dist in find_distributions(entry, True):
+            self.add(dist, entry, False)
+
+    def __contains__(self, dist: Distribution) -> bool:
+        """True if `dist` is the active distribution for its project"""
+        return self.by_key.get(dist.key) == dist
+
+    def find(self, req: Requirement) -> Distribution | None:
+        """Find a distribution matching requirement `req`
+
+        If there is an active distribution for the requested project, this
+        returns it as long as it meets the version requirement specified by
+        `req`.  But, if there is an active distribution for the project and it
+        does *not* meet the `req` requirement, ``VersionConflict`` is raised.
+        If there is no active distribution for the requested project, ``None``
+        is returned.
+        """
+        dist = self.by_key.get(req.key)
+
+        if dist is None:
+            canonical_key = self.normalized_to_canonical_keys.get(req.key)
+
+            if canonical_key is not None:
+                req.key = canonical_key
+                dist = self.by_key.get(canonical_key)
+
+        if dist is not None and dist not in req:
+            # XXX add more info
+            raise VersionConflict(dist, req)
+        return dist
+
+    def iter_entry_points(self, group: str, name: str | None = None):
+        """Yield entry point objects from `group` matching `name`
+
+        If `name` is None, yields all entry points in `group` from all
+        distributions in the working set, otherwise only ones matching
+        both `group` and `name` are yielded (in distribution order).
+        """
+        return (
+            entry
+            for dist in self
+            for entry in dist.get_entry_map(group).values()
+            if name is None or name == entry.name
+        )
+
+    def run_script(self, requires: str, script_name: str):
+        """Locate distribution for `requires` and run `script_name` script"""
+        ns = sys._getframe(1).f_globals
+        name = ns['__name__']
+        ns.clear()
+        ns['__name__'] = name
+        self.require(requires)[0].run_script(script_name, ns)
+
+    def __iter__(self) -> Iterator[Distribution]:
+        """Yield distributions for non-duplicate projects in the working set
+
+        The yield order is the order in which the items' path entries were
+        added to the working set.
+        """
+        seen = set()
+        for item in self.entries:
+            if item not in self.entry_keys:
+                # workaround a cache issue
+                continue
+
+            for key in self.entry_keys[item]:
+                if key not in seen:
+                    seen.add(key)
+                    yield self.by_key[key]
+
+    def add(
+        self,
+        dist: Distribution,
+        entry: str | None = None,
+        insert: bool = True,
+        replace: bool = False,
+    ):
+        """Add `dist` to working set, associated with `entry`
+
+        If `entry` is unspecified, it defaults to the ``.location`` of `dist`.
+        On exit from this routine, `entry` is added to the end of the working
+        set's ``.entries`` (if it wasn't already present).
+
+        `dist` is only added to the working set if it's for a project that
+        doesn't already have a distribution in the set, unless `replace=True`.
+        If it's added, any callbacks registered with the ``subscribe()`` method
+        will be called.
+        """
+        if insert:
+            dist.insert_on(self.entries, entry, replace=replace)
+
+        if entry is None:
+            entry = dist.location
+        keys = self.entry_keys.setdefault(entry, [])
+        keys2 = self.entry_keys.setdefault(dist.location, [])
+        if not replace and dist.key in self.by_key:
+            # ignore hidden distros
+            return
+
+        self.by_key[dist.key] = dist
+        normalized_name = _packaging_utils.canonicalize_name(dist.key)
+        self.normalized_to_canonical_keys[normalized_name] = dist.key
+        if dist.key not in keys:
+            keys.append(dist.key)
+        if dist.key not in keys2:
+            keys2.append(dist.key)
+        self._added_new(dist)
+
+    @overload
+    def resolve(
+        self,
+        requirements: Iterable[Requirement],
+        env: Environment | None,
+        installer: _InstallerTypeT[_DistributionT],
+        replace_conflicting: bool = False,
+        extras: tuple[str, ...] | None = None,
+    ) -> list[_DistributionT]: ...
+    @overload
+    def resolve(
+        self,
+        requirements: Iterable[Requirement],
+        env: Environment | None = None,
+        *,
+        installer: _InstallerTypeT[_DistributionT],
+        replace_conflicting: bool = False,
+        extras: tuple[str, ...] | None = None,
+    ) -> list[_DistributionT]: ...
+    @overload
+    def resolve(
+        self,
+        requirements: Iterable[Requirement],
+        env: Environment | None = None,
+        installer: _InstallerType | None = None,
+        replace_conflicting: bool = False,
+        extras: tuple[str, ...] | None = None,
+    ) -> list[Distribution]: ...
+    def resolve(
+        self,
+        requirements: Iterable[Requirement],
+        env: Environment | None = None,
+        installer: _InstallerType | None | _InstallerTypeT[_DistributionT] = None,
+        replace_conflicting: bool = False,
+        extras: tuple[str, ...] | None = None,
+    ) -> list[Distribution] | list[_DistributionT]:
+        """List all distributions needed to (recursively) meet `requirements`
+
+        `requirements` must be a sequence of ``Requirement`` objects.  `env`,
+        if supplied, should be an ``Environment`` instance.  If
+        not supplied, it defaults to all distributions available within any
+        entry or distribution in the working set.  `installer`, if supplied,
+        will be invoked with each requirement that cannot be met by an
+        already-installed distribution; it should return a ``Distribution`` or
+        ``None``.
+
+        Unless `replace_conflicting=True`, raises a VersionConflict exception
+        if
+        any requirements are found on the path that have the correct name but
+        the wrong version.  Otherwise, if an `installer` is supplied it will be
+        invoked to obtain the correct version of the requirement and activate
+        it.
+
+        `extras` is a list of the extras to be used with these requirements.
+        This is important because extra requirements may look like `my_req;
+        extra = "my_extra"`, which would otherwise be interpreted as a purely
+        optional requirement.  Instead, we want to be able to assert that these
+        requirements are truly required.
+        """
+
+        # set up the stack
+        requirements = list(requirements)[::-1]
+        # set of processed requirements
+        processed = set()
+        # key -> dist
+        best = {}
+        to_activate = []
+
+        req_extras = _ReqExtras()
+
+        # Mapping of requirement to set of distributions that required it;
+        # useful for reporting info about conflicts.
+        required_by = collections.defaultdict(set)
+
+        while requirements:
+            # process dependencies breadth-first
+            req = requirements.pop(0)
+            if req in processed:
+                # Ignore cyclic or redundant dependencies
+                continue
+
+            if not req_extras.markers_pass(req, extras):
+                continue
+
+            dist = self._resolve_dist(
+                req, best, replace_conflicting, env, installer, required_by, to_activate
+            )
+
+            # push the new requirements onto the stack
+            new_requirements = dist.requires(req.extras)[::-1]
+            requirements.extend(new_requirements)
+
+            # Register the new requirements needed by req
+            for new_requirement in new_requirements:
+                required_by[new_requirement].add(req.project_name)
+                req_extras[new_requirement] = req.extras
+
+            processed.add(req)
+
+        # return list of distros to activate
+        return to_activate
+
+    def _resolve_dist(
+        self, req, best, replace_conflicting, env, installer, required_by, to_activate
+    ) -> Distribution:
+        dist = best.get(req.key)
+        if dist is None:
+            # Find the best distribution and add it to the map
+            dist = self.by_key.get(req.key)
+            if dist is None or (dist not in req and replace_conflicting):
+                ws = self
+                if env is None:
+                    if dist is None:
+                        env = Environment(self.entries)
+                    else:
+                        # Use an empty environment and workingset to avoid
+                        # any further conflicts with the conflicting
+                        # distribution
+                        env = Environment([])
+                        ws = WorkingSet([])
+                dist = best[req.key] = env.best_match(
+                    req, ws, installer, replace_conflicting=replace_conflicting
+                )
+                if dist is None:
+                    requirers = required_by.get(req, None)
+                    raise DistributionNotFound(req, requirers)
+            to_activate.append(dist)
+        if dist not in req:
+            # Oops, the "best" so far conflicts with a dependency
+            dependent_req = required_by[req]
+            raise VersionConflict(dist, req).with_context(dependent_req)
+        return dist
+
+    @overload
+    def find_plugins(
+        self,
+        plugin_env: Environment,
+        full_env: Environment | None,
+        installer: _InstallerTypeT[_DistributionT],
+        fallback: bool = True,
+    ) -> tuple[list[_DistributionT], dict[Distribution, Exception]]: ...
+    @overload
+    def find_plugins(
+        self,
+        plugin_env: Environment,
+        full_env: Environment | None = None,
+        *,
+        installer: _InstallerTypeT[_DistributionT],
+        fallback: bool = True,
+    ) -> tuple[list[_DistributionT], dict[Distribution, Exception]]: ...
+    @overload
+    def find_plugins(
+        self,
+        plugin_env: Environment,
+        full_env: Environment | None = None,
+        installer: _InstallerType | None = None,
+        fallback: bool = True,
+    ) -> tuple[list[Distribution], dict[Distribution, Exception]]: ...
+    def find_plugins(
+        self,
+        plugin_env: Environment,
+        full_env: Environment | None = None,
+        installer: _InstallerType | None | _InstallerTypeT[_DistributionT] = None,
+        fallback: bool = True,
+    ) -> tuple[
+        list[Distribution] | list[_DistributionT],
+        dict[Distribution, Exception],
+    ]:
+        """Find all activatable distributions in `plugin_env`
+
+        Example usage::
+
+            distributions, errors = working_set.find_plugins(
+                Environment(plugin_dirlist)
+            )
+            # add plugins+libs to sys.path
+            map(working_set.add, distributions)
+            # display errors
+            print('Could not load', errors)
+
+        The `plugin_env` should be an ``Environment`` instance that contains
+        only distributions that are in the project's "plugin directory" or
+        directories. The `full_env`, if supplied, should be an ``Environment``
+        contains all currently-available distributions.  If `full_env` is not
+        supplied, one is created automatically from the ``WorkingSet`` this
+        method is called on, which will typically mean that every directory on
+        ``sys.path`` will be scanned for distributions.
+
+        `installer` is a standard installer callback as used by the
+        ``resolve()`` method. The `fallback` flag indicates whether we should
+        attempt to resolve older versions of a plugin if the newest version
+        cannot be resolved.
+
+        This method returns a 2-tuple: (`distributions`, `error_info`), where
+        `distributions` is a list of the distributions found in `plugin_env`
+        that were loadable, along with any other distributions that are needed
+        to resolve their dependencies.  `error_info` is a dictionary mapping
+        unloadable plugin distributions to an exception instance describing the
+        error that occurred. Usually this will be a ``DistributionNotFound`` or
+        ``VersionConflict`` instance.
+        """
+
+        plugin_projects = list(plugin_env)
+        # scan project names in alphabetic order
+        plugin_projects.sort()
+
+        error_info: dict[Distribution, Exception] = {}
+        distributions: dict[Distribution, Exception | None] = {}
+
+        if full_env is None:
+            env = Environment(self.entries)
+            env += plugin_env
+        else:
+            env = full_env + plugin_env
+
+        shadow_set = self.__class__([])
+        # put all our entries in shadow_set
+        list(map(shadow_set.add, self))
+
+        for project_name in plugin_projects:
+            for dist in plugin_env[project_name]:
+                req = [dist.as_requirement()]
+
+                try:
+                    resolvees = shadow_set.resolve(req, env, installer)
+
+                except ResolutionError as v:
+                    # save error info
+                    error_info[dist] = v
+                    if fallback:
+                        # try the next older version of project
+                        continue
+                    else:
+                        # give up on this project, keep going
+                        break
+
+                else:
+                    list(map(shadow_set.add, resolvees))
+                    distributions.update(dict.fromkeys(resolvees))
+
+                    # success, no need to try any more versions of this project
+                    break
+
+        sorted_distributions = list(distributions)
+        sorted_distributions.sort()
+
+        return sorted_distributions, error_info
+
+    def require(self, *requirements: _NestedStr):
+        """Ensure that distributions matching `requirements` are activated
+
+        `requirements` must be a string or a (possibly-nested) sequence
+        thereof, specifying the distributions and versions required.  The
+        return value is a sequence of the distributions that needed to be
+        activated to fulfill the requirements; all relevant distributions are
+        included, even if they were already activated in this working set.
+        """
+        needed = self.resolve(parse_requirements(requirements))
+
+        for dist in needed:
+            self.add(dist)
+
+        return needed
+
+    def subscribe(
+        self, callback: Callable[[Distribution], object], existing: bool = True
+    ):
+        """Invoke `callback` for all distributions
+
+        If `existing=True` (default),
+        call on all existing ones, as well.
+        """
+        if callback in self.callbacks:
+            return
+        self.callbacks.append(callback)
+        if not existing:
+            return
+        for dist in self:
+            callback(dist)
+
+    def _added_new(self, dist):
+        for callback in self.callbacks:
+            callback(dist)
+
+    def __getstate__(self):
+        return (
+            self.entries[:],
+            self.entry_keys.copy(),
+            self.by_key.copy(),
+            self.normalized_to_canonical_keys.copy(),
+            self.callbacks[:],
+        )
+
+    def __setstate__(self, e_k_b_n_c):
+        entries, keys, by_key, normalized_to_canonical_keys, callbacks = e_k_b_n_c
+        self.entries = entries[:]
+        self.entry_keys = keys.copy()
+        self.by_key = by_key.copy()
+        self.normalized_to_canonical_keys = normalized_to_canonical_keys.copy()
+        self.callbacks = callbacks[:]
+
+
+class _ReqExtras(Dict["Requirement", Tuple[str, ...]]):
+    """
+    Map each requirement to the extras that demanded it.
+    """
+
+    def markers_pass(self, req: Requirement, extras: tuple[str, ...] | None = None):
+        """
+        Evaluate markers for req against each extra that
+        demanded it.
+
+        Return False if the req has a marker and fails
+        evaluation. Otherwise, return True.
+        """
+        extra_evals = (
+            req.marker.evaluate({'extra': extra})
+            for extra in self.get(req, ()) + (extras or (None,))
+        )
+        return not req.marker or any(extra_evals)
+
+
+class Environment:
+    """Searchable snapshot of distributions on a search path"""
+
+    def __init__(
+        self,
+        search_path: Iterable[str] | None = None,
+        platform: str | None = get_supported_platform(),
+        python: str | None = PY_MAJOR,
+    ):
+        """Snapshot distributions available on a search path
+
+        Any distributions found on `search_path` are added to the environment.
+        `search_path` should be a sequence of ``sys.path`` items.  If not
+        supplied, ``sys.path`` is used.
+
+        `platform` is an optional string specifying the name of the platform
+        that platform-specific distributions must be compatible with.  If
+        unspecified, it defaults to the current platform.  `python` is an
+        optional string naming the desired version of Python (e.g. ``'3.6'``);
+        it defaults to the current version.
+
+        You may explicitly set `platform` (and/or `python`) to ``None`` if you
+        wish to map *all* distributions, not just those compatible with the
+        running platform or Python version.
+        """
+        self._distmap = {}
+        self.platform = platform
+        self.python = python
+        self.scan(search_path)
+
+    def can_add(self, dist: Distribution):
+        """Is distribution `dist` acceptable for this environment?
+
+        The distribution must match the platform and python version
+        requirements specified when this environment was created, or False
+        is returned.
+        """
+        py_compat = (
+            self.python is None
+            or dist.py_version is None
+            or dist.py_version == self.python
+        )
+        return py_compat and compatible_platforms(dist.platform, self.platform)
+
+    def remove(self, dist: Distribution):
+        """Remove `dist` from the environment"""
+        self._distmap[dist.key].remove(dist)
+
+    def scan(self, search_path: Iterable[str] | None = None):
+        """Scan `search_path` for distributions usable in this environment
+
+        Any distributions found are added to the environment.
+        `search_path` should be a sequence of ``sys.path`` items.  If not
+        supplied, ``sys.path`` is used.  Only distributions conforming to
+        the platform/python version defined at initialization are added.
+        """
+        if search_path is None:
+            search_path = sys.path
+
+        for item in search_path:
+            for dist in find_distributions(item):
+                self.add(dist)
+
+    def __getitem__(self, project_name: str) -> list[Distribution]:
+        """Return a newest-to-oldest list of distributions for `project_name`
+
+        Uses case-insensitive `project_name` comparison, assuming all the
+        project's distributions use their project's name converted to all
+        lowercase as their key.
+
+        """
+        distribution_key = project_name.lower()
+        return self._distmap.get(distribution_key, [])
+
+    def add(self, dist: Distribution):
+        """Add `dist` if we ``can_add()`` it and it has not already been added"""
+        if self.can_add(dist) and dist.has_version():
+            dists = self._distmap.setdefault(dist.key, [])
+            if dist not in dists:
+                dists.append(dist)
+                dists.sort(key=operator.attrgetter('hashcmp'), reverse=True)
+
+    @overload
+    def best_match(
+        self,
+        req: Requirement,
+        working_set: WorkingSet,
+        installer: _InstallerTypeT[_DistributionT],
+        replace_conflicting: bool = False,
+    ) -> _DistributionT: ...
+    @overload
+    def best_match(
+        self,
+        req: Requirement,
+        working_set: WorkingSet,
+        installer: _InstallerType | None = None,
+        replace_conflicting: bool = False,
+    ) -> Distribution | None: ...
+    def best_match(
+        self,
+        req: Requirement,
+        working_set: WorkingSet,
+        installer: _InstallerType | None | _InstallerTypeT[_DistributionT] = None,
+        replace_conflicting: bool = False,
+    ) -> Distribution | None:
+        """Find distribution best matching `req` and usable on `working_set`
+
+        This calls the ``find(req)`` method of the `working_set` to see if a
+        suitable distribution is already active.  (This may raise
+        ``VersionConflict`` if an unsuitable version of the project is already
+        active in the specified `working_set`.)  If a suitable distribution
+        isn't active, this method returns the newest distribution in the
+        environment that meets the ``Requirement`` in `req`.  If no suitable
+        distribution is found, and `installer` is supplied, then the result of
+        calling the environment's ``obtain(req, installer)`` method will be
+        returned.
+        """
+        try:
+            dist = working_set.find(req)
+        except VersionConflict:
+            if not replace_conflicting:
+                raise
+            dist = None
+        if dist is not None:
+            return dist
+        for dist in self[req.key]:
+            if dist in req:
+                return dist
+        # try to download/install
+        return self.obtain(req, installer)
+
+    @overload
+    def obtain(
+        self,
+        requirement: Requirement,
+        installer: _InstallerTypeT[_DistributionT],
+    ) -> _DistributionT: ...
+    @overload
+    def obtain(
+        self,
+        requirement: Requirement,
+        installer: Callable[[Requirement], None] | None = None,
+    ) -> None: ...
+    @overload
+    def obtain(
+        self,
+        requirement: Requirement,
+        installer: _InstallerType | None = None,
+    ) -> Distribution | None: ...
+    def obtain(
+        self,
+        requirement: Requirement,
+        installer: Callable[[Requirement], None]
+        | _InstallerType
+        | None
+        | _InstallerTypeT[_DistributionT] = None,
+    ) -> Distribution | None:
+        """Obtain a distribution matching `requirement` (e.g. via download)
+
+        Obtain a distro that matches requirement (e.g. via download).  In the
+        base ``Environment`` class, this routine just returns
+        ``installer(requirement)``, unless `installer` is None, in which case
+        None is returned instead.  This method is a hook that allows subclasses
+        to attempt other ways of obtaining a distribution before falling back
+        to the `installer` argument."""
+        return installer(requirement) if installer else None
+
+    def __iter__(self) -> Iterator[str]:
+        """Yield the unique project names of the available distributions"""
+        for key in self._distmap.keys():
+            if self[key]:
+                yield key
+
+    def __iadd__(self, other: Distribution | Environment):
+        """In-place addition of a distribution or environment"""
+        if isinstance(other, Distribution):
+            self.add(other)
+        elif isinstance(other, Environment):
+            for project in other:
+                for dist in other[project]:
+                    self.add(dist)
+        else:
+            raise TypeError("Can't add %r to environment" % (other,))
+        return self
+
+    def __add__(self, other: Distribution | Environment):
+        """Add an environment or distribution to an environment"""
+        new = self.__class__([], platform=None, python=None)
+        for env in self, other:
+            new += env
+        return new
+
+
+# XXX backward compatibility
+AvailableDistributions = Environment
+
+
+class ExtractionError(RuntimeError):
+    """An error occurred extracting a resource
+
+    The following attributes are available from instances of this exception:
+
+    manager
+        The resource manager that raised this exception
+
+    cache_path
+        The base directory for resource extraction
+
+    original_error
+        The exception instance that caused extraction to fail
+    """
+
+    manager: ResourceManager
+    cache_path: str
+    original_error: BaseException | None
+
+
+class ResourceManager:
+    """Manage resource extraction and packages"""
+
+    extraction_path: str | None = None
+
+    def __init__(self):
+        self.cached_files = {}
+
+    def resource_exists(self, package_or_requirement: _PkgReqType, resource_name: str):
+        """Does the named resource exist?"""
+        return get_provider(package_or_requirement).has_resource(resource_name)
+
+    def resource_isdir(self, package_or_requirement: _PkgReqType, resource_name: str):
+        """Is the named resource an existing directory?"""
+        return get_provider(package_or_requirement).resource_isdir(resource_name)
+
+    def resource_filename(
+        self, package_or_requirement: _PkgReqType, resource_name: str
+    ):
+        """Return a true filesystem path for specified resource"""
+        return get_provider(package_or_requirement).get_resource_filename(
+            self, resource_name
+        )
+
+    def resource_stream(self, package_or_requirement: _PkgReqType, resource_name: str):
+        """Return a readable file-like object for specified resource"""
+        return get_provider(package_or_requirement).get_resource_stream(
+            self, resource_name
+        )
+
+    def resource_string(
+        self, package_or_requirement: _PkgReqType, resource_name: str
+    ) -> bytes:
+        """Return specified resource as :obj:`bytes`"""
+        return get_provider(package_or_requirement).get_resource_string(
+            self, resource_name
+        )
+
+    def resource_listdir(self, package_or_requirement: _PkgReqType, resource_name: str):
+        """List the contents of the named resource directory"""
+        return get_provider(package_or_requirement).resource_listdir(resource_name)
+
+    def extraction_error(self) -> NoReturn:
+        """Give an error message for problems extracting file(s)"""
+
+        old_exc = sys.exc_info()[1]
+        cache_path = self.extraction_path or get_default_cache()
+
+        tmpl = textwrap.dedent(
+            """
+            Can't extract file(s) to egg cache
+
+            The following error occurred while trying to extract file(s)
+            to the Python egg cache:
+
+              {old_exc}
+
+            The Python egg cache directory is currently set to:
+
+              {cache_path}
+
+            Perhaps your account does not have write access to this directory?
+            You can change the cache directory by setting the PYTHON_EGG_CACHE
+            environment variable to point to an accessible directory.
+            """
+        ).lstrip()
+        err = ExtractionError(tmpl.format(**locals()))
+        err.manager = self
+        err.cache_path = cache_path
+        err.original_error = old_exc
+        raise err
+
+    def get_cache_path(self, archive_name: str, names: Iterable[StrPath] = ()):
+        """Return absolute location in cache for `archive_name` and `names`
+
+        The parent directory of the resulting path will be created if it does
+        not already exist.  `archive_name` should be the base filename of the
+        enclosing egg (which may not be the name of the enclosing zipfile!),
+        including its ".egg" extension.  `names`, if provided, should be a
+        sequence of path name parts "under" the egg's extraction location.
+
+        This method should only be called by resource providers that need to
+        obtain an extraction location, and only for names they intend to
+        extract, as it tracks the generated names for possible cleanup later.
+        """
+        extract_path = self.extraction_path or get_default_cache()
+        target_path = os.path.join(extract_path, archive_name + '-tmp', *names)
+        try:
+            _bypass_ensure_directory(target_path)
+        except Exception:
+            self.extraction_error()
+
+        self._warn_unsafe_extraction_path(extract_path)
+
+        self.cached_files[target_path] = True
+        return target_path
+
+    @staticmethod
+    def _warn_unsafe_extraction_path(path):
+        """
+        If the default extraction path is overridden and set to an insecure
+        location, such as /tmp, it opens up an opportunity for an attacker to
+        replace an extracted file with an unauthorized payload. Warn the user
+        if a known insecure location is used.
+
+        See Distribute #375 for more details.
+        """
+        if os.name == 'nt' and not path.startswith(os.environ['windir']):
+            # On Windows, permissions are generally restrictive by default
+            #  and temp directories are not writable by other users, so
+            #  bypass the warning.
+            return
+        mode = os.stat(path).st_mode
+        if mode & stat.S_IWOTH or mode & stat.S_IWGRP:
+            msg = (
+                "Extraction path is writable by group/others "
+                "and vulnerable to attack when "
+                "used with get_resource_filename ({path}). "
+                "Consider a more secure "
+                "location (set with .set_extraction_path or the "
+                "PYTHON_EGG_CACHE environment variable)."
+            ).format(**locals())
+            warnings.warn(msg, UserWarning)
+
+    def postprocess(self, tempname: StrOrBytesPath, filename: StrOrBytesPath):
+        """Perform any platform-specific postprocessing of `tempname`
+
+        This is where Mac header rewrites should be done; other platforms don't
+        have anything special they should do.
+
+        Resource providers should call this method ONLY after successfully
+        extracting a compressed resource.  They must NOT call it on resources
+        that are already in the filesystem.
+
+        `tempname` is the current (temporary) name of the file, and `filename`
+        is the name it will be renamed to by the caller after this routine
+        returns.
+        """
+
+        if os.name == 'posix':
+            # Make the resource executable
+            mode = ((os.stat(tempname).st_mode) | 0o555) & 0o7777
+            os.chmod(tempname, mode)
+
+    def set_extraction_path(self, path: str):
+        """Set the base path where resources will be extracted to, if needed.
+
+        If you do not call this routine before any extractions take place, the
+        path defaults to the return value of ``get_default_cache()``.  (Which
+        is based on the ``PYTHON_EGG_CACHE`` environment variable, with various
+        platform-specific fallbacks.  See that routine's documentation for more
+        details.)
+
+        Resources are extracted to subdirectories of this path based upon
+        information given by the ``IResourceProvider``.  You may set this to a
+        temporary directory, but then you must call ``cleanup_resources()`` to
+        delete the extracted files when done.  There is no guarantee that
+        ``cleanup_resources()`` will be able to remove all extracted files.
+
+        (Note: you may not change the extraction path for a given resource
+        manager once resources have been extracted, unless you first call
+        ``cleanup_resources()``.)
+        """
+        if self.cached_files:
+            raise ValueError("Can't change extraction path, files already extracted")
+
+        self.extraction_path = path
+
+    def cleanup_resources(self, force: bool = False) -> list[str]:
+        """
+        Delete all extracted resource files and directories, returning a list
+        of the file and directory names that could not be successfully removed.
+        This function does not have any concurrency protection, so it should
+        generally only be called when the extraction path is a temporary
+        directory exclusive to a single process.  This method is not
+        automatically called; you must call it explicitly or register it as an
+        ``atexit`` function if you wish to ensure cleanup of a temporary
+        directory used for extractions.
+        """
+        # XXX
+        return []
+
+
+def get_default_cache() -> str:
+    """
+    Return the ``PYTHON_EGG_CACHE`` environment variable
+    or a platform-relevant user cache dir for an app
+    named "Python-Eggs".
+    """
+    return os.environ.get('PYTHON_EGG_CACHE') or _user_cache_dir(appname='Python-Eggs')
+
+
+def safe_name(name: str):
+    """Convert an arbitrary string to a standard distribution name
+
+    Any runs of non-alphanumeric/. characters are replaced with a single '-'.
+    """
+    return re.sub('[^A-Za-z0-9.]+', '-', name)
+
+
+def safe_version(version: str):
+    """
+    Convert an arbitrary string to a standard version string
+    """
+    try:
+        # normalize the version
+        return str(_packaging_version.Version(version))
+    except _packaging_version.InvalidVersion:
+        version = version.replace(' ', '.')
+        return re.sub('[^A-Za-z0-9.]+', '-', version)
+
+
+def _forgiving_version(version):
+    """Fallback when ``safe_version`` is not safe enough
+    >>> parse_version(_forgiving_version('0.23ubuntu1'))
+    
+    >>> parse_version(_forgiving_version('0.23-'))
+    
+    >>> parse_version(_forgiving_version('0.-_'))
+    
+    >>> parse_version(_forgiving_version('42.+?1'))
+    
+    >>> parse_version(_forgiving_version('hello world'))
+    
+    """
+    version = version.replace(' ', '.')
+    match = _PEP440_FALLBACK.search(version)
+    if match:
+        safe = match["safe"]
+        rest = version[len(safe) :]
+    else:
+        safe = "0"
+        rest = version
+    local = f"sanitized.{_safe_segment(rest)}".strip(".")
+    return f"{safe}.dev0+{local}"
+
+
+def _safe_segment(segment):
+    """Convert an arbitrary string into a safe segment"""
+    segment = re.sub('[^A-Za-z0-9.]+', '-', segment)
+    segment = re.sub('-[^A-Za-z0-9]+', '-', segment)
+    return re.sub(r'\.[^A-Za-z0-9]+', '.', segment).strip(".-")
+
+
+def safe_extra(extra: str):
+    """Convert an arbitrary string to a standard 'extra' name
+
+    Any runs of non-alphanumeric characters are replaced with a single '_',
+    and the result is always lowercased.
+    """
+    return re.sub('[^A-Za-z0-9.-]+', '_', extra).lower()
+
+
+def to_filename(name: str):
+    """Convert a project or version name to its filename-escaped form
+
+    Any '-' characters are currently replaced with '_'.
+    """
+    return name.replace('-', '_')
+
+
+def invalid_marker(text: str):
+    """
+    Validate text as a PEP 508 environment marker; return an exception
+    if invalid or False otherwise.
+    """
+    try:
+        evaluate_marker(text)
+    except SyntaxError as e:
+        e.filename = None
+        e.lineno = None
+        return e
+    return False
+
+
+def evaluate_marker(text: str, extra: str | None = None) -> bool:
+    """
+    Evaluate a PEP 508 environment marker.
+    Return a boolean indicating the marker result in this environment.
+    Raise SyntaxError if marker is invalid.
+
+    This implementation uses the 'pyparsing' module.
+    """
+    try:
+        marker = _packaging_markers.Marker(text)
+        return marker.evaluate()
+    except _packaging_markers.InvalidMarker as e:
+        raise SyntaxError(e) from e
+
+
+class NullProvider:
+    """Try to implement resources and metadata for arbitrary PEP 302 loaders"""
+
+    egg_name: str | None = None
+    egg_info: str | None = None
+    loader: _LoaderProtocol | None = None
+
+    def __init__(self, module: _ModuleLike):
+        self.loader = getattr(module, '__loader__', None)
+        self.module_path = os.path.dirname(getattr(module, '__file__', ''))
+
+    def get_resource_filename(self, manager: ResourceManager, resource_name: str):
+        return self._fn(self.module_path, resource_name)
+
+    def get_resource_stream(self, manager: ResourceManager, resource_name: str):
+        return io.BytesIO(self.get_resource_string(manager, resource_name))
+
+    def get_resource_string(
+        self, manager: ResourceManager, resource_name: str
+    ) -> bytes:
+        return self._get(self._fn(self.module_path, resource_name))
+
+    def has_resource(self, resource_name: str):
+        return self._has(self._fn(self.module_path, resource_name))
+
+    def _get_metadata_path(self, name):
+        return self._fn(self.egg_info, name)
+
+    def has_metadata(self, name: str) -> bool:
+        if not self.egg_info:
+            return False
+
+        path = self._get_metadata_path(name)
+        return self._has(path)
+
+    def get_metadata(self, name: str):
+        if not self.egg_info:
+            return ""
+        path = self._get_metadata_path(name)
+        value = self._get(path)
+        try:
+            return value.decode('utf-8')
+        except UnicodeDecodeError as exc:
+            # Include the path in the error message to simplify
+            # troubleshooting, and without changing the exception type.
+            exc.reason += ' in {} file at path: {}'.format(name, path)
+            raise
+
+    def get_metadata_lines(self, name: str) -> Iterator[str]:
+        return yield_lines(self.get_metadata(name))
+
+    def resource_isdir(self, resource_name: str):
+        return self._isdir(self._fn(self.module_path, resource_name))
+
+    def metadata_isdir(self, name: str) -> bool:
+        return bool(self.egg_info and self._isdir(self._fn(self.egg_info, name)))
+
+    def resource_listdir(self, resource_name: str):
+        return self._listdir(self._fn(self.module_path, resource_name))
+
+    def metadata_listdir(self, name: str) -> list[str]:
+        if self.egg_info:
+            return self._listdir(self._fn(self.egg_info, name))
+        return []
+
+    def run_script(self, script_name: str, namespace: dict[str, Any]):
+        script = 'scripts/' + script_name
+        if not self.has_metadata(script):
+            raise ResolutionError(
+                "Script {script!r} not found in metadata at {self.egg_info!r}".format(
+                    **locals()
+                ),
+            )
+
+        script_text = self.get_metadata(script).replace('\r\n', '\n')
+        script_text = script_text.replace('\r', '\n')
+        script_filename = self._fn(self.egg_info, script)
+        namespace['__file__'] = script_filename
+        if os.path.exists(script_filename):
+            source = _read_utf8_with_fallback(script_filename)
+            code = compile(source, script_filename, 'exec')
+            exec(code, namespace, namespace)
+        else:
+            from linecache import cache
+
+            cache[script_filename] = (
+                len(script_text),
+                0,
+                script_text.split('\n'),
+                script_filename,
+            )
+            script_code = compile(script_text, script_filename, 'exec')
+            exec(script_code, namespace, namespace)
+
+    def _has(self, path) -> bool:
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _isdir(self, path) -> bool:
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _listdir(self, path) -> list[str]:
+        raise NotImplementedError(
+            "Can't perform this operation for unregistered loader type"
+        )
+
+    def _fn(self, base: str | None, resource_name: str):
+        if base is None:
+            raise TypeError(
+                "`base` parameter in `_fn` is `None`. Either override this method or check the parameter first."
+            )
+        self._validate_resource_path(resource_name)
+        if resource_name:
+            return os.path.join(base, *resource_name.split('/'))
+        return base
+
+    @staticmethod
+    def _validate_resource_path(path):
+        """
+        Validate the resource paths according to the docs.
+        https://setuptools.pypa.io/en/latest/pkg_resources.html#basic-resource-access
+
+        >>> warned = getfixture('recwarn')
+        >>> warnings.simplefilter('always')
+        >>> vrp = NullProvider._validate_resource_path
+        >>> vrp('foo/bar.txt')
+        >>> bool(warned)
+        False
+        >>> vrp('../foo/bar.txt')
+        >>> bool(warned)
+        True
+        >>> warned.clear()
+        >>> vrp('/foo/bar.txt')
+        >>> bool(warned)
+        True
+        >>> vrp('foo/../../bar.txt')
+        >>> bool(warned)
+        True
+        >>> warned.clear()
+        >>> vrp('foo/f../bar.txt')
+        >>> bool(warned)
+        False
+
+        Windows path separators are straight-up disallowed.
+        >>> vrp(r'\\foo/bar.txt')
+        Traceback (most recent call last):
+        ...
+        ValueError: Use of .. or absolute path in a resource path \
+is not allowed.
+
+        >>> vrp(r'C:\\foo/bar.txt')
+        Traceback (most recent call last):
+        ...
+        ValueError: Use of .. or absolute path in a resource path \
+is not allowed.
+
+        Blank values are allowed
+
+        >>> vrp('')
+        >>> bool(warned)
+        False
+
+        Non-string values are not.
+
+        >>> vrp(None)
+        Traceback (most recent call last):
+        ...
+        AttributeError: ...
+        """
+        invalid = (
+            os.path.pardir in path.split(posixpath.sep)
+            or posixpath.isabs(path)
+            or ntpath.isabs(path)
+            or path.startswith("\\")
+        )
+        if not invalid:
+            return
+
+        msg = "Use of .. or absolute path in a resource path is not allowed."
+
+        # Aggressively disallow Windows absolute paths
+        if (path.startswith("\\") or ntpath.isabs(path)) and not posixpath.isabs(path):
+            raise ValueError(msg)
+
+        # for compatibility, warn; in future
+        # raise ValueError(msg)
+        issue_warning(
+            msg[:-1] + " and will raise exceptions in a future release.",
+            DeprecationWarning,
+        )
+
+    def _get(self, path) -> bytes:
+        if hasattr(self.loader, 'get_data') and self.loader:
+            # Already checked get_data exists
+            return self.loader.get_data(path)  # type: ignore[attr-defined]
+        raise NotImplementedError(
+            "Can't perform this operation for loaders without 'get_data()'"
+        )
+
+
+register_loader_type(object, NullProvider)
+
+
+def _parents(path):
+    """
+    yield all parents of path including path
+    """
+    last = None
+    while path != last:
+        yield path
+        last = path
+        path, _ = os.path.split(path)
+
+
+class EggProvider(NullProvider):
+    """Provider based on a virtual filesystem"""
+
+    def __init__(self, module: _ModuleLike):
+        super().__init__(module)
+        self._setup_prefix()
+
+    def _setup_prefix(self):
+        # Assume that metadata may be nested inside a "basket"
+        # of multiple eggs and use module_path instead of .archive.
+        eggs = filter(_is_egg_path, _parents(self.module_path))
+        egg = next(eggs, None)
+        egg and self._set_egg(egg)
+
+    def _set_egg(self, path: str):
+        self.egg_name = os.path.basename(path)
+        self.egg_info = os.path.join(path, 'EGG-INFO')
+        self.egg_root = path
+
+
+class DefaultProvider(EggProvider):
+    """Provides access to package resources in the filesystem"""
+
+    def _has(self, path) -> bool:
+        return os.path.exists(path)
+
+    def _isdir(self, path) -> bool:
+        return os.path.isdir(path)
+
+    def _listdir(self, path):
+        return os.listdir(path)
+
+    def get_resource_stream(self, manager: object, resource_name: str):
+        return open(self._fn(self.module_path, resource_name), 'rb')
+
+    def _get(self, path) -> bytes:
+        with open(path, 'rb') as stream:
+            return stream.read()
+
+    @classmethod
+    def _register(cls):
+        loader_names = (
+            'SourceFileLoader',
+            'SourcelessFileLoader',
+        )
+        for name in loader_names:
+            loader_cls = getattr(importlib.machinery, name, type(None))
+            register_loader_type(loader_cls, cls)
+
+
+DefaultProvider._register()
+
+
+class EmptyProvider(NullProvider):
+    """Provider that returns nothing for all requests"""
+
+    # A special case, we don't want all Providers inheriting from NullProvider to have a potentially None module_path
+    module_path: str | None = None  # type: ignore[assignment]
+
+    _isdir = _has = lambda self, path: False
+
+    def _get(self, path) -> bytes:
+        return b''
+
+    def _listdir(self, path):
+        return []
+
+    def __init__(self):
+        pass
+
+
+empty_provider = EmptyProvider()
+
+
+class ZipManifests(Dict[str, "MemoizedZipManifests.manifest_mod"]):
+    """
+    zip manifest builder
+    """
+
+    # `path` could be `StrPath | IO[bytes]` but that violates the LSP for `MemoizedZipManifests.load`
+    @classmethod
+    def build(cls, path: str):
+        """
+        Build a dictionary similar to the zipimport directory
+        caches, except instead of tuples, store ZipInfo objects.
+
+        Use a platform-specific path separator (os.sep) for the path keys
+        for compatibility with pypy on Windows.
+        """
+        with zipfile.ZipFile(path) as zfile:
+            items = (
+                (
+                    name.replace('/', os.sep),
+                    zfile.getinfo(name),
+                )
+                for name in zfile.namelist()
+            )
+            return dict(items)
+
+    load = build
+
+
+class MemoizedZipManifests(ZipManifests):
+    """
+    Memoized zipfile manifests.
+    """
+
+    class manifest_mod(NamedTuple):
+        manifest: dict[str, zipfile.ZipInfo]
+        mtime: float
+
+    def load(self, path: str) -> dict[str, zipfile.ZipInfo]:  # type: ignore[override] # ZipManifests.load is a classmethod
+        """
+        Load a manifest at path or return a suitable manifest already loaded.
+        """
+        path = os.path.normpath(path)
+        mtime = os.stat(path).st_mtime
+
+        if path not in self or self[path].mtime != mtime:
+            manifest = self.build(path)
+            self[path] = self.manifest_mod(manifest, mtime)
+
+        return self[path].manifest
+
+
+class ZipProvider(EggProvider):
+    """Resource support for zips and eggs"""
+
+    eagers: list[str] | None = None
+    _zip_manifests = MemoizedZipManifests()
+    # ZipProvider's loader should always be a zipimporter or equivalent
+    loader: zipimport.zipimporter
+
+    def __init__(self, module: _ZipLoaderModule):
+        super().__init__(module)
+        self.zip_pre = self.loader.archive + os.sep
+
+    def _zipinfo_name(self, fspath):
+        # Convert a virtual filename (full path to file) into a zipfile subpath
+        # usable with the zipimport directory cache for our target archive
+        fspath = fspath.rstrip(os.sep)
+        if fspath == self.loader.archive:
+            return ''
+        if fspath.startswith(self.zip_pre):
+            return fspath[len(self.zip_pre) :]
+        raise AssertionError("%s is not a subpath of %s" % (fspath, self.zip_pre))
+
+    def _parts(self, zip_path):
+        # Convert a zipfile subpath into an egg-relative path part list.
+        # pseudo-fs path
+        fspath = self.zip_pre + zip_path
+        if fspath.startswith(self.egg_root + os.sep):
+            return fspath[len(self.egg_root) + 1 :].split(os.sep)
+        raise AssertionError("%s is not a subpath of %s" % (fspath, self.egg_root))
+
+    @property
+    def zipinfo(self):
+        return self._zip_manifests.load(self.loader.archive)
+
+    def get_resource_filename(self, manager: ResourceManager, resource_name: str):
+        if not self.egg_name:
+            raise NotImplementedError(
+                "resource_filename() only supported for .egg, not .zip"
+            )
+        # no need to lock for extraction, since we use temp names
+        zip_path = self._resource_to_zip(resource_name)
+        eagers = self._get_eager_resources()
+        if '/'.join(self._parts(zip_path)) in eagers:
+            for name in eagers:
+                self._extract_resource(manager, self._eager_to_zip(name))
+        return self._extract_resource(manager, zip_path)
+
+    @staticmethod
+    def _get_date_and_size(zip_stat):
+        size = zip_stat.file_size
+        # ymdhms+wday, yday, dst
+        date_time = zip_stat.date_time + (0, 0, -1)
+        # 1980 offset already done
+        timestamp = time.mktime(date_time)
+        return timestamp, size
+
+    # FIXME: 'ZipProvider._extract_resource' is too complex (12)
+    def _extract_resource(self, manager: ResourceManager, zip_path) -> str:  # noqa: C901
+        if zip_path in self._index():
+            for name in self._index()[zip_path]:
+                last = self._extract_resource(manager, os.path.join(zip_path, name))
+            # return the extracted directory name
+            return os.path.dirname(last)
+
+        timestamp, size = self._get_date_and_size(self.zipinfo[zip_path])
+
+        if not WRITE_SUPPORT:
+            raise OSError(
+                '"os.rename" and "os.unlink" are not supported on this platform'
+            )
+        try:
+            if not self.egg_name:
+                raise OSError(
+                    '"egg_name" is empty. This likely means no egg could be found from the "module_path".'
+                )
+            real_path = manager.get_cache_path(self.egg_name, self._parts(zip_path))
+
+            if self._is_current(real_path, zip_path):
+                return real_path
+
+            outf, tmpnam = _mkstemp(
+                ".$extract",
+                dir=os.path.dirname(real_path),
+            )
+            os.write(outf, self.loader.get_data(zip_path))
+            os.close(outf)
+            utime(tmpnam, (timestamp, timestamp))
+            manager.postprocess(tmpnam, real_path)
+
+            try:
+                rename(tmpnam, real_path)
+
+            except OSError:
+                if os.path.isfile(real_path):
+                    if self._is_current(real_path, zip_path):
+                        # the file became current since it was checked above,
+                        #  so proceed.
+                        return real_path
+                    # Windows, del old file and retry
+                    elif os.name == 'nt':
+                        unlink(real_path)
+                        rename(tmpnam, real_path)
+                        return real_path
+                raise
+
+        except OSError:
+            # report a user-friendly error
+            manager.extraction_error()
+
+        return real_path
+
+    def _is_current(self, file_path, zip_path):
+        """
+        Return True if the file_path is current for this zip_path
+        """
+        timestamp, size = self._get_date_and_size(self.zipinfo[zip_path])
+        if not os.path.isfile(file_path):
+            return False
+        stat = os.stat(file_path)
+        if stat.st_size != size or stat.st_mtime != timestamp:
+            return False
+        # check that the contents match
+        zip_contents = self.loader.get_data(zip_path)
+        with open(file_path, 'rb') as f:
+            file_contents = f.read()
+        return zip_contents == file_contents
+
+    def _get_eager_resources(self):
+        if self.eagers is None:
+            eagers = []
+            for name in ('native_libs.txt', 'eager_resources.txt'):
+                if self.has_metadata(name):
+                    eagers.extend(self.get_metadata_lines(name))
+            self.eagers = eagers
+        return self.eagers
+
+    def _index(self):
+        try:
+            return self._dirindex
+        except AttributeError:
+            ind = {}
+            for path in self.zipinfo:
+                parts = path.split(os.sep)
+                while parts:
+                    parent = os.sep.join(parts[:-1])
+                    if parent in ind:
+                        ind[parent].append(parts[-1])
+                        break
+                    else:
+                        ind[parent] = [parts.pop()]
+            self._dirindex = ind
+            return ind
+
+    def _has(self, fspath) -> bool:
+        zip_path = self._zipinfo_name(fspath)
+        return zip_path in self.zipinfo or zip_path in self._index()
+
+    def _isdir(self, fspath) -> bool:
+        return self._zipinfo_name(fspath) in self._index()
+
+    def _listdir(self, fspath):
+        return list(self._index().get(self._zipinfo_name(fspath), ()))
+
+    def _eager_to_zip(self, resource_name: str):
+        return self._zipinfo_name(self._fn(self.egg_root, resource_name))
+
+    def _resource_to_zip(self, resource_name: str):
+        return self._zipinfo_name(self._fn(self.module_path, resource_name))
+
+
+register_loader_type(zipimport.zipimporter, ZipProvider)
+
+
+class FileMetadata(EmptyProvider):
+    """Metadata handler for standalone PKG-INFO files
+
+    Usage::
+
+        metadata = FileMetadata("/path/to/PKG-INFO")
+
+    This provider rejects all data and metadata requests except for PKG-INFO,
+    which is treated as existing, and will be the contents of the file at
+    the provided location.
+    """
+
+    def __init__(self, path: StrPath):
+        self.path = path
+
+    def _get_metadata_path(self, name):
+        return self.path
+
+    def has_metadata(self, name: str) -> bool:
+        return name == 'PKG-INFO' and os.path.isfile(self.path)
+
+    def get_metadata(self, name: str):
+        if name != 'PKG-INFO':
+            raise KeyError("No metadata except PKG-INFO is available")
+
+        with open(self.path, encoding='utf-8', errors="replace") as f:
+            metadata = f.read()
+        self._warn_on_replacement(metadata)
+        return metadata
+
+    def _warn_on_replacement(self, metadata):
+        replacement_char = '�'
+        if replacement_char in metadata:
+            tmpl = "{self.path} could not be properly decoded in UTF-8"
+            msg = tmpl.format(**locals())
+            warnings.warn(msg)
+
+    def get_metadata_lines(self, name: str) -> Iterator[str]:
+        return yield_lines(self.get_metadata(name))
+
+
+class PathMetadata(DefaultProvider):
+    """Metadata provider for egg directories
+
+    Usage::
+
+        # Development eggs:
+
+        egg_info = "/path/to/PackageName.egg-info"
+        base_dir = os.path.dirname(egg_info)
+        metadata = PathMetadata(base_dir, egg_info)
+        dist_name = os.path.splitext(os.path.basename(egg_info))[0]
+        dist = Distribution(basedir, project_name=dist_name, metadata=metadata)
+
+        # Unpacked egg directories:
+
+        egg_path = "/path/to/PackageName-ver-pyver-etc.egg"
+        metadata = PathMetadata(egg_path, os.path.join(egg_path,'EGG-INFO'))
+        dist = Distribution.from_filename(egg_path, metadata=metadata)
+    """
+
+    def __init__(self, path: str, egg_info: str):
+        self.module_path = path
+        self.egg_info = egg_info
+
+
+class EggMetadata(ZipProvider):
+    """Metadata provider for .egg files"""
+
+    def __init__(self, importer: zipimport.zipimporter):
+        """Create a metadata provider from a zipimporter"""
+
+        self.zip_pre = importer.archive + os.sep
+        self.loader = importer
+        if importer.prefix:
+            self.module_path = os.path.join(importer.archive, importer.prefix)
+        else:
+            self.module_path = importer.archive
+        self._setup_prefix()
+
+
+_distribution_finders: dict[type, _DistFinderType[Any]] = _declare_state(
+    'dict', '_distribution_finders', {}
+)
+
+
+def register_finder(importer_type: type[_T], distribution_finder: _DistFinderType[_T]):
+    """Register `distribution_finder` to find distributions in sys.path items
+
+    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
+    handler), and `distribution_finder` is a callable that, passed a path
+    item and the importer instance, yields ``Distribution`` instances found on
+    that path item.  See ``pkg_resources.find_on_path`` for an example."""
+    _distribution_finders[importer_type] = distribution_finder
+
+
+def find_distributions(path_item: str, only: bool = False):
+    """Yield distributions accessible via `path_item`"""
+    importer = get_importer(path_item)
+    finder = _find_adapter(_distribution_finders, importer)
+    return finder(importer, path_item, only)
+
+
+def find_eggs_in_zip(
+    importer: zipimport.zipimporter, path_item: str, only: bool = False
+) -> Iterator[Distribution]:
+    """
+    Find eggs in zip files; possibly multiple nested eggs.
+    """
+    if importer.archive.endswith('.whl'):
+        # wheels are not supported with this finder
+        # they don't have PKG-INFO metadata, and won't ever contain eggs
+        return
+    metadata = EggMetadata(importer)
+    if metadata.has_metadata('PKG-INFO'):
+        yield Distribution.from_filename(path_item, metadata=metadata)
+    if only:
+        # don't yield nested distros
+        return
+    for subitem in metadata.resource_listdir(''):
+        if _is_egg_path(subitem):
+            subpath = os.path.join(path_item, subitem)
+            dists = find_eggs_in_zip(zipimport.zipimporter(subpath), subpath)
+            yield from dists
+        elif subitem.lower().endswith(('.dist-info', '.egg-info')):
+            subpath = os.path.join(path_item, subitem)
+            submeta = EggMetadata(zipimport.zipimporter(subpath))
+            submeta.egg_info = subpath
+            yield Distribution.from_location(path_item, subitem, submeta)
+
+
+register_finder(zipimport.zipimporter, find_eggs_in_zip)
+
+
+def find_nothing(
+    importer: object | None, path_item: str | None, only: bool | None = False
+):
+    return ()
+
+
+register_finder(object, find_nothing)
+
+
+def find_on_path(importer: object | None, path_item, only=False):
+    """Yield distributions accessible on a sys.path directory"""
+    path_item = _normalize_cached(path_item)
+
+    if _is_unpacked_egg(path_item):
+        yield Distribution.from_filename(
+            path_item,
+            metadata=PathMetadata(path_item, os.path.join(path_item, 'EGG-INFO')),
+        )
+        return
+
+    entries = (os.path.join(path_item, child) for child in safe_listdir(path_item))
+
+    # scan for .egg and .egg-info in directory
+    for entry in sorted(entries):
+        fullpath = os.path.join(path_item, entry)
+        factory = dist_factory(path_item, entry, only)
+        yield from factory(fullpath)
+
+
+def dist_factory(path_item, entry, only):
+    """Return a dist_factory for the given entry."""
+    lower = entry.lower()
+    is_egg_info = lower.endswith('.egg-info')
+    is_dist_info = lower.endswith('.dist-info') and os.path.isdir(
+        os.path.join(path_item, entry)
+    )
+    is_meta = is_egg_info or is_dist_info
+    return (
+        distributions_from_metadata
+        if is_meta
+        else find_distributions
+        if not only and _is_egg_path(entry)
+        else resolve_egg_link
+        if not only and lower.endswith('.egg-link')
+        else NoDists()
+    )
+
+
+class NoDists:
+    """
+    >>> bool(NoDists())
+    False
+
+    >>> list(NoDists()('anything'))
+    []
+    """
+
+    def __bool__(self):
+        return False
+
+    def __call__(self, fullpath):
+        return iter(())
+
+
+def safe_listdir(path: StrOrBytesPath):
+    """
+    Attempt to list contents of path, but suppress some exceptions.
+    """
+    try:
+        return os.listdir(path)
+    except (PermissionError, NotADirectoryError):
+        pass
+    except OSError as e:
+        # Ignore the directory if does not exist, not a directory or
+        # permission denied
+        if e.errno not in (errno.ENOTDIR, errno.EACCES, errno.ENOENT):
+            raise
+    return ()
+
+
+def distributions_from_metadata(path: str):
+    root = os.path.dirname(path)
+    if os.path.isdir(path):
+        if len(os.listdir(path)) == 0:
+            # empty metadata dir; skip
+            return
+        metadata: _MetadataType = PathMetadata(root, path)
+    else:
+        metadata = FileMetadata(path)
+    entry = os.path.basename(path)
+    yield Distribution.from_location(
+        root,
+        entry,
+        metadata,
+        precedence=DEVELOP_DIST,
+    )
+
+
+def non_empty_lines(path):
+    """
+    Yield non-empty lines from file at path
+    """
+    for line in _read_utf8_with_fallback(path).splitlines():
+        line = line.strip()
+        if line:
+            yield line
+
+
+def resolve_egg_link(path):
+    """
+    Given a path to an .egg-link, resolve distributions
+    present in the referenced path.
+    """
+    referenced_paths = non_empty_lines(path)
+    resolved_paths = (
+        os.path.join(os.path.dirname(path), ref) for ref in referenced_paths
+    )
+    dist_groups = map(find_distributions, resolved_paths)
+    return next(dist_groups, ())
+
+
+if hasattr(pkgutil, 'ImpImporter'):
+    register_finder(pkgutil.ImpImporter, find_on_path)
+
+register_finder(importlib.machinery.FileFinder, find_on_path)
+
+_namespace_handlers: dict[type, _NSHandlerType[Any]] = _declare_state(
+    'dict', '_namespace_handlers', {}
+)
+_namespace_packages: dict[str | None, list[str]] = _declare_state(
+    'dict', '_namespace_packages', {}
+)
+
+
+def register_namespace_handler(
+    importer_type: type[_T], namespace_handler: _NSHandlerType[_T]
+):
+    """Register `namespace_handler` to declare namespace packages
+
+    `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
+    handler), and `namespace_handler` is a callable like this::
+
+        def namespace_handler(importer, path_entry, moduleName, module):
+            # return a path_entry to use for child packages
+
+    Namespace handlers are only called if the importer object has already
+    agreed that it can handle the relevant path item, and they should only
+    return a subpath if the module __path__ does not already contain an
+    equivalent subpath.  For an example namespace handler, see
+    ``pkg_resources.file_ns_handler``.
+    """
+    _namespace_handlers[importer_type] = namespace_handler
+
+
+def _handle_ns(packageName, path_item):
+    """Ensure that named package includes a subpath of path_item (if needed)"""
+
+    importer = get_importer(path_item)
+    if importer is None:
+        return None
+
+    # use find_spec (PEP 451) and fall-back to find_module (PEP 302)
+    try:
+        spec = importer.find_spec(packageName)
+    except AttributeError:
+        # capture warnings due to #1111
+        with warnings.catch_warnings():
+            warnings.simplefilter("ignore")
+            loader = importer.find_module(packageName)
+    else:
+        loader = spec.loader if spec else None
+
+    if loader is None:
+        return None
+    module = sys.modules.get(packageName)
+    if module is None:
+        module = sys.modules[packageName] = types.ModuleType(packageName)
+        module.__path__ = []
+        _set_parent_ns(packageName)
+    elif not hasattr(module, '__path__'):
+        raise TypeError("Not a package:", packageName)
+    handler = _find_adapter(_namespace_handlers, importer)
+    subpath = handler(importer, path_item, packageName, module)
+    if subpath is not None:
+        path = module.__path__
+        path.append(subpath)
+        importlib.import_module(packageName)
+        _rebuild_mod_path(path, packageName, module)
+    return subpath
+
+
+def _rebuild_mod_path(orig_path, package_name, module: types.ModuleType):
+    """
+    Rebuild module.__path__ ensuring that all entries are ordered
+    corresponding to their sys.path order
+    """
+    sys_path = [_normalize_cached(p) for p in sys.path]
+
+    def safe_sys_path_index(entry):
+        """
+        Workaround for #520 and #513.
+        """
+        try:
+            return sys_path.index(entry)
+        except ValueError:
+            return float('inf')
+
+    def position_in_sys_path(path):
+        """
+        Return the ordinal of the path based on its position in sys.path
+        """
+        path_parts = path.split(os.sep)
+        module_parts = package_name.count('.') + 1
+        parts = path_parts[:-module_parts]
+        return safe_sys_path_index(_normalize_cached(os.sep.join(parts)))
+
+    new_path = sorted(orig_path, key=position_in_sys_path)
+    new_path = [_normalize_cached(p) for p in new_path]
+
+    if isinstance(module.__path__, list):
+        module.__path__[:] = new_path
+    else:
+        module.__path__ = new_path
+
+
+def declare_namespace(packageName: str):
+    """Declare that package 'packageName' is a namespace package"""
+
+    msg = (
+        f"Deprecated call to `pkg_resources.declare_namespace({packageName!r})`.\n"
+        "Implementing implicit namespace packages (as specified in PEP 420) "
+        "is preferred to `pkg_resources.declare_namespace`. "
+        "See https://setuptools.pypa.io/en/latest/references/"
+        "keywords.html#keyword-namespace-packages"
+    )
+    warnings.warn(msg, DeprecationWarning, stacklevel=2)
+
+    _imp.acquire_lock()
+    try:
+        if packageName in _namespace_packages:
+            return
+
+        path: MutableSequence[str] = sys.path
+        parent, _, _ = packageName.rpartition('.')
+
+        if parent:
+            declare_namespace(parent)
+            if parent not in _namespace_packages:
+                __import__(parent)
+            try:
+                path = sys.modules[parent].__path__
+            except AttributeError as e:
+                raise TypeError("Not a package:", parent) from e
+
+        # Track what packages are namespaces, so when new path items are added,
+        # they can be updated
+        _namespace_packages.setdefault(parent or None, []).append(packageName)
+        _namespace_packages.setdefault(packageName, [])
+
+        for path_item in path:
+            # Ensure all the parent's path items are reflected in the child,
+            # if they apply
+            _handle_ns(packageName, path_item)
+
+    finally:
+        _imp.release_lock()
+
+
+def fixup_namespace_packages(path_item: str, parent: str | None = None):
+    """Ensure that previously-declared namespace packages include path_item"""
+    _imp.acquire_lock()
+    try:
+        for package in _namespace_packages.get(parent, ()):
+            subpath = _handle_ns(package, path_item)
+            if subpath:
+                fixup_namespace_packages(subpath, package)
+    finally:
+        _imp.release_lock()
+
+
+def file_ns_handler(
+    importer: object,
+    path_item: StrPath,
+    packageName: str,
+    module: types.ModuleType,
+):
+    """Compute an ns-package subpath for a filesystem or zipfile importer"""
+
+    subpath = os.path.join(path_item, packageName.split('.')[-1])
+    normalized = _normalize_cached(subpath)
+    for item in module.__path__:
+        if _normalize_cached(item) == normalized:
+            break
+    else:
+        # Only return the path if it's not already there
+        return subpath
+
+
+if hasattr(pkgutil, 'ImpImporter'):
+    register_namespace_handler(pkgutil.ImpImporter, file_ns_handler)
+
+register_namespace_handler(zipimport.zipimporter, file_ns_handler)
+register_namespace_handler(importlib.machinery.FileFinder, file_ns_handler)
+
+
+def null_ns_handler(
+    importer: object,
+    path_item: str | None,
+    packageName: str | None,
+    module: _ModuleLike | None,
+):
+    return None
+
+
+register_namespace_handler(object, null_ns_handler)
+
+
+@overload
+def normalize_path(filename: StrPath) -> str: ...
+@overload
+def normalize_path(filename: BytesPath) -> bytes: ...
+def normalize_path(filename: StrOrBytesPath):
+    """Normalize a file/dir name for comparison purposes"""
+    return os.path.normcase(os.path.realpath(os.path.normpath(_cygwin_patch(filename))))
+
+
+def _cygwin_patch(filename: StrOrBytesPath):  # pragma: nocover
+    """
+    Contrary to POSIX 2008, on Cygwin, getcwd (3) contains
+    symlink components. Using
+    os.path.abspath() works around this limitation. A fix in os.getcwd()
+    would probably better, in Cygwin even more so, except
+    that this seems to be by design...
+    """
+    return os.path.abspath(filename) if sys.platform == 'cygwin' else filename
+
+
+if TYPE_CHECKING:
+    # https://github.com/python/mypy/issues/16261
+    # https://github.com/python/typeshed/issues/6347
+    @overload
+    def _normalize_cached(filename: StrPath) -> str: ...
+    @overload
+    def _normalize_cached(filename: BytesPath) -> bytes: ...
+    def _normalize_cached(filename: StrOrBytesPath) -> str | bytes: ...
+else:
+
+    @functools.lru_cache(maxsize=None)
+    def _normalize_cached(filename):
+        return normalize_path(filename)
+
+
+def _is_egg_path(path):
+    """
+    Determine if given path appears to be an egg.
+    """
+    return _is_zip_egg(path) or _is_unpacked_egg(path)
+
+
+def _is_zip_egg(path):
+    return (
+        path.lower().endswith('.egg')
+        and os.path.isfile(path)
+        and zipfile.is_zipfile(path)
+    )
+
+
+def _is_unpacked_egg(path):
+    """
+    Determine if given path appears to be an unpacked egg.
+    """
+    return path.lower().endswith('.egg') and os.path.isfile(
+        os.path.join(path, 'EGG-INFO', 'PKG-INFO')
+    )
+
+
+def _set_parent_ns(packageName):
+    parts = packageName.split('.')
+    name = parts.pop()
+    if parts:
+        parent = '.'.join(parts)
+        setattr(sys.modules[parent], name, sys.modules[packageName])
+
+
+MODULE = re.compile(r"\w+(\.\w+)*$").match
+EGG_NAME = re.compile(
+    r"""
+    (?P[^-]+) (
+        -(?P[^-]+) (
+            -py(?P[^-]+) (
+                -(?P.+)
+            )?
+        )?
+    )?
+    """,
+    re.VERBOSE | re.IGNORECASE,
+).match
+
+
+class EntryPoint:
+    """Object representing an advertised importable object"""
+
+    def __init__(
+        self,
+        name: str,
+        module_name: str,
+        attrs: Iterable[str] = (),
+        extras: Iterable[str] = (),
+        dist: Distribution | None = None,
+    ):
+        if not MODULE(module_name):
+            raise ValueError("Invalid module name", module_name)
+        self.name = name
+        self.module_name = module_name
+        self.attrs = tuple(attrs)
+        self.extras = tuple(extras)
+        self.dist = dist
+
+    def __str__(self):
+        s = "%s = %s" % (self.name, self.module_name)
+        if self.attrs:
+            s += ':' + '.'.join(self.attrs)
+        if self.extras:
+            s += ' [%s]' % ','.join(self.extras)
+        return s
+
+    def __repr__(self):
+        return "EntryPoint.parse(%r)" % str(self)
+
+    @overload
+    def load(
+        self,
+        require: Literal[True] = True,
+        env: Environment | None = None,
+        installer: _InstallerType | None = None,
+    ) -> _ResolvedEntryPoint: ...
+    @overload
+    def load(
+        self,
+        require: Literal[False],
+        *args: Any,
+        **kwargs: Any,
+    ) -> _ResolvedEntryPoint: ...
+    def load(
+        self,
+        require: bool = True,
+        *args: Environment | _InstallerType | None,
+        **kwargs: Environment | _InstallerType | None,
+    ) -> _ResolvedEntryPoint:
+        """
+        Require packages for this EntryPoint, then resolve it.
+        """
+        if not require or args or kwargs:
+            warnings.warn(
+                "Parameters to load are deprecated.  Call .resolve and "
+                ".require separately.",
+                PkgResourcesDeprecationWarning,
+                stacklevel=2,
+            )
+        if require:
+            # We could pass `env` and `installer` directly,
+            # but keeping `*args` and `**kwargs` for backwards compatibility
+            self.require(*args, **kwargs)  # type: ignore
+        return self.resolve()
+
+    def resolve(self) -> _ResolvedEntryPoint:
+        """
+        Resolve the entry point from its module and attrs.
+        """
+        module = __import__(self.module_name, fromlist=['__name__'], level=0)
+        try:
+            return functools.reduce(getattr, self.attrs, module)
+        except AttributeError as exc:
+            raise ImportError(str(exc)) from exc
+
+    def require(
+        self,
+        env: Environment | None = None,
+        installer: _InstallerType | None = None,
+    ):
+        if not self.dist:
+            error_cls = UnknownExtra if self.extras else AttributeError
+            raise error_cls("Can't require() without a distribution", self)
+
+        # Get the requirements for this entry point with all its extras and
+        # then resolve them. We have to pass `extras` along when resolving so
+        # that the working set knows what extras we want. Otherwise, for
+        # dist-info distributions, the working set will assume that the
+        # requirements for that extra are purely optional and skip over them.
+        reqs = self.dist.requires(self.extras)
+        items = working_set.resolve(reqs, env, installer, extras=self.extras)
+        list(map(working_set.add, items))
+
+    pattern = re.compile(
+        r'\s*'
+        r'(?P.+?)\s*'
+        r'=\s*'
+        r'(?P[\w.]+)\s*'
+        r'(:\s*(?P[\w.]+))?\s*'
+        r'(?P\[.*\])?\s*$'
+    )
+
+    @classmethod
+    def parse(cls, src: str, dist: Distribution | None = None):
+        """Parse a single entry point from string `src`
+
+        Entry point syntax follows the form::
+
+            name = some.module:some.attr [extra1, extra2]
+
+        The entry name and module name are required, but the ``:attrs`` and
+        ``[extras]`` parts are optional
+        """
+        m = cls.pattern.match(src)
+        if not m:
+            msg = "EntryPoint must be in 'name=module:attrs [extras]' format"
+            raise ValueError(msg, src)
+        res = m.groupdict()
+        extras = cls._parse_extras(res['extras'])
+        attrs = res['attr'].split('.') if res['attr'] else ()
+        return cls(res['name'], res['module'], attrs, extras, dist)
+
+    @classmethod
+    def _parse_extras(cls, extras_spec):
+        if not extras_spec:
+            return ()
+        req = Requirement.parse('x' + extras_spec)
+        if req.specs:
+            raise ValueError
+        return req.extras
+
+    @classmethod
+    def parse_group(
+        cls,
+        group: str,
+        lines: _NestedStr,
+        dist: Distribution | None = None,
+    ):
+        """Parse an entry point group"""
+        if not MODULE(group):
+            raise ValueError("Invalid group name", group)
+        this: dict[str, Self] = {}
+        for line in yield_lines(lines):
+            ep = cls.parse(line, dist)
+            if ep.name in this:
+                raise ValueError("Duplicate entry point", group, ep.name)
+            this[ep.name] = ep
+        return this
+
+    @classmethod
+    def parse_map(
+        cls,
+        data: str | Iterable[str] | dict[str, str | Iterable[str]],
+        dist: Distribution | None = None,
+    ):
+        """Parse a map of entry point groups"""
+        _data: Iterable[tuple[str | None, str | Iterable[str]]]
+        if isinstance(data, dict):
+            _data = data.items()
+        else:
+            _data = split_sections(data)
+        maps: dict[str, dict[str, Self]] = {}
+        for group, lines in _data:
+            if group is None:
+                if not lines:
+                    continue
+                raise ValueError("Entry points must be listed in groups")
+            group = group.strip()
+            if group in maps:
+                raise ValueError("Duplicate group name", group)
+            maps[group] = cls.parse_group(group, lines, dist)
+        return maps
+
+
+def _version_from_file(lines):
+    """
+    Given an iterable of lines from a Metadata file, return
+    the value of the Version field, if present, or None otherwise.
+    """
+
+    def is_version_line(line):
+        return line.lower().startswith('version:')
+
+    version_lines = filter(is_version_line, lines)
+    line = next(iter(version_lines), '')
+    _, _, value = line.partition(':')
+    return safe_version(value.strip()) or None
+
+
+class Distribution:
+    """Wrap an actual or potential sys.path entry w/metadata"""
+
+    PKG_INFO = 'PKG-INFO'
+
+    def __init__(
+        self,
+        location: str | None = None,
+        metadata: _MetadataType = None,
+        project_name: str | None = None,
+        version: str | None = None,
+        py_version: str | None = PY_MAJOR,
+        platform: str | None = None,
+        precedence: int = EGG_DIST,
+    ):
+        self.project_name = safe_name(project_name or 'Unknown')
+        if version is not None:
+            self._version = safe_version(version)
+        self.py_version = py_version
+        self.platform = platform
+        self.location = location
+        self.precedence = precedence
+        self._provider = metadata or empty_provider
+
+    @classmethod
+    def from_location(
+        cls,
+        location: str,
+        basename: StrPath,
+        metadata: _MetadataType = None,
+        **kw: int,  # We could set `precedence` explicitly, but keeping this as `**kw` for full backwards and subclassing compatibility
+    ) -> Distribution:
+        project_name, version, py_version, platform = [None] * 4
+        basename, ext = os.path.splitext(basename)
+        if ext.lower() in _distributionImpl:
+            cls = _distributionImpl[ext.lower()]
+
+            match = EGG_NAME(basename)
+            if match:
+                project_name, version, py_version, platform = match.group(
+                    'name', 'ver', 'pyver', 'plat'
+                )
+        return cls(
+            location,
+            metadata,
+            project_name=project_name,
+            version=version,
+            py_version=py_version,
+            platform=platform,
+            **kw,
+        )._reload_version()
+
+    def _reload_version(self):
+        return self
+
+    @property
+    def hashcmp(self):
+        return (
+            self._forgiving_parsed_version,
+            self.precedence,
+            self.key,
+            self.location,
+            self.py_version or '',
+            self.platform or '',
+        )
+
+    def __hash__(self):
+        return hash(self.hashcmp)
+
+    def __lt__(self, other: Distribution):
+        return self.hashcmp < other.hashcmp
+
+    def __le__(self, other: Distribution):
+        return self.hashcmp <= other.hashcmp
+
+    def __gt__(self, other: Distribution):
+        return self.hashcmp > other.hashcmp
+
+    def __ge__(self, other: Distribution):
+        return self.hashcmp >= other.hashcmp
+
+    def __eq__(self, other: object):
+        if not isinstance(other, self.__class__):
+            # It's not a Distribution, so they are not equal
+            return False
+        return self.hashcmp == other.hashcmp
+
+    def __ne__(self, other: object):
+        return not self == other
+
+    # These properties have to be lazy so that we don't have to load any
+    # metadata until/unless it's actually needed.  (i.e., some distributions
+    # may not know their name or version without loading PKG-INFO)
+
+    @property
+    def key(self):
+        try:
+            return self._key
+        except AttributeError:
+            self._key = key = self.project_name.lower()
+            return key
+
+    @property
+    def parsed_version(self):
+        if not hasattr(self, "_parsed_version"):
+            try:
+                self._parsed_version = parse_version(self.version)
+            except _packaging_version.InvalidVersion as ex:
+                info = f"(package: {self.project_name})"
+                if hasattr(ex, "add_note"):
+                    ex.add_note(info)  # PEP 678
+                    raise
+                raise _packaging_version.InvalidVersion(f"{str(ex)} {info}") from None
+
+        return self._parsed_version
+
+    @property
+    def _forgiving_parsed_version(self):
+        try:
+            return self.parsed_version
+        except _packaging_version.InvalidVersion as ex:
+            self._parsed_version = parse_version(_forgiving_version(self.version))
+
+            notes = "\n".join(getattr(ex, "__notes__", []))  # PEP 678
+            msg = f"""!!\n\n
+            *************************************************************************
+            {str(ex)}\n{notes}
+
+            This is a long overdue deprecation.
+            For the time being, `pkg_resources` will use `{self._parsed_version}`
+            as a replacement to avoid breaking existing environments,
+            but no future compatibility is guaranteed.
+
+            If you maintain package {self.project_name} you should implement
+            the relevant changes to adequate the project to PEP 440 immediately.
+            *************************************************************************
+            \n\n!!
+            """
+            warnings.warn(msg, DeprecationWarning)
+
+            return self._parsed_version
+
+    @property
+    def version(self):
+        try:
+            return self._version
+        except AttributeError as e:
+            version = self._get_version()
+            if version is None:
+                path = self._get_metadata_path_for_display(self.PKG_INFO)
+                msg = ("Missing 'Version:' header and/or {} file at path: {}").format(
+                    self.PKG_INFO, path
+                )
+                raise ValueError(msg, self) from e
+
+            return version
+
+    @property
+    def _dep_map(self):
+        """
+        A map of extra to its list of (direct) requirements
+        for this distribution, including the null extra.
+        """
+        try:
+            return self.__dep_map
+        except AttributeError:
+            self.__dep_map = self._filter_extras(self._build_dep_map())
+        return self.__dep_map
+
+    @staticmethod
+    def _filter_extras(dm: dict[str | None, list[Requirement]]):
+        """
+        Given a mapping of extras to dependencies, strip off
+        environment markers and filter out any dependencies
+        not matching the markers.
+        """
+        for extra in list(filter(None, dm)):
+            new_extra: str | None = extra
+            reqs = dm.pop(extra)
+            new_extra, _, marker = extra.partition(':')
+            fails_marker = marker and (
+                invalid_marker(marker) or not evaluate_marker(marker)
+            )
+            if fails_marker:
+                reqs = []
+            new_extra = safe_extra(new_extra) or None
+
+            dm.setdefault(new_extra, []).extend(reqs)
+        return dm
+
+    def _build_dep_map(self):
+        dm = {}
+        for name in 'requires.txt', 'depends.txt':
+            for extra, reqs in split_sections(self._get_metadata(name)):
+                dm.setdefault(extra, []).extend(parse_requirements(reqs))
+        return dm
+
+    def requires(self, extras: Iterable[str] = ()):
+        """List of Requirements needed for this distro if `extras` are used"""
+        dm = self._dep_map
+        deps: list[Requirement] = []
+        deps.extend(dm.get(None, ()))
+        for ext in extras:
+            try:
+                deps.extend(dm[safe_extra(ext)])
+            except KeyError as e:
+                raise UnknownExtra(
+                    "%s has no such extra feature %r" % (self, ext)
+                ) from e
+        return deps
+
+    def _get_metadata_path_for_display(self, name):
+        """
+        Return the path to the given metadata file, if available.
+        """
+        try:
+            # We need to access _get_metadata_path() on the provider object
+            # directly rather than through this class's __getattr__()
+            # since _get_metadata_path() is marked private.
+            path = self._provider._get_metadata_path(name)
+
+        # Handle exceptions e.g. in case the distribution's metadata
+        # provider doesn't support _get_metadata_path().
+        except Exception:
+            return '[could not detect]'
+
+        return path
+
+    def _get_metadata(self, name):
+        if self.has_metadata(name):
+            yield from self.get_metadata_lines(name)
+
+    def _get_version(self):
+        lines = self._get_metadata(self.PKG_INFO)
+        return _version_from_file(lines)
+
+    def activate(self, path: list[str] | None = None, replace: bool = False):
+        """Ensure distribution is importable on `path` (default=sys.path)"""
+        if path is None:
+            path = sys.path
+        self.insert_on(path, replace=replace)
+        if path is sys.path and self.location is not None:
+            fixup_namespace_packages(self.location)
+            for pkg in self._get_metadata('namespace_packages.txt'):
+                if pkg in sys.modules:
+                    declare_namespace(pkg)
+
+    def egg_name(self):
+        """Return what this distribution's standard .egg filename should be"""
+        filename = "%s-%s-py%s" % (
+            to_filename(self.project_name),
+            to_filename(self.version),
+            self.py_version or PY_MAJOR,
+        )
+
+        if self.platform:
+            filename += '-' + self.platform
+        return filename
+
+    def __repr__(self):
+        if self.location:
+            return "%s (%s)" % (self, self.location)
+        else:
+            return str(self)
+
+    def __str__(self):
+        try:
+            version = getattr(self, 'version', None)
+        except ValueError:
+            version = None
+        version = version or "[unknown version]"
+        return "%s %s" % (self.project_name, version)
+
+    def __getattr__(self, attr):
+        """Delegate all unrecognized public attributes to .metadata provider"""
+        if attr.startswith('_'):
+            raise AttributeError(attr)
+        return getattr(self._provider, attr)
+
+    def __dir__(self):
+        return list(
+            set(super().__dir__())
+            | set(attr for attr in self._provider.__dir__() if not attr.startswith('_'))
+        )
+
+    @classmethod
+    def from_filename(
+        cls,
+        filename: StrPath,
+        metadata: _MetadataType = None,
+        **kw: int,  # We could set `precedence` explicitly, but keeping this as `**kw` for full backwards and subclassing compatibility
+    ):
+        return cls.from_location(
+            _normalize_cached(filename), os.path.basename(filename), metadata, **kw
+        )
+
+    def as_requirement(self):
+        """Return a ``Requirement`` that matches this distribution exactly"""
+        if isinstance(self.parsed_version, _packaging_version.Version):
+            spec = "%s==%s" % (self.project_name, self.parsed_version)
+        else:
+            spec = "%s===%s" % (self.project_name, self.parsed_version)
+
+        return Requirement.parse(spec)
+
+    def load_entry_point(self, group: str, name: str) -> _ResolvedEntryPoint:
+        """Return the `name` entry point of `group` or raise ImportError"""
+        ep = self.get_entry_info(group, name)
+        if ep is None:
+            raise ImportError("Entry point %r not found" % ((group, name),))
+        return ep.load()
+
+    @overload
+    def get_entry_map(self, group: None = None) -> dict[str, dict[str, EntryPoint]]: ...
+    @overload
+    def get_entry_map(self, group: str) -> dict[str, EntryPoint]: ...
+    def get_entry_map(self, group: str | None = None):
+        """Return the entry point map for `group`, or the full entry map"""
+        if not hasattr(self, "_ep_map"):
+            self._ep_map = EntryPoint.parse_map(
+                self._get_metadata('entry_points.txt'), self
+            )
+        if group is not None:
+            return self._ep_map.get(group, {})
+        return self._ep_map
+
+    def get_entry_info(self, group: str, name: str):
+        """Return the EntryPoint object for `group`+`name`, or ``None``"""
+        return self.get_entry_map(group).get(name)
+
+    # FIXME: 'Distribution.insert_on' is too complex (13)
+    def insert_on(  # noqa: C901
+        self,
+        path: list[str],
+        loc=None,
+        replace: bool = False,
+    ):
+        """Ensure self.location is on path
+
+        If replace=False (default):
+            - If location is already in path anywhere, do nothing.
+            - Else:
+              - If it's an egg and its parent directory is on path,
+                insert just ahead of the parent.
+              - Else: add to the end of path.
+        If replace=True:
+            - If location is already on path anywhere (not eggs)
+              or higher priority than its parent (eggs)
+              do nothing.
+            - Else:
+              - If it's an egg and its parent directory is on path,
+                insert just ahead of the parent,
+                removing any lower-priority entries.
+              - Else: add it to the front of path.
+        """
+
+        loc = loc or self.location
+        if not loc:
+            return
+
+        nloc = _normalize_cached(loc)
+        bdir = os.path.dirname(nloc)
+        npath = [(p and _normalize_cached(p) or p) for p in path]
+
+        for p, item in enumerate(npath):
+            if item == nloc:
+                if replace:
+                    break
+                else:
+                    # don't modify path (even removing duplicates) if
+                    # found and not replace
+                    return
+            elif item == bdir and self.precedence == EGG_DIST:
+                # if it's an .egg, give it precedence over its directory
+                # UNLESS it's already been added to sys.path and replace=False
+                if (not replace) and nloc in npath[p:]:
+                    return
+                if path is sys.path:
+                    self.check_version_conflict()
+                path.insert(p, loc)
+                npath.insert(p, nloc)
+                break
+        else:
+            if path is sys.path:
+                self.check_version_conflict()
+            if replace:
+                path.insert(0, loc)
+            else:
+                path.append(loc)
+            return
+
+        # p is the spot where we found or inserted loc; now remove duplicates
+        while True:
+            try:
+                np = npath.index(nloc, p + 1)
+            except ValueError:
+                break
+            else:
+                del npath[np], path[np]
+                # ha!
+                p = np
+
+        return
+
+    def check_version_conflict(self):
+        if self.key == 'setuptools':
+            # ignore the inevitable setuptools self-conflicts  :(
+            return
+
+        nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt'))
+        loc = normalize_path(self.location)
+        for modname in self._get_metadata('top_level.txt'):
+            if (
+                modname not in sys.modules
+                or modname in nsp
+                or modname in _namespace_packages
+            ):
+                continue
+            if modname in ('pkg_resources', 'setuptools', 'site'):
+                continue
+            fn = getattr(sys.modules[modname], '__file__', None)
+            if fn and (
+                normalize_path(fn).startswith(loc) or fn.startswith(self.location)
+            ):
+                continue
+            issue_warning(
+                "Module %s was already imported from %s, but %s is being added"
+                " to sys.path" % (modname, fn, self.location),
+            )
+
+    def has_version(self):
+        try:
+            self.version
+        except ValueError:
+            issue_warning("Unbuilt egg for " + repr(self))
+            return False
+        except SystemError:
+            # TODO: remove this except clause when python/cpython#103632 is fixed.
+            return False
+        return True
+
+    def clone(self, **kw: str | int | IResourceProvider | None):
+        """Copy this distribution, substituting in any changed keyword args"""
+        names = 'project_name version py_version platform location precedence'
+        for attr in names.split():
+            kw.setdefault(attr, getattr(self, attr, None))
+        kw.setdefault('metadata', self._provider)
+        # Unsafely unpacking. But keeping **kw for backwards and subclassing compatibility
+        return self.__class__(**kw)  # type:ignore[arg-type]
+
+    @property
+    def extras(self):
+        return [dep for dep in self._dep_map if dep]
+
+
+class EggInfoDistribution(Distribution):
+    def _reload_version(self):
+        """
+        Packages installed by distutils (e.g. numpy or scipy),
+        which uses an old safe_version, and so
+        their version numbers can get mangled when
+        converted to filenames (e.g., 1.11.0.dev0+2329eae to
+        1.11.0.dev0_2329eae). These distributions will not be
+        parsed properly
+        downstream by Distribution and safe_version, so
+        take an extra step and try to get the version number from
+        the metadata file itself instead of the filename.
+        """
+        md_version = self._get_version()
+        if md_version:
+            self._version = md_version
+        return self
+
+
+class DistInfoDistribution(Distribution):
+    """
+    Wrap an actual or potential sys.path entry
+    w/metadata, .dist-info style.
+    """
+
+    PKG_INFO = 'METADATA'
+    EQEQ = re.compile(r"([\(,])\s*(\d.*?)\s*([,\)])")
+
+    @property
+    def _parsed_pkg_info(self):
+        """Parse and cache metadata"""
+        try:
+            return self._pkg_info
+        except AttributeError:
+            metadata = self.get_metadata(self.PKG_INFO)
+            self._pkg_info = email.parser.Parser().parsestr(metadata)
+            return self._pkg_info
+
+    @property
+    def _dep_map(self):
+        try:
+            return self.__dep_map
+        except AttributeError:
+            self.__dep_map = self._compute_dependencies()
+            return self.__dep_map
+
+    def _compute_dependencies(self) -> dict[str | None, list[Requirement]]:
+        """Recompute this distribution's dependencies."""
+        self.__dep_map: dict[str | None, list[Requirement]] = {None: []}
+
+        reqs: list[Requirement] = []
+        # Including any condition expressions
+        for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
+            reqs.extend(parse_requirements(req))
+
+        def reqs_for_extra(extra):
+            for req in reqs:
+                if not req.marker or req.marker.evaluate({'extra': extra}):
+                    yield req
+
+        common = types.MappingProxyType(dict.fromkeys(reqs_for_extra(None)))
+        self.__dep_map[None].extend(common)
+
+        for extra in self._parsed_pkg_info.get_all('Provides-Extra') or []:
+            s_extra = safe_extra(extra.strip())
+            self.__dep_map[s_extra] = [
+                r for r in reqs_for_extra(extra) if r not in common
+            ]
+
+        return self.__dep_map
+
+
+_distributionImpl = {
+    '.egg': Distribution,
+    '.egg-info': EggInfoDistribution,
+    '.dist-info': DistInfoDistribution,
+}
+
+
+def issue_warning(*args, **kw):
+    level = 1
+    g = globals()
+    try:
+        # find the first stack frame that is *not* code in
+        # the pkg_resources module, to use for the warning
+        while sys._getframe(level).f_globals is g:
+            level += 1
+    except ValueError:
+        pass
+    warnings.warn(stacklevel=level + 1, *args, **kw)
+
+
+def parse_requirements(strs: _NestedStr):
+    """
+    Yield ``Requirement`` objects for each specification in `strs`.
+
+    `strs` must be a string, or a (possibly-nested) iterable thereof.
+    """
+    return map(Requirement, join_continuation(map(drop_comment, yield_lines(strs))))
+
+
+class RequirementParseError(_packaging_requirements.InvalidRequirement):
+    "Compatibility wrapper for InvalidRequirement"
+
+
+class Requirement(_packaging_requirements.Requirement):
+    def __init__(self, requirement_string: str):
+        """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!"""
+        super().__init__(requirement_string)
+        self.unsafe_name = self.name
+        project_name = safe_name(self.name)
+        self.project_name, self.key = project_name, project_name.lower()
+        self.specs = [(spec.operator, spec.version) for spec in self.specifier]
+        # packaging.requirements.Requirement uses a set for its extras. We use a variable-length tuple
+        self.extras: tuple[str] = tuple(map(safe_extra, self.extras))
+        self.hashCmp = (
+            self.key,
+            self.url,
+            self.specifier,
+            frozenset(self.extras),
+            str(self.marker) if self.marker else None,
+        )
+        self.__hash = hash(self.hashCmp)
+
+    def __eq__(self, other: object):
+        return isinstance(other, Requirement) and self.hashCmp == other.hashCmp
+
+    def __ne__(self, other):
+        return not self == other
+
+    def __contains__(self, item: Distribution | str | tuple[str, ...]) -> bool:
+        if isinstance(item, Distribution):
+            if item.key != self.key:
+                return False
+
+            item = item.version
+
+        # Allow prereleases always in order to match the previous behavior of
+        # this method. In the future this should be smarter and follow PEP 440
+        # more accurately.
+        return self.specifier.contains(item, prereleases=True)
+
+    def __hash__(self):
+        return self.__hash
+
+    def __repr__(self):
+        return "Requirement.parse(%r)" % str(self)
+
+    @staticmethod
+    def parse(s: str | Iterable[str]):
+        (req,) = parse_requirements(s)
+        return req
+
+
+def _always_object(classes):
+    """
+    Ensure object appears in the mro even
+    for old-style classes.
+    """
+    if object not in classes:
+        return classes + (object,)
+    return classes
+
+
+def _find_adapter(registry: Mapping[type, _AdapterT], ob: object) -> _AdapterT:
+    """Return an adapter factory for `ob` from `registry`"""
+    types = _always_object(inspect.getmro(getattr(ob, '__class__', type(ob))))
+    for t in types:
+        if t in registry:
+            return registry[t]
+    # _find_adapter would previously return None, and immediately be called.
+    # So we're raising a TypeError to keep backward compatibility if anyone depended on that behaviour.
+    raise TypeError(f"Could not find adapter for {registry} and {ob}")
+
+
+def ensure_directory(path: StrOrBytesPath):
+    """Ensure that the parent directory of `path` exists"""
+    dirname = os.path.dirname(path)
+    os.makedirs(dirname, exist_ok=True)
+
+
+def _bypass_ensure_directory(path):
+    """Sandbox-bypassing version of ensure_directory()"""
+    if not WRITE_SUPPORT:
+        raise OSError('"os.mkdir" not supported on this platform.')
+    dirname, filename = split(path)
+    if dirname and filename and not isdir(dirname):
+        _bypass_ensure_directory(dirname)
+        try:
+            mkdir(dirname, 0o755)
+        except FileExistsError:
+            pass
+
+
+def split_sections(s: _NestedStr) -> Iterator[tuple[str | None, list[str]]]:
+    """Split a string or iterable thereof into (section, content) pairs
+
+    Each ``section`` is a stripped version of the section header ("[section]")
+    and each ``content`` is a list of stripped lines excluding blank lines and
+    comment-only lines.  If there are any such lines before the first section
+    header, they're returned in a first ``section`` of ``None``.
+    """
+    section = None
+    content = []
+    for line in yield_lines(s):
+        if line.startswith("["):
+            if line.endswith("]"):
+                if section or content:
+                    yield section, content
+                section = line[1:-1].strip()
+                content = []
+            else:
+                raise ValueError("Invalid section heading", line)
+        else:
+            content.append(line)
+
+    # wrap up last segment
+    yield section, content
+
+
+def _mkstemp(*args, **kw):
+    old_open = os.open
+    try:
+        # temporarily bypass sandboxing
+        os.open = os_open
+        return tempfile.mkstemp(*args, **kw)
+    finally:
+        # and then put it back
+        os.open = old_open
+
+
+# Silence the PEP440Warning by default, so that end users don't get hit by it
+# randomly just because they use pkg_resources. We want to append the rule
+# because we want earlier uses of filterwarnings to take precedence over this
+# one.
+warnings.filterwarnings("ignore", category=PEP440Warning, append=True)
+
+
+class PkgResourcesDeprecationWarning(Warning):
+    """
+    Base class for warning about deprecations in ``pkg_resources``
+
+    This class is not derived from ``DeprecationWarning``, and as such is
+    visible by default.
+    """
+
+
+# Ported from ``setuptools`` to avoid introducing an import inter-dependency:
+_LOCALE_ENCODING = "locale" if sys.version_info >= (3, 10) else None
+
+
+def _read_utf8_with_fallback(file: str, fallback_encoding=_LOCALE_ENCODING) -> str:
+    """See setuptools.unicode_utils._read_utf8_with_fallback"""
+    try:
+        with open(file, "r", encoding="utf-8") as f:
+            return f.read()
+    except UnicodeDecodeError:  # pragma: no cover
+        msg = f"""\
+        ********************************************************************************
+        `encoding="utf-8"` fails with {file!r}, trying `encoding={fallback_encoding!r}`.
+
+        This fallback behaviour is considered **deprecated** and future versions of
+        `setuptools/pkg_resources` may not implement it.
+
+        Please encode {file!r} with "utf-8" to ensure future builds will succeed.
+
+        If this file was produced by `setuptools` itself, cleaning up the cached files
+        and re-building/re-installing the package with a newer version of `setuptools`
+        (e.g. by updating `build-system.requires` in its `pyproject.toml`)
+        might solve the problem.
+        ********************************************************************************
+        """
+        # TODO: Add a deadline?
+        #       See comment in setuptools.unicode_utils._Utf8EncodingNeeded
+        warnings.warn(msg, PkgResourcesDeprecationWarning, stacklevel=2)
+        with open(file, "r", encoding=fallback_encoding) as f:
+            return f.read()
+
+
+# from jaraco.functools 1.3
+def _call_aside(f, *args, **kwargs):
+    f(*args, **kwargs)
+    return f
+
+
+@_call_aside
+def _initialize(g=globals()):
+    "Set up global resource manager (deliberately not state-saved)"
+    manager = ResourceManager()
+    g['_manager'] = manager
+    g.update(
+        (name, getattr(manager, name))
+        for name in dir(manager)
+        if not name.startswith('_')
+    )
+
+
+@_call_aside
+def _initialize_master_working_set():
+    """
+    Prepare the master working set and make the ``require()``
+    API available.
+
+    This function has explicit effects on the global state
+    of pkg_resources. It is intended to be invoked once at
+    the initialization of this module.
+
+    Invocation by other packages is unsupported and done
+    at their own risk.
+    """
+    working_set = _declare_state('object', 'working_set', WorkingSet._build_master())
+
+    require = working_set.require
+    iter_entry_points = working_set.iter_entry_points
+    add_activation_listener = working_set.subscribe
+    run_script = working_set.run_script
+    # backward compatibility
+    run_main = run_script
+    # Activate all distributions already on sys.path with replace=False and
+    # ensure that all distributions added to the working set in the future
+    # (e.g. by calling ``require()``) will get activated as well,
+    # with higher priority (replace=True).
+    tuple(dist.activate(replace=False) for dist in working_set)
+    add_activation_listener(
+        lambda dist: dist.activate(replace=True),
+        existing=False,
+    )
+    working_set.entries = []
+    # match order
+    list(map(working_set.add_entry, sys.path))
+    globals().update(locals())
+
+
+if TYPE_CHECKING:
+    # All of these are set by the @_call_aside methods above
+    __resource_manager = ResourceManager()  # Won't exist at runtime
+    resource_exists = __resource_manager.resource_exists
+    resource_isdir = __resource_manager.resource_isdir
+    resource_filename = __resource_manager.resource_filename
+    resource_stream = __resource_manager.resource_stream
+    resource_string = __resource_manager.resource_string
+    resource_listdir = __resource_manager.resource_listdir
+    set_extraction_path = __resource_manager.set_extraction_path
+    cleanup_resources = __resource_manager.cleanup_resources
+
+    working_set = WorkingSet()
+    require = working_set.require
+    iter_entry_points = working_set.iter_entry_points
+    add_activation_listener = working_set.subscribe
+    run_script = working_set.run_script
+    run_main = run_script
diff --git a/venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py b/venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py
new file mode 100644
index 00000000000..d58dd2b7dde
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py
@@ -0,0 +1,627 @@
+"""
+Utilities for determining application-specific dirs.
+
+See  for details and usage.
+
+"""
+
+from __future__ import annotations
+
+import os
+import sys
+from typing import TYPE_CHECKING
+
+from .api import PlatformDirsABC
+from .version import __version__
+from .version import __version_tuple__ as __version_info__
+
+if TYPE_CHECKING:
+    from pathlib import Path
+    from typing import Literal
+
+
+def _set_platform_dir_class() -> type[PlatformDirsABC]:
+    if sys.platform == "win32":
+        from pip._vendor.platformdirs.windows import Windows as Result  # noqa: PLC0415
+    elif sys.platform == "darwin":
+        from pip._vendor.platformdirs.macos import MacOS as Result  # noqa: PLC0415
+    else:
+        from pip._vendor.platformdirs.unix import Unix as Result  # noqa: PLC0415
+
+    if os.getenv("ANDROID_DATA") == "/data" and os.getenv("ANDROID_ROOT") == "/system":
+        if os.getenv("SHELL") or os.getenv("PREFIX"):
+            return Result
+
+        from pip._vendor.platformdirs.android import _android_folder  # noqa: PLC0415
+
+        if _android_folder() is not None:
+            from pip._vendor.platformdirs.android import Android  # noqa: PLC0415
+
+            return Android  # return to avoid redefinition of a result
+
+    return Result
+
+
+PlatformDirs = _set_platform_dir_class()  #: Currently active platform
+AppDirs = PlatformDirs  #: Backwards compatibility with appdirs
+
+
+def user_data_dir(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    roaming: bool = False,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> str:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param roaming: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: data directory tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        roaming=roaming,
+        ensure_exists=ensure_exists,
+    ).user_data_dir
+
+
+def site_data_dir(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    multipath: bool = False,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> str:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param multipath: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: data directory shared by users
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        multipath=multipath,
+        ensure_exists=ensure_exists,
+    ).site_data_dir
+
+
+def user_config_dir(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    roaming: bool = False,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> str:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param roaming: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: config directory tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        roaming=roaming,
+        ensure_exists=ensure_exists,
+    ).user_config_dir
+
+
+def site_config_dir(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    multipath: bool = False,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> str:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param multipath: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: config directory shared by the users
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        multipath=multipath,
+        ensure_exists=ensure_exists,
+    ).site_config_dir
+
+
+def user_cache_dir(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    opinion: bool = True,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> str:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param opinion: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: cache directory tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        opinion=opinion,
+        ensure_exists=ensure_exists,
+    ).user_cache_dir
+
+
+def site_cache_dir(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    opinion: bool = True,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> str:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param opinion: See `opinion `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: cache directory tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        opinion=opinion,
+        ensure_exists=ensure_exists,
+    ).site_cache_dir
+
+
+def user_state_dir(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    roaming: bool = False,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> str:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param roaming: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: state directory tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        roaming=roaming,
+        ensure_exists=ensure_exists,
+    ).user_state_dir
+
+
+def user_log_dir(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    opinion: bool = True,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> str:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param opinion: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: log directory tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        opinion=opinion,
+        ensure_exists=ensure_exists,
+    ).user_log_dir
+
+
+def user_documents_dir() -> str:
+    """:returns: documents directory tied to the user"""
+    return PlatformDirs().user_documents_dir
+
+
+def user_downloads_dir() -> str:
+    """:returns: downloads directory tied to the user"""
+    return PlatformDirs().user_downloads_dir
+
+
+def user_pictures_dir() -> str:
+    """:returns: pictures directory tied to the user"""
+    return PlatformDirs().user_pictures_dir
+
+
+def user_videos_dir() -> str:
+    """:returns: videos directory tied to the user"""
+    return PlatformDirs().user_videos_dir
+
+
+def user_music_dir() -> str:
+    """:returns: music directory tied to the user"""
+    return PlatformDirs().user_music_dir
+
+
+def user_desktop_dir() -> str:
+    """:returns: desktop directory tied to the user"""
+    return PlatformDirs().user_desktop_dir
+
+
+def user_runtime_dir(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    opinion: bool = True,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> str:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param opinion: See `opinion `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: runtime directory tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        opinion=opinion,
+        ensure_exists=ensure_exists,
+    ).user_runtime_dir
+
+
+def site_runtime_dir(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    opinion: bool = True,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> str:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param opinion: See `opinion `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: runtime directory shared by users
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        opinion=opinion,
+        ensure_exists=ensure_exists,
+    ).site_runtime_dir
+
+
+def user_data_path(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    roaming: bool = False,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> Path:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param roaming: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: data path tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        roaming=roaming,
+        ensure_exists=ensure_exists,
+    ).user_data_path
+
+
+def site_data_path(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    multipath: bool = False,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> Path:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param multipath: See `multipath `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: data path shared by users
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        multipath=multipath,
+        ensure_exists=ensure_exists,
+    ).site_data_path
+
+
+def user_config_path(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    roaming: bool = False,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> Path:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param roaming: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: config path tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        roaming=roaming,
+        ensure_exists=ensure_exists,
+    ).user_config_path
+
+
+def site_config_path(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    multipath: bool = False,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> Path:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param multipath: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: config path shared by the users
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        multipath=multipath,
+        ensure_exists=ensure_exists,
+    ).site_config_path
+
+
+def site_cache_path(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    opinion: bool = True,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> Path:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param opinion: See `opinion `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: cache directory tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        opinion=opinion,
+        ensure_exists=ensure_exists,
+    ).site_cache_path
+
+
+def user_cache_path(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    opinion: bool = True,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> Path:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param opinion: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: cache path tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        opinion=opinion,
+        ensure_exists=ensure_exists,
+    ).user_cache_path
+
+
+def user_state_path(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    roaming: bool = False,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> Path:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param roaming: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: state path tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        roaming=roaming,
+        ensure_exists=ensure_exists,
+    ).user_state_path
+
+
+def user_log_path(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    opinion: bool = True,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> Path:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param opinion: See `roaming `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: log path tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        opinion=opinion,
+        ensure_exists=ensure_exists,
+    ).user_log_path
+
+
+def user_documents_path() -> Path:
+    """:returns: documents a path tied to the user"""
+    return PlatformDirs().user_documents_path
+
+
+def user_downloads_path() -> Path:
+    """:returns: downloads path tied to the user"""
+    return PlatformDirs().user_downloads_path
+
+
+def user_pictures_path() -> Path:
+    """:returns: pictures path tied to the user"""
+    return PlatformDirs().user_pictures_path
+
+
+def user_videos_path() -> Path:
+    """:returns: videos path tied to the user"""
+    return PlatformDirs().user_videos_path
+
+
+def user_music_path() -> Path:
+    """:returns: music path tied to the user"""
+    return PlatformDirs().user_music_path
+
+
+def user_desktop_path() -> Path:
+    """:returns: desktop path tied to the user"""
+    return PlatformDirs().user_desktop_path
+
+
+def user_runtime_path(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    opinion: bool = True,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> Path:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param opinion: See `opinion `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: runtime path tied to the user
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        opinion=opinion,
+        ensure_exists=ensure_exists,
+    ).user_runtime_path
+
+
+def site_runtime_path(
+    appname: str | None = None,
+    appauthor: str | None | Literal[False] = None,
+    version: str | None = None,
+    opinion: bool = True,  # noqa: FBT001, FBT002
+    ensure_exists: bool = False,  # noqa: FBT001, FBT002
+) -> Path:
+    """
+    :param appname: See `appname `.
+    :param appauthor: See `appauthor `.
+    :param version: See `version `.
+    :param opinion: See `opinion `.
+    :param ensure_exists: See `ensure_exists `.
+    :returns: runtime path shared by users
+    """
+    return PlatformDirs(
+        appname=appname,
+        appauthor=appauthor,
+        version=version,
+        opinion=opinion,
+        ensure_exists=ensure_exists,
+    ).site_runtime_path
+
+
+__all__ = [
+    "AppDirs",
+    "PlatformDirs",
+    "PlatformDirsABC",
+    "__version__",
+    "__version_info__",
+    "site_cache_dir",
+    "site_cache_path",
+    "site_config_dir",
+    "site_config_path",
+    "site_data_dir",
+    "site_data_path",
+    "site_runtime_dir",
+    "site_runtime_path",
+    "user_cache_dir",
+    "user_cache_path",
+    "user_config_dir",
+    "user_config_path",
+    "user_data_dir",
+    "user_data_path",
+    "user_desktop_dir",
+    "user_desktop_path",
+    "user_documents_dir",
+    "user_documents_path",
+    "user_downloads_dir",
+    "user_downloads_path",
+    "user_log_dir",
+    "user_log_path",
+    "user_music_dir",
+    "user_music_path",
+    "user_pictures_dir",
+    "user_pictures_path",
+    "user_runtime_dir",
+    "user_runtime_path",
+    "user_state_dir",
+    "user_state_path",
+    "user_videos_dir",
+    "user_videos_path",
+]
diff --git a/venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py b/venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py
new file mode 100644
index 00000000000..fa8a677a336
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py
@@ -0,0 +1,55 @@
+"""Main entry point."""
+
+from __future__ import annotations
+
+from pip._vendor.platformdirs import PlatformDirs, __version__
+
+PROPS = (
+    "user_data_dir",
+    "user_config_dir",
+    "user_cache_dir",
+    "user_state_dir",
+    "user_log_dir",
+    "user_documents_dir",
+    "user_downloads_dir",
+    "user_pictures_dir",
+    "user_videos_dir",
+    "user_music_dir",
+    "user_runtime_dir",
+    "site_data_dir",
+    "site_config_dir",
+    "site_cache_dir",
+    "site_runtime_dir",
+)
+
+
+def main() -> None:
+    """Run the main entry point."""
+    app_name = "MyApp"
+    app_author = "MyCompany"
+
+    print(f"-- platformdirs {__version__} --")  # noqa: T201
+
+    print("-- app dirs (with optional 'version')")  # noqa: T201
+    dirs = PlatformDirs(app_name, app_author, version="1.0")
+    for prop in PROPS:
+        print(f"{prop}: {getattr(dirs, prop)}")  # noqa: T201
+
+    print("\n-- app dirs (without optional 'version')")  # noqa: T201
+    dirs = PlatformDirs(app_name, app_author)
+    for prop in PROPS:
+        print(f"{prop}: {getattr(dirs, prop)}")  # noqa: T201
+
+    print("\n-- app dirs (without optional 'appauthor')")  # noqa: T201
+    dirs = PlatformDirs(app_name)
+    for prop in PROPS:
+        print(f"{prop}: {getattr(dirs, prop)}")  # noqa: T201
+
+    print("\n-- app dirs (with disabled 'appauthor')")  # noqa: T201
+    dirs = PlatformDirs(app_name, appauthor=False)
+    for prop in PROPS:
+        print(f"{prop}: {getattr(dirs, prop)}")  # noqa: T201
+
+
+if __name__ == "__main__":
+    main()
diff --git a/venv/Lib/site-packages/pip/_vendor/platformdirs/android.py b/venv/Lib/site-packages/pip/_vendor/platformdirs/android.py
new file mode 100644
index 00000000000..afd3141c725
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/platformdirs/android.py
@@ -0,0 +1,249 @@
+"""Android."""
+
+from __future__ import annotations
+
+import os
+import re
+import sys
+from functools import lru_cache
+from typing import TYPE_CHECKING, cast
+
+from .api import PlatformDirsABC
+
+
+class Android(PlatformDirsABC):
+    """
+    Follows the guidance `from here `_.
+
+    Makes use of the `appname `, `version
+    `, `ensure_exists `.
+
+    """
+
+    @property
+    def user_data_dir(self) -> str:
+        """:return: data directory tied to the user, e.g. ``/data/user///files/``"""
+        return self._append_app_name_and_version(cast(str, _android_folder()), "files")
+
+    @property
+    def site_data_dir(self) -> str:
+        """:return: data directory shared by users, same as `user_data_dir`"""
+        return self.user_data_dir
+
+    @property
+    def user_config_dir(self) -> str:
+        """
+        :return: config directory tied to the user, e.g. \
+        ``/data/user///shared_prefs/``
+        """
+        return self._append_app_name_and_version(cast(str, _android_folder()), "shared_prefs")
+
+    @property
+    def site_config_dir(self) -> str:
+        """:return: config directory shared by the users, same as `user_config_dir`"""
+        return self.user_config_dir
+
+    @property
+    def user_cache_dir(self) -> str:
+        """:return: cache directory tied to the user, e.g.,``/data/user///cache/``"""
+        return self._append_app_name_and_version(cast(str, _android_folder()), "cache")
+
+    @property
+    def site_cache_dir(self) -> str:
+        """:return: cache directory shared by users, same as `user_cache_dir`"""
+        return self.user_cache_dir
+
+    @property
+    def user_state_dir(self) -> str:
+        """:return: state directory tied to the user, same as `user_data_dir`"""
+        return self.user_data_dir
+
+    @property
+    def user_log_dir(self) -> str:
+        """
+        :return: log directory tied to the user, same as `user_cache_dir` if not opinionated else ``log`` in it,
+          e.g. ``/data/user///cache//log``
+        """
+        path = self.user_cache_dir
+        if self.opinion:
+            path = os.path.join(path, "log")  # noqa: PTH118
+        return path
+
+    @property
+    def user_documents_dir(self) -> str:
+        """:return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``"""
+        return _android_documents_folder()
+
+    @property
+    def user_downloads_dir(self) -> str:
+        """:return: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``"""
+        return _android_downloads_folder()
+
+    @property
+    def user_pictures_dir(self) -> str:
+        """:return: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``"""
+        return _android_pictures_folder()
+
+    @property
+    def user_videos_dir(self) -> str:
+        """:return: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``"""
+        return _android_videos_folder()
+
+    @property
+    def user_music_dir(self) -> str:
+        """:return: music directory tied to the user e.g. ``/storage/emulated/0/Music``"""
+        return _android_music_folder()
+
+    @property
+    def user_desktop_dir(self) -> str:
+        """:return: desktop directory tied to the user e.g. ``/storage/emulated/0/Desktop``"""
+        return "/storage/emulated/0/Desktop"
+
+    @property
+    def user_runtime_dir(self) -> str:
+        """
+        :return: runtime directory tied to the user, same as `user_cache_dir` if not opinionated else ``tmp`` in it,
+          e.g. ``/data/user///cache//tmp``
+        """
+        path = self.user_cache_dir
+        if self.opinion:
+            path = os.path.join(path, "tmp")  # noqa: PTH118
+        return path
+
+    @property
+    def site_runtime_dir(self) -> str:
+        """:return: runtime directory shared by users, same as `user_runtime_dir`"""
+        return self.user_runtime_dir
+
+
+@lru_cache(maxsize=1)
+def _android_folder() -> str | None:  # noqa: C901, PLR0912
+    """:return: base folder for the Android OS or None if it cannot be found"""
+    result: str | None = None
+    # type checker isn't happy with our "import android", just don't do this when type checking see
+    # https://stackoverflow.com/a/61394121
+    if not TYPE_CHECKING:
+        try:
+            # First try to get a path to android app using python4android (if available)...
+            from android import mActivity  # noqa: PLC0415
+
+            context = cast("android.content.Context", mActivity.getApplicationContext())  # noqa: F821
+            result = context.getFilesDir().getParentFile().getAbsolutePath()
+        except Exception:  # noqa: BLE001
+            result = None
+    if result is None:
+        try:
+            # ...and fall back to using plain pyjnius, if python4android isn't available or doesn't deliver any useful
+            # result...
+            from jnius import autoclass  # noqa: PLC0415
+
+            context = autoclass("android.content.Context")
+            result = context.getFilesDir().getParentFile().getAbsolutePath()
+        except Exception:  # noqa: BLE001
+            result = None
+    if result is None:
+        # and if that fails, too, find an android folder looking at path on the sys.path
+        # warning: only works for apps installed under /data, not adopted storage etc.
+        pattern = re.compile(r"/data/(data|user/\d+)/(.+)/files")
+        for path in sys.path:
+            if pattern.match(path):
+                result = path.split("/files")[0]
+                break
+        else:
+            result = None
+    if result is None:
+        # one last try: find an android folder looking at path on the sys.path taking adopted storage paths into
+        # account
+        pattern = re.compile(r"/mnt/expand/[a-fA-F0-9-]{36}/(data|user/\d+)/(.+)/files")
+        for path in sys.path:
+            if pattern.match(path):
+                result = path.split("/files")[0]
+                break
+        else:
+            result = None
+    return result
+
+
+@lru_cache(maxsize=1)
+def _android_documents_folder() -> str:
+    """:return: documents folder for the Android OS"""
+    # Get directories with pyjnius
+    try:
+        from jnius import autoclass  # noqa: PLC0415
+
+        context = autoclass("android.content.Context")
+        environment = autoclass("android.os.Environment")
+        documents_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DOCUMENTS).getAbsolutePath()
+    except Exception:  # noqa: BLE001
+        documents_dir = "/storage/emulated/0/Documents"
+
+    return documents_dir
+
+
+@lru_cache(maxsize=1)
+def _android_downloads_folder() -> str:
+    """:return: downloads folder for the Android OS"""
+    # Get directories with pyjnius
+    try:
+        from jnius import autoclass  # noqa: PLC0415
+
+        context = autoclass("android.content.Context")
+        environment = autoclass("android.os.Environment")
+        downloads_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DOWNLOADS).getAbsolutePath()
+    except Exception:  # noqa: BLE001
+        downloads_dir = "/storage/emulated/0/Downloads"
+
+    return downloads_dir
+
+
+@lru_cache(maxsize=1)
+def _android_pictures_folder() -> str:
+    """:return: pictures folder for the Android OS"""
+    # Get directories with pyjnius
+    try:
+        from jnius import autoclass  # noqa: PLC0415
+
+        context = autoclass("android.content.Context")
+        environment = autoclass("android.os.Environment")
+        pictures_dir: str = context.getExternalFilesDir(environment.DIRECTORY_PICTURES).getAbsolutePath()
+    except Exception:  # noqa: BLE001
+        pictures_dir = "/storage/emulated/0/Pictures"
+
+    return pictures_dir
+
+
+@lru_cache(maxsize=1)
+def _android_videos_folder() -> str:
+    """:return: videos folder for the Android OS"""
+    # Get directories with pyjnius
+    try:
+        from jnius import autoclass  # noqa: PLC0415
+
+        context = autoclass("android.content.Context")
+        environment = autoclass("android.os.Environment")
+        videos_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DCIM).getAbsolutePath()
+    except Exception:  # noqa: BLE001
+        videos_dir = "/storage/emulated/0/DCIM/Camera"
+
+    return videos_dir
+
+
+@lru_cache(maxsize=1)
+def _android_music_folder() -> str:
+    """:return: music folder for the Android OS"""
+    # Get directories with pyjnius
+    try:
+        from jnius import autoclass  # noqa: PLC0415
+
+        context = autoclass("android.content.Context")
+        environment = autoclass("android.os.Environment")
+        music_dir: str = context.getExternalFilesDir(environment.DIRECTORY_MUSIC).getAbsolutePath()
+    except Exception:  # noqa: BLE001
+        music_dir = "/storage/emulated/0/Music"
+
+    return music_dir
+
+
+__all__ = [
+    "Android",
+]
diff --git a/venv/Lib/site-packages/pip/_vendor/platformdirs/api.py b/venv/Lib/site-packages/pip/_vendor/platformdirs/api.py
new file mode 100644
index 00000000000..c50caa648a6
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/platformdirs/api.py
@@ -0,0 +1,292 @@
+"""Base API."""
+
+from __future__ import annotations
+
+import os
+from abc import ABC, abstractmethod
+from pathlib import Path
+from typing import TYPE_CHECKING
+
+if TYPE_CHECKING:
+    from typing import Iterator, Literal
+
+
+class PlatformDirsABC(ABC):  # noqa: PLR0904
+    """Abstract base class for platform directories."""
+
+    def __init__(  # noqa: PLR0913, PLR0917
+        self,
+        appname: str | None = None,
+        appauthor: str | None | Literal[False] = None,
+        version: str | None = None,
+        roaming: bool = False,  # noqa: FBT001, FBT002
+        multipath: bool = False,  # noqa: FBT001, FBT002
+        opinion: bool = True,  # noqa: FBT001, FBT002
+        ensure_exists: bool = False,  # noqa: FBT001, FBT002
+    ) -> None:
+        """
+        Create a new platform directory.
+
+        :param appname: See `appname`.
+        :param appauthor: See `appauthor`.
+        :param version: See `version`.
+        :param roaming: See `roaming`.
+        :param multipath: See `multipath`.
+        :param opinion: See `opinion`.
+        :param ensure_exists: See `ensure_exists`.
+
+        """
+        self.appname = appname  #: The name of application.
+        self.appauthor = appauthor
+        """
+        The name of the app author or distributing body for this application.
+
+        Typically, it is the owning company name. Defaults to `appname`. You may pass ``False`` to disable it.
+
+        """
+        self.version = version
+        """
+        An optional version path element to append to the path.
+
+        You might want to use this if you want multiple versions of your app to be able to run independently. If used,
+        this would typically be ``.``.
+
+        """
+        self.roaming = roaming
+        """
+        Whether to use the roaming appdata directory on Windows.
+
+        That means that for users on a Windows network setup for roaming profiles, this user data will be synced on
+        login (see
+        `here `_).
+
+        """
+        self.multipath = multipath
+        """
+        An optional parameter which indicates that the entire list of data dirs should be returned.
+
+        By default, the first item would only be returned.
+
+        """
+        self.opinion = opinion  #: A flag to indicating to use opinionated values.
+        self.ensure_exists = ensure_exists
+        """
+        Optionally create the directory (and any missing parents) upon access if it does not exist.
+
+        By default, no directories are created.
+
+        """
+
+    def _append_app_name_and_version(self, *base: str) -> str:
+        params = list(base[1:])
+        if self.appname:
+            params.append(self.appname)
+            if self.version:
+                params.append(self.version)
+        path = os.path.join(base[0], *params)  # noqa: PTH118
+        self._optionally_create_directory(path)
+        return path
+
+    def _optionally_create_directory(self, path: str) -> None:
+        if self.ensure_exists:
+            Path(path).mkdir(parents=True, exist_ok=True)
+
+    @property
+    @abstractmethod
+    def user_data_dir(self) -> str:
+        """:return: data directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def site_data_dir(self) -> str:
+        """:return: data directory shared by users"""
+
+    @property
+    @abstractmethod
+    def user_config_dir(self) -> str:
+        """:return: config directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def site_config_dir(self) -> str:
+        """:return: config directory shared by the users"""
+
+    @property
+    @abstractmethod
+    def user_cache_dir(self) -> str:
+        """:return: cache directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def site_cache_dir(self) -> str:
+        """:return: cache directory shared by users"""
+
+    @property
+    @abstractmethod
+    def user_state_dir(self) -> str:
+        """:return: state directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def user_log_dir(self) -> str:
+        """:return: log directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def user_documents_dir(self) -> str:
+        """:return: documents directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def user_downloads_dir(self) -> str:
+        """:return: downloads directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def user_pictures_dir(self) -> str:
+        """:return: pictures directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def user_videos_dir(self) -> str:
+        """:return: videos directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def user_music_dir(self) -> str:
+        """:return: music directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def user_desktop_dir(self) -> str:
+        """:return: desktop directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def user_runtime_dir(self) -> str:
+        """:return: runtime directory tied to the user"""
+
+    @property
+    @abstractmethod
+    def site_runtime_dir(self) -> str:
+        """:return: runtime directory shared by users"""
+
+    @property
+    def user_data_path(self) -> Path:
+        """:return: data path tied to the user"""
+        return Path(self.user_data_dir)
+
+    @property
+    def site_data_path(self) -> Path:
+        """:return: data path shared by users"""
+        return Path(self.site_data_dir)
+
+    @property
+    def user_config_path(self) -> Path:
+        """:return: config path tied to the user"""
+        return Path(self.user_config_dir)
+
+    @property
+    def site_config_path(self) -> Path:
+        """:return: config path shared by the users"""
+        return Path(self.site_config_dir)
+
+    @property
+    def user_cache_path(self) -> Path:
+        """:return: cache path tied to the user"""
+        return Path(self.user_cache_dir)
+
+    @property
+    def site_cache_path(self) -> Path:
+        """:return: cache path shared by users"""
+        return Path(self.site_cache_dir)
+
+    @property
+    def user_state_path(self) -> Path:
+        """:return: state path tied to the user"""
+        return Path(self.user_state_dir)
+
+    @property
+    def user_log_path(self) -> Path:
+        """:return: log path tied to the user"""
+        return Path(self.user_log_dir)
+
+    @property
+    def user_documents_path(self) -> Path:
+        """:return: documents a path tied to the user"""
+        return Path(self.user_documents_dir)
+
+    @property
+    def user_downloads_path(self) -> Path:
+        """:return: downloads path tied to the user"""
+        return Path(self.user_downloads_dir)
+
+    @property
+    def user_pictures_path(self) -> Path:
+        """:return: pictures path tied to the user"""
+        return Path(self.user_pictures_dir)
+
+    @property
+    def user_videos_path(self) -> Path:
+        """:return: videos path tied to the user"""
+        return Path(self.user_videos_dir)
+
+    @property
+    def user_music_path(self) -> Path:
+        """:return: music path tied to the user"""
+        return Path(self.user_music_dir)
+
+    @property
+    def user_desktop_path(self) -> Path:
+        """:return: desktop path tied to the user"""
+        return Path(self.user_desktop_dir)
+
+    @property
+    def user_runtime_path(self) -> Path:
+        """:return: runtime path tied to the user"""
+        return Path(self.user_runtime_dir)
+
+    @property
+    def site_runtime_path(self) -> Path:
+        """:return: runtime path shared by users"""
+        return Path(self.site_runtime_dir)
+
+    def iter_config_dirs(self) -> Iterator[str]:
+        """:yield: all user and site configuration directories."""
+        yield self.user_config_dir
+        yield self.site_config_dir
+
+    def iter_data_dirs(self) -> Iterator[str]:
+        """:yield: all user and site data directories."""
+        yield self.user_data_dir
+        yield self.site_data_dir
+
+    def iter_cache_dirs(self) -> Iterator[str]:
+        """:yield: all user and site cache directories."""
+        yield self.user_cache_dir
+        yield self.site_cache_dir
+
+    def iter_runtime_dirs(self) -> Iterator[str]:
+        """:yield: all user and site runtime directories."""
+        yield self.user_runtime_dir
+        yield self.site_runtime_dir
+
+    def iter_config_paths(self) -> Iterator[Path]:
+        """:yield: all user and site configuration paths."""
+        for path in self.iter_config_dirs():
+            yield Path(path)
+
+    def iter_data_paths(self) -> Iterator[Path]:
+        """:yield: all user and site data paths."""
+        for path in self.iter_data_dirs():
+            yield Path(path)
+
+    def iter_cache_paths(self) -> Iterator[Path]:
+        """:yield: all user and site cache paths."""
+        for path in self.iter_cache_dirs():
+            yield Path(path)
+
+    def iter_runtime_paths(self) -> Iterator[Path]:
+        """:yield: all user and site runtime paths."""
+        for path in self.iter_runtime_dirs():
+            yield Path(path)
diff --git a/venv/Lib/site-packages/pip/_vendor/platformdirs/macos.py b/venv/Lib/site-packages/pip/_vendor/platformdirs/macos.py
new file mode 100644
index 00000000000..eb1ba5df1da
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/platformdirs/macos.py
@@ -0,0 +1,130 @@
+"""macOS."""
+
+from __future__ import annotations
+
+import os.path
+import sys
+
+from .api import PlatformDirsABC
+
+
+class MacOS(PlatformDirsABC):
+    """
+    Platform directories for the macOS operating system.
+
+    Follows the guidance from
+    `Apple documentation `_.
+    Makes use of the `appname `,
+    `version `,
+    `ensure_exists `.
+
+    """
+
+    @property
+    def user_data_dir(self) -> str:
+        """:return: data directory tied to the user, e.g. ``~/Library/Application Support/$appname/$version``"""
+        return self._append_app_name_and_version(os.path.expanduser("~/Library/Application Support"))  # noqa: PTH111
+
+    @property
+    def site_data_dir(self) -> str:
+        """
+        :return: data directory shared by users, e.g. ``/Library/Application Support/$appname/$version``.
+          If we're using a Python binary managed by `Homebrew `_, the directory
+          will be under the Homebrew prefix, e.g. ``/opt/homebrew/share/$appname/$version``.
+          If `multipath ` is enabled, and we're in Homebrew,
+          the response is a multi-path string separated by ":", e.g.
+          ``/opt/homebrew/share/$appname/$version:/Library/Application Support/$appname/$version``
+        """
+        is_homebrew = sys.prefix.startswith("/opt/homebrew")
+        path_list = [self._append_app_name_and_version("/opt/homebrew/share")] if is_homebrew else []
+        path_list.append(self._append_app_name_and_version("/Library/Application Support"))
+        if self.multipath:
+            return os.pathsep.join(path_list)
+        return path_list[0]
+
+    @property
+    def user_config_dir(self) -> str:
+        """:return: config directory tied to the user, same as `user_data_dir`"""
+        return self.user_data_dir
+
+    @property
+    def site_config_dir(self) -> str:
+        """:return: config directory shared by the users, same as `site_data_dir`"""
+        return self.site_data_dir
+
+    @property
+    def user_cache_dir(self) -> str:
+        """:return: cache directory tied to the user, e.g. ``~/Library/Caches/$appname/$version``"""
+        return self._append_app_name_and_version(os.path.expanduser("~/Library/Caches"))  # noqa: PTH111
+
+    @property
+    def site_cache_dir(self) -> str:
+        """
+        :return: cache directory shared by users, e.g. ``/Library/Caches/$appname/$version``.
+          If we're using a Python binary managed by `Homebrew `_, the directory
+          will be under the Homebrew prefix, e.g. ``/opt/homebrew/var/cache/$appname/$version``.
+          If `multipath ` is enabled, and we're in Homebrew,
+          the response is a multi-path string separated by ":", e.g.
+          ``/opt/homebrew/var/cache/$appname/$version:/Library/Caches/$appname/$version``
+        """
+        is_homebrew = sys.prefix.startswith("/opt/homebrew")
+        path_list = [self._append_app_name_and_version("/opt/homebrew/var/cache")] if is_homebrew else []
+        path_list.append(self._append_app_name_and_version("/Library/Caches"))
+        if self.multipath:
+            return os.pathsep.join(path_list)
+        return path_list[0]
+
+    @property
+    def user_state_dir(self) -> str:
+        """:return: state directory tied to the user, same as `user_data_dir`"""
+        return self.user_data_dir
+
+    @property
+    def user_log_dir(self) -> str:
+        """:return: log directory tied to the user, e.g. ``~/Library/Logs/$appname/$version``"""
+        return self._append_app_name_and_version(os.path.expanduser("~/Library/Logs"))  # noqa: PTH111
+
+    @property
+    def user_documents_dir(self) -> str:
+        """:return: documents directory tied to the user, e.g. ``~/Documents``"""
+        return os.path.expanduser("~/Documents")  # noqa: PTH111
+
+    @property
+    def user_downloads_dir(self) -> str:
+        """:return: downloads directory tied to the user, e.g. ``~/Downloads``"""
+        return os.path.expanduser("~/Downloads")  # noqa: PTH111
+
+    @property
+    def user_pictures_dir(self) -> str:
+        """:return: pictures directory tied to the user, e.g. ``~/Pictures``"""
+        return os.path.expanduser("~/Pictures")  # noqa: PTH111
+
+    @property
+    def user_videos_dir(self) -> str:
+        """:return: videos directory tied to the user, e.g. ``~/Movies``"""
+        return os.path.expanduser("~/Movies")  # noqa: PTH111
+
+    @property
+    def user_music_dir(self) -> str:
+        """:return: music directory tied to the user, e.g. ``~/Music``"""
+        return os.path.expanduser("~/Music")  # noqa: PTH111
+
+    @property
+    def user_desktop_dir(self) -> str:
+        """:return: desktop directory tied to the user, e.g. ``~/Desktop``"""
+        return os.path.expanduser("~/Desktop")  # noqa: PTH111
+
+    @property
+    def user_runtime_dir(self) -> str:
+        """:return: runtime directory tied to the user, e.g. ``~/Library/Caches/TemporaryItems/$appname/$version``"""
+        return self._append_app_name_and_version(os.path.expanduser("~/Library/Caches/TemporaryItems"))  # noqa: PTH111
+
+    @property
+    def site_runtime_dir(self) -> str:
+        """:return: runtime directory shared by users, same as `user_runtime_dir`"""
+        return self.user_runtime_dir
+
+
+__all__ = [
+    "MacOS",
+]
diff --git a/venv/Lib/site-packages/pip/_vendor/platformdirs/py.typed b/venv/Lib/site-packages/pip/_vendor/platformdirs/py.typed
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/venv/Lib/site-packages/pip/_vendor/platformdirs/unix.py b/venv/Lib/site-packages/pip/_vendor/platformdirs/unix.py
new file mode 100644
index 00000000000..9500ade614c
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/platformdirs/unix.py
@@ -0,0 +1,275 @@
+"""Unix."""
+
+from __future__ import annotations
+
+import os
+import sys
+from configparser import ConfigParser
+from pathlib import Path
+from typing import Iterator, NoReturn
+
+from .api import PlatformDirsABC
+
+if sys.platform == "win32":
+
+    def getuid() -> NoReturn:
+        msg = "should only be used on Unix"
+        raise RuntimeError(msg)
+
+else:
+    from os import getuid
+
+
+class Unix(PlatformDirsABC):  # noqa: PLR0904
+    """
+    On Unix/Linux, we follow the `XDG Basedir Spec `_.
+
+    The spec allows overriding directories with environment variables. The examples shown are the default values,
+    alongside the name of the environment variable that overrides them. Makes use of the `appname
+    `, `version `, `multipath
+    `, `opinion `, `ensure_exists
+    `.
+
+    """
+
+    @property
+    def user_data_dir(self) -> str:
+        """
+        :return: data directory tied to the user, e.g. ``~/.local/share/$appname/$version`` or
+         ``$XDG_DATA_HOME/$appname/$version``
+        """
+        path = os.environ.get("XDG_DATA_HOME", "")
+        if not path.strip():
+            path = os.path.expanduser("~/.local/share")  # noqa: PTH111
+        return self._append_app_name_and_version(path)
+
+    @property
+    def _site_data_dirs(self) -> list[str]:
+        path = os.environ.get("XDG_DATA_DIRS", "")
+        if not path.strip():
+            path = f"/usr/local/share{os.pathsep}/usr/share"
+        return [self._append_app_name_and_version(p) for p in path.split(os.pathsep)]
+
+    @property
+    def site_data_dir(self) -> str:
+        """
+        :return: data directories shared by users (if `multipath ` is
+         enabled and ``XDG_DATA_DIRS`` is set and a multi path the response is also a multi path separated by the
+         OS path separator), e.g. ``/usr/local/share/$appname/$version`` or ``/usr/share/$appname/$version``
+        """
+        # XDG default for $XDG_DATA_DIRS; only first, if multipath is False
+        dirs = self._site_data_dirs
+        if not self.multipath:
+            return dirs[0]
+        return os.pathsep.join(dirs)
+
+    @property
+    def user_config_dir(self) -> str:
+        """
+        :return: config directory tied to the user, e.g. ``~/.config/$appname/$version`` or
+         ``$XDG_CONFIG_HOME/$appname/$version``
+        """
+        path = os.environ.get("XDG_CONFIG_HOME", "")
+        if not path.strip():
+            path = os.path.expanduser("~/.config")  # noqa: PTH111
+        return self._append_app_name_and_version(path)
+
+    @property
+    def _site_config_dirs(self) -> list[str]:
+        path = os.environ.get("XDG_CONFIG_DIRS", "")
+        if not path.strip():
+            path = "/etc/xdg"
+        return [self._append_app_name_and_version(p) for p in path.split(os.pathsep)]
+
+    @property
+    def site_config_dir(self) -> str:
+        """
+        :return: config directories shared by users (if `multipath `
+         is enabled and ``XDG_CONFIG_DIRS`` is set and a multi path the response is also a multi path separated by
+         the OS path separator), e.g. ``/etc/xdg/$appname/$version``
+        """
+        # XDG default for $XDG_CONFIG_DIRS only first, if multipath is False
+        dirs = self._site_config_dirs
+        if not self.multipath:
+            return dirs[0]
+        return os.pathsep.join(dirs)
+
+    @property
+    def user_cache_dir(self) -> str:
+        """
+        :return: cache directory tied to the user, e.g. ``~/.cache/$appname/$version`` or
+         ``~/$XDG_CACHE_HOME/$appname/$version``
+        """
+        path = os.environ.get("XDG_CACHE_HOME", "")
+        if not path.strip():
+            path = os.path.expanduser("~/.cache")  # noqa: PTH111
+        return self._append_app_name_and_version(path)
+
+    @property
+    def site_cache_dir(self) -> str:
+        """:return: cache directory shared by users, e.g. ``/var/cache/$appname/$version``"""
+        return self._append_app_name_and_version("/var/cache")
+
+    @property
+    def user_state_dir(self) -> str:
+        """
+        :return: state directory tied to the user, e.g. ``~/.local/state/$appname/$version`` or
+         ``$XDG_STATE_HOME/$appname/$version``
+        """
+        path = os.environ.get("XDG_STATE_HOME", "")
+        if not path.strip():
+            path = os.path.expanduser("~/.local/state")  # noqa: PTH111
+        return self._append_app_name_and_version(path)
+
+    @property
+    def user_log_dir(self) -> str:
+        """:return: log directory tied to the user, same as `user_state_dir` if not opinionated else ``log`` in it"""
+        path = self.user_state_dir
+        if self.opinion:
+            path = os.path.join(path, "log")  # noqa: PTH118
+            self._optionally_create_directory(path)
+        return path
+
+    @property
+    def user_documents_dir(self) -> str:
+        """:return: documents directory tied to the user, e.g. ``~/Documents``"""
+        return _get_user_media_dir("XDG_DOCUMENTS_DIR", "~/Documents")
+
+    @property
+    def user_downloads_dir(self) -> str:
+        """:return: downloads directory tied to the user, e.g. ``~/Downloads``"""
+        return _get_user_media_dir("XDG_DOWNLOAD_DIR", "~/Downloads")
+
+    @property
+    def user_pictures_dir(self) -> str:
+        """:return: pictures directory tied to the user, e.g. ``~/Pictures``"""
+        return _get_user_media_dir("XDG_PICTURES_DIR", "~/Pictures")
+
+    @property
+    def user_videos_dir(self) -> str:
+        """:return: videos directory tied to the user, e.g. ``~/Videos``"""
+        return _get_user_media_dir("XDG_VIDEOS_DIR", "~/Videos")
+
+    @property
+    def user_music_dir(self) -> str:
+        """:return: music directory tied to the user, e.g. ``~/Music``"""
+        return _get_user_media_dir("XDG_MUSIC_DIR", "~/Music")
+
+    @property
+    def user_desktop_dir(self) -> str:
+        """:return: desktop directory tied to the user, e.g. ``~/Desktop``"""
+        return _get_user_media_dir("XDG_DESKTOP_DIR", "~/Desktop")
+
+    @property
+    def user_runtime_dir(self) -> str:
+        """
+        :return: runtime directory tied to the user, e.g. ``/run/user/$(id -u)/$appname/$version`` or
+         ``$XDG_RUNTIME_DIR/$appname/$version``.
+
+         For FreeBSD/OpenBSD/NetBSD, it would return ``/var/run/user/$(id -u)/$appname/$version`` if
+         exists, otherwise ``/tmp/runtime-$(id -u)/$appname/$version``, if``$XDG_RUNTIME_DIR``
+         is not set.
+        """
+        path = os.environ.get("XDG_RUNTIME_DIR", "")
+        if not path.strip():
+            if sys.platform.startswith(("freebsd", "openbsd", "netbsd")):
+                path = f"/var/run/user/{getuid()}"
+                if not Path(path).exists():
+                    path = f"/tmp/runtime-{getuid()}"  # noqa: S108
+            else:
+                path = f"/run/user/{getuid()}"
+        return self._append_app_name_and_version(path)
+
+    @property
+    def site_runtime_dir(self) -> str:
+        """
+        :return: runtime directory shared by users, e.g. ``/run/$appname/$version`` or \
+        ``$XDG_RUNTIME_DIR/$appname/$version``.
+
+        Note that this behaves almost exactly like `user_runtime_dir` if ``$XDG_RUNTIME_DIR`` is set, but will
+        fall back to paths associated to the root user instead of a regular logged-in user if it's not set.
+
+        If you wish to ensure that a logged-in root user path is returned e.g. ``/run/user/0``, use `user_runtime_dir`
+        instead.
+
+        For FreeBSD/OpenBSD/NetBSD, it would return ``/var/run/$appname/$version`` if ``$XDG_RUNTIME_DIR`` is not set.
+        """
+        path = os.environ.get("XDG_RUNTIME_DIR", "")
+        if not path.strip():
+            if sys.platform.startswith(("freebsd", "openbsd", "netbsd")):
+                path = "/var/run"
+            else:
+                path = "/run"
+        return self._append_app_name_and_version(path)
+
+    @property
+    def site_data_path(self) -> Path:
+        """:return: data path shared by users. Only return the first item, even if ``multipath`` is set to ``True``"""
+        return self._first_item_as_path_if_multipath(self.site_data_dir)
+
+    @property
+    def site_config_path(self) -> Path:
+        """:return: config path shared by the users, returns the first item, even if ``multipath`` is set to ``True``"""
+        return self._first_item_as_path_if_multipath(self.site_config_dir)
+
+    @property
+    def site_cache_path(self) -> Path:
+        """:return: cache path shared by users. Only return the first item, even if ``multipath`` is set to ``True``"""
+        return self._first_item_as_path_if_multipath(self.site_cache_dir)
+
+    def _first_item_as_path_if_multipath(self, directory: str) -> Path:
+        if self.multipath:
+            # If multipath is True, the first path is returned.
+            directory = directory.split(os.pathsep)[0]
+        return Path(directory)
+
+    def iter_config_dirs(self) -> Iterator[str]:
+        """:yield: all user and site configuration directories."""
+        yield self.user_config_dir
+        yield from self._site_config_dirs
+
+    def iter_data_dirs(self) -> Iterator[str]:
+        """:yield: all user and site data directories."""
+        yield self.user_data_dir
+        yield from self._site_data_dirs
+
+
+def _get_user_media_dir(env_var: str, fallback_tilde_path: str) -> str:
+    media_dir = _get_user_dirs_folder(env_var)
+    if media_dir is None:
+        media_dir = os.environ.get(env_var, "").strip()
+        if not media_dir:
+            media_dir = os.path.expanduser(fallback_tilde_path)  # noqa: PTH111
+
+    return media_dir
+
+
+def _get_user_dirs_folder(key: str) -> str | None:
+    """
+    Return directory from user-dirs.dirs config file.
+
+    See https://freedesktop.org/wiki/Software/xdg-user-dirs/.
+
+    """
+    user_dirs_config_path = Path(Unix().user_config_dir) / "user-dirs.dirs"
+    if user_dirs_config_path.exists():
+        parser = ConfigParser()
+
+        with user_dirs_config_path.open() as stream:
+            # Add fake section header, so ConfigParser doesn't complain
+            parser.read_string(f"[top]\n{stream.read()}")
+
+        if key not in parser["top"]:
+            return None
+
+        path = parser["top"][key].strip('"')
+        # Handle relative home paths
+        return path.replace("$HOME", os.path.expanduser("~"))  # noqa: PTH111
+
+    return None
+
+
+__all__ = [
+    "Unix",
+]
diff --git a/venv/Lib/site-packages/pip/_vendor/platformdirs/version.py b/venv/Lib/site-packages/pip/_vendor/platformdirs/version.py
new file mode 100644
index 00000000000..6483ddce0bc
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/platformdirs/version.py
@@ -0,0 +1,16 @@
+# file generated by setuptools_scm
+# don't change, don't track in version control
+TYPE_CHECKING = False
+if TYPE_CHECKING:
+    from typing import Tuple, Union
+    VERSION_TUPLE = Tuple[Union[int, str], ...]
+else:
+    VERSION_TUPLE = object
+
+version: str
+__version__: str
+__version_tuple__: VERSION_TUPLE
+version_tuple: VERSION_TUPLE
+
+__version__ = version = '4.2.2'
+__version_tuple__ = version_tuple = (4, 2, 2)
diff --git a/venv/Lib/site-packages/pip/_vendor/platformdirs/windows.py b/venv/Lib/site-packages/pip/_vendor/platformdirs/windows.py
new file mode 100644
index 00000000000..d7bc96091a2
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/platformdirs/windows.py
@@ -0,0 +1,272 @@
+"""Windows."""
+
+from __future__ import annotations
+
+import os
+import sys
+from functools import lru_cache
+from typing import TYPE_CHECKING
+
+from .api import PlatformDirsABC
+
+if TYPE_CHECKING:
+    from collections.abc import Callable
+
+
+class Windows(PlatformDirsABC):
+    """
+    `MSDN on where to store app data files `_.
+
+    Makes use of the `appname `, `appauthor
+    `, `version `, `roaming
+    `, `opinion `, `ensure_exists
+    `.
+
+    """
+
+    @property
+    def user_data_dir(self) -> str:
+        """
+        :return: data directory tied to the user, e.g.
+         ``%USERPROFILE%\\AppData\\Local\\$appauthor\\$appname`` (not roaming) or
+         ``%USERPROFILE%\\AppData\\Roaming\\$appauthor\\$appname`` (roaming)
+        """
+        const = "CSIDL_APPDATA" if self.roaming else "CSIDL_LOCAL_APPDATA"
+        path = os.path.normpath(get_win_folder(const))
+        return self._append_parts(path)
+
+    def _append_parts(self, path: str, *, opinion_value: str | None = None) -> str:
+        params = []
+        if self.appname:
+            if self.appauthor is not False:
+                author = self.appauthor or self.appname
+                params.append(author)
+            params.append(self.appname)
+            if opinion_value is not None and self.opinion:
+                params.append(opinion_value)
+            if self.version:
+                params.append(self.version)
+        path = os.path.join(path, *params)  # noqa: PTH118
+        self._optionally_create_directory(path)
+        return path
+
+    @property
+    def site_data_dir(self) -> str:
+        """:return: data directory shared by users, e.g. ``C:\\ProgramData\\$appauthor\\$appname``"""
+        path = os.path.normpath(get_win_folder("CSIDL_COMMON_APPDATA"))
+        return self._append_parts(path)
+
+    @property
+    def user_config_dir(self) -> str:
+        """:return: config directory tied to the user, same as `user_data_dir`"""
+        return self.user_data_dir
+
+    @property
+    def site_config_dir(self) -> str:
+        """:return: config directory shared by the users, same as `site_data_dir`"""
+        return self.site_data_dir
+
+    @property
+    def user_cache_dir(self) -> str:
+        """
+        :return: cache directory tied to the user (if opinionated with ``Cache`` folder within ``$appname``) e.g.
+         ``%USERPROFILE%\\AppData\\Local\\$appauthor\\$appname\\Cache\\$version``
+        """
+        path = os.path.normpath(get_win_folder("CSIDL_LOCAL_APPDATA"))
+        return self._append_parts(path, opinion_value="Cache")
+
+    @property
+    def site_cache_dir(self) -> str:
+        """:return: cache directory shared by users, e.g. ``C:\\ProgramData\\$appauthor\\$appname\\Cache\\$version``"""
+        path = os.path.normpath(get_win_folder("CSIDL_COMMON_APPDATA"))
+        return self._append_parts(path, opinion_value="Cache")
+
+    @property
+    def user_state_dir(self) -> str:
+        """:return: state directory tied to the user, same as `user_data_dir`"""
+        return self.user_data_dir
+
+    @property
+    def user_log_dir(self) -> str:
+        """:return: log directory tied to the user, same as `user_data_dir` if not opinionated else ``Logs`` in it"""
+        path = self.user_data_dir
+        if self.opinion:
+            path = os.path.join(path, "Logs")  # noqa: PTH118
+            self._optionally_create_directory(path)
+        return path
+
+    @property
+    def user_documents_dir(self) -> str:
+        """:return: documents directory tied to the user e.g. ``%USERPROFILE%\\Documents``"""
+        return os.path.normpath(get_win_folder("CSIDL_PERSONAL"))
+
+    @property
+    def user_downloads_dir(self) -> str:
+        """:return: downloads directory tied to the user e.g. ``%USERPROFILE%\\Downloads``"""
+        return os.path.normpath(get_win_folder("CSIDL_DOWNLOADS"))
+
+    @property
+    def user_pictures_dir(self) -> str:
+        """:return: pictures directory tied to the user e.g. ``%USERPROFILE%\\Pictures``"""
+        return os.path.normpath(get_win_folder("CSIDL_MYPICTURES"))
+
+    @property
+    def user_videos_dir(self) -> str:
+        """:return: videos directory tied to the user e.g. ``%USERPROFILE%\\Videos``"""
+        return os.path.normpath(get_win_folder("CSIDL_MYVIDEO"))
+
+    @property
+    def user_music_dir(self) -> str:
+        """:return: music directory tied to the user e.g. ``%USERPROFILE%\\Music``"""
+        return os.path.normpath(get_win_folder("CSIDL_MYMUSIC"))
+
+    @property
+    def user_desktop_dir(self) -> str:
+        """:return: desktop directory tied to the user, e.g. ``%USERPROFILE%\\Desktop``"""
+        return os.path.normpath(get_win_folder("CSIDL_DESKTOPDIRECTORY"))
+
+    @property
+    def user_runtime_dir(self) -> str:
+        """
+        :return: runtime directory tied to the user, e.g.
+         ``%USERPROFILE%\\AppData\\Local\\Temp\\$appauthor\\$appname``
+        """
+        path = os.path.normpath(os.path.join(get_win_folder("CSIDL_LOCAL_APPDATA"), "Temp"))  # noqa: PTH118
+        return self._append_parts(path)
+
+    @property
+    def site_runtime_dir(self) -> str:
+        """:return: runtime directory shared by users, same as `user_runtime_dir`"""
+        return self.user_runtime_dir
+
+
+def get_win_folder_from_env_vars(csidl_name: str) -> str:
+    """Get folder from environment variables."""
+    result = get_win_folder_if_csidl_name_not_env_var(csidl_name)
+    if result is not None:
+        return result
+
+    env_var_name = {
+        "CSIDL_APPDATA": "APPDATA",
+        "CSIDL_COMMON_APPDATA": "ALLUSERSPROFILE",
+        "CSIDL_LOCAL_APPDATA": "LOCALAPPDATA",
+    }.get(csidl_name)
+    if env_var_name is None:
+        msg = f"Unknown CSIDL name: {csidl_name}"
+        raise ValueError(msg)
+    result = os.environ.get(env_var_name)
+    if result is None:
+        msg = f"Unset environment variable: {env_var_name}"
+        raise ValueError(msg)
+    return result
+
+
+def get_win_folder_if_csidl_name_not_env_var(csidl_name: str) -> str | None:
+    """Get a folder for a CSIDL name that does not exist as an environment variable."""
+    if csidl_name == "CSIDL_PERSONAL":
+        return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Documents")  # noqa: PTH118
+
+    if csidl_name == "CSIDL_DOWNLOADS":
+        return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Downloads")  # noqa: PTH118
+
+    if csidl_name == "CSIDL_MYPICTURES":
+        return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Pictures")  # noqa: PTH118
+
+    if csidl_name == "CSIDL_MYVIDEO":
+        return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Videos")  # noqa: PTH118
+
+    if csidl_name == "CSIDL_MYMUSIC":
+        return os.path.join(os.path.normpath(os.environ["USERPROFILE"]), "Music")  # noqa: PTH118
+    return None
+
+
+def get_win_folder_from_registry(csidl_name: str) -> str:
+    """
+    Get folder from the registry.
+
+    This is a fallback technique at best. I'm not sure if using the registry for these guarantees us the correct answer
+    for all CSIDL_* names.
+
+    """
+    shell_folder_name = {
+        "CSIDL_APPDATA": "AppData",
+        "CSIDL_COMMON_APPDATA": "Common AppData",
+        "CSIDL_LOCAL_APPDATA": "Local AppData",
+        "CSIDL_PERSONAL": "Personal",
+        "CSIDL_DOWNLOADS": "{374DE290-123F-4565-9164-39C4925E467B}",
+        "CSIDL_MYPICTURES": "My Pictures",
+        "CSIDL_MYVIDEO": "My Video",
+        "CSIDL_MYMUSIC": "My Music",
+    }.get(csidl_name)
+    if shell_folder_name is None:
+        msg = f"Unknown CSIDL name: {csidl_name}"
+        raise ValueError(msg)
+    if sys.platform != "win32":  # only needed for mypy type checker to know that this code runs only on Windows
+        raise NotImplementedError
+    import winreg  # noqa: PLC0415
+
+    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders")
+    directory, _ = winreg.QueryValueEx(key, shell_folder_name)
+    return str(directory)
+
+
+def get_win_folder_via_ctypes(csidl_name: str) -> str:
+    """Get folder with ctypes."""
+    # There is no 'CSIDL_DOWNLOADS'.
+    # Use 'CSIDL_PROFILE' (40) and append the default folder 'Downloads' instead.
+    # https://learn.microsoft.com/en-us/windows/win32/shell/knownfolderid
+
+    import ctypes  # noqa: PLC0415
+
+    csidl_const = {
+        "CSIDL_APPDATA": 26,
+        "CSIDL_COMMON_APPDATA": 35,
+        "CSIDL_LOCAL_APPDATA": 28,
+        "CSIDL_PERSONAL": 5,
+        "CSIDL_MYPICTURES": 39,
+        "CSIDL_MYVIDEO": 14,
+        "CSIDL_MYMUSIC": 13,
+        "CSIDL_DOWNLOADS": 40,
+        "CSIDL_DESKTOPDIRECTORY": 16,
+    }.get(csidl_name)
+    if csidl_const is None:
+        msg = f"Unknown CSIDL name: {csidl_name}"
+        raise ValueError(msg)
+
+    buf = ctypes.create_unicode_buffer(1024)
+    windll = getattr(ctypes, "windll")  # noqa: B009 # using getattr to avoid false positive with mypy type checker
+    windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf)
+
+    # Downgrade to short path name if it has high-bit chars.
+    if any(ord(c) > 255 for c in buf):  # noqa: PLR2004
+        buf2 = ctypes.create_unicode_buffer(1024)
+        if windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024):
+            buf = buf2
+
+    if csidl_name == "CSIDL_DOWNLOADS":
+        return os.path.join(buf.value, "Downloads")  # noqa: PTH118
+
+    return buf.value
+
+
+def _pick_get_win_folder() -> Callable[[str], str]:
+    try:
+        import ctypes  # noqa: PLC0415
+    except ImportError:
+        pass
+    else:
+        if hasattr(ctypes, "windll"):
+            return get_win_folder_via_ctypes
+    try:
+        import winreg  # noqa: PLC0415, F401
+    except ImportError:
+        return get_win_folder_from_env_vars
+    else:
+        return get_win_folder_from_registry
+
+
+get_win_folder = lru_cache(maxsize=None)(_pick_get_win_folder())
+
+__all__ = [
+    "Windows",
+]
diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/__init__.py b/venv/Lib/site-packages/pip/_vendor/pygments/__init__.py
new file mode 100644
index 00000000000..60ae9bb8508
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/pygments/__init__.py
@@ -0,0 +1,82 @@
+"""
+    Pygments
+    ~~~~~~~~
+
+    Pygments is a syntax highlighting package written in Python.
+
+    It is a generic syntax highlighter for general use in all kinds of software
+    such as forum systems, wikis or other applications that need to prettify
+    source code. Highlights are:
+
+    * a wide range of common languages and markup formats is supported
+    * special attention is paid to details, increasing quality by a fair amount
+    * support for new languages and formats are added easily
+    * a number of output formats, presently HTML, LaTeX, RTF, SVG, all image
+      formats that PIL supports, and ANSI sequences
+    * it is usable as a command-line tool and as a library
+    * ... and it highlights even Brainfuck!
+
+    The `Pygments master branch`_ is installable with ``easy_install Pygments==dev``.
+
+    .. _Pygments master branch:
+       https://github.com/pygments/pygments/archive/master.zip#egg=Pygments-dev
+
+    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+from io import StringIO, BytesIO
+
+__version__ = '2.18.0'
+__docformat__ = 'restructuredtext'
+
+__all__ = ['lex', 'format', 'highlight']
+
+
+def lex(code, lexer):
+    """
+    Lex `code` with the `lexer` (must be a `Lexer` instance)
+    and return an iterable of tokens. Currently, this only calls
+    `lexer.get_tokens()`.
+    """
+    try:
+        return lexer.get_tokens(code)
+    except TypeError:
+        # Heuristic to catch a common mistake.
+        from pip._vendor.pygments.lexer import RegexLexer
+        if isinstance(lexer, type) and issubclass(lexer, RegexLexer):
+            raise TypeError('lex() argument must be a lexer instance, '
+                            'not a class')
+        raise
+
+
+def format(tokens, formatter, outfile=None):  # pylint: disable=redefined-builtin
+    """
+    Format ``tokens`` (an iterable of tokens) with the formatter ``formatter``
+    (a `Formatter` instance).
+
+    If ``outfile`` is given and a valid file object (an object with a
+    ``write`` method), the result will be written to it, otherwise it
+    is returned as a string.
+    """
+    try:
+        if not outfile:
+            realoutfile = getattr(formatter, 'encoding', None) and BytesIO() or StringIO()
+            formatter.format(tokens, realoutfile)
+            return realoutfile.getvalue()
+        else:
+            formatter.format(tokens, outfile)
+    except TypeError:
+        # Heuristic to catch a common mistake.
+        from pip._vendor.pygments.formatter import Formatter
+        if isinstance(formatter, type) and issubclass(formatter, Formatter):
+            raise TypeError('format() argument must be a formatter instance, '
+                            'not a class')
+        raise
+
+
+def highlight(code, lexer, formatter, outfile=None):
+    """
+    This is the most high-level highlighting function. It combines `lex` and
+    `format` in one function.
+    """
+    return format(lex(code, lexer), formatter, outfile)
diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/__main__.py b/venv/Lib/site-packages/pip/_vendor/pygments/__main__.py
new file mode 100644
index 00000000000..dcc6e5add71
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/pygments/__main__.py
@@ -0,0 +1,17 @@
+"""
+    pygments.__main__
+    ~~~~~~~~~~~~~~~~~
+
+    Main entry point for ``python -m pygments``.
+
+    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+import sys
+from pip._vendor.pygments.cmdline import main
+
+try:
+    sys.exit(main(sys.argv))
+except KeyboardInterrupt:
+    sys.exit(1)
diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/cmdline.py b/venv/Lib/site-packages/pip/_vendor/pygments/cmdline.py
new file mode 100644
index 00000000000..0a7072eff3e
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/pygments/cmdline.py
@@ -0,0 +1,668 @@
+"""
+    pygments.cmdline
+    ~~~~~~~~~~~~~~~~
+
+    Command line interface.
+
+    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+import os
+import sys
+import shutil
+import argparse
+from textwrap import dedent
+
+from pip._vendor.pygments import __version__, highlight
+from pip._vendor.pygments.util import ClassNotFound, OptionError, docstring_headline, \
+    guess_decode, guess_decode_from_terminal, terminal_encoding, \
+    UnclosingTextIOWrapper
+from pip._vendor.pygments.lexers import get_all_lexers, get_lexer_by_name, guess_lexer, \
+    load_lexer_from_file, get_lexer_for_filename, find_lexer_class_for_filename
+from pip._vendor.pygments.lexers.special import TextLexer
+from pip._vendor.pygments.formatters.latex import LatexEmbeddedLexer, LatexFormatter
+from pip._vendor.pygments.formatters import get_all_formatters, get_formatter_by_name, \
+    load_formatter_from_file, get_formatter_for_filename, find_formatter_class
+from pip._vendor.pygments.formatters.terminal import TerminalFormatter
+from pip._vendor.pygments.formatters.terminal256 import Terminal256Formatter, TerminalTrueColorFormatter
+from pip._vendor.pygments.filters import get_all_filters, find_filter_class
+from pip._vendor.pygments.styles import get_all_styles, get_style_by_name
+
+
+def _parse_options(o_strs):
+    opts = {}
+    if not o_strs:
+        return opts
+    for o_str in o_strs:
+        if not o_str.strip():
+            continue
+        o_args = o_str.split(',')
+        for o_arg in o_args:
+            o_arg = o_arg.strip()
+            try:
+                o_key, o_val = o_arg.split('=', 1)
+                o_key = o_key.strip()
+                o_val = o_val.strip()
+            except ValueError:
+                opts[o_arg] = True
+            else:
+                opts[o_key] = o_val
+    return opts
+
+
+def _parse_filters(f_strs):
+    filters = []
+    if not f_strs:
+        return filters
+    for f_str in f_strs:
+        if ':' in f_str:
+            fname, fopts = f_str.split(':', 1)
+            filters.append((fname, _parse_options([fopts])))
+        else:
+            filters.append((f_str, {}))
+    return filters
+
+
+def _print_help(what, name):
+    try:
+        if what == 'lexer':
+            cls = get_lexer_by_name(name)
+            print(f"Help on the {cls.name} lexer:")
+            print(dedent(cls.__doc__))
+        elif what == 'formatter':
+            cls = find_formatter_class(name)
+            print(f"Help on the {cls.name} formatter:")
+            print(dedent(cls.__doc__))
+        elif what == 'filter':
+            cls = find_filter_class(name)
+            print(f"Help on the {name} filter:")
+            print(dedent(cls.__doc__))
+        return 0
+    except (AttributeError, ValueError):
+        print(f"{what} not found!", file=sys.stderr)
+        return 1
+
+
+def _print_list(what):
+    if what == 'lexer':
+        print()
+        print("Lexers:")
+        print("~~~~~~~")
+
+        info = []
+        for fullname, names, exts, _ in get_all_lexers():
+            tup = (', '.join(names)+':', fullname,
+                   exts and '(filenames ' + ', '.join(exts) + ')' or '')
+            info.append(tup)
+        info.sort()
+        for i in info:
+            print(('* {}\n    {} {}').format(*i))
+
+    elif what == 'formatter':
+        print()
+        print("Formatters:")
+        print("~~~~~~~~~~~")
+
+        info = []
+        for cls in get_all_formatters():
+            doc = docstring_headline(cls)
+            tup = (', '.join(cls.aliases) + ':', doc, cls.filenames and
+                   '(filenames ' + ', '.join(cls.filenames) + ')' or '')
+            info.append(tup)
+        info.sort()
+        for i in info:
+            print(('* {}\n    {} {}').format(*i))
+
+    elif what == 'filter':
+        print()
+        print("Filters:")
+        print("~~~~~~~~")
+
+        for name in get_all_filters():
+            cls = find_filter_class(name)
+            print("* " + name + ':')
+            print(f"    {docstring_headline(cls)}")
+
+    elif what == 'style':
+        print()
+        print("Styles:")
+        print("~~~~~~~")
+
+        for name in get_all_styles():
+            cls = get_style_by_name(name)
+            print("* " + name + ':')
+            print(f"    {docstring_headline(cls)}")
+
+
+def _print_list_as_json(requested_items):
+    import json
+    result = {}
+    if 'lexer' in requested_items:
+        info = {}
+        for fullname, names, filenames, mimetypes in get_all_lexers():
+            info[fullname] = {
+                'aliases': names,
+                'filenames': filenames,
+                'mimetypes': mimetypes
+            }
+        result['lexers'] = info
+
+    if 'formatter' in requested_items:
+        info = {}
+        for cls in get_all_formatters():
+            doc = docstring_headline(cls)
+            info[cls.name] = {
+                'aliases': cls.aliases,
+                'filenames': cls.filenames,
+                'doc': doc
+            }
+        result['formatters'] = info
+
+    if 'filter' in requested_items:
+        info = {}
+        for name in get_all_filters():
+            cls = find_filter_class(name)
+            info[name] = {
+                'doc': docstring_headline(cls)
+            }
+        result['filters'] = info
+
+    if 'style' in requested_items:
+        info = {}
+        for name in get_all_styles():
+            cls = get_style_by_name(name)
+            info[name] = {
+                'doc': docstring_headline(cls)
+            }
+        result['styles'] = info
+
+    json.dump(result, sys.stdout)
+
+def main_inner(parser, argns):
+    if argns.help:
+        parser.print_help()
+        return 0
+
+    if argns.V:
+        print(f'Pygments version {__version__}, (c) 2006-2024 by Georg Brandl, Matthäus '
+              'Chajdas and contributors.')
+        return 0
+
+    def is_only_option(opt):
+        return not any(v for (k, v) in vars(argns).items() if k != opt)
+
+    # handle ``pygmentize -L``
+    if argns.L is not None:
+        arg_set = set()
+        for k, v in vars(argns).items():
+            if v:
+                arg_set.add(k)
+
+        arg_set.discard('L')
+        arg_set.discard('json')
+
+        if arg_set:
+            parser.print_help(sys.stderr)
+            return 2
+
+        # print version
+        if not argns.json:
+            main(['', '-V'])
+        allowed_types = {'lexer', 'formatter', 'filter', 'style'}
+        largs = [arg.rstrip('s') for arg in argns.L]
+        if any(arg not in allowed_types for arg in largs):
+            parser.print_help(sys.stderr)
+            return 0
+        if not largs:
+            largs = allowed_types
+        if not argns.json:
+            for arg in largs:
+                _print_list(arg)
+        else:
+            _print_list_as_json(largs)
+        return 0
+
+    # handle ``pygmentize -H``
+    if argns.H:
+        if not is_only_option('H'):
+            parser.print_help(sys.stderr)
+            return 2
+        what, name = argns.H
+        if what not in ('lexer', 'formatter', 'filter'):
+            parser.print_help(sys.stderr)
+            return 2
+        return _print_help(what, name)
+
+    # parse -O options
+    parsed_opts = _parse_options(argns.O or [])
+
+    # parse -P options
+    for p_opt in argns.P or []:
+        try:
+            name, value = p_opt.split('=', 1)
+        except ValueError:
+            parsed_opts[p_opt] = True
+        else:
+            parsed_opts[name] = value
+
+    # encodings
+    inencoding = parsed_opts.get('inencoding', parsed_opts.get('encoding'))
+    outencoding = parsed_opts.get('outencoding', parsed_opts.get('encoding'))
+
+    # handle ``pygmentize -N``
+    if argns.N:
+        lexer = find_lexer_class_for_filename(argns.N)
+        if lexer is None:
+            lexer = TextLexer
+
+        print(lexer.aliases[0])
+        return 0
+
+    # handle ``pygmentize -C``
+    if argns.C:
+        inp = sys.stdin.buffer.read()
+        try:
+            lexer = guess_lexer(inp, inencoding=inencoding)
+        except ClassNotFound:
+            lexer = TextLexer
+
+        print(lexer.aliases[0])
+        return 0
+
+    # handle ``pygmentize -S``
+    S_opt = argns.S
+    a_opt = argns.a
+    if S_opt is not None:
+        f_opt = argns.f
+        if not f_opt:
+            parser.print_help(sys.stderr)
+            return 2
+        if argns.l or argns.INPUTFILE:
+            parser.print_help(sys.stderr)
+            return 2
+
+        try:
+            parsed_opts['style'] = S_opt
+            fmter = get_formatter_by_name(f_opt, **parsed_opts)
+        except ClassNotFound as err:
+            print(err, file=sys.stderr)
+            return 1
+
+        print(fmter.get_style_defs(a_opt or ''))
+        return 0
+
+    # if no -S is given, -a is not allowed
+    if argns.a is not None:
+        parser.print_help(sys.stderr)
+        return 2
+
+    # parse -F options
+    F_opts = _parse_filters(argns.F or [])
+
+    # -x: allow custom (eXternal) lexers and formatters
+    allow_custom_lexer_formatter = bool(argns.x)
+
+    # select lexer
+    lexer = None
+
+    # given by name?
+    lexername = argns.l
+    if lexername:
+        # custom lexer, located relative to user's cwd
+        if allow_custom_lexer_formatter and '.py' in lexername:
+            try:
+                filename = None
+                name = None
+                if ':' in lexername:
+                    filename, name = lexername.rsplit(':', 1)
+
+                    if '.py' in name:
+                        # This can happen on Windows: If the lexername is
+                        # C:\lexer.py -- return to normal load path in that case
+                        name = None
+
+                if filename and name:
+                    lexer = load_lexer_from_file(filename, name,
+                                                 **parsed_opts)
+                else:
+                    lexer = load_lexer_from_file(lexername, **parsed_opts)
+            except ClassNotFound as err:
+                print('Error:', err, file=sys.stderr)
+                return 1
+        else:
+            try:
+                lexer = get_lexer_by_name(lexername, **parsed_opts)
+            except (OptionError, ClassNotFound) as err:
+                print('Error:', err, file=sys.stderr)
+                return 1
+
+    # read input code
+    code = None
+
+    if argns.INPUTFILE:
+        if argns.s:
+            print('Error: -s option not usable when input file specified',
+                  file=sys.stderr)
+            return 2
+
+        infn = argns.INPUTFILE
+        try:
+            with open(infn, 'rb') as infp:
+                code = infp.read()
+        except Exception as err:
+            print('Error: cannot read infile:', err, file=sys.stderr)
+            return 1
+        if not inencoding:
+            code, inencoding = guess_decode(code)
+
+        # do we have to guess the lexer?
+        if not lexer:
+            try:
+                lexer = get_lexer_for_filename(infn, code, **parsed_opts)
+            except ClassNotFound as err:
+                if argns.g:
+                    try:
+                        lexer = guess_lexer(code, **parsed_opts)
+                    except ClassNotFound:
+                        lexer = TextLexer(**parsed_opts)
+                else:
+                    print('Error:', err, file=sys.stderr)
+                    return 1
+            except OptionError as err:
+                print('Error:', err, file=sys.stderr)
+                return 1
+
+    elif not argns.s:  # treat stdin as full file (-s support is later)
+        # read code from terminal, always in binary mode since we want to
+        # decode ourselves and be tolerant with it
+        code = sys.stdin.buffer.read()  # use .buffer to get a binary stream
+        if not inencoding:
+            code, inencoding = guess_decode_from_terminal(code, sys.stdin)
+            # else the lexer will do the decoding
+        if not lexer:
+            try:
+                lexer = guess_lexer(code, **parsed_opts)
+            except ClassNotFound:
+                lexer = TextLexer(**parsed_opts)
+
+    else:  # -s option needs a lexer with -l
+        if not lexer:
+            print('Error: when using -s a lexer has to be selected with -l',
+                  file=sys.stderr)
+            return 2
+
+    # process filters
+    for fname, fopts in F_opts:
+        try:
+            lexer.add_filter(fname, **fopts)
+        except ClassNotFound as err:
+            print('Error:', err, file=sys.stderr)
+            return 1
+
+    # select formatter
+    outfn = argns.o
+    fmter = argns.f
+    if fmter:
+        # custom formatter, located relative to user's cwd
+        if allow_custom_lexer_formatter and '.py' in fmter:
+            try:
+                filename = None
+                name = None
+                if ':' in fmter:
+                    # Same logic as above for custom lexer
+                    filename, name = fmter.rsplit(':', 1)
+
+                    if '.py' in name:
+                        name = None
+
+                if filename and name:
+                    fmter = load_formatter_from_file(filename, name,
+                                                     **parsed_opts)
+                else:
+                    fmter = load_formatter_from_file(fmter, **parsed_opts)
+            except ClassNotFound as err:
+                print('Error:', err, file=sys.stderr)
+                return 1
+        else:
+            try:
+                fmter = get_formatter_by_name(fmter, **parsed_opts)
+            except (OptionError, ClassNotFound) as err:
+                print('Error:', err, file=sys.stderr)
+                return 1
+
+    if outfn:
+        if not fmter:
+            try:
+                fmter = get_formatter_for_filename(outfn, **parsed_opts)
+            except (OptionError, ClassNotFound) as err:
+                print('Error:', err, file=sys.stderr)
+                return 1
+        try:
+            outfile = open(outfn, 'wb')
+        except Exception as err:
+            print('Error: cannot open outfile:', err, file=sys.stderr)
+            return 1
+    else:
+        if not fmter:
+            if os.environ.get('COLORTERM','') in ('truecolor', '24bit'):
+                fmter = TerminalTrueColorFormatter(**parsed_opts)
+            elif '256' in os.environ.get('TERM', ''):
+                fmter = Terminal256Formatter(**parsed_opts)
+            else:
+                fmter = TerminalFormatter(**parsed_opts)
+        outfile = sys.stdout.buffer
+
+    # determine output encoding if not explicitly selected
+    if not outencoding:
+        if outfn:
+            # output file? use lexer encoding for now (can still be None)
+            fmter.encoding = inencoding
+        else:
+            # else use terminal encoding
+            fmter.encoding = terminal_encoding(sys.stdout)
+
+    # provide coloring under Windows, if possible
+    if not outfn and sys.platform in ('win32', 'cygwin') and \
+       fmter.name in ('Terminal', 'Terminal256'):  # pragma: no cover
+        # unfortunately colorama doesn't support binary streams on Py3
+        outfile = UnclosingTextIOWrapper(outfile, encoding=fmter.encoding)
+        fmter.encoding = None
+        try:
+            import colorama.initialise
+        except ImportError:
+            pass
+        else:
+            outfile = colorama.initialise.wrap_stream(
+                outfile, convert=None, strip=None, autoreset=False, wrap=True)
+
+    # When using the LaTeX formatter and the option `escapeinside` is
+    # specified, we need a special lexer which collects escaped text
+    # before running the chosen language lexer.
+    escapeinside = parsed_opts.get('escapeinside', '')
+    if len(escapeinside) == 2 and isinstance(fmter, LatexFormatter):
+        left = escapeinside[0]
+        right = escapeinside[1]
+        lexer = LatexEmbeddedLexer(left, right, lexer)
+
+    # ... and do it!
+    if not argns.s:
+        # process whole input as per normal...
+        try:
+            highlight(code, lexer, fmter, outfile)
+        finally:
+            if outfn:
+                outfile.close()
+        return 0
+    else:
+        # line by line processing of stdin (eg: for 'tail -f')...
+        try:
+            while 1:
+                line = sys.stdin.buffer.readline()
+                if not line:
+                    break
+                if not inencoding:
+                    line = guess_decode_from_terminal(line, sys.stdin)[0]
+                highlight(line, lexer, fmter, outfile)
+                if hasattr(outfile, 'flush'):
+                    outfile.flush()
+            return 0
+        except KeyboardInterrupt:  # pragma: no cover
+            return 0
+        finally:
+            if outfn:
+                outfile.close()
+
+
+class HelpFormatter(argparse.HelpFormatter):
+    def __init__(self, prog, indent_increment=2, max_help_position=16, width=None):
+        if width is None:
+            try:
+                width = shutil.get_terminal_size().columns - 2
+            except Exception:
+                pass
+        argparse.HelpFormatter.__init__(self, prog, indent_increment,
+                                        max_help_position, width)
+
+
+def main(args=sys.argv):
+    """
+    Main command line entry point.
+    """
+    desc = "Highlight an input file and write the result to an output file."
+    parser = argparse.ArgumentParser(description=desc, add_help=False,
+                                     formatter_class=HelpFormatter)
+
+    operation = parser.add_argument_group('Main operation')
+    lexersel = operation.add_mutually_exclusive_group()
+    lexersel.add_argument(
+        '-l', metavar='LEXER',
+        help='Specify the lexer to use.  (Query names with -L.)  If not '
+        'given and -g is not present, the lexer is guessed from the filename.')
+    lexersel.add_argument(
+        '-g', action='store_true',
+        help='Guess the lexer from the file contents, or pass through '
+        'as plain text if nothing can be guessed.')
+    operation.add_argument(
+        '-F', metavar='FILTER[:options]', action='append',
+        help='Add a filter to the token stream.  (Query names with -L.) '
+        'Filter options are given after a colon if necessary.')
+    operation.add_argument(
+        '-f', metavar='FORMATTER',
+        help='Specify the formatter to use.  (Query names with -L.) '
+        'If not given, the formatter is guessed from the output filename, '
+        'and defaults to the terminal formatter if the output is to the '
+        'terminal or an unknown file extension.')
+    operation.add_argument(
+        '-O', metavar='OPTION=value[,OPTION=value,...]', action='append',
+        help='Give options to the lexer and formatter as a comma-separated '
+        'list of key-value pairs. '
+        'Example: `-O bg=light,python=cool`.')
+    operation.add_argument(
+        '-P', metavar='OPTION=value', action='append',
+        help='Give a single option to the lexer and formatter - with this '
+        'you can pass options whose value contains commas and equal signs. '
+        'Example: `-P "heading=Pygments, the Python highlighter"`.')
+    operation.add_argument(
+        '-o', metavar='OUTPUTFILE',
+        help='Where to write the output.  Defaults to standard output.')
+
+    operation.add_argument(
+        'INPUTFILE', nargs='?',
+        help='Where to read the input.  Defaults to standard input.')
+
+    flags = parser.add_argument_group('Operation flags')
+    flags.add_argument(
+        '-v', action='store_true',
+        help='Print a detailed traceback on unhandled exceptions, which '
+        'is useful for debugging and bug reports.')
+    flags.add_argument(
+        '-s', action='store_true',
+        help='Process lines one at a time until EOF, rather than waiting to '
+        'process the entire file.  This only works for stdin, only for lexers '
+        'with no line-spanning constructs, and is intended for streaming '
+        'input such as you get from `tail -f`. '
+        'Example usage: `tail -f sql.log | pygmentize -s -l sql`.')
+    flags.add_argument(
+        '-x', action='store_true',
+        help='Allow custom lexers and formatters to be loaded from a .py file '
+        'relative to the current working directory. For example, '
+        '`-l ./customlexer.py -x`. By default, this option expects a file '
+        'with a class named CustomLexer or CustomFormatter; you can also '
+        'specify your own class name with a colon (`-l ./lexer.py:MyLexer`). '
+        'Users should be very careful not to use this option with untrusted '
+        'files, because it will import and run them.')
+    flags.add_argument('--json', help='Output as JSON. This can '
+        'be only used in conjunction with -L.',
+        default=False,
+        action='store_true')
+
+    special_modes_group = parser.add_argument_group(
+        'Special modes - do not do any highlighting')
+    special_modes = special_modes_group.add_mutually_exclusive_group()
+    special_modes.add_argument(
+        '-S', metavar='STYLE -f formatter',
+        help='Print style definitions for STYLE for a formatter '
+        'given with -f. The argument given by -a is formatter '
+        'dependent.')
+    special_modes.add_argument(
+        '-L', nargs='*', metavar='WHAT',
+        help='List lexers, formatters, styles or filters -- '
+        'give additional arguments for the thing(s) you want to list '
+        '(e.g. "styles"), or omit them to list everything.')
+    special_modes.add_argument(
+        '-N', metavar='FILENAME',
+        help='Guess and print out a lexer name based solely on the given '
+        'filename. Does not take input or highlight anything. If no specific '
+        'lexer can be determined, "text" is printed.')
+    special_modes.add_argument(
+        '-C', action='store_true',
+        help='Like -N, but print out a lexer name based solely on '
+        'a given content from standard input.')
+    special_modes.add_argument(
+        '-H', action='store', nargs=2, metavar=('NAME', 'TYPE'),
+        help='Print detailed help for the object  of type , '
+        'where  is one of "lexer", "formatter" or "filter".')
+    special_modes.add_argument(
+        '-V', action='store_true',
+        help='Print the package version.')
+    special_modes.add_argument(
+        '-h', '--help', action='store_true',
+        help='Print this help.')
+    special_modes_group.add_argument(
+        '-a', metavar='ARG',
+        help='Formatter-specific additional argument for the -S (print '
+        'style sheet) mode.')
+
+    argns = parser.parse_args(args[1:])
+
+    try:
+        return main_inner(parser, argns)
+    except BrokenPipeError:
+        # someone closed our stdout, e.g. by quitting a pager.
+        return 0
+    except Exception:
+        if argns.v:
+            print(file=sys.stderr)
+            print('*' * 65, file=sys.stderr)
+            print('An unhandled exception occurred while highlighting.',
+                  file=sys.stderr)
+            print('Please report the whole traceback to the issue tracker at',
+                  file=sys.stderr)
+            print('.',
+                  file=sys.stderr)
+            print('*' * 65, file=sys.stderr)
+            print(file=sys.stderr)
+            raise
+        import traceback
+        info = traceback.format_exception(*sys.exc_info())
+        msg = info[-1].strip()
+        if len(info) >= 3:
+            # extract relevant file and position info
+            msg += '\n   (f{})'.format(info[-2].split('\n')[0].strip()[1:])
+        print(file=sys.stderr)
+        print('*** Error while highlighting:', file=sys.stderr)
+        print(msg, file=sys.stderr)
+        print('*** If this is a bug you want to report, please rerun with -v.',
+              file=sys.stderr)
+        return 1
diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/console.py b/venv/Lib/site-packages/pip/_vendor/pygments/console.py
new file mode 100644
index 00000000000..4c1a06219ca
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/pygments/console.py
@@ -0,0 +1,70 @@
+"""
+    pygments.console
+    ~~~~~~~~~~~~~~~~
+
+    Format colored console output.
+
+    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+esc = "\x1b["
+
+codes = {}
+codes[""] = ""
+codes["reset"] = esc + "39;49;00m"
+
+codes["bold"] = esc + "01m"
+codes["faint"] = esc + "02m"
+codes["standout"] = esc + "03m"
+codes["underline"] = esc + "04m"
+codes["blink"] = esc + "05m"
+codes["overline"] = esc + "06m"
+
+dark_colors = ["black", "red", "green", "yellow", "blue",
+               "magenta", "cyan", "gray"]
+light_colors = ["brightblack", "brightred", "brightgreen", "brightyellow", "brightblue",
+                "brightmagenta", "brightcyan", "white"]
+
+x = 30
+for dark, light in zip(dark_colors, light_colors):
+    codes[dark] = esc + "%im" % x
+    codes[light] = esc + "%im" % (60 + x)
+    x += 1
+
+del dark, light, x
+
+codes["white"] = codes["bold"]
+
+
+def reset_color():
+    return codes["reset"]
+
+
+def colorize(color_key, text):
+    return codes[color_key] + text + codes["reset"]
+
+
+def ansiformat(attr, text):
+    """
+    Format ``text`` with a color and/or some attributes::
+
+        color       normal color
+        *color*     bold color
+        _color_     underlined color
+        +color+     blinking color
+    """
+    result = []
+    if attr[:1] == attr[-1:] == '+':
+        result.append(codes['blink'])
+        attr = attr[1:-1]
+    if attr[:1] == attr[-1:] == '*':
+        result.append(codes['bold'])
+        attr = attr[1:-1]
+    if attr[:1] == attr[-1:] == '_':
+        result.append(codes['underline'])
+        attr = attr[1:-1]
+    result.append(codes[attr])
+    result.append(text)
+    result.append(codes['reset'])
+    return ''.join(result)
diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/filter.py b/venv/Lib/site-packages/pip/_vendor/pygments/filter.py
new file mode 100644
index 00000000000..aa6f76041b6
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/pygments/filter.py
@@ -0,0 +1,70 @@
+"""
+    pygments.filter
+    ~~~~~~~~~~~~~~~
+
+    Module that implements the default filter.
+
+    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+
+def apply_filters(stream, filters, lexer=None):
+    """
+    Use this method to apply an iterable of filters to
+    a stream. If lexer is given it's forwarded to the
+    filter, otherwise the filter receives `None`.
+    """
+    def _apply(filter_, stream):
+        yield from filter_.filter(lexer, stream)
+    for filter_ in filters:
+        stream = _apply(filter_, stream)
+    return stream
+
+
+def simplefilter(f):
+    """
+    Decorator that converts a function into a filter::
+
+        @simplefilter
+        def lowercase(self, lexer, stream, options):
+            for ttype, value in stream:
+                yield ttype, value.lower()
+    """
+    return type(f.__name__, (FunctionFilter,), {
+        '__module__': getattr(f, '__module__'),
+        '__doc__': f.__doc__,
+        'function': f,
+    })
+
+
+class Filter:
+    """
+    Default filter. Subclass this class or use the `simplefilter`
+    decorator to create own filters.
+    """
+
+    def __init__(self, **options):
+        self.options = options
+
+    def filter(self, lexer, stream):
+        raise NotImplementedError()
+
+
+class FunctionFilter(Filter):
+    """
+    Abstract class used by `simplefilter` to create simple
+    function filters on the fly. The `simplefilter` decorator
+    automatically creates subclasses of this class for
+    functions passed to it.
+    """
+    function = None
+
+    def __init__(self, **options):
+        if not hasattr(self, 'function'):
+            raise TypeError(f'{self.__class__.__name__!r} used without bound function')
+        Filter.__init__(self, **options)
+
+    def filter(self, lexer, stream):
+        # pylint: disable=not-callable
+        yield from self.function(lexer, stream, self.options)
diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py b/venv/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py
new file mode 100644
index 00000000000..9255ca224db
--- /dev/null
+++ b/venv/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py
@@ -0,0 +1,940 @@
+"""
+    pygments.filters
+    ~~~~~~~~~~~~~~~~
+
+    Module containing filter lookup functions and default
+    filters.
+
+    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+import re
+
+from pip._vendor.pygments.token import String, Comment, Keyword, Name, Error, Whitespace, \
+    string_to_tokentype
+from pip._vendor.pygments.filter import Filter
+from pip._vendor.pygments.util import get_list_opt, get_int_opt, get_bool_opt, \
+    get_choice_opt, ClassNotFound, OptionError
+from pip._vendor.pygments.plugin import find_plugin_filters
+
+
+def find_filter_class(filtername):
+    """Lookup a filter by name. Return None if not found."""
+    if filtername in FILTERS:
+        return FILTERS[filtername]
+    for name, cls in find_plugin_filters():
+        if name == filtername:
+            return cls
+    return None
+
+
+def get_filter_by_name(filtername, **options):
+    """Return an instantiated filter.
+
+    Options are passed to the filter initializer if wanted.
+    Raise a ClassNotFound if not found.
+    """
+    cls = find_filter_class(filtername)
+    if cls:
+        return cls(**options)
+    else:
+        raise ClassNotFound(f'filter {filtername!r} not found')
+
+
+def get_all_filters():
+    """Return a generator of all filter names."""
+    yield from FILTERS
+    for name, _ in find_plugin_filters():
+        yield name
+
+
+def _replace_special(ttype, value, regex, specialttype,
+                     replacefunc=lambda x: x):
+    last = 0
+    for match in regex.finditer(value):
+        start, end = match.start(), match.end()
+        if start != last:
+            yield ttype, value[last:start]
+        yield specialttype, replacefunc(value[start:end])
+        last = end
+    if last != len(value):
+        yield ttype, value[last:]
+
+
+class CodeTagFilter(Filter):
+    """Highlight special code tags in comments and docstrings.
+
+    Options accepted:
+
+    `codetags` : list of strings
+       A list of strings that are flagged as code tags.  The default is to
+       highlight ``XXX``, ``TODO``, ``FIXME``, ``BUG`` and ``NOTE``.
+
+    .. versionchanged:: 2.13
+       Now recognizes ``FIXME`` by default.
+    """
+
+    def __init__(self, **options):
+        Filter.__init__(self, **options)
+        tags = get_list_opt(options, 'codetags',
+                            ['XXX', 'TODO', 'FIXME', 'BUG', 'NOTE'])
+        self.tag_re = re.compile(r'\b({})\b'.format('|'.join([
+            re.escape(tag) for tag in tags if tag
+        ])))
+
+    def filter(self, lexer, stream):
+        regex = self.tag_re
+        for ttype, value in stream:
+            if ttype in String.Doc or \
+               ttype in Comment and \
+               ttype not in Comment.Preproc:
+                yield from _replace_special(ttype, value, regex, Comment.Special)
+            else:
+                yield ttype, value
+
+
+class SymbolFilter(Filter):
+    """Convert mathematical symbols such as \\ in Isabelle
+    or \\longrightarrow in LaTeX into Unicode characters.
+
+    This is mostly useful for HTML or console output when you want to
+    approximate the source rendering you'd see in an IDE.
+
+    Options accepted:
+
+    `lang` : string
+       The symbol language. Must be one of ``'isabelle'`` or
+       ``'latex'``.  The default is ``'isabelle'``.
+    """
+
+    latex_symbols = {
+        '\\alpha'                : '\U000003b1',
+        '\\beta'                 : '\U000003b2',
+        '\\gamma'                : '\U000003b3',
+        '\\delta'                : '\U000003b4',
+        '\\varepsilon'           : '\U000003b5',
+        '\\zeta'                 : '\U000003b6',
+        '\\eta'                  : '\U000003b7',
+        '\\vartheta'             : '\U000003b8',
+        '\\iota'                 : '\U000003b9',
+        '\\kappa'                : '\U000003ba',
+        '\\lambda'               : '\U000003bb',
+        '\\mu'                   : '\U000003bc',
+        '\\nu'                   : '\U000003bd',
+        '\\xi'                   : '\U000003be',
+        '\\pi'                   : '\U000003c0',
+        '\\varrho'               : '\U000003c1',
+        '\\sigma'                : '\U000003c3',
+        '\\tau'                  : '\U000003c4',
+        '\\upsilon'              : '\U000003c5',
+        '\\varphi'               : '\U000003c6',
+        '\\chi'                  : '\U000003c7',
+        '\\psi'                  : '\U000003c8',
+        '\\omega'                : '\U000003c9',
+        '\\Gamma'                : '\U00000393',
+        '\\Delta'                : '\U00000394',
+        '\\Theta'                : '\U00000398',
+        '\\Lambda'               : '\U0000039b',
+        '\\Xi'                   : '\U0000039e',
+        '\\Pi'                   : '\U000003a0',
+        '\\Sigma'                : '\U000003a3',
+        '\\Upsilon'              : '\U000003a5',
+        '\\Phi'                  : '\U000003a6',
+        '\\Psi'                  : '\U000003a8',
+        '\\Omega'                : '\U000003a9',
+        '\\leftarrow'            : '\U00002190',
+        '\\longleftarrow'        : '\U000027f5',
+        '\\rightarrow'           : '\U00002192',
+        '\\longrightarrow'       : '\U000027f6',
+        '\\Leftarrow'            : '\U000021d0',
+        '\\Longleftarrow'        : '\U000027f8',
+        '\\Rightarrow'           : '\U000021d2',
+        '\\Longrightarrow'       : '\U000027f9',
+        '\\leftrightarrow'       : '\U00002194',
+        '\\longleftrightarrow'   : '\U000027f7',
+        '\\Leftrightarrow'       : '\U000021d4',
+        '\\Longleftrightarrow'   : '\U000027fa',
+        '\\mapsto'               : '\U000021a6',
+        '\\longmapsto'           : '\U000027fc',
+        '\\relbar'               : '\U00002500',
+        '\\Relbar'               : '\U00002550',
+        '\\hookleftarrow'        : '\U000021a9',
+        '\\hookrightarrow'       : '\U000021aa',
+        '\\leftharpoondown'      : '\U000021bd',
+        '\\rightharpoondown'     : '\U000021c1',
+        '\\leftharpoonup'        : '\U000021bc',
+        '\\rightharpoonup'       : '\U000021c0',
+        '\\rightleftharpoons'    : '\U000021cc',
+        '\\leadsto'              : '\U0000219d',
+        '\\downharpoonleft'      : '\U000021c3',
+        '\\downharpoonright'     : '\U000021c2',
+        '\\upharpoonleft'        : '\U000021bf',
+        '\\upharpoonright'       : '\U000021be',
+        '\\restriction'          : '\U000021be',
+        '\\uparrow'              : '\U00002191',
+        '\\Uparrow'              : '\U000021d1',
+        '\\downarrow'            : '\U00002193',
+        '\\Downarrow'            : '\U000021d3',
+        '\\updownarrow'          : '\U00002195',
+        '\\Updownarrow'          : '\U000021d5',
+        '\\langle'               : '\U000027e8',
+        '\\rangle'               : '\U000027e9',
+        '\\lceil'                : '\U00002308',
+        '\\rceil'                : '\U00002309',
+        '\\lfloor'               : '\U0000230a',
+        '\\rfloor'               : '\U0000230b',
+        '\\flqq'                 : '\U000000ab',
+        '\\frqq'                 : '\U000000bb',
+        '\\bot'                  : '\U000022a5',
+        '\\top'                  : '\U000022a4',
+        '\\wedge'                : '\U00002227',
+        '\\bigwedge'             : '\U000022c0',
+        '\\vee'                  : '\U00002228',
+        '\\bigvee'               : '\U000022c1',
+        '\\forall'               : '\U00002200',
+        '\\exists'               : '\U00002203',
+        '\\nexists'              : '\U00002204',
+        '\\neg'                  : '\U000000ac',
+        '\\Box'                  : '\U000025a1',
+        '\\Diamond'              : '\U000025c7',
+        '\\vdash'                : '\U000022a2',
+        '\\models'               : '\U000022a8',
+        '\\dashv'                : '\U000022a3',
+        '\\surd'                 : '\U0000221a',
+        '\\le'                   : '\U00002264',
+        '\\ge'                   : '\U00002265',
+        '\\ll'                   : '\U0000226a',
+        '\\gg'                   : '\U0000226b',
+        '\\lesssim'              : '\U00002272',
+        '\\gtrsim'               : '\U00002273',
+        '\\lessapprox'           : '\U00002a85',
+        '\\gtrapprox'            : '\U00002a86',
+        '\\in'                   : '\U00002208',
+        '\\notin'                : '\U00002209',
+        '\\subset'               : '\U00002282',
+        '\\supset'               : '\U00002283',
+        '\\subseteq'             : '\U00002286',
+        '\\supseteq'             : '\U00002287',
+        '\\sqsubset'             : '\U0000228f',
+        '\\sqsupset'             : '\U00002290',
+        '\\sqsubseteq'           : '\U00002291',
+        '\\sqsupseteq'           : '\U00002292',
+        '\\cap'                  : '\U00002229',
+        '\\bigcap'               : '\U000022c2',
+        '\\cup'                  : '\U0000222a',
+        '\\bigcup'               : '\U000022c3',
+        '\\sqcup'                : '\U00002294',
+        '\\bigsqcup'             : '\U00002a06',
+        '\\sqcap'                : '\U00002293',
+        '\\Bigsqcap'             : '\U00002a05',
+        '\\setminus'             : '\U00002216',
+        '\\propto'               : '\U0000221d',
+        '\\uplus'                : '\U0000228e',
+        '\\bigplus'              : '\U00002a04',
+        '\\sim'                  : '\U0000223c',
+        '\\doteq'                : '\U00002250',
+        '\\simeq'                : '\U00002243',
+        '\\approx'               : '\U00002248',
+        '\\asymp'                : '\U0000224d',
+        '\\cong'                 : '\U00002245',
+        '\\equiv'                : '\U00002261',
+        '\\Join'                 : '\U000022c8',
+        '\\bowtie'               : '\U00002a1d',
+        '\\prec'                 : '\U0000227a',
+        '\\succ'                 : '\U0000227b',
+        '\\preceq'               : '\U0000227c',
+        '\\succeq'               : '\U0000227d',
+        '\\parallel'             : '\U00002225',
+        '\\mid'                  : '\U000000a6',
+        '\\pm'                   : '\U000000b1',
+        '\\mp'                   : '\U00002213',
+        '\\times'                : '\U000000d7',
+        '\\div'                  : '\U000000f7',
+        '\\cdot'                 : '\U000022c5',
+        '\\star'                 : '\U000022c6',
+        '\\circ'                 : '\U00002218',
+        '\\dagger'               : '\U00002020',
+        '\\ddagger'              : '\U00002021',
+        '\\lhd'                  : '\U000022b2',
+        '\\rhd'                  : '\U000022b3',
+        '\\unlhd'                : '\U000022b4',
+        '\\unrhd'                : '\U000022b5',
+        '\\triangleleft'         : '\U000025c3',
+        '\\triangleright'        : '\U000025b9',
+        '\\triangle'             : '\U000025b3',
+        '\\triangleq'            : '\U0000225c',
+        '\\oplus'                : '\U00002295',
+        '\\bigoplus'             : '\U00002a01',
+        '\\otimes'               : '\U00002297',
+        '\\bigotimes'            : '\U00002a02',
+        '\\odot'                 : '\U00002299',
+        '\\bigodot'              : '\U00002a00',
+        '\\ominus'               : '\U00002296',
+        '\\oslash'               : '\U00002298',
+        '\\dots'                 : '\U00002026',
+        '\\cdots'                : '\U000022ef',
+        '\\sum'                  : '\U00002211',
+        '\\prod'                 : '\U0000220f',
+        '\\coprod'               : '\U00002210',
+        '\\infty'                : '\U0000221e',
+        '\\int'                  : '\U0000222b',
+        '\\oint'                 : '\U0000222e',
+        '\\clubsuit'             : '\U00002663',
+        '\\diamondsuit'          : '\U00002662',
+        '\\heartsuit'            : '\U00002661',
+        '\\spadesuit'            : '\U00002660',
+        '\\aleph'                : '\U00002135',
+        '\\emptyset'             : '\U00002205',
+        '\\nabla'                : '\U00002207',
+        '\\partial'              : '\U00002202',
+        '\\flat'                 : '\U0000266d',
+        '\\natural'              : '\U0000266e',
+        '\\sharp'                : '\U0000266f',
+        '\\angle'                : '\U00002220',
+        '\\copyright'            : '\U000000a9',
+        '\\textregistered'       : '\U000000ae',
+        '\\textonequarter'       : '\U000000bc',
+        '\\textonehalf'          : '\U000000bd',
+        '\\textthreequarters'    : '\U000000be',
+        '\\textordfeminine'      : '\U000000aa',
+        '\\textordmasculine'     : '\U000000ba',
+        '\\euro'                 : '\U000020ac',
+        '\\pounds'               : '\U000000a3',
+        '\\yen'                  : '\U000000a5',
+        '\\textcent'             : '\U000000a2',
+        '\\textcurrency'         : '\U000000a4',
+        '\\textdegree'           : '\U000000b0',
+    }
+
+    isabelle_symbols = {
+        '\\'                 : '\U0001d7ec',
+        '\\'                  : '\U0001d7ed',
+        '\\'                  : '\U0001d7ee',
+        '\\'                : '\U0001d7ef',
+        '\\'                 : '\U0001d7f0',
+        '\\'                 : '\U0001d7f1',
+        '\\'                  : '\U0001d7f2',
+        '\\'                : '\U0001d7f3',
+        '\\'                : '\U0001d7f4',
+        '\\'                 : '\U0001d7f5',
+        '\\'                    : '\U0001d49c',
+        '\\'                    : '\U0000212c',
+        '\\'                    : '\U0001d49e',
+        '\\'                    : '\U0001d49f',
+        '\\'                    : '\U00002130',
+        '\\'                    : '\U00002131',
+        '\\'                    : '\U0001d4a2',
+        '\\'                    : '\U0000210b',
+        '\\'                    : '\U00002110',
+        '\\'                    : '\U0001d4a5',
+        '\\'                    : '\U0001d4a6',
+        '\\'                    : '\U00002112',
+        '\\'                    : '\U00002133',
+        '\\'                    : '\U0001d4a9',
+        '\\'                    : '\U0001d4aa',
+        '\\

' : '\U0001d5c9', + '\\' : '\U0001d5ca', + '\\' : '\U0001d5cb', + '\\' : '\U0001d5cc', + '\\' : '\U0001d5cd', + '\\' : '\U0001d5ce', + '\\' : '\U0001d5cf', + '\\' : '\U0001d5d0', + '\\' : '\U0001d5d1', + '\\' : '\U0001d5d2', + '\\' : '\U0001d5d3', + '\\' : '\U0001d504', + '\\' : '\U0001d505', + '\\' : '\U0000212d', + '\\

' : '\U0001d507', + '\\' : '\U0001d508', + '\\' : '\U0001d509', + '\\' : '\U0001d50a', + '\\' : '\U0000210c', + '\\' : '\U00002111', + '\\' : '\U0001d50d', + '\\' : '\U0001d50e', + '\\' : '\U0001d50f', + '\\' : '\U0001d510', + '\\' : '\U0001d511', + '\\' : '\U0001d512', + '\\' : '\U0001d513', + '\\' : '\U0001d514', + '\\' : '\U0000211c', + '\\' : '\U0001d516', + '\\' : '\U0001d517', + '\\' : '\U0001d518', + '\\' : '\U0001d519', + '\\' : '\U0001d51a', + '\\' : '\U0001d51b', + '\\' : '\U0001d51c', + '\\' : '\U00002128', + '\\' : '\U0001d51e', + '\\' : '\U0001d51f', + '\\' : '\U0001d520', + '\\
' : '\U0001d521', + '\\' : '\U0001d522', + '\\' : '\U0001d523', + '\\' : '\U0001d524', + '\\' : '\U0001d525', + '\\' : '\U0001d526', + '\\' : '\U0001d527', + '\\' : '\U0001d528', + '\\' : '\U0001d529', + '\\' : '\U0001d52a', + '\\' : '\U0001d52b', + '\\' : '\U0001d52c', + '\\' : '\U0001d52d', + '\\' : '\U0001d52e', + '\\' : '\U0001d52f', + '\\' : '\U0001d530', + '\\' : '\U0001d531', + '\\' : '\U0001d532', + '\\' : '\U0001d533', + '\\' : '\U0001d534', + '\\' : '\U0001d535', + '\\' : '\U0001d536', + '\\' : '\U0001d537', + '\\' : '\U000003b1', + '\\' : '\U000003b2', + '\\' : '\U000003b3', + '\\' : '\U000003b4', + '\\' : '\U000003b5', + '\\' : '\U000003b6', + '\\' : '\U000003b7', + '\\' : '\U000003b8', + '\\' : '\U000003b9', + '\\' : '\U000003ba', + '\\' : '\U000003bb', + '\\' : '\U000003bc', + '\\' : '\U000003bd', + '\\' : '\U000003be', + '\\' : '\U000003c0', + '\\' : '\U000003c1', + '\\' : '\U000003c3', + '\\' : '\U000003c4', + '\\' : '\U000003c5', + '\\' : '\U000003c6', + '\\' : '\U000003c7', + '\\' : '\U000003c8', + '\\' : '\U000003c9', + '\\' : '\U00000393', + '\\' : '\U00000394', + '\\' : '\U00000398', + '\\' : '\U0000039b', + '\\' : '\U0000039e', + '\\' : '\U000003a0', + '\\' : '\U000003a3', + '\\' : '\U000003a5', + '\\' : '\U000003a6', + '\\' : '\U000003a8', + '\\' : '\U000003a9', + '\\' : '\U0001d539', + '\\' : '\U00002102', + '\\' : '\U00002115', + '\\' : '\U0000211a', + '\\' : '\U0000211d', + '\\' : '\U00002124', + '\\' : '\U00002190', + '\\' : '\U000027f5', + '\\' : '\U00002192', + '\\' : '\U000027f6', + '\\' : '\U000021d0', + '\\' : '\U000027f8', + '\\' : '\U000021d2', + '\\' : '\U000027f9', + '\\' : '\U00002194', + '\\' : '\U000027f7', + '\\' : '\U000021d4', + '\\' : '\U000027fa', + '\\' : '\U000021a6', + '\\' : '\U000027fc', + '\\' : '\U00002500', + '\\' : '\U00002550', + '\\' : '\U000021a9', + '\\' : '\U000021aa', + '\\' : '\U000021bd', + '\\' : '\U000021c1', + '\\' : '\U000021bc', + '\\' : '\U000021c0', + '\\' : '\U000021cc', + '\\' : '\U0000219d', + '\\' : '\U000021c3', + '\\' : '\U000021c2', + '\\' : '\U000021bf', + '\\' : '\U000021be', + '\\' : '\U000021be', + '\\' : '\U00002237', + '\\' : '\U00002191', + '\\' : '\U000021d1', + '\\' : '\U00002193', + '\\' : '\U000021d3', + '\\' : '\U00002195', + '\\' : '\U000021d5', + '\\' : '\U000027e8', + '\\' : '\U000027e9', + '\\' : '\U00002308', + '\\' : '\U00002309', + '\\' : '\U0000230a', + '\\' : '\U0000230b', + '\\' : '\U00002987', + '\\' : '\U00002988', + '\\' : '\U000027e6', + '\\' : '\U000027e7', + '\\' : '\U00002983', + '\\' : '\U00002984', + '\\' : '\U000000ab', + '\\' : '\U000000bb', + '\\' : '\U000022a5', + '\\' : '\U000022a4', + '\\' : '\U00002227', + '\\' : '\U000022c0', + '\\' : '\U00002228', + '\\' : '\U000022c1', + '\\' : '\U00002200', + '\\' : '\U00002203', + '\\' : '\U00002204', + '\\' : '\U000000ac', + '\\' : '\U000025a1', + '\\' : '\U000025c7', + '\\' : '\U000022a2', + '\\' : '\U000022a8', + '\\' : '\U000022a9', + '\\' : '\U000022ab', + '\\' : '\U000022a3', + '\\' : '\U0000221a', + '\\' : '\U00002264', + '\\' : '\U00002265', + '\\' : '\U0000226a', + '\\' : '\U0000226b', + '\\' : '\U00002272', + '\\' : '\U00002273', + '\\' : '\U00002a85', + '\\' : '\U00002a86', + '\\' : '\U00002208', + '\\' : '\U00002209', + '\\' : '\U00002282', + '\\' : '\U00002283', + '\\' : '\U00002286', + '\\' : '\U00002287', + '\\' : '\U0000228f', + '\\' : '\U00002290', + '\\' : '\U00002291', + '\\' : '\U00002292', + '\\' : '\U00002229', + '\\' : '\U000022c2', + '\\' : '\U0000222a', + '\\' : '\U000022c3', + '\\' : '\U00002294', + '\\' : '\U00002a06', + '\\' : '\U00002293', + '\\' : '\U00002a05', + '\\' : '\U00002216', + '\\' : '\U0000221d', + '\\' : '\U0000228e', + '\\' : '\U00002a04', + '\\' : '\U00002260', + '\\' : '\U0000223c', + '\\' : '\U00002250', + '\\' : '\U00002243', + '\\' : '\U00002248', + '\\' : '\U0000224d', + '\\' : '\U00002245', + '\\' : '\U00002323', + '\\' : '\U00002261', + '\\' : '\U00002322', + '\\' : '\U000022c8', + '\\' : '\U00002a1d', + '\\' : '\U0000227a', + '\\' : '\U0000227b', + '\\' : '\U0000227c', + '\\' : '\U0000227d', + '\\' : '\U00002225', + '\\' : '\U000000a6', + '\\' : '\U000000b1', + '\\' : '\U00002213', + '\\' : '\U000000d7', + '\\
' : '\U000000f7', + '\\' : '\U000022c5', + '\\' : '\U000022c6', + '\\' : '\U00002219', + '\\' : '\U00002218', + '\\' : '\U00002020', + '\\' : '\U00002021', + '\\' : '\U000022b2', + '\\' : '\U000022b3', + '\\' : '\U000022b4', + '\\' : '\U000022b5', + '\\' : '\U000025c3', + '\\' : '\U000025b9', + '\\' : '\U000025b3', + '\\' : '\U0000225c', + '\\' : '\U00002295', + '\\' : '\U00002a01', + '\\' : '\U00002297', + '\\' : '\U00002a02', + '\\' : '\U00002299', + '\\' : '\U00002a00', + '\\' : '\U00002296', + '\\' : '\U00002298', + '\\' : '\U00002026', + '\\' : '\U000022ef', + '\\' : '\U00002211', + '\\' : '\U0000220f', + '\\' : '\U00002210', + '\\' : '\U0000221e', + '\\' : '\U0000222b', + '\\' : '\U0000222e', + '\\' : '\U00002663', + '\\' : '\U00002662', + '\\' : '\U00002661', + '\\' : '\U00002660', + '\\' : '\U00002135', + '\\' : '\U00002205', + '\\' : '\U00002207', + '\\' : '\U00002202', + '\\' : '\U0000266d', + '\\' : '\U0000266e', + '\\' : '\U0000266f', + '\\' : '\U00002220', + '\\' : '\U000000a9', + '\\' : '\U000000ae', + '\\' : '\U000000ad', + '\\' : '\U000000af', + '\\' : '\U000000bc', + '\\' : '\U000000bd', + '\\' : '\U000000be', + '\\' : '\U000000aa', + '\\' : '\U000000ba', + '\\
' : '\U000000a7', + '\\' : '\U000000b6', + '\\' : '\U000000a1', + '\\' : '\U000000bf', + '\\' : '\U000020ac', + '\\' : '\U000000a3', + '\\' : '\U000000a5', + '\\' : '\U000000a2', + '\\' : '\U000000a4', + '\\' : '\U000000b0', + '\\' : '\U00002a3f', + '\\' : '\U00002127', + '\\' : '\U000025ca', + '\\' : '\U00002118', + '\\' : '\U00002240', + '\\' : '\U000022c4', + '\\' : '\U000000b4', + '\\' : '\U00000131', + '\\' : '\U000000a8', + '\\' : '\U000000b8', + '\\' : '\U000002dd', + '\\' : '\U000003f5', + '\\' : '\U000023ce', + '\\' : '\U00002039', + '\\' : '\U0000203a', + '\\' : '\U00002302', + '\\<^sub>' : '\U000021e9', + '\\<^sup>' : '\U000021e7', + '\\<^bold>' : '\U00002759', + '\\<^bsub>' : '\U000021d8', + '\\<^esub>' : '\U000021d9', + '\\<^bsup>' : '\U000021d7', + '\\<^esup>' : '\U000021d6', + } + + lang_map = {'isabelle' : isabelle_symbols, 'latex' : latex_symbols} + + def __init__(self, **options): + Filter.__init__(self, **options) + lang = get_choice_opt(options, 'lang', + ['isabelle', 'latex'], 'isabelle') + self.symbols = self.lang_map[lang] + + def filter(self, lexer, stream): + for ttype, value in stream: + if value in self.symbols: + yield ttype, self.symbols[value] + else: + yield ttype, value + + +class KeywordCaseFilter(Filter): + """Convert keywords to lowercase or uppercase or capitalize them, which + means first letter uppercase, rest lowercase. + + This can be useful e.g. if you highlight Pascal code and want to adapt the + code to your styleguide. + + Options accepted: + + `case` : string + The casing to convert keywords to. Must be one of ``'lower'``, + ``'upper'`` or ``'capitalize'``. The default is ``'lower'``. + """ + + def __init__(self, **options): + Filter.__init__(self, **options) + case = get_choice_opt(options, 'case', + ['lower', 'upper', 'capitalize'], 'lower') + self.convert = getattr(str, case) + + def filter(self, lexer, stream): + for ttype, value in stream: + if ttype in Keyword: + yield ttype, self.convert(value) + else: + yield ttype, value + + +class NameHighlightFilter(Filter): + """Highlight a normal Name (and Name.*) token with a different token type. + + Example:: + + filter = NameHighlightFilter( + names=['foo', 'bar', 'baz'], + tokentype=Name.Function, + ) + + This would highlight the names "foo", "bar" and "baz" + as functions. `Name.Function` is the default token type. + + Options accepted: + + `names` : list of strings + A list of names that should be given the different token type. + There is no default. + `tokentype` : TokenType or string + A token type or a string containing a token type name that is + used for highlighting the strings in `names`. The default is + `Name.Function`. + """ + + def __init__(self, **options): + Filter.__init__(self, **options) + self.names = set(get_list_opt(options, 'names', [])) + tokentype = options.get('tokentype') + if tokentype: + self.tokentype = string_to_tokentype(tokentype) + else: + self.tokentype = Name.Function + + def filter(self, lexer, stream): + for ttype, value in stream: + if ttype in Name and value in self.names: + yield self.tokentype, value + else: + yield ttype, value + + +class ErrorToken(Exception): + pass + + +class RaiseOnErrorTokenFilter(Filter): + """Raise an exception when the lexer generates an error token. + + Options accepted: + + `excclass` : Exception class + The exception class to raise. + The default is `pygments.filters.ErrorToken`. + + .. versionadded:: 0.8 + """ + + def __init__(self, **options): + Filter.__init__(self, **options) + self.exception = options.get('excclass', ErrorToken) + try: + # issubclass() will raise TypeError if first argument is not a class + if not issubclass(self.exception, Exception): + raise TypeError + except TypeError: + raise OptionError('excclass option is not an exception class') + + def filter(self, lexer, stream): + for ttype, value in stream: + if ttype is Error: + raise self.exception(value) + yield ttype, value + + +class VisibleWhitespaceFilter(Filter): + """Convert tabs, newlines and/or spaces to visible characters. + + Options accepted: + + `spaces` : string or bool + If this is a one-character string, spaces will be replaces by this string. + If it is another true value, spaces will be replaced by ``·`` (unicode + MIDDLE DOT). If it is a false value, spaces will not be replaced. The + default is ``False``. + `tabs` : string or bool + The same as for `spaces`, but the default replacement character is ``»`` + (unicode RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK). The default value + is ``False``. Note: this will not work if the `tabsize` option for the + lexer is nonzero, as tabs will already have been expanded then. + `tabsize` : int + If tabs are to be replaced by this filter (see the `tabs` option), this + is the total number of characters that a tab should be expanded to. + The default is ``8``. + `newlines` : string or bool + The same as for `spaces`, but the default replacement character is ``¶`` + (unicode PILCROW SIGN). The default value is ``False``. + `wstokentype` : bool + If true, give whitespace the special `Whitespace` token type. This allows + styling the visible whitespace differently (e.g. greyed out), but it can + disrupt background colors. The default is ``True``. + + .. versionadded:: 0.8 + """ + + def __init__(self, **options): + Filter.__init__(self, **options) + for name, default in [('spaces', '·'), + ('tabs', '»'), + ('newlines', '¶')]: + opt = options.get(name, False) + if isinstance(opt, str) and len(opt) == 1: + setattr(self, name, opt) + else: + setattr(self, name, (opt and default or '')) + tabsize = get_int_opt(options, 'tabsize', 8) + if self.tabs: + self.tabs += ' ' * (tabsize - 1) + if self.newlines: + self.newlines += '\n' + self.wstt = get_bool_opt(options, 'wstokentype', True) + + def filter(self, lexer, stream): + if self.wstt: + spaces = self.spaces or ' ' + tabs = self.tabs or '\t' + newlines = self.newlines or '\n' + regex = re.compile(r'\s') + + def replacefunc(wschar): + if wschar == ' ': + return spaces + elif wschar == '\t': + return tabs + elif wschar == '\n': + return newlines + return wschar + + for ttype, value in stream: + yield from _replace_special(ttype, value, regex, Whitespace, + replacefunc) + else: + spaces, tabs, newlines = self.spaces, self.tabs, self.newlines + # simpler processing + for ttype, value in stream: + if spaces: + value = value.replace(' ', spaces) + if tabs: + value = value.replace('\t', tabs) + if newlines: + value = value.replace('\n', newlines) + yield ttype, value + + +class GobbleFilter(Filter): + """Gobbles source code lines (eats initial characters). + + This filter drops the first ``n`` characters off every line of code. This + may be useful when the source code fed to the lexer is indented by a fixed + amount of space that isn't desired in the output. + + Options accepted: + + `n` : int + The number of characters to gobble. + + .. versionadded:: 1.2 + """ + def __init__(self, **options): + Filter.__init__(self, **options) + self.n = get_int_opt(options, 'n', 0) + + def gobble(self, value, left): + if left < len(value): + return value[left:], 0 + else: + return '', left - len(value) + + def filter(self, lexer, stream): + n = self.n + left = n # How many characters left to gobble. + for ttype, value in stream: + # Remove ``left`` tokens from first line, ``n`` from all others. + parts = value.split('\n') + (parts[0], left) = self.gobble(parts[0], left) + for i in range(1, len(parts)): + (parts[i], left) = self.gobble(parts[i], n) + value = '\n'.join(parts) + + if value != '': + yield ttype, value + + +class TokenMergeFilter(Filter): + """Merges consecutive tokens with the same token type in the output + stream of a lexer. + + .. versionadded:: 1.2 + """ + def __init__(self, **options): + Filter.__init__(self, **options) + + def filter(self, lexer, stream): + current_type = None + current_value = None + for ttype, value in stream: + if ttype is current_type: + current_value += value + else: + if current_type is not None: + yield current_type, current_value + current_type = ttype + current_value = value + if current_type is not None: + yield current_type, current_value + + +FILTERS = { + 'codetagify': CodeTagFilter, + 'keywordcase': KeywordCaseFilter, + 'highlight': NameHighlightFilter, + 'raiseonerror': RaiseOnErrorTokenFilter, + 'whitespace': VisibleWhitespaceFilter, + 'gobble': GobbleFilter, + 'tokenmerge': TokenMergeFilter, + 'symbols': SymbolFilter, +} diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/formatter.py b/venv/Lib/site-packages/pip/_vendor/pygments/formatter.py new file mode 100644 index 00000000000..d2666037f7a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/pygments/formatter.py @@ -0,0 +1,129 @@ +""" + pygments.formatter + ~~~~~~~~~~~~~~~~~~ + + Base formatter class. + + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import codecs + +from pip._vendor.pygments.util import get_bool_opt +from pip._vendor.pygments.styles import get_style_by_name + +__all__ = ['Formatter'] + + +def _lookup_style(style): + if isinstance(style, str): + return get_style_by_name(style) + return style + + +class Formatter: + """ + Converts a token stream to text. + + Formatters should have attributes to help selecting them. These + are similar to the corresponding :class:`~pygments.lexer.Lexer` + attributes. + + .. autoattribute:: name + :no-value: + + .. autoattribute:: aliases + :no-value: + + .. autoattribute:: filenames + :no-value: + + You can pass options as keyword arguments to the constructor. + All formatters accept these basic options: + + ``style`` + The style to use, can be a string or a Style subclass + (default: "default"). Not used by e.g. the + TerminalFormatter. + ``full`` + Tells the formatter to output a "full" document, i.e. + a complete self-contained document. This doesn't have + any effect for some formatters (default: false). + ``title`` + If ``full`` is true, the title that should be used to + caption the document (default: ''). + ``encoding`` + If given, must be an encoding name. This will be used to + convert the Unicode token strings to byte strings in the + output. If it is "" or None, Unicode strings will be written + to the output file, which most file-like objects do not + support (default: None). + ``outencoding`` + Overrides ``encoding`` if given. + + """ + + #: Full name for the formatter, in human-readable form. + name = None + + #: A list of short, unique identifiers that can be used to lookup + #: the formatter from a list, e.g. using :func:`.get_formatter_by_name()`. + aliases = [] + + #: A list of fnmatch patterns that match filenames for which this + #: formatter can produce output. The patterns in this list should be unique + #: among all formatters. + filenames = [] + + #: If True, this formatter outputs Unicode strings when no encoding + #: option is given. + unicodeoutput = True + + def __init__(self, **options): + """ + As with lexers, this constructor takes arbitrary optional arguments, + and if you override it, you should first process your own options, then + call the base class implementation. + """ + self.style = _lookup_style(options.get('style', 'default')) + self.full = get_bool_opt(options, 'full', False) + self.title = options.get('title', '') + self.encoding = options.get('encoding', None) or None + if self.encoding in ('guess', 'chardet'): + # can happen for e.g. pygmentize -O encoding=guess + self.encoding = 'utf-8' + self.encoding = options.get('outencoding') or self.encoding + self.options = options + + def get_style_defs(self, arg=''): + """ + This method must return statements or declarations suitable to define + the current style for subsequent highlighted text (e.g. CSS classes + in the `HTMLFormatter`). + + The optional argument `arg` can be used to modify the generation and + is formatter dependent (it is standardized because it can be given on + the command line). + + This method is called by the ``-S`` :doc:`command-line option `, + the `arg` is then given by the ``-a`` option. + """ + return '' + + def format(self, tokensource, outfile): + """ + This method must format the tokens from the `tokensource` iterable and + write the formatted version to the file object `outfile`. + + Formatter options can control how exactly the tokens are converted. + """ + if self.encoding: + # wrap the outfile in a StreamWriter + outfile = codecs.lookup(self.encoding)[3](outfile) + return self.format_unencoded(tokensource, outfile) + + # Allow writing Formatter[str] or Formatter[bytes]. That's equivalent to + # Formatter. This helps when using third-party type stubs from typeshed. + def __class_getitem__(cls, name): + return cls diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py b/venv/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py new file mode 100644 index 00000000000..f19e9931f07 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py @@ -0,0 +1,157 @@ +""" + pygments.formatters + ~~~~~~~~~~~~~~~~~~~ + + Pygments formatters. + + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import re +import sys +import types +import fnmatch +from os.path import basename + +from pip._vendor.pygments.formatters._mapping import FORMATTERS +from pip._vendor.pygments.plugin import find_plugin_formatters +from pip._vendor.pygments.util import ClassNotFound + +__all__ = ['get_formatter_by_name', 'get_formatter_for_filename', + 'get_all_formatters', 'load_formatter_from_file'] + list(FORMATTERS) + +_formatter_cache = {} # classes by name +_pattern_cache = {} + + +def _fn_matches(fn, glob): + """Return whether the supplied file name fn matches pattern filename.""" + if glob not in _pattern_cache: + pattern = _pattern_cache[glob] = re.compile(fnmatch.translate(glob)) + return pattern.match(fn) + return _pattern_cache[glob].match(fn) + + +def _load_formatters(module_name): + """Load a formatter (and all others in the module too).""" + mod = __import__(module_name, None, None, ['__all__']) + for formatter_name in mod.__all__: + cls = getattr(mod, formatter_name) + _formatter_cache[cls.name] = cls + + +def get_all_formatters(): + """Return a generator for all formatter classes.""" + # NB: this returns formatter classes, not info like get_all_lexers(). + for info in FORMATTERS.values(): + if info[1] not in _formatter_cache: + _load_formatters(info[0]) + yield _formatter_cache[info[1]] + for _, formatter in find_plugin_formatters(): + yield formatter + + +def find_formatter_class(alias): + """Lookup a formatter by alias. + + Returns None if not found. + """ + for module_name, name, aliases, _, _ in FORMATTERS.values(): + if alias in aliases: + if name not in _formatter_cache: + _load_formatters(module_name) + return _formatter_cache[name] + for _, cls in find_plugin_formatters(): + if alias in cls.aliases: + return cls + + +def get_formatter_by_name(_alias, **options): + """ + Return an instance of a :class:`.Formatter` subclass that has `alias` in its + aliases list. The formatter is given the `options` at its instantiation. + + Will raise :exc:`pygments.util.ClassNotFound` if no formatter with that + alias is found. + """ + cls = find_formatter_class(_alias) + if cls is None: + raise ClassNotFound(f"no formatter found for name {_alias!r}") + return cls(**options) + + +def load_formatter_from_file(filename, formattername="CustomFormatter", **options): + """ + Return a `Formatter` subclass instance loaded from the provided file, relative + to the current directory. + + The file is expected to contain a Formatter class named ``formattername`` + (by default, CustomFormatter). Users should be very careful with the input, because + this method is equivalent to running ``eval()`` on the input file. The formatter is + given the `options` at its instantiation. + + :exc:`pygments.util.ClassNotFound` is raised if there are any errors loading + the formatter. + + .. versionadded:: 2.2 + """ + try: + # This empty dict will contain the namespace for the exec'd file + custom_namespace = {} + with open(filename, 'rb') as f: + exec(f.read(), custom_namespace) + # Retrieve the class `formattername` from that namespace + if formattername not in custom_namespace: + raise ClassNotFound(f'no valid {formattername} class found in {filename}') + formatter_class = custom_namespace[formattername] + # And finally instantiate it with the options + return formatter_class(**options) + except OSError as err: + raise ClassNotFound(f'cannot read {filename}: {err}') + except ClassNotFound: + raise + except Exception as err: + raise ClassNotFound(f'error when loading custom formatter: {err}') + + +def get_formatter_for_filename(fn, **options): + """ + Return a :class:`.Formatter` subclass instance that has a filename pattern + matching `fn`. The formatter is given the `options` at its instantiation. + + Will raise :exc:`pygments.util.ClassNotFound` if no formatter for that filename + is found. + """ + fn = basename(fn) + for modname, name, _, filenames, _ in FORMATTERS.values(): + for filename in filenames: + if _fn_matches(fn, filename): + if name not in _formatter_cache: + _load_formatters(modname) + return _formatter_cache[name](**options) + for _name, cls in find_plugin_formatters(): + for filename in cls.filenames: + if _fn_matches(fn, filename): + return cls(**options) + raise ClassNotFound(f"no formatter found for file name {fn!r}") + + +class _automodule(types.ModuleType): + """Automatically import formatters.""" + + def __getattr__(self, name): + info = FORMATTERS.get(name) + if info: + _load_formatters(info[0]) + cls = _formatter_cache[info[1]] + setattr(self, name, cls) + return cls + raise AttributeError(name) + + +oldmod = sys.modules[__name__] +newmod = _automodule(__name__) +newmod.__dict__.update(oldmod.__dict__) +sys.modules[__name__] = newmod +del newmod.newmod, newmod.oldmod, newmod.sys, newmod.types diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py b/venv/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py new file mode 100644 index 00000000000..72ca84040b6 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py @@ -0,0 +1,23 @@ +# Automatically generated by scripts/gen_mapfiles.py. +# DO NOT EDIT BY HAND; run `tox -e mapfiles` instead. + +FORMATTERS = { + 'BBCodeFormatter': ('pygments.formatters.bbcode', 'BBCode', ('bbcode', 'bb'), (), 'Format tokens with BBcodes. These formatting codes are used by many bulletin boards, so you can highlight your sourcecode with pygments before posting it there.'), + 'BmpImageFormatter': ('pygments.formatters.img', 'img_bmp', ('bmp', 'bitmap'), ('*.bmp',), 'Create a bitmap image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), + 'GifImageFormatter': ('pygments.formatters.img', 'img_gif', ('gif',), ('*.gif',), 'Create a GIF image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), + 'GroffFormatter': ('pygments.formatters.groff', 'groff', ('groff', 'troff', 'roff'), (), 'Format tokens with groff escapes to change their color and font style.'), + 'HtmlFormatter': ('pygments.formatters.html', 'HTML', ('html',), ('*.html', '*.htm'), "Format tokens as HTML 4 ```` tags. By default, the content is enclosed in a ``
`` tag, itself wrapped in a ``
`` tag (but see the `nowrap` option). The ``
``'s CSS class can be set by the `cssclass` option."), + 'IRCFormatter': ('pygments.formatters.irc', 'IRC', ('irc', 'IRC'), (), 'Format tokens with IRC color sequences'), + 'ImageFormatter': ('pygments.formatters.img', 'img', ('img', 'IMG', 'png'), ('*.png',), 'Create a PNG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), + 'JpgImageFormatter': ('pygments.formatters.img', 'img_jpg', ('jpg', 'jpeg'), ('*.jpg',), 'Create a JPEG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'), + 'LatexFormatter': ('pygments.formatters.latex', 'LaTeX', ('latex', 'tex'), ('*.tex',), 'Format tokens as LaTeX code. This needs the `fancyvrb` and `color` standard packages.'), + 'NullFormatter': ('pygments.formatters.other', 'Text only', ('text', 'null'), ('*.txt',), 'Output the text unchanged without any formatting.'), + 'PangoMarkupFormatter': ('pygments.formatters.pangomarkup', 'Pango Markup', ('pango', 'pangomarkup'), (), 'Format tokens as Pango Markup code. It can then be rendered to an SVG.'), + 'RawTokenFormatter': ('pygments.formatters.other', 'Raw tokens', ('raw', 'tokens'), ('*.raw',), 'Format tokens as a raw representation for storing token streams.'), + 'RtfFormatter': ('pygments.formatters.rtf', 'RTF', ('rtf',), ('*.rtf',), 'Format tokens as RTF markup. This formatter automatically outputs full RTF documents with color information and other useful stuff. Perfect for Copy and Paste into Microsoft(R) Word(R) documents.'), + 'SvgFormatter': ('pygments.formatters.svg', 'SVG', ('svg',), ('*.svg',), 'Format tokens as an SVG graphics file. This formatter is still experimental. Each line of code is a ```` element with explicit ``x`` and ``y`` coordinates containing ```` elements with the individual token styles.'), + 'Terminal256Formatter': ('pygments.formatters.terminal256', 'Terminal256', ('terminal256', 'console256', '256'), (), 'Format tokens with ANSI color sequences, for output in a 256-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'), + 'TerminalFormatter': ('pygments.formatters.terminal', 'Terminal', ('terminal', 'console'), (), 'Format tokens with ANSI color sequences, for output in a text console. Color sequences are terminated at newlines, so that paging the output works correctly.'), + 'TerminalTrueColorFormatter': ('pygments.formatters.terminal256', 'TerminalTrueColor', ('terminal16m', 'console16m', '16m'), (), 'Format tokens with ANSI color sequences, for output in a true-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'), + 'TestcaseFormatter': ('pygments.formatters.other', 'Testcase', ('testcase',), (), 'Format tokens as appropriate for a new testcase.'), +} diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py b/venv/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py new file mode 100644 index 00000000000..5a05bd961de --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py @@ -0,0 +1,108 @@ +""" + pygments.formatters.bbcode + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BBcode formatter. + + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + + +from pip._vendor.pygments.formatter import Formatter +from pip._vendor.pygments.util import get_bool_opt + +__all__ = ['BBCodeFormatter'] + + +class BBCodeFormatter(Formatter): + """ + Format tokens with BBcodes. These formatting codes are used by many + bulletin boards, so you can highlight your sourcecode with pygments before + posting it there. + + This formatter has no support for background colors and borders, as there + are no common BBcode tags for that. + + Some board systems (e.g. phpBB) don't support colors in their [code] tag, + so you can't use the highlighting together with that tag. + Text in a [code] tag usually is shown with a monospace font (which this + formatter can do with the ``monofont`` option) and no spaces (which you + need for indentation) are removed. + + Additional options accepted: + + `style` + The style to use, can be a string or a Style subclass (default: + ``'default'``). + + `codetag` + If set to true, put the output into ``[code]`` tags (default: + ``false``) + + `monofont` + If set to true, add a tag to show the code with a monospace font + (default: ``false``). + """ + name = 'BBCode' + aliases = ['bbcode', 'bb'] + filenames = [] + + def __init__(self, **options): + Formatter.__init__(self, **options) + self._code = get_bool_opt(options, 'codetag', False) + self._mono = get_bool_opt(options, 'monofont', False) + + self.styles = {} + self._make_styles() + + def _make_styles(self): + for ttype, ndef in self.style: + start = end = '' + if ndef['color']: + start += '[color=#{}]'.format(ndef['color']) + end = '[/color]' + end + if ndef['bold']: + start += '[b]' + end = '[/b]' + end + if ndef['italic']: + start += '[i]' + end = '[/i]' + end + if ndef['underline']: + start += '[u]' + end = '[/u]' + end + # there are no common BBcodes for background-color and border + + self.styles[ttype] = start, end + + def format_unencoded(self, tokensource, outfile): + if self._code: + outfile.write('[code]') + if self._mono: + outfile.write('[font=monospace]') + + lastval = '' + lasttype = None + + for ttype, value in tokensource: + while ttype not in self.styles: + ttype = ttype.parent + if ttype == lasttype: + lastval += value + else: + if lastval: + start, end = self.styles[lasttype] + outfile.write(''.join((start, lastval, end))) + lastval = value + lasttype = ttype + + if lastval: + start, end = self.styles[lasttype] + outfile.write(''.join((start, lastval, end))) + + if self._mono: + outfile.write('[/font]') + if self._code: + outfile.write('[/code]') + if self._code or self._mono: + outfile.write('\n') diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py b/venv/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py new file mode 100644 index 00000000000..5c8a958f8d7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py @@ -0,0 +1,170 @@ +""" + pygments.formatters.groff + ~~~~~~~~~~~~~~~~~~~~~~~~~ + + Formatter for groff output. + + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import math +from pip._vendor.pygments.formatter import Formatter +from pip._vendor.pygments.util import get_bool_opt, get_int_opt + +__all__ = ['GroffFormatter'] + + +class GroffFormatter(Formatter): + """ + Format tokens with groff escapes to change their color and font style. + + .. versionadded:: 2.11 + + Additional options accepted: + + `style` + The style to use, can be a string or a Style subclass (default: + ``'default'``). + + `monospaced` + If set to true, monospace font will be used (default: ``true``). + + `linenos` + If set to true, print the line numbers (default: ``false``). + + `wrap` + Wrap lines to the specified number of characters. Disabled if set to 0 + (default: ``0``). + """ + + name = 'groff' + aliases = ['groff','troff','roff'] + filenames = [] + + def __init__(self, **options): + Formatter.__init__(self, **options) + + self.monospaced = get_bool_opt(options, 'monospaced', True) + self.linenos = get_bool_opt(options, 'linenos', False) + self._lineno = 0 + self.wrap = get_int_opt(options, 'wrap', 0) + self._linelen = 0 + + self.styles = {} + self._make_styles() + + + def _make_styles(self): + regular = '\\f[CR]' if self.monospaced else '\\f[R]' + bold = '\\f[CB]' if self.monospaced else '\\f[B]' + italic = '\\f[CI]' if self.monospaced else '\\f[I]' + + for ttype, ndef in self.style: + start = end = '' + if ndef['color']: + start += '\\m[{}]'.format(ndef['color']) + end = '\\m[]' + end + if ndef['bold']: + start += bold + end = regular + end + if ndef['italic']: + start += italic + end = regular + end + if ndef['bgcolor']: + start += '\\M[{}]'.format(ndef['bgcolor']) + end = '\\M[]' + end + + self.styles[ttype] = start, end + + + def _define_colors(self, outfile): + colors = set() + for _, ndef in self.style: + if ndef['color'] is not None: + colors.add(ndef['color']) + + for color in sorted(colors): + outfile.write('.defcolor ' + color + ' rgb #' + color + '\n') + + + def _write_lineno(self, outfile): + self._lineno += 1 + outfile.write("%s% 4d " % (self._lineno != 1 and '\n' or '', self._lineno)) + + + def _wrap_line(self, line): + length = len(line.rstrip('\n')) + space = ' ' if self.linenos else '' + newline = '' + + if length > self.wrap: + for i in range(0, math.floor(length / self.wrap)): + chunk = line[i*self.wrap:i*self.wrap+self.wrap] + newline += (chunk + '\n' + space) + remainder = length % self.wrap + if remainder > 0: + newline += line[-remainder-1:] + self._linelen = remainder + elif self._linelen + length > self.wrap: + newline = ('\n' + space) + line + self._linelen = length + else: + newline = line + self._linelen += length + + return newline + + + def _escape_chars(self, text): + text = text.replace('\\', '\\[u005C]'). \ + replace('.', '\\[char46]'). \ + replace('\'', '\\[u0027]'). \ + replace('`', '\\[u0060]'). \ + replace('~', '\\[u007E]') + copy = text + + for char in copy: + if len(char) != len(char.encode()): + uni = char.encode('unicode_escape') \ + .decode()[1:] \ + .replace('x', 'u00') \ + .upper() + text = text.replace(char, '\\[u' + uni[1:] + ']') + + return text + + + def format_unencoded(self, tokensource, outfile): + self._define_colors(outfile) + + outfile.write('.nf\n\\f[CR]\n') + + if self.linenos: + self._write_lineno(outfile) + + for ttype, value in tokensource: + while ttype not in self.styles: + ttype = ttype.parent + start, end = self.styles[ttype] + + for line in value.splitlines(True): + if self.wrap > 0: + line = self._wrap_line(line) + + if start and end: + text = self._escape_chars(line.rstrip('\n')) + if text != '': + outfile.write(''.join((start, text, end))) + else: + outfile.write(self._escape_chars(line.rstrip('\n'))) + + if line.endswith('\n'): + if self.linenos: + self._write_lineno(outfile) + self._linelen = 0 + else: + outfile.write('\n') + self._linelen = 0 + + outfile.write('\n.fi') diff --git a/venv/Lib/site-packages/pip/_vendor/pygments/formatters/html.py b/venv/Lib/site-packages/pip/_vendor/pygments/formatters/html.py new file mode 100644 index 00000000000..7aa938f5119 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/pygments/formatters/html.py @@ -0,0 +1,987 @@ +""" + pygments.formatters.html + ~~~~~~~~~~~~~~~~~~~~~~~~ + + Formatter for HTML output. + + :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import functools +import os +import sys +import os.path +from io import StringIO + +from pip._vendor.pygments.formatter import Formatter +from pip._vendor.pygments.token import Token, Text, STANDARD_TYPES +from pip._vendor.pygments.util import get_bool_opt, get_int_opt, get_list_opt + +try: + import ctags +except ImportError: + ctags = None + +__all__ = ['HtmlFormatter'] + + +_escape_html_table = { + ord('&'): '&', + ord('<'): '<', + ord('>'): '>', + ord('"'): '"', + ord("'"): ''', +} + + +def escape_html(text, table=_escape_html_table): + """Escape &, <, > as well as single and double quotes for HTML.""" + return text.translate(table) + + +def webify(color): + if color.startswith('calc') or color.startswith('var'): + return color + else: + return '#' + color + + +def _get_ttype_class(ttype): + fname = STANDARD_TYPES.get(ttype) + if fname: + return fname + aname = '' + while fname is None: + aname = '-' + ttype[-1] + aname + ttype = ttype.parent + fname = STANDARD_TYPES.get(ttype) + return fname + aname + + +CSSFILE_TEMPLATE = '''\ +/* +generated by Pygments +Copyright 2006-2024 by the Pygments team. +Licensed under the BSD license, see LICENSE for details. +*/ +%(styledefs)s +''' + +DOC_HEADER = '''\ + + + + + %(title)s + + + + +

%(title)s

+ +''' + +DOC_HEADER_EXTERNALCSS = '''\ + + + + + %(title)s + + + + +

%(title)s

+ +''' + +DOC_FOOTER = '''\ + + +''' + + +class HtmlFormatter(Formatter): + r""" + Format tokens as HTML 4 ```` tags. By default, the content is enclosed + in a ``
`` tag, itself wrapped in a ``
`` tag (but see the `nowrap` option). + The ``
``'s CSS class can be set by the `cssclass` option. + + If the `linenos` option is set to ``"table"``, the ``
`` is
+    additionally wrapped inside a ```` which has one row and two
+    cells: one containing the line numbers and one containing the code.
+    Example:
+
+    .. sourcecode:: html
+
+        
+
+ + +
+
1
+            2
+
+
def foo(bar):
+              pass
+            
+
+ + (whitespace added to improve clarity). + + A list of lines can be specified using the `hl_lines` option to make these + lines highlighted (as of Pygments 0.11). + + With the `full` option, a complete HTML 4 document is output, including + the style definitions inside a `` + + +
{code}
+ + +""" + +CONSOLE_SVG_FORMAT = """\ + + + + + + + + + {lines} + + + {chrome} + + {backgrounds} + + {matrix} + + + +""" + +_SVG_FONT_FAMILY = "Rich Fira Code" +_SVG_CLASSES_PREFIX = "rich-svg" diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_extension.py b/venv/Lib/site-packages/pip/_vendor/rich/_extension.py new file mode 100644 index 00000000000..cbd6da9be49 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_extension.py @@ -0,0 +1,10 @@ +from typing import Any + + +def load_ipython_extension(ip: Any) -> None: # pragma: no cover + # prevent circular import + from pip._vendor.rich.pretty import install + from pip._vendor.rich.traceback import install as tr_install + + install() + tr_install() diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_fileno.py b/venv/Lib/site-packages/pip/_vendor/rich/_fileno.py new file mode 100644 index 00000000000..b17ee651174 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_fileno.py @@ -0,0 +1,24 @@ +from __future__ import annotations + +from typing import IO, Callable + + +def get_fileno(file_like: IO[str]) -> int | None: + """Get fileno() from a file, accounting for poorly implemented file-like objects. + + Args: + file_like (IO): A file-like object. + + Returns: + int | None: The result of fileno if available, or None if operation failed. + """ + fileno: Callable[[], int] | None = getattr(file_like, "fileno", None) + if fileno is not None: + try: + return fileno() + except Exception: + # `fileno` is documented as potentially raising a OSError + # Alas, from the issues, there are so many poorly implemented file-like objects, + # that `fileno()` can raise just about anything. + return None + return None diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_inspect.py b/venv/Lib/site-packages/pip/_vendor/rich/_inspect.py new file mode 100644 index 00000000000..30446ceb3f0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_inspect.py @@ -0,0 +1,270 @@ +from __future__ import absolute_import + +import inspect +from inspect import cleandoc, getdoc, getfile, isclass, ismodule, signature +from typing import Any, Collection, Iterable, Optional, Tuple, Type, Union + +from .console import Group, RenderableType +from .control import escape_control_codes +from .highlighter import ReprHighlighter +from .jupyter import JupyterMixin +from .panel import Panel +from .pretty import Pretty +from .table import Table +from .text import Text, TextType + + +def _first_paragraph(doc: str) -> str: + """Get the first paragraph from a docstring.""" + paragraph, _, _ = doc.partition("\n\n") + return paragraph + + +class Inspect(JupyterMixin): + """A renderable to inspect any Python Object. + + Args: + obj (Any): An object to inspect. + title (str, optional): Title to display over inspect result, or None use type. Defaults to None. + help (bool, optional): Show full help text rather than just first paragraph. Defaults to False. + methods (bool, optional): Enable inspection of callables. Defaults to False. + docs (bool, optional): Also render doc strings. Defaults to True. + private (bool, optional): Show private attributes (beginning with underscore). Defaults to False. + dunder (bool, optional): Show attributes starting with double underscore. Defaults to False. + sort (bool, optional): Sort attributes alphabetically. Defaults to True. + all (bool, optional): Show all attributes. Defaults to False. + value (bool, optional): Pretty print value of object. Defaults to True. + """ + + def __init__( + self, + obj: Any, + *, + title: Optional[TextType] = None, + help: bool = False, + methods: bool = False, + docs: bool = True, + private: bool = False, + dunder: bool = False, + sort: bool = True, + all: bool = True, + value: bool = True, + ) -> None: + self.highlighter = ReprHighlighter() + self.obj = obj + self.title = title or self._make_title(obj) + if all: + methods = private = dunder = True + self.help = help + self.methods = methods + self.docs = docs or help + self.private = private or dunder + self.dunder = dunder + self.sort = sort + self.value = value + + def _make_title(self, obj: Any) -> Text: + """Make a default title.""" + title_str = ( + str(obj) + if (isclass(obj) or callable(obj) or ismodule(obj)) + else str(type(obj)) + ) + title_text = self.highlighter(title_str) + return title_text + + def __rich__(self) -> Panel: + return Panel.fit( + Group(*self._render()), + title=self.title, + border_style="scope.border", + padding=(0, 1), + ) + + def _get_signature(self, name: str, obj: Any) -> Optional[Text]: + """Get a signature for a callable.""" + try: + _signature = str(signature(obj)) + ":" + except ValueError: + _signature = "(...)" + except TypeError: + return None + + source_filename: Optional[str] = None + try: + source_filename = getfile(obj) + except (OSError, TypeError): + # OSError is raised if obj has no source file, e.g. when defined in REPL. + pass + + callable_name = Text(name, style="inspect.callable") + if source_filename: + callable_name.stylize(f"link file://{source_filename}") + signature_text = self.highlighter(_signature) + + qualname = name or getattr(obj, "__qualname__", name) + + # If obj is a module, there may be classes (which are callable) to display + if inspect.isclass(obj): + prefix = "class" + elif inspect.iscoroutinefunction(obj): + prefix = "async def" + else: + prefix = "def" + + qual_signature = Text.assemble( + (f"{prefix} ", f"inspect.{prefix.replace(' ', '_')}"), + (qualname, "inspect.callable"), + signature_text, + ) + + return qual_signature + + def _render(self) -> Iterable[RenderableType]: + """Render object.""" + + def sort_items(item: Tuple[str, Any]) -> Tuple[bool, str]: + key, (_error, value) = item + return (callable(value), key.strip("_").lower()) + + def safe_getattr(attr_name: str) -> Tuple[Any, Any]: + """Get attribute or any exception.""" + try: + return (None, getattr(obj, attr_name)) + except Exception as error: + return (error, None) + + obj = self.obj + keys = dir(obj) + total_items = len(keys) + if not self.dunder: + keys = [key for key in keys if not key.startswith("__")] + if not self.private: + keys = [key for key in keys if not key.startswith("_")] + not_shown_count = total_items - len(keys) + items = [(key, safe_getattr(key)) for key in keys] + if self.sort: + items.sort(key=sort_items) + + items_table = Table.grid(padding=(0, 1), expand=False) + items_table.add_column(justify="right") + add_row = items_table.add_row + highlighter = self.highlighter + + if callable(obj): + signature = self._get_signature("", obj) + if signature is not None: + yield signature + yield "" + + if self.docs: + _doc = self._get_formatted_doc(obj) + if _doc is not None: + doc_text = Text(_doc, style="inspect.help") + doc_text = highlighter(doc_text) + yield doc_text + yield "" + + if self.value and not (isclass(obj) or callable(obj) or ismodule(obj)): + yield Panel( + Pretty(obj, indent_guides=True, max_length=10, max_string=60), + border_style="inspect.value.border", + ) + yield "" + + for key, (error, value) in items: + key_text = Text.assemble( + ( + key, + "inspect.attr.dunder" if key.startswith("__") else "inspect.attr", + ), + (" =", "inspect.equals"), + ) + if error is not None: + warning = key_text.copy() + warning.stylize("inspect.error") + add_row(warning, highlighter(repr(error))) + continue + + if callable(value): + if not self.methods: + continue + + _signature_text = self._get_signature(key, value) + if _signature_text is None: + add_row(key_text, Pretty(value, highlighter=highlighter)) + else: + if self.docs: + docs = self._get_formatted_doc(value) + if docs is not None: + _signature_text.append("\n" if "\n" in docs else " ") + doc = highlighter(docs) + doc.stylize("inspect.doc") + _signature_text.append(doc) + + add_row(key_text, _signature_text) + else: + add_row(key_text, Pretty(value, highlighter=highlighter)) + if items_table.row_count: + yield items_table + elif not_shown_count: + yield Text.from_markup( + f"[b cyan]{not_shown_count}[/][i] attribute(s) not shown.[/i] " + f"Run [b][magenta]inspect[/]([not b]inspect[/])[/b] for options." + ) + + def _get_formatted_doc(self, object_: Any) -> Optional[str]: + """ + Extract the docstring of an object, process it and returns it. + The processing consists in cleaning up the doctring's indentation, + taking only its 1st paragraph if `self.help` is not True, + and escape its control codes. + + Args: + object_ (Any): the object to get the docstring from. + + Returns: + Optional[str]: the processed docstring, or None if no docstring was found. + """ + docs = getdoc(object_) + if docs is None: + return None + docs = cleandoc(docs).strip() + if not self.help: + docs = _first_paragraph(docs) + return escape_control_codes(docs) + + +def get_object_types_mro(obj: Union[object, Type[Any]]) -> Tuple[type, ...]: + """Returns the MRO of an object's class, or of the object itself if it's a class.""" + if not hasattr(obj, "__mro__"): + # N.B. we cannot use `if type(obj) is type` here because it doesn't work with + # some types of classes, such as the ones that use abc.ABCMeta. + obj = type(obj) + return getattr(obj, "__mro__", ()) + + +def get_object_types_mro_as_strings(obj: object) -> Collection[str]: + """ + Returns the MRO of an object's class as full qualified names, or of the object itself if it's a class. + + Examples: + `object_types_mro_as_strings(JSONDecoder)` will return `['json.decoder.JSONDecoder', 'builtins.object']` + """ + return [ + f'{getattr(type_, "__module__", "")}.{getattr(type_, "__qualname__", "")}' + for type_ in get_object_types_mro(obj) + ] + + +def is_object_one_of_types( + obj: object, fully_qualified_types_names: Collection[str] +) -> bool: + """ + Returns `True` if the given object's class (or the object itself, if it's a class) has one of the + fully qualified names in its MRO. + """ + for type_name in get_object_types_mro_as_strings(obj): + if type_name in fully_qualified_types_names: + return True + return False diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_log_render.py b/venv/Lib/site-packages/pip/_vendor/rich/_log_render.py new file mode 100644 index 00000000000..fc16c84437a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_log_render.py @@ -0,0 +1,94 @@ +from datetime import datetime +from typing import Iterable, List, Optional, TYPE_CHECKING, Union, Callable + + +from .text import Text, TextType + +if TYPE_CHECKING: + from .console import Console, ConsoleRenderable, RenderableType + from .table import Table + +FormatTimeCallable = Callable[[datetime], Text] + + +class LogRender: + def __init__( + self, + show_time: bool = True, + show_level: bool = False, + show_path: bool = True, + time_format: Union[str, FormatTimeCallable] = "[%x %X]", + omit_repeated_times: bool = True, + level_width: Optional[int] = 8, + ) -> None: + self.show_time = show_time + self.show_level = show_level + self.show_path = show_path + self.time_format = time_format + self.omit_repeated_times = omit_repeated_times + self.level_width = level_width + self._last_time: Optional[Text] = None + + def __call__( + self, + console: "Console", + renderables: Iterable["ConsoleRenderable"], + log_time: Optional[datetime] = None, + time_format: Optional[Union[str, FormatTimeCallable]] = None, + level: TextType = "", + path: Optional[str] = None, + line_no: Optional[int] = None, + link_path: Optional[str] = None, + ) -> "Table": + from .containers import Renderables + from .table import Table + + output = Table.grid(padding=(0, 1)) + output.expand = True + if self.show_time: + output.add_column(style="log.time") + if self.show_level: + output.add_column(style="log.level", width=self.level_width) + output.add_column(ratio=1, style="log.message", overflow="fold") + if self.show_path and path: + output.add_column(style="log.path") + row: List["RenderableType"] = [] + if self.show_time: + log_time = log_time or console.get_datetime() + time_format = time_format or self.time_format + if callable(time_format): + log_time_display = time_format(log_time) + else: + log_time_display = Text(log_time.strftime(time_format)) + if log_time_display == self._last_time and self.omit_repeated_times: + row.append(Text(" " * len(log_time_display))) + else: + row.append(log_time_display) + self._last_time = log_time_display + if self.show_level: + row.append(level) + + row.append(Renderables(renderables)) + if self.show_path and path: + path_text = Text() + path_text.append( + path, style=f"link file://{link_path}" if link_path else "" + ) + if line_no: + path_text.append(":") + path_text.append( + f"{line_no}", + style=f"link file://{link_path}#{line_no}" if link_path else "", + ) + row.append(path_text) + + output.add_row(*row) + return output + + +if __name__ == "__main__": # pragma: no cover + from pip._vendor.rich.console import Console + + c = Console() + c.print("[on blue]Hello", justify="right") + c.log("[on blue]hello", justify="right") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_loop.py b/venv/Lib/site-packages/pip/_vendor/rich/_loop.py new file mode 100644 index 00000000000..01c6cafbe53 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_loop.py @@ -0,0 +1,43 @@ +from typing import Iterable, Tuple, TypeVar + +T = TypeVar("T") + + +def loop_first(values: Iterable[T]) -> Iterable[Tuple[bool, T]]: + """Iterate and generate a tuple with a flag for first value.""" + iter_values = iter(values) + try: + value = next(iter_values) + except StopIteration: + return + yield True, value + for value in iter_values: + yield False, value + + +def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]: + """Iterate and generate a tuple with a flag for last value.""" + iter_values = iter(values) + try: + previous_value = next(iter_values) + except StopIteration: + return + for value in iter_values: + yield False, previous_value + previous_value = value + yield True, previous_value + + +def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]: + """Iterate and generate a tuple with a flag for first and last value.""" + iter_values = iter(values) + try: + previous_value = next(iter_values) + except StopIteration: + return + first = True + for value in iter_values: + yield first, False, previous_value + first = False + previous_value = value + yield first, True, previous_value diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_null_file.py b/venv/Lib/site-packages/pip/_vendor/rich/_null_file.py new file mode 100644 index 00000000000..b659673ef3c --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_null_file.py @@ -0,0 +1,69 @@ +from types import TracebackType +from typing import IO, Iterable, Iterator, List, Optional, Type + + +class NullFile(IO[str]): + def close(self) -> None: + pass + + def isatty(self) -> bool: + return False + + def read(self, __n: int = 1) -> str: + return "" + + def readable(self) -> bool: + return False + + def readline(self, __limit: int = 1) -> str: + return "" + + def readlines(self, __hint: int = 1) -> List[str]: + return [] + + def seek(self, __offset: int, __whence: int = 1) -> int: + return 0 + + def seekable(self) -> bool: + return False + + def tell(self) -> int: + return 0 + + def truncate(self, __size: Optional[int] = 1) -> int: + return 0 + + def writable(self) -> bool: + return False + + def writelines(self, __lines: Iterable[str]) -> None: + pass + + def __next__(self) -> str: + return "" + + def __iter__(self) -> Iterator[str]: + return iter([""]) + + def __enter__(self) -> IO[str]: + pass + + def __exit__( + self, + __t: Optional[Type[BaseException]], + __value: Optional[BaseException], + __traceback: Optional[TracebackType], + ) -> None: + pass + + def write(self, text: str) -> int: + return 0 + + def flush(self) -> None: + pass + + def fileno(self) -> int: + return -1 + + +NULL_FILE = NullFile() diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_palettes.py b/venv/Lib/site-packages/pip/_vendor/rich/_palettes.py new file mode 100644 index 00000000000..3c748d33e45 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_palettes.py @@ -0,0 +1,309 @@ +from .palette import Palette + + +# Taken from https://en.wikipedia.org/wiki/ANSI_escape_code (Windows 10 column) +WINDOWS_PALETTE = Palette( + [ + (12, 12, 12), + (197, 15, 31), + (19, 161, 14), + (193, 156, 0), + (0, 55, 218), + (136, 23, 152), + (58, 150, 221), + (204, 204, 204), + (118, 118, 118), + (231, 72, 86), + (22, 198, 12), + (249, 241, 165), + (59, 120, 255), + (180, 0, 158), + (97, 214, 214), + (242, 242, 242), + ] +) + +# # The standard ansi colors (including bright variants) +STANDARD_PALETTE = Palette( + [ + (0, 0, 0), + (170, 0, 0), + (0, 170, 0), + (170, 85, 0), + (0, 0, 170), + (170, 0, 170), + (0, 170, 170), + (170, 170, 170), + (85, 85, 85), + (255, 85, 85), + (85, 255, 85), + (255, 255, 85), + (85, 85, 255), + (255, 85, 255), + (85, 255, 255), + (255, 255, 255), + ] +) + + +# The 256 color palette +EIGHT_BIT_PALETTE = Palette( + [ + (0, 0, 0), + (128, 0, 0), + (0, 128, 0), + (128, 128, 0), + (0, 0, 128), + (128, 0, 128), + (0, 128, 128), + (192, 192, 192), + (128, 128, 128), + (255, 0, 0), + (0, 255, 0), + (255, 255, 0), + (0, 0, 255), + (255, 0, 255), + (0, 255, 255), + (255, 255, 255), + (0, 0, 0), + (0, 0, 95), + (0, 0, 135), + (0, 0, 175), + (0, 0, 215), + (0, 0, 255), + (0, 95, 0), + (0, 95, 95), + (0, 95, 135), + (0, 95, 175), + (0, 95, 215), + (0, 95, 255), + (0, 135, 0), + (0, 135, 95), + (0, 135, 135), + (0, 135, 175), + (0, 135, 215), + (0, 135, 255), + (0, 175, 0), + (0, 175, 95), + (0, 175, 135), + (0, 175, 175), + (0, 175, 215), + (0, 175, 255), + (0, 215, 0), + (0, 215, 95), + (0, 215, 135), + (0, 215, 175), + (0, 215, 215), + (0, 215, 255), + (0, 255, 0), + (0, 255, 95), + (0, 255, 135), + (0, 255, 175), + (0, 255, 215), + (0, 255, 255), + (95, 0, 0), + (95, 0, 95), + (95, 0, 135), + (95, 0, 175), + (95, 0, 215), + (95, 0, 255), + (95, 95, 0), + (95, 95, 95), + (95, 95, 135), + (95, 95, 175), + (95, 95, 215), + (95, 95, 255), + (95, 135, 0), + (95, 135, 95), + (95, 135, 135), + (95, 135, 175), + (95, 135, 215), + (95, 135, 255), + (95, 175, 0), + (95, 175, 95), + (95, 175, 135), + (95, 175, 175), + (95, 175, 215), + (95, 175, 255), + (95, 215, 0), + (95, 215, 95), + (95, 215, 135), + (95, 215, 175), + (95, 215, 215), + (95, 215, 255), + (95, 255, 0), + (95, 255, 95), + (95, 255, 135), + (95, 255, 175), + (95, 255, 215), + (95, 255, 255), + (135, 0, 0), + (135, 0, 95), + (135, 0, 135), + (135, 0, 175), + (135, 0, 215), + (135, 0, 255), + (135, 95, 0), + (135, 95, 95), + (135, 95, 135), + (135, 95, 175), + (135, 95, 215), + (135, 95, 255), + (135, 135, 0), + (135, 135, 95), + (135, 135, 135), + (135, 135, 175), + (135, 135, 215), + (135, 135, 255), + (135, 175, 0), + (135, 175, 95), + (135, 175, 135), + (135, 175, 175), + (135, 175, 215), + (135, 175, 255), + (135, 215, 0), + (135, 215, 95), + (135, 215, 135), + (135, 215, 175), + (135, 215, 215), + (135, 215, 255), + (135, 255, 0), + (135, 255, 95), + (135, 255, 135), + (135, 255, 175), + (135, 255, 215), + (135, 255, 255), + (175, 0, 0), + (175, 0, 95), + (175, 0, 135), + (175, 0, 175), + (175, 0, 215), + (175, 0, 255), + (175, 95, 0), + (175, 95, 95), + (175, 95, 135), + (175, 95, 175), + (175, 95, 215), + (175, 95, 255), + (175, 135, 0), + (175, 135, 95), + (175, 135, 135), + (175, 135, 175), + (175, 135, 215), + (175, 135, 255), + (175, 175, 0), + (175, 175, 95), + (175, 175, 135), + (175, 175, 175), + (175, 175, 215), + (175, 175, 255), + (175, 215, 0), + (175, 215, 95), + (175, 215, 135), + (175, 215, 175), + (175, 215, 215), + (175, 215, 255), + (175, 255, 0), + (175, 255, 95), + (175, 255, 135), + (175, 255, 175), + (175, 255, 215), + (175, 255, 255), + (215, 0, 0), + (215, 0, 95), + (215, 0, 135), + (215, 0, 175), + (215, 0, 215), + (215, 0, 255), + (215, 95, 0), + (215, 95, 95), + (215, 95, 135), + (215, 95, 175), + (215, 95, 215), + (215, 95, 255), + (215, 135, 0), + (215, 135, 95), + (215, 135, 135), + (215, 135, 175), + (215, 135, 215), + (215, 135, 255), + (215, 175, 0), + (215, 175, 95), + (215, 175, 135), + (215, 175, 175), + (215, 175, 215), + (215, 175, 255), + (215, 215, 0), + (215, 215, 95), + (215, 215, 135), + (215, 215, 175), + (215, 215, 215), + (215, 215, 255), + (215, 255, 0), + (215, 255, 95), + (215, 255, 135), + (215, 255, 175), + (215, 255, 215), + (215, 255, 255), + (255, 0, 0), + (255, 0, 95), + (255, 0, 135), + (255, 0, 175), + (255, 0, 215), + (255, 0, 255), + (255, 95, 0), + (255, 95, 95), + (255, 95, 135), + (255, 95, 175), + (255, 95, 215), + (255, 95, 255), + (255, 135, 0), + (255, 135, 95), + (255, 135, 135), + (255, 135, 175), + (255, 135, 215), + (255, 135, 255), + (255, 175, 0), + (255, 175, 95), + (255, 175, 135), + (255, 175, 175), + (255, 175, 215), + (255, 175, 255), + (255, 215, 0), + (255, 215, 95), + (255, 215, 135), + (255, 215, 175), + (255, 215, 215), + (255, 215, 255), + (255, 255, 0), + (255, 255, 95), + (255, 255, 135), + (255, 255, 175), + (255, 255, 215), + (255, 255, 255), + (8, 8, 8), + (18, 18, 18), + (28, 28, 28), + (38, 38, 38), + (48, 48, 48), + (58, 58, 58), + (68, 68, 68), + (78, 78, 78), + (88, 88, 88), + (98, 98, 98), + (108, 108, 108), + (118, 118, 118), + (128, 128, 128), + (138, 138, 138), + (148, 148, 148), + (158, 158, 158), + (168, 168, 168), + (178, 178, 178), + (188, 188, 188), + (198, 198, 198), + (208, 208, 208), + (218, 218, 218), + (228, 228, 228), + (238, 238, 238), + ] +) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_pick.py b/venv/Lib/site-packages/pip/_vendor/rich/_pick.py new file mode 100644 index 00000000000..4f6d8b2d794 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_pick.py @@ -0,0 +1,17 @@ +from typing import Optional + + +def pick_bool(*values: Optional[bool]) -> bool: + """Pick the first non-none bool or return the last value. + + Args: + *values (bool): Any number of boolean or None values. + + Returns: + bool: First non-none boolean. + """ + assert values, "1 or more values required" + for value in values: + if value is not None: + return value + return bool(value) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_ratio.py b/venv/Lib/site-packages/pip/_vendor/rich/_ratio.py new file mode 100644 index 00000000000..95267b0cb6c --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_ratio.py @@ -0,0 +1,159 @@ +import sys +from fractions import Fraction +from math import ceil +from typing import cast, List, Optional, Sequence + +if sys.version_info >= (3, 8): + from typing import Protocol +else: + from pip._vendor.typing_extensions import Protocol # pragma: no cover + + +class Edge(Protocol): + """Any object that defines an edge (such as Layout).""" + + size: Optional[int] = None + ratio: int = 1 + minimum_size: int = 1 + + +def ratio_resolve(total: int, edges: Sequence[Edge]) -> List[int]: + """Divide total space to satisfy size, ratio, and minimum_size, constraints. + + The returned list of integers should add up to total in most cases, unless it is + impossible to satisfy all the constraints. For instance, if there are two edges + with a minimum size of 20 each and `total` is 30 then the returned list will be + greater than total. In practice, this would mean that a Layout object would + clip the rows that would overflow the screen height. + + Args: + total (int): Total number of characters. + edges (List[Edge]): Edges within total space. + + Returns: + List[int]: Number of characters for each edge. + """ + # Size of edge or None for yet to be determined + sizes = [(edge.size or None) for edge in edges] + + _Fraction = Fraction + + # While any edges haven't been calculated + while None in sizes: + # Get flexible edges and index to map these back on to sizes list + flexible_edges = [ + (index, edge) + for index, (size, edge) in enumerate(zip(sizes, edges)) + if size is None + ] + # Remaining space in total + remaining = total - sum(size or 0 for size in sizes) + if remaining <= 0: + # No room for flexible edges + return [ + ((edge.minimum_size or 1) if size is None else size) + for size, edge in zip(sizes, edges) + ] + # Calculate number of characters in a ratio portion + portion = _Fraction( + remaining, sum((edge.ratio or 1) for _, edge in flexible_edges) + ) + + # If any edges will be less than their minimum, replace size with the minimum + for index, edge in flexible_edges: + if portion * edge.ratio <= edge.minimum_size: + sizes[index] = edge.minimum_size + # New fixed size will invalidate calculations, so we need to repeat the process + break + else: + # Distribute flexible space and compensate for rounding error + # Since edge sizes can only be integers we need to add the remainder + # to the following line + remainder = _Fraction(0) + for index, edge in flexible_edges: + size, remainder = divmod(portion * edge.ratio + remainder, 1) + sizes[index] = size + break + # Sizes now contains integers only + return cast(List[int], sizes) + + +def ratio_reduce( + total: int, ratios: List[int], maximums: List[int], values: List[int] +) -> List[int]: + """Divide an integer total in to parts based on ratios. + + Args: + total (int): The total to divide. + ratios (List[int]): A list of integer ratios. + maximums (List[int]): List of maximums values for each slot. + values (List[int]): List of values + + Returns: + List[int]: A list of integers guaranteed to sum to total. + """ + ratios = [ratio if _max else 0 for ratio, _max in zip(ratios, maximums)] + total_ratio = sum(ratios) + if not total_ratio: + return values[:] + total_remaining = total + result: List[int] = [] + append = result.append + for ratio, maximum, value in zip(ratios, maximums, values): + if ratio and total_ratio > 0: + distributed = min(maximum, round(ratio * total_remaining / total_ratio)) + append(value - distributed) + total_remaining -= distributed + total_ratio -= ratio + else: + append(value) + return result + + +def ratio_distribute( + total: int, ratios: List[int], minimums: Optional[List[int]] = None +) -> List[int]: + """Distribute an integer total in to parts based on ratios. + + Args: + total (int): The total to divide. + ratios (List[int]): A list of integer ratios. + minimums (List[int]): List of minimum values for each slot. + + Returns: + List[int]: A list of integers guaranteed to sum to total. + """ + if minimums: + ratios = [ratio if _min else 0 for ratio, _min in zip(ratios, minimums)] + total_ratio = sum(ratios) + assert total_ratio > 0, "Sum of ratios must be > 0" + + total_remaining = total + distributed_total: List[int] = [] + append = distributed_total.append + if minimums is None: + _minimums = [0] * len(ratios) + else: + _minimums = minimums + for ratio, minimum in zip(ratios, _minimums): + if total_ratio > 0: + distributed = max(minimum, ceil(ratio * total_remaining / total_ratio)) + else: + distributed = total_remaining + append(distributed) + total_ratio -= ratio + total_remaining -= distributed + return distributed_total + + +if __name__ == "__main__": + from dataclasses import dataclass + + @dataclass + class E: + size: Optional[int] = None + ratio: int = 1 + minimum_size: int = 1 + + resolved = ratio_resolve(110, [E(None, 1, 1), E(None, 1, 1), E(None, 1, 1)]) + print(sum(resolved)) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_spinners.py b/venv/Lib/site-packages/pip/_vendor/rich/_spinners.py new file mode 100644 index 00000000000..d0bb1fe7516 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_spinners.py @@ -0,0 +1,482 @@ +""" +Spinners are from: +* cli-spinners: + MIT License + Copyright (c) Sindre Sorhus (sindresorhus.com) + 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 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. +""" + +SPINNERS = { + "dots": { + "interval": 80, + "frames": "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏", + }, + "dots2": {"interval": 80, "frames": "⣾⣽⣻⢿⡿⣟⣯⣷"}, + "dots3": { + "interval": 80, + "frames": "⠋⠙⠚⠞⠖⠦⠴⠲⠳⠓", + }, + "dots4": { + "interval": 80, + "frames": "⠄⠆⠇⠋⠙⠸⠰⠠⠰⠸⠙⠋⠇⠆", + }, + "dots5": { + "interval": 80, + "frames": "⠋⠙⠚⠒⠂⠂⠒⠲⠴⠦⠖⠒⠐⠐⠒⠓⠋", + }, + "dots6": { + "interval": 80, + "frames": "⠁⠉⠙⠚⠒⠂⠂⠒⠲⠴⠤⠄⠄⠤⠴⠲⠒⠂⠂⠒⠚⠙⠉⠁", + }, + "dots7": { + "interval": 80, + "frames": "⠈⠉⠋⠓⠒⠐⠐⠒⠖⠦⠤⠠⠠⠤⠦⠖⠒⠐⠐⠒⠓⠋⠉⠈", + }, + "dots8": { + "interval": 80, + "frames": "⠁⠁⠉⠙⠚⠒⠂⠂⠒⠲⠴⠤⠄⠄⠤⠠⠠⠤⠦⠖⠒⠐⠐⠒⠓⠋⠉⠈⠈", + }, + "dots9": {"interval": 80, "frames": "⢹⢺⢼⣸⣇⡧⡗⡏"}, + "dots10": {"interval": 80, "frames": "⢄⢂⢁⡁⡈⡐⡠"}, + "dots11": {"interval": 100, "frames": "⠁⠂⠄⡀⢀⠠⠐⠈"}, + "dots12": { + "interval": 80, + "frames": [ + "⢀⠀", + "⡀⠀", + "⠄⠀", + "⢂⠀", + "⡂⠀", + "⠅⠀", + "⢃⠀", + "⡃⠀", + "⠍⠀", + "⢋⠀", + "⡋⠀", + "⠍⠁", + "⢋⠁", + "⡋⠁", + "⠍⠉", + "⠋⠉", + "⠋⠉", + "⠉⠙", + "⠉⠙", + "⠉⠩", + "⠈⢙", + "⠈⡙", + "⢈⠩", + "⡀⢙", + "⠄⡙", + "⢂⠩", + "⡂⢘", + "⠅⡘", + "⢃⠨", + "⡃⢐", + "⠍⡐", + "⢋⠠", + "⡋⢀", + "⠍⡁", + "⢋⠁", + "⡋⠁", + "⠍⠉", + "⠋⠉", + "⠋⠉", + "⠉⠙", + "⠉⠙", + "⠉⠩", + "⠈⢙", + "⠈⡙", + "⠈⠩", + "⠀⢙", + "⠀⡙", + "⠀⠩", + "⠀⢘", + "⠀⡘", + "⠀⠨", + "⠀⢐", + "⠀⡐", + "⠀⠠", + "⠀⢀", + "⠀⡀", + ], + }, + "dots8Bit": { + "interval": 80, + "frames": "⠀⠁⠂⠃⠄⠅⠆⠇⡀⡁⡂⡃⡄⡅⡆⡇⠈⠉⠊⠋⠌⠍⠎⠏⡈⡉⡊⡋⡌⡍⡎⡏⠐⠑⠒⠓⠔⠕⠖⠗⡐⡑⡒⡓⡔⡕⡖⡗⠘⠙⠚⠛⠜⠝⠞⠟⡘⡙" + "⡚⡛⡜⡝⡞⡟⠠⠡⠢⠣⠤⠥⠦⠧⡠⡡⡢⡣⡤⡥⡦⡧⠨⠩⠪⠫⠬⠭⠮⠯⡨⡩⡪⡫⡬⡭⡮⡯⠰⠱⠲⠳⠴⠵⠶⠷⡰⡱⡲⡳⡴⡵⡶⡷⠸⠹⠺⠻" + "⠼⠽⠾⠿⡸⡹⡺⡻⡼⡽⡾⡿⢀⢁⢂⢃⢄⢅⢆⢇⣀⣁⣂⣃⣄⣅⣆⣇⢈⢉⢊⢋⢌⢍⢎⢏⣈⣉⣊⣋⣌⣍⣎⣏⢐⢑⢒⢓⢔⢕⢖⢗⣐⣑⣒⣓⣔⣕" + "⣖⣗⢘⢙⢚⢛⢜⢝⢞⢟⣘⣙⣚⣛⣜⣝⣞⣟⢠⢡⢢⢣⢤⢥⢦⢧⣠⣡⣢⣣⣤⣥⣦⣧⢨⢩⢪⢫⢬⢭⢮⢯⣨⣩⣪⣫⣬⣭⣮⣯⢰⢱⢲⢳⢴⢵⢶⢷" + "⣰⣱⣲⣳⣴⣵⣶⣷⢸⢹⢺⢻⢼⢽⢾⢿⣸⣹⣺⣻⣼⣽⣾⣿", + }, + "line": {"interval": 130, "frames": ["-", "\\", "|", "/"]}, + "line2": {"interval": 100, "frames": "⠂-–—–-"}, + "pipe": {"interval": 100, "frames": "┤┘┴└├┌┬┐"}, + "simpleDots": {"interval": 400, "frames": [". ", ".. ", "...", " "]}, + "simpleDotsScrolling": { + "interval": 200, + "frames": [". ", ".. ", "...", " ..", " .", " "], + }, + "star": {"interval": 70, "frames": "✶✸✹✺✹✷"}, + "star2": {"interval": 80, "frames": "+x*"}, + "flip": { + "interval": 70, + "frames": "___-``'´-___", + }, + "hamburger": {"interval": 100, "frames": "☱☲☴"}, + "growVertical": { + "interval": 120, + "frames": "▁▃▄▅▆▇▆▅▄▃", + }, + "growHorizontal": { + "interval": 120, + "frames": "▏▎▍▌▋▊▉▊▋▌▍▎", + }, + "balloon": {"interval": 140, "frames": " .oO@* "}, + "balloon2": {"interval": 120, "frames": ".oO°Oo."}, + "noise": {"interval": 100, "frames": "▓▒░"}, + "bounce": {"interval": 120, "frames": "⠁⠂⠄⠂"}, + "boxBounce": {"interval": 120, "frames": "▖▘▝▗"}, + "boxBounce2": {"interval": 100, "frames": "▌▀▐▄"}, + "triangle": {"interval": 50, "frames": "◢◣◤◥"}, + "arc": {"interval": 100, "frames": "◜◠◝◞◡◟"}, + "circle": {"interval": 120, "frames": "◡⊙◠"}, + "squareCorners": {"interval": 180, "frames": "◰◳◲◱"}, + "circleQuarters": {"interval": 120, "frames": "◴◷◶◵"}, + "circleHalves": {"interval": 50, "frames": "◐◓◑◒"}, + "squish": {"interval": 100, "frames": "╫╪"}, + "toggle": {"interval": 250, "frames": "⊶⊷"}, + "toggle2": {"interval": 80, "frames": "▫▪"}, + "toggle3": {"interval": 120, "frames": "□■"}, + "toggle4": {"interval": 100, "frames": "■□▪▫"}, + "toggle5": {"interval": 100, "frames": "▮▯"}, + "toggle6": {"interval": 300, "frames": "ဝ၀"}, + "toggle7": {"interval": 80, "frames": "⦾⦿"}, + "toggle8": {"interval": 100, "frames": "◍◌"}, + "toggle9": {"interval": 100, "frames": "◉◎"}, + "toggle10": {"interval": 100, "frames": "㊂㊀㊁"}, + "toggle11": {"interval": 50, "frames": "⧇⧆"}, + "toggle12": {"interval": 120, "frames": "☗☖"}, + "toggle13": {"interval": 80, "frames": "=*-"}, + "arrow": {"interval": 100, "frames": "←↖↑↗→↘↓↙"}, + "arrow2": { + "interval": 80, + "frames": ["⬆️ ", "↗️ ", "➡️ ", "↘️ ", "⬇️ ", "↙️ ", "⬅️ ", "↖️ "], + }, + "arrow3": { + "interval": 120, + "frames": ["▹▹▹▹▹", "▸▹▹▹▹", "▹▸▹▹▹", "▹▹▸▹▹", "▹▹▹▸▹", "▹▹▹▹▸"], + }, + "bouncingBar": { + "interval": 80, + "frames": [ + "[ ]", + "[= ]", + "[== ]", + "[=== ]", + "[ ===]", + "[ ==]", + "[ =]", + "[ ]", + "[ =]", + "[ ==]", + "[ ===]", + "[====]", + "[=== ]", + "[== ]", + "[= ]", + ], + }, + "bouncingBall": { + "interval": 80, + "frames": [ + "( ● )", + "( ● )", + "( ● )", + "( ● )", + "( ●)", + "( ● )", + "( ● )", + "( ● )", + "( ● )", + "(● )", + ], + }, + "smiley": {"interval": 200, "frames": ["😄 ", "😝 "]}, + "monkey": {"interval": 300, "frames": ["🙈 ", "🙈 ", "🙉 ", "🙊 "]}, + "hearts": {"interval": 100, "frames": ["💛 ", "💙 ", "💜 ", "💚 ", "❤️ "]}, + "clock": { + "interval": 100, + "frames": [ + "🕛 ", + "🕐 ", + "🕑 ", + "🕒 ", + "🕓 ", + "🕔 ", + "🕕 ", + "🕖 ", + "🕗 ", + "🕘 ", + "🕙 ", + "🕚 ", + ], + }, + "earth": {"interval": 180, "frames": ["🌍 ", "🌎 ", "🌏 "]}, + "material": { + "interval": 17, + "frames": [ + "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "███████▁▁▁▁▁▁▁▁▁▁▁▁▁", + "████████▁▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "██████████▁▁▁▁▁▁▁▁▁▁", + "███████████▁▁▁▁▁▁▁▁▁", + "█████████████▁▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁▁██████████████▁▁▁▁", + "▁▁▁██████████████▁▁▁", + "▁▁▁▁█████████████▁▁▁", + "▁▁▁▁██████████████▁▁", + "▁▁▁▁██████████████▁▁", + "▁▁▁▁▁██████████████▁", + "▁▁▁▁▁██████████████▁", + "▁▁▁▁▁██████████████▁", + "▁▁▁▁▁▁██████████████", + "▁▁▁▁▁▁██████████████", + "▁▁▁▁▁▁▁█████████████", + "▁▁▁▁▁▁▁█████████████", + "▁▁▁▁▁▁▁▁████████████", + "▁▁▁▁▁▁▁▁████████████", + "▁▁▁▁▁▁▁▁▁███████████", + "▁▁▁▁▁▁▁▁▁███████████", + "▁▁▁▁▁▁▁▁▁▁██████████", + "▁▁▁▁▁▁▁▁▁▁██████████", + "▁▁▁▁▁▁▁▁▁▁▁▁████████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", + "█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "██████▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "████████▁▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "█████████▁▁▁▁▁▁▁▁▁▁▁", + "███████████▁▁▁▁▁▁▁▁▁", + "████████████▁▁▁▁▁▁▁▁", + "████████████▁▁▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "██████████████▁▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁██████████████▁▁▁▁▁", + "▁▁▁█████████████▁▁▁▁", + "▁▁▁▁▁████████████▁▁▁", + "▁▁▁▁▁████████████▁▁▁", + "▁▁▁▁▁▁███████████▁▁▁", + "▁▁▁▁▁▁▁▁█████████▁▁▁", + "▁▁▁▁▁▁▁▁█████████▁▁▁", + "▁▁▁▁▁▁▁▁▁█████████▁▁", + "▁▁▁▁▁▁▁▁▁█████████▁▁", + "▁▁▁▁▁▁▁▁▁▁█████████▁", + "▁▁▁▁▁▁▁▁▁▁▁████████▁", + "▁▁▁▁▁▁▁▁▁▁▁████████▁", + "▁▁▁▁▁▁▁▁▁▁▁▁███████▁", + "▁▁▁▁▁▁▁▁▁▁▁▁███████▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁███████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + "▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", + ], + }, + "moon": { + "interval": 80, + "frames": ["🌑 ", "🌒 ", "🌓 ", "🌔 ", "🌕 ", "🌖 ", "🌗 ", "🌘 "], + }, + "runner": {"interval": 140, "frames": ["🚶 ", "🏃 "]}, + "pong": { + "interval": 80, + "frames": [ + "▐⠂ ▌", + "▐⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂▌", + "▐ ⠠▌", + "▐ ⡀▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐ ⠠ ▌", + "▐ ⠂ ▌", + "▐ ⠈ ▌", + "▐ ⠂ ▌", + "▐ ⠠ ▌", + "▐ ⡀ ▌", + "▐⠠ ▌", + ], + }, + "shark": { + "interval": 120, + "frames": [ + "▐|\\____________▌", + "▐_|\\___________▌", + "▐__|\\__________▌", + "▐___|\\_________▌", + "▐____|\\________▌", + "▐_____|\\_______▌", + "▐______|\\______▌", + "▐_______|\\_____▌", + "▐________|\\____▌", + "▐_________|\\___▌", + "▐__________|\\__▌", + "▐___________|\\_▌", + "▐____________|\\▌", + "▐____________/|▌", + "▐___________/|_▌", + "▐__________/|__▌", + "▐_________/|___▌", + "▐________/|____▌", + "▐_______/|_____▌", + "▐______/|______▌", + "▐_____/|_______▌", + "▐____/|________▌", + "▐___/|_________▌", + "▐__/|__________▌", + "▐_/|___________▌", + "▐/|____________▌", + ], + }, + "dqpb": {"interval": 100, "frames": "dqpb"}, + "weather": { + "interval": 100, + "frames": [ + "☀️ ", + "☀️ ", + "☀️ ", + "🌤 ", + "⛅️ ", + "🌥 ", + "☁️ ", + "🌧 ", + "🌨 ", + "🌧 ", + "🌨 ", + "🌧 ", + "🌨 ", + "⛈ ", + "🌨 ", + "🌧 ", + "🌨 ", + "☁️ ", + "🌥 ", + "⛅️ ", + "🌤 ", + "☀️ ", + "☀️ ", + ], + }, + "christmas": {"interval": 400, "frames": "🌲🎄"}, + "grenade": { + "interval": 80, + "frames": [ + "، ", + "′ ", + " ´ ", + " ‾ ", + " ⸌", + " ⸊", + " |", + " ⁎", + " ⁕", + " ෴ ", + " ⁓", + " ", + " ", + " ", + ], + }, + "point": {"interval": 125, "frames": ["∙∙∙", "●∙∙", "∙●∙", "∙∙●", "∙∙∙"]}, + "layer": {"interval": 150, "frames": "-=≡"}, + "betaWave": { + "interval": 80, + "frames": [ + "ρββββββ", + "βρβββββ", + "ββρββββ", + "βββρβββ", + "ββββρββ", + "βββββρβ", + "ββββββρ", + ], + }, + "aesthetic": { + "interval": 80, + "frames": [ + "▰▱▱▱▱▱▱", + "▰▰▱▱▱▱▱", + "▰▰▰▱▱▱▱", + "▰▰▰▰▱▱▱", + "▰▰▰▰▰▱▱", + "▰▰▰▰▰▰▱", + "▰▰▰▰▰▰▰", + "▰▱▱▱▱▱▱", + ], + }, +} diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_stack.py b/venv/Lib/site-packages/pip/_vendor/rich/_stack.py new file mode 100644 index 00000000000..194564e761d --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_stack.py @@ -0,0 +1,16 @@ +from typing import List, TypeVar + +T = TypeVar("T") + + +class Stack(List[T]): + """A small shim over builtin list.""" + + @property + def top(self) -> T: + """Get top of stack.""" + return self[-1] + + def push(self, item: T) -> None: + """Push an item on to the stack (append in stack nomenclature).""" + self.append(item) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_timer.py b/venv/Lib/site-packages/pip/_vendor/rich/_timer.py new file mode 100644 index 00000000000..a2ca6be03c4 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_timer.py @@ -0,0 +1,19 @@ +""" +Timer context manager, only used in debug. + +""" + +from time import time + +import contextlib +from typing import Generator + + +@contextlib.contextmanager +def timer(subject: str = "time") -> Generator[None, None, None]: + """print the elapsed time. (only used in debugging)""" + start = time() + yield + elapsed = time() - start + elapsed_ms = elapsed * 1000 + print(f"{subject} elapsed {elapsed_ms:.1f}ms") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py b/venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py new file mode 100644 index 00000000000..81b10829053 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py @@ -0,0 +1,662 @@ +"""Light wrapper around the Win32 Console API - this module should only be imported on Windows + +The API that this module wraps is documented at https://docs.microsoft.com/en-us/windows/console/console-functions +""" +import ctypes +import sys +from typing import Any + +windll: Any = None +if sys.platform == "win32": + windll = ctypes.LibraryLoader(ctypes.WinDLL) +else: + raise ImportError(f"{__name__} can only be imported on Windows") + +import time +from ctypes import Structure, byref, wintypes +from typing import IO, NamedTuple, Type, cast + +from pip._vendor.rich.color import ColorSystem +from pip._vendor.rich.style import Style + +STDOUT = -11 +ENABLE_VIRTUAL_TERMINAL_PROCESSING = 4 + +COORD = wintypes._COORD + + +class LegacyWindowsError(Exception): + pass + + +class WindowsCoordinates(NamedTuple): + """Coordinates in the Windows Console API are (y, x), not (x, y). + This class is intended to prevent that confusion. + Rows and columns are indexed from 0. + This class can be used in place of wintypes._COORD in arguments and argtypes. + """ + + row: int + col: int + + @classmethod + def from_param(cls, value: "WindowsCoordinates") -> COORD: + """Converts a WindowsCoordinates into a wintypes _COORD structure. + This classmethod is internally called by ctypes to perform the conversion. + + Args: + value (WindowsCoordinates): The input coordinates to convert. + + Returns: + wintypes._COORD: The converted coordinates struct. + """ + return COORD(value.col, value.row) + + +class CONSOLE_SCREEN_BUFFER_INFO(Structure): + _fields_ = [ + ("dwSize", COORD), + ("dwCursorPosition", COORD), + ("wAttributes", wintypes.WORD), + ("srWindow", wintypes.SMALL_RECT), + ("dwMaximumWindowSize", COORD), + ] + + +class CONSOLE_CURSOR_INFO(ctypes.Structure): + _fields_ = [("dwSize", wintypes.DWORD), ("bVisible", wintypes.BOOL)] + + +_GetStdHandle = windll.kernel32.GetStdHandle +_GetStdHandle.argtypes = [ + wintypes.DWORD, +] +_GetStdHandle.restype = wintypes.HANDLE + + +def GetStdHandle(handle: int = STDOUT) -> wintypes.HANDLE: + """Retrieves a handle to the specified standard device (standard input, standard output, or standard error). + + Args: + handle (int): Integer identifier for the handle. Defaults to -11 (stdout). + + Returns: + wintypes.HANDLE: The handle + """ + return cast(wintypes.HANDLE, _GetStdHandle(handle)) + + +_GetConsoleMode = windll.kernel32.GetConsoleMode +_GetConsoleMode.argtypes = [wintypes.HANDLE, wintypes.LPDWORD] +_GetConsoleMode.restype = wintypes.BOOL + + +def GetConsoleMode(std_handle: wintypes.HANDLE) -> int: + """Retrieves the current input mode of a console's input buffer + or the current output mode of a console screen buffer. + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + + Raises: + LegacyWindowsError: If any error occurs while calling the Windows console API. + + Returns: + int: Value representing the current console mode as documented at + https://docs.microsoft.com/en-us/windows/console/getconsolemode#parameters + """ + + console_mode = wintypes.DWORD() + success = bool(_GetConsoleMode(std_handle, console_mode)) + if not success: + raise LegacyWindowsError("Unable to get legacy Windows Console Mode") + return console_mode.value + + +_FillConsoleOutputCharacterW = windll.kernel32.FillConsoleOutputCharacterW +_FillConsoleOutputCharacterW.argtypes = [ + wintypes.HANDLE, + ctypes.c_char, + wintypes.DWORD, + cast(Type[COORD], WindowsCoordinates), + ctypes.POINTER(wintypes.DWORD), +] +_FillConsoleOutputCharacterW.restype = wintypes.BOOL + + +def FillConsoleOutputCharacter( + std_handle: wintypes.HANDLE, + char: str, + length: int, + start: WindowsCoordinates, +) -> int: + """Writes a character to the console screen buffer a specified number of times, beginning at the specified coordinates. + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + char (str): The character to write. Must be a string of length 1. + length (int): The number of times to write the character. + start (WindowsCoordinates): The coordinates to start writing at. + + Returns: + int: The number of characters written. + """ + character = ctypes.c_char(char.encode()) + num_characters = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + _FillConsoleOutputCharacterW( + std_handle, + character, + num_characters, + start, + byref(num_written), + ) + return num_written.value + + +_FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute +_FillConsoleOutputAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + wintypes.DWORD, + cast(Type[COORD], WindowsCoordinates), + ctypes.POINTER(wintypes.DWORD), +] +_FillConsoleOutputAttribute.restype = wintypes.BOOL + + +def FillConsoleOutputAttribute( + std_handle: wintypes.HANDLE, + attributes: int, + length: int, + start: WindowsCoordinates, +) -> int: + """Sets the character attributes for a specified number of character cells, + beginning at the specified coordinates in a screen buffer. + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + attributes (int): Integer value representing the foreground and background colours of the cells. + length (int): The number of cells to set the output attribute of. + start (WindowsCoordinates): The coordinates of the first cell whose attributes are to be set. + + Returns: + int: The number of cells whose attributes were actually set. + """ + num_cells = wintypes.DWORD(length) + style_attrs = wintypes.WORD(attributes) + num_written = wintypes.DWORD(0) + _FillConsoleOutputAttribute( + std_handle, style_attrs, num_cells, start, byref(num_written) + ) + return num_written.value + + +_SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute +_SetConsoleTextAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, +] +_SetConsoleTextAttribute.restype = wintypes.BOOL + + +def SetConsoleTextAttribute( + std_handle: wintypes.HANDLE, attributes: wintypes.WORD +) -> bool: + """Set the colour attributes for all text written after this function is called. + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + attributes (int): Integer value representing the foreground and background colours. + + + Returns: + bool: True if the attribute was set successfully, otherwise False. + """ + return bool(_SetConsoleTextAttribute(std_handle, attributes)) + + +_GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo +_GetConsoleScreenBufferInfo.argtypes = [ + wintypes.HANDLE, + ctypes.POINTER(CONSOLE_SCREEN_BUFFER_INFO), +] +_GetConsoleScreenBufferInfo.restype = wintypes.BOOL + + +def GetConsoleScreenBufferInfo( + std_handle: wintypes.HANDLE, +) -> CONSOLE_SCREEN_BUFFER_INFO: + """Retrieves information about the specified console screen buffer. + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + + Returns: + CONSOLE_SCREEN_BUFFER_INFO: A CONSOLE_SCREEN_BUFFER_INFO ctype struct contain information about + screen size, cursor position, colour attributes, and more.""" + console_screen_buffer_info = CONSOLE_SCREEN_BUFFER_INFO() + _GetConsoleScreenBufferInfo(std_handle, byref(console_screen_buffer_info)) + return console_screen_buffer_info + + +_SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition +_SetConsoleCursorPosition.argtypes = [ + wintypes.HANDLE, + cast(Type[COORD], WindowsCoordinates), +] +_SetConsoleCursorPosition.restype = wintypes.BOOL + + +def SetConsoleCursorPosition( + std_handle: wintypes.HANDLE, coords: WindowsCoordinates +) -> bool: + """Set the position of the cursor in the console screen + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + coords (WindowsCoordinates): The coordinates to move the cursor to. + + Returns: + bool: True if the function succeeds, otherwise False. + """ + return bool(_SetConsoleCursorPosition(std_handle, coords)) + + +_GetConsoleCursorInfo = windll.kernel32.GetConsoleCursorInfo +_GetConsoleCursorInfo.argtypes = [ + wintypes.HANDLE, + ctypes.POINTER(CONSOLE_CURSOR_INFO), +] +_GetConsoleCursorInfo.restype = wintypes.BOOL + + +def GetConsoleCursorInfo( + std_handle: wintypes.HANDLE, cursor_info: CONSOLE_CURSOR_INFO +) -> bool: + """Get the cursor info - used to get cursor visibility and width + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + cursor_info (CONSOLE_CURSOR_INFO): CONSOLE_CURSOR_INFO ctype struct that receives information + about the console's cursor. + + Returns: + bool: True if the function succeeds, otherwise False. + """ + return bool(_GetConsoleCursorInfo(std_handle, byref(cursor_info))) + + +_SetConsoleCursorInfo = windll.kernel32.SetConsoleCursorInfo +_SetConsoleCursorInfo.argtypes = [ + wintypes.HANDLE, + ctypes.POINTER(CONSOLE_CURSOR_INFO), +] +_SetConsoleCursorInfo.restype = wintypes.BOOL + + +def SetConsoleCursorInfo( + std_handle: wintypes.HANDLE, cursor_info: CONSOLE_CURSOR_INFO +) -> bool: + """Set the cursor info - used for adjusting cursor visibility and width + + Args: + std_handle (wintypes.HANDLE): A handle to the console input buffer or the console screen buffer. + cursor_info (CONSOLE_CURSOR_INFO): CONSOLE_CURSOR_INFO ctype struct containing the new cursor info. + + Returns: + bool: True if the function succeeds, otherwise False. + """ + return bool(_SetConsoleCursorInfo(std_handle, byref(cursor_info))) + + +_SetConsoleTitle = windll.kernel32.SetConsoleTitleW +_SetConsoleTitle.argtypes = [wintypes.LPCWSTR] +_SetConsoleTitle.restype = wintypes.BOOL + + +def SetConsoleTitle(title: str) -> bool: + """Sets the title of the current console window + + Args: + title (str): The new title of the console window. + + Returns: + bool: True if the function succeeds, otherwise False. + """ + return bool(_SetConsoleTitle(title)) + + +class LegacyWindowsTerm: + """This class allows interaction with the legacy Windows Console API. It should only be used in the context + of environments where virtual terminal processing is not available. However, if it is used in a Windows environment, + the entire API should work. + + Args: + file (IO[str]): The file which the Windows Console API HANDLE is retrieved from, defaults to sys.stdout. + """ + + BRIGHT_BIT = 8 + + # Indices are ANSI color numbers, values are the corresponding Windows Console API color numbers + ANSI_TO_WINDOWS = [ + 0, # black The Windows colours are defined in wincon.h as follows: + 4, # red define FOREGROUND_BLUE 0x0001 -- 0000 0001 + 2, # green define FOREGROUND_GREEN 0x0002 -- 0000 0010 + 6, # yellow define FOREGROUND_RED 0x0004 -- 0000 0100 + 1, # blue define FOREGROUND_INTENSITY 0x0008 -- 0000 1000 + 5, # magenta define BACKGROUND_BLUE 0x0010 -- 0001 0000 + 3, # cyan define BACKGROUND_GREEN 0x0020 -- 0010 0000 + 7, # white define BACKGROUND_RED 0x0040 -- 0100 0000 + 8, # bright black (grey) define BACKGROUND_INTENSITY 0x0080 -- 1000 0000 + 12, # bright red + 10, # bright green + 14, # bright yellow + 9, # bright blue + 13, # bright magenta + 11, # bright cyan + 15, # bright white + ] + + def __init__(self, file: "IO[str]") -> None: + handle = GetStdHandle(STDOUT) + self._handle = handle + default_text = GetConsoleScreenBufferInfo(handle).wAttributes + self._default_text = default_text + + self._default_fore = default_text & 7 + self._default_back = (default_text >> 4) & 7 + self._default_attrs = self._default_fore | (self._default_back << 4) + + self._file = file + self.write = file.write + self.flush = file.flush + + @property + def cursor_position(self) -> WindowsCoordinates: + """Returns the current position of the cursor (0-based) + + Returns: + WindowsCoordinates: The current cursor position. + """ + coord: COORD = GetConsoleScreenBufferInfo(self._handle).dwCursorPosition + return WindowsCoordinates(row=cast(int, coord.Y), col=cast(int, coord.X)) + + @property + def screen_size(self) -> WindowsCoordinates: + """Returns the current size of the console screen buffer, in character columns and rows + + Returns: + WindowsCoordinates: The width and height of the screen as WindowsCoordinates. + """ + screen_size: COORD = GetConsoleScreenBufferInfo(self._handle).dwSize + return WindowsCoordinates( + row=cast(int, screen_size.Y), col=cast(int, screen_size.X) + ) + + def write_text(self, text: str) -> None: + """Write text directly to the terminal without any modification of styles + + Args: + text (str): The text to write to the console + """ + self.write(text) + self.flush() + + def write_styled(self, text: str, style: Style) -> None: + """Write styled text to the terminal. + + Args: + text (str): The text to write + style (Style): The style of the text + """ + color = style.color + bgcolor = style.bgcolor + if style.reverse: + color, bgcolor = bgcolor, color + + if color: + fore = color.downgrade(ColorSystem.WINDOWS).number + fore = fore if fore is not None else 7 # Default to ANSI 7: White + if style.bold: + fore = fore | self.BRIGHT_BIT + if style.dim: + fore = fore & ~self.BRIGHT_BIT + fore = self.ANSI_TO_WINDOWS[fore] + else: + fore = self._default_fore + + if bgcolor: + back = bgcolor.downgrade(ColorSystem.WINDOWS).number + back = back if back is not None else 0 # Default to ANSI 0: Black + back = self.ANSI_TO_WINDOWS[back] + else: + back = self._default_back + + assert fore is not None + assert back is not None + + SetConsoleTextAttribute( + self._handle, attributes=ctypes.c_ushort(fore | (back << 4)) + ) + self.write_text(text) + SetConsoleTextAttribute(self._handle, attributes=self._default_text) + + def move_cursor_to(self, new_position: WindowsCoordinates) -> None: + """Set the position of the cursor + + Args: + new_position (WindowsCoordinates): The WindowsCoordinates representing the new position of the cursor. + """ + if new_position.col < 0 or new_position.row < 0: + return + SetConsoleCursorPosition(self._handle, coords=new_position) + + def erase_line(self) -> None: + """Erase all content on the line the cursor is currently located at""" + screen_size = self.screen_size + cursor_position = self.cursor_position + cells_to_erase = screen_size.col + start_coordinates = WindowsCoordinates(row=cursor_position.row, col=0) + FillConsoleOutputCharacter( + self._handle, " ", length=cells_to_erase, start=start_coordinates + ) + FillConsoleOutputAttribute( + self._handle, + self._default_attrs, + length=cells_to_erase, + start=start_coordinates, + ) + + def erase_end_of_line(self) -> None: + """Erase all content from the cursor position to the end of that line""" + cursor_position = self.cursor_position + cells_to_erase = self.screen_size.col - cursor_position.col + FillConsoleOutputCharacter( + self._handle, " ", length=cells_to_erase, start=cursor_position + ) + FillConsoleOutputAttribute( + self._handle, + self._default_attrs, + length=cells_to_erase, + start=cursor_position, + ) + + def erase_start_of_line(self) -> None: + """Erase all content from the cursor position to the start of that line""" + row, col = self.cursor_position + start = WindowsCoordinates(row, 0) + FillConsoleOutputCharacter(self._handle, " ", length=col, start=start) + FillConsoleOutputAttribute( + self._handle, self._default_attrs, length=col, start=start + ) + + def move_cursor_up(self) -> None: + """Move the cursor up a single cell""" + cursor_position = self.cursor_position + SetConsoleCursorPosition( + self._handle, + coords=WindowsCoordinates( + row=cursor_position.row - 1, col=cursor_position.col + ), + ) + + def move_cursor_down(self) -> None: + """Move the cursor down a single cell""" + cursor_position = self.cursor_position + SetConsoleCursorPosition( + self._handle, + coords=WindowsCoordinates( + row=cursor_position.row + 1, + col=cursor_position.col, + ), + ) + + def move_cursor_forward(self) -> None: + """Move the cursor forward a single cell. Wrap to the next line if required.""" + row, col = self.cursor_position + if col == self.screen_size.col - 1: + row += 1 + col = 0 + else: + col += 1 + SetConsoleCursorPosition( + self._handle, coords=WindowsCoordinates(row=row, col=col) + ) + + def move_cursor_to_column(self, column: int) -> None: + """Move cursor to the column specified by the zero-based column index, staying on the same row + + Args: + column (int): The zero-based column index to move the cursor to. + """ + row, _ = self.cursor_position + SetConsoleCursorPosition(self._handle, coords=WindowsCoordinates(row, column)) + + def move_cursor_backward(self) -> None: + """Move the cursor backward a single cell. Wrap to the previous line if required.""" + row, col = self.cursor_position + if col == 0: + row -= 1 + col = self.screen_size.col - 1 + else: + col -= 1 + SetConsoleCursorPosition( + self._handle, coords=WindowsCoordinates(row=row, col=col) + ) + + def hide_cursor(self) -> None: + """Hide the cursor""" + current_cursor_size = self._get_cursor_size() + invisible_cursor = CONSOLE_CURSOR_INFO(dwSize=current_cursor_size, bVisible=0) + SetConsoleCursorInfo(self._handle, cursor_info=invisible_cursor) + + def show_cursor(self) -> None: + """Show the cursor""" + current_cursor_size = self._get_cursor_size() + visible_cursor = CONSOLE_CURSOR_INFO(dwSize=current_cursor_size, bVisible=1) + SetConsoleCursorInfo(self._handle, cursor_info=visible_cursor) + + def set_title(self, title: str) -> None: + """Set the title of the terminal window + + Args: + title (str): The new title of the console window + """ + assert len(title) < 255, "Console title must be less than 255 characters" + SetConsoleTitle(title) + + def _get_cursor_size(self) -> int: + """Get the percentage of the character cell that is filled by the cursor""" + cursor_info = CONSOLE_CURSOR_INFO() + GetConsoleCursorInfo(self._handle, cursor_info=cursor_info) + return int(cursor_info.dwSize) + + +if __name__ == "__main__": + handle = GetStdHandle() + + from pip._vendor.rich.console import Console + + console = Console() + + term = LegacyWindowsTerm(sys.stdout) + term.set_title("Win32 Console Examples") + + style = Style(color="black", bgcolor="red") + + heading = Style.parse("black on green") + + # Check colour output + console.rule("Checking colour output") + console.print("[on red]on red!") + console.print("[blue]blue!") + console.print("[yellow]yellow!") + console.print("[bold yellow]bold yellow!") + console.print("[bright_yellow]bright_yellow!") + console.print("[dim bright_yellow]dim bright_yellow!") + console.print("[italic cyan]italic cyan!") + console.print("[bold white on blue]bold white on blue!") + console.print("[reverse bold white on blue]reverse bold white on blue!") + console.print("[bold black on cyan]bold black on cyan!") + console.print("[black on green]black on green!") + console.print("[blue on green]blue on green!") + console.print("[white on black]white on black!") + console.print("[black on white]black on white!") + console.print("[#1BB152 on #DA812D]#1BB152 on #DA812D!") + + # Check cursor movement + console.rule("Checking cursor movement") + console.print() + term.move_cursor_backward() + term.move_cursor_backward() + term.write_text("went back and wrapped to prev line") + time.sleep(1) + term.move_cursor_up() + term.write_text("we go up") + time.sleep(1) + term.move_cursor_down() + term.write_text("and down") + time.sleep(1) + term.move_cursor_up() + term.move_cursor_backward() + term.move_cursor_backward() + term.write_text("we went up and back 2") + time.sleep(1) + term.move_cursor_down() + term.move_cursor_backward() + term.move_cursor_backward() + term.write_text("we went down and back 2") + time.sleep(1) + + # Check erasing of lines + term.hide_cursor() + console.print() + console.rule("Checking line erasing") + console.print("\n...Deleting to the start of the line...") + term.write_text("The red arrow shows the cursor location, and direction of erase") + time.sleep(1) + term.move_cursor_to_column(16) + term.write_styled("<", Style.parse("black on red")) + term.move_cursor_backward() + time.sleep(1) + term.erase_start_of_line() + time.sleep(1) + + console.print("\n\n...And to the end of the line...") + term.write_text("The red arrow shows the cursor location, and direction of erase") + time.sleep(1) + + term.move_cursor_to_column(16) + term.write_styled(">", Style.parse("black on red")) + time.sleep(1) + term.erase_end_of_line() + time.sleep(1) + + console.print("\n\n...Now the whole line will be erased...") + term.write_styled("I'm going to disappear!", style=Style.parse("black on cyan")) + time.sleep(1) + term.erase_line() + + term.show_cursor() + print("\n") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_windows.py b/venv/Lib/site-packages/pip/_vendor/rich/_windows.py new file mode 100644 index 00000000000..7520a9f90a5 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_windows.py @@ -0,0 +1,71 @@ +import sys +from dataclasses import dataclass + + +@dataclass +class WindowsConsoleFeatures: + """Windows features available.""" + + vt: bool = False + """The console supports VT codes.""" + truecolor: bool = False + """The console supports truecolor.""" + + +try: + import ctypes + from ctypes import LibraryLoader + + if sys.platform == "win32": + windll = LibraryLoader(ctypes.WinDLL) + else: + windll = None + raise ImportError("Not windows") + + from pip._vendor.rich._win32_console import ( + ENABLE_VIRTUAL_TERMINAL_PROCESSING, + GetConsoleMode, + GetStdHandle, + LegacyWindowsError, + ) + +except (AttributeError, ImportError, ValueError): + # Fallback if we can't load the Windows DLL + def get_windows_console_features() -> WindowsConsoleFeatures: + features = WindowsConsoleFeatures() + return features + +else: + + def get_windows_console_features() -> WindowsConsoleFeatures: + """Get windows console features. + + Returns: + WindowsConsoleFeatures: An instance of WindowsConsoleFeatures. + """ + handle = GetStdHandle() + try: + console_mode = GetConsoleMode(handle) + success = True + except LegacyWindowsError: + console_mode = 0 + success = False + vt = bool(success and console_mode & ENABLE_VIRTUAL_TERMINAL_PROCESSING) + truecolor = False + if vt: + win_version = sys.getwindowsversion() + truecolor = win_version.major > 10 or ( + win_version.major == 10 and win_version.build >= 15063 + ) + features = WindowsConsoleFeatures(vt=vt, truecolor=truecolor) + return features + + +if __name__ == "__main__": + import platform + + features = get_windows_console_features() + from pip._vendor.rich import print + + print(f'platform="{platform.system()}"') + print(repr(features)) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py b/venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py new file mode 100644 index 00000000000..5ece05649e7 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py @@ -0,0 +1,56 @@ +from typing import Iterable, Sequence, Tuple, cast + +from pip._vendor.rich._win32_console import LegacyWindowsTerm, WindowsCoordinates +from pip._vendor.rich.segment import ControlCode, ControlType, Segment + + +def legacy_windows_render(buffer: Iterable[Segment], term: LegacyWindowsTerm) -> None: + """Makes appropriate Windows Console API calls based on the segments in the buffer. + + Args: + buffer (Iterable[Segment]): Iterable of Segments to convert to Win32 API calls. + term (LegacyWindowsTerm): Used to call the Windows Console API. + """ + for text, style, control in buffer: + if not control: + if style: + term.write_styled(text, style) + else: + term.write_text(text) + else: + control_codes: Sequence[ControlCode] = control + for control_code in control_codes: + control_type = control_code[0] + if control_type == ControlType.CURSOR_MOVE_TO: + _, x, y = cast(Tuple[ControlType, int, int], control_code) + term.move_cursor_to(WindowsCoordinates(row=y - 1, col=x - 1)) + elif control_type == ControlType.CARRIAGE_RETURN: + term.write_text("\r") + elif control_type == ControlType.HOME: + term.move_cursor_to(WindowsCoordinates(0, 0)) + elif control_type == ControlType.CURSOR_UP: + term.move_cursor_up() + elif control_type == ControlType.CURSOR_DOWN: + term.move_cursor_down() + elif control_type == ControlType.CURSOR_FORWARD: + term.move_cursor_forward() + elif control_type == ControlType.CURSOR_BACKWARD: + term.move_cursor_backward() + elif control_type == ControlType.CURSOR_MOVE_TO_COLUMN: + _, column = cast(Tuple[ControlType, int], control_code) + term.move_cursor_to_column(column - 1) + elif control_type == ControlType.HIDE_CURSOR: + term.hide_cursor() + elif control_type == ControlType.SHOW_CURSOR: + term.show_cursor() + elif control_type == ControlType.ERASE_IN_LINE: + _, mode = cast(Tuple[ControlType, int], control_code) + if mode == 0: + term.erase_end_of_line() + elif mode == 1: + term.erase_start_of_line() + elif mode == 2: + term.erase_line() + elif control_type == ControlType.SET_WINDOW_TITLE: + _, title = cast(Tuple[ControlType, str], control_code) + term.set_title(title) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/_wrap.py b/venv/Lib/site-packages/pip/_vendor/rich/_wrap.py new file mode 100644 index 00000000000..2e94ff6f43a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/_wrap.py @@ -0,0 +1,93 @@ +from __future__ import annotations + +import re +from typing import Iterable + +from ._loop import loop_last +from .cells import cell_len, chop_cells + +re_word = re.compile(r"\s*\S+\s*") + + +def words(text: str) -> Iterable[tuple[int, int, str]]: + """Yields each word from the text as a tuple + containing (start_index, end_index, word). A "word" in this context may + include the actual word and any whitespace to the right. + """ + position = 0 + word_match = re_word.match(text, position) + while word_match is not None: + start, end = word_match.span() + word = word_match.group(0) + yield start, end, word + word_match = re_word.match(text, end) + + +def divide_line(text: str, width: int, fold: bool = True) -> list[int]: + """Given a string of text, and a width (measured in cells), return a list + of cell offsets which the string should be split at in order for it to fit + within the given width. + + Args: + text: The text to examine. + width: The available cell width. + fold: If True, words longer than `width` will be folded onto a new line. + + Returns: + A list of indices to break the line at. + """ + break_positions: list[int] = [] # offsets to insert the breaks at + append = break_positions.append + cell_offset = 0 + _cell_len = cell_len + + for start, _end, word in words(text): + word_length = _cell_len(word.rstrip()) + remaining_space = width - cell_offset + word_fits_remaining_space = remaining_space >= word_length + + if word_fits_remaining_space: + # Simplest case - the word fits within the remaining width for this line. + cell_offset += _cell_len(word) + else: + # Not enough space remaining for this word on the current line. + if word_length > width: + # The word doesn't fit on any line, so we can't simply + # place it on the next line... + if fold: + # Fold the word across multiple lines. + folded_word = chop_cells(word, width=width) + for last, line in loop_last(folded_word): + if start: + append(start) + if last: + cell_offset = _cell_len(line) + else: + start += len(line) + else: + # Folding isn't allowed, so crop the word. + if start: + append(start) + cell_offset = _cell_len(word) + elif cell_offset and start: + # The word doesn't fit within the remaining space on the current + # line, but it *can* fit on to the next (empty) line. + append(start) + cell_offset = _cell_len(word) + + return break_positions + + +if __name__ == "__main__": # pragma: no cover + from .console import Console + + console = Console(width=10) + console.print("12345 abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWXYZ 12345") + print(chop_cells("abcdefghijklmnopqrstuvwxyz", 10)) + + console = Console(width=20) + console.rule() + console.print("TextualはPythonの高速アプリケーション開発フレームワークです") + + console.rule() + console.print("アプリケーションは1670万色を使用でき") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/abc.py b/venv/Lib/site-packages/pip/_vendor/rich/abc.py new file mode 100644 index 00000000000..e6e498efabf --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/abc.py @@ -0,0 +1,33 @@ +from abc import ABC + + +class RichRenderable(ABC): + """An abstract base class for Rich renderables. + + Note that there is no need to extend this class, the intended use is to check if an + object supports the Rich renderable protocol. For example:: + + if isinstance(my_object, RichRenderable): + console.print(my_object) + + """ + + @classmethod + def __subclasshook__(cls, other: type) -> bool: + """Check if this class supports the rich render protocol.""" + return hasattr(other, "__rich_console__") or hasattr(other, "__rich__") + + +if __name__ == "__main__": # pragma: no cover + from pip._vendor.rich.text import Text + + t = Text() + print(isinstance(Text, RichRenderable)) + print(isinstance(t, RichRenderable)) + + class Foo: + pass + + f = Foo() + print(isinstance(f, RichRenderable)) + print(isinstance("", RichRenderable)) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/align.py b/venv/Lib/site-packages/pip/_vendor/rich/align.py new file mode 100644 index 00000000000..f7b734fd728 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/align.py @@ -0,0 +1,311 @@ +import sys +from itertools import chain +from typing import TYPE_CHECKING, Iterable, Optional + +if sys.version_info >= (3, 8): + from typing import Literal +else: + from pip._vendor.typing_extensions import Literal # pragma: no cover + +from .constrain import Constrain +from .jupyter import JupyterMixin +from .measure import Measurement +from .segment import Segment +from .style import StyleType + +if TYPE_CHECKING: + from .console import Console, ConsoleOptions, RenderableType, RenderResult + +AlignMethod = Literal["left", "center", "right"] +VerticalAlignMethod = Literal["top", "middle", "bottom"] + + +class Align(JupyterMixin): + """Align a renderable by adding spaces if necessary. + + Args: + renderable (RenderableType): A console renderable. + align (AlignMethod): One of "left", "center", or "right"" + style (StyleType, optional): An optional style to apply to the background. + vertical (Optional[VerticalAlignMethod], optional): Optional vertical align, one of "top", "middle", or "bottom". Defaults to None. + pad (bool, optional): Pad the right with spaces. Defaults to True. + width (int, optional): Restrict contents to given width, or None to use default width. Defaults to None. + height (int, optional): Set height of align renderable, or None to fit to contents. Defaults to None. + + Raises: + ValueError: if ``align`` is not one of the expected values. + """ + + def __init__( + self, + renderable: "RenderableType", + align: AlignMethod = "left", + style: Optional[StyleType] = None, + *, + vertical: Optional[VerticalAlignMethod] = None, + pad: bool = True, + width: Optional[int] = None, + height: Optional[int] = None, + ) -> None: + if align not in ("left", "center", "right"): + raise ValueError( + f'invalid value for align, expected "left", "center", or "right" (not {align!r})' + ) + if vertical is not None and vertical not in ("top", "middle", "bottom"): + raise ValueError( + f'invalid value for vertical, expected "top", "middle", or "bottom" (not {vertical!r})' + ) + self.renderable = renderable + self.align = align + self.style = style + self.vertical = vertical + self.pad = pad + self.width = width + self.height = height + + def __repr__(self) -> str: + return f"Align({self.renderable!r}, {self.align!r})" + + @classmethod + def left( + cls, + renderable: "RenderableType", + style: Optional[StyleType] = None, + *, + vertical: Optional[VerticalAlignMethod] = None, + pad: bool = True, + width: Optional[int] = None, + height: Optional[int] = None, + ) -> "Align": + """Align a renderable to the left.""" + return cls( + renderable, + "left", + style=style, + vertical=vertical, + pad=pad, + width=width, + height=height, + ) + + @classmethod + def center( + cls, + renderable: "RenderableType", + style: Optional[StyleType] = None, + *, + vertical: Optional[VerticalAlignMethod] = None, + pad: bool = True, + width: Optional[int] = None, + height: Optional[int] = None, + ) -> "Align": + """Align a renderable to the center.""" + return cls( + renderable, + "center", + style=style, + vertical=vertical, + pad=pad, + width=width, + height=height, + ) + + @classmethod + def right( + cls, + renderable: "RenderableType", + style: Optional[StyleType] = None, + *, + vertical: Optional[VerticalAlignMethod] = None, + pad: bool = True, + width: Optional[int] = None, + height: Optional[int] = None, + ) -> "Align": + """Align a renderable to the right.""" + return cls( + renderable, + "right", + style=style, + vertical=vertical, + pad=pad, + width=width, + height=height, + ) + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + align = self.align + width = console.measure(self.renderable, options=options).maximum + rendered = console.render( + Constrain( + self.renderable, width if self.width is None else min(width, self.width) + ), + options.update(height=None), + ) + lines = list(Segment.split_lines(rendered)) + width, height = Segment.get_shape(lines) + lines = Segment.set_shape(lines, width, height) + new_line = Segment.line() + excess_space = options.max_width - width + style = console.get_style(self.style) if self.style is not None else None + + def generate_segments() -> Iterable[Segment]: + if excess_space <= 0: + # Exact fit + for line in lines: + yield from line + yield new_line + + elif align == "left": + # Pad on the right + pad = Segment(" " * excess_space, style) if self.pad else None + for line in lines: + yield from line + if pad: + yield pad + yield new_line + + elif align == "center": + # Pad left and right + left = excess_space // 2 + pad = Segment(" " * left, style) + pad_right = ( + Segment(" " * (excess_space - left), style) if self.pad else None + ) + for line in lines: + if left: + yield pad + yield from line + if pad_right: + yield pad_right + yield new_line + + elif align == "right": + # Padding on left + pad = Segment(" " * excess_space, style) + for line in lines: + yield pad + yield from line + yield new_line + + blank_line = ( + Segment(f"{' ' * (self.width or options.max_width)}\n", style) + if self.pad + else Segment("\n") + ) + + def blank_lines(count: int) -> Iterable[Segment]: + if count > 0: + for _ in range(count): + yield blank_line + + vertical_height = self.height or options.height + iter_segments: Iterable[Segment] + if self.vertical and vertical_height is not None: + if self.vertical == "top": + bottom_space = vertical_height - height + iter_segments = chain(generate_segments(), blank_lines(bottom_space)) + elif self.vertical == "middle": + top_space = (vertical_height - height) // 2 + bottom_space = vertical_height - top_space - height + iter_segments = chain( + blank_lines(top_space), + generate_segments(), + blank_lines(bottom_space), + ) + else: # self.vertical == "bottom": + top_space = vertical_height - height + iter_segments = chain(blank_lines(top_space), generate_segments()) + else: + iter_segments = generate_segments() + if self.style: + style = console.get_style(self.style) + iter_segments = Segment.apply_style(iter_segments, style) + yield from iter_segments + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> Measurement: + measurement = Measurement.get(console, options, self.renderable) + return measurement + + +class VerticalCenter(JupyterMixin): + """Vertically aligns a renderable. + + Warn: + This class is deprecated and may be removed in a future version. Use Align class with + `vertical="middle"`. + + Args: + renderable (RenderableType): A renderable object. + """ + + def __init__( + self, + renderable: "RenderableType", + style: Optional[StyleType] = None, + ) -> None: + self.renderable = renderable + self.style = style + + def __repr__(self) -> str: + return f"VerticalCenter({self.renderable!r})" + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + style = console.get_style(self.style) if self.style is not None else None + lines = console.render_lines( + self.renderable, options.update(height=None), pad=False + ) + width, _height = Segment.get_shape(lines) + new_line = Segment.line() + height = options.height or options.size.height + top_space = (height - len(lines)) // 2 + bottom_space = height - top_space - len(lines) + blank_line = Segment(f"{' ' * width}", style) + + def blank_lines(count: int) -> Iterable[Segment]: + for _ in range(count): + yield blank_line + yield new_line + + if top_space > 0: + yield from blank_lines(top_space) + for line in lines: + yield from line + yield new_line + if bottom_space > 0: + yield from blank_lines(bottom_space) + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> Measurement: + measurement = Measurement.get(console, options, self.renderable) + return measurement + + +if __name__ == "__main__": # pragma: no cover + from pip._vendor.rich.console import Console, Group + from pip._vendor.rich.highlighter import ReprHighlighter + from pip._vendor.rich.panel import Panel + + highlighter = ReprHighlighter() + console = Console() + + panel = Panel( + Group( + Align.left(highlighter("align='left'")), + Align.center(highlighter("align='center'")), + Align.right(highlighter("align='right'")), + ), + width=60, + style="on dark_blue", + title="Align", + ) + + console.print( + Align.center(panel, vertical="middle", style="on red", height=console.height) + ) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/ansi.py b/venv/Lib/site-packages/pip/_vendor/rich/ansi.py new file mode 100644 index 00000000000..66365e65360 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/ansi.py @@ -0,0 +1,240 @@ +import re +import sys +from contextlib import suppress +from typing import Iterable, NamedTuple, Optional + +from .color import Color +from .style import Style +from .text import Text + +re_ansi = re.compile( + r""" +(?:\x1b\](.*?)\x1b\\)| +(?:\x1b([(@-Z\\-_]|\[[0-?]*[ -/]*[@-~])) +""", + re.VERBOSE, +) + + +class _AnsiToken(NamedTuple): + """Result of ansi tokenized string.""" + + plain: str = "" + sgr: Optional[str] = "" + osc: Optional[str] = "" + + +def _ansi_tokenize(ansi_text: str) -> Iterable[_AnsiToken]: + """Tokenize a string in to plain text and ANSI codes. + + Args: + ansi_text (str): A String containing ANSI codes. + + Yields: + AnsiToken: A named tuple of (plain, sgr, osc) + """ + + position = 0 + sgr: Optional[str] + osc: Optional[str] + for match in re_ansi.finditer(ansi_text): + start, end = match.span(0) + osc, sgr = match.groups() + if start > position: + yield _AnsiToken(ansi_text[position:start]) + if sgr: + if sgr == "(": + position = end + 1 + continue + if sgr.endswith("m"): + yield _AnsiToken("", sgr[1:-1], osc) + else: + yield _AnsiToken("", sgr, osc) + position = end + if position < len(ansi_text): + yield _AnsiToken(ansi_text[position:]) + + +SGR_STYLE_MAP = { + 1: "bold", + 2: "dim", + 3: "italic", + 4: "underline", + 5: "blink", + 6: "blink2", + 7: "reverse", + 8: "conceal", + 9: "strike", + 21: "underline2", + 22: "not dim not bold", + 23: "not italic", + 24: "not underline", + 25: "not blink", + 26: "not blink2", + 27: "not reverse", + 28: "not conceal", + 29: "not strike", + 30: "color(0)", + 31: "color(1)", + 32: "color(2)", + 33: "color(3)", + 34: "color(4)", + 35: "color(5)", + 36: "color(6)", + 37: "color(7)", + 39: "default", + 40: "on color(0)", + 41: "on color(1)", + 42: "on color(2)", + 43: "on color(3)", + 44: "on color(4)", + 45: "on color(5)", + 46: "on color(6)", + 47: "on color(7)", + 49: "on default", + 51: "frame", + 52: "encircle", + 53: "overline", + 54: "not frame not encircle", + 55: "not overline", + 90: "color(8)", + 91: "color(9)", + 92: "color(10)", + 93: "color(11)", + 94: "color(12)", + 95: "color(13)", + 96: "color(14)", + 97: "color(15)", + 100: "on color(8)", + 101: "on color(9)", + 102: "on color(10)", + 103: "on color(11)", + 104: "on color(12)", + 105: "on color(13)", + 106: "on color(14)", + 107: "on color(15)", +} + + +class AnsiDecoder: + """Translate ANSI code in to styled Text.""" + + def __init__(self) -> None: + self.style = Style.null() + + def decode(self, terminal_text: str) -> Iterable[Text]: + """Decode ANSI codes in an iterable of lines. + + Args: + lines (Iterable[str]): An iterable of lines of terminal output. + + Yields: + Text: Marked up Text. + """ + for line in terminal_text.splitlines(): + yield self.decode_line(line) + + def decode_line(self, line: str) -> Text: + """Decode a line containing ansi codes. + + Args: + line (str): A line of terminal output. + + Returns: + Text: A Text instance marked up according to ansi codes. + """ + from_ansi = Color.from_ansi + from_rgb = Color.from_rgb + _Style = Style + text = Text() + append = text.append + line = line.rsplit("\r", 1)[-1] + for plain_text, sgr, osc in _ansi_tokenize(line): + if plain_text: + append(plain_text, self.style or None) + elif osc is not None: + if osc.startswith("8;"): + _params, semicolon, link = osc[2:].partition(";") + if semicolon: + self.style = self.style.update_link(link or None) + elif sgr is not None: + # Translate in to semi-colon separated codes + # Ignore invalid codes, because we want to be lenient + codes = [ + min(255, int(_code) if _code else 0) + for _code in sgr.split(";") + if _code.isdigit() or _code == "" + ] + iter_codes = iter(codes) + for code in iter_codes: + if code == 0: + # reset + self.style = _Style.null() + elif code in SGR_STYLE_MAP: + # styles + self.style += _Style.parse(SGR_STYLE_MAP[code]) + elif code == 38: + #  Foreground + with suppress(StopIteration): + color_type = next(iter_codes) + if color_type == 5: + self.style += _Style.from_color( + from_ansi(next(iter_codes)) + ) + elif color_type == 2: + self.style += _Style.from_color( + from_rgb( + next(iter_codes), + next(iter_codes), + next(iter_codes), + ) + ) + elif code == 48: + # Background + with suppress(StopIteration): + color_type = next(iter_codes) + if color_type == 5: + self.style += _Style.from_color( + None, from_ansi(next(iter_codes)) + ) + elif color_type == 2: + self.style += _Style.from_color( + None, + from_rgb( + next(iter_codes), + next(iter_codes), + next(iter_codes), + ), + ) + + return text + + +if sys.platform != "win32" and __name__ == "__main__": # pragma: no cover + import io + import os + import pty + import sys + + decoder = AnsiDecoder() + + stdout = io.BytesIO() + + def read(fd: int) -> bytes: + data = os.read(fd, 1024) + stdout.write(data) + return data + + pty.spawn(sys.argv[1:], read) + + from .console import Console + + console = Console(record=True) + + stdout_result = stdout.getvalue().decode("utf-8") + print(stdout_result) + + for line in decoder.decode(stdout_result): + console.print(line) + + console.save_html("stdout.html") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/bar.py b/venv/Lib/site-packages/pip/_vendor/rich/bar.py new file mode 100644 index 00000000000..022284b5788 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/bar.py @@ -0,0 +1,93 @@ +from typing import Optional, Union + +from .color import Color +from .console import Console, ConsoleOptions, RenderResult +from .jupyter import JupyterMixin +from .measure import Measurement +from .segment import Segment +from .style import Style + +# There are left-aligned characters for 1/8 to 7/8, but +# the right-aligned characters exist only for 1/8 and 4/8. +BEGIN_BLOCK_ELEMENTS = ["█", "█", "█", "▐", "▐", "▐", "▕", "▕"] +END_BLOCK_ELEMENTS = [" ", "▏", "▎", "▍", "▌", "▋", "▊", "▉"] +FULL_BLOCK = "█" + + +class Bar(JupyterMixin): + """Renders a solid block bar. + + Args: + size (float): Value for the end of the bar. + begin (float): Begin point (between 0 and size, inclusive). + end (float): End point (between 0 and size, inclusive). + width (int, optional): Width of the bar, or ``None`` for maximum width. Defaults to None. + color (Union[Color, str], optional): Color of the bar. Defaults to "default". + bgcolor (Union[Color, str], optional): Color of bar background. Defaults to "default". + """ + + def __init__( + self, + size: float, + begin: float, + end: float, + *, + width: Optional[int] = None, + color: Union[Color, str] = "default", + bgcolor: Union[Color, str] = "default", + ): + self.size = size + self.begin = max(begin, 0) + self.end = min(end, size) + self.width = width + self.style = Style(color=color, bgcolor=bgcolor) + + def __repr__(self) -> str: + return f"Bar({self.size}, {self.begin}, {self.end})" + + def __rich_console__( + self, console: Console, options: ConsoleOptions + ) -> RenderResult: + width = min( + self.width if self.width is not None else options.max_width, + options.max_width, + ) + + if self.begin >= self.end: + yield Segment(" " * width, self.style) + yield Segment.line() + return + + prefix_complete_eights = int(width * 8 * self.begin / self.size) + prefix_bar_count = prefix_complete_eights // 8 + prefix_eights_count = prefix_complete_eights % 8 + + body_complete_eights = int(width * 8 * self.end / self.size) + body_bar_count = body_complete_eights // 8 + body_eights_count = body_complete_eights % 8 + + # When start and end fall into the same cell, we ideally should render + # a symbol that's "center-aligned", but there is no good symbol in Unicode. + # In this case, we fall back to right-aligned block symbol for simplicity. + + prefix = " " * prefix_bar_count + if prefix_eights_count: + prefix += BEGIN_BLOCK_ELEMENTS[prefix_eights_count] + + body = FULL_BLOCK * body_bar_count + if body_eights_count: + body += END_BLOCK_ELEMENTS[body_eights_count] + + suffix = " " * (width - len(body)) + + yield Segment(prefix + body[len(prefix) :] + suffix, self.style) + yield Segment.line() + + def __rich_measure__( + self, console: Console, options: ConsoleOptions + ) -> Measurement: + return ( + Measurement(self.width, self.width) + if self.width is not None + else Measurement(4, options.max_width) + ) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/box.py b/venv/Lib/site-packages/pip/_vendor/rich/box.py new file mode 100644 index 00000000000..0511a9e48ba --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/box.py @@ -0,0 +1,480 @@ +import sys +from typing import TYPE_CHECKING, Iterable, List + +if sys.version_info >= (3, 8): + from typing import Literal +else: + from pip._vendor.typing_extensions import Literal # pragma: no cover + + +from ._loop import loop_last + +if TYPE_CHECKING: + from pip._vendor.rich.console import ConsoleOptions + + +class Box: + """Defines characters to render boxes. + + ┌─┬┐ top + │ ││ head + ├─┼┤ head_row + │ ││ mid + ├─┼┤ row + ├─┼┤ foot_row + │ ││ foot + └─┴┘ bottom + + Args: + box (str): Characters making up box. + ascii (bool, optional): True if this box uses ascii characters only. Default is False. + """ + + def __init__(self, box: str, *, ascii: bool = False) -> None: + self._box = box + self.ascii = ascii + line1, line2, line3, line4, line5, line6, line7, line8 = box.splitlines() + # top + self.top_left, self.top, self.top_divider, self.top_right = iter(line1) + # head + self.head_left, _, self.head_vertical, self.head_right = iter(line2) + # head_row + ( + self.head_row_left, + self.head_row_horizontal, + self.head_row_cross, + self.head_row_right, + ) = iter(line3) + + # mid + self.mid_left, _, self.mid_vertical, self.mid_right = iter(line4) + # row + self.row_left, self.row_horizontal, self.row_cross, self.row_right = iter(line5) + # foot_row + ( + self.foot_row_left, + self.foot_row_horizontal, + self.foot_row_cross, + self.foot_row_right, + ) = iter(line6) + # foot + self.foot_left, _, self.foot_vertical, self.foot_right = iter(line7) + # bottom + self.bottom_left, self.bottom, self.bottom_divider, self.bottom_right = iter( + line8 + ) + + def __repr__(self) -> str: + return "Box(...)" + + def __str__(self) -> str: + return self._box + + def substitute(self, options: "ConsoleOptions", safe: bool = True) -> "Box": + """Substitute this box for another if it won't render due to platform issues. + + Args: + options (ConsoleOptions): Console options used in rendering. + safe (bool, optional): Substitute this for another Box if there are known problems + displaying on the platform (currently only relevant on Windows). Default is True. + + Returns: + Box: A different Box or the same Box. + """ + box = self + if options.legacy_windows and safe: + box = LEGACY_WINDOWS_SUBSTITUTIONS.get(box, box) + if options.ascii_only and not box.ascii: + box = ASCII + return box + + def get_plain_headed_box(self) -> "Box": + """If this box uses special characters for the borders of the header, then + return the equivalent box that does not. + + Returns: + Box: The most similar Box that doesn't use header-specific box characters. + If the current Box already satisfies this criterion, then it's returned. + """ + return PLAIN_HEADED_SUBSTITUTIONS.get(self, self) + + def get_top(self, widths: Iterable[int]) -> str: + """Get the top of a simple box. + + Args: + widths (List[int]): Widths of columns. + + Returns: + str: A string of box characters. + """ + + parts: List[str] = [] + append = parts.append + append(self.top_left) + for last, width in loop_last(widths): + append(self.top * width) + if not last: + append(self.top_divider) + append(self.top_right) + return "".join(parts) + + def get_row( + self, + widths: Iterable[int], + level: Literal["head", "row", "foot", "mid"] = "row", + edge: bool = True, + ) -> str: + """Get the top of a simple box. + + Args: + width (List[int]): Widths of columns. + + Returns: + str: A string of box characters. + """ + if level == "head": + left = self.head_row_left + horizontal = self.head_row_horizontal + cross = self.head_row_cross + right = self.head_row_right + elif level == "row": + left = self.row_left + horizontal = self.row_horizontal + cross = self.row_cross + right = self.row_right + elif level == "mid": + left = self.mid_left + horizontal = " " + cross = self.mid_vertical + right = self.mid_right + elif level == "foot": + left = self.foot_row_left + horizontal = self.foot_row_horizontal + cross = self.foot_row_cross + right = self.foot_row_right + else: + raise ValueError("level must be 'head', 'row' or 'foot'") + + parts: List[str] = [] + append = parts.append + if edge: + append(left) + for last, width in loop_last(widths): + append(horizontal * width) + if not last: + append(cross) + if edge: + append(right) + return "".join(parts) + + def get_bottom(self, widths: Iterable[int]) -> str: + """Get the bottom of a simple box. + + Args: + widths (List[int]): Widths of columns. + + Returns: + str: A string of box characters. + """ + + parts: List[str] = [] + append = parts.append + append(self.bottom_left) + for last, width in loop_last(widths): + append(self.bottom * width) + if not last: + append(self.bottom_divider) + append(self.bottom_right) + return "".join(parts) + + +# fmt: off +ASCII: Box = Box( + "+--+\n" + "| ||\n" + "|-+|\n" + "| ||\n" + "|-+|\n" + "|-+|\n" + "| ||\n" + "+--+\n", + ascii=True, +) + +ASCII2: Box = Box( + "+-++\n" + "| ||\n" + "+-++\n" + "| ||\n" + "+-++\n" + "+-++\n" + "| ||\n" + "+-++\n", + ascii=True, +) + +ASCII_DOUBLE_HEAD: Box = Box( + "+-++\n" + "| ||\n" + "+=++\n" + "| ||\n" + "+-++\n" + "+-++\n" + "| ||\n" + "+-++\n", + ascii=True, +) + +SQUARE: Box = Box( + "┌─┬┐\n" + "│ ││\n" + "├─┼┤\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "└─┴┘\n" +) + +SQUARE_DOUBLE_HEAD: Box = Box( + "┌─┬┐\n" + "│ ││\n" + "╞═╪╡\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "└─┴┘\n" +) + +MINIMAL: Box = Box( + " ╷ \n" + " │ \n" + "╶─┼╴\n" + " │ \n" + "╶─┼╴\n" + "╶─┼╴\n" + " │ \n" + " ╵ \n" +) + + +MINIMAL_HEAVY_HEAD: Box = Box( + " ╷ \n" + " │ \n" + "╺━┿╸\n" + " │ \n" + "╶─┼╴\n" + "╶─┼╴\n" + " │ \n" + " ╵ \n" +) + +MINIMAL_DOUBLE_HEAD: Box = Box( + " ╷ \n" + " │ \n" + " ═╪ \n" + " │ \n" + " ─┼ \n" + " ─┼ \n" + " │ \n" + " ╵ \n" +) + + +SIMPLE: Box = Box( + " \n" + " \n" + " ── \n" + " \n" + " \n" + " ── \n" + " \n" + " \n" +) + +SIMPLE_HEAD: Box = Box( + " \n" + " \n" + " ── \n" + " \n" + " \n" + " \n" + " \n" + " \n" +) + + +SIMPLE_HEAVY: Box = Box( + " \n" + " \n" + " ━━ \n" + " \n" + " \n" + " ━━ \n" + " \n" + " \n" +) + + +HORIZONTALS: Box = Box( + " ── \n" + " \n" + " ── \n" + " \n" + " ── \n" + " ── \n" + " \n" + " ── \n" +) + +ROUNDED: Box = Box( + "╭─┬╮\n" + "│ ││\n" + "├─┼┤\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "╰─┴╯\n" +) + +HEAVY: Box = Box( + "┏━┳┓\n" + "┃ ┃┃\n" + "┣━╋┫\n" + "┃ ┃┃\n" + "┣━╋┫\n" + "┣━╋┫\n" + "┃ ┃┃\n" + "┗━┻┛\n" +) + +HEAVY_EDGE: Box = Box( + "┏━┯┓\n" + "┃ │┃\n" + "┠─┼┨\n" + "┃ │┃\n" + "┠─┼┨\n" + "┠─┼┨\n" + "┃ │┃\n" + "┗━┷┛\n" +) + +HEAVY_HEAD: Box = Box( + "┏━┳┓\n" + "┃ ┃┃\n" + "┡━╇┩\n" + "│ ││\n" + "├─┼┤\n" + "├─┼┤\n" + "│ ││\n" + "└─┴┘\n" +) + +DOUBLE: Box = Box( + "╔═╦╗\n" + "║ ║║\n" + "╠═╬╣\n" + "║ ║║\n" + "╠═╬╣\n" + "╠═╬╣\n" + "║ ║║\n" + "╚═╩╝\n" +) + +DOUBLE_EDGE: Box = Box( + "╔═╤╗\n" + "║ │║\n" + "╟─┼╢\n" + "║ │║\n" + "╟─┼╢\n" + "╟─┼╢\n" + "║ │║\n" + "╚═╧╝\n" +) + +MARKDOWN: Box = Box( + " \n" + "| ||\n" + "|-||\n" + "| ||\n" + "|-||\n" + "|-||\n" + "| ||\n" + " \n", + ascii=True, +) +# fmt: on + +# Map Boxes that don't render with raster fonts on to equivalent that do +LEGACY_WINDOWS_SUBSTITUTIONS = { + ROUNDED: SQUARE, + MINIMAL_HEAVY_HEAD: MINIMAL, + SIMPLE_HEAVY: SIMPLE, + HEAVY: SQUARE, + HEAVY_EDGE: SQUARE, + HEAVY_HEAD: SQUARE, +} + +# Map headed boxes to their headerless equivalents +PLAIN_HEADED_SUBSTITUTIONS = { + HEAVY_HEAD: SQUARE, + SQUARE_DOUBLE_HEAD: SQUARE, + MINIMAL_DOUBLE_HEAD: MINIMAL, + MINIMAL_HEAVY_HEAD: MINIMAL, + ASCII_DOUBLE_HEAD: ASCII2, +} + + +if __name__ == "__main__": # pragma: no cover + from pip._vendor.rich.columns import Columns + from pip._vendor.rich.panel import Panel + + from . import box as box + from .console import Console + from .table import Table + from .text import Text + + console = Console(record=True) + + BOXES = [ + "ASCII", + "ASCII2", + "ASCII_DOUBLE_HEAD", + "SQUARE", + "SQUARE_DOUBLE_HEAD", + "MINIMAL", + "MINIMAL_HEAVY_HEAD", + "MINIMAL_DOUBLE_HEAD", + "SIMPLE", + "SIMPLE_HEAD", + "SIMPLE_HEAVY", + "HORIZONTALS", + "ROUNDED", + "HEAVY", + "HEAVY_EDGE", + "HEAVY_HEAD", + "DOUBLE", + "DOUBLE_EDGE", + "MARKDOWN", + ] + + console.print(Panel("[bold green]Box Constants", style="green"), justify="center") + console.print() + + columns = Columns(expand=True, padding=2) + for box_name in sorted(BOXES): + table = Table( + show_footer=True, style="dim", border_style="not dim", expand=True + ) + table.add_column("Header 1", "Footer 1") + table.add_column("Header 2", "Footer 2") + table.add_row("Cell", "Cell") + table.add_row("Cell", "Cell") + table.box = getattr(box, box_name) + table.title = Text(f"box.{box_name}", style="magenta") + columns.add_renderable(table) + console.print(columns) + + # console.save_svg("box.svg") diff --git a/venv/Lib/site-packages/pip/_vendor/rich/cells.py b/venv/Lib/site-packages/pip/_vendor/rich/cells.py new file mode 100644 index 00000000000..f85f928f75e --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/cells.py @@ -0,0 +1,167 @@ +from __future__ import annotations + +import re +from functools import lru_cache +from typing import Callable + +from ._cell_widths import CELL_WIDTHS + +# Regex to match sequence of the most common character ranges +_is_single_cell_widths = re.compile("^[\u0020-\u006f\u00a0\u02ff\u0370-\u0482]*$").match + + +@lru_cache(4096) +def cached_cell_len(text: str) -> int: + """Get the number of cells required to display text. + + This method always caches, which may use up a lot of memory. It is recommended to use + `cell_len` over this method. + + Args: + text (str): Text to display. + + Returns: + int: Get the number of cells required to display text. + """ + _get_size = get_character_cell_size + total_size = sum(_get_size(character) for character in text) + return total_size + + +def cell_len(text: str, _cell_len: Callable[[str], int] = cached_cell_len) -> int: + """Get the number of cells required to display text. + + Args: + text (str): Text to display. + + Returns: + int: Get the number of cells required to display text. + """ + if len(text) < 512: + return _cell_len(text) + _get_size = get_character_cell_size + total_size = sum(_get_size(character) for character in text) + return total_size + + +@lru_cache(maxsize=4096) +def get_character_cell_size(character: str) -> int: + """Get the cell size of a character. + + Args: + character (str): A single character. + + Returns: + int: Number of cells (0, 1 or 2) occupied by that character. + """ + return _get_codepoint_cell_size(ord(character)) + + +@lru_cache(maxsize=4096) +def _get_codepoint_cell_size(codepoint: int) -> int: + """Get the cell size of a character. + + Args: + codepoint (int): Codepoint of a character. + + Returns: + int: Number of cells (0, 1 or 2) occupied by that character. + """ + + _table = CELL_WIDTHS + lower_bound = 0 + upper_bound = len(_table) - 1 + index = (lower_bound + upper_bound) // 2 + while True: + start, end, width = _table[index] + if codepoint < start: + upper_bound = index - 1 + elif codepoint > end: + lower_bound = index + 1 + else: + return 0 if width == -1 else width + if upper_bound < lower_bound: + break + index = (lower_bound + upper_bound) // 2 + return 1 + + +def set_cell_size(text: str, total: int) -> str: + """Set the length of a string to fit within given number of cells.""" + + if _is_single_cell_widths(text): + size = len(text) + if size < total: + return text + " " * (total - size) + return text[:total] + + if total <= 0: + return "" + cell_size = cell_len(text) + if cell_size == total: + return text + if cell_size < total: + return text + " " * (total - cell_size) + + start = 0 + end = len(text) + + # Binary search until we find the right size + while True: + pos = (start + end) // 2 + before = text[: pos + 1] + before_len = cell_len(before) + if before_len == total + 1 and cell_len(before[-1]) == 2: + return before[:-1] + " " + if before_len == total: + return before + if before_len > total: + end = pos + else: + start = pos + + +def chop_cells( + text: str, + width: int, +) -> list[str]: + """Split text into lines such that each line fits within the available (cell) width. + + Args: + text: The text to fold such that it fits in the given width. + width: The width available (number of cells). + + Returns: + A list of strings such that each string in the list has cell width + less than or equal to the available width. + """ + _get_character_cell_size = get_character_cell_size + lines: list[list[str]] = [[]] + + append_new_line = lines.append + append_to_last_line = lines[-1].append + + total_width = 0 + + for character in text: + cell_width = _get_character_cell_size(character) + char_doesnt_fit = total_width + cell_width > width + + if char_doesnt_fit: + append_new_line([character]) + append_to_last_line = lines[-1].append + total_width = cell_width + else: + append_to_last_line(character) + total_width += cell_width + + return ["".join(line) for line in lines] + + +if __name__ == "__main__": # pragma: no cover + print(get_character_cell_size("😽")) + for line in chop_cells("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", 8): + print(line) + for n in range(80, 1, -1): + print(set_cell_size("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", n) + "|") + print("x" * n) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/color.py b/venv/Lib/site-packages/pip/_vendor/rich/color.py new file mode 100644 index 00000000000..4270a278d59 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/color.py @@ -0,0 +1,621 @@ +import platform +import re +from colorsys import rgb_to_hls +from enum import IntEnum +from functools import lru_cache +from typing import TYPE_CHECKING, NamedTuple, Optional, Tuple + +from ._palettes import EIGHT_BIT_PALETTE, STANDARD_PALETTE, WINDOWS_PALETTE +from .color_triplet import ColorTriplet +from .repr import Result, rich_repr +from .terminal_theme import DEFAULT_TERMINAL_THEME + +if TYPE_CHECKING: # pragma: no cover + from .terminal_theme import TerminalTheme + from .text import Text + + +WINDOWS = platform.system() == "Windows" + + +class ColorSystem(IntEnum): + """One of the 3 color system supported by terminals.""" + + STANDARD = 1 + EIGHT_BIT = 2 + TRUECOLOR = 3 + WINDOWS = 4 + + def __repr__(self) -> str: + return f"ColorSystem.{self.name}" + + def __str__(self) -> str: + return repr(self) + + +class ColorType(IntEnum): + """Type of color stored in Color class.""" + + DEFAULT = 0 + STANDARD = 1 + EIGHT_BIT = 2 + TRUECOLOR = 3 + WINDOWS = 4 + + def __repr__(self) -> str: + return f"ColorType.{self.name}" + + +ANSI_COLOR_NAMES = { + "black": 0, + "red": 1, + "green": 2, + "yellow": 3, + "blue": 4, + "magenta": 5, + "cyan": 6, + "white": 7, + "bright_black": 8, + "bright_red": 9, + "bright_green": 10, + "bright_yellow": 11, + "bright_blue": 12, + "bright_magenta": 13, + "bright_cyan": 14, + "bright_white": 15, + "grey0": 16, + "gray0": 16, + "navy_blue": 17, + "dark_blue": 18, + "blue3": 20, + "blue1": 21, + "dark_green": 22, + "deep_sky_blue4": 25, + "dodger_blue3": 26, + "dodger_blue2": 27, + "green4": 28, + "spring_green4": 29, + "turquoise4": 30, + "deep_sky_blue3": 32, + "dodger_blue1": 33, + "green3": 40, + "spring_green3": 41, + "dark_cyan": 36, + "light_sea_green": 37, + "deep_sky_blue2": 38, + "deep_sky_blue1": 39, + "spring_green2": 47, + "cyan3": 43, + "dark_turquoise": 44, + "turquoise2": 45, + "green1": 46, + "spring_green1": 48, + "medium_spring_green": 49, + "cyan2": 50, + "cyan1": 51, + "dark_red": 88, + "deep_pink4": 125, + "purple4": 55, + "purple3": 56, + "blue_violet": 57, + "orange4": 94, + "grey37": 59, + "gray37": 59, + "medium_purple4": 60, + "slate_blue3": 62, + "royal_blue1": 63, + "chartreuse4": 64, + "dark_sea_green4": 71, + "pale_turquoise4": 66, + "steel_blue": 67, + "steel_blue3": 68, + "cornflower_blue": 69, + "chartreuse3": 76, + "cadet_blue": 73, + "sky_blue3": 74, + "steel_blue1": 81, + "pale_green3": 114, + "sea_green3": 78, + "aquamarine3": 79, + "medium_turquoise": 80, + "chartreuse2": 112, + "sea_green2": 83, + "sea_green1": 85, + "aquamarine1": 122, + "dark_slate_gray2": 87, + "dark_magenta": 91, + "dark_violet": 128, + "purple": 129, + "light_pink4": 95, + "plum4": 96, + "medium_purple3": 98, + "slate_blue1": 99, + "yellow4": 106, + "wheat4": 101, + "grey53": 102, + "gray53": 102, + "light_slate_grey": 103, + "light_slate_gray": 103, + "medium_purple": 104, + "light_slate_blue": 105, + "dark_olive_green3": 149, + "dark_sea_green": 108, + "light_sky_blue3": 110, + "sky_blue2": 111, + "dark_sea_green3": 150, + "dark_slate_gray3": 116, + "sky_blue1": 117, + "chartreuse1": 118, + "light_green": 120, + "pale_green1": 156, + "dark_slate_gray1": 123, + "red3": 160, + "medium_violet_red": 126, + "magenta3": 164, + "dark_orange3": 166, + "indian_red": 167, + "hot_pink3": 168, + "medium_orchid3": 133, + "medium_orchid": 134, + "medium_purple2": 140, + "dark_goldenrod": 136, + "light_salmon3": 173, + "rosy_brown": 138, + "grey63": 139, + "gray63": 139, + "medium_purple1": 141, + "gold3": 178, + "dark_khaki": 143, + "navajo_white3": 144, + "grey69": 145, + "gray69": 145, + "light_steel_blue3": 146, + "light_steel_blue": 147, + "yellow3": 184, + "dark_sea_green2": 157, + "light_cyan3": 152, + "light_sky_blue1": 153, + "green_yellow": 154, + "dark_olive_green2": 155, + "dark_sea_green1": 193, + "pale_turquoise1": 159, + "deep_pink3": 162, + "magenta2": 200, + "hot_pink2": 169, + "orchid": 170, + "medium_orchid1": 207, + "orange3": 172, + "light_pink3": 174, + "pink3": 175, + "plum3": 176, + "violet": 177, + "light_goldenrod3": 179, + "tan": 180, + "misty_rose3": 181, + "thistle3": 182, + "plum2": 183, + "khaki3": 185, + "light_goldenrod2": 222, + "light_yellow3": 187, + "grey84": 188, + "gray84": 188, + "light_steel_blue1": 189, + "yellow2": 190, + "dark_olive_green1": 192, + "honeydew2": 194, + "light_cyan1": 195, + "red1": 196, + "deep_pink2": 197, + "deep_pink1": 199, + "magenta1": 201, + "orange_red1": 202, + "indian_red1": 204, + "hot_pink": 206, + "dark_orange": 208, + "salmon1": 209, + "light_coral": 210, + "pale_violet_red1": 211, + "orchid2": 212, + "orchid1": 213, + "orange1": 214, + "sandy_brown": 215, + "light_salmon1": 216, + "light_pink1": 217, + "pink1": 218, + "plum1": 219, + "gold1": 220, + "navajo_white1": 223, + "misty_rose1": 224, + "thistle1": 225, + "yellow1": 226, + "light_goldenrod1": 227, + "khaki1": 228, + "wheat1": 229, + "cornsilk1": 230, + "grey100": 231, + "gray100": 231, + "grey3": 232, + "gray3": 232, + "grey7": 233, + "gray7": 233, + "grey11": 234, + "gray11": 234, + "grey15": 235, + "gray15": 235, + "grey19": 236, + "gray19": 236, + "grey23": 237, + "gray23": 237, + "grey27": 238, + "gray27": 238, + "grey30": 239, + "gray30": 239, + "grey35": 240, + "gray35": 240, + "grey39": 241, + "gray39": 241, + "grey42": 242, + "gray42": 242, + "grey46": 243, + "gray46": 243, + "grey50": 244, + "gray50": 244, + "grey54": 245, + "gray54": 245, + "grey58": 246, + "gray58": 246, + "grey62": 247, + "gray62": 247, + "grey66": 248, + "gray66": 248, + "grey70": 249, + "gray70": 249, + "grey74": 250, + "gray74": 250, + "grey78": 251, + "gray78": 251, + "grey82": 252, + "gray82": 252, + "grey85": 253, + "gray85": 253, + "grey89": 254, + "gray89": 254, + "grey93": 255, + "gray93": 255, +} + + +class ColorParseError(Exception): + """The color could not be parsed.""" + + +RE_COLOR = re.compile( + r"""^ +\#([0-9a-f]{6})$| +color\(([0-9]{1,3})\)$| +rgb\(([\d\s,]+)\)$ +""", + re.VERBOSE, +) + + +@rich_repr +class Color(NamedTuple): + """Terminal color definition.""" + + name: str + """The name of the color (typically the input to Color.parse).""" + type: ColorType + """The type of the color.""" + number: Optional[int] = None + """The color number, if a standard color, or None.""" + triplet: Optional[ColorTriplet] = None + """A triplet of color components, if an RGB color.""" + + def __rich__(self) -> "Text": + """Displays the actual color if Rich printed.""" + from .style import Style + from .text import Text + + return Text.assemble( + f"", + ) + + def __rich_repr__(self) -> Result: + yield self.name + yield self.type + yield "number", self.number, None + yield "triplet", self.triplet, None + + @property + def system(self) -> ColorSystem: + """Get the native color system for this color.""" + if self.type == ColorType.DEFAULT: + return ColorSystem.STANDARD + return ColorSystem(int(self.type)) + + @property + def is_system_defined(self) -> bool: + """Check if the color is ultimately defined by the system.""" + return self.system not in (ColorSystem.EIGHT_BIT, ColorSystem.TRUECOLOR) + + @property + def is_default(self) -> bool: + """Check if the color is a default color.""" + return self.type == ColorType.DEFAULT + + def get_truecolor( + self, theme: Optional["TerminalTheme"] = None, foreground: bool = True + ) -> ColorTriplet: + """Get an equivalent color triplet for this color. + + Args: + theme (TerminalTheme, optional): Optional terminal theme, or None to use default. Defaults to None. + foreground (bool, optional): True for a foreground color, or False for background. Defaults to True. + + Returns: + ColorTriplet: A color triplet containing RGB components. + """ + + if theme is None: + theme = DEFAULT_TERMINAL_THEME + if self.type == ColorType.TRUECOLOR: + assert self.triplet is not None + return self.triplet + elif self.type == ColorType.EIGHT_BIT: + assert self.number is not None + return EIGHT_BIT_PALETTE[self.number] + elif self.type == ColorType.STANDARD: + assert self.number is not None + return theme.ansi_colors[self.number] + elif self.type == ColorType.WINDOWS: + assert self.number is not None + return WINDOWS_PALETTE[self.number] + else: # self.type == ColorType.DEFAULT: + assert self.number is None + return theme.foreground_color if foreground else theme.background_color + + @classmethod + def from_ansi(cls, number: int) -> "Color": + """Create a Color number from it's 8-bit ansi number. + + Args: + number (int): A number between 0-255 inclusive. + + Returns: + Color: A new Color instance. + """ + return cls( + name=f"color({number})", + type=(ColorType.STANDARD if number < 16 else ColorType.EIGHT_BIT), + number=number, + ) + + @classmethod + def from_triplet(cls, triplet: "ColorTriplet") -> "Color": + """Create a truecolor RGB color from a triplet of values. + + Args: + triplet (ColorTriplet): A color triplet containing red, green and blue components. + + Returns: + Color: A new color object. + """ + return cls(name=triplet.hex, type=ColorType.TRUECOLOR, triplet=triplet) + + @classmethod + def from_rgb(cls, red: float, green: float, blue: float) -> "Color": + """Create a truecolor from three color components in the range(0->255). + + Args: + red (float): Red component in range 0-255. + green (float): Green component in range 0-255. + blue (float): Blue component in range 0-255. + + Returns: + Color: A new color object. + """ + return cls.from_triplet(ColorTriplet(int(red), int(green), int(blue))) + + @classmethod + def default(cls) -> "Color": + """Get a Color instance representing the default color. + + Returns: + Color: Default color. + """ + return cls(name="default", type=ColorType.DEFAULT) + + @classmethod + @lru_cache(maxsize=1024) + def parse(cls, color: str) -> "Color": + """Parse a color definition.""" + original_color = color + color = color.lower().strip() + + if color == "default": + return cls(color, type=ColorType.DEFAULT) + + color_number = ANSI_COLOR_NAMES.get(color) + if color_number is not None: + return cls( + color, + type=(ColorType.STANDARD if color_number < 16 else ColorType.EIGHT_BIT), + number=color_number, + ) + + color_match = RE_COLOR.match(color) + if color_match is None: + raise ColorParseError(f"{original_color!r} is not a valid color") + + color_24, color_8, color_rgb = color_match.groups() + if color_24: + triplet = ColorTriplet( + int(color_24[0:2], 16), int(color_24[2:4], 16), int(color_24[4:6], 16) + ) + return cls(color, ColorType.TRUECOLOR, triplet=triplet) + + elif color_8: + number = int(color_8) + if number > 255: + raise ColorParseError(f"color number must be <= 255 in {color!r}") + return cls( + color, + type=(ColorType.STANDARD if number < 16 else ColorType.EIGHT_BIT), + number=number, + ) + + else: # color_rgb: + components = color_rgb.split(",") + if len(components) != 3: + raise ColorParseError( + f"expected three components in {original_color!r}" + ) + red, green, blue = components + triplet = ColorTriplet(int(red), int(green), int(blue)) + if not all(component <= 255 for component in triplet): + raise ColorParseError( + f"color components must be <= 255 in {original_color!r}" + ) + return cls(color, ColorType.TRUECOLOR, triplet=triplet) + + @lru_cache(maxsize=1024) + def get_ansi_codes(self, foreground: bool = True) -> Tuple[str, ...]: + """Get the ANSI escape codes for this color.""" + _type = self.type + if _type == ColorType.DEFAULT: + return ("39" if foreground else "49",) + + elif _type == ColorType.WINDOWS: + number = self.number + assert number is not None + fore, back = (30, 40) if number < 8 else (82, 92) + return (str(fore + number if foreground else back + number),) + + elif _type == ColorType.STANDARD: + number = self.number + assert number is not None + fore, back = (30, 40) if number < 8 else (82, 92) + return (str(fore + number if foreground else back + number),) + + elif _type == ColorType.EIGHT_BIT: + assert self.number is not None + return ("38" if foreground else "48", "5", str(self.number)) + + else: # self.standard == ColorStandard.TRUECOLOR: + assert self.triplet is not None + red, green, blue = self.triplet + return ("38" if foreground else "48", "2", str(red), str(green), str(blue)) + + @lru_cache(maxsize=1024) + def downgrade(self, system: ColorSystem) -> "Color": + """Downgrade a color system to a system with fewer colors.""" + + if self.type in (ColorType.DEFAULT, system): + return self + # Convert to 8-bit color from truecolor color + if system == ColorSystem.EIGHT_BIT and self.system == ColorSystem.TRUECOLOR: + assert self.triplet is not None + _h, l, s = rgb_to_hls(*self.triplet.normalized) + # If saturation is under 15% assume it is grayscale + if s < 0.15: + gray = round(l * 25.0) + if gray == 0: + color_number = 16 + elif gray == 25: + color_number = 231 + else: + color_number = 231 + gray + return Color(self.name, ColorType.EIGHT_BIT, number=color_number) + + red, green, blue = self.triplet + six_red = red / 95 if red < 95 else 1 + (red - 95) / 40 + six_green = green / 95 if green < 95 else 1 + (green - 95) / 40 + six_blue = blue / 95 if blue < 95 else 1 + (blue - 95) / 40 + + color_number = ( + 16 + 36 * round(six_red) + 6 * round(six_green) + round(six_blue) + ) + return Color(self.name, ColorType.EIGHT_BIT, number=color_number) + + # Convert to standard from truecolor or 8-bit + elif system == ColorSystem.STANDARD: + if self.system == ColorSystem.TRUECOLOR: + assert self.triplet is not None + triplet = self.triplet + else: # self.system == ColorSystem.EIGHT_BIT + assert self.number is not None + triplet = ColorTriplet(*EIGHT_BIT_PALETTE[self.number]) + + color_number = STANDARD_PALETTE.match(triplet) + return Color(self.name, ColorType.STANDARD, number=color_number) + + elif system == ColorSystem.WINDOWS: + if self.system == ColorSystem.TRUECOLOR: + assert self.triplet is not None + triplet = self.triplet + else: # self.system == ColorSystem.EIGHT_BIT + assert self.number is not None + if self.number < 16: + return Color(self.name, ColorType.WINDOWS, number=self.number) + triplet = ColorTriplet(*EIGHT_BIT_PALETTE[self.number]) + + color_number = WINDOWS_PALETTE.match(triplet) + return Color(self.name, ColorType.WINDOWS, number=color_number) + + return self + + +def parse_rgb_hex(hex_color: str) -> ColorTriplet: + """Parse six hex characters in to RGB triplet.""" + assert len(hex_color) == 6, "must be 6 characters" + color = ColorTriplet( + int(hex_color[0:2], 16), int(hex_color[2:4], 16), int(hex_color[4:6], 16) + ) + return color + + +def blend_rgb( + color1: ColorTriplet, color2: ColorTriplet, cross_fade: float = 0.5 +) -> ColorTriplet: + """Blend one RGB color in to another.""" + r1, g1, b1 = color1 + r2, g2, b2 = color2 + new_color = ColorTriplet( + int(r1 + (r2 - r1) * cross_fade), + int(g1 + (g2 - g1) * cross_fade), + int(b1 + (b2 - b1) * cross_fade), + ) + return new_color + + +if __name__ == "__main__": # pragma: no cover + from .console import Console + from .table import Table + from .text import Text + + console = Console() + + table = Table(show_footer=False, show_edge=True) + table.add_column("Color", width=10, overflow="ellipsis") + table.add_column("Number", justify="right", style="yellow") + table.add_column("Name", style="green") + table.add_column("Hex", style="blue") + table.add_column("RGB", style="magenta") + + colors = sorted((v, k) for k, v in ANSI_COLOR_NAMES.items()) + for color_number, name in colors: + if "grey" in name: + continue + color_cell = Text(" " * 10, style=f"on {name}") + if color_number < 16: + table.add_row(color_cell, f"{color_number}", Text(f'"{name}"')) + else: + color = EIGHT_BIT_PALETTE[color_number] # type: ignore[has-type] + table.add_row( + color_cell, str(color_number), Text(f'"{name}"'), color.hex, color.rgb + ) + + console.print(table) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py b/venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py new file mode 100644 index 00000000000..02cab328251 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py @@ -0,0 +1,38 @@ +from typing import NamedTuple, Tuple + + +class ColorTriplet(NamedTuple): + """The red, green, and blue components of a color.""" + + red: int + """Red component in 0 to 255 range.""" + green: int + """Green component in 0 to 255 range.""" + blue: int + """Blue component in 0 to 255 range.""" + + @property + def hex(self) -> str: + """get the color triplet in CSS style.""" + red, green, blue = self + return f"#{red:02x}{green:02x}{blue:02x}" + + @property + def rgb(self) -> str: + """The color in RGB format. + + Returns: + str: An rgb color, e.g. ``"rgb(100,23,255)"``. + """ + red, green, blue = self + return f"rgb({red},{green},{blue})" + + @property + def normalized(self) -> Tuple[float, float, float]: + """Convert components into floats between 0 and 1. + + Returns: + Tuple[float, float, float]: A tuple of three normalized colour components. + """ + red, green, blue = self + return red / 255.0, green / 255.0, blue / 255.0 diff --git a/venv/Lib/site-packages/pip/_vendor/rich/columns.py b/venv/Lib/site-packages/pip/_vendor/rich/columns.py new file mode 100644 index 00000000000..669a3a7074f --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/columns.py @@ -0,0 +1,187 @@ +from collections import defaultdict +from itertools import chain +from operator import itemgetter +from typing import Dict, Iterable, List, Optional, Tuple + +from .align import Align, AlignMethod +from .console import Console, ConsoleOptions, RenderableType, RenderResult +from .constrain import Constrain +from .measure import Measurement +from .padding import Padding, PaddingDimensions +from .table import Table +from .text import TextType +from .jupyter import JupyterMixin + + +class Columns(JupyterMixin): + """Display renderables in neat columns. + + Args: + renderables (Iterable[RenderableType]): Any number of Rich renderables (including str). + width (int, optional): The desired width of the columns, or None to auto detect. Defaults to None. + padding (PaddingDimensions, optional): Optional padding around cells. Defaults to (0, 1). + expand (bool, optional): Expand columns to full width. Defaults to False. + equal (bool, optional): Arrange in to equal sized columns. Defaults to False. + column_first (bool, optional): Align items from top to bottom (rather than left to right). Defaults to False. + right_to_left (bool, optional): Start column from right hand side. Defaults to False. + align (str, optional): Align value ("left", "right", or "center") or None for default. Defaults to None. + title (TextType, optional): Optional title for Columns. + """ + + def __init__( + self, + renderables: Optional[Iterable[RenderableType]] = None, + padding: PaddingDimensions = (0, 1), + *, + width: Optional[int] = None, + expand: bool = False, + equal: bool = False, + column_first: bool = False, + right_to_left: bool = False, + align: Optional[AlignMethod] = None, + title: Optional[TextType] = None, + ) -> None: + self.renderables = list(renderables or []) + self.width = width + self.padding = padding + self.expand = expand + self.equal = equal + self.column_first = column_first + self.right_to_left = right_to_left + self.align: Optional[AlignMethod] = align + self.title = title + + def add_renderable(self, renderable: RenderableType) -> None: + """Add a renderable to the columns. + + Args: + renderable (RenderableType): Any renderable object. + """ + self.renderables.append(renderable) + + def __rich_console__( + self, console: Console, options: ConsoleOptions + ) -> RenderResult: + render_str = console.render_str + renderables = [ + render_str(renderable) if isinstance(renderable, str) else renderable + for renderable in self.renderables + ] + if not renderables: + return + _top, right, _bottom, left = Padding.unpack(self.padding) + width_padding = max(left, right) + max_width = options.max_width + widths: Dict[int, int] = defaultdict(int) + column_count = len(renderables) + + get_measurement = Measurement.get + renderable_widths = [ + get_measurement(console, options, renderable).maximum + for renderable in renderables + ] + if self.equal: + renderable_widths = [max(renderable_widths)] * len(renderable_widths) + + def iter_renderables( + column_count: int, + ) -> Iterable[Tuple[int, Optional[RenderableType]]]: + item_count = len(renderables) + if self.column_first: + width_renderables = list(zip(renderable_widths, renderables)) + + column_lengths: List[int] = [item_count // column_count] * column_count + for col_no in range(item_count % column_count): + column_lengths[col_no] += 1 + + row_count = (item_count + column_count - 1) // column_count + cells = [[-1] * column_count for _ in range(row_count)] + row = col = 0 + for index in range(item_count): + cells[row][col] = index + column_lengths[col] -= 1 + if column_lengths[col]: + row += 1 + else: + col += 1 + row = 0 + for index in chain.from_iterable(cells): + if index == -1: + break + yield width_renderables[index] + else: + yield from zip(renderable_widths, renderables) + # Pad odd elements with spaces + if item_count % column_count: + for _ in range(column_count - (item_count % column_count)): + yield 0, None + + table = Table.grid(padding=self.padding, collapse_padding=True, pad_edge=False) + table.expand = self.expand + table.title = self.title + + if self.width is not None: + column_count = (max_width) // (self.width + width_padding) + for _ in range(column_count): + table.add_column(width=self.width) + else: + while column_count > 1: + widths.clear() + column_no = 0 + for renderable_width, _ in iter_renderables(column_count): + widths[column_no] = max(widths[column_no], renderable_width) + total_width = sum(widths.values()) + width_padding * ( + len(widths) - 1 + ) + if total_width > max_width: + column_count = len(widths) - 1 + break + else: + column_no = (column_no + 1) % column_count + else: + break + + get_renderable = itemgetter(1) + _renderables = [ + get_renderable(_renderable) + for _renderable in iter_renderables(column_count) + ] + if self.equal: + _renderables = [ + None + if renderable is None + else Constrain(renderable, renderable_widths[0]) + for renderable in _renderables + ] + if self.align: + align = self.align + _Align = Align + _renderables = [ + None if renderable is None else _Align(renderable, align) + for renderable in _renderables + ] + + right_to_left = self.right_to_left + add_row = table.add_row + for start in range(0, len(_renderables), column_count): + row = _renderables[start : start + column_count] + if right_to_left: + row = row[::-1] + add_row(*row) + yield table + + +if __name__ == "__main__": # pragma: no cover + import os + + console = Console() + + files = [f"{i} {s}" for i, s in enumerate(sorted(os.listdir()))] + columns = Columns(files, padding=(0, 1), expand=False, equal=False) + console.print(columns) + console.rule() + columns.column_first = True + console.print(columns) + columns.right_to_left = True + console.rule() + console.print(columns) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/console.py b/venv/Lib/site-packages/pip/_vendor/rich/console.py new file mode 100644 index 00000000000..a11c7c137f0 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/console.py @@ -0,0 +1,2633 @@ +import inspect +import os +import platform +import sys +import threading +import zlib +from abc import ABC, abstractmethod +from dataclasses import dataclass, field +from datetime import datetime +from functools import wraps +from getpass import getpass +from html import escape +from inspect import isclass +from itertools import islice +from math import ceil +from time import monotonic +from types import FrameType, ModuleType, TracebackType +from typing import ( + IO, + TYPE_CHECKING, + Any, + Callable, + Dict, + Iterable, + List, + Mapping, + NamedTuple, + Optional, + TextIO, + Tuple, + Type, + Union, + cast, +) + +from pip._vendor.rich._null_file import NULL_FILE + +if sys.version_info >= (3, 8): + from typing import Literal, Protocol, runtime_checkable +else: + from pip._vendor.typing_extensions import ( + Literal, + Protocol, + runtime_checkable, + ) # pragma: no cover + +from . import errors, themes +from ._emoji_replace import _emoji_replace +from ._export_format import CONSOLE_HTML_FORMAT, CONSOLE_SVG_FORMAT +from ._fileno import get_fileno +from ._log_render import FormatTimeCallable, LogRender +from .align import Align, AlignMethod +from .color import ColorSystem, blend_rgb +from .control import Control +from .emoji import EmojiVariant +from .highlighter import NullHighlighter, ReprHighlighter +from .markup import render as render_markup +from .measure import Measurement, measure_renderables +from .pager import Pager, SystemPager +from .pretty import Pretty, is_expandable +from .protocol import rich_cast +from .region import Region +from .scope import render_scope +from .screen import Screen +from .segment import Segment +from .style import Style, StyleType +from .styled import Styled +from .terminal_theme import DEFAULT_TERMINAL_THEME, SVG_EXPORT_THEME, TerminalTheme +from .text import Text, TextType +from .theme import Theme, ThemeStack + +if TYPE_CHECKING: + from ._windows import WindowsConsoleFeatures + from .live import Live + from .status import Status + +JUPYTER_DEFAULT_COLUMNS = 115 +JUPYTER_DEFAULT_LINES = 100 +WINDOWS = platform.system() == "Windows" + +HighlighterType = Callable[[Union[str, "Text"]], "Text"] +JustifyMethod = Literal["default", "left", "center", "right", "full"] +OverflowMethod = Literal["fold", "crop", "ellipsis", "ignore"] + + +class NoChange: + pass + + +NO_CHANGE = NoChange() + +try: + _STDIN_FILENO = sys.__stdin__.fileno() +except Exception: + _STDIN_FILENO = 0 +try: + _STDOUT_FILENO = sys.__stdout__.fileno() +except Exception: + _STDOUT_FILENO = 1 +try: + _STDERR_FILENO = sys.__stderr__.fileno() +except Exception: + _STDERR_FILENO = 2 + +_STD_STREAMS = (_STDIN_FILENO, _STDOUT_FILENO, _STDERR_FILENO) +_STD_STREAMS_OUTPUT = (_STDOUT_FILENO, _STDERR_FILENO) + + +_TERM_COLORS = { + "kitty": ColorSystem.EIGHT_BIT, + "256color": ColorSystem.EIGHT_BIT, + "16color": ColorSystem.STANDARD, +} + + +class ConsoleDimensions(NamedTuple): + """Size of the terminal.""" + + width: int + """The width of the console in 'cells'.""" + height: int + """The height of the console in lines.""" + + +@dataclass +class ConsoleOptions: + """Options for __rich_console__ method.""" + + size: ConsoleDimensions + """Size of console.""" + legacy_windows: bool + """legacy_windows: flag for legacy windows.""" + min_width: int + """Minimum width of renderable.""" + max_width: int + """Maximum width of renderable.""" + is_terminal: bool + """True if the target is a terminal, otherwise False.""" + encoding: str + """Encoding of terminal.""" + max_height: int + """Height of container (starts as terminal)""" + justify: Optional[JustifyMethod] = None + """Justify value override for renderable.""" + overflow: Optional[OverflowMethod] = None + """Overflow value override for renderable.""" + no_wrap: Optional[bool] = False + """Disable wrapping for text.""" + highlight: Optional[bool] = None + """Highlight override for render_str.""" + markup: Optional[bool] = None + """Enable markup when rendering strings.""" + height: Optional[int] = None + + @property + def ascii_only(self) -> bool: + """Check if renderables should use ascii only.""" + return not self.encoding.startswith("utf") + + def copy(self) -> "ConsoleOptions": + """Return a copy of the options. + + Returns: + ConsoleOptions: a copy of self. + """ + options: ConsoleOptions = ConsoleOptions.__new__(ConsoleOptions) + options.__dict__ = self.__dict__.copy() + return options + + def update( + self, + *, + width: Union[int, NoChange] = NO_CHANGE, + min_width: Union[int, NoChange] = NO_CHANGE, + max_width: Union[int, NoChange] = NO_CHANGE, + justify: Union[Optional[JustifyMethod], NoChange] = NO_CHANGE, + overflow: Union[Optional[OverflowMethod], NoChange] = NO_CHANGE, + no_wrap: Union[Optional[bool], NoChange] = NO_CHANGE, + highlight: Union[Optional[bool], NoChange] = NO_CHANGE, + markup: Union[Optional[bool], NoChange] = NO_CHANGE, + height: Union[Optional[int], NoChange] = NO_CHANGE, + ) -> "ConsoleOptions": + """Update values, return a copy.""" + options = self.copy() + if not isinstance(width, NoChange): + options.min_width = options.max_width = max(0, width) + if not isinstance(min_width, NoChange): + options.min_width = min_width + if not isinstance(max_width, NoChange): + options.max_width = max_width + if not isinstance(justify, NoChange): + options.justify = justify + if not isinstance(overflow, NoChange): + options.overflow = overflow + if not isinstance(no_wrap, NoChange): + options.no_wrap = no_wrap + if not isinstance(highlight, NoChange): + options.highlight = highlight + if not isinstance(markup, NoChange): + options.markup = markup + if not isinstance(height, NoChange): + if height is not None: + options.max_height = height + options.height = None if height is None else max(0, height) + return options + + def update_width(self, width: int) -> "ConsoleOptions": + """Update just the width, return a copy. + + Args: + width (int): New width (sets both min_width and max_width) + + Returns: + ~ConsoleOptions: New console options instance. + """ + options = self.copy() + options.min_width = options.max_width = max(0, width) + return options + + def update_height(self, height: int) -> "ConsoleOptions": + """Update the height, and return a copy. + + Args: + height (int): New height + + Returns: + ~ConsoleOptions: New Console options instance. + """ + options = self.copy() + options.max_height = options.height = height + return options + + def reset_height(self) -> "ConsoleOptions": + """Return a copy of the options with height set to ``None``. + + Returns: + ~ConsoleOptions: New console options instance. + """ + options = self.copy() + options.height = None + return options + + def update_dimensions(self, width: int, height: int) -> "ConsoleOptions": + """Update the width and height, and return a copy. + + Args: + width (int): New width (sets both min_width and max_width). + height (int): New height. + + Returns: + ~ConsoleOptions: New console options instance. + """ + options = self.copy() + options.min_width = options.max_width = max(0, width) + options.height = options.max_height = height + return options + + +@runtime_checkable +class RichCast(Protocol): + """An object that may be 'cast' to a console renderable.""" + + def __rich__( + self, + ) -> Union["ConsoleRenderable", "RichCast", str]: # pragma: no cover + ... + + +@runtime_checkable +class ConsoleRenderable(Protocol): + """An object that supports the console protocol.""" + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": # pragma: no cover + ... + + +# A type that may be rendered by Console. +RenderableType = Union[ConsoleRenderable, RichCast, str] +"""A string or any object that may be rendered by Rich.""" + +# The result of calling a __rich_console__ method. +RenderResult = Iterable[Union[RenderableType, Segment]] + +_null_highlighter = NullHighlighter() + + +class CaptureError(Exception): + """An error in the Capture context manager.""" + + +class NewLine: + """A renderable to generate new line(s)""" + + def __init__(self, count: int = 1) -> None: + self.count = count + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> Iterable[Segment]: + yield Segment("\n" * self.count) + + +class ScreenUpdate: + """Render a list of lines at a given offset.""" + + def __init__(self, lines: List[List[Segment]], x: int, y: int) -> None: + self._lines = lines + self.x = x + self.y = y + + def __rich_console__( + self, console: "Console", options: ConsoleOptions + ) -> RenderResult: + x = self.x + move_to = Control.move_to + for offset, line in enumerate(self._lines, self.y): + yield move_to(x, offset) + yield from line + + +class Capture: + """Context manager to capture the result of printing to the console. + See :meth:`~rich.console.Console.capture` for how to use. + + Args: + console (Console): A console instance to capture output. + """ + + def __init__(self, console: "Console") -> None: + self._console = console + self._result: Optional[str] = None + + def __enter__(self) -> "Capture": + self._console.begin_capture() + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + self._result = self._console.end_capture() + + def get(self) -> str: + """Get the result of the capture.""" + if self._result is None: + raise CaptureError( + "Capture result is not available until context manager exits." + ) + return self._result + + +class ThemeContext: + """A context manager to use a temporary theme. See :meth:`~rich.console.Console.use_theme` for usage.""" + + def __init__(self, console: "Console", theme: Theme, inherit: bool = True) -> None: + self.console = console + self.theme = theme + self.inherit = inherit + + def __enter__(self) -> "ThemeContext": + self.console.push_theme(self.theme) + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + self.console.pop_theme() + + +class PagerContext: + """A context manager that 'pages' content. See :meth:`~rich.console.Console.pager` for usage.""" + + def __init__( + self, + console: "Console", + pager: Optional[Pager] = None, + styles: bool = False, + links: bool = False, + ) -> None: + self._console = console + self.pager = SystemPager() if pager is None else pager + self.styles = styles + self.links = links + + def __enter__(self) -> "PagerContext": + self._console._enter_buffer() + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + if exc_type is None: + with self._console._lock: + buffer: List[Segment] = self._console._buffer[:] + del self._console._buffer[:] + segments: Iterable[Segment] = buffer + if not self.styles: + segments = Segment.strip_styles(segments) + elif not self.links: + segments = Segment.strip_links(segments) + content = self._console._render_buffer(segments) + self.pager.show(content) + self._console._exit_buffer() + + +class ScreenContext: + """A context manager that enables an alternative screen. See :meth:`~rich.console.Console.screen` for usage.""" + + def __init__( + self, console: "Console", hide_cursor: bool, style: StyleType = "" + ) -> None: + self.console = console + self.hide_cursor = hide_cursor + self.screen = Screen(style=style) + self._changed = False + + def update( + self, *renderables: RenderableType, style: Optional[StyleType] = None + ) -> None: + """Update the screen. + + Args: + renderable (RenderableType, optional): Optional renderable to replace current renderable, + or None for no change. Defaults to None. + style: (Style, optional): Replacement style, or None for no change. Defaults to None. + """ + if renderables: + self.screen.renderable = ( + Group(*renderables) if len(renderables) > 1 else renderables[0] + ) + if style is not None: + self.screen.style = style + self.console.print(self.screen, end="") + + def __enter__(self) -> "ScreenContext": + self._changed = self.console.set_alt_screen(True) + if self._changed and self.hide_cursor: + self.console.show_cursor(False) + return self + + def __exit__( + self, + exc_type: Optional[Type[BaseException]], + exc_val: Optional[BaseException], + exc_tb: Optional[TracebackType], + ) -> None: + if self._changed: + self.console.set_alt_screen(False) + if self.hide_cursor: + self.console.show_cursor(True) + + +class Group: + """Takes a group of renderables and returns a renderable object that renders the group. + + Args: + renderables (Iterable[RenderableType]): An iterable of renderable objects. + fit (bool, optional): Fit dimension of group to contents, or fill available space. Defaults to True. + """ + + def __init__(self, *renderables: "RenderableType", fit: bool = True) -> None: + self._renderables = renderables + self.fit = fit + self._render: Optional[List[RenderableType]] = None + + @property + def renderables(self) -> List["RenderableType"]: + if self._render is None: + self._render = list(self._renderables) + return self._render + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> "Measurement": + if self.fit: + return measure_renderables(console, options, self.renderables) + else: + return Measurement(options.max_width, options.max_width) + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> RenderResult: + yield from self.renderables + + +def group(fit: bool = True) -> Callable[..., Callable[..., Group]]: + """A decorator that turns an iterable of renderables in to a group. + + Args: + fit (bool, optional): Fit dimension of group to contents, or fill available space. Defaults to True. + """ + + def decorator( + method: Callable[..., Iterable[RenderableType]] + ) -> Callable[..., Group]: + """Convert a method that returns an iterable of renderables in to a Group.""" + + @wraps(method) + def _replace(*args: Any, **kwargs: Any) -> Group: + renderables = method(*args, **kwargs) + return Group(*renderables, fit=fit) + + return _replace + + return decorator + + +def _is_jupyter() -> bool: # pragma: no cover + """Check if we're running in a Jupyter notebook.""" + try: + get_ipython # type: ignore[name-defined] + except NameError: + return False + ipython = get_ipython() # type: ignore[name-defined] + shell = ipython.__class__.__name__ + if ( + "google.colab" in str(ipython.__class__) + or os.getenv("DATABRICKS_RUNTIME_VERSION") + or shell == "ZMQInteractiveShell" + ): + return True # Jupyter notebook or qtconsole + elif shell == "TerminalInteractiveShell": + return False # Terminal running IPython + else: + return False # Other type (?) + + +COLOR_SYSTEMS = { + "standard": ColorSystem.STANDARD, + "256": ColorSystem.EIGHT_BIT, + "truecolor": ColorSystem.TRUECOLOR, + "windows": ColorSystem.WINDOWS, +} + +_COLOR_SYSTEMS_NAMES = {system: name for name, system in COLOR_SYSTEMS.items()} + + +@dataclass +class ConsoleThreadLocals(threading.local): + """Thread local values for Console context.""" + + theme_stack: ThemeStack + buffer: List[Segment] = field(default_factory=list) + buffer_index: int = 0 + + +class RenderHook(ABC): + """Provides hooks in to the render process.""" + + @abstractmethod + def process_renderables( + self, renderables: List[ConsoleRenderable] + ) -> List[ConsoleRenderable]: + """Called with a list of objects to render. + + This method can return a new list of renderables, or modify and return the same list. + + Args: + renderables (List[ConsoleRenderable]): A number of renderable objects. + + Returns: + List[ConsoleRenderable]: A replacement list of renderables. + """ + + +_windows_console_features: Optional["WindowsConsoleFeatures"] = None + + +def get_windows_console_features() -> "WindowsConsoleFeatures": # pragma: no cover + global _windows_console_features + if _windows_console_features is not None: + return _windows_console_features + from ._windows import get_windows_console_features + + _windows_console_features = get_windows_console_features() + return _windows_console_features + + +def detect_legacy_windows() -> bool: + """Detect legacy Windows.""" + return WINDOWS and not get_windows_console_features().vt + + +class Console: + """A high level console interface. + + Args: + color_system (str, optional): The color system supported by your terminal, + either ``"standard"``, ``"256"`` or ``"truecolor"``. Leave as ``"auto"`` to autodetect. + force_terminal (Optional[bool], optional): Enable/disable terminal control codes, or None to auto-detect terminal. Defaults to None. + force_jupyter (Optional[bool], optional): Enable/disable Jupyter rendering, or None to auto-detect Jupyter. Defaults to None. + force_interactive (Optional[bool], optional): Enable/disable interactive mode, or None to auto detect. Defaults to None. + soft_wrap (Optional[bool], optional): Set soft wrap default on print method. Defaults to False. + theme (Theme, optional): An optional style theme object, or ``None`` for default theme. + stderr (bool, optional): Use stderr rather than stdout if ``file`` is not specified. Defaults to False. + file (IO, optional): A file object where the console should write to. Defaults to stdout. + quiet (bool, Optional): Boolean to suppress all output. Defaults to False. + width (int, optional): The width of the terminal. Leave as default to auto-detect width. + height (int, optional): The height of the terminal. Leave as default to auto-detect height. + style (StyleType, optional): Style to apply to all output, or None for no style. Defaults to None. + no_color (Optional[bool], optional): Enabled no color mode, or None to auto detect. Defaults to None. + tab_size (int, optional): Number of spaces used to replace a tab character. Defaults to 8. + record (bool, optional): Boolean to enable recording of terminal output, + required to call :meth:`export_html`, :meth:`export_svg`, and :meth:`export_text`. Defaults to False. + markup (bool, optional): Boolean to enable :ref:`console_markup`. Defaults to True. + emoji (bool, optional): Enable emoji code. Defaults to True. + emoji_variant (str, optional): Optional emoji variant, either "text" or "emoji". Defaults to None. + highlight (bool, optional): Enable automatic highlighting. Defaults to True. + log_time (bool, optional): Boolean to enable logging of time by :meth:`log` methods. Defaults to True. + log_path (bool, optional): Boolean to enable the logging of the caller by :meth:`log`. Defaults to True. + log_time_format (Union[str, TimeFormatterCallable], optional): If ``log_time`` is enabled, either string for strftime or callable that formats the time. Defaults to "[%X] ". + highlighter (HighlighterType, optional): Default highlighter. + legacy_windows (bool, optional): Enable legacy Windows mode, or ``None`` to auto detect. Defaults to ``None``. + safe_box (bool, optional): Restrict box options that don't render on legacy Windows. + get_datetime (Callable[[], datetime], optional): Callable that gets the current time as a datetime.datetime object (used by Console.log), + or None for datetime.now. + get_time (Callable[[], time], optional): Callable that gets the current time in seconds, default uses time.monotonic. + """ + + _environ: Mapping[str, str] = os.environ + + def __init__( + self, + *, + color_system: Optional[ + Literal["auto", "standard", "256", "truecolor", "windows"] + ] = "auto", + force_terminal: Optional[bool] = None, + force_jupyter: Optional[bool] = None, + force_interactive: Optional[bool] = None, + soft_wrap: bool = False, + theme: Optional[Theme] = None, + stderr: bool = False, + file: Optional[IO[str]] = None, + quiet: bool = False, + width: Optional[int] = None, + height: Optional[int] = None, + style: Optional[StyleType] = None, + no_color: Optional[bool] = None, + tab_size: int = 8, + record: bool = False, + markup: bool = True, + emoji: bool = True, + emoji_variant: Optional[EmojiVariant] = None, + highlight: bool = True, + log_time: bool = True, + log_path: bool = True, + log_time_format: Union[str, FormatTimeCallable] = "[%X]", + highlighter: Optional["HighlighterType"] = ReprHighlighter(), + legacy_windows: Optional[bool] = None, + safe_box: bool = True, + get_datetime: Optional[Callable[[], datetime]] = None, + get_time: Optional[Callable[[], float]] = None, + _environ: Optional[Mapping[str, str]] = None, + ): + # Copy of os.environ allows us to replace it for testing + if _environ is not None: + self._environ = _environ + + self.is_jupyter = _is_jupyter() if force_jupyter is None else force_jupyter + if self.is_jupyter: + if width is None: + jupyter_columns = self._environ.get("JUPYTER_COLUMNS") + if jupyter_columns is not None and jupyter_columns.isdigit(): + width = int(jupyter_columns) + else: + width = JUPYTER_DEFAULT_COLUMNS + if height is None: + jupyter_lines = self._environ.get("JUPYTER_LINES") + if jupyter_lines is not None and jupyter_lines.isdigit(): + height = int(jupyter_lines) + else: + height = JUPYTER_DEFAULT_LINES + + self.tab_size = tab_size + self.record = record + self._markup = markup + self._emoji = emoji + self._emoji_variant: Optional[EmojiVariant] = emoji_variant + self._highlight = highlight + self.legacy_windows: bool = ( + (detect_legacy_windows() and not self.is_jupyter) + if legacy_windows is None + else legacy_windows + ) + + if width is None: + columns = self._environ.get("COLUMNS") + if columns is not None and columns.isdigit(): + width = int(columns) - self.legacy_windows + if height is None: + lines = self._environ.get("LINES") + if lines is not None and lines.isdigit(): + height = int(lines) + + self.soft_wrap = soft_wrap + self._width = width + self._height = height + + self._color_system: Optional[ColorSystem] + + self._force_terminal = None + if force_terminal is not None: + self._force_terminal = force_terminal + + self._file = file + self.quiet = quiet + self.stderr = stderr + + if color_system is None: + self._color_system = None + elif color_system == "auto": + self._color_system = self._detect_color_system() + else: + self._color_system = COLOR_SYSTEMS[color_system] + + self._lock = threading.RLock() + self._log_render = LogRender( + show_time=log_time, + show_path=log_path, + time_format=log_time_format, + ) + self.highlighter: HighlighterType = highlighter or _null_highlighter + self.safe_box = safe_box + self.get_datetime = get_datetime or datetime.now + self.get_time = get_time or monotonic + self.style = style + self.no_color = ( + no_color if no_color is not None else "NO_COLOR" in self._environ + ) + self.is_interactive = ( + (self.is_terminal and not self.is_dumb_terminal) + if force_interactive is None + else force_interactive + ) + + self._record_buffer_lock = threading.RLock() + self._thread_locals = ConsoleThreadLocals( + theme_stack=ThemeStack(themes.DEFAULT if theme is None else theme) + ) + self._record_buffer: List[Segment] = [] + self._render_hooks: List[RenderHook] = [] + self._live: Optional["Live"] = None + self._is_alt_screen = False + + def __repr__(self) -> str: + return f"" + + @property + def file(self) -> IO[str]: + """Get the file object to write to.""" + file = self._file or (sys.stderr if self.stderr else sys.stdout) + file = getattr(file, "rich_proxied_file", file) + if file is None: + file = NULL_FILE + return file + + @file.setter + def file(self, new_file: IO[str]) -> None: + """Set a new file object.""" + self._file = new_file + + @property + def _buffer(self) -> List[Segment]: + """Get a thread local buffer.""" + return self._thread_locals.buffer + + @property + def _buffer_index(self) -> int: + """Get a thread local buffer.""" + return self._thread_locals.buffer_index + + @_buffer_index.setter + def _buffer_index(self, value: int) -> None: + self._thread_locals.buffer_index = value + + @property + def _theme_stack(self) -> ThemeStack: + """Get the thread local theme stack.""" + return self._thread_locals.theme_stack + + def _detect_color_system(self) -> Optional[ColorSystem]: + """Detect color system from env vars.""" + if self.is_jupyter: + return ColorSystem.TRUECOLOR + if not self.is_terminal or self.is_dumb_terminal: + return None + if WINDOWS: # pragma: no cover + if self.legacy_windows: # pragma: no cover + return ColorSystem.WINDOWS + windows_console_features = get_windows_console_features() + return ( + ColorSystem.TRUECOLOR + if windows_console_features.truecolor + else ColorSystem.EIGHT_BIT + ) + else: + color_term = self._environ.get("COLORTERM", "").strip().lower() + if color_term in ("truecolor", "24bit"): + return ColorSystem.TRUECOLOR + term = self._environ.get("TERM", "").strip().lower() + _term_name, _hyphen, colors = term.rpartition("-") + color_system = _TERM_COLORS.get(colors, ColorSystem.STANDARD) + return color_system + + def _enter_buffer(self) -> None: + """Enter in to a buffer context, and buffer all output.""" + self._buffer_index += 1 + + def _exit_buffer(self) -> None: + """Leave buffer context, and render content if required.""" + self._buffer_index -= 1 + self._check_buffer() + + def set_live(self, live: "Live") -> None: + """Set Live instance. Used by Live context manager. + + Args: + live (Live): Live instance using this Console. + + Raises: + errors.LiveError: If this Console has a Live context currently active. + """ + with self._lock: + if self._live is not None: + raise errors.LiveError("Only one live display may be active at once") + self._live = live + + def clear_live(self) -> None: + """Clear the Live instance.""" + with self._lock: + self._live = None + + def push_render_hook(self, hook: RenderHook) -> None: + """Add a new render hook to the stack. + + Args: + hook (RenderHook): Render hook instance. + """ + with self._lock: + self._render_hooks.append(hook) + + def pop_render_hook(self) -> None: + """Pop the last renderhook from the stack.""" + with self._lock: + self._render_hooks.pop() + + def __enter__(self) -> "Console": + """Own context manager to enter buffer context.""" + self._enter_buffer() + return self + + def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None: + """Exit buffer context.""" + self._exit_buffer() + + def begin_capture(self) -> None: + """Begin capturing console output. Call :meth:`end_capture` to exit capture mode and return output.""" + self._enter_buffer() + + def end_capture(self) -> str: + """End capture mode and return captured string. + + Returns: + str: Console output. + """ + render_result = self._render_buffer(self._buffer) + del self._buffer[:] + self._exit_buffer() + return render_result + + def push_theme(self, theme: Theme, *, inherit: bool = True) -> None: + """Push a new theme on to the top of the stack, replacing the styles from the previous theme. + Generally speaking, you should call :meth:`~rich.console.Console.use_theme` to get a context manager, rather + than calling this method directly. + + Args: + theme (Theme): A theme instance. + inherit (bool, optional): Inherit existing styles. Defaults to True. + """ + self._theme_stack.push_theme(theme, inherit=inherit) + + def pop_theme(self) -> None: + """Remove theme from top of stack, restoring previous theme.""" + self._theme_stack.pop_theme() + + def use_theme(self, theme: Theme, *, inherit: bool = True) -> ThemeContext: + """Use a different theme for the duration of the context manager. + + Args: + theme (Theme): Theme instance to user. + inherit (bool, optional): Inherit existing console styles. Defaults to True. + + Returns: + ThemeContext: [description] + """ + return ThemeContext(self, theme, inherit) + + @property + def color_system(self) -> Optional[str]: + """Get color system string. + + Returns: + Optional[str]: "standard", "256" or "truecolor". + """ + + if self._color_system is not None: + return _COLOR_SYSTEMS_NAMES[self._color_system] + else: + return None + + @property + def encoding(self) -> str: + """Get the encoding of the console file, e.g. ``"utf-8"``. + + Returns: + str: A standard encoding string. + """ + return (getattr(self.file, "encoding", "utf-8") or "utf-8").lower() + + @property + def is_terminal(self) -> bool: + """Check if the console is writing to a terminal. + + Returns: + bool: True if the console writing to a device capable of + understanding terminal codes, otherwise False. + """ + if self._force_terminal is not None: + return self._force_terminal + + if hasattr(sys.stdin, "__module__") and sys.stdin.__module__.startswith( + "idlelib" + ): + # Return False for Idle which claims to be a tty but can't handle ansi codes + return False + + if self.is_jupyter: + # return False for Jupyter, which may have FORCE_COLOR set + return False + + # If FORCE_COLOR env var has any value at all, we assume a terminal. + force_color = self._environ.get("FORCE_COLOR") + if force_color is not None: + self._force_terminal = True + return True + + isatty: Optional[Callable[[], bool]] = getattr(self.file, "isatty", None) + try: + return False if isatty is None else isatty() + except ValueError: + # in some situation (at the end of a pytest run for example) isatty() can raise + # ValueError: I/O operation on closed file + # return False because we aren't in a terminal anymore + return False + + @property + def is_dumb_terminal(self) -> bool: + """Detect dumb terminal. + + Returns: + bool: True if writing to a dumb terminal, otherwise False. + + """ + _term = self._environ.get("TERM", "") + is_dumb = _term.lower() in ("dumb", "unknown") + return self.is_terminal and is_dumb + + @property + def options(self) -> ConsoleOptions: + """Get default console options.""" + return ConsoleOptions( + max_height=self.size.height, + size=self.size, + legacy_windows=self.legacy_windows, + min_width=1, + max_width=self.width, + encoding=self.encoding, + is_terminal=self.is_terminal, + ) + + @property + def size(self) -> ConsoleDimensions: + """Get the size of the console. + + Returns: + ConsoleDimensions: A named tuple containing the dimensions. + """ + + if self._width is not None and self._height is not None: + return ConsoleDimensions(self._width - self.legacy_windows, self._height) + + if self.is_dumb_terminal: + return ConsoleDimensions(80, 25) + + width: Optional[int] = None + height: Optional[int] = None + + if WINDOWS: # pragma: no cover + try: + width, height = os.get_terminal_size() + except (AttributeError, ValueError, OSError): # Probably not a terminal + pass + else: + for file_descriptor in _STD_STREAMS: + try: + width, height = os.get_terminal_size(file_descriptor) + except (AttributeError, ValueError, OSError): + pass + else: + break + + columns = self._environ.get("COLUMNS") + if columns is not None and columns.isdigit(): + width = int(columns) + lines = self._environ.get("LINES") + if lines is not None and lines.isdigit(): + height = int(lines) + + # get_terminal_size can report 0, 0 if run from pseudo-terminal + width = width or 80 + height = height or 25 + return ConsoleDimensions( + width - self.legacy_windows if self._width is None else self._width, + height if self._height is None else self._height, + ) + + @size.setter + def size(self, new_size: Tuple[int, int]) -> None: + """Set a new size for the terminal. + + Args: + new_size (Tuple[int, int]): New width and height. + """ + width, height = new_size + self._width = width + self._height = height + + @property + def width(self) -> int: + """Get the width of the console. + + Returns: + int: The width (in characters) of the console. + """ + return self.size.width + + @width.setter + def width(self, width: int) -> None: + """Set width. + + Args: + width (int): New width. + """ + self._width = width + + @property + def height(self) -> int: + """Get the height of the console. + + Returns: + int: The height (in lines) of the console. + """ + return self.size.height + + @height.setter + def height(self, height: int) -> None: + """Set height. + + Args: + height (int): new height. + """ + self._height = height + + def bell(self) -> None: + """Play a 'bell' sound (if supported by the terminal).""" + self.control(Control.bell()) + + def capture(self) -> Capture: + """A context manager to *capture* the result of print() or log() in a string, + rather than writing it to the console. + + Example: + >>> from rich.console import Console + >>> console = Console() + >>> with console.capture() as capture: + ... console.print("[bold magenta]Hello World[/]") + >>> print(capture.get()) + + Returns: + Capture: Context manager with disables writing to the terminal. + """ + capture = Capture(self) + return capture + + def pager( + self, pager: Optional[Pager] = None, styles: bool = False, links: bool = False + ) -> PagerContext: + """A context manager to display anything printed within a "pager". The pager application + is defined by the system and will typically support at least pressing a key to scroll. + + Args: + pager (Pager, optional): A pager object, or None to use :class:`~rich.pager.SystemPager`. Defaults to None. + styles (bool, optional): Show styles in pager. Defaults to False. + links (bool, optional): Show links in pager. Defaults to False. + + Example: + >>> from rich.console import Console + >>> from rich.__main__ import make_test_card + >>> console = Console() + >>> with console.pager(): + console.print(make_test_card()) + + Returns: + PagerContext: A context manager. + """ + return PagerContext(self, pager=pager, styles=styles, links=links) + + def line(self, count: int = 1) -> None: + """Write new line(s). + + Args: + count (int, optional): Number of new lines. Defaults to 1. + """ + + assert count >= 0, "count must be >= 0" + self.print(NewLine(count)) + + def clear(self, home: bool = True) -> None: + """Clear the screen. + + Args: + home (bool, optional): Also move the cursor to 'home' position. Defaults to True. + """ + if home: + self.control(Control.clear(), Control.home()) + else: + self.control(Control.clear()) + + def status( + self, + status: RenderableType, + *, + spinner: str = "dots", + spinner_style: StyleType = "status.spinner", + speed: float = 1.0, + refresh_per_second: float = 12.5, + ) -> "Status": + """Display a status and spinner. + + Args: + status (RenderableType): A status renderable (str or Text typically). + spinner (str, optional): Name of spinner animation (see python -m rich.spinner). Defaults to "dots". + spinner_style (StyleType, optional): Style of spinner. Defaults to "status.spinner". + speed (float, optional): Speed factor for spinner animation. Defaults to 1.0. + refresh_per_second (float, optional): Number of refreshes per second. Defaults to 12.5. + + Returns: + Status: A Status object that may be used as a context manager. + """ + from .status import Status + + status_renderable = Status( + status, + console=self, + spinner=spinner, + spinner_style=spinner_style, + speed=speed, + refresh_per_second=refresh_per_second, + ) + return status_renderable + + def show_cursor(self, show: bool = True) -> bool: + """Show or hide the cursor. + + Args: + show (bool, optional): Set visibility of the cursor. + """ + if self.is_terminal: + self.control(Control.show_cursor(show)) + return True + return False + + def set_alt_screen(self, enable: bool = True) -> bool: + """Enables alternative screen mode. + + Note, if you enable this mode, you should ensure that is disabled before + the application exits. See :meth:`~rich.Console.screen` for a context manager + that handles this for you. + + Args: + enable (bool, optional): Enable (True) or disable (False) alternate screen. Defaults to True. + + Returns: + bool: True if the control codes were written. + + """ + changed = False + if self.is_terminal and not self.legacy_windows: + self.control(Control.alt_screen(enable)) + changed = True + self._is_alt_screen = enable + return changed + + @property + def is_alt_screen(self) -> bool: + """Check if the alt screen was enabled. + + Returns: + bool: True if the alt screen was enabled, otherwise False. + """ + return self._is_alt_screen + + def set_window_title(self, title: str) -> bool: + """Set the title of the console terminal window. + + Warning: There is no means within Rich of "resetting" the window title to its + previous value, meaning the title you set will persist even after your application + exits. + + ``fish`` shell resets the window title before and after each command by default, + negating this issue. Windows Terminal and command prompt will also reset the title for you. + Most other shells and terminals, however, do not do this. + + Some terminals may require configuration changes before you can set the title. + Some terminals may not support setting the title at all. + + Other software (including the terminal itself, the shell, custom prompts, plugins, etc.) + may also set the terminal window title. This could result in whatever value you write + using this method being overwritten. + + Args: + title (str): The new title of the terminal window. + + Returns: + bool: True if the control code to change the terminal title was + written, otherwise False. Note that a return value of True + does not guarantee that the window title has actually changed, + since the feature may be unsupported/disabled in some terminals. + """ + if self.is_terminal: + self.control(Control.title(title)) + return True + return False + + def screen( + self, hide_cursor: bool = True, style: Optional[StyleType] = None + ) -> "ScreenContext": + """Context manager to enable and disable 'alternative screen' mode. + + Args: + hide_cursor (bool, optional): Also hide the cursor. Defaults to False. + style (Style, optional): Optional style for screen. Defaults to None. + + Returns: + ~ScreenContext: Context which enables alternate screen on enter, and disables it on exit. + """ + return ScreenContext(self, hide_cursor=hide_cursor, style=style or "") + + def measure( + self, renderable: RenderableType, *, options: Optional[ConsoleOptions] = None + ) -> Measurement: + """Measure a renderable. Returns a :class:`~rich.measure.Measurement` object which contains + information regarding the number of characters required to print the renderable. + + Args: + renderable (RenderableType): Any renderable or string. + options (Optional[ConsoleOptions], optional): Options to use when measuring, or None + to use default options. Defaults to None. + + Returns: + Measurement: A measurement of the renderable. + """ + measurement = Measurement.get(self, options or self.options, renderable) + return measurement + + def render( + self, renderable: RenderableType, options: Optional[ConsoleOptions] = None + ) -> Iterable[Segment]: + """Render an object in to an iterable of `Segment` instances. + + This method contains the logic for rendering objects with the console protocol. + You are unlikely to need to use it directly, unless you are extending the library. + + Args: + renderable (RenderableType): An object supporting the console protocol, or + an object that may be converted to a string. + options (ConsoleOptions, optional): An options object, or None to use self.options. Defaults to None. + + Returns: + Iterable[Segment]: An iterable of segments that may be rendered. + """ + + _options = options or self.options + if _options.max_width < 1: + # No space to render anything. This prevents potential recursion errors. + return + render_iterable: RenderResult + + renderable = rich_cast(renderable) + if hasattr(renderable, "__rich_console__") and not isclass(renderable): + render_iterable = renderable.__rich_console__(self, _options) # type: ignore[union-attr] + elif isinstance(renderable, str): + text_renderable = self.render_str( + renderable, highlight=_options.highlight, markup=_options.markup + ) + render_iterable = text_renderable.__rich_console__(self, _options) + else: + raise errors.NotRenderableError( + f"Unable to render {renderable!r}; " + "A str, Segment or object with __rich_console__ method is required" + ) + + try: + iter_render = iter(render_iterable) + except TypeError: + raise errors.NotRenderableError( + f"object {render_iterable!r} is not renderable" + ) + _Segment = Segment + _options = _options.reset_height() + for render_output in iter_render: + if isinstance(render_output, _Segment): + yield render_output + else: + yield from self.render(render_output, _options) + + def render_lines( + self, + renderable: RenderableType, + options: Optional[ConsoleOptions] = None, + *, + style: Optional[Style] = None, + pad: bool = True, + new_lines: bool = False, + ) -> List[List[Segment]]: + """Render objects in to a list of lines. + + The output of render_lines is useful when further formatting of rendered console text + is required, such as the Panel class which draws a border around any renderable object. + + Args: + renderable (RenderableType): Any object renderable in the console. + options (Optional[ConsoleOptions], optional): Console options, or None to use self.options. Default to ``None``. + style (Style, optional): Optional style to apply to renderables. Defaults to ``None``. + pad (bool, optional): Pad lines shorter than render width. Defaults to ``True``. + new_lines (bool, optional): Include "\n" characters at end of lines. + + Returns: + List[List[Segment]]: A list of lines, where a line is a list of Segment objects. + """ + with self._lock: + render_options = options or self.options + _rendered = self.render(renderable, render_options) + if style: + _rendered = Segment.apply_style(_rendered, style) + + render_height = render_options.height + if render_height is not None: + render_height = max(0, render_height) + + lines = list( + islice( + Segment.split_and_crop_lines( + _rendered, + render_options.max_width, + include_new_lines=new_lines, + pad=pad, + style=style, + ), + None, + render_height, + ) + ) + if render_options.height is not None: + extra_lines = render_options.height - len(lines) + if extra_lines > 0: + pad_line = [ + [Segment(" " * render_options.max_width, style), Segment("\n")] + if new_lines + else [Segment(" " * render_options.max_width, style)] + ] + lines.extend(pad_line * extra_lines) + + return lines + + def render_str( + self, + text: str, + *, + style: Union[str, Style] = "", + justify: Optional[JustifyMethod] = None, + overflow: Optional[OverflowMethod] = None, + emoji: Optional[bool] = None, + markup: Optional[bool] = None, + highlight: Optional[bool] = None, + highlighter: Optional[HighlighterType] = None, + ) -> "Text": + """Convert a string to a Text instance. This is called automatically if + you print or log a string. + + Args: + text (str): Text to render. + style (Union[str, Style], optional): Style to apply to rendered text. + justify (str, optional): Justify method: "default", "left", "center", "full", or "right". Defaults to ``None``. + overflow (str, optional): Overflow method: "crop", "fold", or "ellipsis". Defaults to ``None``. + emoji (Optional[bool], optional): Enable emoji, or ``None`` to use Console default. + markup (Optional[bool], optional): Enable markup, or ``None`` to use Console default. + highlight (Optional[bool], optional): Enable highlighting, or ``None`` to use Console default. + highlighter (HighlighterType, optional): Optional highlighter to apply. + Returns: + ConsoleRenderable: Renderable object. + + """ + emoji_enabled = emoji or (emoji is None and self._emoji) + markup_enabled = markup or (markup is None and self._markup) + highlight_enabled = highlight or (highlight is None and self._highlight) + + if markup_enabled: + rich_text = render_markup( + text, + style=style, + emoji=emoji_enabled, + emoji_variant=self._emoji_variant, + ) + rich_text.justify = justify + rich_text.overflow = overflow + else: + rich_text = Text( + _emoji_replace(text, default_variant=self._emoji_variant) + if emoji_enabled + else text, + justify=justify, + overflow=overflow, + style=style, + ) + + _highlighter = (highlighter or self.highlighter) if highlight_enabled else None + if _highlighter is not None: + highlight_text = _highlighter(str(rich_text)) + highlight_text.copy_styles(rich_text) + return highlight_text + + return rich_text + + def get_style( + self, name: Union[str, Style], *, default: Optional[Union[Style, str]] = None + ) -> Style: + """Get a Style instance by its theme name or parse a definition. + + Args: + name (str): The name of a style or a style definition. + + Returns: + Style: A Style object. + + Raises: + MissingStyle: If no style could be parsed from name. + + """ + if isinstance(name, Style): + return name + + try: + style = self._theme_stack.get(name) + if style is None: + style = Style.parse(name) + return style.copy() if style.link else style + except errors.StyleSyntaxError as error: + if default is not None: + return self.get_style(default) + raise errors.MissingStyle( + f"Failed to get style {name!r}; {error}" + ) from None + + def _collect_renderables( + self, + objects: Iterable[Any], + sep: str, + end: str, + *, + justify: Optional[JustifyMethod] = None, + emoji: Optional[bool] = None, + markup: Optional[bool] = None, + highlight: Optional[bool] = None, + ) -> List[ConsoleRenderable]: + """Combine a number of renderables and text into one renderable. + + Args: + objects (Iterable[Any]): Anything that Rich can render. + sep (str): String to write between print data. + end (str): String to write at end of print data. + justify (str, optional): One of "left", "right", "center", or "full". Defaults to ``None``. + emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. + markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. + highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. + + Returns: + List[ConsoleRenderable]: A list of things to render. + """ + renderables: List[ConsoleRenderable] = [] + _append = renderables.append + text: List[Text] = [] + append_text = text.append + + append = _append + if justify in ("left", "center", "right"): + + def align_append(renderable: RenderableType) -> None: + _append(Align(renderable, cast(AlignMethod, justify))) + + append = align_append + + _highlighter: HighlighterType = _null_highlighter + if highlight or (highlight is None and self._highlight): + _highlighter = self.highlighter + + def check_text() -> None: + if text: + sep_text = Text(sep, justify=justify, end=end) + append(sep_text.join(text)) + text.clear() + + for renderable in objects: + renderable = rich_cast(renderable) + if isinstance(renderable, str): + append_text( + self.render_str( + renderable, emoji=emoji, markup=markup, highlighter=_highlighter + ) + ) + elif isinstance(renderable, Text): + append_text(renderable) + elif isinstance(renderable, ConsoleRenderable): + check_text() + append(renderable) + elif is_expandable(renderable): + check_text() + append(Pretty(renderable, highlighter=_highlighter)) + else: + append_text(_highlighter(str(renderable))) + + check_text() + + if self.style is not None: + style = self.get_style(self.style) + renderables = [Styled(renderable, style) for renderable in renderables] + + return renderables + + def rule( + self, + title: TextType = "", + *, + characters: str = "─", + style: Union[str, Style] = "rule.line", + align: AlignMethod = "center", + ) -> None: + """Draw a line with optional centered title. + + Args: + title (str, optional): Text to render over the rule. Defaults to "". + characters (str, optional): Character(s) to form the line. Defaults to "─". + style (str, optional): Style of line. Defaults to "rule.line". + align (str, optional): How to align the title, one of "left", "center", or "right". Defaults to "center". + """ + from .rule import Rule + + rule = Rule(title=title, characters=characters, style=style, align=align) + self.print(rule) + + def control(self, *control: Control) -> None: + """Insert non-printing control codes. + + Args: + control_codes (str): Control codes, such as those that may move the cursor. + """ + if not self.is_dumb_terminal: + with self: + self._buffer.extend(_control.segment for _control in control) + + def out( + self, + *objects: Any, + sep: str = " ", + end: str = "\n", + style: Optional[Union[str, Style]] = None, + highlight: Optional[bool] = None, + ) -> None: + """Output to the terminal. This is a low-level way of writing to the terminal which unlike + :meth:`~rich.console.Console.print` won't pretty print, wrap text, or apply markup, but will + optionally apply highlighting and a basic style. + + Args: + sep (str, optional): String to write between print data. Defaults to " ". + end (str, optional): String to write at end of print data. Defaults to "\\\\n". + style (Union[str, Style], optional): A style to apply to output. Defaults to None. + highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use + console default. Defaults to ``None``. + """ + raw_output: str = sep.join(str(_object) for _object in objects) + self.print( + raw_output, + style=style, + highlight=highlight, + emoji=False, + markup=False, + no_wrap=True, + overflow="ignore", + crop=False, + end=end, + ) + + def print( + self, + *objects: Any, + sep: str = " ", + end: str = "\n", + style: Optional[Union[str, Style]] = None, + justify: Optional[JustifyMethod] = None, + overflow: Optional[OverflowMethod] = None, + no_wrap: Optional[bool] = None, + emoji: Optional[bool] = None, + markup: Optional[bool] = None, + highlight: Optional[bool] = None, + width: Optional[int] = None, + height: Optional[int] = None, + crop: bool = True, + soft_wrap: Optional[bool] = None, + new_line_start: bool = False, + ) -> None: + """Print to the console. + + Args: + objects (positional args): Objects to log to the terminal. + sep (str, optional): String to write between print data. Defaults to " ". + end (str, optional): String to write at end of print data. Defaults to "\\\\n". + style (Union[str, Style], optional): A style to apply to output. Defaults to None. + justify (str, optional): Justify method: "default", "left", "right", "center", or "full". Defaults to ``None``. + overflow (str, optional): Overflow method: "ignore", "crop", "fold", or "ellipsis". Defaults to None. + no_wrap (Optional[bool], optional): Disable word wrapping. Defaults to None. + emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. Defaults to ``None``. + markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. Defaults to ``None``. + highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. Defaults to ``None``. + width (Optional[int], optional): Width of output, or ``None`` to auto-detect. Defaults to ``None``. + crop (Optional[bool], optional): Crop output to width of terminal. Defaults to True. + soft_wrap (bool, optional): Enable soft wrap mode which disables word wrapping and cropping of text or ``None`` for + Console default. Defaults to ``None``. + new_line_start (bool, False): Insert a new line at the start if the output contains more than one line. Defaults to ``False``. + """ + if not objects: + objects = (NewLine(),) + + if soft_wrap is None: + soft_wrap = self.soft_wrap + if soft_wrap: + if no_wrap is None: + no_wrap = True + if overflow is None: + overflow = "ignore" + crop = False + render_hooks = self._render_hooks[:] + with self: + renderables = self._collect_renderables( + objects, + sep, + end, + justify=justify, + emoji=emoji, + markup=markup, + highlight=highlight, + ) + for hook in render_hooks: + renderables = hook.process_renderables(renderables) + render_options = self.options.update( + justify=justify, + overflow=overflow, + width=min(width, self.width) if width is not None else NO_CHANGE, + height=height, + no_wrap=no_wrap, + markup=markup, + highlight=highlight, + ) + + new_segments: List[Segment] = [] + extend = new_segments.extend + render = self.render + if style is None: + for renderable in renderables: + extend(render(renderable, render_options)) + else: + for renderable in renderables: + extend( + Segment.apply_style( + render(renderable, render_options), self.get_style(style) + ) + ) + if new_line_start: + if ( + len("".join(segment.text for segment in new_segments).splitlines()) + > 1 + ): + new_segments.insert(0, Segment.line()) + if crop: + buffer_extend = self._buffer.extend + for line in Segment.split_and_crop_lines( + new_segments, self.width, pad=False + ): + buffer_extend(line) + else: + self._buffer.extend(new_segments) + + def print_json( + self, + json: Optional[str] = None, + *, + data: Any = None, + indent: Union[None, int, str] = 2, + highlight: bool = True, + skip_keys: bool = False, + ensure_ascii: bool = False, + check_circular: bool = True, + allow_nan: bool = True, + default: Optional[Callable[[Any], Any]] = None, + sort_keys: bool = False, + ) -> None: + """Pretty prints JSON. Output will be valid JSON. + + Args: + json (Optional[str]): A string containing JSON. + data (Any): If json is not supplied, then encode this data. + indent (Union[None, int, str], optional): Number of spaces to indent. Defaults to 2. + highlight (bool, optional): Enable highlighting of output: Defaults to True. + skip_keys (bool, optional): Skip keys not of a basic type. Defaults to False. + ensure_ascii (bool, optional): Escape all non-ascii characters. Defaults to False. + check_circular (bool, optional): Check for circular references. Defaults to True. + allow_nan (bool, optional): Allow NaN and Infinity values. Defaults to True. + default (Callable, optional): A callable that converts values that can not be encoded + in to something that can be JSON encoded. Defaults to None. + sort_keys (bool, optional): Sort dictionary keys. Defaults to False. + """ + from pip._vendor.rich.json import JSON + + if json is None: + json_renderable = JSON.from_data( + data, + indent=indent, + highlight=highlight, + skip_keys=skip_keys, + ensure_ascii=ensure_ascii, + check_circular=check_circular, + allow_nan=allow_nan, + default=default, + sort_keys=sort_keys, + ) + else: + if not isinstance(json, str): + raise TypeError( + f"json must be str. Did you mean print_json(data={json!r}) ?" + ) + json_renderable = JSON( + json, + indent=indent, + highlight=highlight, + skip_keys=skip_keys, + ensure_ascii=ensure_ascii, + check_circular=check_circular, + allow_nan=allow_nan, + default=default, + sort_keys=sort_keys, + ) + self.print(json_renderable, soft_wrap=True) + + def update_screen( + self, + renderable: RenderableType, + *, + region: Optional[Region] = None, + options: Optional[ConsoleOptions] = None, + ) -> None: + """Update the screen at a given offset. + + Args: + renderable (RenderableType): A Rich renderable. + region (Region, optional): Region of screen to update, or None for entire screen. Defaults to None. + x (int, optional): x offset. Defaults to 0. + y (int, optional): y offset. Defaults to 0. + + Raises: + errors.NoAltScreen: If the Console isn't in alt screen mode. + + """ + if not self.is_alt_screen: + raise errors.NoAltScreen("Alt screen must be enabled to call update_screen") + render_options = options or self.options + if region is None: + x = y = 0 + render_options = render_options.update_dimensions( + render_options.max_width, render_options.height or self.height + ) + else: + x, y, width, height = region + render_options = render_options.update_dimensions(width, height) + + lines = self.render_lines(renderable, options=render_options) + self.update_screen_lines(lines, x, y) + + def update_screen_lines( + self, lines: List[List[Segment]], x: int = 0, y: int = 0 + ) -> None: + """Update lines of the screen at a given offset. + + Args: + lines (List[List[Segment]]): Rendered lines (as produced by :meth:`~rich.Console.render_lines`). + x (int, optional): x offset (column no). Defaults to 0. + y (int, optional): y offset (column no). Defaults to 0. + + Raises: + errors.NoAltScreen: If the Console isn't in alt screen mode. + """ + if not self.is_alt_screen: + raise errors.NoAltScreen("Alt screen must be enabled to call update_screen") + screen_update = ScreenUpdate(lines, x, y) + segments = self.render(screen_update) + self._buffer.extend(segments) + self._check_buffer() + + def print_exception( + self, + *, + width: Optional[int] = 100, + extra_lines: int = 3, + theme: Optional[str] = None, + word_wrap: bool = False, + show_locals: bool = False, + suppress: Iterable[Union[str, ModuleType]] = (), + max_frames: int = 100, + ) -> None: + """Prints a rich render of the last exception and traceback. + + Args: + width (Optional[int], optional): Number of characters used to render code. Defaults to 100. + extra_lines (int, optional): Additional lines of code to render. Defaults to 3. + theme (str, optional): Override pygments theme used in traceback + word_wrap (bool, optional): Enable word wrapping of long lines. Defaults to False. + show_locals (bool, optional): Enable display of local variables. Defaults to False. + suppress (Iterable[Union[str, ModuleType]]): Optional sequence of modules or paths to exclude from traceback. + max_frames (int): Maximum number of frames to show in a traceback, 0 for no maximum. Defaults to 100. + """ + from .traceback import Traceback + + traceback = Traceback( + width=width, + extra_lines=extra_lines, + theme=theme, + word_wrap=word_wrap, + show_locals=show_locals, + suppress=suppress, + max_frames=max_frames, + ) + self.print(traceback) + + @staticmethod + def _caller_frame_info( + offset: int, + currentframe: Callable[[], Optional[FrameType]] = inspect.currentframe, + ) -> Tuple[str, int, Dict[str, Any]]: + """Get caller frame information. + + Args: + offset (int): the caller offset within the current frame stack. + currentframe (Callable[[], Optional[FrameType]], optional): the callable to use to + retrieve the current frame. Defaults to ``inspect.currentframe``. + + Returns: + Tuple[str, int, Dict[str, Any]]: A tuple containing the filename, the line number and + the dictionary of local variables associated with the caller frame. + + Raises: + RuntimeError: If the stack offset is invalid. + """ + # Ignore the frame of this local helper + offset += 1 + + frame = currentframe() + if frame is not None: + # Use the faster currentframe where implemented + while offset and frame is not None: + frame = frame.f_back + offset -= 1 + assert frame is not None + return frame.f_code.co_filename, frame.f_lineno, frame.f_locals + else: + # Fallback to the slower stack + frame_info = inspect.stack()[offset] + return frame_info.filename, frame_info.lineno, frame_info.frame.f_locals + + def log( + self, + *objects: Any, + sep: str = " ", + end: str = "\n", + style: Optional[Union[str, Style]] = None, + justify: Optional[JustifyMethod] = None, + emoji: Optional[bool] = None, + markup: Optional[bool] = None, + highlight: Optional[bool] = None, + log_locals: bool = False, + _stack_offset: int = 1, + ) -> None: + """Log rich content to the terminal. + + Args: + objects (positional args): Objects to log to the terminal. + sep (str, optional): String to write between print data. Defaults to " ". + end (str, optional): String to write at end of print data. Defaults to "\\\\n". + style (Union[str, Style], optional): A style to apply to output. Defaults to None. + justify (str, optional): One of "left", "right", "center", or "full". Defaults to ``None``. + emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. Defaults to None. + markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. Defaults to None. + highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. Defaults to None. + log_locals (bool, optional): Boolean to enable logging of locals where ``log()`` + was called. Defaults to False. + _stack_offset (int, optional): Offset of caller from end of call stack. Defaults to 1. + """ + if not objects: + objects = (NewLine(),) + + render_hooks = self._render_hooks[:] + + with self: + renderables = self._collect_renderables( + objects, + sep, + end, + justify=justify, + emoji=emoji, + markup=markup, + highlight=highlight, + ) + if style is not None: + renderables = [Styled(renderable, style) for renderable in renderables] + + filename, line_no, locals = self._caller_frame_info(_stack_offset) + link_path = None if filename.startswith("<") else os.path.abspath(filename) + path = filename.rpartition(os.sep)[-1] + if log_locals: + locals_map = { + key: value + for key, value in locals.items() + if not key.startswith("__") + } + renderables.append(render_scope(locals_map, title="[i]locals")) + + renderables = [ + self._log_render( + self, + renderables, + log_time=self.get_datetime(), + path=path, + line_no=line_no, + link_path=link_path, + ) + ] + for hook in render_hooks: + renderables = hook.process_renderables(renderables) + new_segments: List[Segment] = [] + extend = new_segments.extend + render = self.render + render_options = self.options + for renderable in renderables: + extend(render(renderable, render_options)) + buffer_extend = self._buffer.extend + for line in Segment.split_and_crop_lines( + new_segments, self.width, pad=False + ): + buffer_extend(line) + + def _check_buffer(self) -> None: + """Check if the buffer may be rendered. Render it if it can (e.g. Console.quiet is False) + Rendering is supported on Windows, Unix and Jupyter environments. For + legacy Windows consoles, the win32 API is called directly. + This method will also record what it renders if recording is enabled via Console.record. + """ + if self.quiet: + del self._buffer[:] + return + with self._lock: + if self.record: + with self._record_buffer_lock: + self._record_buffer.extend(self._buffer[:]) + + if self._buffer_index == 0: + if self.is_jupyter: # pragma: no cover + from .jupyter import display + + display(self._buffer, self._render_buffer(self._buffer[:])) + del self._buffer[:] + else: + if WINDOWS: + use_legacy_windows_render = False + if self.legacy_windows: + fileno = get_fileno(self.file) + if fileno is not None: + use_legacy_windows_render = ( + fileno in _STD_STREAMS_OUTPUT + ) + + if use_legacy_windows_render: + from pip._vendor.rich._win32_console import LegacyWindowsTerm + from pip._vendor.rich._windows_renderer import legacy_windows_render + + buffer = self._buffer[:] + if self.no_color and self._color_system: + buffer = list(Segment.remove_color(buffer)) + + legacy_windows_render(buffer, LegacyWindowsTerm(self.file)) + else: + # Either a non-std stream on legacy Windows, or modern Windows. + text = self._render_buffer(self._buffer[:]) + # https://bugs.python.org/issue37871 + # https://github.com/python/cpython/issues/82052 + # We need to avoid writing more than 32Kb in a single write, due to the above bug + write = self.file.write + # Worse case scenario, every character is 4 bytes of utf-8 + MAX_WRITE = 32 * 1024 // 4 + try: + if len(text) <= MAX_WRITE: + write(text) + else: + batch: List[str] = [] + batch_append = batch.append + size = 0 + for line in text.splitlines(True): + if size + len(line) > MAX_WRITE and batch: + write("".join(batch)) + batch.clear() + size = 0 + batch_append(line) + size += len(line) + if batch: + write("".join(batch)) + batch.clear() + except UnicodeEncodeError as error: + error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***" + raise + else: + text = self._render_buffer(self._buffer[:]) + try: + self.file.write(text) + except UnicodeEncodeError as error: + error.reason = f"{error.reason}\n*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***" + raise + + self.file.flush() + del self._buffer[:] + + def _render_buffer(self, buffer: Iterable[Segment]) -> str: + """Render buffered output, and clear buffer.""" + output: List[str] = [] + append = output.append + color_system = self._color_system + legacy_windows = self.legacy_windows + not_terminal = not self.is_terminal + if self.no_color and color_system: + buffer = Segment.remove_color(buffer) + for text, style, control in buffer: + if style: + append( + style.render( + text, + color_system=color_system, + legacy_windows=legacy_windows, + ) + ) + elif not (not_terminal and control): + append(text) + + rendered = "".join(output) + return rendered + + def input( + self, + prompt: TextType = "", + *, + markup: bool = True, + emoji: bool = True, + password: bool = False, + stream: Optional[TextIO] = None, + ) -> str: + """Displays a prompt and waits for input from the user. The prompt may contain color / style. + + It works in the same way as Python's builtin :func:`input` function and provides elaborate line editing and history features if Python's builtin :mod:`readline` module is previously loaded. + + Args: + prompt (Union[str, Text]): Text to render in the prompt. + markup (bool, optional): Enable console markup (requires a str prompt). Defaults to True. + emoji (bool, optional): Enable emoji (requires a str prompt). Defaults to True. + password: (bool, optional): Hide typed text. Defaults to False. + stream: (TextIO, optional): Optional file to read input from (rather than stdin). Defaults to None. + + Returns: + str: Text read from stdin. + """ + if prompt: + self.print(prompt, markup=markup, emoji=emoji, end="") + if password: + result = getpass("", stream=stream) + else: + if stream: + result = stream.readline() + else: + result = input() + return result + + def export_text(self, *, clear: bool = True, styles: bool = False) -> str: + """Generate text from console contents (requires record=True argument in constructor). + + Args: + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. + styles (bool, optional): If ``True``, ansi escape codes will be included. ``False`` for plain text. + Defaults to ``False``. + + Returns: + str: String containing console contents. + + """ + assert ( + self.record + ), "To export console contents set record=True in the constructor or instance" + + with self._record_buffer_lock: + if styles: + text = "".join( + (style.render(text) if style else text) + for text, style, _ in self._record_buffer + ) + else: + text = "".join( + segment.text + for segment in self._record_buffer + if not segment.control + ) + if clear: + del self._record_buffer[:] + return text + + def save_text(self, path: str, *, clear: bool = True, styles: bool = False) -> None: + """Generate text from console and save to a given location (requires record=True argument in constructor). + + Args: + path (str): Path to write text files. + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. + styles (bool, optional): If ``True``, ansi style codes will be included. ``False`` for plain text. + Defaults to ``False``. + + """ + text = self.export_text(clear=clear, styles=styles) + with open(path, "wt", encoding="utf-8") as write_file: + write_file.write(text) + + def export_html( + self, + *, + theme: Optional[TerminalTheme] = None, + clear: bool = True, + code_format: Optional[str] = None, + inline_styles: bool = False, + ) -> str: + """Generate HTML from console contents (requires record=True argument in constructor). + + Args: + theme (TerminalTheme, optional): TerminalTheme object containing console colors. + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. + code_format (str, optional): Format string to render HTML. In addition to '{foreground}', + '{background}', and '{code}', should contain '{stylesheet}' if inline_styles is ``False``. + inline_styles (bool, optional): If ``True`` styles will be inlined in to spans, which makes files + larger but easier to cut and paste markup. If ``False``, styles will be embedded in a style tag. + Defaults to False. + + Returns: + str: String containing console contents as HTML. + """ + assert ( + self.record + ), "To export console contents set record=True in the constructor or instance" + fragments: List[str] = [] + append = fragments.append + _theme = theme or DEFAULT_TERMINAL_THEME + stylesheet = "" + + render_code_format = CONSOLE_HTML_FORMAT if code_format is None else code_format + + with self._record_buffer_lock: + if inline_styles: + for text, style, _ in Segment.filter_control( + Segment.simplify(self._record_buffer) + ): + text = escape(text) + if style: + rule = style.get_html_style(_theme) + if style.link: + text = f'
{text}' + text = f'{text}' if rule else text + append(text) + else: + styles: Dict[str, int] = {} + for text, style, _ in Segment.filter_control( + Segment.simplify(self._record_buffer) + ): + text = escape(text) + if style: + rule = style.get_html_style(_theme) + style_number = styles.setdefault(rule, len(styles) + 1) + if style.link: + text = f'{text}' + else: + text = f'{text}' + append(text) + stylesheet_rules: List[str] = [] + stylesheet_append = stylesheet_rules.append + for style_rule, style_number in styles.items(): + if style_rule: + stylesheet_append(f".r{style_number} {{{style_rule}}}") + stylesheet = "\n".join(stylesheet_rules) + + rendered_code = render_code_format.format( + code="".join(fragments), + stylesheet=stylesheet, + foreground=_theme.foreground_color.hex, + background=_theme.background_color.hex, + ) + if clear: + del self._record_buffer[:] + return rendered_code + + def save_html( + self, + path: str, + *, + theme: Optional[TerminalTheme] = None, + clear: bool = True, + code_format: str = CONSOLE_HTML_FORMAT, + inline_styles: bool = False, + ) -> None: + """Generate HTML from console contents and write to a file (requires record=True argument in constructor). + + Args: + path (str): Path to write html file. + theme (TerminalTheme, optional): TerminalTheme object containing console colors. + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True``. + code_format (str, optional): Format string to render HTML. In addition to '{foreground}', + '{background}', and '{code}', should contain '{stylesheet}' if inline_styles is ``False``. + inline_styles (bool, optional): If ``True`` styles will be inlined in to spans, which makes files + larger but easier to cut and paste markup. If ``False``, styles will be embedded in a style tag. + Defaults to False. + + """ + html = self.export_html( + theme=theme, + clear=clear, + code_format=code_format, + inline_styles=inline_styles, + ) + with open(path, "wt", encoding="utf-8") as write_file: + write_file.write(html) + + def export_svg( + self, + *, + title: str = "Rich", + theme: Optional[TerminalTheme] = None, + clear: bool = True, + code_format: str = CONSOLE_SVG_FORMAT, + font_aspect_ratio: float = 0.61, + unique_id: Optional[str] = None, + ) -> str: + """ + Generate an SVG from the console contents (requires record=True in Console constructor). + + Args: + title (str, optional): The title of the tab in the output image + theme (TerminalTheme, optional): The ``TerminalTheme`` object to use to style the terminal + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True`` + code_format (str, optional): Format string used to generate the SVG. Rich will inject a number of variables + into the string in order to form the final SVG output. The default template used and the variables + injected by Rich can be found by inspecting the ``console.CONSOLE_SVG_FORMAT`` variable. + font_aspect_ratio (float, optional): The width to height ratio of the font used in the ``code_format`` + string. Defaults to 0.61, which is the width to height ratio of Fira Code (the default font). + If you aren't specifying a different font inside ``code_format``, you probably don't need this. + unique_id (str, optional): unique id that is used as the prefix for various elements (CSS styles, node + ids). If not set, this defaults to a computed value based on the recorded content. + """ + + from pip._vendor.rich.cells import cell_len + + style_cache: Dict[Style, str] = {} + + def get_svg_style(style: Style) -> str: + """Convert a Style to CSS rules for SVG.""" + if style in style_cache: + return style_cache[style] + css_rules = [] + color = ( + _theme.foreground_color + if (style.color is None or style.color.is_default) + else style.color.get_truecolor(_theme) + ) + bgcolor = ( + _theme.background_color + if (style.bgcolor is None or style.bgcolor.is_default) + else style.bgcolor.get_truecolor(_theme) + ) + if style.reverse: + color, bgcolor = bgcolor, color + if style.dim: + color = blend_rgb(color, bgcolor, 0.4) + css_rules.append(f"fill: {color.hex}") + if style.bold: + css_rules.append("font-weight: bold") + if style.italic: + css_rules.append("font-style: italic;") + if style.underline: + css_rules.append("text-decoration: underline;") + if style.strike: + css_rules.append("text-decoration: line-through;") + + css = ";".join(css_rules) + style_cache[style] = css + return css + + _theme = theme or SVG_EXPORT_THEME + + width = self.width + char_height = 20 + char_width = char_height * font_aspect_ratio + line_height = char_height * 1.22 + + margin_top = 1 + margin_right = 1 + margin_bottom = 1 + margin_left = 1 + + padding_top = 40 + padding_right = 8 + padding_bottom = 8 + padding_left = 8 + + padding_width = padding_left + padding_right + padding_height = padding_top + padding_bottom + margin_width = margin_left + margin_right + margin_height = margin_top + margin_bottom + + text_backgrounds: List[str] = [] + text_group: List[str] = [] + classes: Dict[str, int] = {} + style_no = 1 + + def escape_text(text: str) -> str: + """HTML escape text and replace spaces with nbsp.""" + return escape(text).replace(" ", " ") + + def make_tag( + name: str, content: Optional[str] = None, **attribs: object + ) -> str: + """Make a tag from name, content, and attributes.""" + + def stringify(value: object) -> str: + if isinstance(value, (float)): + return format(value, "g") + return str(value) + + tag_attribs = " ".join( + f'{k.lstrip("_").replace("_", "-")}="{stringify(v)}"' + for k, v in attribs.items() + ) + return ( + f"<{name} {tag_attribs}>{content}" + if content + else f"<{name} {tag_attribs}/>" + ) + + with self._record_buffer_lock: + segments = list(Segment.filter_control(self._record_buffer)) + if clear: + self._record_buffer.clear() + + if unique_id is None: + unique_id = "terminal-" + str( + zlib.adler32( + ("".join(repr(segment) for segment in segments)).encode( + "utf-8", + "ignore", + ) + + title.encode("utf-8", "ignore") + ) + ) + y = 0 + for y, line in enumerate(Segment.split_and_crop_lines(segments, length=width)): + x = 0 + for text, style, _control in line: + style = style or Style() + rules = get_svg_style(style) + if rules not in classes: + classes[rules] = style_no + style_no += 1 + class_name = f"r{classes[rules]}" + + if style.reverse: + has_background = True + background = ( + _theme.foreground_color.hex + if style.color is None + else style.color.get_truecolor(_theme).hex + ) + else: + bgcolor = style.bgcolor + has_background = bgcolor is not None and not bgcolor.is_default + background = ( + _theme.background_color.hex + if style.bgcolor is None + else style.bgcolor.get_truecolor(_theme).hex + ) + + text_length = cell_len(text) + if has_background: + text_backgrounds.append( + make_tag( + "rect", + fill=background, + x=x * char_width, + y=y * line_height + 1.5, + width=char_width * text_length, + height=line_height + 0.25, + shape_rendering="crispEdges", + ) + ) + + if text != " " * len(text): + text_group.append( + make_tag( + "text", + escape_text(text), + _class=f"{unique_id}-{class_name}", + x=x * char_width, + y=y * line_height + char_height, + textLength=char_width * len(text), + clip_path=f"url(#{unique_id}-line-{y})", + ) + ) + x += cell_len(text) + + line_offsets = [line_no * line_height + 1.5 for line_no in range(y)] + lines = "\n".join( + f""" + {make_tag("rect", x=0, y=offset, width=char_width * width, height=line_height + 0.25)} + """ + for line_no, offset in enumerate(line_offsets) + ) + + styles = "\n".join( + f".{unique_id}-r{rule_no} {{ {css} }}" for css, rule_no in classes.items() + ) + backgrounds = "".join(text_backgrounds) + matrix = "".join(text_group) + + terminal_width = ceil(width * char_width + padding_width) + terminal_height = (y + 1) * line_height + padding_height + chrome = make_tag( + "rect", + fill=_theme.background_color.hex, + stroke="rgba(255,255,255,0.35)", + stroke_width="1", + x=margin_left, + y=margin_top, + width=terminal_width, + height=terminal_height, + rx=8, + ) + + title_color = _theme.foreground_color.hex + if title: + chrome += make_tag( + "text", + escape_text(title), + _class=f"{unique_id}-title", + fill=title_color, + text_anchor="middle", + x=terminal_width // 2, + y=margin_top + char_height + 6, + ) + chrome += f""" + + + + + + """ + + svg = code_format.format( + unique_id=unique_id, + char_width=char_width, + char_height=char_height, + line_height=line_height, + terminal_width=char_width * width - 1, + terminal_height=(y + 1) * line_height - 1, + width=terminal_width + margin_width, + height=terminal_height + margin_height, + terminal_x=margin_left + padding_left, + terminal_y=margin_top + padding_top, + styles=styles, + chrome=chrome, + backgrounds=backgrounds, + matrix=matrix, + lines=lines, + ) + return svg + + def save_svg( + self, + path: str, + *, + title: str = "Rich", + theme: Optional[TerminalTheme] = None, + clear: bool = True, + code_format: str = CONSOLE_SVG_FORMAT, + font_aspect_ratio: float = 0.61, + unique_id: Optional[str] = None, + ) -> None: + """Generate an SVG file from the console contents (requires record=True in Console constructor). + + Args: + path (str): The path to write the SVG to. + title (str, optional): The title of the tab in the output image + theme (TerminalTheme, optional): The ``TerminalTheme`` object to use to style the terminal + clear (bool, optional): Clear record buffer after exporting. Defaults to ``True`` + code_format (str, optional): Format string used to generate the SVG. Rich will inject a number of variables + into the string in order to form the final SVG output. The default template used and the variables + injected by Rich can be found by inspecting the ``console.CONSOLE_SVG_FORMAT`` variable. + font_aspect_ratio (float, optional): The width to height ratio of the font used in the ``code_format`` + string. Defaults to 0.61, which is the width to height ratio of Fira Code (the default font). + If you aren't specifying a different font inside ``code_format``, you probably don't need this. + unique_id (str, optional): unique id that is used as the prefix for various elements (CSS styles, node + ids). If not set, this defaults to a computed value based on the recorded content. + """ + svg = self.export_svg( + title=title, + theme=theme, + clear=clear, + code_format=code_format, + font_aspect_ratio=font_aspect_ratio, + unique_id=unique_id, + ) + with open(path, "wt", encoding="utf-8") as write_file: + write_file.write(svg) + + +def _svg_hash(svg_main_code: str) -> str: + """Returns a unique hash for the given SVG main code. + + Args: + svg_main_code (str): The content we're going to inject in the SVG envelope. + + Returns: + str: a hash of the given content + """ + return str(zlib.adler32(svg_main_code.encode())) + + +if __name__ == "__main__": # pragma: no cover + console = Console(record=True) + + console.log( + "JSONRPC [i]request[/i]", + 5, + 1.3, + True, + False, + None, + { + "jsonrpc": "2.0", + "method": "subtract", + "params": {"minuend": 42, "subtrahend": 23}, + "id": 3, + }, + ) + + console.log("Hello, World!", "{'a': 1}", repr(console)) + + console.print( + { + "name": None, + "empty": [], + "quiz": { + "sport": { + "answered": True, + "q1": { + "question": "Which one is correct team name in NBA?", + "options": [ + "New York Bulls", + "Los Angeles Kings", + "Golden State Warriors", + "Huston Rocket", + ], + "answer": "Huston Rocket", + }, + }, + "maths": { + "answered": False, + "q1": { + "question": "5 + 7 = ?", + "options": [10, 11, 12, 13], + "answer": 12, + }, + "q2": { + "question": "12 - 8 = ?", + "options": [1, 2, 3, 4], + "answer": 4, + }, + }, + }, + } + ) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/constrain.py b/venv/Lib/site-packages/pip/_vendor/rich/constrain.py new file mode 100644 index 00000000000..65fdf56342e --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/constrain.py @@ -0,0 +1,37 @@ +from typing import Optional, TYPE_CHECKING + +from .jupyter import JupyterMixin +from .measure import Measurement + +if TYPE_CHECKING: + from .console import Console, ConsoleOptions, RenderableType, RenderResult + + +class Constrain(JupyterMixin): + """Constrain the width of a renderable to a given number of characters. + + Args: + renderable (RenderableType): A renderable object. + width (int, optional): The maximum width (in characters) to render. Defaults to 80. + """ + + def __init__(self, renderable: "RenderableType", width: Optional[int] = 80) -> None: + self.renderable = renderable + self.width = width + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + if self.width is None: + yield self.renderable + else: + child_options = options.update_width(min(self.width, options.max_width)) + yield from console.render(self.renderable, child_options) + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> "Measurement": + if self.width is not None: + options = options.update_width(self.width) + measurement = Measurement.get(console, options, self.renderable) + return measurement diff --git a/venv/Lib/site-packages/pip/_vendor/rich/containers.py b/venv/Lib/site-packages/pip/_vendor/rich/containers.py new file mode 100644 index 00000000000..901ff8ba6ea --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/containers.py @@ -0,0 +1,167 @@ +from itertools import zip_longest +from typing import ( + TYPE_CHECKING, + Iterable, + Iterator, + List, + Optional, + TypeVar, + Union, + overload, +) + +if TYPE_CHECKING: + from .console import ( + Console, + ConsoleOptions, + JustifyMethod, + OverflowMethod, + RenderResult, + RenderableType, + ) + from .text import Text + +from .cells import cell_len +from .measure import Measurement + +T = TypeVar("T") + + +class Renderables: + """A list subclass which renders its contents to the console.""" + + def __init__( + self, renderables: Optional[Iterable["RenderableType"]] = None + ) -> None: + self._renderables: List["RenderableType"] = ( + list(renderables) if renderables is not None else [] + ) + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + """Console render method to insert line-breaks.""" + yield from self._renderables + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> "Measurement": + dimensions = [ + Measurement.get(console, options, renderable) + for renderable in self._renderables + ] + if not dimensions: + return Measurement(1, 1) + _min = max(dimension.minimum for dimension in dimensions) + _max = max(dimension.maximum for dimension in dimensions) + return Measurement(_min, _max) + + def append(self, renderable: "RenderableType") -> None: + self._renderables.append(renderable) + + def __iter__(self) -> Iterable["RenderableType"]: + return iter(self._renderables) + + +class Lines: + """A list subclass which can render to the console.""" + + def __init__(self, lines: Iterable["Text"] = ()) -> None: + self._lines: List["Text"] = list(lines) + + def __repr__(self) -> str: + return f"Lines({self._lines!r})" + + def __iter__(self) -> Iterator["Text"]: + return iter(self._lines) + + @overload + def __getitem__(self, index: int) -> "Text": + ... + + @overload + def __getitem__(self, index: slice) -> List["Text"]: + ... + + def __getitem__(self, index: Union[slice, int]) -> Union["Text", List["Text"]]: + return self._lines[index] + + def __setitem__(self, index: int, value: "Text") -> "Lines": + self._lines[index] = value + return self + + def __len__(self) -> int: + return self._lines.__len__() + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + """Console render method to insert line-breaks.""" + yield from self._lines + + def append(self, line: "Text") -> None: + self._lines.append(line) + + def extend(self, lines: Iterable["Text"]) -> None: + self._lines.extend(lines) + + def pop(self, index: int = -1) -> "Text": + return self._lines.pop(index) + + def justify( + self, + console: "Console", + width: int, + justify: "JustifyMethod" = "left", + overflow: "OverflowMethod" = "fold", + ) -> None: + """Justify and overflow text to a given width. + + Args: + console (Console): Console instance. + width (int): Number of cells available per line. + justify (str, optional): Default justify method for text: "left", "center", "full" or "right". Defaults to "left". + overflow (str, optional): Default overflow for text: "crop", "fold", or "ellipsis". Defaults to "fold". + + """ + from .text import Text + + if justify == "left": + for line in self._lines: + line.truncate(width, overflow=overflow, pad=True) + elif justify == "center": + for line in self._lines: + line.rstrip() + line.truncate(width, overflow=overflow) + line.pad_left((width - cell_len(line.plain)) // 2) + line.pad_right(width - cell_len(line.plain)) + elif justify == "right": + for line in self._lines: + line.rstrip() + line.truncate(width, overflow=overflow) + line.pad_left(width - cell_len(line.plain)) + elif justify == "full": + for line_index, line in enumerate(self._lines): + if line_index == len(self._lines) - 1: + break + words = line.split(" ") + words_size = sum(cell_len(word.plain) for word in words) + num_spaces = len(words) - 1 + spaces = [1 for _ in range(num_spaces)] + index = 0 + if spaces: + while words_size + num_spaces < width: + spaces[len(spaces) - index - 1] += 1 + num_spaces += 1 + index = (index + 1) % len(spaces) + tokens: List[Text] = [] + for index, (word, next_word) in enumerate( + zip_longest(words, words[1:]) + ): + tokens.append(word) + if index < len(spaces): + style = word.get_style_at_offset(console, -1) + next_style = next_word.get_style_at_offset(console, 0) + space_style = style if style == next_style else line.style + tokens.append(Text(" " * spaces[index], style=space_style)) + self[line_index] = Text("").join(tokens) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/control.py b/venv/Lib/site-packages/pip/_vendor/rich/control.py new file mode 100644 index 00000000000..88fcb929516 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/control.py @@ -0,0 +1,225 @@ +import sys +import time +from typing import TYPE_CHECKING, Callable, Dict, Iterable, List, Union + +if sys.version_info >= (3, 8): + from typing import Final +else: + from pip._vendor.typing_extensions import Final # pragma: no cover + +from .segment import ControlCode, ControlType, Segment + +if TYPE_CHECKING: + from .console import Console, ConsoleOptions, RenderResult + +STRIP_CONTROL_CODES: Final = [ + 7, # Bell + 8, # Backspace + 11, # Vertical tab + 12, # Form feed + 13, # Carriage return +] +_CONTROL_STRIP_TRANSLATE: Final = { + _codepoint: None for _codepoint in STRIP_CONTROL_CODES +} + +CONTROL_ESCAPE: Final = { + 7: "\\a", + 8: "\\b", + 11: "\\v", + 12: "\\f", + 13: "\\r", +} + +CONTROL_CODES_FORMAT: Dict[int, Callable[..., str]] = { + ControlType.BELL: lambda: "\x07", + ControlType.CARRIAGE_RETURN: lambda: "\r", + ControlType.HOME: lambda: "\x1b[H", + ControlType.CLEAR: lambda: "\x1b[2J", + ControlType.ENABLE_ALT_SCREEN: lambda: "\x1b[?1049h", + ControlType.DISABLE_ALT_SCREEN: lambda: "\x1b[?1049l", + ControlType.SHOW_CURSOR: lambda: "\x1b[?25h", + ControlType.HIDE_CURSOR: lambda: "\x1b[?25l", + ControlType.CURSOR_UP: lambda param: f"\x1b[{param}A", + ControlType.CURSOR_DOWN: lambda param: f"\x1b[{param}B", + ControlType.CURSOR_FORWARD: lambda param: f"\x1b[{param}C", + ControlType.CURSOR_BACKWARD: lambda param: f"\x1b[{param}D", + ControlType.CURSOR_MOVE_TO_COLUMN: lambda param: f"\x1b[{param+1}G", + ControlType.ERASE_IN_LINE: lambda param: f"\x1b[{param}K", + ControlType.CURSOR_MOVE_TO: lambda x, y: f"\x1b[{y+1};{x+1}H", + ControlType.SET_WINDOW_TITLE: lambda title: f"\x1b]0;{title}\x07", +} + + +class Control: + """A renderable that inserts a control code (non printable but may move cursor). + + Args: + *codes (str): Positional arguments are either a :class:`~rich.segment.ControlType` enum or a + tuple of ControlType and an integer parameter + """ + + __slots__ = ["segment"] + + def __init__(self, *codes: Union[ControlType, ControlCode]) -> None: + control_codes: List[ControlCode] = [ + (code,) if isinstance(code, ControlType) else code for code in codes + ] + _format_map = CONTROL_CODES_FORMAT + rendered_codes = "".join( + _format_map[code](*parameters) for code, *parameters in control_codes + ) + self.segment = Segment(rendered_codes, None, control_codes) + + @classmethod + def bell(cls) -> "Control": + """Ring the 'bell'.""" + return cls(ControlType.BELL) + + @classmethod + def home(cls) -> "Control": + """Move cursor to 'home' position.""" + return cls(ControlType.HOME) + + @classmethod + def move(cls, x: int = 0, y: int = 0) -> "Control": + """Move cursor relative to current position. + + Args: + x (int): X offset. + y (int): Y offset. + + Returns: + ~Control: Control object. + + """ + + def get_codes() -> Iterable[ControlCode]: + control = ControlType + if x: + yield ( + control.CURSOR_FORWARD if x > 0 else control.CURSOR_BACKWARD, + abs(x), + ) + if y: + yield ( + control.CURSOR_DOWN if y > 0 else control.CURSOR_UP, + abs(y), + ) + + control = cls(*get_codes()) + return control + + @classmethod + def move_to_column(cls, x: int, y: int = 0) -> "Control": + """Move to the given column, optionally add offset to row. + + Returns: + x (int): absolute x (column) + y (int): optional y offset (row) + + Returns: + ~Control: Control object. + """ + + return ( + cls( + (ControlType.CURSOR_MOVE_TO_COLUMN, x), + ( + ControlType.CURSOR_DOWN if y > 0 else ControlType.CURSOR_UP, + abs(y), + ), + ) + if y + else cls((ControlType.CURSOR_MOVE_TO_COLUMN, x)) + ) + + @classmethod + def move_to(cls, x: int, y: int) -> "Control": + """Move cursor to absolute position. + + Args: + x (int): x offset (column) + y (int): y offset (row) + + Returns: + ~Control: Control object. + """ + return cls((ControlType.CURSOR_MOVE_TO, x, y)) + + @classmethod + def clear(cls) -> "Control": + """Clear the screen.""" + return cls(ControlType.CLEAR) + + @classmethod + def show_cursor(cls, show: bool) -> "Control": + """Show or hide the cursor.""" + return cls(ControlType.SHOW_CURSOR if show else ControlType.HIDE_CURSOR) + + @classmethod + def alt_screen(cls, enable: bool) -> "Control": + """Enable or disable alt screen.""" + if enable: + return cls(ControlType.ENABLE_ALT_SCREEN, ControlType.HOME) + else: + return cls(ControlType.DISABLE_ALT_SCREEN) + + @classmethod + def title(cls, title: str) -> "Control": + """Set the terminal window title + + Args: + title (str): The new terminal window title + """ + return cls((ControlType.SET_WINDOW_TITLE, title)) + + def __str__(self) -> str: + return self.segment.text + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + if self.segment.text: + yield self.segment + + +def strip_control_codes( + text: str, _translate_table: Dict[int, None] = _CONTROL_STRIP_TRANSLATE +) -> str: + """Remove control codes from text. + + Args: + text (str): A string possibly contain control codes. + + Returns: + str: String with control codes removed. + """ + return text.translate(_translate_table) + + +def escape_control_codes( + text: str, + _translate_table: Dict[int, str] = CONTROL_ESCAPE, +) -> str: + """Replace control codes with their "escaped" equivalent in the given text. + (e.g. "\b" becomes "\\b") + + Args: + text (str): A string possibly containing control codes. + + Returns: + str: String with control codes replaced with their escaped version. + """ + return text.translate(_translate_table) + + +if __name__ == "__main__": # pragma: no cover + from pip._vendor.rich.console import Console + + console = Console() + console.print("Look at the title of your terminal window ^") + # console.print(Control((ControlType.SET_WINDOW_TITLE, "Hello, world!"))) + for i in range(10): + console.set_window_title("🚀 Loading" + "." * i) + time.sleep(0.5) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/default_styles.py b/venv/Lib/site-packages/pip/_vendor/rich/default_styles.py new file mode 100644 index 00000000000..dca37193abf --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/default_styles.py @@ -0,0 +1,190 @@ +from typing import Dict + +from .style import Style + +DEFAULT_STYLES: Dict[str, Style] = { + "none": Style.null(), + "reset": Style( + color="default", + bgcolor="default", + dim=False, + bold=False, + italic=False, + underline=False, + blink=False, + blink2=False, + reverse=False, + conceal=False, + strike=False, + ), + "dim": Style(dim=True), + "bright": Style(dim=False), + "bold": Style(bold=True), + "strong": Style(bold=True), + "code": Style(reverse=True, bold=True), + "italic": Style(italic=True), + "emphasize": Style(italic=True), + "underline": Style(underline=True), + "blink": Style(blink=True), + "blink2": Style(blink2=True), + "reverse": Style(reverse=True), + "strike": Style(strike=True), + "black": Style(color="black"), + "red": Style(color="red"), + "green": Style(color="green"), + "yellow": Style(color="yellow"), + "magenta": Style(color="magenta"), + "cyan": Style(color="cyan"), + "white": Style(color="white"), + "inspect.attr": Style(color="yellow", italic=True), + "inspect.attr.dunder": Style(color="yellow", italic=True, dim=True), + "inspect.callable": Style(bold=True, color="red"), + "inspect.async_def": Style(italic=True, color="bright_cyan"), + "inspect.def": Style(italic=True, color="bright_cyan"), + "inspect.class": Style(italic=True, color="bright_cyan"), + "inspect.error": Style(bold=True, color="red"), + "inspect.equals": Style(), + "inspect.help": Style(color="cyan"), + "inspect.doc": Style(dim=True), + "inspect.value.border": Style(color="green"), + "live.ellipsis": Style(bold=True, color="red"), + "layout.tree.row": Style(dim=False, color="red"), + "layout.tree.column": Style(dim=False, color="blue"), + "logging.keyword": Style(bold=True, color="yellow"), + "logging.level.notset": Style(dim=True), + "logging.level.debug": Style(color="green"), + "logging.level.info": Style(color="blue"), + "logging.level.warning": Style(color="red"), + "logging.level.error": Style(color="red", bold=True), + "logging.level.critical": Style(color="red", bold=True, reverse=True), + "log.level": Style.null(), + "log.time": Style(color="cyan", dim=True), + "log.message": Style.null(), + "log.path": Style(dim=True), + "repr.ellipsis": Style(color="yellow"), + "repr.indent": Style(color="green", dim=True), + "repr.error": Style(color="red", bold=True), + "repr.str": Style(color="green", italic=False, bold=False), + "repr.brace": Style(bold=True), + "repr.comma": Style(bold=True), + "repr.ipv4": Style(bold=True, color="bright_green"), + "repr.ipv6": Style(bold=True, color="bright_green"), + "repr.eui48": Style(bold=True, color="bright_green"), + "repr.eui64": Style(bold=True, color="bright_green"), + "repr.tag_start": Style(bold=True), + "repr.tag_name": Style(color="bright_magenta", bold=True), + "repr.tag_contents": Style(color="default"), + "repr.tag_end": Style(bold=True), + "repr.attrib_name": Style(color="yellow", italic=False), + "repr.attrib_equal": Style(bold=True), + "repr.attrib_value": Style(color="magenta", italic=False), + "repr.number": Style(color="cyan", bold=True, italic=False), + "repr.number_complex": Style(color="cyan", bold=True, italic=False), # same + "repr.bool_true": Style(color="bright_green", italic=True), + "repr.bool_false": Style(color="bright_red", italic=True), + "repr.none": Style(color="magenta", italic=True), + "repr.url": Style(underline=True, color="bright_blue", italic=False, bold=False), + "repr.uuid": Style(color="bright_yellow", bold=False), + "repr.call": Style(color="magenta", bold=True), + "repr.path": Style(color="magenta"), + "repr.filename": Style(color="bright_magenta"), + "rule.line": Style(color="bright_green"), + "rule.text": Style.null(), + "json.brace": Style(bold=True), + "json.bool_true": Style(color="bright_green", italic=True), + "json.bool_false": Style(color="bright_red", italic=True), + "json.null": Style(color="magenta", italic=True), + "json.number": Style(color="cyan", bold=True, italic=False), + "json.str": Style(color="green", italic=False, bold=False), + "json.key": Style(color="blue", bold=True), + "prompt": Style.null(), + "prompt.choices": Style(color="magenta", bold=True), + "prompt.default": Style(color="cyan", bold=True), + "prompt.invalid": Style(color="red"), + "prompt.invalid.choice": Style(color="red"), + "pretty": Style.null(), + "scope.border": Style(color="blue"), + "scope.key": Style(color="yellow", italic=True), + "scope.key.special": Style(color="yellow", italic=True, dim=True), + "scope.equals": Style(color="red"), + "table.header": Style(bold=True), + "table.footer": Style(bold=True), + "table.cell": Style.null(), + "table.title": Style(italic=True), + "table.caption": Style(italic=True, dim=True), + "traceback.error": Style(color="red", italic=True), + "traceback.border.syntax_error": Style(color="bright_red"), + "traceback.border": Style(color="red"), + "traceback.text": Style.null(), + "traceback.title": Style(color="red", bold=True), + "traceback.exc_type": Style(color="bright_red", bold=True), + "traceback.exc_value": Style.null(), + "traceback.offset": Style(color="bright_red", bold=True), + "bar.back": Style(color="grey23"), + "bar.complete": Style(color="rgb(249,38,114)"), + "bar.finished": Style(color="rgb(114,156,31)"), + "bar.pulse": Style(color="rgb(249,38,114)"), + "progress.description": Style.null(), + "progress.filesize": Style(color="green"), + "progress.filesize.total": Style(color="green"), + "progress.download": Style(color="green"), + "progress.elapsed": Style(color="yellow"), + "progress.percentage": Style(color="magenta"), + "progress.remaining": Style(color="cyan"), + "progress.data.speed": Style(color="red"), + "progress.spinner": Style(color="green"), + "status.spinner": Style(color="green"), + "tree": Style(), + "tree.line": Style(), + "markdown.paragraph": Style(), + "markdown.text": Style(), + "markdown.em": Style(italic=True), + "markdown.emph": Style(italic=True), # For commonmark backwards compatibility + "markdown.strong": Style(bold=True), + "markdown.code": Style(bold=True, color="cyan", bgcolor="black"), + "markdown.code_block": Style(color="cyan", bgcolor="black"), + "markdown.block_quote": Style(color="magenta"), + "markdown.list": Style(color="cyan"), + "markdown.item": Style(), + "markdown.item.bullet": Style(color="yellow", bold=True), + "markdown.item.number": Style(color="yellow", bold=True), + "markdown.hr": Style(color="yellow"), + "markdown.h1.border": Style(), + "markdown.h1": Style(bold=True), + "markdown.h2": Style(bold=True, underline=True), + "markdown.h3": Style(bold=True), + "markdown.h4": Style(bold=True, dim=True), + "markdown.h5": Style(underline=True), + "markdown.h6": Style(italic=True), + "markdown.h7": Style(italic=True, dim=True), + "markdown.link": Style(color="bright_blue"), + "markdown.link_url": Style(color="blue", underline=True), + "markdown.s": Style(strike=True), + "iso8601.date": Style(color="blue"), + "iso8601.time": Style(color="magenta"), + "iso8601.timezone": Style(color="yellow"), +} + + +if __name__ == "__main__": # pragma: no cover + import argparse + import io + + from pip._vendor.rich.console import Console + from pip._vendor.rich.table import Table + from pip._vendor.rich.text import Text + + parser = argparse.ArgumentParser() + parser.add_argument("--html", action="store_true", help="Export as HTML table") + args = parser.parse_args() + html: bool = args.html + console = Console(record=True, width=70, file=io.StringIO()) if html else Console() + + table = Table("Name", "Styling") + + for style_name, style in DEFAULT_STYLES.items(): + table.add_row(Text(style_name, style=style), str(style)) + + console.print(table) + if html: + print(console.export_html(inline_styles=True)) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/diagnose.py b/venv/Lib/site-packages/pip/_vendor/rich/diagnose.py new file mode 100644 index 00000000000..ad36183898e --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/diagnose.py @@ -0,0 +1,37 @@ +import os +import platform + +from pip._vendor.rich import inspect +from pip._vendor.rich.console import Console, get_windows_console_features +from pip._vendor.rich.panel import Panel +from pip._vendor.rich.pretty import Pretty + + +def report() -> None: # pragma: no cover + """Print a report to the terminal with debugging information""" + console = Console() + inspect(console) + features = get_windows_console_features() + inspect(features) + + env_names = ( + "TERM", + "COLORTERM", + "CLICOLOR", + "NO_COLOR", + "TERM_PROGRAM", + "COLUMNS", + "LINES", + "JUPYTER_COLUMNS", + "JUPYTER_LINES", + "JPY_PARENT_PID", + "VSCODE_VERBOSE_LOGGING", + ) + env = {name: os.getenv(name) for name in env_names} + console.print(Panel.fit((Pretty(env)), title="[b]Environment Variables")) + + console.print(f'platform="{platform.system()}"') + + +if __name__ == "__main__": # pragma: no cover + report() diff --git a/venv/Lib/site-packages/pip/_vendor/rich/emoji.py b/venv/Lib/site-packages/pip/_vendor/rich/emoji.py new file mode 100644 index 00000000000..791f0465de1 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/emoji.py @@ -0,0 +1,96 @@ +import sys +from typing import TYPE_CHECKING, Optional, Union + +from .jupyter import JupyterMixin +from .segment import Segment +from .style import Style +from ._emoji_codes import EMOJI +from ._emoji_replace import _emoji_replace + +if sys.version_info >= (3, 8): + from typing import Literal +else: + from pip._vendor.typing_extensions import Literal # pragma: no cover + + +if TYPE_CHECKING: + from .console import Console, ConsoleOptions, RenderResult + + +EmojiVariant = Literal["emoji", "text"] + + +class NoEmoji(Exception): + """No emoji by that name.""" + + +class Emoji(JupyterMixin): + __slots__ = ["name", "style", "_char", "variant"] + + VARIANTS = {"text": "\uFE0E", "emoji": "\uFE0F"} + + def __init__( + self, + name: str, + style: Union[str, Style] = "none", + variant: Optional[EmojiVariant] = None, + ) -> None: + """A single emoji character. + + Args: + name (str): Name of emoji. + style (Union[str, Style], optional): Optional style. Defaults to None. + + Raises: + NoEmoji: If the emoji doesn't exist. + """ + self.name = name + self.style = style + self.variant = variant + try: + self._char = EMOJI[name] + except KeyError: + raise NoEmoji(f"No emoji called {name!r}") + if variant is not None: + self._char += self.VARIANTS.get(variant, "") + + @classmethod + def replace(cls, text: str) -> str: + """Replace emoji markup with corresponding unicode characters. + + Args: + text (str): A string with emojis codes, e.g. "Hello :smiley:!" + + Returns: + str: A string with emoji codes replaces with actual emoji. + """ + return _emoji_replace(text) + + def __repr__(self) -> str: + return f"" + + def __str__(self) -> str: + return self._char + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + yield Segment(self._char, console.get_style(self.style)) + + +if __name__ == "__main__": # pragma: no cover + import sys + + from pip._vendor.rich.columns import Columns + from pip._vendor.rich.console import Console + + console = Console(record=True) + + columns = Columns( + (f":{name}: {name}" for name in sorted(EMOJI.keys()) if "\u200D" not in name), + column_first=True, + ) + + console.print(columns) + if len(sys.argv) > 1: + console.save_html(sys.argv[1]) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/errors.py b/venv/Lib/site-packages/pip/_vendor/rich/errors.py new file mode 100644 index 00000000000..0bcbe53ef59 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/errors.py @@ -0,0 +1,34 @@ +class ConsoleError(Exception): + """An error in console operation.""" + + +class StyleError(Exception): + """An error in styles.""" + + +class StyleSyntaxError(ConsoleError): + """Style was badly formatted.""" + + +class MissingStyle(StyleError): + """No such style.""" + + +class StyleStackError(ConsoleError): + """Style stack is invalid.""" + + +class NotRenderableError(ConsoleError): + """Object is not renderable.""" + + +class MarkupError(ConsoleError): + """Markup was badly formatted.""" + + +class LiveError(ConsoleError): + """Error related to Live display.""" + + +class NoAltScreen(ConsoleError): + """Alt screen mode was required.""" diff --git a/venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py b/venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py new file mode 100644 index 00000000000..4b0b0da6c2a --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py @@ -0,0 +1,57 @@ +import io +from typing import IO, TYPE_CHECKING, Any, List + +from .ansi import AnsiDecoder +from .text import Text + +if TYPE_CHECKING: + from .console import Console + + +class FileProxy(io.TextIOBase): + """Wraps a file (e.g. sys.stdout) and redirects writes to a console.""" + + def __init__(self, console: "Console", file: IO[str]) -> None: + self.__console = console + self.__file = file + self.__buffer: List[str] = [] + self.__ansi_decoder = AnsiDecoder() + + @property + def rich_proxied_file(self) -> IO[str]: + """Get proxied file.""" + return self.__file + + def __getattr__(self, name: str) -> Any: + return getattr(self.__file, name) + + def write(self, text: str) -> int: + if not isinstance(text, str): + raise TypeError(f"write() argument must be str, not {type(text).__name__}") + buffer = self.__buffer + lines: List[str] = [] + while text: + line, new_line, text = text.partition("\n") + if new_line: + lines.append("".join(buffer) + line) + buffer.clear() + else: + buffer.append(line) + break + if lines: + console = self.__console + with console: + output = Text("\n").join( + self.__ansi_decoder.decode_line(line) for line in lines + ) + console.print(output) + return len(text) + + def flush(self) -> None: + output = "".join(self.__buffer) + if output: + self.__console.print(output) + del self.__buffer[:] + + def fileno(self) -> int: + return self.__file.fileno() diff --git a/venv/Lib/site-packages/pip/_vendor/rich/filesize.py b/venv/Lib/site-packages/pip/_vendor/rich/filesize.py new file mode 100644 index 00000000000..99f118e2010 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/filesize.py @@ -0,0 +1,89 @@ +# coding: utf-8 +"""Functions for reporting filesizes. Borrowed from https://github.com/PyFilesystem/pyfilesystem2 + +The functions declared in this module should cover the different +use cases needed to generate a string representation of a file size +using several different units. Since there are many standards regarding +file size units, three different functions have been implemented. + +See Also: + * `Wikipedia: Binary prefix `_ + +""" + +__all__ = ["decimal"] + +from typing import Iterable, List, Optional, Tuple + + +def _to_str( + size: int, + suffixes: Iterable[str], + base: int, + *, + precision: Optional[int] = 1, + separator: Optional[str] = " ", +) -> str: + if size == 1: + return "1 byte" + elif size < base: + return "{:,} bytes".format(size) + + for i, suffix in enumerate(suffixes, 2): # noqa: B007 + unit = base**i + if size < unit: + break + return "{:,.{precision}f}{separator}{}".format( + (base * size / unit), + suffix, + precision=precision, + separator=separator, + ) + + +def pick_unit_and_suffix(size: int, suffixes: List[str], base: int) -> Tuple[int, str]: + """Pick a suffix and base for the given size.""" + for i, suffix in enumerate(suffixes): + unit = base**i + if size < unit * base: + break + return unit, suffix + + +def decimal( + size: int, + *, + precision: Optional[int] = 1, + separator: Optional[str] = " ", +) -> str: + """Convert a filesize in to a string (powers of 1000, SI prefixes). + + In this convention, ``1000 B = 1 kB``. + + This is typically the format used to advertise the storage + capacity of USB flash drives and the like (*256 MB* meaning + actually a storage capacity of more than *256 000 000 B*), + or used by **Mac OS X** since v10.6 to report file sizes. + + Arguments: + int (size): A file size. + int (precision): The number of decimal places to include (default = 1). + str (separator): The string to separate the value from the units (default = " "). + + Returns: + `str`: A string containing a abbreviated file size and units. + + Example: + >>> filesize.decimal(30000) + '30.0 kB' + >>> filesize.decimal(30000, precision=2, separator="") + '30.00kB' + + """ + return _to_str( + size, + ("kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"), + 1000, + precision=precision, + separator=separator, + ) diff --git a/venv/Lib/site-packages/pip/_vendor/rich/highlighter.py b/venv/Lib/site-packages/pip/_vendor/rich/highlighter.py new file mode 100644 index 00000000000..27714b25b40 --- /dev/null +++ b/venv/Lib/site-packages/pip/_vendor/rich/highlighter.py @@ -0,0 +1,232 @@ +import re +from abc import ABC, abstractmethod +from typing import List, Union + +from .text import Span, Text + + +def _combine_regex(*regexes: str) -> str: + """Combine a number of regexes in to a single regex. + + Returns: + str: New regex with all regexes ORed together. + """ + return "|".join(regexes) + + +class Highlighter(ABC): + """Abstract base class for highlighters.""" + + def __call__(self, text: Union[str, Text]) -> Text: + """Highlight a str or Text instance. + + Args: + text (Union[str, ~Text]): Text to highlight. + + Raises: + TypeError: If not called with text or str. + + Returns: + Text: A test instance with highlighting applied. + """ + if isinstance(text, str): + highlight_text = Text(text) + elif isinstance(text, Text): + highlight_text = text.copy() + else: + raise TypeError(f"str or Text instance required, not {text!r}") + self.highlight(highlight_text) + return highlight_text + + @abstractmethod + def highlight(self, text: Text) -> None: + """Apply highlighting in place to text. + + Args: + text (~Text): A text object highlight. + """ + + +class NullHighlighter(Highlighter): + """A highlighter object that doesn't highlight. + + May be used to disable highlighting entirely. + + """ + + def highlight(self, text: Text) -> None: + """Nothing to do""" + + +class RegexHighlighter(Highlighter): + """Applies highlighting from a list of regular expressions.""" + + highlights: List[str] = [] + base_style: str = "" + + def highlight(self, text: Text) -> None: + """Highlight :class:`rich.text.Text` using regular expressions. + + Args: + text (~Text): Text to highlighted. + + """ + + highlight_regex = text.highlight_regex + for re_highlight in self.highlights: + highlight_regex(re_highlight, style_prefix=self.base_style) + + +class ReprHighlighter(RegexHighlighter): + """Highlights the text typically produced from ``__repr__`` methods.""" + + base_style = "repr." + highlights = [ + r"(?P<)(?P[-\w.:|]*)(?P[\w\W]*)(?P>)", + r'(?P[\w_]{1,50})=(?P"?[\w_]+"?)?', + r"(?P[][{}()])", + _combine_regex( + r"(?P[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})", + r"(?P([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4})", + r"(?P(?:[0-9A-Fa-f]{1,2}-){7}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{1,2}:){7}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{4}\.){3}[0-9A-Fa-f]{4})", + r"(?P(?:[0-9A-Fa-f]{1,2}-){5}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{1,2}:){5}[0-9A-Fa-f]{1,2}|(?:[0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})", + r"(?P[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})", + r"(?P[\w.]*?)\(", + r"\b(?PTrue)\b|\b(?PFalse)\b|\b(?PNone)\b", + r"(?P\.\.\.)", + r"(?P(?(?\B(/[-\w._+]+)*\/)(?P[-\w._+]*)?", + r"(?b?'''.*?(?(file|https|http|ws|wss)://[-0-9a-zA-Z$_+!`(),.?/;:&=%#~]*)", + ), + ] + + +class JSONHighlighter(RegexHighlighter): + """Highlights JSON""" + + # Captures the start and end of JSON strings, handling escaped quotes + JSON_STR = r"(?b?\".*?(?[\{\[\(\)\]\}])", + r"\b(?Ptrue)\b|\b(?Pfalse)\b|\b(?Pnull)\b", + r"(?P(? None: + super().highlight(text) + + # Additional work to handle highlighting JSON keys + plain = text.plain + append = text.spans.append + whitespace = self.JSON_WHITESPACE + for match in re.finditer(self.JSON_STR, plain): + start, end = match.span() + cursor = end + while cursor < len(plain): + char = plain[cursor] + cursor += 1 + if char == ":": + append(Span(start, end, "json.key")) + elif char in whitespace: + continue + break + + +class ISO8601Highlighter(RegexHighlighter): + """Highlights the ISO8601 date time strings. + Regex reference: https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s07.html + """ + + base_style = "iso8601." + highlights = [ + # + # Dates + # + # Calendar month (e.g. 2008-08). The hyphen is required + r"^(?P[0-9]{4})-(?P1[0-2]|0[1-9])$", + # Calendar date w/o hyphens (e.g. 20080830) + r"^(?P(?P[0-9]{4})(?P1[0-2]|0[1-9])(?P3[01]|0[1-9]|[12][0-9]))$", + # Ordinal date (e.g. 2008-243). The hyphen is optional + r"^(?P(?P[0-9]{4})-?(?P36[0-6]|3[0-5][0-9]|[12][0-9]{2}|0[1-9][0-9]|00[1-9]))$", + # + # Weeks + # + # Week of the year (e.g., 2008-W35). The hyphen is optional + r"^(?P(?P[0-9]{4})-?W(?P5[0-3]|[1-4][0-9]|0[1-9]))$", + # Week date (e.g., 2008-W35-6). The hyphens are optional + r"^(?P(?P[0-9]{4})-?W(?P5[0-3]|[1-4][0-9]|0[1-9])-?(?P[1-7]))$", + # + # Times + # + # Hours and minutes (e.g., 17:21). The colon is optional + r"^(?P

' : '\U0001d4ab', + '\\' : '\U0001d4ac', + '\\' : '\U0000211b', + '\\' : '\U0001d4ae', + '\\' : '\U0001d4af', + '\\' : '\U0001d4b0', + '\\' : '\U0001d4b1', + '\\' : '\U0001d4b2', + '\\' : '\U0001d4b3', + '\\' : '\U0001d4b4', + '\\' : '\U0001d4b5', + '\\' : '\U0001d5ba', + '\\' : '\U0001d5bb', + '\\' : '\U0001d5bc', + '\\' : '\U0001d5bd', + '\\' : '\U0001d5be', + '\\' : '\U0001d5bf', + '\\' : '\U0001d5c0', + '\\' : '\U0001d5c1', + '\\' : '\U0001d5c2', + '\\' : '\U0001d5c3', + '\\' : '\U0001d5c4', + '\\' : '\U0001d5c5', + '\\' : '\U0001d5c6', + '\\' : '\U0001d5c7', + '\\' : '\U0001d5c8', + '\\